YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief...

41
Jan Møller Co-founder, CTO Chainalysis

Transcript of YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief...

Page 1: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

Jan Møller Co-founder, CTO Chainalysis

Page 2: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

HowDoesBitcoinActuallyWork?

•  Thistalkisnotaboutthepoli:caloreconomicalimpactofBitcoin.

•  Thistalkisnotabouthowtobuy,sell,spend,orsecureyourbitcoins.

•  ThistalkisabouthowBitcoinactuallyworks.…youknow…nerdystuff!

Page 3: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

HowitStarted

•  WhitepaperpublishedNovember2008bySatoshiNakamoto

“Bitcoin:APeer-to-PeerElectronicCashSystem”

“I'vebeenworkingonanewelectroniccashsystemthat’sfullypeer-to-peer,withnotrustedthirdparty.”

•  Workingimplementa:onpublished3monthslaterasan

opensourceproject.

Page 4: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

ABrief[FUN]History•  FirstBitcoinTransac:on January2009

•  2Pizzas10.000BTC May2010

•  1BTCSuprassesUSD1 February2011

•  1CessnaAircra[10.000BTC June2011•  1BTCSurpassesUSD100 April2013

•  1BTCSurpassesUSD200 April2013

•  1BTCSurpassesUSD1000 November2013

•  1BTCDowntoUSD245 June2015

Today1bitcoinisaboutUSD750

Page 5: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

WhatisBitcoin?

•  Bitcoinisthenameofap2pprotocolAllowsanetworkofcomputerstogovernalltherulesofBitcoin

•  BitcoinisaunitofaccountLikeEuro,AustralianDollar,orWoWgoldcoins

•  BitcoinisapaymentSystemYoucansendvaluebetweenaccountsintheBitcoinnetwork

Page 6: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

Proper:esofCommonDigitalPaymentSystems

•  NoCounterfei:ngYOUcan'tincreasemoneysupplyatwill

•  NoDoubleSpendingYOUcan'tspendthesamevaluemorethanonce

•  Transac:onirreversibilityYOUcan'tundoatransac:on

Page 7: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

Proper:esofBitcoin

•  NoCounterfei:ngNOBODYcanincreasemoneysupplyatwill

•  Transac:onirreversibilityNOBODYcanundoatransac:on

•  NoDoubleSpendingNOBODYcanspendthesamevaluemorethanonce

Page 8: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

BitcoinSolvesTwoThings

•  EliminatestrustinacentralauthorityYoutrusttherulesofaprotocolenforcedbymathema:csandcryptography

•  Distribu:onoffundsHowtodistributevaluewhenyoucreateanewcurrency?

Page 9: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

Distribu:onofFunds

•  Every10minutessinceincep:ona“random”nodeintheBitcoinnetworkreceivesareward.

•  Therewardstartedat50bitcoins,andhalvesevery4years

Page 10: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC
Page 11: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

TheBlockchain•  Thebiginven:onthatmakesBitcoinwork

•  Theblockchainisadatabasecontaininghistoricalrecordsofallthetransac:onsthateveroccurredinthenetwork.

•  Everyfullnodeinthenetworkhasacopythattheykeepuptodateandverify.

•  Somenodesextendtheblockchain,theyarecalledminers.

Page 12: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

Block0

GenesisBlock

Block1

...

BlockN-1

BlockN

Thinkofitasabigaccoun:ngbook.Everyblockisapageinthebook.

Anyonecantrytoaddapagetothebooktogetareward…butitiscomputa:onallyhardtodoso

Problem:Wewantanewblocktoappearevery10minutesonaverage.

Page 13: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

IntroducingSHA-256

•  Cryptographicallysecureone-wayhashfunc:on.

•  Takesanyinputandproducesa32byteoutput.

•  Flippingonebitintheinputgivesadifferentrandomlydistributedoutput.

Sha256(“YOW”) = 990d7204316fe2907f55cb22d7b66fe9 e1f7e26dca2b61041cc3d3eec303d6a7

Sha256(“WOY”) = cab9db6bcb5b96f48fb3e5f11cc43008

a9eee6b168127ee7422f7218877751ff

Page 14: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

Block0

GenesisBlock

Block1

...

BlockN-1

BlockN

VersionPreviousBlockHashMerkleRootTimeStampBitsNonce

80byteheaderBlockHash=Sha256(Sha256(Header))Butthereisacatch…

BlockHeader

Transac:onsPayload Variablesize

Howtocreateanewblock?

Page 15: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

VersionPreviousBlockHashMerkleRootTimeStampBitsNonce

1createheader2makenoncerandom3calculateblockhash4isitbelowthetarget?5Jwearedone6Lgoto2Transac:ons

Blockhashmustbebelowthetargetdifficulty

0000000000000000038cc0f7bcdbb451ad34a458e2d535764f835fdeb896f29b

Block#440000~2,000,000,000GH/s

Page 16: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

TheDifficultyAdapts

Page 17: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

BlockPropaga:on

Page 18: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

...

BlockN-2

BlockN-1

ForksareNormal(1)

BlockN’’

BlockN’

Page 19: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

...

BlockN-2

BlockN-1

ForksareNormal(2)

BlockN’’

BlockN’ BlockN+1

Thelongestchainwins!

Page 20: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

Distribu:onofFundsSummary

•  Fundsaredistributedbysolvingblocks

•  Difficultyadaptsover:me

•  Thelongestchainwins

Page 21: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

BitcoinPublic/PrivateKeys

•  ABitcoinusesEllip:cCurvecryptography•  Aprivatekeyis32randombytes•  Apublickeyiscomputedfromaprivatekey•  Thereisnoencryp:oninBitcoin,onlysigning

Page 22: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

BitcoinAddresses

•  ABitcoinaddressesisabitlikeabankaccount.1Kk18SN6WRPTEXbXBm3dZSzEw7NdbChyc9

•  Calculatedfromapublickey RIPEMD-160(Sha256(publickey))

•  Nobodyknowswhoownswhichaddresses

•  Valueismovedbetweenaddressesusingtransac:ons.

Page 23: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

Transac:ons(simplified)

•  ABitcointransac:onsendsvaluefromonesetofaddressestoanother

InputsOutputs

5BTC

3BTC

4BTC

10BTC

2BTCTransac:onHash=Sha256(Sha256(Transac:onData))

Page 24: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

InputsOutputs

10BTC

Transac:on

Crea:ngaTransac:on(1/7)

Page 25: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

InputsOutputs

10BTC

Transac:on

InputsOutputs

1BTC

5BTC

InputsOutputs

4BTC

2BTC

InputsOutputs

7BTC

3BTC

Crea:ngaTransac:on(2/7)

Page 26: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

InputsOutputs

10BTC

2BTC

Transac:on

InputsOutputs

1BTC

5BTC

InputsOutputs

4BTC

2BTC

InputsOutputs

7BTC

3BTC

Crea:ngaTransac:on(4/7)

Page 27: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

InputsOutputs

10BTC

1.9999BTC

Transac:on

InputsOutputs

1BTC

5BTC

InputsOutputs

4BTC

2BTC

InputsOutputs

7BTC

3BTC Transac:onFee=0.0001BTC

Crea:ngaTransac:on(4/7)

Page 28: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

InputsOutputs

10BTC

1.9999BTC

Transac:on

InputsOutputs

1BTC

5BTC

InputsOutputs

4BTC

2BTC

InputsOutputs

7BTC

3BTC Transac:onFee=0.0001BTC

Crea:ngaTransac:on(5/7)

Page 29: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

InputsOutputs

10BTC

1.9999BTC

Transac:on

InputsOutputs

1BTC

5BTC

InputsOutputs

4BTC

2BTC

InputsOutputs

7BTC

3BTC Transac:onFee=0.0001BTC

Crea:ngaTransac:on(6/7)

Page 30: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

InputsOutputs

10BTC

1.9999BTC

Transac:on

InputsOutputs

1BTC

5BTC

InputsOutputs

4BTC

2BTC

InputsOutputs

7BTC

3BTC

Crea:ngaTransac:on(7/7)

BitcoinNetwork

Page 31: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

Transac:onRelaying

•  Receivetransac:onfrompeer

•  Verifica:on(simplified):– Verifythatthesignaturesaresound– Verifythattheinputsareunspent– Verifythatthesumofoutputs<=sumofinputs

•  Relaytransac:ontootherpeers

Page 32: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

Block0

GenesisBlock

Block1

...

BlockN-1

BlockN

UnconfirmedTransac:ons

placeholderVersionPreviousBlockHashMerkleRootTimeStampBitsNonce

BlockN+1

Transac:ons

Page 33: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

...

BlockN-2

BlockN-1

Transac:onsinForks(1)

BlockN’’

BlockN’

MyTransac:on

MyTransac:on

Page 34: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

...

BlockN-2

BlockN-1

Transac:onsinForks(2.1)

BlockN’’

BlockN’

MyTransac:on

Page 35: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

...

BlockN-2

BlockN-1

Transac:onsinForks(2.2)

BlockN’’

BlockN’ BlockN+1

Thelongestchainwins!

MyTransac:on

Page 36: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

Proper:esofBitcoin(1/3)

NoCounterfei:ng“NOBODY”canincreasemoneysupplyatwill

Youarecompe:ngwiththebiggestdistributedcomputertheworldhasseen.Ifyoucanbeatit,itjustgetsharder.

Block0

GenesisBlock

Block1

...

BlockN-1

BlockN

Page 37: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

Proper:esofBitcoin(2/3)

Transac:onirreversibility“NOBODY”canundoatransac:on

Requiresa51%avack

...

BlockN-2

BlockN-1

BlockN’’

BlockN’ BlockN+1

OriginalTransac:on

ReversedTransac:on

Page 38: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

Proper:esofBitcoin(3/3)

NoDoubleSpendingNOBODYcanspendthesamevaluemorethanonce

...

BlockN-2

BlockN-1

BlockN

Twotransac:onsspendingthesameoutputs

Page 39: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

BlockchainTechisNew

Trustlessdecentralizedorderingofevents

•  DecentralizedDNSwithNamecoin–  Adecentralizedopensourceinforma:onregistra:onandtransfersystem.

•  DecentralizedStockExchange–  Coloredcoins.orgisoneofseveralsolu:onsthatallowyoutoissueandtrackdigitalassetsontopoftheBitcoinblockchain.

Wecandostuffthatwasn’tpossiblebefore

Page 40: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

WanttoKnowMore?

Page 41: YOW 2016 How the Bitcoin Protocol Actually Works › ~suman › security_arch › bitcoin.pdfA Brief [FUN] History • First Bitcoin Transac:on January 2009 • 2 Pizzas 10.000 BTC

Jan Møller Co-founder, CTO Chainalysis