tBTC: poruszanie zagadką krzyżowego łańcucha
MAY 01, 2020 BY ALEXANDER WADE
Ostatnio przeprowadziliśmy ocenę bezpieczeństwa Tbtc Thesis: minimalizowanego zaufania, odkupionego, Bitcoin-backed ERC20 tokena. Projekt, który wykorzystuje Keep Network, aby objąć Bitcoin i Ethereum, ma na celu umożliwienie nowej gospodarki cross-chain poprzez umożliwienie użytkownikom dokonywania transakcji na Ethereum przy użyciu ERC20 wspieranego Bitcoinem. Nasz raport jest dostępny publicznie tutaj.
Nieczęsto recenzujemy taki projekt jak tBTC. W końcu tBTC obejmuje kilka systemów: Bitcoin, Ethereum i sieć Keep. Inteligentne kontrakty, które ułatwiają tę interoperacyjność, są dość złożone i wymagają zrozumienia wszystkich trzech protokołów. Chociaż nasza poprzednia praca z Liquality i Atomic Loans ma podobny charakter, masywny kod tbtc stawia go na innym poziomie.
Co to jest dowód SPV?
Dowody takie są często używane, ponieważ są stosunkowo lekkie obliczeniowo. Ta nieruchomość jest szczególnie ważna w kontekście inteligentnych kontraktów, które tworzą tBTC. Ponieważ działa na EVM (maszynie wirtualnej Ethereum), tBTC jest naturalnie Ograniczony ograniczonymi zasobami obliczeniowymi Ethereum.
Powiedzmy, że chcemy udowodnić, że istnieje jakaś transakcja na Bitcoinie. Dla tego dowodu SPV potrzebujemy kilku wejść:
- Nagłówek bloku, który zawiera transakcję
- Sama transakcja surowa
- Indeks transakcji (jego pozycja w bloku)
- Dowód merkle (lista węzłów, które tworzą “ścieżkę” od transakcji do nagłówka bloku Bitcoin)
Korzystając z tych danych wejściowych, można udowodnić, że transakcja istnieje w bloku, a wszystko to bez konieczności łączenia się z węzłem Bitcoin. Pod warunkiem, że zaakceptuje się, że podany nagłówek bloku Bitcoin pochodzi z najdłuższego łańcucha proof-of-work, prosta weryfikacja płatności (SPV) może odbywać się w dowolnym miejscu, na dowolnym urządzeniu.
Zagadka z łańcuchem krzyżowym
Badając transakcje Bitcoin, natknęliśmy się na fundamentalne ograniczenie dowodów SPV wykonanych na Ethereum: rozmiar transakcji Bitcoin.
Transakcje Bitcoin są ograniczone przede wszystkim przez maksymalny rozmiar bloku Bitcoin 4 MB. Dodatkowo, ponieważ dowody SPV mogą wykluczać dane świadków, możemy zmniejszyć teoretyczny maksymalny rozmiar transakcji Bitcoin do 1 MB. Jednak dla naszych celów dokładna górna granica nie jest w rzeczywistości określona przez rozmiar bloku bitcoina, ponieważ okazuje się, że jest ograniczona przez łańcuch bloków Ethereum.
Dlaczego? W przeciwieństwie do Bitcoina, transakcje Ethereum są ograniczone ilością zasobów obliczeniowych, które zużywają ich wykonanie. Każda wykonana operacja wymaga pewnej ilości gazu, a transakcje nie mogą zużywać więcej gazu niż jest zawarty w jednym bloku. Jest to określane jako limit gazu, który w momencie pisania tego tekstu wynosi około 10 milionów gazu.
Aby zrozumieć, w jaki sposób z grubsza odpowiada to wielkości transakcji Bitcoin, możemy użyć definicji z żółtego papieru Ethereum, Gtxdatanonzero, która jest kosztem gazu wymaganym dla każdego bajtu danych w transakcji. GTX Data nonzero to 16 gazu na bajt.
Oznacza to, że każdy bajt transakcji Bitcoin dostarczony jako część dowodu SPV zużywa minimum 16 gazu. Zauważ, że istnieją dodatkowe koszty związane z wykonaniem dowodu SPV, ale ignoruję te do celów tej przybliżonej oceny.
Jak duża może być transakcja Bitcoin, zanim niemożliwe stanie się wykonanie dowodu SPV na Ethereum? Odpowiedź to limit blokowy Ethereum podzielony przez Gtxdatanonzero:
(10 000 000 gazu) / (16 gazu na bajt) = 625 000 bajtów, czyli około 63% maksymalnego rozmiaru transakcji Bitcoin 1 MB.
Co to oznacza dla tBTC?
W tbtc dowody SPV pierwotnie służyły dwóm celom:
- Dowody wpłat: pozwalały użytkownikom udowodnić, że prawidłowo dokonali depozytu BTC, wyzwalając Kontrakty tBTC w celu wydania odpowiedniego ERC20 wspieranego Bitcoinem.
- Dowody oszustwa: pozwalały użytkownikom udowodnić, że depozyt BTC został wydany bez autoryzacji przez depozytową grupę sygnatariuszy, wyzwalając cięcie sygnatariusza i przyznając obligację właścicielowi depozytu.
Dowody oszustwa
Dowody na oszustwa SPV umożliwiły użytkownikom ochronę przed złośliwymi sygnatariuszami. Jeśli grupa sygnatariuszy zmowa, są w stanie wydać zdeponowane BTC bez wyraźnej autoryzacji użytkownika. Dostarczając tę nieautoryzowaną transakcję do kontraktów tBTC, użytkownicy mogą udowodnić, że wydatki wystąpiły, ukarać złośliwych sygnatariuszy i upewnić się, że zostali sprawiedliwie zrekompensowani za utratę depozytu.
Jednak przy użyciu ograniczenia wielkości transakcji Bitcoin opisanego powyżej, sygnatariusze mogą uniknąć tej kary, wydając depozyt w wystarczająco dużej transakcji.
Na szczęście, dowody oszustw SPV były jednym z dwóch mechanizmów dowodów oszustw wdrożonych w tBTC. Alternatywna metoda, dowody oszustw ECDSA, zapewniła znacznie bardziej solidną alternatywę dla dowodów oszustw SPV. W rezultacie dowody oszustwa SPV zostały usunięte z kontraktów tBTC.
Dowody wpłat
Dowody wpłat są nadal używane w tBTC, gdy każdy użytkownik wchodzi do systemu. W celu wydania ERC20 wspieranego bitcoinem na Ethereum, użytkownicy muszą dostarczyć dowód wpłaty SPV. Chociaż problem wielkości transakcji Bitcoin nie zapewnia jasnej metody nadużywania systemu depozytowego, możliwe jest, że użytkownik może zasilić depozyt ważną transakcją BTC, tylko po to, aby stwierdzić, że ich transakcja jest zbyt duża i nie może zostać zatwierdzona w ramach umów tBTC.
Nie istnieje jasna ścieżka do usunięcia tej zależności; aby zweryfikować depozyt, muszą być dostarczone dowody SPV. Na szczęście ograniczenie rozmiaru transakcji Bitcoin nie jest tak poważne, aby uniemożliwić tbtc całkowicie funkcjonujące; proste wydatki z jednym wejściem i wyjściem mieszczą się w granicach obecnego limitu gazu blokowego Ethereum. Dopóki podejmowane są wysiłki w celu zapewnienia, że użytkownicy są wystarczająco świadomi tego ograniczenia, wielkość transakcji Bitcoin nie powinna stanowić istotnego problemu podczas finansowania depozytów.
Co może zrobić tBTC (i inne projekty cross-chain), aby zapewnić prawidłowe działanie swoich systemów?
Zrozum prymitywy obu łańcuchów. Korzystając z Ethereum, zrozum, gdzie EVM nie jest w stanie odtworzyć pierwotnych innych łańcuchów. Aplikacje Cross-chain łączą dwa światy, każdy z własnym systemem czasu, zasadami i subtelnymi gotchami.
- Benchmarking wydajności zapewni pewne podstawy, w stosunku do których system może być mierzony. Na przykład, po naszej dyskusji na temat wielkości transakcji Bitcoin, Thesis przeprowadziła kilka podstawowych benchmarkingu, aby wymyślić dokładniejsze ograniczenia dla ich dowodów SPV.
Testy jednostkowe nigdy nie wystarczą. Dapps z natury mają ruchome części na wszystkich końcach systemu. Aby zapewnić współpracę tych części, programiści muszą wyjść poza proste testy jednostkowe.
- Testy integracyjne pomogą ujawnić niespójności w interakcji między izolowanymi komponentami i zapewnią model systemu w warunkach zbliżonych do rzeczywistych.
Przygotuj się na najgorsze. Z wielką złożonością wiąże się wielka odpowiedzialność. Zidentyfikowanie każdego możliwego problemu przed wydaniem nie jest realistyczne.
- Plan awaryjny: posiadanie planu szybkiego reagowania na problemy może tępić skutki poważnych problemów. Stworzenie planu awaryjnego przed startem może wymagać pracy, ale jest nieskończenie lepsze niż nieprzygotowanie.
Na koniec edukuj swoich użytkowników. Zrozumienie, gdzie rzeczy mogą pójść źle, jest częścią bitwy; następnym krokiem jest zapewnienie, że użytkownicy podzielą się Twoim zrozumieniem. W tym celu Matt Luongo z Thesis opublikował niedawno długi wątek opisujący model bezpieczeństwa i zarządzanie tbtc.
Aktualizacja 16 maja 2020: ten artykuł pierwotnie podał cenę gazu 68 za bajt, która została zaktualizowana, i nie wspomniał, że dane świadków mogą być wyłączone z dowodu SPV. Dziękuję Jamesowi Prestwichowi i Paulowi Vienhage za poprawki.
Myślisz o smart Contract security? Zapewniamy szkolenia, bieżące doradztwo i inteligentne audyty umów. Skontaktuj się z nami.