0

请尝试通过单击我网站上的按钮来集成使用 tronlink 发送任何 trc20 令牌。我能够使用下面的 JavaScript 代码发送 TRX,但我希望能够像 USDT 一样发送 trc-20,任何帮助将不胜感激。谢谢

<!DOCTYPE html>
<html lang="en">
    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    </head>
    <body>
        <div>
            <input type="text" name="numb" id="numb">
            <button onclick="sendtron()">Can you get tronweb from tronlink?</button>
      </div>
    <script>
        function sendtron(){
        var obj = setInterval(async ()=>{
            if (window.tronWeb && window.tronWeb.defaultAddress.base58) {
                clearInterval(obj)
                var tronweb = window.tronWeb
                var amount = document.querySelector('#numb').value;
                var tokens = amount * 1000000
                var tx = await tronweb.trx.sendTransaction("TWs2Z7dLMcPnXi9pnWqCUPzAnqUv6T54dy", tokens)
                var signedTx = await tronweb.trx.sign(tx)
                var broastTx = await tronweb.trx.sendRawTransaction(signedTx)
                console.log(broastTx);
                
            }
        });
    }
    </script>
    </body>
</html>

4

1 回答 1

4

TRC20 实际上是智能合约。tronscan USDT 链接要将 TRC20 从您的地址转移到另一个地址,您将调用 TRC20 的转移函数,下面是 Tron USDT 的代码片段。

function transfer(address _to, uint256 _value) public returns (bool) {
    require(_to != address(0));
    require(_value <= balances[msg.sender]);

    // SafeMath.sub will throw if there is not enough balance.
    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    Transfer(msg.sender, _to, _value);
    return true;
  }

TronWeb TRC20 合约交互文档。您可以使用tronWeb 的 triggerSmartContract 函数来创建原始交易、签名和广播。

  1. 创建原始交易
var senderAddress = tronweb.defaultAddress.base58;
var receiverAddress = "TV3nb5HYFe2xBEmyb3ETe93UGkjAhWyzrs"; 
var amount = 100;
var parameter = [{type:'address',value:receiverAddress},{type:'uint256',value:amount}]
var options = {
  feeLimit:100000000                    
}

const transactionObject = await tronWeb.transactionBuilder.triggerSmartContract(
    tronweb.address.toHex(contractAddress), 
    "transfer(address,uint256)", 
    options, 
    parameter,
    tronweb.address.toHex(senderAddress)
);

注意:地址都是base58格式,我们需要使用tronweb.address.toHex(address)at转换成十六进制格式transactionObjectparameter变量是我们设置接收者地址和数量的地方。

  1. 符号
var signedTransaction = await tronWeb.trx.sign(transactionObject.transaction);
  1. 播送
var broadcastTransaction = await tronWeb.trx.sendRawTransaction(signedTransaction);
console.log(broadcastTransaction); 
于 2021-02-11T07:17:09.297 回答