Satoshi Nakamotos Bitcoin Whitepaper: En grundig og ligetil gennemgang

Da jeg først læste den originale bitcoin-hvidbog, der blev offentliggjort af Satoshi Nakamoto (2008), afklarede den en masse grundlæggende spørgsmål, jeg havde vedrørende kryptovalutaen og blockchains generelt. Papiret, som mange vellæsede blockchain- og kryptoprofessionelle vil bekræfte, er et fantastisk udgangspunkt for alle, der ønsker at lære mere om teknologien.

Målet med dette indlæg er at lede dig gennem hvidbogen, mens du gør det så fordøjeligt som muligt for enhver, der er ny inden for området. Jeg vil sigte mod at forenkle nogle dele og samtidig bevare nøjagtigheden af ​​indholdet.

Lad os ikke stå længere og dykke lige ind.?

PDF: Bitcoin: Et peer-to-peer elektronisk kontantsystem.

Før vi starter ...

En blockchain er en hovedbog eller database. Det distribueres på tværs og vedligeholdes af et stort antal noder (computere) i modsætning til, at det ejes af en enkelt myndighed eller part. Målet med teknologien bag kryptokurver som Bitcoin er at gøre det muligt at nå til enighed (konsensus) om gyldigheden af ​​dataene i databasen og data, der skal føjes til databasen? Data refererer i dette tilfælde hovedsageligt til onlinetransaktionsdata, der bestemmer ejerskab af digitale aktiver såsom kryptovalutaer eller tokens.

Hele den distribuerede hovedbog holdes opdateret og verificeret, og alle deltagere i netværket er enige om dens gyldighed. Uden straks at dykke ned i den tekniske funktion, tillader blockchain-protokoller som den underliggende Bitcoin, at denne aftale og validering opnås uden behov for en tredjepartsformidler, såsom en bank?.

Tidligere var en sådan part nødvendig for at verificere ejerskab af penge (dvs. kan denne person bruge disse penge). Partiet sørgede også for, at en online betaling kun blev brugt en gang. (dvs., at bestemte penge ikke bruges i en anden transaktion). Sidstnævnte spørgsmål er, hvad der kaldes dobbeltforbrugsproblemet .

Dette har altid været et stort problem for handel med digitale aktiver. Det er muligt at duplikere den kode, der udgør aktivet, og bruge den i flere transaktioner.

Navnet "blockchain" kommer fra den måde, data lagres på. Data indsamles i blokke? som føjes til en kæde ⛓️ af tidligere validerede blokke. Med dette som en introduktion, lad os komme direkte til det og dykke ned i den stadigt berømte hvidbog.

Abstrakt

Whiteabstraktets abstrakt går ret dybt til højre for indsatsen og fungerer som et lille resumé af papiret. Bare rolig, hvis dette oprindeligt går over dit hoved? ‍. Vi har allerede dækket det meste af det, du har brug for at vide, og vil tilføje dette i næste afsnit.

Den eneste takeaway her bør være, at papiret foreslår et peer-to-peer elektronisk kontantsystem. Systemet giver os mulighed for at foretage onlinebetalinger direkte til hinanden. Der er ikke behov for en bank til at løse problemerne med ejerskab og dobbeltforbrug. ? →? →? ‍ og ❌?

"En ren peer-to-peer-version af elektroniske kontanter ville gøre det muligt at sende onlinebetalinger direkte fra en part til en anden uden at gå gennem en finansiel institution."

Introduktion

"Handel på Internettet er næsten udelukkende afhængig af finansielle institutioner, der fungerer som pålidelige tredjeparter til at behandle elektroniske betalinger."

På tidspunktet for skrivningen af ​​Bitcoin-hvidbogen var finansielle institutioner nødvendige for at kontrollere ejerskab og eliminere det dobbelte forbrugsproblem. Dette sammen med behovet for, at transaktioner er reversible (finansielle institutioner skal håndtere mæglingstvister), øger omkostningerne forbundet med en transaktion. Dette betyder, at der er en minimal transaktionsstørrelse, der er nødvendig for, at disse finansielle institutioner kan udføre den. Deres gebyr skal i det mindste dække transaktionsomkostningerne, ellers giver det ingen mening. Hvis det ikke har været klart før: banker nyder virkelig at tjene penge?.

