1. Tło Bitcoina
Bitcoin przyjmuje model transakcji gotówkowej (system gotówkowy), a jego metoda płatności opiera się na modelu zwanym UTXO, który różni się od tradycyjnego modelu opartego na saldzie konta.

Na przykład: W procesie modelu księgowego rachunku bankowego, kiedy A przekazuje 100 juanów B, bank zarejestruje trzy kroki, które stanowią proces transakcyjny. Pierwszym krokiem jest pobranie 100 juanów z konta A. Identyfikator rekordu tego kroku to tid1. Drugim krokiem jest wpłata 100 juanów na konto B. Identyfikator rekordu tego kroku to tid2. Trzecim krokiem jest zarejestrowanie rekordu przelewu, który kojarzy tid1 i tid2, wskazując, że na koncie A zmniejsza się o 100 juanów, a na koncie B wzrasta o 100 juanów.
W ten sposób rejestrowany jest związek przekazania między A i B, co umożliwia jego sprawdzanie i śledzenie w przyszłości. Teraz wyjaśnimy metodę płatności Bitcoinem poprzez wprowadzenie UTXO i modelu płatności.
UTXO
W łańcuchu bloków Bitcoin wszystkie salda są przechowywane na liście o nazwie „Niewydane dane wyjściowe transakcji” (UTXO). Każde UTXO zawiera pewną ilość Bitcoinów, informacje o właścicielu i statusie dostępności, podobnie jak czek z imieniem i nazwiskiem posiadacza. Czek ten może zostać podpisany i przekazany innej osobie.
Saldo adresu jest równe sumie wszystkich jego UTXO. Bieżące saldo każdego adresu można uzyskać, przeglądając listę UTXO, a suma tych UTXO reprezentuje bieżącą całkowitą podaż wszystkich Bitcoinów.

W strukturze transakcji Bitcoin każda transakcja zawiera dane wejściowe i wyjściowe. Każde wejście jest odniesieniem do istniejącego UTXO, a każde wyjście określa nowy adres odbiorczy i kwotę. Po utworzeniu transakcji UTXO powiązany z danymi wejściowymi jest tymczasowo blokowany, aby zapobiec ponownemu użyciu, a powiązany status UTXO zmieni się dopiero po pomyślnym spakowaniu i potwierdzeniu przez górnika.
W szczególności wejściowe UTXO jest usuwane, a wyjście generuje nowy UTXO i dodaje go do listy. Przypomina to generowanie nowego czeku po wygaśnięciu starego czeku, w którym własność nowego czeku zostaje przeniesiona na nazwisko nowego posiadacza.
Należy podkreślić, że każde UTXO może zostać użyte tylko raz w transakcji. Po użyciu jest ono trwale usuwane, a tworzone jest nowe wyjście i dodawane do listy UTXO. Lista UTXO jest stale aktualizowana w miarę tworzenia nowych bloków. Analizując historię transakcji, można odtworzyć stan listy UTXO w dowolnym momencie.
Ponadto całkowita kwota wejściowa transakcji zwykle nieznacznie przekracza całkowitą kwotę wyjściową, a różnica ta staje się opłatą transakcyjną i służy jako zachęta dla pracowników K. Opłaty transakcyjne są proporcjonalne do złożoności transakcji, więc transakcja z większą liczbą wejść i wyjść będzie zazwyczaj wymagać wyższych opłat sieciowych.

Aby lepiej zrozumieć strukturę transakcji Bitcoin, możemy dowiedzieć się więcej z następującego przykładu, gdzie „vin” reprezentuje dane wejściowe transakcji, a „vout” oznacza wynik transakcji. Transakcje Bitcoin wykorzystują podejście wejściowe i wyjściowe, a nie tradycyjny model salda konta.

Możemy losowo wybrać rekord transakcji na blockchain.com do analizy. Poniższy rysunek pokazuje, że identyfikator Hash to
Transakcja dla 0627052b6f28912f2703066a912ea577f2ce4da4caa5a5fbd8a57286c345c2f2. Zawiera jedno wejście i dwa wyjścia.

Używając poleceń bitcoin-cli getrawtransaction i decoderawtransaction, możemy sprawdzić podstawową strukturę powyższej transakcji:

