
Jak informowaliśmy w tym tygodniu, adres powiązany z exploitem FTX przenosił środki za pośrednictwem szeregu projektów międzyłańcuchowych.
Chociaż większość środków przeszła przez Thorchain, część z nich została przekierowana przez tBTC. W trakcie tego procesu ujawniono dwa błędy.
Żaden błąd nie zagraża funduszom użytkownika. Pierwsza została załatana i wypuszczona wczoraj, natomiast druga wymaga dyskusji i konsensusu społeczności.
Pierwszy błąd — wektor odmowy usługi
W sobotę 30 września adres powiązany z FTX zażądał wykupu 76,81431578 BTC.
Obecnie w tBTC o wykup może poprosić każdy użytkownik posiadający saldo L1 tBTC. Po pewnym czasie opiekun spoza łańcucha oddelegowany przez Threshold DAO w
Koordynator Portfela
umowa weryfikuje żądanie wykupu, co skłania sygnatariuszy do uznania żądania wykupu za ważne. Jeśli 51 na 100 osób podpisujących dany portfel zgodzi się, wspólnie podpisują i uwalniają te środki na blockchainie Bitcoin.
Po pewnym czasie prośba o wykup została zatwierdzona przez osobę obsługującą wykupy. Co najmniej 51 sygnatariuszy w powiązanym portfelu wyraziło zgodę i wykup został zakończony.
9 godzin później inny adres powiązany z exploitem FTX zażądał kolejnej wymiany — tym razem na 76,62186419 BTC.
Niedługo potem wydarzyło się coś niesamowitego.
Nieznana osoba trzecia wysłała transakcje BTC do dwóch portfeli znajdujących się za tBTC.
Teraz dzieje się to cały czas – w końcu tBTC jest bite poprzez zdeponowanie BTC. Jednak zamiast zwykłej transakcji depozytowej transakcje te zostały wykonane ręcznie w taki sposób, że klienci podpisujący tBTC myśleli, że portfele są „zajęte” przenoszeniem środków i nie są w stanie obsłużyć żądań wykupu. Opiekun zatwierdzający czekał, aż portfele przestaną być „zajęte” – co nigdy się nie wydarzyło.
W efekcie te transakcje BTC blokowały wszystkie zaległe wykupy tBTC.
Nie wiemy, kto wysłał te transakcje. Jednak kimkolwiek byli, wiedzieli wystarczająco dużo, aby przymusowo wstrzymać most tBTC, spalając przy tym prosty 0-dniowy exploit i uniemożliwiając zatwierdzenie drugiego umorzenia powiązanego z FTX.
To dla mnie nowość. Żaden biały kapelusznik nie skontaktował się z tą sprawą, nikt nie przedstawił żadnych wyjaśnień, ale moment jest niesamowity.
W tym momencie systemy ostrzegania i monitorowania używane przez autorów w całym DAO zaczęły krzyczeć. Zespół deweloperów Keep zaczął w weekend przygotowywać łatkę mającą na celu naprawienie problemu typu „odmowa usługi”.
Do tego czasu zrozumieliśmy również, że jedna z zablokowanych realizacji była powiązana z FTX.
Drugi błąd — błąd konstrukcyjny mechanizmu wykupu
Drugi błąd stał się widoczny, gdy przygotowywaliśmy pierwszą łatkę.
Threshold DAO może delegować do wielu adresów osób zatwierdzających w pliku
Koordynator Portfela
kontrakt.
Niestety, na dzień dzisiejszy była tylko jedna delegacja na jeden adres opiekuna – pojedynczy punkt awarii. Obecnie adres ten jest kontrolowany przez amerykańską firmę, która nie może zatwierdzić umorzenia powiązanego z FTX.
Naprawa konstrukcji mechanizmu
Posiadanie tylko jednej delegowanej osoby zatwierdzającej z 25 milionami dolarów w TVL było przeoczeniem. Jednak większym problemem jest sama konstrukcja mechanizmu.
Każdy system polegający na wyraźnej zgodzie na umorzenie z pewnością ma inny podobny problem. Kiedy protokół został dostarczony po raz pierwszy, powodem wprowadzenia mechanizmu zatwierdzania była szybkość i łatwość obsługi — alternatywy oznaczały gorsze doświadczenie użytkownika.
Nie sądzę, że obecny system dokonał właściwych kompromisów.
Istnieją dwa jasne podejścia do naprawienia tej wady
Przejdź od przepływu opartego na zatwierdzeniu do przepływu opartego na wecie
Usuń całą kontrolę wykorzystania na poziomie protokołu
Wierzę, że najbezpieczniejszy projekt mechanizmu w przyszłości to coś, co nazywam „optymistycznym odkupieniem”. Zamiast listy adresów, które finalizują wykup, mamy listę adresów, w przypadku których można zawetować wykup – podobnie jak w przypadku roli Strażnika w optymistycznym biciu.
Dzięki temu mechanizmowi wszystkie umorzenia są domyślnie ważne. Jeśli wykup zostanie zawetowany z powodu podejrzenia włamania do mostu, może zostać opóźniony. Jeśli zostanie zawetowana przez wystarczającą liczbę strażników, może powrócić do głosowania posiadaczy tokenów. Jeśli weto zostanie podtrzymane w głosowaniu posiadaczy tokenów, odrzucony wykup tBTC może zostać automatycznie zwrócony użytkownikowi dokonującemu wymiany.
Wadą jest to, że ten hipotetyczny mechanizm wymaga dodatkowego opóźnienia przy każdym wykupieniu. Z biegiem czasu opóźnienie to można jednak zmniejszyć do zaledwie 15 minut i całkowicie znieść w przypadku małych transakcji.
Wreszcie, jeśli i kiedy społeczność uzna system za bezpieczny bez okresu przeglądu wykupu, może całkowicie wyeliminować opóźnienie, płynnie przechodząc od pierwszego podejścia do drugiego. Uważam, że jasny harmonogram usuwania kontroli wykupu pomógłby w budowaniu zaufania w całej społeczności.
Niezależnie od tego, jak rozwiązano tę wadę konstrukcyjną mechanizmu, wiele się nauczyliśmy z tego doświadczenia — i cieszę się, że nauczyliśmy się tego w tym tygodniu, a nie 10 razy tutaj.
Co następne?
DAO i społeczność muszą podjąć decyzje.
Niezależnie od tego, czy społeczność zdecyduje się dodać kolejny adres osoby zatwierdzającej, uaktualnić umowy do mechanizmu w stylu „optymistycznego wykupu”, czy też zbadać i rozważyć inne opcje, jako zespół programistów jesteśmy tutaj, aby doradzać i pomagać w budowaniu solidniejszego, bezpieczniejszego i neutralną przyszłość finansów razem.