"... begrænser den minimale praktiske transaktionsstørrelse og afskærer muligheden for små afslappede transaktioner."

Dette eliminerer muligheden for en lang række transaktionsmuligheder, der teoretisk eksisterer, men praktisk talt ikke er mulige. En fantastisk applikation, der ikke er mulig på grund af denne minimale transaktionsstørrelse, er mikroforbruget af onlineindhold, hvad enten det er webartikler, videoer, musik osv. I stedet for at skulle betale et månedligt abonnement, hvilket måske eller måske ikke er det værd afhængigt af forbrugernes brug, vil mikrotransaktioner give brugeren mulighed for at foretage utroligt små automatiserede betalinger, når indholdet forbruges.

Dette ville radikalt ændre den måde, vi bruger internettet på. Betaler for mellemstore artikler pr. Ord, YouTube-videoer pr. Sekund, Spotify-musik pr. Minut eller endda forbruger internetbåndbredde pr. Megabyte.

En anden mulig applikation ville være at realisere mikrobetalinger direkte mellem Internet-of-Things-enheder. Et simpelt eksempel her ville være en parkeret bil, der betaler for sin parkeringsplads pr. Minut. Der er utallige applikationer til mikroforbrug / transaktion, hvoraf mange kun bliver mere tydelige i fremtiden. Dette er simpelthen ikke muligt, hvis vi har brug for en tredjepartsformidler.

”Med muligheden for at vende spredes behovet for tillid. Handlende skal være forsigtige med deres kunder og trænge dem til mere information, end de ellers ville have brug for. ”

En anden grund til, at behovet for tillid ikke er ideelt, når man foretager onlinetransaktioner, er at for at opnå denne tillid skal der indsamles personlige oplysninger, hvad enten det er bankerne eller de handlende, via hvilke betalinger foretages. Disse oplysninger gemmes af disse organisationer (ofte på en enkelt server), hvilket giver dem kontrol over de personlige data og gør dataene udsat for lækage eller hacking?.

Utrolige datahacks har fundet sted i løbet af det sidste årti - tænk på Yahoo og Equifax - og de bliver mere fremtrædende for dagen. Hvad Bitcoin har til formål at opnå, er på en eller anden måde at replikere enkelheden af ​​en personlig transaktion i et online miljø.

Hvis Andy giver Brenda en $ 10-note? Behøver Brenda ikke at vide noget om Andy (såsom personlige oplysninger, kredit score, nettoværdi osv.). Det eneste hun skal vide er, at $ 10 gik fra at være i Andys besiddelse til at være i hendes besiddelse, og at $ 10 ikke duplikerede sig selv på magisk vis (? →? ?? → ??), og Andy har en anden (nøjagtig) replika at bruge .

"I dette papir foreslår vi en løsning på problemet med dobbeltforbrug ved hjælp af en peer-to-peer-distribueret tidsstempel-server til at generere beregningsbevis for den kronologiske rækkefølge af transaktioner."

For at gøre dette muligt præsenterer personen (eller personer eller ting) under navnet Satoshi Nakamoto et elektronisk betalingssystem, der bruger kryptografisk bevis? ‍? der gør det muligt for dets medlemmer at nå til enighed (konsensus) uden behov for en tredjepartsformidler.

2. Transaktioner

"Hver ejer overfører mønten til den næste ved digitalt at underskrive en hash af den tidligere transaktion og den offentlige nøgle."

I Bitcoins verden har de, der ejer Bitcoins, det, der kaldes en "tegnebog". Denne fungerer noget som en klassisk tegnebog, fordi den "holder" din Bitcoin. En offentlig nøgle er forbundet med tegnebogen . Dette er en adresse, der kan bruges til at sende Bitcoin til, ligesom nogen har en e-mail-adresse eller et bankkontonummer.

Der er også en anden (MEGET vigtig) nøgle, der er forbundet med en tegnebog, der kaldes en privat nøgle ?, Hvilken slags fungerer som dens adgangskode. At underskrive med denne private nøgle er den eneste måde, hvorpå nogen kan bevise deres ejerskab af tegnebogen, og det er det, der gør det muligt for dem at sende Bitcoins i den tegnebog. Du mister denne nøgle (og afhængigt af typen af ​​tegnebog, dine frøord), mister du din BTC?.

