Bitcoin bijeli papir Satoshi Nakamoto: Temeljita i neposredna šetnja

Kada sam prvi put pročitao originalni bitcoin papir objavljen od strane Satoshi Nakamoto (2008), razjasnio je mnoštvo temeljnih pitanja koja sam imao u vezi s kriptovalutom i blockchainima općenito. Članak, kao što će potvrditi mnogi čitani blockchain i kripto stručnjaci, fantastično je polazište za sve one koji žele saznati više o tehnologiji.

Cilj ovog posta je provesti vas kroz bijelu knjigu, čineći je što probavljivijom za sve koji su novi na terenu. Težit ću pojednostavniti neke dijelove, a istovremeno zadržati točnost sadržaja.

Ne zaustavljajmo se više i zaronimo točno.?

PDF: Bitcoin: Peer-to-peer elektronički sustav gotovine.

Prije nego što započnemo ...

Blok lanac je knjiga ili baza podataka. Distribuira se i održava velikim brojem čvorova (računala), za razliku od toga da ga drži jedno tijelo ili stranka. Cilj tehnologije koja stoji iza kripto valuta poput Bitcoina je omogućiti postizanje sporazuma (konsenzusa) o valjanosti podataka u bazi podataka i podataka koji se dodaju u bazu podataka?. Podaci se u ovom slučaju uglavnom odnose na mrežne podatke o transakcijama koji određuju vlasništvo nad digitalnim sredstvima poput kriptovaluta ili tokena.

Cjelokupna distribuirana knjiga ažurira se i provjerava, a svi sudionici mreže slažu se oko njezine valjanosti. Bez neposrednog zaranjanja u tehnički rad, blockchain protokoli poput onog koji je temelj Bitcoina, omogućuju postizanje ovog sporazuma i provjeru valjanosti bez potrebe za posrednikom treće strane, poput banke?

U prošlosti je takva stranka bila potrebna kako bi se provjerilo vlasništvo nad novcem (tj. Može li ova osoba potrošiti taj novac). Stranka se također pobrinula da se internetsko plaćanje potroši samo jednom. (tj. taj se određeni novac ne koristi u drugoj transakciji). Potonje pitanje je ono što se naziva problemom dvostruke potrošnje .

To je uvijek bilo glavno pitanje za transakcije digitalnom imovinom. Moguće je duplicirati kod koji čini sredstvo i koristiti ga u više transakcija.

Naziv "blockchain" dolazi od načina pohrane podataka. Podaci se prikupljaju u blokovima? koji se dodaju lancu ⛓️ prethodno provjerenih blokova. Uz ovo kao uvod, krenimo odmah k njemu i zaronimo u uvijek poznatu bijelu knjigu.

Sažetak

Sažetak tehničkog papira ide duboko desno od oklade i služi kao mali sažetak članka. Ne brinite ako vam ovo prvo krene preko glave? ‍. Već smo pokrili većinu onoga što trebate znati, a tome ćemo dodati u sljedećem odjeljku.

Jedino što bi se moglo uzeti ovdje bilo bi da članak predlaže ravnopravni elektronički sustav gotovine. Sustav nam omogućuje internetska plaćanja međusobno izravno. Nije potrebno da banka rješava probleme vlasništva i dvostruke potrošnje. ? →? →? ‍ i ❌?

"Čisto peer-to-peer verzija elektroničkog gotovine omogućila bi slanje internetskih plaćanja izravno s jedne strane na drugu bez prolaska kroz financijsku instituciju."

Uvod

"Trgovina na Internetu oslanja se gotovo isključivo na financijske institucije koje posluju kao pouzdane treće strane za obradu elektroničkih plaćanja."

U vrijeme pisanja Bitcoin dokumenta, financijske institucije bile su potrebne da provjere vlasništvo i eliminiraju problem dvostruke potrošnje. To, zajedno s potrebom da transakcije budu reverzibilne (financijske institucije moraju rješavati sporove o posredovanju), povećava troškove povezane s transakcijom. To znači da postoji minimalna veličina transakcije potrebna da bi ih ove financijske institucije mogle izvršiti. Njihova naknada mora pokriti troškove transakcije, barem u suprotnom nema smisla. Ako prije nije bilo jasno: banke doista uživaju zarađivati ​​novac?

