All or nothing batch transaction ICRC standard?

Hey @skilesare, sorry for the delay on this.

Here’s an example that should allow you to do more than 24 calls at a time.

Motoko Playground - DFINITY

This example does 100 calls at a time.

The bottleneck I would have expected you to hit in this example around 200-500 is due to cycles reserved for outgoing calls, since canisters on the Motoko playground have a limited cycles balance, but that doesn’t seem to be occurring :thinking:

I would have then expected you to reach the canister output queue limit at around ~500 outgoing calls, but I just ran this code with 600 calls, which originally made me think there is some optimization for calls directed back at the same canister.

However, then I set up this 2 canister example in the playground just to make sure.

Sender canister

Receiver canister

Seems to work fine with 600 outgoing calls, which I did not expect at all :man_shrugging:. I’d still stick to less than 500 outgoing calls at a time to be safe and implement batching logic, but hopefully these examples are helpful.

@dsarlis or @claudio - any idea why this example allows me to queue up more than 500 calls at a time between canisters?