Bemærk, at ordren faktisk går som følger:

  • Når der oprettes en tegnebog, genererer den tegnebog en tilfældig privat nøgle.
  • Fra den private nøgle (ved hjælp af en Elliptic Curve Digital Signature Algorithm) genereres en offentlig nøgle (bemærk at det ikke er muligt at konvertere dette tilbage til sin private nøgle; det er en envejsalgoritme).
  • Fra den offentlige nøgle (noget vi vil diskutere i afsnittet om beskyttelse af personlige oplysninger) genereres en tegnebogadresse.

At eje Bitcoins betyder ikke, at du faktisk har mønter, der sidder i din tegnebog. En Bitcoin er ikke et stykke kode, du ejer, eller som er gemt et eller andet sted. Værdien af ​​BTC forbundet med en tegnebog (lad os kalde det ABC123) er baseret på, hvor mange transaktioner på blockchain der siger "Adresse EXAMPLE890 ... sender x mængde BTC til adresse ABC123" samt hvor mange siger "Adresse ABC123 ... sender x mængden af ​​BTC til adresse EXAMPLE453 ”.

Med andre ord gemmer Bitcoin blockchain en utrolig mængde data, der specificerer, hvem der sendte hvor meget til hvilken adresse? Disse data (hvem sender, hvilket beløb, hvem modtager) lagres i individuelle transaktioner. Ejerskabet af Bitcoin beregnes ved at se på alle transaktioner, der kommer ind på en adresse, og dem der går ud.

Nu, hvis adresse ABC123 vil bruge den BTC, der er modtaget fra en anden adresse, skal den bevise, at det er tilladt at gøre det ved at underskrive transaktionen med sin private nøgle ? (De betingede data - du kan kun bruge den, hvis du er underskrevet med den korrekte private nøgle - kan findes i den tidligere transaktion, der kaldes). En ny transaktion genereres, BTC sendes, og vi starter igen. K EEP på, at dette er en forenklet udgave; nogle detaljer tilføjes senere.

Kerneudtag: Bitcoins er ikke egentlige mønter, de er bare en kombination af transaktioner, der viser, at du har BTC at bruge. Private nøgler bruges til at underskrive transaktioner og kontrollere ejerskab.

"Problemet er naturligvis, at betalingsmodtageren ikke kan kontrollere, at en af ​​ejerne ikke har brugt mønten dobbelt." "Den eneste måde at bekræfte fraværet af en transaktion er at være opmærksom på alle transaktioner."

Bekræftelse af fraværet af en transaktion sker ved at sende hver transaktion til hele netværket? og oprette en delt historik over alle tidligere transaktioner (kronologisk).

3. Tidsstempel-server

“En tidsstempel-server fungerer ved at tage en hash af en blok med varer, der skal tidsstemples, og offentliggør hashen bredt ...”

Ideen her er at indsamle de transaktioner, der er blevet offentligt udsendt i blokke, tidsstemple dem (tilføje en tidsværdi?), Tilføje nogle mere relevante data (vi kommer til dette senere) og derefter køre det gennem en SHA256 hashing-algoritme ⏩ .

Hvad dette grundlæggende gør, er at det konverterer blokken og dens data til en række tegn, der kan bruges til entydigt at identificere den blok (kun den kombination af data får dig den hash-værdi). Hver nye blok (før den tilføjes og køres gennem en SHA256) kan nu henvise til hash af den forrige blok i kæden, hvilket skaber en kæde af blokke i kronologisk rækkefølge. På denne måde kan alle se, hvilke blokke (og hvilke transaktioner) der har fundet sted tidligere og i hvilken rækkefølge.

Denne kæde af blokke, der er forbundet via deres hash-værdi, er det, der udgør den faktiske blockchain ("blockchain" bruges ofte til at henvise til hele protokoller og systemer, men det er virkelig selve kæden af ​​blokke; den faktiske database).

4. Bevis for arbejde og 5. Netværk

