Cointerra annonserer goldstrike1 asic

CoinTerra Engineering Update: TerraMiner IV Hashing Live (Mars 2019).

Anonim

Forfatteren av denne artikkelen er grunnleggeren og sjefforsker i Ethereum-prosjektet.

I forrige uke kom Adam Back og Austin Hill ut med en kunngjøring om Let's Talk Bitcoin, der de annonserte sitt nyeste prosjekt: "sidekjeder". Ideen, de beskrev, ville tillate eksistensen av alternative blokkkjeder, kanskje med forskjellige regler som tillater ulike typer tilleggsfunksjoner eller transaksjonstyper, men med en valutaenhet hvis verdi er knyttet til den av bitcoin. Hensikten er å tillate eksperimentering med forskjellige utvidelser til Bitcoin-protokollen, ved hjelp av separate nettverk for å unngå risiko for Bitcoin selv, mens den fortsatt bruker samme underliggende valutaenhet. Så snart ideen ble annonsert, har det vært en stor mengde offentlig interesse i konseptet, og har gitt nytt håp om at Bitcoin-protokollen potensielt kan bli mye kraftigere enn den er i dag.

Under hetten

Tanken bak sidekjeder er ikke ny; Konseptet har eksistert siden minst i fjor i desember, og en forløper til ideen har eksistert i flere år før da. Forløperen, en protokoll som kalles enveis-pegging, var en mekanisme som teoretisk kunne brukes til å styre en overgang fra "Bitcoin 1. 0" til "Bitcoin 2. 0", og fungerte som følger. Anta at i Bitcoin 1, 0, 13 millioner valutaenheter allerede er utstedt gjennom gruvedrift, med 8 millioner fortsatt igjen å gi ut. Distribusjonsmodellen for BTC2. 0 ville frigjøre 8 millioner enheter gjennom gruvedrift, i henhold til nøyaktig samme tidsplan som BTC1. 0 etter det punktet, men de andre 13 millioner ville bli distribuert gjennom en mekanisme kjent som "proof of burn".

I hovedsak ville man ta en enhet av BTC1. 0, send den til en unspendable adresse (f.eks. 1111111111111111111114oLvT2 ), og send inn et kryptografisk bevis på at denne transaksjonen fant sted, signert med den samme private nøkkelen som sendte transaksjonen, som en transaksjon i Bitcoin 2. 0 I henhold til Bitcoin 2.0-protokollen vil dette gi brukeren rett til å motta en enhet på 0. Dette kalles en "enveis-peg" fordi verdien av en BTC2. 0 kan være høyst lik en BTC1. 0; ellers ville folk arbitrage forskjellen ved å konvertere bitcoins over på 1: 1-rate. Men bortsett fra å selge BTC2. 0 for BTC1. 0 på markedet, er det ingen måte å gå tilbake, så hvis eksperimentet mislykkes i verdien av BTC2. 0 kunne falle til null.

Bitcoin sidekjeder bruker en forbedret versjon av dette systemet kalt "toveis pegging", som fungerer som følger. For å motta en enhet av BTC2. 0, en ville trenge å ta en enhet av BTC1. 0 og send det til et "skript" som vi vil ringe til X og forlate ubeskrevet for nå. Et skript i Bitcoin er en adresse som i stedet for å være eid av en privatnøkkel, virker som en lockbox som bare låser bitcoinsene når den får en transaksjon som tilfredsstiller visse forhold.For eksempel kan man ha et skript som frigjør midlene til den første personen som sender et femtiosifret primall som består helt av tallene 3 og 5. Gjør transaksjonen og publiserer et kryptografisk bevis for at en slik transaksjon ble gjort til Bitcoin 2. 0 blokkkjeden gir brukeren rett til en enhet av BTC2. 0.

Nå er definisjonen av X enkel: X låser opp midler (husk, dette er en enhet av BTC1. 0) hvis det er gitt et gyldig kryptografisk bevis at avsenderen ødela en enhet av BTC2. 0. Det eksisterer således en mekanisme for å konvertere BTC 1. 0 til BTC2. 0, og at selve mekanismen skaper en annen mekanisme, begrenset i verdi til totalt antall BTC2. 0 opprettet, som kan brukes til å konvertere BTC2. 0 tilbake til BTC1. 0. Dermed toveis peg.

