tBTC: Navigering i tværgående kæde

tBTC: Navigering i tværgående kæde

SuLong#8811

Vi gennemførte for nylig en sikkerhedsvurdering af afhandlingens tBTC: et tillidsminimeret, indløseligt, Bitcoin-støttet ERC20-token. Projektet, der bruger Keep Network til at spænde over Bitcoin og Ethereum, sigter mod at muliggøre en ny tværgående økonomi ved at give brugerne mulighed for at handle på Ethereum ved hjælp af Bitcoin-støttet ERC20. Vores rapport er offentligt tilgængelig her.


Det er ikke ofte, vi får gennemgå et projekt som tBTC. Når alt kommer til alt spænder tBTC over flere systemer: Bitcoin, Ethereum og Keep Network. De smarte kontrakter, der letter al denne interoperabilitet, er ret komplekse og kræver forståelse af alle tre protokoller. Selvom vores tidligere arbejde med Liquality og  Atomic Loans har samme karakter, sætter tBTCs massive kodebase det på et andet niveau.

I løbet af vores gennemgang lærte vi meget om udviklingen af cross-chain-systemer. Især afslørede vores forskning i Bitcoin-transaktioner en særlig interessant begrænsning af Bitcoin-transaktionskontrol på Ethereum. Vi udvider dette fund her.

Hvad er et SPV-bevis?

I forbindelse med Bitcoin bruges et SPV-bevis til at bevise eksistensen af en transaktion inden for en given blok. Kort sagt parrer beviset et Merkle-bevis med en Bitcoin-blocks hashMerkleRoot for at vise, at der findes en transaktion inden for blokken:

Beviser som disse bruges ofte, fordi de er relativt beregningsmæssigt lette. Denne egenskab er især vigtig i forbindelse med de smarte kontrakter, der udgør tBTC. Fordi det kører på EVM (Ethereum Virtual Machine), er tBTC naturligvis begrænset af Ethereums begrænsede beregningsressourcer.

Lad os sige, at vi vil bevise, at der findes en transaktion på Bitcoin. Til dette SPV-bevis har vi brug for et par input:

overskriften på den blok, der indeholder transaktionen

2 Selve den rå transaktion

3 Transaktionens indeks (dens position i blokken)

4 Et mærkesikkert (en liste over noder, der danner en "sti" fra transaktionen til Bitcoin-blokoverskriften)

Ved hjælp af disse input er det muligt at bevise, at der findes en transaktion i blokken, alt sammen uden at skulle oprette forbindelse til en Bitcoin-node. Forudsat at man accepterer, at den medfølgende Bitcoin-blokoverskrift stammer fra den længste proof-of-work-kæde, kan Simple Payment Verification (SPV) finde sted hvor som helst og på enhver enhed.

Den tværgående kæde

Mens vi undersøgte Bitcoin-transaktioner, stødte vi på en grundlæggende begrænsning af SPV-bevis udført på Ethereum: Bitcoin-transaktionsstørrelse.

Bitcoin-transaktioner er primært begrænset af den maksimale Bitcoin-blokstørrelse på 4 MB. Derudover, fordi SPV-bevis kan ekskludere vidnedata, kan vi reducere den teoretiske maksimale Bitcoin-transaktionsstørrelse til 1 MB. Til vores formål bestemmes den nøjagtige øvre grænse faktisk ikke af Bitcoin-blokstørrelsen, fordi den faktisk viser sig at være begrænset af Ethereum-blockchain.

Hvorfor? I modsætning til Bitcoin er Ethereums transaktioner begrænset af mængden af ​​beregningsressourcer, deres udførelse bruger. Hver udført operation kræver en vis mængde gas, og transaktioner kan ikke forbruge mere gas, end der er indeholdt i en enkelt blok. Dette kaldes gasgrænsen, som i skrivende stund er omkring 10 millioner gas.

For at forstå, hvordan dette stort set svarer til Bitcoin-transaktionsstørrelse, kan vi bruge en definition fra Ethereum-gule papir, Gtxdatanonzero, som er den gasomkostning, der kræves for hver byte af data i en transaktion. Gtxdatanonzero er 16 gas pr. Byte.

Dette betyder, at hver byte i en Bitcoin-transaktion, der leveres som en del af et SPV-bevis, bruger mindst 16 gas. Bemærk, at der er yderligere omkostninger forbundet med at udføre et SPV-bevis, men jeg ignorerer dem i forbindelse med dette grove skøn.

Så hvor stor kan en Bitcoin-transaktion få, før det bliver umuligt at udføre et SPV-bevis på Ethereum? Svaret er Ethereums blokgasgrænse divideret med Gtxdatanonzero:

(10.000.000 gas) / (16 gas pr. Byte) = 625.000 byte eller ca. 63% af den maksimale Bitcoin-transaktionsstørrelse på 1 MB.

Hvad betyder dette for tBTC?

