tBTC: Navigálás a keresztláncos talányban

tBTC: Navigálás a keresztláncos talányban

ETH_dev#6218

Nemrégiben elvégeztük a Thesis tBTC biztonsági értékelését: egy megbízhatóság által minimalizált, beváltható, Bitcoin által támogatott ERC20 tokent. A projekt, amely a Keep Network-t használja a Bitcoin és az Ethereum átfogására, egy új, több láncot átfogó gazdaságot kíván lehetővé tenni, lehetővé téve a felhasználók számára, hogy a Bitcoin által támogatott ERC20 segítségével tranzakciókat folytassanak az Ethereumon. Jelentésünk nyilvánosan elérhető itt.

Nem gyakran szoktunk olyan projektet áttekinteni, mint a tBTC. Végül is a tBTC több rendszerre is kiterjed: a Bitcoin, az Ethereum és a Keep Network. Az intelligens szerződések, amelyek megkönnyítik ezt az átjárhatóságot, meglehetősen összetettek és mindhárom protokoll megértését igénylik. Bár korábbi, az Liquality és az Atomic Loans munkánk hasonló jellegű, a tBTC hatalmas kódbázisa egy másik szintre emeli.

Áttekintésünk során sokat tanultunk a láncok közötti rendszerek fejlesztéséről. Különösen a Bitcoin tranzakciókkal kapcsolatos kutatásaink tárták fel az Ethereum Bitcoin tranzakció-ellenőrzésének különösen érdekes korlátozását. Ezt a megállapítást itt bővítjük.

Mi az SPV bizonyíték?

A Bitcoin összefüggésében egy SPV bizonyítékot használnak egy tranzakció létezésének bizonyítására egy adott blokkon belül. Egyszerűen fogalmazva: a bizonyítás Merkle-bizonyítást párosít egy Bitcoin blokk hashMerkleRoot-jával annak bemutatására, hogy tranzakció létezik a blokkon belül:

Az ilyen bizonyítékokat gyakran használják, mert számításilag viszonylag könnyűek. Ez a tulajdonság különösen fontos a tBTC-t alkotó intelligens szerződések összefüggésében. Mivel az EVM-en (az Ethereum virtuális gépen) fut, a tBTC-t természetesen korlátozza az Ethereum korlátozott számítási erőforrásai.

Tegyük fel, hogy be akarjuk bizonyítani, hogy valamilyen tranzakció létezik a Bitcoin-on. Ehhez az SPV-bizonyításhoz néhány bemenetre van szükségünk:

1 A tranzakciót tartalmazó blokk fejlécfejléce

2 Maga a nyers tranzakció

3 A tranzakció indexe (pozíciója a blokkban)

4 Merkle proof (azoknak a csomópontoknak a listája, amelyek „utat” képeznek a tranzakciótól a Bitcoin blokk fejlécéig)

Ezeknek a bemeneteknek a használatával be lehet bizonyítani, hogy egy tranzakció létezik a blokkban, mindezt anélkül, hogy csatlakoznunk kellene egy Bitcoin csomóponthoz. Feltéve, hogy elfogadja, hogy a megadott Bitcoin blokkfejléc a leghosszabb munkabiztonsági láncból származik, az egyszerű fizetésellenőrzés (SPV) bárhol, bármilyen eszközön elvégezhető.

A keresztláncos talány

A Bitcoin tranzakciók kutatása közben az Ethereumon elvégzett SPV bizonyítások alapvető korlátozására bukkantunk: Bitcoin tranzakció nagysága.

A Bitcoin tranzakciókat elsősorban a 4 MB maximális Bitcoin blokkméret korlátozza. Továbbá, mivel az SPV-bizonyítékok kizárhatják a tanúi adatokat, csökkenthetjük az elméleti maximális Bitcoin tranzakciós méretet 1 MB-ra. Céljaink szempontjából azonban a pontos felső határt valójában nem a Bitcoin blokk mérete határozza meg, mert kiderül, hogy valójában az Ethereum blokklánc korlátozza.

Miért? A Bitcointól eltérően az Ethereum tranzakcióit korlátozza a végrehajtásuk során felhasznált számítási erőforrások mennyisége. Minden végrehajtott művelethez bizonyos mennyiségű gáz szükséges, és a tranzakciók nem fogyaszthatnak több gázt, mint amennyit egyetlen blokk tartalmaz. Ezt gázkorlátnak nevezik, amely az írás idején körülbelül 10 millió gáz.

Annak megértéséhez, hogy ez nagyjából egyenlő a Bitcoin tranzakció méretével, használhatunk egy definíciót az Ethereum sárga könyvéből, a Gtxdatanonzero-ból, amely a tranzakció során az egyes bájtokhoz szükséges gázköltség. A Gtxdatanonzero bájtonként 16 gáz.

Ez azt jelenti, hogy az SPV-bizonyíték részeként szállított Bitcoin tranzakciók minden byteja legalább 16 gázt fogyaszt. Vegye figyelembe, hogy az SPV-bizonyítás elvégzésével további költségek merülnek fel, de ezt a durva becslés szempontjából ezeket figyelmen kívül hagyom.

Szóval, mekkora lehet egy Bitcoin tranzakció, mielőtt lehetetlenné válik SPV bizonyítás végrehajtása az Ethereumon? A válasz az Ethereum blokkgáz-határértéke elosztva a Gtxdatanonzero-val:

(10 000 000 gáz) / (16 gáz byte-on) = 625 000 bájt, vagyis az 1 MB maximális Bitcoin tranzakciós méret körülbelül 63% -a.

Mit jelent ez a tBTC szempontjából?