Mekanismen som disse "kryptografiske bevisene" bruker, er avhengig av en kryptografisk konstruksjon som brukes i Bitcoin, kalt et Merkle-tre. I en Bitcoin-blokk, i stedet for å bare ha hver transaksjon blokkene direkte, er det bare en enkelt 32-byte-hash som faktisk er inkludert i blokkhodet. Denne 32-byte hasen er selv beregnet fra to andre 32-byte hashes, som hver kommer fra to andre 32-byte hashes, og så videre til slutt verdiene nederst er transaksjonene selv. Det er nettopp punktet med denne mekanismen for å tillate eksistensen av kompakte bevis på at en bestemt transaksjon er i en bestemt blokk; alt det man trenger er den ene grenen av hash som går opp fra denne transaksjonen til rotnoden, eller totalt 10 hash for 1000 transaksjoner eller 20 hash for en million transaksjoner. Dette er umulig å smi hvis du prøver å endre enda en enkelt transaksjon i treet, forandrer forandringene seg opp gjennom hashene til endelig blir rotnoden helt annerledes.

Dette løser imidlertid ikke problemet helt, alt det forteller deg er at noen blokk, et sted, inneholder en gitt transaksjon. Det forteller deg ikke at transaksjonen er i hovedkjeden; i virkeligheten kunne de samme bitcoinsene som ble brukt i transaksjonen allerede blitt sendt til en annen kilde, noe som gjorde transaksjonen ugyldig. Det er to måter å løse dette på. En tilnærming, og langt enklere, er for bevismekanismen i Bitcoin 2. 0 å spørre, ikke bare for Merkle-tregrenen, men også for blokkeringen som går tilbake seks blokker, som en kjøpmann som ber om seks bekreftelser ved å bruke gruvedrift som en proxy for gyldighet. For høyere sikkerhet kan et mye større antall blokker som seksti være påkrevd. Denne tilnærmingen er enkel, og synes å tilfredsstille alle nødvendige parametere.

Utfordringer

Ovenstående mekanisme er imidlertid som beskrevet svært ufullkommen. Når en vanlig kjøpmann ber om seks bekreftelser, må det trekkes av et dobbeltbruddssangrep mot den handelsmannen som produserer seks kvartaler raskere enn resten av nettverket kombinert i sanntid, en oppgave som krever at minst 30% av total nettverks hashpower skal fungere med noen ubetydelig suksessrate. Med den ovenfor beskrevne toveisbindingsmekanismen kan en ondsinnet gruvearbeidere med enda 1% hashpower imidlertid generere seks blokker, eller til og med seksti blokker, til slutt, og deretter bruke disse blokkene til å kreve svikt på alle BTC1.0 som er satt inn i BTC2. 0 lockboxes (eller, i motsatt retning, krever ubegrenset antall BTC2. 0). En mulig oppdatering som kan komme i bakhodet er å kreve samme person som opprettet lockboxen for å åpne den, og dermed begrense mengden skade som kan gjøres per person, men dette vil ikke løse problemet fordi den ondsinnede gruveenheten lett kan samle seg med noen ellers. Det grunnleggende problemet, at det ikke er mulig å finne frem til en mekanisme for validering av blokkkjeden som ikke oppdaterer seg over tid, er enten svært vanskelig å løse eller sannsynlig ikke kan løses mens du bare bor i Bitcoins "static lockbox" skriptparadigm.

En annen tilnærming, en som kan løse dette problemet uten overdreven vanskelighet, er mer komplisert og påtrengende. Det krever i det vesentlige det som kalles en "lysklient" for Bitcoin 1. 0 til Bitcoin 2. 0. Lysklienten er lettest beskrevet som en langsiktig "kontrakt", et program på blockchain med en stor mengde interne tilstand som kjører hver gang en transaksjon blir sendt til den, ville det akseptere blokker og verifisere blokkeringshoder på akkurat samme måte som en Bitcoin-klient på mobiltelefonen din ville. Denne kontrakten vil da holde en løpsliste over alle blokkhodene i Bitcoin 1. 0, og for å motta en BTC2. 0 man må sende inn et kryptografisk bevis for at du har gjort den nødvendige transaksjonen i BTC1. 0 i kontrakten, sammen med et depositum på 0. 1 BTC2. 0.

