为什么我没有收到预期的 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/