Okay. Virker godt! Men hvordan sørger vi for, at de data, der føjes til kæden, faktisk er korrekte? Kan nogen bare tilføje blokke med transaktioner, der ikke eksisterer? ?

"For at implementere en distribueret tidsstempel-server på peer-to-peer-basis, bliver vi nødt til at bruge et proof-of-work-system ..."

Hvad der er brug for er et system, der kræver noget arbejde, der skal udføres, før man kan tilføje eller foreslå en ny blok til blockchain. Ligesom den berygtede CAPTCHA på nettet er målet at skabe en barriere, hvor det bliver sværere (og umuligt) at spam systemet (eller i tilfælde af Bitcoins, foreslå falske data). Bitcoin gør dette som følger.

Jeg nævnte ovenfor, at transaktioner udsendes til hele netværket. På dette tidspunkt føjes de endnu ikke til kæden. Minearbejdere (dem, der skal udføre "arbejdet" for at tilføje blokken til kæden) skal udføre den tidligere nævnte hashing. De indsamler disse transaktioner og placerer dem i en blok (som Merkle Root, vi vil diskutere det senere) sammen med ovennævnte tidsstempel, tidligere blokhash og nogle andre relevante data som blokhøjde (hvilken blok # i kæden) og mere.

Efter at have samlet alle disse data i en blok, kører de dem gennem SHA256 hashing-algoritmen. Igen, hvad dette grundlæggende gør, er at det konverterer alle disse data til en række tegn, der entydigt identificerer blokken og dens data. Skift en lille ting i blokens data, og hele hashen ændres (der er intet kendt mønster for dette, men det er ikke tilfældigt; skift det tilbage, og du får nøjagtigt den samme hash).

Se på hvordan hashen ændres, når jeg tilføjer tallet "1" til tegnstrengen.

Bitcoin-blockchain kræver ikke kun en hash; det vil have en hash, der starter med (i skrivende stund) sytten 0'er?.

For eksempel: 000000000000000006fb217d70740a895ce4966e2826325e31061bc433d7b186

Hvordan får minearbejdere den hash? De er nødt til at tilføje et nummer til blokens data, der kaldes en 'nonce' (de tilføjer det ligesom jeg tilføjede "1"). Ingen ved, hvilket nummer der er nødvendigt for at finde den rigtige hash? ‍. Den eneste måde at finde det på er gennem prøve-og-fejl: gætte.

"... vi implementerer proof-of-work ved at inkrementere en nonce i blokken, indtil der findes en værdi, der giver blokens hash de krævede nulbit."

Denne proces, gætte den rigtige nonce, er det, der kaldes 'minedrift' ⛏️. Minearbejdere med de største CPU-ressourcer (mest beregningskraft) har størst chance for at være de første til at finde den rigtige nonce.

Så længe mere end 51% af CPU-magten er i hænderne på ærlige noder, vil det være umuligt for en ondsindet minearbejder at konsekvent vinde mineprocessen og tilføje falske data til kæden. Den længste kæde er altid den kæde, der tages som den sandfærdige kæde.

“... beviset for arbejdsvanskeligheder bestemmes af et glidende gennemsnit, der er målrettet mod et gennemsnitligt antal blokke i timen. Hvis de genereres for hurtigt, øges vanskeligheden. ”

Denne proces med at tilføje en ny blok til blockchain sker hvert 10. minut eller deromkring. Dette holdes stabilt ved protokollen, der justerer minedriftens vanskeligheder (antal start 0'er) - også kaldet “vanskelighedsbombe”? - følgelig som beregningskraft vokser over tid.

6. Incitament

Hvorfor ville minearbejdere gå igennem al den indsats og betale en masse penge for at opnå den beregningskraft, der er minen?

Når blokken er aftalt, tilføjes en ekstra transaktion til begyndelsen af ​​blokken (ofte benævnt 'coinbase-transaktionen'), som tildeler nyoprettet BTC til den vindende minearbejders tegnebogadresse, der belønner dem for det arbejde, der er lagt ned og leveret en måde at distribuere mønter i omløb?. Oven i det har hver transaktion i blokken et lille - i det mindste det var målet - transaktionsgebyr forbundet med det, der også går til den vindende miner.

"Når et forudbestemt antal mønter er kommet i omløb, kan incitamentet overgå helt på transaktionsgebyrer og være helt inflationsfri."

Vi vil springe over del 7 (Reclaiming Disk Space) og del 8 (Simplified Payment Verification) og vil kort diskutere disse sektioner i slutningen. Selv om de er en vigtig del af, hvordan Bitcoin fungerer, er de af mindre betydning for at forstå papirets kerne.

9. Kombination og opdeling af værdi

”For at tillade, at værdi opdeles og kombineres, indeholder transaktioner flere input og output. Normalt vil der enten være et enkelt input fra en større tidligere transaktion eller flere input, der kombinerer mindre beløb og højst to output: en til betalingen og en, hvis nogen, returnerer ændringen tilbage til afsenderen. ”

Noget, vi allerede har berørt lidt tidligere, er hvordan transaktioner består og hvordan adresseværdien beregnes.

BTC-værdien indeholdt i en adresse er grundlæggende summen af ​​alle dens potentielle inputtransaktioner (dvs. værdien af ​​alle transaktionerne mod den adresse, der ikke er brugt ). Når adresseindehaveren ønsker at bruge sin BTC, kan de ikke bare tage det beløb nøjagtigt og sende det. De er nødt til at bruge deres input-transaktioner som hele brikker til at gøre det (sådan som hvordan du skal betale med en hel dollarseddel og ikke kan klippe den i stykker for at betale med). Så hvad betyder det i praktisk forstand?

Andy er tilbage? men nu har han en tegnebog med 0.5BTC. Denne værdi kommer fra tre ubrugte transaktionsoutputs (UTXO) (eller fremtidige inputtransaktioner; UTXO-funktionen fungerer som en reference for inputtransaktionen for en ny transaktion):

a) 0,15 BTC

b) 0,27BTC

