Gdzie idzie napis?
Przedmowa
6 grudnia 2023 r., kiedy inwestorzy Bitcoina wiwatowali z zysków, jakie Inskrypcje przyniosły Bitcoinowi, Luke Dashjr, twórca klienta węzła Bitcoin Core, oblał go zimną wodą. Uważał, że napis był atakiem „spamowym” i przesłał kod naprawczy oraz raport o podatności CVE (CVE-2023-50428). Następnie społeczność Bitcoin eksplodowała, po raz kolejny pogrążona w gorącej debacie po chaosie związanym z hard forkiem w 2017 roku.

Czy zatem Bitcoin powinien zwracać większą uwagę na bezpieczeństwo i porzucić niektóre nieoczekiwane funkcje, czy też powinien być bardziej tolerancyjny na nieoczekiwane innowacje i nieco tolerancyjny na możliwe problemy bezpieczeństwa?
Wiemy, że historia Bitcoina to nie tylko spekulacje i szum medialny; to także ciągła ewolucja jego ekosystemu i bezpieczeństwa. Niniejszy artykuł ma na celu zgłębienie dwóch narracji rozwoju Bitcoina: jego rosnącej użyteczności i wzmacniania środków bezpieczeństwa w jego ekosystemie. Przeanalizujemy, jak synergia innowacji i solidnych protokołów bezpieczeństwa toruje drogę do nowej ery dla aktywów cyfrowych.
Przegląd ekosystemu BTC i podstawowa wiedza
Wiemy, że Bitcoin, będący kamieniem węgielnym rewolucji kryptowalutowej, zawsze był postrzegany jako środek przechowywania wartości, taki jak złoto. Podczas gdy inne innowacje w zakresie publicznych łańcuchów DEFI są w pełnym rozkwicie, ludzie zdają się zapominać o istnieniu Bitcoina.
Jednak to właśnie na Bitcoinie pionierzy rozpoczęli pierwsze eksperymenty ze stablecoinami, Layer 2, a nawet DeFi. Na przykład, obecna twarda waluta USDT została po raz pierwszy wyemitowana w sieci Bitcoin Omnilayer. Poniższy rysunek przedstawia podstawową klasyfikację ekosystemu Bitcoin z perspektywy implementacji technicznej.

W tym łańcuchy boczne oparte na dwukierunkowym kotwiczeniu, analiza tekstu oparta na skryptach wyjściowych (OP_RETURN), grawerowanie oparte na skryptach Taproot, łańcuchy napędowe oparte na aktualizacjach i udoskonaleniach BIP300 oraz sieci Lightning oparte na kanałach stanu.
Wiele z powyższych terminów może Ci nie być znanych. Bez obaw, najpierw zapoznamy się z podstawami poniżej, a następnie wyjaśnimy po kolei zasady techniczne tych ekosystemów i omówimy związane z nimi kwestie bezpieczeństwa.
UTXO to podstawowa jednostka transakcji Bitcoin
W przeciwieństwie do systemu sald kont Ethereum, Bitcoin nie posiada koncepcji kont. Ethereum wykorzystuje cztery złożone algorytmy Merkle Patricia Tries do przechowywania i weryfikacji zmian statusu konta. Natomiast Bitcoin sprytnie wykorzystuje UTXO, aby zwięźle rozwiązać te problemy.

Cztery drzewa Ethereum

Wejścia i wyjścia Bitcoina
UTXO (niewykorzystane dane wyjściowe transakcji) może brzmieć nieco niezręcznie, ale łatwo to zrozumieć, gdy pozna się koncepcje danych wejściowych, wyjściowych i transakcji.
Wejścia i wyjścia transakcji
Osoby zaznajomione z Ethereum powinny wiedzieć, że transakcje stanowią podstawową jednostkę komunikacji w sieciach blockchain. Po umieszczeniu transakcji w bloku i jej potwierdzeniu, oznacza to finalizację zmiany stanu w łańcuchu. Transakcje Bitcoin nie są natomiast prostymi operacjami stanu typu adres-adres, lecz składają się z wielu skryptów wejściowych i wyjściowych.

