NEAR 协议是分片的,分片中跨合约调用之间的交易是最终的。在某些情况下,识别更长的交易链是有意义的,特别是当承诺链两次命中同一个合约时(重入)。
让我们想象一个承诺链:爱丽丝想要购买一种代币,交易通过多个智能合约进行,并两次命中链中的一个合约。
Alice (user) (tx 1) ->
exchange contract (triggers promise 1) ->
aggregator contract (triggers promise 2) ->
pool contact (triggers promise 3) ->
exchange contract (again)
Run Code Online (Sandbox Code Playgroud)
交换合约可以识别Alice的账户signer_account_id。然而,交易所合约是否可以知道重入,即tx 1或promise 1,并且是否可以从智能合约执行上下文中解决或推断出这一点,以便交易所知道它已经在为 Alice 处理交易?
请注意,Alice 可能同时处理两个承诺链,因此signer_account_id不足以唯一地识别承诺链。
我正在查看VMContext并试图找出这是如何可能的。