Multi-Party Signing (Combine)
No PSKT adapter implements an operation in this build, so the commands below refuse with a typed error. See PSKT.
PSKT enables decentralized, multi-party coordination.
For example, if a transaction spends from a 2-of-3 Multisig address, or spends two different inputs owned by two different people, the signing process is distributed.
1. Distribution
The Coordinator creates a single initial PSKT:
hardkas pskt export --plan plan.json --out base_session.json
The Coordinator sends base_session.json to both Alice and Bob.
2. Independent Signing
Alice and Bob independently inspect and sign their copies of the PSKT.
Alice's Machine:
hardkas pskt sign base_session.json --account alice --out alice_signed.json
Bob's Machine:
hardkas pskt sign base_session.json --account bob --out bob_signed.json
3. Merge (Combine)
Alice and Bob send their partially signed PSKTs back to the Coordinator. The Coordinator must merge them into a single PSKT containing both signatures.
hardkas pskt merge alice_signed.json bob_signed.json --out merged_session.json
Merge Semantics (with an adapter; none in this build):
- The adapter delegates to the upstream native Kaspa Combiner.
- The Combiner verifies that both PSKTs represent the exact same underlying transaction. If Alice and Bob signed PSKTs with different outputs or inputs, the merge will strictly fail.
- The Combiner aggregates the partial signatures from both files.
4. Finalize & Extract
The merged_session.json now contains both signatures. The Coordinator can finalize and extract it exactly as in a single-signer workflow:
hardkas pskt finalize merged_session.json --out final.json
hardkas pskt extract final.json --out tx.json