Skip to content

Latest commit

 

History

History
45 lines (33 loc) · 3.35 KB

0003-multisig-minting.md

File metadata and controls

45 lines (33 loc) · 3.35 KB

Multi-signature Minting

  • Status: proposed
  • Type: enhancement
  • Related components: protocol, coinstake-split, transaction-timestamp-removal
  • Start Date: 22-March-2017
  • Discussion: (fill me in with link to RFC discussion - shepherd will complete this)
  • Author: hrobeers

Summary

An advantage of splitting the coinstake transaction into a monetary creation and a coin-age consumption transaction, as described in RFC-0002, allows the coin-age consumption transaction to be pre-signed off-line. In combination with mutli-signature scripts, this could serve as an alternative to cold minting.

Conventions

  • The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.
  • The verb "TO MINT" or "MINTING" refers to the action of trying to create a Block using Proof-of-Stake. "STAKING" is chosen over "MINTING" to avoid confusion with "MINING".

Motivation

Multi-signature minting requires minimal changes to the protocol, provided that RFC-0002 and RFC-0004 are implemented, and allows coins secured by offline or hardware wallets to actively participate in the minting process. A 2-of-3 multisignature script can be composed using one mint key and two off-line keys, so in order to spend the coins one at least needs access to one of the off-line keys. The multi-signature minting process would require the holder to pre-sign the coin-age consumption transaction off-line and send it off to his minter to find stake for that output using the minting key. The on-line minter would be unable to spend the coins in any other way than broadcasting the coin-age consumption transaction that returns all funds to sender only consuming the coin-age and a transaction fee. A dependency on RFC-0004 exists to allow pre-signing of the coin-age consumption transaction.

Detailed Design

Splitting the coinstake transaction into a monetary creation and a coin-age consumption transaction requires only the coin-age consumption transaction to be fully signed by the minter. Since the block reward amount is moved to the monetary creation transaction, taking the place of the currently unused coinbase transaction, the block reward is excluded from the coin-age consumption signature. Therefore, the minter can modify the coinbase timestamp and block reward without having to update the coin-age consumption signature, allowing him to find stake for an externally signed coin-age consumption transaction.

Multi-signature minting is not possible in the current protocol because the block signature is required to match the public key of the coinstake transaction. Adding a simple rule for multi-signature scripts that blocks should be signed by one of it's public keys would enable multi-signature minting.

Advantages

  • More secure minting.
  • Permanent outsourcing of minting is not possible, every mint needs to be pre-signed by the holder.
  • Minimal protocol changes.

Drawbacks

  • Hard fork

Alternatives

TODO