Utreexo pozwala węzłowi Bitcoin sprawdzić, czy wydawana kwota nie została już wykorzystana, bez przechowywania pełnej listy niewydanych wyjść. Węzeł to program, który sprawdza transakcje i bloki oraz wymienia dane z innymi uczestnikami sieci. Zachowuje małe odciski kontrolne i otrzymuje konkretne zapisy wraz ze sprawdzalnymi dowodami. Zasady wydawania i liczba bitcoinów się nie zmieniają; nie jest to domyślny model Bitcoin Core.
Anna chce przesłać Piotrowi bitcoiny otrzymane wcześniej. Jej transakcja wskazuje więc na tamtą płatność. Osobny zapis kwoty i warunków jej wydania nazywa się wyjściem; dopóki nie zostanie wydane, jest UTXO. Wejście nowej transakcji zawiera odwołanie do tego wcześniejszego wyjścia i dane potrzebne do jego wydania. Węzeł musi sprawdzić, czy zapis istnieje i czy Anna już go nie wydała. Zwykle prowadzi UTXO set, bazę wszystkich aktualnie niewydanych wyjść, a nie osobistych kont i sald. Jej wzrost zwiększa pracę dysku. Thaddeus Dryja przedstawił Utreexo w 2019 roku jako sposób ograniczenia tego lokalnego obciążenia. [1] [6] [8]
Najpierw z każdego zapisu oblicza się hash, krótki odcisk kontrolny jego danych. W drzewie Merkle’a odciski łączy się parami i ponownie haszuje aż do uzyskania najwyższego odcisku, czyli korzenia. Utreexo używa kilku takich drzew; weryfikujący węzeł może zachować ich korzenie zamiast pełnej listy. Dla wyjścia Anny otrzymuje dane i dowód z potrzebnymi sąsiednimi odciskami. Oblicza z nich ścieżkę do korzenia i porównuje wynik ze stanem, który już śledzi. Samo zapewnienie nadawcy nie wystarcza. Taka struktura to akumulator kryptograficzny: dowodzi przynależności zapisu do zbioru. Korzenie nie są jednak skompresowaną kopią zapasową. Nie można ich rozpakować, aby odzyskać wszystkie pierwotne zapisy. [1] [2]
Otrzymane dane są haszowane, a dowód pozwala sprawdzić ich związek ze stanem śledzonym przez węzeł. Niepoprawnego dowodu nie można przyjąć tylko dlatego, że przyszedł ze znanego serwera. Podpis cyfrowy potwierdza autoryzację płatności za pomocą klucza prywatnego, czyli tajnej wartości liczbowej, bez ujawniania tego klucza. Skrypt określa warunki, które trzeba spełnić, aby wydać wyjście. Nawet poprawny dowód przynależności nie zastępuje sprawdzania podpisów, skryptów, kwot i pozostałych reguł transakcji oraz bloku. Utreexo zmienia przechowywanie stanu, ale nie uprawnia do pomijania tych kontroli. [2] [5] [8]
Ktoś nadal musi przechowywać dość danych, aby zbudować dowody. Dokumentacja biblioteki odróżnia prover, który zachowuje cały zbiór drzew, od verifier, któremu wystarczają korzenie. Weryfikujący może przechowywać część dowodów w pamięci podręcznej, ale same korzenie nie wystarczą do wygenerowania dowolnego dowodu. Dane nie znikają; zmienia się ich rozłożenie między uczestnikami. [2]
Blok grupuje transakcje w pakiet dołączany do wspólnej historii. Wydane wyjście znika ze śledzonego zbioru, a nowe niewydane wyjścia są dodawane. Dowody również się zmieniają. Dowód zapisany dla wcześniejszego stanu może wymagać aktualizacji po kolejnych blokach. Podczas reorganizacji sieć przyjmuje inną poprawną gałąź łańcucha, zastępując część wcześniejszej historii bloków. Implementacja musi obsługiwać aktualizacje dowodów, równoczesne transakcje oraz cofanie stanu podczas reorganizacji łańcucha. To nie certyfikat pobrany raz i ważny na zawsze. [2] [3]
Pruned Node usuwa stare dane bloków po ich weryfikacji, ale tradycyjnie zachowuje aktualną bazę UTXO. Utreexo dotyczy właśnie tej bazy. Są to różne oszczędności, które można łączyć. Ani przycinanie, ani mały akumulator same w sobie nie oznaczają, że węzeł zweryfikował przeszłość bez jej przetworzenia. Historia bloków, aktualny stan i metoda wstępnej weryfikacji to trzy odrębne rzeczy. [6] [5]
Wyobraź sobie nowy węzeł, który zaczyna od stanu otrzymanego od kogoś innego, zamiast weryfikować bloki od początku. Zakłada w ten sposób, że stan początkowy jest prawidłowy. Mały akumulator nie usuwa tego zaufania: późniejsze dowody sprawdza się właśnie względem przyjętego stanu. W AssumeUTXO trzeba więc oddzielić przyjęcie snapshotu, czyli obrazu stanu w danej chwili, od późniejszej weryfikacji historii w tle. Dokumentacja utreexod opisuje domyślny start ze stanu zapisanego w programie. Sam w sobie nie jest on samodzielną weryfikacją wszystkich wcześniejszych bloków. Sposób startu to osobny wybór, a nie nieodłączna cecha Utreexo. [7] [3]
Implementacja utreexod używa Utreexo do weryfikacji sieci Bitcoin. Podczas przeglądu 17 października 2026 roku jej dokumentacja określała ją jako beta i odradzała użycie w mainnet z istotnymi kwotami. Wskazuje też --noassumeutreexo do wyłączenia startu z założonego stanu. Nie jest to zalecenie instalacji: najpierw sprawdź aktualną wersję, tryb, źródło programu i możliwości odzyskiwania. [3]
Podstawowa koncepcja nie wymaga przepisania zasad monetarnych Bitcoin ani zmiany istniejących bloków. Dowody trzeba jednak tworzyć, przesyłać i aktualizować, więc uczestniczące węzły potrzebują odpowiedniego oprogramowania i komunikacji. Mniejszy lokalny stan może pomóc tańszym urządzeniom. Nie oznacza automatycznie większej liczby transakcji w bloku, niższych opłat dla wszystkich ani przejścia wszystkich węzłów na nowy format. [1] [4]
Mniej danych na dysku może oznaczać większy ruch sieciowy i zależność od ich dostępności na czas. Poprawnie weryfikujący węzeł odrzuci sfałszowany dowód. Dostawca może jednak nie przekazać potrzebnych danych i opóźnić weryfikację. Operator porównuje więc cały tryb pracy: przechowywanie, przesyłanie, pamięć podręczną, weryfikację stanu początkowego i zachowanie przy awarii. Utreexo może obniżyć koszt własnej weryfikacji; nie sprawia, że brak danych przestaje mieć znaczenie. [3] [4]
Pełniejszy obraz uzyskasz, czytając to hasło razem z UTXO, Full Node, Pruned Node, AssumeUTXO, Merkle Tree, Bitcoin Core.