问题描述
我正在使用 Tron Web 开发区块链 Web 应用程序。我已按照文档进行操作,但在使用 tronweb.trx.sign() 函数时出现以下错误,
未捕获(承诺)类 org.tron.core.exception.ContractValidateException :验证 TransferContract 错误,没有 OwnerAccount。
下面是我的代码,(我有 tron link chrome 扩展,节点:Mainnet)
var obj = setInterval(async () => {
if (window.tronWeb && window.tronWeb.defaultAddress.base58) {
clearInterval(obj)
var tronweb = window.tronWeb
var tx = await tronweb.transactionBuilder.sendTrx('fromaddr',10,'toaddr');
var signedTx = await tronweb.trx.sign(tx);
var broastTx = await tronweb.trx.sendRawTransaction(signedTx);
console.log(broastTx)
}
},10)
请检查并让我知道我错过了什么
解决方法
这一行,第一个和第三个参数是字符串文字而不是对象。
var tx = await tronweb.transactionBuilder.sendTrx('fromaddr',10,'toaddr');
从 docs 开始,第一个和第三个参数是地址。
await tronWeb.transactionBuilder.sendTrx(
toAddress,amount,fromAddress
);
注意:Tron 地址有 Hex 和 Base 格式。要将一种格式转换为另一种格式,您可以使用 tronWeb.address.toHex(address)
或 tronWeb.address.fromHex(address)
您应该将 'fromaddr'
替换为 'toaddr'
var obj = setInterval(async () => {
if (window.tronWeb && window.tronWeb.defaultAddress.base58) {
clearInterval(obj)
var tronweb = window.tronWeb
var tx = await tronweb.transactionBuilder.sendTrx('toaddr','fromaddr');
var signedTx = await tronweb.trx.sign(tx);
var broastTx = await tronweb.trx.sendRawTransaction(signedTx);
console.log(broastTx)
}
},10)