W sieci Bitcoin wynik każdej transakcji zawiera dwie kluczowe informacje: adres (hasz klucza publicznego) i kwotę (w Bitcoinach).
Jeśli wynik transakcji nie został wykorzystany na wejściu innych transakcji, wówczas wynik nazywa się niewydanym wyjściem transakcji (UTXO). Każdy, kto jest właścicielem klucza prywatnego odpowiadającego kluczowi publicznemu w UTXO, ma prawo używać (czyli wydawać) tego UTXO.
Spójrzmy na informację w „vin” w powyższym kodzie. Wskazuje ona, że UTXO wydane przez tę transakcję pochodzi z zerowego wyjścia (transakcja może mieć wiele wyników, indeks) innej transakcji (jej identyfikator to 7957a35fe64f80d234d76d83a2a8f1a0d8149a41d81de548f0a65a8a999f6f18). od 0).
Kwotę tego UTXO (na przykład 0,1 Bitcoina) możemy dowiedzieć się z historii transakcji. Dlatego w tej transakcji użytkownik ten wydał 0,1 Bitcoina, a wartość 0,1 nie musi być wpisana wprost w transakcji, ale jest uzyskiwana poprzez zapytanie o informację UTXO.
„Vout” tej transakcji zawiera dwa wyjścia, które reprezentują dwa nowe UTXO, odpowiadające nowemu saldowi i właścicielowi. Te nowe UTXO będą istnieć, dopóki inna transakcja nie zużyje ich jako danych wejściowych.

Model płatności
Aby lepiej zrozumieć model płatności sieci Bitcoin, na przykładzie przedstawimy proces płatności kwoty n Bitcoinów płaconych przez A B. Poniższy rysunek przedstawia proces użytkownika A wysyłającego 3 Bitcoiny do użytkownika B.

W przypadku użytkownika A konieczne jest przede wszystkim określenie zestawu wszystkich UTXO, które posiada, to znaczy wszystkich Bitcoinów, które użytkownik A może kontrolować;
A wybiera jeden lub więcej UTXO z tego zestawu jako dane wejściowe transakcji. Suma kwot tych danych wejściowych wynosi m (2+0,8+0,5=3,3 BTC), czyli jest większa niż wymagana kwota n (3 BTC). do zapłacenia;
Użytkownik A ustawia dwa wyjścia dla transakcji, jedno wyjście jest wypłacane na adres B, kwota wynosi n (3 BTC), a drugie wyjście jest wypłacane na własny adres zmiany A, kwota wynosi mn-fee (3,3-3-0,001 =0,299 BTC). Portfel użytkownika zwykle składa się z wielu adresów. Generalnie każdy adres jest używany tylko raz, a zmiana domyślnie jest zwracana na nowy adres.
Gdy pracownik K spakuje i potwierdzi transakcję na blockchainie, odbiorca B będzie mógł uzyskać informacje o transakcji.

Ponieważ rozmiar każdego bloku jest ograniczony (zwykle około 1 MB), pracownicy K traktują priorytetowo transakcje o wysokich stawkach transakcyjnych (opłata_stawka=opłata/rozmiar), aby uzyskać najwyższy zwrot z opłat.
Szybkość transakcji wydobywczych K możemy sprawdzić w czasie rzeczywistym w niepotwierdzonej puli transakcji (mempool). Jeśli zależy nam na jak najszybszym uzyskaniu potwierdzenia w trakcie procesu przelewu, możemy wybrać Wysoki Priorytet lub dostosować odpowiedni kurs transakcji.

2. Numerowanie i śledzenie kongów
Całkowita podaż Bitcoinów wynosi 21 milionów, a każdy Bitcoin zawiera 10^8 Satoshi (Sat). Zatem w sieci Bitcoin mamy w sumie 21 milionów * 10^8 satoshi.
Protokół Ordinals wykorzystuje unikalny sposób numerowania każdego Satoshi, aby zapewnić jego niepowtarzalność i możliwość dokładnego śledzenia konta, do którego należy. Ponadto uproszczona zostanie klasyfikacja rzadkości satoshi.
Numer Satoshiego
Zgodnie z protokołem porządkowym, satoshi są numerowane zgodnie z kolejnością wydobywania. Poniższy rysunek przedstawia reprezentację zerowego Satoshi wydobytego w zerowym bloku.