"... ograničavanje minimalne praktične veličine transakcije i odsijecanje mogućnosti za male slučajne transakcije."

To eliminira mogućnost za veliku količinu transakcijskih mogućnosti koje teoretski postoje, ali praktički nisu izvedive. Nevjerojatna aplikacija koja nije moguća zbog ove minimalne veličine transakcije je mikro-potrošnja internetskog sadržaja, bilo da se radi o web člancima, videozapisima, glazbi itd. Umjesto da morate plaćati mjesečnu pretplatu, koja se možda i ne isplati, ovisno o potrošnji od strane potrošača, mikro-transakcije omogućile bi korisniku da izvrši nevjerojatno mala automatizirana plaćanja tijekom konzumiranja sadržaja.

To bi radikalno promijenilo način na koji koristimo internet. Plaćate srednje članke po riječi, YouTube videozapise u sekundi, glazbu Spotify u minuti ili čak trošite internetsku propusnost po megabajtu.

Druga moguća primjena bila bi realizacija mikro-plaćanja izravno između uređaja Internet-of-Things. Jednostavan primjer ovdje bi bio parkirani automobil koji plaća svoje parkirno mjesto iz minute u minutu. Postoji bezbroj aplikacija za mikro-potrošnju / transakcije, od kojih će mnoge tek postati očitije u budućnosti. To jednostavno nije moguće ako trebamo posrednika treće strane.

“S mogućnošću preokreta, potreba za povjerenjem se širi. Trgovci moraju biti oprezni prema svojim kupcima i gnjaviti ih za više informacija nego što bi im inače trebalo. "

Drugi razlog zašto potreba za povjerenjem nije idealna prilikom obavljanja internetskih transakcija je taj što se za dobivanje navedenog povjerenja moraju prikupljati osobni podaci, bilo da su to banke ili trgovci putem kojih se vrše plaćanja. Te informacije te organizacije pohranjuju (često na jednom poslužitelju), dajući im kontrolu nad osobnim podacima i čineći ih podacima sklonima curenju ili hakiranju?

Nevjerojatna hakiranja podataka dogodila su se tijekom posljednjeg desetljeća - pomislite na Yahoo i Equifax - i iz dana u dan postaju sve istaknutija. Ono što Bitcoin želi postići je na neki način ponoviti jednostavnost osobne transakcije u internetskom okruženju.

Ako Andy Brendi preda novčanicu od 10 dolara?, Brenda ne mora znati ništa o Andyju (poput osobnih podataka, kreditnih rezultata, neto vrijednosti itd.). Jedino što mora znati je da je 10 dolara prešlo iz Andyjevog posjeda u njezino vlasništvo i da se 10 $ magično nije dupliciralo (? →? ‍ → ??), a Andy ima još jednu (točnu) repliku za trošenje .

"U ovom radu predlažemo rješenje problema dvostruke potrošnje pomoću peer-to-peer distribuiranog poslužitelja vremenskih žigova kako bismo generirali računski dokaz kronološkog redoslijeda transakcija."

Da bi to bilo moguće, osoba (ili ljudi ili stvar) pod imenom Satoshi Nakamoto predstavlja sustav elektroničkog plaćanja koji koristi kriptografski dokaz? ‍? koji svojim članovima omogućuje postizanje sporazuma (konsenzusa) bez potrebe za posrednikom treće strane.

2. Transakcije

"Svaki vlasnik prenosi novčić na sljedećeg digitalnim potpisivanjem hasha prethodne transakcije i javnog ključa."

U svijetu Bitcoina oni koji posjeduju Bitcoin imaju ono što se naziva "novčanikom". Ovo funkcionira pomalo slično klasičnom novčaniku jer "drži" vaš Bitcoin. Uz novčanik povezan je javni ključ . Ovo je adresa na koju se može poslati Bitcoin, baš kao što netko ima adresu e-pošte ili broj bankovnog računa.

Također, postoji još jedan (VRLO važan) ključ koji je povezan s novčanikom koji se naziva privatni ključ ?, A koji funkcionira kao njegova lozinka. Potpisivanje ovim privatnim ključem jedini je način na koji netko može dokazati svoje vlasništvo nad novčanikom, a to je ono što mu omogućuje slanje Bitcoina u tom novčaniku. Izgubite ovaj ključ (i ovisno o vrsti novčanika, početnim riječima), gubite BTC?

