【发布时间】:2021-07-27 06:11:10
【问题描述】:
我正在尝试通过 Binance Smart Chain 区块链使用 web3js,但在理解交易数据时遇到了困难。
查看example 的此交易,有三个交易转移(代币转移),大多数时候有两个(到目前为止,我已经看到了 2、3 和 5)。 我不明白是什么决定了单笔交易的转账次数。以及如何使用 web3js 检索该数据。
如果交易是关于出售代币而不是购买,我想知道在该交易中支付的 BNB 金额和收到的代币数量,反之亦然。
我设法获得了支付的价格和代币数量,但仅适用于有 2 次代币转移的交易。但如果有 3 个或更多,我无法获取此信息。
web3.eth.getTransaction('0x899e7f3c2138d051eb5246850ded99d519ab65eba58e5f806245cf346ab40e83').then((result) => {
console.log(result)
console.log(web3.utils.fromWei(result.value))
let tx_data = result.input;
let input_data = '0x' + tx_data.slice(10); // get only data without function selector
let params = web3.eth.abi.decodeParameters([
{
indexed: false,
internalType: 'uint256',
name: 'value',
type: 'uint256'
},
{
indexed: false,
internalType: 'uint256',
name: 'ethReceived',
type: 'uint256'
},
]
, input_data);
console.log(params)
})
这部分代码只为我提供了 2 次令牌传输的数据。无论交易中有多少笔转账,如何让它始终向我退还已支付/收到的现金/代币的金额?可能吗??从我所看到的情况来看,交易中的第一次转账和最后一次转账将是我感兴趣的值。有没有简单的方法来获得这些值?我正在努力理解这一点并使用 ABI 进行解码。它们可以有点通用吗??
【问题讨论】:
标签: blockchain ethereum web3 web3js binance