c) 0,08BTC

Andy vil sende 0.38BTC til Brenda (heldig Brenda ...?). Når han genererer denne transaktion, tager Bitcoin-protokollen de nødvendige input, der tilsammen er lig med eller højere end (≥) betalingen til Brenda og bruger dem som hele stykker til at generere to outputtransaktioner.

I vores eksempel bruges inputtransaktionerne a og b (0,15 + 0,27 = 0,42) til at generere betalingsoutputtransaktionen på 0,38BTC til Brenda, såvel som en anden outputtransaktion til Andys egen adresse, som returnerer ændringen (0.42–0.38 = 0,04). Begge disse outputtransaktioner kan fungere som nye inputtransaktioner til fremtidige betalinger fra adresseindehaverne.

Bemærk: Der er også et miner / transaktionsgebyr involveret, der tages ud af ligningen. Så ændringen, der returneres, er lidt mindre.

Core takeaway : Outputtransaktioner kræver hele inputtransaktioner, der tilsammen mindst er lig med eller mere end outputværdien. Ethvert overskud (input - (betaling + minearbejdsgebyr)) returneres som ændring og kan bruges som en ny inputtransaktion.

10. Privatliv

Vi diskuterede allerede eksistensen og brugen af ​​tegnebøger, offentlige nøgler og private nøgler tidligere. I den situation, hvor en tredjepart gemmer vores oplysninger (som en bank), opnås fortrolighed ved at begrænse adgangen til disse oplysninger ved at håndtere tilladelser og sikre de servere, hvor de er gemt.

Men som nævnt før giver disse et enkelt fejl- og angrebspunkt, hvilket gør det tilbøjeligt til tab og hacking. Så hvordan går Bitcoin ud på at give privatliv, hvis alle transaktioner åbent sendes til hele netværket? ?

"Nødvendigheden af ​​at annoncere alle transaktioner offentligt udelukker denne metode, men privatlivets fred kan stadig opretholdes ved at bryde informationsstrømmen et andet sted: ved at holde offentlige nøgler anonyme."

Ideen her er at holde den offentlige nøgle anonym? ️. Så længe folk ikke kan forbinde en offentlig nøgle med en bestemt person, er der ingen måde at afsløre dens identitet på.

