Skip to content
CCPEDIAby Unity Nodes
App Development

Is Allocation the recommended path for concurrent payments, or is TransferCommand still preferred? Is sequential-nonce a known/accepted limitation, or is migration expected?

3 posts99 views2 likesLast activity Jun 2026

CIPs mentionedCIP-0056
  1. 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:

    - AllocationV1.daml

    - AllocationInstructionV1.daml

    - AmuletAllocation.daml

    - cip-0056.md

    Context: github discussion

  2. Simon_Meier 1

    The preferred approach is to use the token standard APIs. TransferCommand will be deprecated soon and removed later.

  3. cocreature 1
    Simon_Meier:

    TransferCommand will be deprecated soon and removed later.

    Just a small correction: TransferCommand has been deprecated already as part of splice 0.5.16.