javascript - 合约函数返回交易对象而不是 BOOL

标签 javascript solidity

为什么我没有收到预期的 BOOL 对象?结果是否包含在我收到的这个奇怪的对象中?

它不返回 bool 结果,而是返回一个奇怪的对象,如下所示:

{"tx":"0x753a987d79c90cb9c71fc312d14472d3d179cb6760708062485c906eb15cc7b1","receipt":{"transactionHash":"0x753a987d79c90cb9c71fc312d14472d3d179cb6760708062485c906eb15cc7b1","transactionIndex":0,"blockHash":"0x892b62649ea689cdd3e47bd4ac49b6a35fcf414ef10d6a1ccdeb473cb1821233","blockNumber":413,"gasUsed":40486,"cumulativeGasUsed":40486,"contractAddress":null,"logs":[{"logIndex":0,"transactionIndex":0,"transactionHash":"0x753a987d79c90cb9c71fc312d14472d3d179cb6760708062485c906eb15cc7b1","blockHash":"0x892b62649ea689cdd3e47bd4ac49b6a35fcf414ef10d6a1ccdeb473cb1821233","blockNumber":413,"address":"0x391737864a8dcdc7b790877dd1b06cfb99067272","data":"0x0000000000000000000000000000000000000000000000000000000000000001","topics":["0x14d54973c509ce10520c1e0be443c7340095855c124ddda2a3627d4fa542d851","0x0000000000000000000000000000000000000000000000000000000000000001"],"type":"mined"}],"status":1},"logs":[{"logIndex":0,"transactionIndex":0,"transactionHash":"0x753a987d79c90cb9c71fc312d14472d3d179cb6760708062485c906eb15cc7b1","blockHash":"0x892b62649ea689cdd3e47bd4ac49b6a35fcf414ef10d6a1ccdeb473cb1821233","blockNumber":413,"address":"0x391737864a8dcdc7b790877dd1b06cfb99067272","type":"mined","event":"Upgrade","args":{"_tokenId":"1","_upgradeType":"1"}}]}

最佳答案

事务无法向发起事务的客户端返回值。当客户端发起交易时,您提供的回调将被触发两次。一次是在提交交易但在挖掘之前(交易哈希)。第二个是在交易被挖掘之后(收据)。请参阅this例如,使用 web3js 1.0 时(web3js 0.20.x 和 web3j 类似)。

但是,当从另一个合约调用时,您可以从非常量函数返回。当挖掘时,这两个函数都将在同一个 EVM 中执行,因此允许返回一个值。

如果您需要从交易返回一个值给客户端,您需要 1) 将值存储到您的合约状态中,然后在交易被挖掘后调用 constant 函数来检索客户端中的值,或 2) 通过 event 登录并在您的客户端上设置监听器。

关于javascript - 合约函数返回交易对象而不是 BOOL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49965349/

相关文章:

javascript - 弹出框点击事件不起作用

javascript - 给 setTimeout 的函数是用什么调用的?

javascript - 关于我第一个使用本地 RPC、Web3 和 Remix 的契约(Contract)的一些问题

go - 不能在 func 文字的参数中使用 nil 作为类型 _Ctype_CFAllocatorRef

javascript - 在 test.js 文件中使用智能合约变量时出错

javascript - 使用流量 react 盒的 Solidity Drive 应用程序

javascript - 输入类型=数字,允许值不四舍五入到步长

javascript - angular js中的隐藏状态

javascript - 如何在 Chrome 之外操作 object.style.animationDuration?

solidity - 如何在 solidity 中将字节转换为 uint256