Powyższy obrazek przedstawia typową transakcję Bitcoin w stosunku 2 do 2. Teoretycznie, kwoty wejściowe i wyjściowe BTC powinny być równe. Jednak w praktyce, pozostała część BTC jest wykorzystywana przez producenta bloku jako opłata transakcyjna, równoważna opłacie za gaz w Ethereum.
Widzimy, że gdy dwa adresy wejściowe przesyłają BTC, muszą zostać zweryfikowane w skrypcie wejściowym, aby udowodnić, że mogą wydać dwa wejścia (czyli niewydane wyjście z poprzedniej transakcji, UTXO). Skrypt wyjściowy określa warunki wydania dwóch bitcoinów wyjściowych, czyli jakie warunki powinny zostać spełnione, gdy niewydane wyjście zostanie użyte jako wejście następnym razem (w przypadku zwykłych transferów warunkiem jest podpis adresu wyjściowego. Na przykład, na powyższym rysunku, P2wPKH oznacza, że wymagana jest weryfikacja podpisu adresu głównego, podczas gdy P2PKH oznacza, że wymagany jest podpis klucza prywatnego starego adresu).
Dokładniej, struktura danych transakcji Bitcoin wygląda następująco:

Transakcja Bitcoin składa się z dwóch kluczowych elementów: danych wejściowych i danych wyjściowych. Dane wejściowe identyfikują inicjatora transakcji, a dane wyjściowe identyfikują odbiorcę i ewentualną resztę. Opłata transakcyjna stanowi różnicę między sumą danych wejściowych a sumą danych wyjściowych. Ponieważ każda transakcja wejściowa jest jednocześnie danymi wyjściowymi z poprzedniej transakcji, dane wyjściowe stanowią kluczowy element struktury transakcji.
Ta struktura tworzy łańcuch połączeń. W sieci Bitcoin każdą legalną transakcję można powiązać z wynikami jednej lub kilku poprzednich transakcji. Te łańcuchy transakcji rozpoczynają się od nagród za wydobycie, a kończą na niewydanych wynikach transakcji. Wszystkie niewydane wyniki w sieci są zbiorczo nazywane UTXO (Unspent Transaction Outputs – niewydane wyniki transakcji) w sieci Bitcoin.
W sieci Bitcoin, każda nowa transakcja musi zawierać niewydane dane wyjściowe. Co więcej, każde dane wejściowe wymagają podpisu z odpowiedniego klucza prywatnego poprzedniego wyniku. Każdy węzeł w sieci Bitcoin przechowuje wszystkie niewydane dane wyjściowe (UTXO) w bieżącym blockchainie, aby zweryfikować legalność nowych transakcji. Ten mechanizm weryfikacji UTXO i podpisów pozwala węzłom weryfikować legalność nowych transakcji bez konieczności śledzenia całej historii transakcji, co upraszcza obsługę i konserwację sieci.
Unikalna struktura transakcji Bitcoina została zaprojektowana zgodnie z dokumentem White Paper (Bitcoin: Elektroniczny System Gotówki Peer-to-Peer). Bitcoin to elektroniczny system gotówkowy, którego struktura transakcyjna symuluje proces transakcji gotówkowych. Kwota, którą można wydać z danego adresu, zależy od ilości gotówki otrzymanej wcześniej. Każda transakcja wymaga wydania całej kwoty gotówki na tym adresie. Adresy wyjściowe transakcji to zazwyczaj jeden adres odbiorczy i jeden adres reszty, podobnie jak w przypadku transakcji gotówkowych w supermarkecie.
Scenariusz
Skrypty odgrywają kluczową rolę w sieci Bitcoin. W rzeczywistości każdy wynik transakcji Bitcoin wskazuje na skrypt, a nie na konkretny adres. Skrypty te działają jak zestaw reguł, definiując sposób, w jaki odbiorca może wydać środki zablokowane w wyniku.
Weryfikacja ważności transakcji opiera się na dwóch typach skryptów: skryptach blokujących i skryptach odblokowujących. Skrypty blokujące, obecne w danych wyjściowych transakcji, definiują warunki wymagane do odblokowania tych danych. Skrypty odblokowujące z kolei muszą spełniać reguły zdefiniowane przez skrypt blokujący, aby odblokować UTXO. Skrypty te znajdują się w danych wejściowych transakcji. Elastyczność języka skryptowego Bitcoina pozwala na szeroki wachlarz kombinacji warunkowych, co dowodzi jego natury jako „częściowo programowalnego pieniądza”.
W sieci Bitcoin każdy węzeł uruchamia interpreter stosu, który interpretuje te skrypty na podstawie reguły „pierwsze weszło, pierwsze wyszło”.
Istnieją dwa główne typy klasycznych skryptów Bitcoin: P2PKH (Pay-to-Public-Key-Hash) i P2SH (Pay-to-Script-Hash). P2PKH to prosty typ transakcji, w którym odbiorca musi jedynie podpisać się odpowiednim kluczem prywatnym, aby wydać aktywa. P2SH jest bardziej złożony i wymaga łącznego podpisania wielu kluczy prywatnych, aby wydać aktywa, na przykład w scenariuszach z wieloma podpisami.
Te skrypty i mechanizmy weryfikacji stanowią łącznie podstawowy tryb działania sieci Bitcoin, gwarantując bezpieczeństwo i elastyczność transakcji.
Na przykład w przypadku Bitcoina reguły skryptu wyjściowego P2PKH są następujące:
Skrypt klucza pubkey: OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG
Dane wejściowe wymagają podpisu
Skrypt podpisu: sig
Reguły skryptu wyjściowego P2SH są następujące:
Skrypt klucza pubkey: OP_HASH160 OP_EQUAL
Dane wejściowe muszą zawierać listę z wieloma podpisami
Skrypt podpisu: [powiedz] [powiedz...]
W dwóch opisanych powyżej regułach skryptu, skrypt Pubkey reprezentuje skrypt blokujący, a skrypt Signature reprezentuje skrypt odblokowujący. Słowa rozpoczynające się od OP_ to polecenia skryptu, instrukcje, które węzły mogą interpretować. Reguły poleceń są podzielone na podstawie skryptu Pubkey, który określa również reguły skryptu odblokowującego.
Mechanizm skryptowy w Bitcoinie jest stosunkowo prosty – to silnik oparty na stosie, który interpretuje powiązane instrukcje OP. Potrafi on analizować ograniczoną liczbę reguł skryptowych i nie może implementować złożonej logiki. Stanowił on jednak prototyp programowalności blockchaina, a kolejne projekty ekosystemowe rozwijały się w oparciu o zasady skryptowania. Dzięki aktualizacjom SegWit i Taproot, typy instrukcji OP stały się bardziej zróżnicowane, a rozmiar skryptu, który można uwzględnić w każdej transakcji, został zwiększony, co zapoczątkowało gwałtowny rozwój ekosystemu Bitcoina.
Zasady technologii inskrypcji i kwestie bezpieczeństwa
Popularność technologii inskrypcji jest nierozerwalnie związana z aktualizacjami Segregated Witness i Taproot w Bitcoinie.
Z technicznego punktu widzenia, im bardziej zdecentralizowany jest blockchain, tym generalnie jest mniej wydajny. Na przykład bloki Bitcoina utrzymują rozmiar 1 MB, czyli taki sam jak pierwszy blok wydobyty przez Satoshiego Nakamoto. W obliczu wyzwania skalowania, społeczność Bitcoina zdecydowała się nie tylko zwiększyć rozmiar bloku. Zamiast tego wdrożyła metodę Segregated Witness (SegWit), aktualizację bez twardego forka, mającą na celu zwiększenie mocy obliczeniowej i wydajności sieci poprzez optymalizację struktury danych w blokach.
Oddzielony świadek
W transakcjach Bitcoin każda transakcja składa się z dwóch głównych komponentów: podstawowych danych transakcyjnych i danych świadków. Podstawowe dane transakcyjne obejmują kluczowe informacje finansowe, takie jak salda kont, natomiast dane świadków weryfikują tożsamość użytkownika. Użytkownicy interesują się przede wszystkim informacjami bezpośrednio związanymi z ich aktywami, takimi jak salda kont, podczas gdy szczegółowa weryfikacja tożsamości nie wymaga znacznych nakładów finansowych w transakcji. Innymi słowy, odbiorca zasobu jest zainteresowany przede wszystkim jego dostępnością, a nie danymi nadawcy.
Jednak w strukturze transakcyjnej Bitcoina dane świadków (tj. informacje o podpisach) zajmują znaczną ilość miejsca na dysku, co zmniejsza wydajność transferu i zwiększa koszty przetwarzania transakcji. Aby rozwiązać ten problem, wprowadzono technologię Segregated Witness (SegWit). Jej główną ideą jest oddzielenie danych świadków od głównych danych transakcyjnych i przechowywanie ich osobno. Optymalizuje to wykorzystanie przestrzeni dyskowej, zwiększając tym samym wydajność transakcji i redukując koszty.

