For omtrent et år siden da Bitcoin-toget bare begynte å samle damp, snudde en venn til meg og spurte: "Så hvorfor kan du ikke bare kopiere en Bitcoin?"
Dette er en forvirring som mange mennesker har, og en rettferdig en: Begrepet en digital enhet som ikke enkelt kan kopieres, er helt uforståelig. Faktisk er Bitcoin-nettverket en av de kuleste og minst forstått teknologiene i den populære bevisstheten akkurat nå. Det er synd, fordi Bitcoins underliggende mekanikk er veldig grei. Du trenger ikke engang noe hardt matte, hvis du er villig til å ta noen ting på tro.
Vi har dekket tidligere, hva Bitcoin er, hvordan man forklarer Bitcoin til noen. Slik forklarer Bitcoin til noen. Begrepet kryptokurrency er ikke lett å forstå. Hvordan kan man bruke datamaskinen til å "minne" mynter? Hvor kommer pengene fra? Hvem styrer det? Les mer, hvordan du bruker det trygt Hvordan bruke og lagre bitcoins trygt, enkelt og gratis Slik bruker du og lagrer bitcoins trygt, enkelt og gratis Les mer, og til og med skrevet en håndbok om emnet, men vi har aldri virkelig fått inn i hvordan det fungerer . I dag drar vi inn i det "hvordan", og snakker om verktøyene som er nødvendige for å holde "magiske internettpenger" kjørt bak kulissene.
Bitcoin for Poker
Så hvorfor kan du ikke kopiere en Bitcoin? Svaret, for å lage en lang historie kort, er at en Bitcoin egentlig ikke er en streng med data som skal kopieres: det er en oppføring i en distribuert hovedbok som forteller deg hvor mye penger hver person har. Grunnen til at du ikke kan endre storlegen skyldes den fine strukturen til Bitcoin-nettverket - det er mange kopier av storleken, og selve hovedboken er utformet slik at det er vanskelig å tukle med.
For å forstå problemet bedre, tenk at du skulle prøve å implementere en penn-og-papir- bitcoin ( WritCoin ) for et spill med poker med vennene dine. Du er altfor billig til å kjøpe sjetonger, men du vil fortsatt holde oversikt over hvor mye spill penger alle har, og la folk flytte det blant seg selv.
En løsning er å plukke noen som er troverdige for å være rekordmaker for spillet: de noterer seg hver transaksjon når det skjer, forteller om transaksjonen lyktes (dvs. ikke tok noen til en negativ saldo), og kan legge til Alle de vellykkede transaksjonene for å finne ut hvor mye penger alle har til enhver tid. Dette ligner hvordan PayPal og andre sentraliserte betalingssystemer fungerer. Som du kan se, er ideen om å kopiere en valutaenhet ikke veldig fornuftig i dette systemet - rekordmesteren ville ikke tillate det. Legg merke til at rekordmageren er i strømstilling i dette scenariet, og kan velge å gi seg mye penger, stjele en liten del av alle pengene, eller på annen måte misbruke sin stilling.
Forestill deg nå at i stedet for å spille poker med vennene dine, er du fanget i et høyt pokerspillpokerspill, hvor ingen ved bordet stoler på at noen andre skal være opptaker (men du er alt for billig til å kjøpe sjetonger).
Nå har du et problem: fordi det ikke er tillit, vil den sentrale autoriteten ikke fungere lenger. Så, du kommer med den klare ideen om å la noen ved bordet bli en uavhengig rekord keeper hvis de vil. Hver av dem vil legge merke til alle transaksjoner. På den måten, når det kommer tid for å finne ut hvor mye penger noen har, hvis noen minoritetsgrupper av dem bestemmer seg for å lyve om sine poster, vil flertallet fange dem ut. For å holde ting rettferdig, er alle enige om å betale ut en liten belønning til rekordbehandlerne i bytte for sine tjenester. Dette devaluerer alle pengene dine litt, men oppfordrer folk til å bli rekordbehandlere og forhindre svindel - og i motsetning til en enkelt rekordvakt, kan devalueringen av penger styres til et overkommelig nivå. Dette er, i et nøtteskall, kjernen i Bitcoin-nettverket. Et nettverk av uavhengige datamaskiner som kjører spesialprogramvare (Bitcoin miners 5 måter du kan lage og Mine Bitcoin Valuta 5 måter du kan lage og Mine Bitcoin Valuta Den revolusjonerende og kontroversielle betalingsmåten har gjort overskrifter. Det er mange grunner til at du kanskje vil ha for å begynne å utføre transaksjoner ved hjelp av Bitcoins. Men først må du tjene litt for deg selv. Les mer) Sørg for å holde oversikt over hver transaksjon som noen gang har skjedd i nettverket. Til gengitt har de sjansen til å bli belønnet hver gang de bekrefter en gruppe transaksjoner. For å bruke penger, snakker du bare til nettverket og informerer dem om ønsket om å gjøre det. De noterer transaksjonen i loggene sine (hvis du har nok penger til å lykkes med å gjøre det), og fortsett.
Bitcoin og kryptografi
Selvfølgelig er det ikke så enkelt i praksis. Tenk på problemene med å prøve å flytte WritCoin til Internett. Nå, plutselig, trenger du en måte å bevise at det virkelig er at du gjør en transaksjon (i virkeligheten kan du se hvem som gjør transaksjonsforespørsler - ikke så på Internett). Også på Internett, med et stort nettverk, er det vanskelig å konsultere hver eneste Bitcoin-minearbejder som eksisterer for å finne ut hvor mye penger alle har. Det ville være fint hvis du bare kunne snakke med noen av dem og fortsatt kunne fortelle hvilken av dem som var ærlig. Det er to kryptografiske verktøy som gjør disse tingene mulige på Internett: digitale signaturer og arbeidsbevis .
Signerte transaksjoner
En kryptografisk signatur er en smart applikasjon av asymmetrisk kryptering, og det virker som dette: Fra et enkelt hemmelig stykke informasjon kan du gjøre et sett med matematiske operasjoner som produserer to deler av informasjon (kalt en offentlig og en privat nøkkel) at alt kryptert (kryptert i gibberish) av den private nøkkelen kan bare dekrypteres (unscrambled) av den offentlige nøkkelen. Videre, når disse nøklene er produsert på riktig måte, er det ikke mulig å finne ut hva den private nøkkelen er, selv om du kjenner offentlig nøkkel. Forklare hvordan disse faktisk fungerer, krever matematisk abstrakt algebra og ligger langt utover denne artikkelen. Hvis du vil lære mer, sjekk ut Wikipedia-artikkelen om elliptisk kurvekryptografi, kryptosystemet som brukes av Bitcoin.
Tenk deg, for et øyeblikk, at du har en privat nøkkel og offentlig nøkkel som du regelmessig bruker. Du kan publisere den offentlige nøkkelen (som ser ut som en tilfeldig streng av gibberish), og koble den til din identitet. Deretter, når du postet noe på nettet, kan du ta beskjeden din, kryptere den med din hemmelige private nøkkel, og publisere både den krypterte versjonen og den opprinnelige meldingen ved siden av. Så, hvis noen ville se om du faktisk skrev det, kunne de ganske enkelt bruke din offentlige nøkkel til å dekryptere den krypterte versjonen og sammenligne den med meldingen. Hvis de ikke samsvarer, vil leseren vite at meldingen din hadde blitt manipulert. Med andre ord, hvis et ondsinnet parti ville erstatte meldingen med seg selv, ville de ikke ha mulighet til å generere en samsvarende kryptert versjon av teksten, fordi de ikke kjenner din private nøkkel. Den krypterte versjonen av meldingen (eller, mer typisk, en kryptert hash av meldingen, som vi diskuterer om et øyeblikk), knyttet til selve meldingen, kalles en digital signatur .
Digitale signaturer er hvordan transaksjoner er verifisert i Bitcoin. Du har kanskje hørt om en "Bitcoin lommebok." En Bitcoin lommebok er bare et bestemt offentlig / privat nøkkelpar. Hvis du vil ha en Bitcoin-lommebok, velger du bare et hemmelig stykke informasjon (du kan bruke en passordfrase, eller få datamaskinen til å gjøre en streng nonsens), og bruk den til å generere din offentlige og private nøkkel. Ditt offentlige / private nøkkelpar er lommeboken din - hvis folk vil sende deg penger, gir du dem din offentlige nøkkel, og de forteller nettverket at de vil sende penger til lommeboken som svarer til den offentlige nøkkelen. Hvis du vil sende penger fra lommeboken, forteller du nettverket som - og skriv det med din tilhørende private nøkkel. Således, med mindre noen får ahold av enten din private nøkkel eller din opprinnelige hemmelighet, er det ingen måte for dem å falske transaksjoner fra deg.
Proof-of-arbeid
I kryptografi er det også et verktøy kalt en hash-funksjon. En hash-funksjon tar bare en stor mengde informasjon som en inngang, og krypterer den ned til en kort streng tull (lengden på utgangen er alltid den samme, og avhenger av hvilken funksjon du bruker). Hash-funksjoner er følsomme, ved at enhver liten endring i de opprinnelige dataene helt og uendelig endrer strengen av nonsens ("hash"). Som et resultat av dette har hashfunksjoner den unike egenskapen å være enveis - gitt et stykke informasjon, kan du enkelt ha det, men gitt en bestemt hash, det er ingen måte å jobbe bakover for å finne ut hva slags informasjon som var hashed å lage den, unntatt ved å gjette tilfeldig. For å lære mer, sjekk ut Wikipedia-artikkelen om hash-funksjoner.
Hash funksjoner er veldig nyttige! Programmet som er mest relevant for Bitcoin kalles "proof of work", som er en måte å bevise noen andre på at en viss mengde beregningsarbeid har blitt brukt. Hvis noen velger et ord tilfeldig (si "doppelganger"), og du svarer med et stykke informasjon hvis hash skjer for å være "doppelganger" (eller en streng som er tilstrekkelig lik den), så vet de at du brukte mye tid gjette før du endelig fant et stykke informasjon som fungerte. Dermed har de bevis på at du har utført en viss mengde beregningsarbeid. Dette kan brukes til å hindre e-post spam, ved å tvinge alle som prøver å sende deg en e-post for å fullføre et lite bevis på arbeid basert på e-postadressen din, e-postadressen din og tidspunktet. Dette arbeidsbeviset kan være veldig enkelt, slik at det ikke er noen ulempe for det vanlige folk som sender noen få e-postmeldinger om dagen, men blir upraktisk dyrt for bulkmailere.
I Bitcoin brukes proof-of-work for å forhindre folk i å lyve. Det virker slik: Når en gruvearbeidere ønsker å legge til en blokk med transaksjoner i sin hovedbok, tar de hele blokkkjeden (en liste over alle transaksjoner som har skjedd til dato som gruvearbeideren kunne verifisere var gyldig), og legg til det siste gruppe av transaksjoner til den. De har da alt sammen, og begynner å gjøre bevis for arbeidet for den verdien - gjette verdier til hash for å prøve å finne en ny verdi som er tilstrekkelig nær målverdien. Mens de gjør dette, gjør gruvearbeidere over hele verden nøyaktig det samme, konkurrerer om å være den første til å finne et bevis på arbeid som er "godt nok" (en standard som øker automatisk for å holde tritt med Moores lov og vekst av nettverket). Den første som kommer dit, får en fallfall (for tiden 25 Bitcoins eller ca 15 600 kroner ved skrivingstid) i bytte for sin tjeneste, og deres vellykkede blokk blir distribuert til alle de andre gruvearbeidere, og blir et permanent tillegg til blokkkjeden.
Konsekvensen av dette er at hvis du ønsker å generere en falsk Blockchain, må du reprodusere alle de proofs of work som gjøres av nettverket, noe som er dyrt. Jo lenger tilbake du vil redigere noe, jo flere proofs-of-work basert på den informasjonen du må gjenta. Det er svært lite sannsynlig at alle kan produsere bedre og raskere beviser på arbeid enn hele det legitime Bitcoin-gruvedriftnettverket, noe som betyr at blokkkjeden som har fått mest mulig bevis på det, er den legitime. En annen måte å si dette på er at det er vanskelig å ligge i Bitcoin-nettverket, fordi det krever mye beregnende kraft for å generere en riktig strukturert løgn. Det betyr at hvis du vil ha en nøyaktig blokkkjede, trenger du ikke å snakke med hver Bitcoin miner og la dem stemme - du kan bare snakke med noen få tilfeldige gruvearbeidere, få blokkene sine, og hvis det er konflikt, aksepterer du versjon med mest, sterkeste bevis på arbeid, og det er en veldig god sjanse for at det blir den virkelige.
Bitcoin i et nøtteskall
For å oppsummere: Bitcoin lommebøker er offentlige / private nøkkelpar. Enhver offentlig nøkkel kan sende penger til en annen offentlig nøkkel, ved å gjøre en erklæring til nettverket, signert med den tilhørende private nøkkelen. Denne utsagnet sendes til hverandre, blant alle gruvearbeidere, som alle forsøker å generere proofs of work for alle transaksjonene de har registrert til dags dato. Hver gang en av dem genererer et tilstrekkelig godt bevis for arbeid, blir de tildelt med noen Bitcoins, og deres blokk blir en del av den offisielle distribuerte hovedboken. Ved å legge opp transaksjonene i alle blokkene, kan du finne ut hvor mye penger du har - eller noen andre. Rekordet er vanskelig å tukle med, på grunn av vanskeligheten med å produsere proof-of-work raskere enn resten av nettverket.
Det er (ganske mye) det. Når du forstår kryptografiske primitiver i spill, er ideen ganske grei. Det bør imidlertid ikke antas at det ikke er bemerkelsesverdig. Konstruere en protokoll som tvinger tusenvis av mennesker over hele verden til å håndtere hverandre ærlig, til tross for deres beste innsats mot det motsatte, er en stor seier for kryptografi, og en av de kraftigste ideene de siste årene.
Bildekreditter: Waterloo Dogs Playing Poker, Asymmetrisk kryptografi, Hashfunksjon, Wikimedia, Reservoir Dogs, fra EW.com