跟踪 NEAR 智能合约协议中的承诺链

Tracking promise chains in NEAR smart contract protocol

NEAR 协议被分片,分片中跨合约调用之间的交易是最终的。在某些情况下,识别更长的交易链是有意义的,特别是如果承诺链两次访问同一个合约(重入)。

让我们想象一个承诺链:爱丽丝想要购买一个代币,交易通过多个智能合约进行路由,并两次点击链中的一个合约。

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识别Alice的账户。然而,交易所合约是否可以知道重入,即tx 1promise 1,是否可以从智能合约执行上下文中解决或推断这一点,以便交易所知道它已经爱丽丝的加工贸易?

请注意,Alice 可能同时处理两个承诺链,因此 signer_account_id 不足以唯一地识别承诺链。

我正在查看 VMContext 并试图弄清楚这是怎么可能的。

在合约环境中,你必须通过参数传递所有必要的信息。

Off-chain您可以使用NEAR Indexer or JSONRPC EXPERIMENTAL_tx_status方法获取所有收据及其结果