W ten sposób, podczas gdy pierwotny rozmiar bloku 1 MB pozostaje niezmieniony, każdy blok może pomieścić więcej transakcji, a posegregowane dane świadków (czyli różne skrypty podpisów) mogą zająć dodatkowe 3 MB przestrzeni, tworząc podstawę pamięci masowej do wzbogacania instrukcji skryptów Taproot.
Macica
Taproot to poważna aktualizacja sieci Bitcoin, tzw. soft fork, mająca na celu poprawę prywatności i wydajności skryptu Bitcoin oraz możliwości przetwarzania inteligentnych kontraktów. Aktualizacja ta jest uważana za znaczący postęp od czasu aktualizacji SegWit z 2017 roku.
Aktualizacja Taproot obejmuje trzy odrębne propozycje udoskonaleń Bitcoina (BIP): Taproot (Merkel Abstract Syntax Tree, MAST), Tapscript oraz nowy, przyjazny dla wielu podpisów schemat podpisów cyfrowych o nazwie Schnorr Signatures. Taproot ma na celu zapewnienie wielu korzyści użytkownikom Bitcoina, w tym większej prywatności transakcji i niższych kosztów transakcyjnych. Ponadto, zwiększy możliwości Bitcoina w zakresie realizacji bardziej złożonych transakcji, rozszerzając tym samym zakres jego zastosowań.
Aktualizacja Taproot miała bezpośredni wpływ na trzy ekosystemy: protokół liczb porządkowych, który wykorzystywał skrypty Taproot do wydawania ścieżek skryptowych w celu dołączania danych; aktualizację Lightning Network do Taproot Asset, która ewoluowała od prostych płatności BTC typu punkt-punkt do płatności typu punkt-do-wielu i obsługiwała emisję nowych aktywów; oraz nowo zaproponowaną technologię BitVM, która „wytrawiała” obwody boolowskie w skryptach Taproot za pomocą metod op_bool i op_not Taproot, wdrażając w ten sposób funkcjonalność inteligentnych maszyn wirtualnych kontraktów.
Liczby porządkowe
Ordinals to protokół wynaleziony przez Caseya Rodarmora w grudniu 2022 roku, który przypisuje unikalne numery seryjne do każdego satoshi i śledzi je w transakcjach. Ordinals pozwalają każdemu dołączyć dodatkowe dane, w tym tekst, obrazy, filmy i inne, do skryptu Taproot obiektu UTXO.
Osoby zaznajomione z liczbami porządkowymi wiedzą, że istnieje łącznie 21 milionów Bitcoinów, z których każdy zawiera 10^8 Satoshi. Oznacza to, że w sieci Bitcoin istnieje łącznie 21 milionów * 10^8 Satoshi. Protokół Ordinals rozróżnia te Satoshi, przypisując każdemu unikalny numer. Teoretycznie jest to możliwe, ale niepraktyczne.
Aby chronić się przed atakami typu „pył”, sieć BTC ma minimalny limit transferu wynoszący 546 satoshi (294 satoshi dla Segwit), co oznacza, że transfery o wartości 1 satoshi są niedozwolone. W zależności od typu adresu transferu, należy przesłać co najmniej 546 lub 294 satoshi. Zgodnie z teorią numeracji ordinals FIFO, co najmniej satoshi od 1 do 294 w każdym bloku są niepodzielne.
Tak zwany grawerunek nie jest zatem grawerowany na konkretnym satoshi, ale grawerowany w skrypcie transakcji. Ta transakcja musi zawierać transfer co najmniej 294 satoshi, a następnie scentralizowany indeksator (taki jak Unisat) będzie śledził i identyfikował transfer tych 294 lub 456 satoshi.
Jak kodowane są inskrypcje w transakcjach
Zasadniczo skrypt Taproot można wydać tylko z istniejącego wyjścia Taproot, dlatego inskrypcje powinny być generowane w dwufazowym procesie zatwierdzania/ujawniania. Najpierw, w transakcji zatwierdzania, na podstawie zawartości ścieżki skryptu, tworzone jest wejście Taproot, a w wyjściu określane są warunki podpisu dla wydatkowania/ujawniania. Następnie, w transakcji ujawniania, dane wyjściowe utworzone przez transakcję zatwierdzania są wydawane, ujawniając zawartość inskrypcji w łańcuchu.
Jednak w rzeczywistych scenariuszach indeksowania cel księgowania transakcji nie jest szczególnie istotny. Zamiast tego fragment skryptu składający się z sekwencji OP_FALSE OP_IF ... OP_ENDIF jest odczytywany bezpośrednio ze skryptu wejściowego w celu odczytania zawartości inskrypcji.
Ponieważ kombinacja poleceń OP_FALSE OP_IF spowoduje, że skrypt nie zostanie wykonany, możesz zapisać w nim dowolne bajty bez wpływu na oryginalną logikę skryptu.
Napis tekstowy zawierający ciąg znaków „Witaj, świecie!” jest serializowany w następujący sposób:
OP_FALSE OP_IF OP_PUSH "zamówienie"OP_1OP_PUSH
"text/plain;charset=utf-8"OP_0OP_PUSH "Witaj, świecie!"OP_ENDIF
Protokół Ordinals zasadniczo serializuje ten kod do skryptu Taproot.
Znajdźmy transakcję w łańcuchu, aby szczegółowo wyjaśnić zasadę kodowania liczb porządkowych:
https://explorer.btc.com/btc/transaction/885d037ed114012864c031ed5ed8bbf5f95b95e1ef6469a808e9c08c4808e3ae
Możemy przejrzeć szczegóły tej transakcji:

