multi-sig recipes
TRANSCRIPT
Multi-Sig RecipesBen Davenport, BitGo
@bendavenport [email protected]
Goal
Learn some ways to use multi-sig to provide
enhanced security for your service and unlock
new possibilities for users.
Agenda
● Ingredients
● Recipes
● Real world examples
Ingredient: Multi-Sig
● Introduced in BIP 11 (Oct 2011)
● OP_CHECKMULTISIG
● Requires M-of-N keys to sign
● Eliminates a single point of failure (the key)
● Direct use supplanted by indirect (P2SH)
Ingredient: P2SH
● Introduced in BIP 16 (Mar 2012)o P2PKH: 1DRW7nQ4adMk7xPTXf2KeB7AxzDtX1fNrU
o P2SH: 3Q8pEaNZeaC6pHtaFRsTUrFhdrH8e6hkBe
● ~8% of bitcoin currently in P2SH addresses
● Mainly used for multi-sig today
The Recipes
● Use basic ingredients of P2SH and multi-sig
● Add additional techniques
● Describe security for a single wallet
● Combine recipes as necessary
But First: Multi-Sig Diagrams
● Single key is easy to reason about
● Multi-sig => Combinatorial explosion
● Need a visual language
● Represent as graphso Nodes = entities
o Directed edges = control (full or partial)
Recipe: Good Old Single-Key
As simple as it gets:
Recipe: 2-of-2 Multi-Device
2-of-2 Multi-Device Examples
● Multiple computers o BitcoinD createmultisigaddress
o Armory lockboxes
● Computer + Phoneo Bitcoin Authenticator
● Computer + Hardware Walleto Trezor
o Ledger
Recipe: Joint Wallet (M-of-N)
Joint Wallet Examples
● Husband & Wife
● Custodial wallet for child
● Business partnership
Recipe: Trustless Escrow
Multi-Sig Escrow Examples
● HashTrust
● BitRated
● OpenBazaar
Ingredient: Co-Signing Service
● 2 keys held by customer, 1 key by
service
● User creates and half-signs transaction,
then sends to co-signer
● Co-signer executes security and logic
Recipe: Co-Signed Wallet (1 user)
Co-Signed Wallet Example
● Core model for all BitGo wallets
● Enables additional control / securityo Require 2FA from user
o Time-delays / out-of-band notification
o Transaction velocity limits
o White/black-listing of addresses
o Apply fraud detection algos
Recipe: Multi-User Co-Signed Wallet
● Per-day limits / Per-transaction limits
● Destination bitcoin address whitelists
● Time of day restrictions
● Human approvals - User/password/2FA
● Red button (kill switch)
● Blacklisting, IP lockdown, ...
● External webhooks
BitGo Co-Signer Logic
Corporate Treasury
● Multiple users on a wallet
o Require 2FA and User Auth
● Lower level emp can spend limited amounts
● CEO, CFO able to approve large withdrawals
● Can add/remove privileges of users at any time
● Example customers: SecondMarket, ChangeTip, BitFury
ATM Provider
● Shared wallet with multiple machines
● One access token per machine
● IP lockdown for each token
● Tokens may be individually revoked
● Example customers: Lamassu ATMs
Exchange Hot Wallet
● Per-day limit
● Callback via webhook
● Enforce human approver for large transactions
● Examples: Bitstamp, BitSpark, BitQuick
Exchange-owned Segregated Wallet
● One wallet per exchange user
● Per-user-wallet policy granularity
● Withdrawals require user 2FA
● Transactions to house wallet whitelisted
Recipe: Exchange Segregated Wallet
Exchange+User Joint Wallet
● User and exchange each own a private key
● Instant confirmation
● Withdrawals depend on
o Webhook call to exchange to ensure user has
sufficient margin
We Want to Work with You
How can we help you?
● Co-develop new recipes
● Enhance your security
● Improve your operational efficiency