Is Allocation the recommended path for concurrent payments, or is TransferCommand still preferred? Is sequential-nonce a known/accepted limitation, or is migration expected?
- Daniel_FTPOP
Implementing x402 on Canton via Splice.ExternalPartyAmuletRules.TransferCommand (client→facilitator-executed CC transfers). TransferCommand_Send aborts without archiving if nonce > nextNonce, locking the payer’s account until the facilitator settles - blocks concurrent payments from the same party.
Ref: ExternalPartyAmuletRules.daml
CC also supports the Allocation API (CIP-0056): client exercises AllocationFactory_Allocate → AmuletAllocation backed by LockedAmulet, settlement.executor = facilitator. Facilitator exercises Allocation_ExecuteTransfer to move funds. No nonce anywhere - concurrency is per-holding + allocateBefore/settleBefore deadlines, not a global counter.
Refs:
- AllocationInstructionV1.daml
Context: github discussion
- Simon_Meier 1
The preferred approach is to use the token standard APIs.
TransferCommandwill be deprecated soon and removed later. - cocreature 1
Simon_Meier:TransferCommandwill be deprecated soon and removed later.Just a small correction: TransferCommand has been deprecated already as part of splice 0.5.16.