Istnieje wiele sposobów wyrażania Satoshi:
Symbol liczby całkowitej: na przykład 2099994106992659, który reprezentuje numer seryjny przypisany do satoshi zgodnie z kolejnością wyszukiwania.
Zapis dziesiętny: na przykład 3891094.16797, pierwsza cyfra wskazuje wysokość bloku, w którym wydobyto Satoshi, a druga cyfra wskazuje numer Satoshi w bloku.
Symbol stopnia: Na przykład 3°111094′214″16797‴, pierwsza cyfra to okres, numerowany od 0, druga cyfra to indeks bloku epoki halvingu, a trzecia cyfra to indeks bloku podczas trudności okres korekty, ostatnia cyfra jest indeksem sat w bloku.
Symbol procentu: Na przykład 99,99971949060254% wskazuje pozycję Satoshi w podaży Bitcoinów, wyrażoną w procentach.
Imię: Na przykład Satoshi. Nazwa kodująca numer kolejny przy użyciu znaków od a do z.

Weźmy przykład, aby wyjaśnić, jak numerować nowo wydobyte Bitcoiny. Obserwując 795952. blok łańcucha bloków Bitcoin, zawiera on transakcję o nazwie „Tx 3a1f…b177”, która rejestruje nagrodę pracownika K (transakcja na bazie monet). Transakcja ta obejmuje nowo wydobyte Bitcoiny, które są wykorzystywane jako nagrody dla pracowników K, a także opłaty manipulacyjne płacone przez inicjatora transakcji pracownikom K.
Patrząc na część wejściową, możemy zobaczyć identyfikator UTXO, który składa się z ciągu zer i wysokości bloku. W sekcji wyników możemy zobaczyć adresy, które otrzymały te nagrody i opłaty, a także ich łączną kwotę.

Jeśli dokładniej zbadamy część wydawaną przez pracowników K, możemy zobaczyć rozkład adresów, kwot i zawartych satoshi. Jak wspomniano wcześniej, obejmują one nagrody za wydobycie K i opłaty manipulacyjne.
Wśród nich informacje o zielonym numerze satoshi 1941220000000000–1941220625000000 to nowe satoshi generowane przez nagrody K, a pozostałe 712 rekordów satoshi odpowiada wszystkim opłatom manipulacyjnym w bloku.

Możemy zweryfikować numer Sat 1941220000000000.
Jego numer bloku to 795952, a zapis dziesiętny (dziesiętny) to 795952.0, co oznacza, że wysokość bloku wydobycia tego Satoshi wynosi 795952, liczba Satoshi w tym bloku wynosi 0, a kolejna rzadkość jest oznaczona jako niepospolita, my przedstawię go szczegółowo w kolejnych rozdziałach.

Nakład Cong
Model transakcyjny Bitcoina wykorzystuje model Unspent Transaction Output (UTXO), co oznacza, że każdy Bitcoin (BTC) można prześledzić do jego źródła. Zilustrujmy ten proces przykładem:
Załóżmy, że użytkownik A otrzymał nagrodę za wydobycie K, które zawiera Bitcoiny od 100. Satoshi do 110. Satoshi. Wszystkie te Bitcoiny są przechowywane w tym samym UTXO (niewydane dane wyjściowe transakcji). Identyfikator tego UTXO to adc123.
Teraz, gdy użytkownik A chce zapłacić użytkownikowi B 5 satoshi, decyduje się użyć UTXO o identyfikatorze abc123 jako danych wejściowych transakcji. Ta transakcja wyśle 5 satoshi do użytkownika B i zwróci 5 satoshi jako zmianę użytkownikowi A.
Te dwa 5 satoshi staną się całością, ale będą przechowywane w dwóch różnych UTXO, takich jak abc456 i abc789.
Powyższy identyfikator UTXO i liczba satoshi są pokazane jedynie jako przykłady. W rzeczywistych sytuacjach minimalna liczba wysłanych satoshi jest ograniczona do 546, a identyfikator UTXO nie jest wyrażany w tej formie.

