Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion docs/advanced.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,13 @@ A multisig configuration uses the following structure:
Each field here serves a different purpose:

* `S`: `S` represents a reserved field. It must be of value `0x80`, the value is intentially chosen to be different from the secp256k1 multisig lock deployed in CKB's genesis block.
* `R`: `R` represents how many starting public keys are required. For example, in a 3-of-5 setup, one might want to say that signatures for public key A and B must always be present so as to unlock the cell. In this case one can put ublic key A and B at the start of the public key list, and then set `R` to 2.
* `R`: `R` represents how many starting public keys are required. For example, in a 3-of-5 setup, one might want to say that signatures for public key A and B must always be present so as to unlock the cell. In this case one can put public key A and B at the start of the public key list, and then set `R` to 2.
* `M`: `M` represents the threshold, meaning how many signatures must be provided to unlock the cell. For instance, in a 3-of-5 setup, `M` must be 3.
* `N`: `N` represents the avialble public keys, in a 3-of-5 setup, `N` must be 5.

If any signature fails verification, the entire process fails, even when the remaining signatures (more than `M`) are valid.
In the UTXO model, transactions can be validated off-chain by SDKs or tools, allowing invalid signatures to be removed before broadcasting to the P2P network. Therefore, the design enforces a strict limit: provide exactly $M$ signatures (no more, no less).

`N` also denotes how many pairs of `param flag` and `public key` will follow. Each `param id` will be 1 byte, the higher 7 bit represents `param ID`, denoting the parameter set to use, the lowest bit is a signature flag, for multisig configuration, this bit is always 0. A public key can range from 48 to 64 depending on the parameter set. The exact of value in `param id` indicates the length of public key followed.

## Multisig ID, Param ID
Expand Down