Łańcuchy kosmiczne: jak działa ta nowa propozycja łańcucha bocznego Bitcoina

Węzeł źródłowy: 1544330

Spacechains to proponowany łańcuch boczny Bitcoin, który oferuje jednokierunkowy mechanizm kołkowy wykorzystujący projekt kopalni metodą ślepego łączenia.

Idea łańcuchów bocznych jako mechanizmu skalowania i rozszerzania funkcji dla Bitcoina jest bardzo starą koncepcją. Rodzaj podstawowej idei „przodka” łańcuchów bocznych, scalić wydobyte łańcuchy, sięga nawet sprzed zniknięcia Satoshiego.

Ta propozycja była po prostu ideą dwóch całkowicie oddzielnych i niepowiązanych łańcuchów wydobywanych przez tę samą grupę górników, bez możliwości przenoszenia czegokolwiek między łańcuchami. The oryginalna propozycja łańcucha bocznego został stworzony w 2014 roku przez wielu ludzi, którzy założyli Blockstream dosłownie tydzień po publikacji artykułu. Podstawową ideą było umożliwienie przemieszczania się monet między głównym łańcuchem bloków Bitcoina a innymi łańcuchami bocznymi, z prostymi dowodami weryfikacji płatności (SPV) używanymi do udowodnienia, że ​​rzeczy są prawidłowe, gdy wysyłasz monety z jednego łańcucha do drugiego. To nigdy nie doszło do skutku z powodu złożoności we wdrażaniu reorganizacji łańcuchów, możliwości kradzieży i ryzyka centralizacji wydobycia (o czym można przeczytać w sekcji czwartej Biały papier Bitcoin).

Mechanizmy kołkowe dla łańcuchów bocznych mogą mieć dwie odmiany, jednokierunkowe i dwukierunkowe. Znaczenie powinno być oczywiste — w przypadku kołka dwukierunkowego monety mogą poruszać się tam iz powrotem między łańcuchem nadrzędnym a łańcuchem bocznym, a w kołku jednokierunkowym mogą poruszać się tylko z łańcucha nadrzędnego do łańcucha bocznego i nigdy się nie cofają. Obecnie jedyną formą dwukierunkowych kołków sidechain zaimplementowanych w Bitcoin jest federacyjny konsensus, co oznacza, że ​​kołek jest gwarantowany przez zaufany zestaw „powierników”, którzy kontrolują środki powiązane z łańcuchem bocznym w portfelu multisig, dopóki nie zostaną wycofane.

Jednak ludzie nadal pracowali nad innymi projektami kołków do łańcucha bocznego, które nie są federacyjne. Tutaj przejdę przez propozycję Rubena Somsena Spacechain jako jeden przykład. Jest to jednokierunkowy mechanizm kołkowy wykorzystujący konstrukcję kopalni ze ślepym scalaniem, podobny do Paweł Stztorc's. Oznacza to, że monety mogą trafiać tylko do łańcucha bocznego i nigdy go nie opuszczać, a górnicy nie muszą uruchamiać nowego oprogramowania, aby uzyskać wynagrodzenie za wydobycie łańcucha bocznego (jednak, jak omówię później, mogą dzięki temu więcej zyskać).

Propozycja łańcucha kosmicznego

Kopanie przez scalanie wymaga od górników uruchomienia węzłów zarówno łańcucha Bitcoin, jak i dowolnego innego łańcucha, który wydobywają, w celu skompilowania bloków dla obu łańcuchów i zatwierdzenia ich w nagłówku bloku Bitcoin, który wydobywają. Wydobywanie na ślepo przez scalanie wykorzystuje fakt, że w rzeczywistości górnicy Bitcoin muszą mieć tylko nagłówek bloku drugiego łańcucha, aby się zobowiązać w swoim bloku Bitcoin, ktoś inny może faktycznie zadać sobie trud złożenia bloku dla drugiego łańcucha.

Zaproponowany mechanizm Somsena do tego może wykorzystać DOWOLNYPREVOUT (APO), aby umożliwić otwartą konkurencję każdemu, kto będzie mógł konkurować w celu skonstruowania następnego bloku łańcucha bocznego, przy jednoczesnym zagwarantowaniu, że tylko jeden blok może zostać popełniony na główny blok łańcucha Bitcoin. Kolejną zaletą propozycji Rubena jest to, że nie wymaga specjalnego soft forka, aby umożliwić rozmieszczenie kosmicznych łańcuchów. Eltoo/ANYPREVOUT jest proponowany dla korzyści dla Lightning Network, umożliwiając elastyczne łańcuchy stanów, a także fabryki kanałów. Łańcuchy kosmiczne to po prostu kolejna możliwość z wielu rzeczy, dla których umożliwienie ANYPREVOUT utorowałoby drogę.

