元のアドレス:https://blog.csdn.net/sail331x/article/details/112053891
準備手順
1、ウェーブフィールド(Tron)発行のtrc20トークン(Shastaテストネットワーク)のコントラクトリファレンスtrc20を準備するには
2、ウェーブフィールド(Tron)のJavaバージョンを参照trc20転送(javaバージョン)
3、ソースコードのダウンロードtronwebバージョン転送-trc20
4、リファレンスドキュメントwaveフィールドドキュメント
5、動作環境に応じてtronwebを追加することを忘れないでください
結果を示す
私はvueにあまり詳しくないので、書かれたコード仕様が良くない場合は、
デモURLを許してください。
ページのスクリーンショット
tronweb運用契約
1. tronWebオブジェクトを初期化します。初期化時に秘密鍵を追加すると、コントラクトを呼び出すときに、支払い関連のメソッドを直接使用できます。これについては後で説明します。
## nile测试网络
tronWeb = new TronWeb(
'https://api.nileex.io/',
'https://api.nileex.io/',
'https://event.nileex.io/',
// privateKey 添加了这个私钥 那么转账啥的就可以快捷转账
);
2.trxの数を照会します
/**
* 获取指定地址的trx数量
* @param address
* @returns {
Promise<number>}
*/
balanceOf = async function (address) {
let balance = await tronWeb.trx.getBalance(address);
return Number(tronWeb.fromSun(balance).toString());
};
3. trc20コントラクトオブジェクトを初期化し
、Trc20Token.jsファイルを導入します
let trc20Token = new Trc20Token(this.trc20.transaction.contract)
4.オフラインtrc20トランザクション呼び出しメソッド
aの開始、トランザクション
bの作成、トランザクション署名
c、ブロードキャストトランザクションについては、Tron.vueメソッドを参照してください。
/**
* 发起交易
* @param toAddress
* @param amount
* @param remark
* @return {
Promise<void>}
*/
transfer = async function(fromAddress,privateKey,toAddress,amount,remark){
const parameter = [{
type:'address',value:toAddress},{
type:'uint256',value:amount}]
const transaction = await this.tronWeb.transactionBuilder.triggerSmartContract(this.hexAddress, "transfer(address,uint256)", {
},
parameter,this.tronWeb.address.toHex(fromAddress))
transaction.transaction.data = remark
let signedTx = await this.tronWeb.trx.sign(transaction.transaction,privateKey)
await this.tronWeb.trx.sendRawTransaction(signedTx);
return signedTx.txID
}
tronWebの初期化時にprivateKeyを追加すると、次のメソッドを直接使用して、迅速な転送呼び出しを行うことができます。Tron.vueのメソッドを参照してください。
/**
* 发起交易 这个要是tronWeb中设置私钥
* @param toAddress
* @param amount
* @return {
Promise<*>}
*/
easyTransfer = async function(toAddress,amount){
let contract = await this.tronWeb.contract().at(this.hexAddress);
let txid = await contract.transfer(toAddress,amount).send();
return txid
}
キーコード表示
Trc20Token.js
import tronUtils from "@/js/tron/TronUtils";
class Trc20Token{
constructor(_contractAddr) {
this.hexAddress = tronUtils.addressToHex(_contractAddr);
this.tronWeb = tronUtils.getTronWeb()
}
getContract = function(){
return this.hexAddress;
}
/**
* 获取余额
* @param address
* @return BigNumber
*/
balanceOf = async function(address){
let contract = await this.tronWeb.contract().at(this.hexAddress);
let balance = await contract.balanceOf(address).call();
return balance
}
/**
* 发起交易
* @param toAddress
* @param amount
* @param remark
* @return {
Promise<void>}
*/
transfer = async function(fromAddress,privateKey,toAddress,amount,remark){
const parameter = [{
type:'address',value:toAddress},{
type:'uint256',value:amount}]
const transaction = await this.tronWeb.transactionBuilder.triggerSmartContract(this.hexAddress, "transfer(address,uint256)", {
},
parameter,this.tronWeb.address.toHex(fromAddress))
transaction.transaction.data = remark
let signedTx = await this.tronWeb.trx.sign(transaction.transaction,privateKey)
await this.tronWeb.trx.sendRawTransaction(signedTx);
return signedTx.txID
}
/**
* 发起交易 这个要是tronWeb中设置私钥
* @param toAddress
* @param amount
* @return {
Promise<*>}
*/
easyTransfer = async function(toAddress,amount){
let contract = await this.tronWeb.contract().at(this.hexAddress);
let txid = await contract.transfer(toAddress,amount).send();
return txid
}
}
export default Trc20Token;
TronUtils.js
// eslint-disable-next-line no-unused-vars
const TronWeb = require("tronweb")
//私钥
const privateKey='xxxxx'
const type = 'nile';
let tronWeb = null;
if(type === "nile"){
tronWeb = new TronWeb(
'https://api.nileex.io/',
'https://api.nileex.io/',
'https://event.nileex.io/',
// privateKey 添加了这个私钥 那么转账啥的就可以快捷转账
);
}else if(type === 'shasta'){
tronWeb = new TronWeb(
'https://api.shasta.trongrid.io',
'https://api.shasta.trongrid.io',
'https://api.shasta.trongrid.io',
// privateKey
);
}
class TronUtils {
constructor() {
console.log("可以修改tronWeb的构造方法,把私钥放开:"+privateKey)
}
/**
* 获取环境类型
* @return {
string}
*/
getNetType = function(){
return type
};
/**
* 获取指定地址的trx数量
* @param address
* @returns {
Promise<number>}
*/
balanceOf = async function (address) {
let balance = await tronWeb.trx.getBalance(address);
return Number(tronWeb.fromSun(balance).toString());
};
/**
* 获取当前地址
* @returns {
Promise<unknown>}
*/
getAddress = function () {
return tronWeb.address.getAddress();
};
/**
* 转换为hex地址
* @param addr
* @returns {
*}
*/
addressToHex = function (addr) {
return tronWeb.address.toHex(addr);
};
/**
* hex地址转成T开头的地址
* @param hexAddr
* @returns {
*}
*/
addressFromHex = function (hexAddr) {
return tronWeb.address.fromHex(hexAddr);
};
/**
* 创建tron地址
*/
createAccount = function () {
return tronWeb.createAccount();
};
getTronWeb = function(){
return tronWeb;
}
}
const tronUtils = new TronUtils();
export default tronUtils
後ろに書く
契約書を書く必要がある友達は私に連絡することができます〜wx:zhongxh886