Imajte na umu da redoslijed zapravo ide na sljedeći način:

  • Kada se novčanik postavi, taj novčanik generira nasumični privatni ključ.
  • Iz tog privatnog ključa (pomoću algoritma digitalnog potpisa eliptičke krivulje) generira se javni ključ (imajte na umu da to nije moguće pretvoriti natrag u svoj privatni ključ; to je jednosmjerni algoritam).
  • Iz tog javnog ključa (o čemu ćemo razgovarati u odjeljku Privatnost) generira se adresa novčanika.

Posjedovanje Bitcoina ne znači da zapravo imate novčiće u novčaniku. Bitcoin nije dio koda koji posjedujete ili je negdje pohranjen. Vrijednost BTC-a povezana s novčanikom (nazovimo ga ABC123) temelji se na tome koliko transakcija na blockchainu kaže "Adresa PRIMJER890 ... šalje x iznos BTC-a na adresu ABC123", kao i koliko kaže "Adresa ABC123 ... šalje x iznos BTC-a na adresu PRIMJER453 ”.

Drugim riječima, Bitcoin blockchain pohranjuje nevjerojatnu količinu podataka koji određuju tko je koliko poslao na koju adresu? Ti se podaci (tko šalje, koji iznos, tko prima) pohranjuju u pojedinačnim transakcijama. Vlasništvo nad Bitcoinom izračunava se tako da se pogledaju sve transakcije koje dolaze na adresu i one koje izađu.

Ako adresa ABC123 želi potrošiti BTC koji je primljen s druge adrese, mora dokazati da je to dopušteno potpisivanjem transakcije svojim privatnim ključem ? (Ti uvjetni podaci - možete je koristiti samo ako ste potpisali s ispravan privatni ključ - može se naći u prethodnoj transakciji koja je pozvana). Generira se nova transakcija, šalje se BTC i započinjemo iznova. K EEP na umu da je ovo pojednostavljena verzija; neki detalji bit će dodani kasnije.

Osnovno za poneti : Bitcoini nisu stvarni novčići, oni su samo kombinacija transakcija koje dokazuju da morate potrošiti BTC. Privatni ključevi koriste se za potpisivanje transakcija i provjeru vlasništva.

"Problem je naravno što primatelj uplate ne može potvrditi da jedan od vlasnika nije dvostruko potrošio novčić." "Jedini način da se potvrdi izostanak transakcije je biti svjestan svih transakcija."

Potvrđivanje odsutnosti transakcije vrši se emitiranjem svake transakcije na cijelu mrežu? i stvaranje zajedničke povijesti svih prethodnih transakcija (kronološki).

3. Poslužitelj vremenske oznake

"Poslužitelj vremenske oznake radi uzimajući raspršivanje bloka stavki koje treba označiti vremenom i široko objavljujući raspršivanje ..."

Ideja je ovdje prikupiti transakcije koje su javno emitirane u blokove, označiti ih vremenom (dodajući vrijednost vremena?), Dodati neke relevantnije podatke (do toga ćemo doći kasnije) i zatim ih pokrenuti kroz algoritam hashiranja SHA256 .

U osnovi ovo pretvara blok i njegove podatke u niz znakova koji se mogu koristiti za jedinstvenu identifikaciju tog bloka (samo ta kombinacija podataka dobit će tu vrijednost raspršivanja). Svaki novi blok (prije dodavanja i pokretanja kroz SHA256) sada se može vratiti na hash prethodnog bloka u lancu, stvarajući lanac blokova kronološkim redoslijedom. Na taj način svi mogu vidjeti koji su se blokovi (i njihove transakcije) dogodili u prošlosti i kojim redoslijedom.

Ovaj lanac blokova koji su povezani preko njihove hash vrijednosti je ono što čini stvarni blockchain ("blockchain" se često koristi za pozivanje na cijele protokole i sustave, ali zapravo je to stvarni lanac blokova; stvarna baza podataka).

4. Proof-of-Work & 5. Mreža

U redu. Čini se sjajno! Ipak, kako se uvjeriti da su podaci koji se dodaju u lanac zapravo točni? Može li itko jednostavno dodati blokove s transakcijama koje ne postoje? ?