I tBTC tjente SPV-bevis oprindeligt to formål:

1 Indskudsbeviser: tillod brugere at bevise, at de havde foretaget en BTC-indbetaling 2 2 korrekt, hvilket udløste tBTC-kontrakterne for at frigive tilsvarende Bitcoin-støttet ERC20.

2 Bedrageribeviser: tillod brugere at bevise, at et BTC-depositum var blevet brugt uden tilladelse af indskuddets depotgruppe, der udløste underskrivere og tildelte en obligation til depositumsejeren.

Bedrageribeviser

SPV-svindelbeviser tillod brugere at beskytte mod ondsindede underskrivere. Hvis en underskrivergruppe samarbejder, er de i stand til at bruge deponeret BTC uden udtrykkelig tilladelse fra brugeren. Ved at levere denne uautoriserede transaktion til tBTC's kontrakter kunne brugerne bevise, at forbruget fandt sted, straffe de ondsindede underskrivere og sikre, at de blev rimeligt kompenseret for tabet af deres depositum.

Imidlertid kunne underskrivere ved hjælp af den ovenfor beskrevne begrænsning af Bitcoin-transaktionsstørrelse undgå denne straf ved at bruge depositum i en stor nok transaktion.

Heldigvis var SPV-svindelbeviser en af to svigbestandige mekanismer implementeret i tBTC. Den alternative metode, ECDSA-svindelbeviser, gav et meget mere robust alternativ til SPV-svindelbeviser. Som et resultat blev SPV-svindelbeviser fjernet fra tBTC's kontrakter.

Indsæt bevis

Indskudsbeviser bruges stadig i tBTC, når hver bruger kommer ind i systemet. For at frigive Bitcoin-støttet ERC20 på Ethereum skal brugerne fremlægge et SPV-bevis for vellykket indbetaling. Selvom problemet med Bitcoin-transaktionsstørrelse ikke giver en klar metode til misbrug af indbetalingssystemet, er det muligt, at en bruger muligvis finansierer et indskud med en gyldig BTC-transaktion, kun for at finde ud af, at deres transaktion er for stor og ikke kan valideres inden for tBTC-kontrakterne .

Der findes ingen klar sti til at fjerne denne afhængighed; SPV-bevis skal leveres for at validere et depositum. Heldigvis er begrænsningen af Bitcoin-transaktionsstørrelse ikke så alvorlig, at den forhindrer, at tBTC fungerer helt; et simpelt forbrug med en enkelt input og output ligger inden for rammerne af Ethereums nuværende blokgasgrænse. Så længe der gøres en indsats for at sikre, at brugerne er tilstrækkeligt opmærksomme på denne begrænsning, bør Bitcoin-transaktionsstørrelse ikke udgøre et væsentligt problem ved finansiering af indskud.

Hvad kan tBTC (og andre tværgående projekter) gøre for at sikre, at deres systemer fungerer korrekt?

Forstå de primitive i begge kæder. Når du bruger Ethereum, skal du forstå, hvor EVM kommer til kort ved at replikere primitiverne fra andre kæder. Tværkædeanvendelser bygger bro over to verdener, hver med sit eget tidssystem, regler og subtile gotchas.


  • Performance-benchmarking vil give en vis baseline, som systemet kan måles mod. For eksempel, efter vores diskussion af Bitcoin-transaktionsstørrelsesproblemet, udførte afhandling nogle grundlæggende benchmarking for at komme med mere nøjagtige begrænsninger for deres SPV-bevis.

Enhedstest vil aldrig være nok. Cross-chain dapps har af natur bevægelige dele i alle ender af systemet. For at sikre, at disse dele fungerer sammen, skal udviklere gå ud over simpel enhedstest.


  • Integrationstest hjælper med at afsløre uoverensstemmelser i interaktionen mellem isolerede komponenter og vil give en model af systemet under forhold, der er tæt på den virkelige verden.

Forbered dig på det værste. Med stor kompleksitet kommer stort ansvar. Det er ikke realistisk at identificere alle mulige problemer inden udgivelsen.


  • Beredskabsplan: At have en plan på plads til hurtigt at reagere på problemer kan stumpe virkningen af ​​alvorlige problemer. Oprettelse af en beredskabsplan før lancering kan kræve arbejde, men det er uendeligt bedre end at være uforberedt.

Endelig uddanne dine brugere. At forstå, hvor ting kan gå galt, er en del af kampen; det næste trin er at sikre, at dine brugere deler din forståelse. Til dette formål udsendte Matt Luongo fra Thesis for nylig en lang tråd, der beskriver tBTCs sikkerhedsmodel og styring.


Opdatering 16. maj 2020: Denne artikel gav oprindeligt en gaspris på 68 pr. Byte, som siden er blevet opdateret og nævnte ikke, at vidneoplysninger kan udelukkes fra SPV-beviset. Tak til James Prestwich og Paul Vienhage for rettelserne.

Report Page