W powyższej transakcji ścieżka obiegu 10 satoshi użytkownika A wygląda następująco:
Wydobywanie K produkuje 10 satoshi, ponumerowanych [100, 110). Oznacza to, że satoshi od 100 do 109 są przechowywane w UTXO z identyfikatorem abc123, a ich właścicielem jest użytkownik A.
Kiedy A dokonuje przelewu, 10 satoshi dzieli się na dwie części, z których każda to 5 satoshi. Przyjęto tu zasadę „pierwsze weszło, pierwsze wyszło”, czyli kolejność liczb Satoshi ustalana jest według ich indeksu na wyjściu transakcji.
Zakładając, że kolejność wyjścia jest następująca: najpierw użytkownik A, potem użytkownik B, wówczas numer sekwencyjny pozostałych 5 satoshi użytkownika A to [100, 105), które są przechowywane w UTXO z identyfikatorem abc456, a 5 satoshi użytkownika B to sekwencja numer to [105, 110) i jest przechowywany w UTXO z identyfikatorem abc789.

Rzadkość (Rzadki Satoshi)
Jako dodatek do protokołu Ordinals, rzadkość satoshi można zdefiniować na podstawie kolejności ich wydobywania. Spowoduje to, że niektóre specjalne satoshi będą miały różną rzadkość. Oto poziomy rzadkości różnych Satoshi:
wspólny wspólny poziom: dowolne satoshi z wyjątkiem pierwszego satoshi w bloku (całkowita podaż wynosi 2100 bilionów)
niezwykły Poziom doskonały: pierwsze satoshi z każdego bloku (całkowita podaż wynosi 6929999)
rzadkie: pierwsze satoshi w każdym okresie dostosowania poziomu trudności (całkowita podaż wynosi 3437)
epicki: pierwszy Satoshi po każdym halvingu (całkowita podaż wynosi 32)
legendarny: pierwszy satoshi w każdym cyklu (całkowita podaż wynosi 5)
mityczny: pierwszy Satoshi w bloku genezy (całkowita podaż wynosi 1)
Ta koncepcja rzadkich satoshi może zwiększyć zainteresowanie i wartość ekosystemu Bitcoin. Satoshi o różnej rzadkości mogą mieć różną wartość na rynku, przyciągając kolekcjonerów i inwestorów.

3. Metoda inskrypcji
Jedną ze znaczących różnic między Ordinals a innymi NFT spoza sieci Bitcoin jest to, że ich metadane nie są przechowywane w określonej lokalizacji.
Zamiast tego te metadane są osadzone w danych świadka (polu świadka) transakcji i dlatego nazywamy to „napisem”, ponieważ dane są „wyryte” w bitach niczym napis na określonej części transakcji monetowej , dane te są przypisane do konkretnego Satoshi.
Ten proces inskrypcji jest realizowany poprzez Segregated Witness (SegWit) i Pay-to-Taproot (P2TR). Obejmuje on dwa etapy: zatwierdzenie i ujawnienie. Grawerowanie dowolnej formy treści (takiej jak tekst, obrazy lub filmy) na wyznaczonym Satoshi.
Następnie szczegółowo opiszemy inną, bardziej bezpośrednią metodę przechowywania, OP_RETURN, i wyjaśnimy, dlaczego nie działa ona z napisami. Jednocześnie będziemy badać koncepcje Segwitu i Pay-to-Taproot oraz ich rolę w Inskrypcji. Na koniec zagłębimy się w metody inskrypcji.

OP_RETURE
W wersji 0.9 klienta Bitcoin Core ostatecznie osiągnięto kompromis przy użyciu operatora RETURN. RETURN umożliwia programistom dodanie 80 bajtów danych o braku płatności do danych wyjściowych transakcji. W przeciwieństwie do pseudopłatności, RETURN tworzy dane wyjściowe, które można wyraźnie zweryfikować, ale których nie można wydać i które nie muszą być przechowywane w kolekcji UTXO (niewydane dane wyjściowe transakcji).
Dane wyjściowe RETURN są zapisywane w łańcuchu bloków, co zajmie miejsce na dysku i spowoduje wzrost rozmiaru łańcucha bloków, ale nie zajmą kolekcji UTXO i dlatego nie spowodują rozdęcia kolekcji UTXO ani nie zwiększą kosztownego kosztu pamięci pełnego węzła.
Chociaż OP_RETURN jest metodą przechowywania informacji bezpośrednio w łańcuchu bloków Bitcoin, wiąże się to również z pewnymi wyzwaniami. Po pierwsze, OP_RETURN może przechowywać tylko 80 bajtów danych, co oczywiście nie wystarczy w sytuacjach, w których trzeba przechowywać więcej danych.
Po drugie, dane OP_RETURN są przechowywane w wynikach transakcji. Chociaż nie zajmą kolekcji UTXO, zajmą przestrzeń magazynową łańcucha bloków, powodując zwiększenie rozmiaru łańcucha bloków.
Wreszcie użycie OP_RETURN zwiększa opłaty transakcyjne, ponieważ zaksięgowanie tych transakcji wymaga płacenia więcej.