"Da bismo implementirali distribuirani poslužitelj vremenskih žigova na osnovi peer-to-peer, trebat ćemo upotrijebiti sustav provjere rada ..."

Potreban je sustav koji zahtijeva malo posla prije nego što bude mogao dodati ili predložiti novi blok u blockchain. Baš kao i zloglasna CAPTCHA na webu, cilj je stvoriti barijeru gdje postaje teže (i neizvodljivo) slanje neželjene pošte sustavu (ili u slučaju Bitcoina predlažemo lažne podatke). Bitcoin to čini na sljedeći način.

Gore sam spomenuo da se transakcije emitiraju na cijelu mrežu. U ovom trenutku još nisu dodani u lanac. Rudari (oni koji će izvesti "posao" za dodavanje bloka u lanac) izvršit će prethodno spomenuto raspršivanje. Oni prikupljaju te transakcije i stavljaju ih u blok (kao što je Merkle Root, o tome ćemo kasnije razgovarati) zajedno sa gore spomenutom vremenskom oznakom, prethodnim hashom bloka i nekim drugim relevantnim podacima poput visine bloka (koji je blok # u lancu) i više.

Prikupivši sve ove podatke u bloku, provode ih kroz algoritam raspršivanja SHA256. Opet, ono što u osnovi čini jest pretvaranje svih tih podataka u niz znakova koji jedinstveno identificiraju taj blok i njegove podatke. Promijenite sitnicu u podacima bloka i cijelo se raspršivanje mijenja (za to ne postoji poznati obrazac, ali nije slučajan; promijenite ga natrag i dobit ćete potpuno isto raspršivanje).

Pogledajte kako se mijenja hash kada dodam broj "1" u niz znakova.

Bitcoin blockchain ne zahtijeva samo hash; želi hash koji započinje sa (u trenutku pisanja) sedamnaest 0?

Na primjer: 000000000000000006fb217d70740a895ce4966e2826325e31061bc433d7b186

Kako rudari dobivaju taj heš? Moraju dodati broj podacima bloka koji se naziva 'nonce' (dodaju ga baš kao što sam ja dodao "1"). Nitko ne zna koji je broj potreban za pronalaženje ispravnog hasha? ‍. Jedini način da ga pronađete jest pokušaj i pogreška: pogađanje.

"... provodimo provjeru rada povećavanjem nula u bloku dok se ne pronađe vrijednost koja daje hashu bloka potrebnih nula bitova."

Taj se postupak, pogađajući pravi trenutak, naziva 'rudarstvom' ⛏️. Rudari s najvećim CPU resursima (najviše računalne snage) imaju najveće šanse da prvi pronađu taj ispravan izvor.

Sve dok je više od 51% CPU snage u rukama poštenih čvorova, zlonamjernom rudaru bit će nemoguće dosljedno pobjeđivati ​​u procesu rudarstva i dodavati lažne podatke u lanac. Najduži lanac uvijek je lanac koji se uzima kao istiniti lanac.

„... dokaz o radnoj teškoći određuje se pomičnim prosjekom koji cilja prosječni broj blokova na sat. Ako se brzo generiraju, poteškoća se povećava. "

Ovaj postupak dodavanja novog bloka u blockchain događa se svakih 10-ak minuta. To održava stabilnim protokol koji prilagođava poteškoće rudarenja (broj početnih 0) - također se naziva "poteškoća bomba"? - u skladu s tim kako računalna snaga raste s vremenom.

6. Poticaj

Zašto bi rudari uložili sav taj trud i platili puno novca da bi dobili računarsku snagu za rudarstvo?

Jednom kada se blok dogovori, na početak bloka dodaje se dodatna transakcija (koja se često naziva i "coinbase transakcija") koja dodjeljuje novostvoreni BTC na adresu novčanika pobjedničkog rudara, nagrađujući ih za uloženi rad i pružajući način distribucije kovanica u optjecaj? Povrh toga, svaka transakcija u bloku ima malu - barem je to bio cilj - transakcijsku naknadu povezanu s njom koja također ide dobitnom rudaru.

"Jednom kada je unaprijed određeni broj kovanica ušao u optjecaj, poticaj se može u potpunosti prebaciti na naknade za transakcije i biti potpuno bez inflacije."

Preskočit ćemo dio 7 (Povrat prostora na disku) i dio 8 (pojednostavljena provjera plaćanja) i na kraju ćemo kratko razmotriti ove odjeljke. Iako su važan dio načina na koji Bitcoin djeluje, radi razumijevanja srži članka, to su manje.

9. Kombiniranje i razdvajanje vrijednosti

„Da bi se omogućilo razdvajanje i kombiniranje vrijednosti, transakcije sadrže više ulaza i izlaza. Obično će biti ili jedan ulaz iz veće prethodne transakcije ili više ulaza koji kombiniraju manje iznose, a najviše dva izlaza: jedan za plaćanje i jedan koji vraća promjenu, ako postoji, natrag pošiljatelju. "

Nešto čega smo se već dotaknuli ranije je način na koji se sačinjavaju transakcije i kako se izračunava vrijednost adrese.

BTC vrijednost zadržana na adresi u osnovi je zbroj svih njezinih potencijalnih ulaznih transakcija (tj. Vrijednost svih transakcija prema toj adresi koje nisu potrošene ). Kada imatelj adrese želi potrošiti svoj BTC, ne može samo uzeti točno taj iznos i poslati ga. Da bi to učinili, moraju koristiti svoje ulazne transakcije kao cijele komade (otprilike kao što trebate platiti cijelom novčanicom u dolaru, a ne možete je izrezati na komade za plaćanje). Pa što to znači u praktičnom smislu?

Andy se vratio? ali sada ima novčanik s 0,5 BTC. Ova vrijednost dolazi iz tri neutrošena izlaza transakcija (UTXO) (ili budućih ulaznih transakcija; funkcija UTXO kao referenca za ulaznu transakciju za novu transakciju):

a) 0,15 BTC

