All chains
    Preparing search index...
    submit_offline_payment: TxDescriptor<
        {
            amount: bigint;
            cid: { digest: FixedSizeBinary<4>; geohash: FixedSizeBinary<5> };
            nullifier: FixedSizeBinary<32>;
            proof: Binary;
            recipient: SS58String;
            sender: SS58String;
        },
    >

    Submit an offline payment ZK proof for settlement.

    Anyone can submit a proof - the submitter doesn't need to be the sender. This allows either party (buyer or seller) to settle when they come online.

    The proof verifies:

    • Prover knows zk_secret such that commitment = Poseidon(zk_secret)
    • nullifier = Poseidon(zk_secret, nonce) for some nonce
    • All public inputs match the claimed values

    Arguments

    • proof - The Groth16 proof bytes
    • sender - The account sending funds (must have registered commitment)
    • recipient - The account receiving funds
    • amount - The amount to transfer
    • cid - The community identifier
    • nullifier - The unique nullifier for this payment