如何使用erdJs正确获取Elrond链智能合约的执行结果?
解决方案
这不是erdJs的bug,属于方法调用错误:
- 你使用的
getTransaction方法仅返回交易基础元数据,默认不会拉取关联的智能合约执行结果,部分版本的erdJs中第三个withResults参数对该接口不生效。 - 不需要额外传入交易发起方地址作为参数,仅通过交易哈希即可拉取全量交易关联数据。
你可以改用getTransactionOnNetwork方法获取完整的链上交易数据,参考代码如下:
// 注意原erdjs包已重命名为@multiversx/sdk-core,旧版erdjs可沿用原有导入逻辑 const txHash = new TransactionHash("290498e8730975ea6d2703f4c5e0dc2c657b9480b9afc2a62c4c8818636cf062"); const txOnNetwork = await this.provider.getTransactionOnNetwork(txHash); const scResults = txOnNetwork.getSmartContractResults(); // 输出所有智能合约返回项 console.log(scResults.items);
执行后你就能在返回结果中找到需要的@ok@4153442d383661353439执行结果,十六进制解码后即可得到本次创建的NFT集合标识符ASD-86a549。
内容的提问来源于stack exchange,提问作者Razvan M.
相关产品推荐
相关产品推荐