A tBTC-ben az SPV-bizonyítékok eredetileg két célt szolgáltak:

1 Betéti igazolások: lehetővé tették a felhasználók számára, hogy bizonyítsák, hogy helyesen tettek BTC betétet, ami a tBTC szerződéseket a megfelelő Bitcoin által támogatott ERC20 felszabadítására indította.

2 Csalási bizonyítékok: lehetővé tették a felhasználók számára, hogy bizonyítsák, hogy a betét letétkezelőjét aláíró csoport engedélye nélkül költötték el a BTC-betétet, kiváltva ezzel az aláírót és megkötve a betét tulajdonosát.

Csalási bizonyítékok

Az SPV csalásbizonyításai lehetővé tették a felhasználók számára, hogy védekezzenek a rosszindulatú aláírók ellen. Ha egy aláíró csoport összefog, a felhasználó kifejezett engedélye nélkül elköltheti a letétbe helyezett BTC-t. Azzal, hogy ezt az illetéktelen tranzakciót a tBTC szerződéseihez juttatta, a felhasználók bizonyítani tudták, hogy a kiadás megtörtént, megbüntethetik a rosszindulatú aláírókat, és biztosíthatják, hogy méltányosan megtérítsék őket az előlegük elvesztéséért.

A fentiekben leírt Bitcoin tranzakciós méretkorlátozás alkalmazásával azonban az aláírók elkerülhetik ezt a büntetést, ha elég nagy tranzakcióban költik el a betétet.

Szerencsére az SPV csalásbizonyításai a tBTC-ben megvalósított két csalásbiztos mechanizmus egyike voltak. Az alternatív módszer, az ECDSA csalásbizonyítások, sokkal megbízhatóbb alternatívát kínáltak az SPV csalásbizonyításaihoz. Ennek eredményeként az SPV csalásokkal kapcsolatos bizonyítékait eltávolították a tBTC szerződéseiből.

Betéti igazolások

A betétbizonylatokat továbbra is használják a tBTC-ben, amikor minden felhasználó belép a rendszerbe. A Bitcoin által támogatott ERC20 Ethereumon történő kiadásához a felhasználóknak SPV igazolást kell benyújtaniuk a sikeres befizetésről. Bár a Bitcoin tranzakcióméret nem ad egyértelmű módszert a betéti rendszerrel való visszaélésre, lehetséges, hogy a felhasználó érvényes BTC tranzakcióval finanszírozhat betétet, csak azért, hogy megállapítsa, hogy a tranzakciója túl nagy, és a tBTC szerződéseken belül nem érvényesíthető. .

Nincs egyértelmű út a függőség megszüntetésére; Az előleg érvényesítéséhez SPV igazolásokat kell benyújtani. Szerencsére a Bitcoin tranzakció méretkorlátozása nem olyan szigorú, hogy megakadályozza a tBTC teljes működését; egy egyszerű ráfordítás egyetlen bemenettel és kimenettel jóval az Ethereum jelenlegi blokkgáz-határának határain belül van. Amíg arra törekszenek, hogy a felhasználók kellően tisztában legyenek ezzel a korlátozással, a Bitcoin tranzakció nagysága nem jelenthet jelentős problémát a betétek finanszírozása során.

Mit tehet a tBTC (és más, láncokon átívelő projektek), hogy biztosítsa a rendszereik megfelelő működését?

Értse meg mindkét lánc primitívjeit. Az Ethereum használatakor értse meg, hol marad az EVM más láncok primitívjeinek replikálásában. A láncokon átívelő alkalmazások két világot hidalnak át, mindegyiknek megvan a maga időrendszere, szabályai és finom giccei.

  • A teljesítmény-összehasonlítás bizonyos alapértékeket nyújt, amelyek alapján a rendszer mérhető. Például a Bitcoin tranzakciónagyságról folytatott megbeszélésünket követően a dolgozat néhány alapvető benchmarkingot hajtott végre, hogy pontosabb korlátozásokat hozzon létre SPV-bizonyítékaikhoz.

Az egységvizsgálatok soha nem lesznek elégek. A keresztláncú dappeknek természetüknél fogva a rendszer minden végén vannak mozgó alkatrészek. Az alkatrészek együttműködésének biztosítása érdekében a fejlesztőknek túl kell lépniük az egyszerű egységteszten.

  • Az integrációs tesztek segítenek feltárni az elszigetelt alkatrészek közötti kölcsönhatások következetlenségeit, és modellt nyújtanak a rendszer számára a valós élethez közeli körülmények között.

Készülj fel a legrosszabbra. Nagy összetettséggel jár a nagy felelősség. Nem reális minden lehetséges kérdést azonosítani a megjelenés előtt.

  • Készenléti terv: Ha van egy terv, amely gyorsan reagál a kérdésekre, tompíthatja a súlyos problémák hatását. A készenléti terv elkészítése az indítás előtt munkát igényelhet, de ez végtelenül jobb, mint felkészületlen.

Végül oktassa ki felhasználóit. A csata része annak megértése, hol romlhatnak el a dolgok; a következő lépés annak biztosítása, hogy felhasználói megegyezzenek egymással. Ennek érdekében Matt Luongo (Thesis) nemrég egy hosszú szálat tett közzé, amely leírja a tBTC biztonsági modelljét és irányítását.

Frissítés 2020. május 16 .: Ez a cikk eredetileg 68 bájt gázárat adott meg, amelyet azóta frissítettek, és nem említette, hogy a tanúk adatait ki lehet zárni az SPV bizonyítékból. Köszönöm James Prestwichnek és Paul Vienhage-nek a javításokat.

Report Page