Oddzielny świadek
W porównaniu z poprzednimi metodami, SegWit dostarcza nowe rozwiązanie, które może rozwiązać powyższe problemy.
SegWit to kluczowa aktualizacja protokołu dla Bitcoina. Została po raz pierwszy zaproponowana przez twórcę rdzenia Bitcoin, Pietera Wuille’a, w 2015 r. i ostatecznie została oficjalnie przyjęta w wersji 0.16.0 w 2017 r.
„Segregowany” w Segregated Witness (SegWit) oznacza oddzielenie lub izolację, podczas gdy „Świadek” obejmuje dane podpisu powiązane z transakcją. Dlatego podstawową koncepcją SegWit jest oddzielenie pewnych danych podpisu transakcji (zwanych również danymi świadków) od rzeczywistych danych transakcji.
Główną korzyścią z oddzielenia danych podpisu od danych transakcji jest zmniejszenie rozmiaru danych przechowywanych w blokach Bitcoin. Powoduje to większą dostępną pojemność na blok, aby pomieścić więcej transakcji, co oznacza również, że sieć jest w stanie przetworzyć więcej transakcji, a użytkownicy płacą niższe opłaty transakcyjne.
Technicznie oznacza to przeniesienie danych podpisu skryptu (scriptSig) pierwotnie zawartych w strukturze bloku podstawowego do nowej struktury danych. Węzły walidacyjne i pracownicy K również zweryfikują podpis skryptu w tej nowej strukturze danych, aby zapewnić ważność transakcji.

Aktualizacja SegWit wprowadza również nowe pole danych świadków, aby zwiększyć prywatność i wydajność. Chociaż dane świadków nie są specjalnie zaprojektowane do przechowywania danych transakcyjnych w postaci zwykłego tekstu, w rzeczywistości dają nam możliwość przechowywania takich rzeczy, jak metadane napisów.
Aby lepiej zrozumieć świadka segregowanego, używamy poniższego rysunku:

Macica
P2TR to bitcoin typu wyjściowego transakcji, który został wprowadzony w aktualizacji Taproot w 2021 r., co umożliwia bardziej prywatne przechowywanie różnych warunków transakcji w łańcuchu bloków.
W tej architekturze P2TR odgrywa kluczową rolę w zapisywaniu danych porządkowych. Inscription faktycznie osadza określone dane w transakcjach Bitcoin, a aktualizacje Taproot, w szczególności P2TR, sprawiają, że osadzanie tych danych jest bardziej elastyczne i ekonomiczne.
Po pierwsze, ze względu na sposób przechowywania kodów poleceń Taproot, możemy przechowywać dane napisów w ścieżce poleceń Taproot, a te kody poleceń nie mają prawie żadnych ograniczeń co do treści. Jednocześnie możemy cieszyć się także zniżkami na dane świadków. dzięki czemu przechowywanie danych opisowych jest stosunkowo ekonomiczne.
Ponieważ jednak instrukcje Taproot mogą pochodzić wyłącznie z istniejących danych wyjściowych Taproot, przechowywanie napisów odbywa się w dwuetapowym procesie zatwierdzania/odsłaniania. Najpierw w transakcji zatwierdzenia ustalane jest wyjście Taproot, które ma zawierać dane do wpisania.