Kontrakten vil kontrollere at beviset er gyldig, ender opp i en blokk som er i kontraktens egen interne mini-blokk, og vent deretter på en av to ting som skjedde. Først, en gang tretti mer Bitcoin 1. 0 blokker blir lagt til i kontrakten, det ville frigjøre en enhet av BTC2. 0 til avsenderen pluss depositumet. Alternativt, hvis noen andre sender et kryptografisk bevis på at transaksjonen er ugyldig uansett grunn (for eksempel det tilbringer bitcoins som ikke eksisterer) innen den tiden, vil de motta depositumet.

Dette ville løse sikkerhetsproblemet, men har en viktig feil: det kan ikke gjøres i Bitcoin-protokollen som det står. Det er ganske enkelt å implementere i en protokoll som Ethereum, fordi den er spesielt utformet for kontrakter, men Bitcoins skriptfunksjonalitet tillater ikke at det eksisterer kontrakter som har intern stat, slik at dette inne i Bitcoin vil kreve en meget betydelig forandring til Bitcoin 1. 0-protokollen. Til slutt, kan tilnærmingen tatt av Austin Hill og Adam Back kanskje ikke se akkurat som en av disse strategiene; Den rene kompleksiteten av problemet viser imidlertid at det fortsatt er mange utfordringer som ligger foran.

Mining

Et annet viktig spørsmål er: hvordan sikres disse sidekjedene? Standardmekanismen for sikring av blokker er gruvedrift, men gruvedrift krever en mekanisme for å belønne gruvearbeidere på den kjeden. I en sidekjede må hver enhet i sidekjeden-valutaen støttes av en script-lockbox som inneholder en BTC-enhet på Bitcoin-blokkkjeden, så det er ingen enkel mulighet til å utstede sidekjedenes valutaenheter fra ingensteds.Det er to muligheter for dette: demurrage (dvs. en prosentandel per år skatt på alle BTC på sidekjeden) og transaksjonsgebyrer. Imidlertid gir begge disse en ganske lav inntekt, og det er derfor ikke sikkert at vanlig gammel uavhengig gruve vil løse problemet.

Det er to metoder for å komme seg rundt dette problemet. En tilnærming er å få sidekjeden sikret ved bevis på innsatsen, ved å bruke de små inntektene fra transaksjonsgebyr for å kompensere deltakende interessenter med en rente. Denne tilnærmingen vil imidlertid være svært vanskelig å implementere i en sidekjede, fordi beregningene som er involvert i validering av bevis for innsats, er sannsynligvis for komplekse til effektivt å implementere direkte på en blokkkjede. Den andre tilnærmingen, og den som fremmes av Adam Back og Austin Hill, kalles "fusjonen" I hovedsak inneholder gruvearbeidere i Bitcoin data fra både Bitcoin-blokken og Namecoin-blokken, slik at gruvearbeidere gir sikkerhet for begge kjedene samtidig som de bruker den samme beregningsinnsatsen.

Som forklaret av Bitcoin-utvikleren Peter Todd, har konseptet for sammenslåing imidlertid en svært viktig sikkerhetsfeil: med mindre de fleste Bitcoin-gruvearbeidere er enige om å fusjonere en bestemt kjede, er denne kjeden sikkert ikke sikker i det hele tatt . For å forstå hvorfor, bør du først vurdere saken om et mer tradisjonelt altcoin, i vårt eksempel som kjører SHA256 for enkelhet (hvis altlinjen bruker en tilpasset algoritme, kan Litecoin miners trekke av angrepet i stedet). Hvis altcoinet har 5% av iskjernen til Bitcoin, må det for å angripe kjeden via et dobbeltbruk minst 5% av Bitcoin-nettverket være nødvendig å omdirigere seg automatisk til gruvedrift på aggregatet. Dette er potensielt mulig, men er et kostbart trekk: mens angrepet er på plass, vil Bitcoin-gruvearbeidere miste inntektene fra gruvedrift på Bitcoin. I tilfelle av en sammenslåing av sidekjeden, er imidlertid gruvedrift på hovedlinjen til en sidekjede eller angrepet, begge kostnadseffektive, så det ville ikke være noe økonomisk uhell å angripe den alternative kjeden. Dette er ikke bare en formodning; Det har vært egentlige eksempler på gruvebassenger som angriper fusjonsmessige kjeder i virkeligheten.