Analizując kodowanie pola świadka zaczynając od 0063 (OP_FALSE OP_IF), możemy zrozumieć serializowaną zawartość kodowania:

Zatem, o ile potrafimy zdekodować tę część pisma świadka, możemy poznać treść inskrypcji. Kodowanie tutaj to zwykły tekst, a inne dane, takie jak HTML, obrazy, filmy itp., są podobne.
Teoretycznie możesz również zdefiniować własną zakodowaną treść, a nawet zaszyfrowaną treść, którą znasz tylko Ty, ale takiej treści nie da się wyświetlić w przeglądarkach porządkowych.
BRC20
9 marca 2023 roku anonimowy użytkownik Twittera o nicku domo napisał na Twitterze o stworzeniu standardu tokenów zamiennych w oparciu o protokół Ordinals, nazywając go standardem BRC20. Idea polega na tym, że dane w postaci ciągu znaków JSON można zapisać w skrypcie Taproot za pomocą protokołu Ordinals, aby wdrażać, tworzyć i przesyłać zamienne tokeny BRC-20.
Rysunek 1: Skromne początki tokenów BRC-20 (pierwszy wpis domo na ten temat)

Źródło: Twitter (@domodata)
Rysunek 2: Trzy możliwe początkowe operacje dla tokena BRC-20 (p = nazwa protokołu, op = operacja, tick = ticker/identyfikator, max = maksymalna podaż, lim = limit wybicia, amt = kwota)

