Multi-signature wallets
Enable multi-signature transactions and allow them to require M-of-N signatures to be spent.
A common blockchain transaction performs an action for a particular address (e.g. spending its funds) and it must be signed by the corresponding private key. All participants on the chain can then verify these signatures, using public addresses only, without needing to see each others’ private keys.
Multisignature (“multisig” for short) addresses and transactions broaden this model by creating identities on the chain which are managed collectively by multiple parties. Multisig uses “m-of-n” bitcoin-style multisignatures, in which a multisig address A is defined as: Given n regular addresses, at least m of the private keys corresponding to those addresses must sign a transaction to perform an action for A.
Some common values of m and n are:
- 1-of-n: Any one of n different parties can approve the transaction. For example, one of three employees can spend some funds, but we want the blockchain to contain a record of who did so.
- 2-of-2: Each of two separate parties must approve the transaction. For example, two departments in a company must sign off before some data is published on a blockchain on behalf of that company.
- 2-of-3: Any two out of three parties can approve the transaction. This is commonly used for escrow purposes, where the two counterparties to an agreement engage a third party to act as an arbitrator in the event of a dispute.
To send tokens that can only be spent by multiple signatures, you need to generate a multisig wallet. This wallet is generated with N public keys and an integer M, which is the minimum amount of signatures to spend your funds. N and M must be at most 16. The Hathor multi-signature feature is designed to require M signatures from a total of N keys, where M is equal to or less than N.
On the mainnet, multisig addresses start with 'h'; on testnet they start with 'w'. Regular P2PKH addresses also follow a standard format: they start with 'H' on the mainnet and 'W' on the testnet.
More details on the general multisig address format and redeem script are available in RFC-0005.