Następnie w transakcji ujawnienia dane wyjściowe ustalone w transakcji zatwierdzenia są wykorzystywane, ujawniając w ten sposób treść napisu w łańcuchu.
Takie podejście znacznie zmniejsza zużycie zasobów. Jeśli P2TR nie jest używany, dane monitorujące będą przechowywane w wynikach transakcji, dopóki te dane wyjściowe nie zostaną wykorzystane, dane monitorujące będą zawsze istnieć w zestawie UTXO.
Natomiast w przypadku użycia P2TR dane świadka nie pojawią się w transakcji wygenerowanej podczas fazy zatwierdzania i dlatego nie zostaną zapisane w zestawie UTXO. Dopiero po zużyciu tego UTXO dane świadka pojawią się na wejściu transakcji podczas fazy ujawniania.
P2TR umożliwia zapisanie oryginalnych danych w łańcuchu bloków Bitcoin, ale nie zawsze zajmuje przestrzeń skoncentrowaną w UTXO. Ponieważ konserwacja/modyfikowanie zestawu UTXO wymaga więcej zasobów, ta metoda może znacznie zaoszczędzić zasoby.

napis
Protokół Ordinals rozszerza limit rozmiaru zapisu w sieci Bitcoin, wykorzystując SegWit do przechowywania treści w postaci zwykłego tekstu w monitorze, umożliwiając przechowywanie do 4MB metadanych.
Taproot upraszcza proces przechowywania danych dowolnego świadka w transakcjach Bitcoin, umożliwiając programiście Ordinals, Caseyowi Rodarmorowi, ponowne wykorzystanie starych kodów operacji (OP_FALSE, OP_IF, OP_PUSH) do tworzenia tak zwanych „kopert” do przechowywania tak zwanych „Inskrypcji” wszelkich informacji.
Proces odlewania napisu składa się z dwóch następujących etapów:
Najpierw w transakcji zatwierdzenia musisz utworzyć obietnicę wskazującą na wyjście Taproot zawierające treść napisu. Format tego magazynu to Taproot, wynik poprzedniej transakcji musi być P2TR (Pay-To-Taproot), a zawartość określonego formatu jest osadzona w skrypcie świadka Taproot.
Najpierw na stos umieszczany jest ciąg „ordn”, aby ujednoznacznić przeznaczenie napisu. Następnie użyj OP_PUSH 1, aby wskazać, że następny push zawiera typ zawartości, i OP_PUSH 0, aby wskazać, że kolejne wypchnięcia danych zawierają samą treść.
Ponieważ jednym z ograniczeń Taproot jest to, że pojedynczy przekaz danych nie może przekraczać 520 bajtów, do przechowywania dużych napisów wymagane jest wielokrotne przesyłanie danych. W tej chwili dane dotyczące wpisów zostały powiązane z niewydanymi wynikami transakcji (UTXO), ale nie zostały jeszcze upublicznione.

Po drugie, w transakcji ujawnienia utworzony wynik musi zostać skonsumowany. Na tym etapie transakcja jest inicjowana poprzez przyjęcie na wejściu UTXO odpowiadającego napisowi. W tym momencie treść napisów związana z UTXO zostanie udostępniona całej sieci.
Dzięki powyższym dwóm krokom treść napisu została powiązana z konkretnym UTXO. Zgodnie z wprowadzoną wcześniej metodą pozycjonowania Satoshi (UTXO), na pierwszym Satoshi wygrawerowany jest napis odpowiadający jego wejściowemu UTXO, a treść napisu zawarta jest na wejściu pokazującym transakcję.
Zgodnie z wyżej wymienionym obiegiem i śledzeniem Satoshi (UTXO), ten Satoshi zawierający specjalną treść można przenosić, kupować, sprzedawać, gubić i odzyskiwać. Należy zaznaczyć, że napis nie może się powtarzać, w przeciwnym razie kolejne napisy będą nieważne.
Aby wyjaśnić ten proces bardziej szczegółowo, przeanalizujmy przykład pokazujący, jak wpisać mały obrazek Bitcoin NFT. Proces ten obejmuje dwie fazy: zatwierdzenia i ujawnienia wspomniane wcześniej.
Po pierwsze, widzimy, że identyfikator skrótu pierwszej transakcji to 2ddf9...f585c. Należy zauważyć, że wynik tej transakcji nie zawiera danych świadków, a na stronie internetowej nie ma odpowiednich informacji o wpisie.

