Segregerat vittne

Segregated Witness (förkortat SegWit) är en implementerad protokolluppdatering utformad för att lösa problemet med plasticitet av Bitcoin blockchain- transaktioner , samt öka dess genomströmning . En liknande uppdatering har implementerats för några andra kryptovalutor som Litecoin , DigiByte , Groestlcoin och Vertcoin . [ett]

SegWit är en " soft fork " och låter nätverket fungera som tidigare. Strukturen för datalagring i blocket och mekanismen för att verifiera transaktioner för fullfjädrade nätverksnoder förändras dock. Signaturer och skript är nu uppdelade i en separat struktur som kallas ett segregerat vittne .  Detta gör att huvudblocket kan ta emot fler transaktioner, och eliminerar även variationen i ID:t för samma transaktion. [ett]

Historik

Problemet med skalbarhet

2010 införde Satoshi Nakamoto en blockstorleksgräns på 1 megabyte . Begränsningen förbättrade kompatibiliteten för nätverksnoder, samt minskade effektiviteten av DDoS- attacker, men minskade den maximala nätverksgenomströmningen till 3-7 transaktioner per sekund. Det senare hade ytterligare en negativ inverkan på nätverkets förmåga att skala. Med tillväxten av användarbasen och antalet överföringar började också förseningarna växa - vissa transaktioner stod i kö i flera dagar. Detta ledde också till högre överföringsavgifter, vilket drastiskt minskade Bitcoins attraktivitet för små betalningar. [2]

Det föreslogs att öka blockstorleken, som implementerades i Bitcoin-gafflar som Bitcoin XT , Bitcoin Classic , Bitcoin Unlimited , Lightning Bitcoin och de mest framgångsrika Bitcoin Cash . [3] [4]

Transaktions plasticitet

Ett annat akut problem med Bitcoin-nätverket var den så kallade transaktionsplasticiteten . Den normala strukturen för en Bitcoin-transaktion innehåller en kryptografisk signatur , som gör att andra deltagare i nätverket kan kontrollera om ägaren till bitcoins verkligen hade för avsikt att spendera den. Signaturen beräknas baserat på den privata nyckeln för varje transaktion, vilket utesluter att data för själva transaktionen ändras. Transaktions-ID:t är dess hash , som beräknas baserat på hela transaktionsblocket. Den minsta förändringen i en transaktion ändrar dess identifierare. [5] Det är faktiskt möjligt att modifiera en transaktion samtidigt som den lämnas giltig (till exempel genom att lägga till valfria verktygskonstanter till signaturen som inte väsentligt ändrar skriptet). [6] Samtidigt kommer dess identifierare att ändras, vilket innebär att den modifierade transaktionen kommer att betraktas som helt ny och dessutom kommer att kunna verifieras av andra nätverksnoder. [5]

Vilken nod som helst i nätverket kan modifiera transaktionen och sända den till andra. Om den ändrade transaktionen ingår i huvudgrenblocket före den ursprungliga, eller om den senare dyker upp i en längre gren, kommer den ursprungliga transaktionen att avvisas, eftersom den kommer att referera till den utdata som används (och de som refererar till den kommer också att avvisas). [7] Detta skapar många problem, eftersom vissa system kontrollerade att betalningen gjordes av identifieraren. Det komplicerar också implementeringen av teknologier på högre nivå som är baserade på Bitcoin blockchain . [5]

Utvecklarna har försökt lösa det här problemet tidigare, men det fixades aldrig helt förrän SegWit-uppdateringen. [8] [9]

Det antas att med hjälp av transaktionens plasticitet drogs 64 564 BTC "olagligt" tillbaka från den en gång populära MtGox- plattformen [10] . Bitcoin Cash -nätverket drabbades av en massiv attack mot transaktionens formbarhet kort efter " hårda gaffeln ". [elva]

Födelsedagsattacken

Bitcoin multisig -adresser använder P2SH och är säkrade med HASH160 ( SHA-256- hash inuti RIPEMD-160 [12] ). Om en angripare äger minst 1 nyckel från multisignaturlistan kan han, med hänsyn till hashkollisionen , minska antalet sökalternativ till 280 , vilket redan är möjligt för moderna datorsystem [13] .

Segregerat vittne

För att lösa båda de ovannämnda problemen har en Segregated Witness-uppdatering föreslagits. Summan av kardemumman är att placera transaktionssignaturer i en struktur med samma namn utanför huvudblocket, vilket väsentligt avlastar det senare, eftersom signaturens storlek var mer än 50 % av storleken på hela transaktionsblocket. Det löser också problemet med transaktionsplasticitet, eftersom signaturerna inte längre påverkar hash-identifieraren. [1] [14]

Men nu, för att verifiera alla transaktioner, måste noden ladda ner det utökade blocket (huvudblock + fristående vittne). Noden informerar specifikt sina grannar om dess beredskap att acceptera det utökade blocket. De återstående noderna accepterar byggstenar på 1MB, förutsatt att transaktioner inte behöver signeras. Signaturblocket är länkat till huvudkedjan med hjälp av ett Merkle-träd som finns i blockhuvudet. Från alla signaturer, såväl som från alla transaktioner, övervägs hash och läggs in i trädet. Den totala hashen av signaturer läggs till hashen för den första transaktionen (myntbastransaktionen) i Merkle-transaktionsträdet. [1] [14]