Źródło: https://domo-2.gitbook.io/brc-20-experiment/, Binance Research
Inicjator tokena wdraża token BRC20 do blockchaina za pomocą metody „deployment”. Uczestnicy następnie emitują tokeny praktycznie za darmo (pobierana jest jedynie opłata za wydobycie). Gdy kwota emisji przekroczy limit, inskrypcja inskrypcji jest unieważniana przez indeksatora. Następnie adres przechowujący token może go przenieść za pomocą inskrypcji transferu.
Warto zauważyć, że Casey, założyciel Ordinals, jest niezwykle niezadowolony z faktu, że transakcje BRC-20 dominują w protokole Ordinals. Publicznie stwierdził, że BRC-20 wprowadził wiele błędów do jego projektu Ordinals. W związku z tym zespół Caseya publicznie wysłał list do Binance z prośbą o usunięcie słowa „Ordinals” z opisu tokena ORDI, stwierdzając, że nie chce, aby protokół Ordinals był kojarzony z ORDI.
Rozszerzony protokół
Zamiana BRC20
Unisat, największy rynek, indeksator i dostawca portfeli dla transakcji BRC20, zaproponował protokół wymiany BRC20 dla transakcji BRC20, który jest już dostępny do testowania dla wczesnych użytkowników.
Wcześniej transakcje inskrypcyjne mogły być przeprowadzane wyłącznie za pomocą metody PSBT (Partially Signed Bitcoin Transaction), podobnej do systemu podpisów poza łańcuchem Opensea, który opiera się na scentralizowanej usłudze „dopasowywania” podpisów kupujących i sprzedających. W rezultacie aktywa BRC20 były przedmiotem obrotu wyłącznie za pośrednictwem ksiąg zleceń, podobnie jak aktywa NFT, co skutkowało niską płynnością i wydajnością transakcji.
Wymiana BRC20 wprowadza mechanizm modułu w ciągu JSON protokołu BRC20. Moduł ten może wdrażać zestaw skryptów, podobnie jak inteligentne kontrakty. Na przykład, w module wymiany, użytkownicy mogą zablokować tokeny BRC20 w module poprzez transakcję transferu, inicjując w zasadzie transakcję transferu do siebie. Jednak inskrypcja w transakcji jest blokowana w module. Po zakończeniu transakcji lub wypłaceniu LP, użytkownik może zainicjować transakcję w celu wypłacenia tokenów BRC20.
Obecnie swap brc20 działa w trybie rozszerzonym, wykorzystując czarny moduł. Moduł ten został zaprojektowany ze względów bezpieczeństwa. Bez konsensusu i weryfikacji, całkowita kwota środków w module jest wykorzystywana do określenia kwoty, którą użytkownicy mogą wypłacić. Oznacza to, że żaden użytkownik nie może wypłacić więcej niż całkowita kwota środków zablokowanych w module.