Ogólną ideą jego propozycji wydobycia metodą ślepego scalania jest to, że korzystając z APO, można wstępnie zdefiniować długi zestaw transakcji, które pobierają ten sam początkowy kod UTXO i zobowiązują się go zawsze odtwarzać. Wyobraź sobie więc pojedyncze UTXO satoshi, z każdą wstępnie utworzoną transakcją gwarantującą, że to samo UTXO zostanie odtworzone jako dane wyjściowe po potwierdzeniu. Pomyśl o tym jak o znaczniku, ten specjalny UTXO to identyfikator, który pozwala każdemu, kto patrzy na główny blockchain Bitcoina, wiedzieć: „Tutaj znajduję zobowiązanie do bloków sidechain X”. Pozostaje jednak jeden problem: opłaty górnicze. Jeśli to UTXO musi zostać odtworzone z tą samą kwotą, nie ma środków na opłacenie opłat.

Można sobie z tym poradzić, wykorzystując SIGHASH_POJEDYNCZY (podpis z wejścia oznacza tylko to pojedyncze wejście i odpowiadające mu wyjście) i SIGHASH_ANYONECANPAY (ludzie mogą swobodnie dodawać dodatkowe wejścia i wyjścia bez unieważniania podpisu, o ile wejście/wyjście przy użyciu SIGHASH_SINGLE pozostaje bez zmian, aby nie unieważnić tego podpisu). Następnie każdy może dodać dane wejściowe i zmienić dane wyjściowe, aby zapłacić opłaty górnicze za transakcję.

Jest to również mechanizm używany do zatwierdzania w nagłówku bloku łańcucha bocznego. W ten sam sposób, w jaki Taproot zobowiązuje się do drzewa różnych warunków wydatków, modyfikując normalny klucz publiczny za pomocą korzenia Merkle drzewa, każdy może dostosować normalny klucz publiczny za pomocą skrótu nagłówka bloku bloku łańcucha bocznego. Węzły łańcucha bocznego mogą następnie ujawnić i przekazać nagłówek tego bloku ze wskaźnikiem do transakcji w głównym łańcuchu, aby udowodnić, że faktycznie został wydobyty. Stamtąd węzły łańcucha bocznego wykonałyby całą normalną walidację, aby upewnić się, że blok łańcucha bocznego przestrzega odpowiednich zasad konsensusu i przekaże rzeczywiste bloki w sieci łańcucha bocznego, tak jak w łańcuchu głównym.

Jeśli jedna z transakcji użyta do zatwierdzenia do bloków łańcucha bocznego w łańcuchu głównym została użyta do zatwierdzenia do nieprawidłowego bloku lub nawet całkowitego wyrzucenia danych, to gdy węzły łańcucha bocznego zobaczą transakcję zobowiązania użytą w łańcuchu, mogą się zdarzyć dwie rzeczy: Jedna, nieprawidłowy blok będzie propagowany w sieci łańcucha bocznego, a gdy nie przejdzie kontroli weryfikacyjnych, zostanie osierocony; lub dwa, dane nigdy nie są ujawniane, w takim przypadku następny blok łańcucha bocznego będzie budowany na podstawie ostatniego faktycznie ujawnionego bloku i zostanie zatwierdzony, a nieujawnione zobowiązanie zostanie zignorowane. Ta druga możliwość jest zgodna z tym samym rodzajem logiki najdłuższego łańcucha, co łańcuch główny, więc nawet jeśli coś zostanie ujawnione później, nadal zostanie osierocone z powodu przyszłych bloków, które na nim nie zbudowane.

Ale nadal istnieje problem podwójnego wydatkowania. Każdy, kto ma klucz prywatny użyty do wygenerowania znacznika UTXO, może potencjalnie podwoić dowolną z predefiniowanych transakcji używanych do zatwierdzania bloków łańcucha bocznego i unieważniać cały zestaw od tego momentu.

Rozwiązuje się to poprzez faktyczne wstawienie podpisu do skryptu blokującego samego UTXO. To blokuje podpis na wejściu i wyjściu, gwarantując odtworzenie znacznika UTXO w następnej transakcji z jego użyciem. Ponieważ podpis ten będzie automatycznie przekazywany i sprawdzany po zużyciu UTXO, nie jest możliwe po prostu zastąpienie go innym i wydanie go w innym miejscu.

Pozostaje jeszcze jeden nierozstrzygnięty problem. Teoretycznie byłoby możliwe, aby przesłać wiele transakcji z rzędu do jednego bloku Bitcoin, tak aby ogromna liczba bloków łańcucha bocznego została potwierdzona przez górników w jednym bloku łańcucha głównego. Może to zostać wykorzystane do ataku typu „odmowa usługi” na sieć sidechain.

W celu rozwiązania tego problemu, w skrypcie znacznika UTXO można wstawić względną blokadę czasową CHECKSEQUENCEVERIFY (CSV), aby zagwarantować, że tylko jedna transakcja przy użyciu znacznika UTXO może zostać potwierdzona wewnątrz jednego danego bloku głównego łańcucha.