Następnie sprawdzamy rekord drugiego etapu, którego Hash ID to e7454…7c0e1. Widzimy tu informację o inskrypcji porządkowej, która jest treścią inskrypcyjną świadectwa.
Adres wejściowy tej transakcji jest adresem wyjściowym poprzedniej transakcji, a wyjście 0.00000546BTC (546 Satoshi) ma na celu przeniesienie tego NFT na własny adres. Jednocześnie możemy znaleźć również satoshi, gdzie znajduje się ten napis w Sat 1893640468329373.


W portfelu Bitcoin możemy zobaczyć ten zasób. Jeśli chcemy zamienić ten NFT, możemy go bezpośrednio przenieść na adresy innych osób, czyli przekazać UTXO, kończąc w ten sposób transfer napisu.

4. Portfel Bitcoin
Po zrozumieniu czym jest ekologia porządkowa, obieg satoshi i związana z tym wiedza o inskrypcjach, istnieje obecnie wiele scenariuszy zastosowań, czy jest to pojawienie się BRC-20, ORC-20, BRC-721, GBRC-721 i inne powiązane protokoły pochodne, które wymagają posiadania odpowiednich portfeli do obsługi i wyświetlania informacji o tokenach lub małych obrazków NFT.
W tej sekcji przedstawimy koncepcje i cechy różnych adresów portfeli Bitcoin.
Adresy Bitcoin zazwyczaj zaczynają się od 1, 3 lub bc1 i podobnie jak adresy e-mail mogą być udostępniane innym użytkownikom Bitcoin w celu przesłania Bitcoinów bezpośrednio do Twojego portfela.
Z punktu widzenia bezpieczeństwa adresy Bitcoin nie zawierają poufnych informacji i dlatego można je udostępnić publicznie w dowolnym momencie bez narażania bezpieczeństwa Twojego konta. W przeciwieństwie do adresów e-mail, możesz w razie potrzeby tworzyć nowe adresy Bitcoin, a wszystkie z nich wpłacają środki bezpośrednio do Twojego portfela.

W rzeczywistości wiele nowoczesnych portfeli automatycznie ustala nowy adres dla każdej transakcji, aby zmaksymalizować prywatność. Portfel to po prostu zbiór adresów i kluczy, które odblokowują znajdujące się w nim środki. Najpierw musimy wiedzieć, w jaki sposób generowany jest adres portfela Bitcoin.
Klucze prywatne i publiczne Bitcoin
Bitcoin wykorzystuje krzywą eliptyczną Secp256k1. „Klucz prywatny” to losowa liczba z zakresu od 1 do n-1. n jest bardzo dużą liczbą (256 bitów). n jest wyrażane w notacji naukowej jako:

Zakres ten jest bardzo szeroki i sprawia, że złamanie kluczy prywatnych innych osób jest prawie niemożliwe. Ten klucz prywatny jest losową liczbą całkowitą, zwykle reprezentowaną przez 256 bitów binarnych i może być zakodowany na różne sposoby. Klucze prywatne w formacie WIF (Wallet Import Format) lub w formacie skompresowanym WIF są niezaszyfrowane i można je zdekodować bezpośrednio w nieprzetworzone losowe liczby całkowite.
Inną metodą jest BIP38 (Bitcoin Improvement Proposal 38), który zaleca użycie algorytmu AES do szyfrowania klucza prywatnego. Klucz prywatny generowany przez ten schemat zaczyna się od znaku 6P i należy wprowadzić hasło, aby zaimportować go do różnych portfeli Bitcoin. W ten sposób zwykle używamy ochrony klucza prywatnego.
Następnie używamy wzoru na krzywą eliptyczną K = kG, gdzie k jest kluczem prywatnym, a G jest punktem bazowym, co jest argumentem krzywej eliptycznej secp256k1.
Za pomocą tego wzoru możemy uzyskać dwie współrzędne K, które są dwoma wyrażeniami klucza publicznego, a mianowicie „Format nieskompresowany” i „Format skompresowany”.