Gdy użytkownicy zrozumieją i zaimplementują działanie modułu czarnego, stopniowo stanie się on niezawodny i zostanie zaakceptowany przez większą liczbę indeksatorów, produkt przejdzie z modułu czarnego do modułu białego, osiągając konsensus w sprawie aktualizacji. Użytkownicy będą mogli wówczas swobodnie wpłacać i wypłacać aktywa.

Ponadto, ponieważ protokół BRC20 i cały ekosystem Ordinals są wciąż na wczesnym etapie rozwoju, Unisat cieszy się znacznym wpływem i renomą. Oferuje kompleksowe usługi indeksowania, w tym zapytania o transakcje i saldo, dla protokołu, co niesie ze sobą ryzyko centralizacji ze względu na jednego dominującego gracza. Jednak jego modułowa architektura umożliwia udział szerszego grona dostawców usług, co dodatkowo decentralizuje indeks.
BRC420
Protokół Brc420 został opracowany przez firmę RCSV. Do oryginalnych inskrypcji dodano rekurencyjne rozszerzenie indeksowania. To rekurencyjne podejście definiuje bardziej złożony format zasobu. Co więcej, Brc420 ustanawia wiążącą relację między prawami użytkowania a opłatami licencyjnymi w oparciu o pojedynczą inskrypcję. Kiedy użytkownicy tworzą zasób, płacą tantiemy twórcy. Posiadanie inskrypcji pozwala im przydzielać prawa użytkowania i ustalać za nią ceny, co sprzyja dalszym innowacjom w ekosystemie Ordinals.
Wprowadzenie Brc420 otwiera szersze pole do popisu dla ekosystemu inskrypcji. Oprócz budowania bardziej złożonego metawersum poprzez rekurencyjne odwołania, możliwe jest również zbudowanie ekosystemu inteligentnych kontraktów poprzez rekurencyjne odwołania do inskrypcji kodu.
ARC20
Standard tokena ARC20 opiera się na protokole Atomicals, w którym atomy są podstawowymi jednostkami, zbudowanymi na bazie najmniejszej jednostki Bitcoina – satoshi (sat). Oznacza to, że każdy token ARC20 jest zawsze zabezpieczony 1 sat. Co więcej, ARC20 to pierwszy protokół tokenów, który został stworzony za pomocą inskrypcji proof-of-work (PoW), umożliwiając uczestnikom bezpośrednie wydobywanie inskrypcji lub NFT w sposób podobny do wydobywania Bitcoina.
Przyrównanie 1 tokena ARC20 do 1 sat przynosi kilka korzyści:
1. Po pierwsze, wartość każdego tokena ARC20 nigdy nie będzie niższa niż 1 sat, co sprawia, że Bitcoin pełni w tym procesie funkcję „cyfrowej kotwicy złota”.
2. Po drugie, podczas weryfikacji transakcji konieczne jest jedynie zapytanie o UTXO odpowiadające sat, co stanowi kontrast ze złożonością BRC20, która wymaga rejestrów stanu rejestru poza łańcuchem i sortowników zewnętrznych.
3. Ponadto wszystkie operacje ARC20 można wykonać za pośrednictwem sieci Bitcoin, bez konieczności wykonywania dodatkowych kroków.
4. Wreszcie, ze względu na kompozycyjność UTXO, teoretycznie możliwa jest bezpośrednia wymiana tokenów ARC20 na Bitcoin, co stwarza możliwości przyszłej płynności.
Protokół Atomicals ustawia specjalny parametr prefiksu dla Bitwork Mining dla tokenów ARC20. Emitenci tokenów mogą wybrać specjalny prefiks, a użytkownicy muszą obliczyć pasujący prefiks poprzez kopanie na procesorze, aby kwalifikować się do wybijania tokenów ARC20. Ten model „jeden procesor, jeden głos” jest zgodny z filozofią fundamentalistów Bitcoina.
Czy napis jest bezpieczny?
Napis wydaje się być jedynie „nieszkodliwym” fragmentem tekstu przesłanym do łańcucha i przeanalizowanym przez scentralizowany indeksator. Wygląda na to, że kwestia bezpieczeństwa dotyczy jedynie bezpieczeństwa scentralizowanej usługi. Jednak z punktu widzenia bezpieczeństwa w łańcuchu, nadal należy zwrócić uwagę na następujące kwestie:
Problemy bezpieczeństwa w łańcuchu
1. Zwiększ obciążenie węzła
Inskrypcje zwiększają rozmiar bloków Bitcoin, co z kolei zwiększa zasoby wymagane przez węzły do propagacji, przechowywania i weryfikacji bloków w sieci. Zbyt duża liczba inskrypcji zmniejsza decentralizację sieci Bitcoin i zwiększa jej podatność na ataki.
2. Obniżone bezpieczeństwo
Inskrypcje mogą służyć do przechowywania dowolnego typu danych, w tym złośliwego kodu, który, jeśli zostanie dodany do bloku Bitcoin, może doprowadzić do naruszenia bezpieczeństwa sieci.
3. Transakcje muszą być ustrukturyzowane
Transakcja inskrypcji wymaga konstrukcji transakcji i przestrzegania reguły FIFO liczb porządkowych, aby zapobiec zniszczeniu indeksowości inskrypcji z powodu przypadkowego błędu.
4. Kupowanie i sprzedawanie wiąże się z ryzykiem
Obrót instrumentami pochodnymi, niezależnie od tego, czy odbywa się na rynku OTC czy PSBT, niesie ze sobą ryzyko utraty aktywów.
Konkretne problemy bezpieczeństwa
1. Zwiększona liczba bloków sierot i rozwidleń
Inskrypcje zwiększają rozmiar bloku, co z kolei zwiększa częstotliwość bloków osieroconych i rozwidleń. Bloki osieroconych to bloki nierozpoznawane przez inne węzły, natomiast rozwidlenia to istnienie wielu konkurujących ze sobą blockchainów w sieci. Te bloki osieroconych i rozwidlenia mogą zmniejszać stabilność i bezpieczeństwo sieci.
2. Napastnik zmanipulował napis
Napastnicy mogą wykorzystać otwartość napisów do przeprowadzenia ataków manipulacyjnych.
Na przykład atakujący może zastąpić informacje zapisane w inskrypcji złośliwym kodem, w ten sposób infiltrując serwer indeksatora lub atakując urządzenie użytkownika za pomocą konia trojańskiego.
3. Niewłaściwe użycie portfela
Jeżeli portfel jest używany nieprawidłowo i nie można zindeksować inskrypcji, istnieje duże prawdopodobieństwo, że inskrypcja zostanie przeniesiona nieprawidłowo, co doprowadzi do utraty zasobów.
4. Phishing lub oszustwa
Napastnicy mogą wykorzystywać fałszywe witryny indeksujące, takie jak unisat, aby nakłonić użytkowników do przeprowadzania transakcji rejestracyjnych i kradzieży zasobów użytkowników.
5. Pominięcie podpisu PSBT
Atomicals Market kiedyś spowodował uszkodzenie zasobów użytkowników z powodu użycia nieprawidłowych metod podpisywania.
Powiązane materiały:
<Analiza strat aktywów użytkowników rynku atomowego>
https://metatrust.io/company/blogs/post/analiza-strat-aktywów-użytkownika-na-rynku-atomowym
Co można zrobić?
1. Ogranicz rozmiar napisów
Rozmiar napisów można ograniczyć, aby zmniejszyć obciążenie węzłów, co już zrobił Luke, o czym wspomniał na początku artykułu.
2. Zaszyfruj napis
Napis można zaszyfrować, aby zapobiec atakom złośliwego kodu.
3. Użyj wiarygodnego źródła inskrypcji
Aby zapobiec problemom z podpisami i próbom wyłudzania informacji, można skorzystać z zaufanego źródła podpisu.
4. Użyj portfela obsługującego inskrypcje
Do wykonywania przelewów używaj portfela obsługującego usługę Inscription.
5. Zwróć uwagę na przegląd kodów inskrypcyjnych i powiązanych z nimi pism
W nowych eksperymentach brc20-swap i inskrypcjach rekurencyjnych, ze względu na wprowadzenie kodów i powiązanych skryptów, konieczne jest zapewnienie bezpieczeństwa tych kodów i skryptów.
Streszczać
Z technicznego i bezpieczeństwa punktu widzenia, inskrypcje Bitcoin stanowią zasadniczo lukę w zabezpieczeniach umożliwiającą obejście reguł. Skrypt taproot nie został zaprojektowany do przechowywania danych, a jego bezpieczeństwo również stwarza pewne problemy. Modyfikacje wprowadzone przez Luke'a do kodu źródłowego Bitcoin są poprawne z punktu widzenia bezpieczeństwa. Nie modyfikował on bezpośrednio warstwy konsensusu Bitcoina. Zamiast tego zmodyfikował moduł Filtra Spamowego, umożliwiając węzłom automatyczne filtrowanie transakcji Ordinals podczas odbierania wiadomości rozgłoszeniowych P2P. W ramach tego Filtra Spamowego kilka funkcji o nazwie isStandard() sprawdza, czy różne aspekty transakcji spełniają standardy. Jeśli transakcja nie spełnia tych standardów, węzeł natychmiast ją odrzuci.
Innymi słowy, chociaż transakcje Ordinals zostaną ostatecznie uwzględnione w blockchainie, większość węzłów nie uwzględni ich w swoich pulach transakcji, co zwiększy opóźnienie w odbiorze Ordinals przez pule wydobywcze, które zechcą je uwzględnić w blockchainie. Jeśli jednak pula wydobywcza rozgłosi blok zawierający transakcję BRC-20, inne węzły nadal go rozpoznają.
Luke wprowadził już zmiany w filtrze zasad w kliencie Bitcoin Knots i planuje wprowadzić podobne zmiany w kliencie Bitcoin Core. W tej aktualizacji wprowadził nowy parametr o nazwie g_script_size_policy_limit, aby ograniczyć rozmiar skryptu w kilku różnych lokalizacjach. Ta zmiana oznacza, że rozmiar skryptu będzie podlegał dodatkowym ograniczeniom podczas przetwarzania transakcji, wpływając na sposób ich akceptacji i przetwarzania.