b) 0,27 BTC

c) 0,08 BTC

Andy želi poslati 0,38 BTC Brendi (sretna Brenda ...?). Kada generira ovu transakciju, Bitcoin protokol uzima potrebne ulaze koji su zajedno jednaki ili veći od (≥) uplate Brendi i koristit će ih kao cjeline za generiranje dvije izlazne transakcije.

U našem primjeru ulazne transakcije a i b koriste se (0,15 + 0,27 = 0,42) za generiranje izlazne transakcije plaćanja od 0,38 BTC prema Brendi, kao i drugu izlaznu transakciju na Andyjevu adresu koja vraća promjenu (0,42–0,38 = 0,04). Obje ove izlazne transakcije mogu funkcionirati kao nove ulazne transakcije za buduća plaćanja nositelja adrese.

Napomena: Uključena je i naknada za rudar / transakciju koja je izuzeta iz jednadžbe. Dakle, promjena koja se vraća je nešto manja.

Osnovno iznošenje : izlazne transakcije zahtijevaju cijele ulazne transakcije koje su zajedno najmanje jednake ili veće od izlazne vrijednosti. Sav višak (Ulazi - (plaćanje + naknada rudara)) vraća se kao promjena i može se koristiti kao nova ulazna transakcija.

10. Privatnost

Već smo ranije razgovarali o postojanju i upotrebi novčanika, javnih i privatnih ključeva. U situaciji kada treća strana pohranjuje naše podatke (poput banke), privatnost se dobiva ograničavanjem pristupa tim informacijama rukovanjem dozvolama i osiguravanjem poslužitelja na kojima su pohranjeni.

Međutim, kao što je prije spomenuto, oni pružaju jednu točku neuspjeha i napada, čineći je sklonom gubitku i hakiranju. Dakle, kako Bitcoin pruža pružanje privatnosti ako se sve transakcije otvoreno emitiraju na cijelu mrežu? ?

"Potreba da se sve transakcije objave javno isključuje ovu metodu, ali privatnost se i dalje može održavati prekidom protoka informacija na drugom mjestu: anonimnošću javnih ključeva."

Ideja je ovdje držati javni ključ anonimnim? ️. Sve dok ljudi ne mogu povezati javni ključ s određenom osobom, ne postoji način da se otkrije njezin identitet.