Ett utökat block är teoretiskt begränsat till 4 megabyte, men den faktiska maximala blockstorleken är strax under 2 MB. [femton]

SegWit använder SHA256-säkrad P2WSH istället för P2SH för att säkra MultiSig- plånböcker . Detta gör attacken "födelsedagar" svårare till 2128 . [13]

Aktivering

Segregated Witness föreslogs av Pieter Wuille i slutet av 2015. Releasen skedde i oktober 2016 - 6 månader före schemat. Aktivering var tänkt att ske efter att ha passerat tröskeln på 95 % för deltagare som signalerade stöd för uppdateringen. Men några medlemmar av nätverket har sagt att de bara kommer att stödja uppgraderingen om en ökning av huvudblockstorleken läggs till (kinesiska pooler kan ha blockerat införandet av SegWit.). [1] Den 23 maj 2017 undertecknade gruvarbetare och utvecklare New York-avtalet [16] , som föreskrev en ökning av huvudblockstorleken till 2 MB inom 6 månader (denna uppdatering kallades SegWit2x). SegWit aktiverades den 24 augusti 2017. [ett]

Vissa altcoins har också beslutat att implementera SegWit. Eftersom många altcoins är baserade på Bitcoins kod var detta inte alltför svårt för utvecklarna. Den första av dem aktiverade Groestlcoin- uppdateringen i januari 2017. [ett]

Fördelar

Nackdelar

Vidareutveckling

Den 8 november försenades SegWit2x " hårdgaffel " på obestämd tid på grund av bristande konsensus . [19]

SegWit-uppdateringen gör det mycket enklare att utveckla och implementera tillägg, samtidigt som de ökar deras säkerhet och effektivitet. [1] Lightning Network är planerad att lanseras snart . [13] En lösning utvecklas för att öka flexibiliteten hos Merklized Abstract Syntax Tree (MAST) smarta kontrakt, vilket också förbättrar skalbarheten och förbättrar integriteten. [tjugo]

Anteckningar

  1. 1 2 3 4 5 6 7 8 9 10 11 Den långa vägen till SegWit: Hur Bitcoins största protokolluppgradering blev verklighet . Hämtad 14 december 2017. Arkiverad från originalet 14 december 2017.
  2. Satoshis bäst bevarade hemlighet: Varför finns det en gräns på 1 MB för Bitcoin-blockstorlek . Hämtad 24 december 2017. Arkiverad från originalet 24 december 2017.
  3. Ett kontroversiellt Bitcoin-alternativ söker en comeback . Hämtad 24 december 2017. Arkiverad från originalet 1 december 2017.
  4. Skillnader mellan Bitcoin Cash och Bitcoin . Hämtad 24 december 2017. Arkiverad från originalet 24 december 2017.
  5. 1 2 3 Transaktionens formbarhet förklaras
  6. Bitcoin-transaktionsformbarhetsteori i praktiken . Hämtad 14 december 2017. Arkiverad från originalet 14 december 2017.
  7. Bitcoin-utvecklarguide . Hämtad 25 december 2017. Arkiverad från originalet 28 december 2017.
  8. Vem, vad, varför och hur för den pågående transaktionens formbarhetsattack . Hämtad 24 december 2017. Arkiverad från originalet 24 december 2017.
  9. Bitcoin Core version 0.10.0 släppt . Hämtad 24 december 2017. Arkiverad från originalet 24 november 2017.
  10. Studie: Mt. Gox kan ha förlorat bara 386 BTC på grund av transaktionens formbarhet . Hämtad 23 december 2017. Arkiverad från originalet 23 december 2017.
  11. Bitcoin Cash-nätverk under attack
  12. Skript - Bitcoin Wiki . en.bitcoin.it . Hämtad 5 februari 2021. Arkiverad från originalet 4 februari 2021.
  13. 1 2 3 4 5 6 7 8 9 10 11 Segregerade vittnesförmåner . Hämtad 13 december 2017. Arkiverad från originalet 26 april 2018.
  14. 1 2 Pieter Wuille: Segregerat vittne och dess inverkan på skalbarhet @ SF Bitcoin Devs
  15. Segregerat vittne aktiveras på Bitcoin: Detta är vad du kan förvänta dig . Hämtad 23 december 2017. Arkiverad från originalet 1 december 2017.
  16. New York-överenskommelse . Hämtad 22 december 2017. Arkiverad från originalet 7 augusti 2017.
  17. 1 2 3 Segregerade vittneskostnader och risker . Hämtad 24 december 2017. Arkiverad från originalet 21 februari 2018.
  18. SPV-brytning . Hämtad 14 december 2017. Arkiverad från originalet 29 december 2017.
  19. 2x avropad: Bitcoin Hard Fork avstängd på grund av brist på konsensus . Hämtad 22 december 2017. Arkiverad från originalet 3 januari 2018.
  20. Inside MAST: Den föga kända planen för att avancera Bitcoin Smart Contracts . Hämtad 22 december 2017. Arkiverad från originalet 23 december 2017.

Litteratur

Länkar