Obecnie domyślna wartość tego parametru to 1650 bajtów. Każdy klient węzła może ją ustawić, używając parametru -maxscriptsize podczas uruchamiania:


Jednak nawet jeśli kod zostanie zaktualizowany, aktualizacja wszystkich węzłów wydobywczych do nowej wersji zajmie dużo czasu. W tym czasie innowatorzy ze społeczności Inscription powinni być w stanie stworzyć bezpieczniejszy protokół.
Firma Metatrust Labs oceniała i monitorowała ryzyko inwestycyjne związane z inskrypcjami na platformie metaScore, wykorzystując dane on-chain i śledzenie aktywów. Jednocześnie uruchomiła moduł reguł monitorowania sieci Bitcoin na platformie metaScout, aby pomóc inwestorom monitorować dane dotyczące inskrypcji Bitcoin w czasie rzeczywistym.
W tym numerze omawiamy zasady techniczne i potencjalne problemy bezpieczeństwa popularnego obecnie ekosystemu inskrypcji. W kolejnym numerze przedstawimy bardziej złożoną technologię wytrawiania obwodów Taproot – bitVM. Bądźcie czujni.
O MetaTrust Labs
MetaTrust Labs, inkubowane na Uniwersytecie Technologicznym Nanyang w Singapurze, jest wiodącym dostawcą narzędzi bezpieczeństwa Web3 opartych na sztucznej inteligencji (AI) oraz usług audytu kodu. Oferujemy zaawansowane rozwiązania AI, które umożliwiają programistom i interesariuszom ochronę aplikacji Web3 i inteligentnych kontraktów. Nasze kompleksowe usługi obejmują skanowanie bezpieczeństwa AI, audyt kodu, monitorowanie inteligentnych kontraktów i monitorowanie transakcji. Integrując AI, zapewniamy bezpieczny ekosystem i wzmacniamy zaufanie między użytkownikami i programistami.
Oficjalna strona internetowa: https://www.metatrust.io/
Twitter: https://twitter.com/MetaTrustLabs
Linkedin: https://www.linkedin.com/in/metatrust

