NEAR协议是分片的,分片中跨合约调用之间的事务是最终的。在某些情况下,确定更长的交易链是有意义的,特别是如果承诺链两次击中同一合同(重新进入(。
让我们想象一个承诺链:Alice想购买代币,交易通过多个智能合约进行,并两次击中链中的一个合约。
Alice (user) (tx 1) ->
exchange contract (triggers promise 1) ->
aggregator contract (triggers promise 2) ->
pool contact (triggers promise 3) ->
exchange contract (again)
交换合约可以识别Alice与signer_account_id
的账户。然而,交换合同是否可以知道重新进入,即tx 1
或promise 1
,是否可以从智能合同执行上下文中解决或推断这一点,以便交易所知道它已经在为Alice处理交易?
请注意,Alice可能同时处理两个承诺链,因此signer_account_id
不足以唯一地识别承诺链。
我正在查看VMContext,并试图弄清楚这是怎么可能的。
在合约环境中,您必须通过参数传递所有必要的信息。
链下您可以使用NEAR Indexer或JSONRPCEXPERIMENTAL_tx_status
方法来获取所有收据及其结果