To se trenutno koristi u protokolu putem generiranja adresa novčanika, pri čemu novčanik može sadržavati više adresa. Umjesto prikazivanja javnih ključeva u podacima o transakciji, koriste se adrese novčanika. Baš kao što se javni ključevi izrađuju na temelju privatnih ključeva pomoću jednosmjernog algoritma, isto se radi za generiranje adrese novčanika iz javnog ključa (pomoću SHA256 nakon čega slijedi RIPEMD160). Ono što nam preostaje (nakon što ga pokrenemo kroz BASE58CHECK kako bismo ga učinili čitljivijim) je adresa novčanika koja se koristi u podacima o transakciji.

"Kao dodatni vatrozid, za svaku transakciju trebao bi se koristiti novi par ključeva kako bi se spriječilo njihovo povezivanje sa zajedničkim vlasnikom."

Bez zaranjanja u detalje, iz jednog privatnog ključa može se generirati više adresa primjenom brojača i dodavanjem povećavajuće vrijednosti kako bi se stvorili podprivatni ključevi (koji se mogu koristiti za stvaranje javnih ključeva koji se zauzvrat mogu koristiti za generiranje adresa novčanika). Na taj način, jedan privatni ključ može dati pristup novčaniku koji ima transakcije koje ulaze i izlaze iz više adresa (ovo se naziva determinističkim novčanikom).

Mnogi softver i usluge Bitcoin obrađuju ovu automatsku izradu adresa novčanika prilikom izvršavanja transakcije, čineći gotovo nemogućim otkrivanje identiteta iza javno emitirane transakcije.

Kratko ćemo prošetati kroz ostatke dijelova bijelog papira, a zatim ga zamotati.

7. Povrat prostora na disku

"Jednom kada je najnovija transakcija u novčiću zakopana pod dovoljno blokova, potrošene transakcije prije nego što se mogu odbaciti radi uštede prostora na disku."

Kada je transakcija zakopana pod dovoljno blokova, što znači da ju je sustav temeljito potvrdio, ne mora nužno stalno čuvati sve podatke o transakciji u bloku. To je moguće bez razbijanja hasha uključivanjem samo Merkleova korijena svih transakcija u hash bloka, a ne i pojedinačnih podataka transakcije. Za više informacija o drveću Merkle? Pogledajte Wikipediju.

Ukratko, sve se transakcije raspršuju i ta se raspršivanja uparuju prije ponovnog raspršivanja, i tako dok ne dođete do nadređenog raspršivača svih transakcija, nazvanog Merkleov korijen.

8. Pojednostavljena provjera plaćanja

Da bi potvrdio plaćanje, korisnik mora biti u mogućnosti povezati transakciju s mjestom u lancu tako što će postaviti upit najdužem lancu blokova i povući granu Merkle u kojoj transakcija postoji. Ako taj korisnik to može učiniti, mogu vjerovati da je transakcija bila valjana s obzirom na to da ju je mreža uključila i da su na njoj izgrađeni daljnji blokovi.

11. Kalkulacije

To uranja u matematičku pozadinu zašto će mreža biti sigurna kada se više od polovice mreže sastoji od poštenih čvorova.

Uglavnom, sve dok postoji više poštenih čvorova nego zlonamjernih čvorova, dok lanac raste, napadaču postaje sve teže i teže generirati zamjenski lanac koji im omogućuje da vrate svoja plaćanja. Što se više blokova doda na vrh određene transakcije, to je manja vjerojatnost da napadač može sustići zamjenski lanac.

Zbog toga često vidimo broj 6 kada govorimo o potvrdama (blokova), koji se u osnovi odnosi na 6 blokova koji se dodaju nakon što je transakcija uključena, a funkcionira kao potpuni prag potvrde.

Gotovo

Evo nas! ? Pokrili smo poprilično cijelu originalnu Bitcoin tehničku knjigu. Ovaj je rad funkcionirao kao geneza blockchain tehnologija koje danas vidimo. Ako bolje shvatite njegov sadržaj, definitivno će vam pomoći da razumijete trenutni ekosustav ove industrije.

Zaista se nadam da vam je ovaj članak pomogao. Ako je tako, pljeskanje bi bilo vrlo zahvalno i javite mi u odjeljku za komentare ispod što mislite o tom djelu. Volio bih čuti što mislite. Bilo koji sugestija, ispravak ili povratna informacija vrlo smo zahvalni.

Sve najbolje,

Valentijn | @vvdhout