![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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/1.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/3.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/10.jpg)
![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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/18.jpg)
...
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/19.jpg)
...
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/23.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/24.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/25.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/26.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/27.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/28.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/29.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/30.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/31.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/32.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/33.jpg)
...
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/34.jpg)
...
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/35.jpg)
...
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/36.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/37.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/38.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/39.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/40.jpg)
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](https://reader033.vdocuments.site/reader033/viewer/2022042403/5f16cfaf617415519b5ba302/html5/thumbnails/41.jpg)
Jan Møller Co-founder, CTO Chainalysis