En måde at gøre dette på, der i øjeblikket bruges i protokollen, er ved generering af tegnebogadresser, hvor en tegnebog er i stand til at indeholde flere adresser. I stedet for at vise offentlige nøgler i transaktionsdataene bruges tegnebogadresser. Ligesom offentlige nøgler oprettes baseret på private nøgler ved hjælp af en envejsalgoritme, gøres det samme for at generere en tegnebogadresse fra en offentlig nøgle (ved hjælp af SHA256 efterfulgt af en RIPEMD160). Hvad vi har tilbage (efter at have kørt det gennem en BASE58CHECK for at gøre det mere læsbart) er en tegnebogadresse, der bruges i transaktionsdataene.

"Som en ekstra firewall skal der bruges et nyt nøglepar til hver transaktion for at forhindre dem i at blive knyttet til en fælles ejer."

Uden at dykke ned i detaljer kan der genereres flere adresser fra en enkelt privat nøgle ved at implementere en tæller og tilføje en stigende værdi for at oprette sub-private nøgler (som kan bruges til at oprette offentlige nøgler, som igen kan bruges for at generere tegnebog-adresser). På denne måde kan en enkelt privat nøgle give adgang til en tegnebog, der har transaktioner, der går ind og ud af flere adresser (dette kaldes en deterministisk tegnebog).

Mange Bitcoin-software og -tjenester håndterer denne automatiske oprettelse af tegnebogadresser, når de udfører en transaktion, hvilket gør det næsten umuligt at afsløre identiteterne bag en offentlig udsendt transaktion.

Vi vil kort gå gennem de resterende stykker af hvidbogen og derefter pakke den sammen.

7. Gendannelse af diskplads

"Når den seneste transaktion i en mønt er begravet under nok blokke, kan de brugte transaktioner før den kasseres for at spare diskplads."

Når en transaktion er begravet under nok blokke, hvilket betyder, at den er blevet grundigt valideret af systemet, behøver den ikke nødvendigvis at gemme alle transaktionsdata i blokken. Dette er muligt uden at bryde hashen ved kun at medtage Merkle-roden af ​​alle transaktioner i blokens hash og ikke de enkelte transaktionsdata. For mere information om Merkle Trees?, Tjek Wikipedia.

Kort sagt, alle transaktioner hashes, og disse hashes parres, før de hashes igen, og så videre, indtil du når den overordnede hash af alle transaktioner, kaldet Merkle Root.

8. Forenklet betalingsbekræftelse

For at bekræfte en betaling skal en bruger kun være i stand til at linke transaktionen til et sted i kæden ved at forespørge den længste kæde af blokke og trække i Merkle-grenen, hvor transaktionen findes. Hvis denne bruger kan gøre det, kan de stole på, at transaktionen har været gyldig i betragtning af, at netværket har inkluderet den, og at der er bygget yderligere blokke på den.

11. Beregninger

Dette dykker ind i den mere matematiske baggrund for, hvorfor netværket vil være sikkert, når mere end halvdelen af ​​netværket består af ærlige noder.

Dybest set, så længe der er mere ærlige noder end ondsindede noder, når kæden vokser, bliver det sværere og sværere for en angriber at generere en alternativ kæde, der giver dem mulighed for at tage tilbage betalinger, de har foretaget. Jo flere blokke der tilføjes oven på en bestemt transaktion, jo lavere er sandsynligheden for, at en angriber kan indhente en alternativ kæde.

Derfor ser vi ofte tallet 6, når vi taler om (blok) -bekræftelser, som grundlæggende refererer til 6 blokke, der tilføjes efter transaktionen blev inkluderet, og fungerer som den komplette bekræftelsestærskel.

Færdig

Der er vi! ? Vi har dækket stort set hele den originale Bitcoin-hvidbog. Dette papir har fungeret som oprindelsen af ​​de blockchain-teknologier, som vi ser i dag. At få en bedre forståelse af dets indhold vil helt sikkert hjælpe dig med at forstå branchens nuværende økosystem.

Jeg håber virkelig, at denne artikel har hjulpet dig ud. I så fald vil klapper blive meget værdsat og lad mig vide i kommentarfeltet nedenfor, hvad dine tanker er om stykket. Jeg ville elske at høre, hvad du synes. Eventuelle forslag, rettelser eller feedback er alle værdsat.

Alt det bedste,

Valentijn | @vvdhout