Bortsett fra sikkerhet utelukker denne avhengigheten av sammenslåing også en annen foruroligende begrensning av sidekjeden-ideen: mens kryptocurrencyens ånd er uten tvil det med lovfri innovasjon, krever en sidekjede tillatelse og aktiv assistanse på 50 % av alle Bitcoin gruvebassengoperatører. Disse begrensningene til sammen antyder at sidekjederprotokollet, mens det er bra for mange brukssaker, absolutt ikke vil være ideelt for alle.

The Promise

Hvis de tekniske problemene rundt sidekjeder kan løses, hva er løftet de tar med? Akkurat nå kan utvikling av kryptokurrency i hovedsak klassifiseres i fire kvadranter. Den første kvadranten består av prosjekter som bruker Bitcoin-valutaen og Bitcoin-blokkkjeden - i hovedsak Bitcoin selv. Den andre kvadranten er protokoller som bruker Bitcoin-blokkkjeden, men ikke Bitcoin-valutaen; Mastercoin, fargede mynter og motpart er gode eksempler på dette.Den tredje kvadranten bruker både en uavhengig valuta og en uavhengig blokkkjede; Dette inneholder applikasjoner som (for å ta vidt forskjellige eksempler) Ripple, Litecoin og NXT. Nå, med sidekjeder, er den siste kvadranten også fylt: bruker et uavhengig nettverk, men bruker Bitcoin som underliggende valuta.

Det vil være interessant å se hvilke applikasjoner som nisje fungerer best for. For hele nye økosystemer er det sannsynligvis ikke riktig tilnærming; det gir lite mening for et helt uavhengig nettverk som Ripple eller Ethereum for å knytte sitt viktigste interne token til Bitcoin økonomisk og få de to til å bli utsatt for hverandres prisbevegelser. I tilfelle av en slik stor innsats, er det også ofte fornuftig å eksperimentere med ulike pengepolitikker; Ethereums eter har en lineær utstedelsesmodell som løser et bestemt fast antall valutaenheter hvert år, mens Ripple utgitt alle 100 milliarder enheter av XRP til Ripple-organisasjonen på en gang, og organisasjonen frigjør dem over tid til utviklere, investorer og personer som deltar i distribuerte databehandlingsprosjekter. For en gaffel som er ment å tjene som en viktig protokollendring, for eksempel oppgradering fra SHA256 til SHA3 eller i tilfelle av kvante datamaskiner fra ECDSA til Lamport signaturer eller NTRU, er det helt klart helt fornuftig. For alt i midten, vil det være opp til en sak for hvert tilfelle å finne ut.

For Ethereum er det spesielt viktig å huske på: Ethereum er en allsidig kryptografisk konsensusplattform, ikke et spesifikt "altcoin". Derfor kan man ha mange forskjellige valutaer som eksisterer på Ethereum-plattformen som kontrakter; man kan ha kjedelige gamle faste forsyningsvalutaer, valutaer med en pengepolitikk forvaltet av en desentralisert selvstyrende organisasjon, valutaer som eksisterer for å subsidiere vitenskapelig forskning eller gi grunnleggende inntekt, og til og med valutaer med innebygd toveis-mekanisme til fungere som sidekjeder. Eterum kan således ikke nøyaktig bli pigeonhullet inn i enten sidekjedekvadranten eller Ripple / Litecoin / NXT-kvadranten; det finnes i begge deler.

Faktisk er det meget sannsynlig at så snart Ethereum-geneseblokken lanserer, vil det være sidekjeder for Bitcoin, Litecoin og Dogecoin implementert som kontrakter innen tre måneder. Hvis sidekjeder kan bli vellykket og sikkert implementert, betyr dette at Ethereum kan bli den foretrukne måten å lagre BTC, LTC eller DOGE ved hjelp av kraftige multisignaturlagerkontrakter som involverer funksjoner som tilbaketaksgrenser. Mellom kontrakter på en allmennkjede kjede, høyverdige spesialmåler, sentral-sentraliserte OpenTransactions-servere, sidekjeder og Bitcoin i seg selv, blir det en ting: Cryptocurrencies skal kunne samarbeide som aldri før.