TRON trc20転送(tronWebバージョン)

元のアドレス: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

おすすめ

転載: blog.csdn.net/sail331x/article/details/112053891