Transaction outputs and script paths
Arkade transactions are Bitcoin transactions that consume and create outputs with special Taproot spending paths. They have two key features differentiating them from conventional Bitcoin transactions:- Cooperative execution - The operator verifies and co-signs eligible paths.
- Extended programmability - Spending paths can utilize custom opcodes that enable features such as transaction introspection and advanced arithmetic.
- Immediate spending - Resulting outputs can fund subsequent Arkade transactions without onchain block confirmation.
Learn more about Arkade outputs, batch outputs, and transaction paths
Script compatibility and path rules
Arkade applies Bitcoin Script semantics to output spending paths during cooperative execution. Published Bitcoin paths remain subject to Bitcoin consensus. There are two types of spending paths:- Collaborative paths (offchain, instant) must include the server pubkey so the operator can co-sign.
- Unilateral paths (onchain, timelocked) must include a CSV exit delay using or exceeding the value from
getInfo(). The operator’s signature is not required.
Timelocks
The SDK provides helpers for common patterns:
Input/output structure
Inputs specify which output and spending path:Two-phase transaction flow
Arkade uses a two-phase protocol for virtual (offchain) transactions:- SubmitTx - Client submits signed transaction + unsigned checkpoints → operator validates, co-signs, and returns partially signed checkpoints
- FinalizeTx - Client completes checkpoint signatures → Transaction receives preconfirmation status
Deep dive into the offchain execution workflow
PSBTs and the Transaction class
You can craft a classic PSBT using@scure/btc-signer. When decoding Arkade PSBTs, pass { allowUnknown: true } to preserve Arkade-specific fields:
Transaction class instead. It matches @scure/btc-signer 1:1, so the same API calls (and { allowUnknown: true }) work:
Next steps
Lightning
Integrate Lightning payments via Arkade intents
Spilman channels
Build payment channels
Experimental contracts
Advanced contract patterns
API reference
Full SDK documentation