Forma nieskompresowana polega na bezpośrednim połączeniu dwóch współrzędnych x i y razem, a następnie dodaniu przedrostka 0x04;
Postać skompresowana oznacza, że gdy y jest liczbą parzystą, kodem jest 02 x, a gdy y jest liczbą nieparzystą, kodem jest 03 x;
Adres Bitcoina
Na poniższym rysunku pokazano różne typy adresów Bitcoin. Istnieją cztery metody reprezentacji:

1. Starszy format (P2PKH).
Przykład: 1Fh7ajXabJBpZPZw8bjD3QU4CuQ3pRty9u
Adres zaczyna się od „1”, co jest oryginalnym formatem adresu Bitcoin i jest nadal używany. Uzyskuje się go poprzez obliczenie Hash z klucza publicznego, znanego również jako P2PKH, co jest skrótem od Pay To PubKey Hash (płatność na skrót klucza publicznego).
2. Zagnieżdżony format SegWit (P2SH).
Przykład: 3KF9nXowQ4asSGxRRzeiTpDjMuwM2nypAN
Adres zaczyna się od „3”. P2SH to skrót od Pay To Script Hash, który obsługuje bardziej złożone funkcje niż starsze adresy. Zagnieżdżony P2SH, uzyskuje istniejący adres P2SH (zaczynający się od „3”) i hermetyzuje go razem z adresem SegWit.

3. Natywny format SegWit (Bech32).
Przykład: bc1qf3uwcxaz779nxedw0wry89v9cjh9w2xylnmqc3
W BIP0173 wprowadzono formaty adresów zaczynające się od „bc1”, które są adresami używanymi dla natywnego świadka segregowanego (SegWit). Ten format adresu wykorzystuje kodowanie Bech32 i jest specjalnie zaprojektowany dla SegWit. Adresy w formacie Bech32 zostały zdefiniowane w BIP173 pod koniec 2017 roku. Jedną z jego głównych cech jest to, że nie uwzględnia wielkości liter, dzięki czemu łatwiej jest uniknąć nieporozumień podczas wprowadzania, a także jest łatwiejszy do odczytania.
W porównaniu z tradycyjnym kodowaniem Base58, Bech32 wykorzystuje kodowanie Base32, dzięki czemu w adresie potrzeba mniej znaków, obliczenia są wydajniejsze i można je zapisać w bardziej zwarty sposób w kodzie QR.
Dodatkowo Bech32 oferuje większe bezpieczeństwo i lepiej zoptymalizowane wykrywanie błędów sumy kontrolnej, minimalizując ryzyko nieprawidłowych adresów.
Same adresy Bech32 są kompatybilne z SegWit. Do umieszczenia adresu SegWit w adresie P2SH nie jest wymagana żadna dodatkowa przestrzeń, dlatego przy użyciu adresu w formacie Bech32 opłata manipulacyjna będzie niższa.
Ogólnie rzecz biorąc, adresy Bech32 mają kilka zalet w porównaniu z tradycyjnymi adresami Base58: wygenerowane kody QR są mniejsze, bardziej odporne na błędy, bezpieczniejsze, nie rozróżniają wielkości liter i zawierają tylko małe litery, dzięki czemu są łatwiejsze do odczytania, pisania i są łatwiejsze rozumieć.

4. Format korzenia palowego (P2TR)
Bech32 ma wadę: jeśli ostatnim znakiem adresu jest p, to wstawienie lub usunięcie dowolnej liczby znaków q bezpośrednio przed p nie spowoduje unieważnienia jego sumy kontrolnej.
Aby załagodzić powyższe niedociągnięcia Bech32, w BIP0350 zaproponowano adres Bech32m:
W przypadku natywnych adresów Segwit w wersji 0 użyj poprzedniego Bech32;
W przypadku natywnych adresów Segwit w wersji 1 (lub wyższej) używany jest nowy Bech32m.
W przypadku adresów Bech32m, których numer wersji wynosi 1, zawsze zaczynają się od „bc1p”, co oznacza, że są to adresy Taproot. Podobnie jak w natywnym Segwit, adresy te można wygenerować z frazy początkowej i hasła używanego do generowania kluczy publicznych i prywatnych rozszerzonego pakietu, umożliwiając wyprowadzenie adresów dla różnych ścieżek w hierarchicznym deterministycznym portfelu.

Służy głównie do przechowywania zasobów cyfrowych, takich jak tokeny BRC-20, a także NFT Bitcoina.