Alex Melville Securing and Running A Multisig...
Transcript of Alex Melville Securing and Running A Multisig...
Ethereum at BitGoSecuring and Running A Multisig Ethereum Wallet
Alex Melville
BitGo: 2-of-3 Multi-Signature Wallets
No single point of failure!
BITGO KEYCUSTOMER KEY EMERGENCY (BACKUP) KEY
4
Supported Coins and Tokens
ETH
ETHEREUM
BTC
BITCOIN
LTC
LITECOIN
BCH
BITCOIN CASH
BTG
BITCOIN GOLD ZCASH
ZEC XRP
XRP
XLM
STELLARDASH
DASH
Augur (REP)
Basic Attention Token (BAT)
Bread (BRD)
Civic (CVC)
Golem (GNT)
Kyber Network (KNC)
Numeraire (NMR)
OmiseGo (OMG)
0x (ZRX)
Maker (MKR)
Worldwide Asset eXchange (WAX)
Zilliqa (ZIL)
iShook (SHK)
Rialto (XRL)
Kin (KIN)
Salt (SALT)Change (CAG)
Power Ledger (POWR)
AppCoins (APPC)
Serenity (SRNT)PlusCoin (PLC)
Linker Coin (LNC)
Snovio (SNOV)
Status Network Token (SNT)
Decision Token (HST) Propy (PRO)
AirSwap (AST)
WaltonChain (WTC)
Storj (STORJ)
SwissBorg (CHSB)
Aragon (ANT)
Aelf (ELF)
Populous (PPT)
OPTin Token (OPT)AION (AION)
Celsius (CEL)
Sentinel Protocol (UPP)
ANA (ANA)
WeTrust (TRST)
Indorse (IND)
Dent (DENT)
Polymath (POLY)
TrueUSD (TUSD)
Bancor (BNT)
Colu Local Network (CLN)
DAOstack (GEN)
Storm (STORM)
Gnosis (GNO)
Pundi X (NPXS)
Gemini Dollar (GUSD)
Paxos (PAX)
Rebglo (REB)
CoinLion (LION)
Hold (HOLD)
Cryptopay (CPAY)
...with more being added all the time.
Ethereum Basics (Addresses vs. Contracts)
6
Addresses:
● Basically like Bitcoin Addresses● Single Signature● Initiate Contract Creation/Execution● Pay for Fees! (EIP 101)
Contracts
● Turing-Complete Execution● Extremely Tricky to Reason About
TXCreation
External (Fee) Address
10
8
The Code:
● Multisignature Wallet● 12 functions
○ Sending○ Safe Mode○ Helper Functions
● Events○ Transacted○ Deposited
● web3.js (we don’t use it!)
Writing and Deploying A Multisig Wallet Smart Contract
10
The Deploy:
● Similar Care as Hardware● Audits
○ OpenZeppelin○ Coinspect○ ABDK Consulting
● Fee Address○ It Costs to Deploy Wallet and Receive Addresses
Writing and Deploying A Multisig Wallet Smart Contract
25
11
The Ethereum Multisig Problem: Fungibility and Usability
TX
HitBTC does not see the
transaction!
13
Transaction Nonce Holes: Full Node
1 2 3 4
TX #11 ETH
TX #23 ETH
TX #35 ETH
TX #47 ETH
= Confirmed
14
Transaction Nonce Holes: Full Node
1 2 3 4
= DB Query
5
TX #11 ETH
TX #23 ETH
TX #35 ETH
TX #47 ETH
TX #59 ETH
= Unconfirmed
= Confirmed
15
Transaction Nonce Holes: Full Node
1 2 3 4
5
TX #11 ETH
TX #23 ETH
TX #35 ETH
TX #47 ETH
TX #59 ETH
TX #611 ETH
= DB Query
= Unconfirmed
= Confirmed
16
Transaction Nonce Holes: Full Node
1 2 3 4
5
TX #11 ETH
TX #23 ETH
TX #35 ETH
TX #47 ETH
TX #59 ETH
TX #611 ETH
= DB Query
= Unconfirmed
= Confirmed
23
Transaction Nonce Holes: Database
1 2 3 4 5
DB
8
7 8
TX #91 ETH
= DB Query
= Unconfirmed
= Confirmed