Wallet Technologies
- a semi-technical look at -
Private Keys, HD Wallets & MultiSig
Ruben de Vries - CTO, BlockTrail
@rubensayshi
2015 – the real year of MultiSig and HD wallets
- A really big number
- between 1 and 2^256
115792089237316195423570985008687907852837564279074904382605163141
518161494400
^---- ~ 11 with 77 0's
1000000000000
1000000000
One million -> 1000000
What is a Private Key?
- Hierarchical Deterministic Wallet
- BIP32
HD Wallet
- Problem: all transactions are public
- Problem: reuse addresses = bad for privacy
- Solution: MANY private keys
HD Wallet
- Problem: we need to backup every new private keys
- Solution: generate 100 private keys in advance
- Problem: safe backups are a lot of work
- Problem: we're lazy
HD Wallet
- More Problems (that HD wallets solve):
- we want to have fine grained control over who has
access to wallets
- we want to let a 3rd party generate addresses for
us
HD Wallet
- Private Key is a number
- So if we +1 that number, we have a new Private Key
- with a new address
- Start from a 'Master Key'
- easy to reproduce all keys from there
- to get key 14474 you just 'Master Key' + 14474
- In reality it's more like multiplying than adding
HD Wallet to the rescue
Between
- Give your mining pool M/500 and they can generate new
addresses to do payouts;
- M/500/1, M/500/2, M/500/3
This works for public keys too!!
Hierarchical Deterministic Keys
- BIP39 – mnemonics
“region clock summer pig account pistol under maple trash organ
idea laugh”
words bits
12 128
16 192
24 256
HD Wallet; the Master Seed
Mnemonic:
“region clock summer pig account pistol under maple trash organ
idea laugh”
Hex:
bba8844939bb875c81d956ddb723180fee1217596c5bb8be2826c743e3922fb9bd
fad8b6d8afb09b23ac4fe1e209c4c5c93539165804309c388f9c381903ebfd
Int:
982846101892683200542478295468301190003993215044065721400615115897
630304237843873081670725340206594483057811523827869114800091709139
8156914557840747916285
Bin:
101110111010100010000100010010010011100110111011100001110101110010
000001110110010101011011011101101101110010001100011000000011111110
111000010010000101110101100101101100010110111011100010111110001010
000010011011000111010000111110001110010010001011111011100110111101
Mnemonic = human readable representation
Bitcoin HD Wallet Technologies Part 2

Bitcoin HD Wallet Technologies Part 2

  • 2.
    Wallet Technologies - asemi-technical look at - Private Keys, HD Wallets & MultiSig Ruben de Vries - CTO, BlockTrail @rubensayshi 2015 – the real year of MultiSig and HD wallets
  • 3.
    - A reallybig number - between 1 and 2^256 115792089237316195423570985008687907852837564279074904382605163141 518161494400 ^---- ~ 11 with 77 0's 1000000000000 1000000000 One million -> 1000000 What is a Private Key?
  • 4.
    - Hierarchical DeterministicWallet - BIP32 HD Wallet
  • 5.
    - Problem: alltransactions are public - Problem: reuse addresses = bad for privacy - Solution: MANY private keys HD Wallet
  • 6.
    - Problem: weneed to backup every new private keys - Solution: generate 100 private keys in advance - Problem: safe backups are a lot of work - Problem: we're lazy HD Wallet
  • 7.
    - More Problems(that HD wallets solve): - we want to have fine grained control over who has access to wallets - we want to let a 3rd party generate addresses for us HD Wallet
  • 8.
    - Private Keyis a number - So if we +1 that number, we have a new Private Key - with a new address - Start from a 'Master Key' - easy to reproduce all keys from there - to get key 14474 you just 'Master Key' + 14474 - In reality it's more like multiplying than adding HD Wallet to the rescue
  • 11.
  • 12.
    - Give yourmining pool M/500 and they can generate new addresses to do payouts; - M/500/1, M/500/2, M/500/3 This works for public keys too!!
  • 13.
  • 14.
    - BIP39 –mnemonics “region clock summer pig account pistol under maple trash organ idea laugh” words bits 12 128 16 192 24 256 HD Wallet; the Master Seed
  • 15.
    Mnemonic: “region clock summerpig account pistol under maple trash organ idea laugh” Hex: bba8844939bb875c81d956ddb723180fee1217596c5bb8be2826c743e3922fb9bd fad8b6d8afb09b23ac4fe1e209c4c5c93539165804309c388f9c381903ebfd Int: 982846101892683200542478295468301190003993215044065721400615115897 630304237843873081670725340206594483057811523827869114800091709139 8156914557840747916285 Bin: 101110111010100010000100010010010011100110111011100001110101110010 000001110110010101011011011101101101110010001100011000000011111110 111000010010000101110101100101101100010110111011100010111110001010 000010011011000111010000111110001110010010001011111011100110111101 Mnemonic = human readable representation