W sumie wygląda to tak: 

Źródło

Warto również zauważyć, że dwa warianty tego projektu można zrealizować za pomocą funkcji CHECKTEMPLATEVERIFY (CTV) lub bez żadnych zmian. Te dwa warianty projektowe mają po prostu nieoptymalne kompromisy.

Wariant CTV wykorzystywałby tę funkcjonalność do zatwierdzania łańcucha transakcji przy użyciu CTV zamiast APO z hackiem zawierającym podpis wewnątrz skryptu blokującego UTXO. CTV zobowiązuje się do wszystkich wyjść transakcji z wykorzystaniem CTV UTXO, ale nie zobowiązuje się do żadnego wejścia poza sobą.

Oznacza to, że możesz dodać wejścia, ale nie wyjścia, do transakcji CTV. Możesz więc wprowadzić własną opłatę, tak jak w projekcie APO, ale nie możesz dodać zobowiązania do nagłówka bloku łańcucha bocznego.

Więc to, co musimy tutaj zrobić, to utworzyć transakcję całkowicie poza łańcuchem transakcji CTV dla zobowiązania w łańcuchu bocznym do utworzenia UTXO, które wystarczy tylko na zapłacenie opłaty za transakcję CTV (ponieważ nie można utworzyć nowego wyniku zmiany w ta transakcja, 100% dodanych danych wejściowych idzie na opłaty), a wewnątrz transakcji przygotowującej opłatę UTXO to miejsce, w którym zobowiązujemy się do nagłówka bloku sidechain. Tak więc pierwszy krok: transakcja tworząca wyjście płatności opłaty i zobowiązanie do nagłówka bloku łańcucha bocznego. Drugi krok: pobieramy opłatę wyjściową i dodajemy ją jako dane wejściowe do transakcji CTV, która po potwierdzeniu „wykopuje” nasz konkretny blok łańcucha bocznego. Ten wariant wygląda tak:

Źródło

Kolejny wariant po prostu wykorzystuje wstępnie podpisane transakcje. Może zostać wdrożony już dziś, ale ze względu na ograniczenia tego, co może zrobić skrypt, wymaga uiszczenia z góry wszystkich opłat za transakcje przez osobę, która tworzy łańcuch kosmiczny.

Łańcuch transakcji zaczyna się od pojedynczego UTXO, aw łańcuchu tworzy dwa wyjścia. Pierwszym wyjściem jest znacznik UTXO, który sygnalizuje, że łańcuch transakcji jest powiązany z konkretnym łańcuchem kosmicznym, drugim jest małowartościowe UTXO, które może otwarcie wydać każdy, kto pozwala na dołączenie do niego kolejnego wejścia/wyjścia. Ta druga transakcja polega na tym, że każdy może otwarcie zadeklarować, że będzie pierwszym, który wyda drugie wyjście z łańcucha transakcji łańcucha kosmicznego i użyć go do zatwierdzenia swojego nagłówka bloku łańcucha bocznego.

W wariancie CTV, blok sidechain musiał zostać zatwierdzony w transakcji wtórnej, ponieważ CTV nie pozwala na dodawanie nowych wyjść w transakcji z wykorzystaniem wejścia zablokowanego przez CTV. Ten wariant wymaga użycia transakcji drugorzędnej, ponieważ jeśli dodasz jakiekolwiek nowe wejścia lub wyjścia do wstępnie podpisanego łańcucha, zmienisz TXID transakcji i unieważnisz wszystkie wstępnie podpisane transakcje, które następują po nim. Ten wariant wygląda tak: 

Źródło

Jedyną wadą tego ostatniego wariantu jest to, że jeśli ktokolwiek wstępnie podpisał wszystkie transakcje do użycia dla zobowiązań blokowych w łańcuchu bocznym, nie usunie kluczy prywatnych użytych do tego, może skutecznie zatrzymać łańcuch, wydając dwukrotnie bieżący znacznik UTXO w dowolnym czas.

I masz to. Jest to najnowsza propozycja projektu łańcucha bocznego w Bitcoin i może być zaimplementowana na trzy różne sposoby, z oczywistym zastrzeżeniem, że ścieżka implementacji, którą można teraz wykonać, ma problem z wymaganiem od kogoś usunięcia klucza prywatnego.

Ten artykuł jest po prostu pierwszym z serii dotyczącej głównych propozycji projektowych łańcucha bocznego, które zostały opublikowane dla Bitcoin od czasu pierwotnego projektu z 2014 roku. Miej oko na resztę.

To jest gościnny post Shinobi. Wyrażone opinie są całkowicie ich własnymi i niekoniecznie odzwierciedlają opinie BTC Inc lub Bitcoin Magazine.

Znak czasu:

Więcej z Magazyn Bitcoin