CCC - CKBers' Codebase is a one-stop solution for your CKB JS/TS ecosystem development.
Empower yourself with CCC to discover the unlimited potential of CKB.
Interoperate with wallets from different chain ecosystems.
Fully enabling CKB's Turing completeness and cryptographic freedom power.
Check the package documentation and API reference for more details.
signPsbt binds the wallet response to the requested transaction, input order,
outputs, locktime, and previously supplied UTXO data. Actual ECDSA and Schnorr
signature hash modes must match the input declaration and any caller allowlist
for new or replaced signatures. These checks also run with autoFinalized: false.
Other participants' unchanged signatures are not subject to the caller allowlist.
Responses that remove an existing signature are rejected.
Explicit non-default hash modes remain supported.
Wallets must return an unfinalized PSBT. Existing, unchanged finalized inputs are
preserved, but newly added or changed final scripts are rejected. Missing trusted
UTXO/script/Taproot metadata is restored after transaction binding, with conflicts
rejected. Omitted Taproot roots/leaves do not assert an empty tree. New key-path
signatures, and signatures about to be finalized, are verified against the actual
output key in the full transaction context. All committed prevouts are required,
except unrelated prevouts excluded by ANYONECANPAY.
Automatic finalization checks that a single-key ECDSA signature's public key
matches the committed script, including P2SH/P2WSH wrappers.
It supports ordinary payment scripts, wrapped multisig,
Taproot key-path, and scure's tr_ns/tr_ms script templates. Unrelated bare
P2PK/multisig inputs can be carried through while retaining commitment checks.
Arbitrary CLTV/CSV or inscription scripts are not automatically solved. Use
autoFinalized: false for partial/multiparty signing or application-managed
finalization; broadcastPsbt remains unsupported.
Both adapters bundle a shared private PSBT boundary using stock scure public APIs. It encapsulates compatibility for bare inputs and omitted Taproot tree metadata, validates all inputs before finalization and serialization, and never exposes an unchecked mutable transaction. ESM and CommonJS consumers receive the same checks.
Xverse's RPC cannot forward inputsToSign[].sighashTypes; CCC enforces it locally
on returned signatures. disableTweakSigner remains unsupported by Xverse.