All or nothing batch transaction ICRC standard?

Maybe. There are some peculiarities in how motoko works with the replica where async calls on the same subnet are ‘like sync’ calls most of the time, but I don’t think you can guarantee it. (This is how the canpack stuff works with rust libraries).

In theory I think that other pending async class initiated during the round by other canisters on the subnet could be intersperced between your calls, but I think the biggest ‘danger’ is when the round is closing and it starts bumping calls to the next round. Timers could be scheduled before your await runs and that could cause atomicity issues.

See: Motoko - Timers - Specific Behavior - #7 by berestovskyy

1 Like