NEAR 协议(protocol)是分片的,分片中跨合约调用之间的交易是最终的。在某些情况下,识别更长的交易链是有意义的,特别是如果 promise 链两次命中同一个合约(重入)。
让我们想象一个 promise 链:Alice 想要购买一个代币,并且交易通过多个智能合约进行路由,并且两次命中链中的一个合约。
Alice (user) (tx 1) ->
exchange contract (triggers promise 1) ->
aggregator contract (triggers promise 2) ->
pool contact (triggers promise 3) ->
exchange contract (again)
交易所合约可以识别爱丽丝的账户signer_account_id
.但是交换合约能否知道重入,即tx 1
或 promise 1
,是否有可能从智能合约执行上下文中解决或推断这个问题,以便交易所知道它已经在为 Alice 处理交易?请注意,Alice 可能同时处理两条 Promise 链,所以
signer_account_id
不足以唯一地识别 promise 链。我正在寻找 VMContext并试图弄清楚这是怎么可能的。
最佳答案
在合约环境中,您必须通过参数传递所有必要的信息。
链下你可以使用 NEAR Indexer或 JSONRPC EXPERIMENTAL_tx_status
获取所有收据及其结果的方法
关于nearprotocol - 在 NEAR 智能合约协议(protocol)中跟踪 promise 链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64170363/