NEAR协议中的"Atomic-transaction"



我想更深入地了解Near协议以及事务处理方式。

我知道txn几乎不是原子的,如果合约调用合约,一个可能失败,一个可能成功。但我想问如果合约A调用合约B(txn-1),然后合约B调用回合约A(txn-2),这种'2-txn'是连续发生的吗?我的意思是它们之间不会有其他的TXN,这意味着TXN -1之后的状态是TXN -2开始处理的状态。

我想知道这一点,因为我想确保合约的状态在第一次调用和回调txn是可信的!

谢谢!

一个合约调用是原子的,但是可以产生一个将来的合约调用的收据列表,每个都是原子的。

0→1→B 2→

在你的例子中,合同A将执行并创建收据(调用B;在这个初始调用中,对A状态的任何改变都是原子性的。也就是说,如果在最后一次调用a (-2->A),它将看到更新后的状态。

在EVM上,交叉合约链末端的错误将取消交易和任何状态更改。这在NEAR上是不同的,因为如果最后一个-2->A失效,状态变化在-0->A将保留。这就是为什么你在-2->A(或者它检测到B中的故障)需要回滚任何状态更改。要正确使用它很棘手,但比EVM灵活得多。

最新更新