Transakcja Bitcoin to potwierdzone przez sieć wiadomości, informujące o zmianie właścicieli monet. Podajesz adres odbiorcy, kwotę, klikasz OK i Twoje BTC już leci we wskazane miejsce. W rzeczywistości proces jest dużo bardziej skomplikowany i całkiem sporo dzieje się za kulisami.
Wprowadzenie do transakcji w sieci Bitcoin
Na początku ustalmy podstawy. Bitcoin nie jest bytem namacalnym. Złote monety z literą B, które czasem widzimy w reklamach, są tylko przenośnią. Bitcoin jest zapisany w łańcuchu bloków, który można traktować jako wciąż aktualizowany rejestr transakcji, które kiedykolwiek miały miejsce. Księgę, która stanowi kto ile ma i której zapisów nie sposób podważyć, gdyż jest powielona w tysiącach egzemplarzy.
Transakcje to zestawy danych, które określają transfer wartości pomiędzy uczestnikami sieci. Każda transakcja zawiera informacje o wysyłanej kwocie, koncie, z którego jest wysyłana oraz koncie odbiorcy. Po weryfikacji i zapisaniu w bloku dane te są trwałe, jak wykute w kamieniu i możliwe do odczytania, póki będzie istniał choć jeden węzeł sieci.
Transakcje są najważniejszą częścią systemu Bitcoina. Wszystkie inne elementy sieci mają na celu umożliwienie tworzenia transakcji, rozpowszechniania ich w sieci, zatwierdzania i zapisania na blockchainie.
Ale jak właściwie są one tworzone?
Jak przebiega transakcja
Cykl życia transakcji obejmuje jej utworzenie, podpisanie, rozpowszechnianie w sieci, weryfikację i zapis na blockchainie. Przyjrzyjmy się temu bliżej.
- Tworzenie transakcji. Inicjując ją, wyrażamy zamiar przekazania pewnej wartości na inny adres. Określamy kwotę, adresy nadawcy i odbiorcy, czasem również maksymalną wysokość opłaty transakcyjnej, jaką zamierzamy ponieść.
- Podpisanie transakcji. Jest ono potwierdzeniem, że mamy prawo dysponować kontem, z którego wychodzi transakcja. Z reguły nie zauważamy procesu podpisywania, gdyż w naszym imieniu automatycznie robi to nasz portfel krypto (do którego wcześniej musieliśmy się zalogować).
- Przesłanie transakcji do sieci Bitcoin. Oznacza wysłanie kilkuset bitów wiadomości, zawierających wszystkie potrzebne dane. Wystarczy, że transakcja dotrze do jednego węzła, dalsza jej propagacja nastąpi automatycznie.
- Rozpowszechnienie transakcji. Po otrzymaniu, węzeł sprawdzi jej poprawność. Jeśli jest jest poprawna, będzie ją rozpowszechniał i w krótkim czasie dotrze ona do każdego węzła w sieci, który również ją sprawdzi. Jeśli jest nieważna, węzeł ją odrzuci. W obu wypadkach nadawca zostanie powiadomiony.
- Transakcje uznane przez większość węzłów za ważne, trafiają do mempool każdego górnika. Jest to rodzaj magazynu transakcji, czekających na umieszczenie w bloku i konkurujących to prawo wysokością wniesionej opłaty.
- Zwycięski górnik (zazwyczaj kopalnia krypto) umieszcza transakcje w wydobytym bloku. Inne węzły sprawdzają, czy właściwie rozwiązał on zadanie i jeśli tak, dodają ten blok do swojej kopii łańcucha bloków. Transakcja jest teraz uważana za potwierdzoną, lecz nie jest ostateczna, gdyż węzły które jeszcze nie sprawdziły bloku, wciąż mogą go odrzucić.
- W miarę dodawania kolejnych bloków po tym zawierającym naszą transakcję, prawdopodobieństwo jego odrzucenia szybko spada. W przypadku Bitcoina transakcja jest uważana za ostateczną po opublikowaniu kolejnych 6 bloków, czyli ok. godzinie. Od tej pory bezpieczeństwo jest prawie 100%, bo zakwestionowanie jej wymaga dokonania rozwidlenia całego łańcucha
Wiemy już, jak przebiega transakcja w sieci Bitcoin. Zanim jednak poznamy jej strukturę, musimy zapoznać się z kluczowym dla BTC pojęciem UTXO.
Tajemnicze UTXO
Bitcoin do obsługi transferów między użytkownikami wykorzystuje model niewydanych wyników transakcji (UTXO – Unspent Transaction Outputs). Każda cząstka BTC, którą kiedyś otrzymaliśmy, jest rejestrowana w łańcuchu bloków jako UTXO. Na nasze saldo, widoczne w portfelu, składają się UTXO pochodzące z setek transakcji, rozproszonych w wielu blokach.
Szczerze mówiąc, nie ma nawet czegoś takiego jak saldo adresu. Są tylko rozproszone w łańcuchu UTXO, przypisane do określonych właścicieli. Nasze saldo jest bytem wirtualnym, tworzonym przez aplikację portfela. Oblicza on nasz majątek, skanując łańcuch bloków i agregując wszystkie UTXO, przypisane do danego klucza.
UTXO jest wyrażane w wielokrotności satoshi. Może mieć ono dowolną wartość, jednak raz utworzone jest niepodzielne. Tak, jak moneta 5 zł, której nie można przeciąć na pół. UTXO musi zostać wykorzystany w całości, nawet jeśli jest większy niż wartość transakcji. Jeśli mamy UTXO na 2 BTC a wydajemy 1, to zostaną utworzone dwa nowe UTXO o wartości 1 BTC, jeden przypisany do oryginalnego klucza, a drugi do klucza odbiorcy.
Struktura transakcji Bitcoin
Transakcja w sieci Bitcoin składa się z dwóch głównych części:
Wejście
Jest odpowiednikiem stanu konta. Zawiera informacje o BTC wysłanych wcześniej na nasz adres, co pozwala zlokalizować te aktywa w łańcuchu bloków Bitcoin. Obejmuje identyfikatory poprzednich transakcji, potwierdzających nasze prawa do dysponowania daną wartością. Każde wejście jest więc powiązane z wyjściem poprzednich transakcji.
Na model UTXO składają się trzy rodzaje danych: określenie ilości BTC, adres gdzie się one znajdują oraz kto ma prawo dysponowania nimi.
Wyjście
Dane wyjściowe to nowo wygenerowane monety, tymczasowo zablokowane w haszu klucza publicznego odbiorcy. Ich odblokowanie (uznanie konta odbiorcy) następuje po trwałym zablokowaniu tej samej kwoty na koncie nadawcy.
Po dodaniu transakcji do łańcucha bloków unieważnione zostają UTXO monet, które wysłaliśmy, zaś nowe UTXO są tworzone na adresach odbiorców.
Szczegóły
Każda transakcja Bitcoin może mieć wiele wejść i wyjść. Dane wejściowe mogą pochodzić z wielu poprzednich transakcji oraz od różnych użytkowników, a dane wyjściowe dotyczyć wielu odbiorców płatności.
Dane wejściowe i wyjściowe transakcji nie są powiązane z kontami ani tożsamościami. Są to raczej określone ilości BTC, których odblokowanie wymaga znajomości hasła (klucza prywatnego)
Wyjątek
Szczególnym przypadkiem jest pierwsza transakcja w każdym bloku, nazywana coinbase (żadnych związków z giełdą). Transakcja ta jest zapisywana przez zwycięskiego górnika i tworzy zupełnie nowe BTC, należne mu jako nagroda za wydobycie.
Ponieważ transakcja coinbase tworzy nowe BTC, nie ma ona żadnych danych wejściowych.
Rodzaje transakcji Bitcoin
Powyższe informacje sugerują, że jest więcej niż jeden rodzaj transakcji w Bitcoinie i tak jest w istocie.
- Zero wejść – jedno wyjście. Jest to transakcja coinbase, gdzie górnik otrzymuje monety, mimo że nikt ich mu nie wysłał.
- Jedno wejście – dwa wyjścia. Jest to najczęstszy rodzaj transakcji. Wysłanie BTC wymaga użycia UTXO, które jest niepodzielne. W efekcie konto odbiorcy otrzymuje UTXO na wysłaną sumę, a konto nadawcy UTXO reszty.
- Jedno wejście – wiele wyjść. Obrazuje płatność z jednego na wiele kont. Może to mieć miejsce na przykład w wypadku dystrybucji tokenów podczas IDO.
- Wiele wejść – jedno lub dwa wyjścia. Częste przy zbieraniu jednej większej kwoty z wielu drobnych UTXO, odpowiednik płacenia 50 zł drobnymi monetami.
Wszystkie transakcje w sieci, niezależnie od ich rodzaju możemy zbadać przy użyciu eksploratora blockchain. Popularnym rozwiązaniem jest np. Blockchair.
Podpis cyfrowy w transakcjach Bitcoin
Aby transakcja została uznana za poprawną, oprócz posiadania wskazanej ilości BTC, musimy udowodnić, że mamy prawo rozporządzania środkami powiązanymi z określonym kluczem i adresem. Do sprawdzania tego służy właśnie podpis cyfrowy.
Jest to technika szyfrowania asymetrycznego, która wykorzystuje opisywany wcześniej klucz prywatny (przeczytanie tego materiału ułatwi zrozumienie sprawy). Dzięki niemu można potwierdzić, że otrzymane informacje nie zostały zmienione po drodze oraz że zostały wysłane przez nadawcę, mającego prawo do dysponowania środkami. Przebiega to w sposób następujący:
- Zlecający transakcję wykorzystuje klucz prywatny do utworzenia hasza wiadomości o transakcji.
- Następnie używa klucza prywatnego do zaszyfrowania tego hasza, tworząc podpis cyfrowy.
- Podpis cyfrowy, klucz publiczny i oryginalna wiadomość są przesyłane do węzła.
- Węzeł używa klucza publicznego do odszyfrowania podpisu cyfrowego, co daje mu oryginalny hasz dokumentu.
- Następnie odbiorca używa standardowego algorytmu, aby utworzyć nowy hasz odebranej wiadomości.
- Odbiorca porównuje utworzony przez siebie hasz z tym odszyfrowanym z podpisu.
- Jeśli są takie same, oznacza to, że dokument nie został zmieniony, a podpis został utworzony przez nadawcę powiązanego z adresem.
Podpisy cyfrowe w Bitcoinie wykorzystują algorytm krzywej eliptycznej (ECDSA) do generowania unikalnej sygnatury dla każdej transakcji.
Opłaty za transakcje i ich wysokość
Opłata za transakcję Bitcoin zależą od kilku czynników.
Jednym z nich jest liczba i rozmiar danych UTXO na wejściach i wyjściach. Większa liczba UTXO może prowadzić do większego rozmiaru transakcji w bajtach, co prowadzi do wyższych opłat. Dzieje się tak wtedy, gdy np. przez rok co tydzień kupowaliśmy 0,01 BTC, a teraz chcemy wypłacić 0,52 BTC. Transakcja wyjścia musi odnosić się do 52 transakcji wejścia, jej plik będzie obszerny i zapłacimy o wiele więcej, niż za prosta wypłatę 0,01 BTC. Nie wynika to jednak z wielkości przesyłanej kwoty, ale z rozproszenia danych.
Bardzo istotna jest także cena BTC. Opłaty transakcyjne płaci się w satach, będących jego najdrobniejszą częścią. Jeśli cena Bitcoina wzrosła w dolarach 4 razy, o tyle samo wzrośnie koszt transakcji.
Znaczenie ma też, jak bardzo zależy nam na szybkim przetworzeniu transakcji. Miejsce w bloku BTC wystarcza na umieszczenie w nim kilku tysięcy transakcji. Jeśli jest ich więcej, górnicy sprawdzają, która transakcja wiąże się z najwyższą opłatą. Może to wymuszać deklarowanie wyższych opłat, w nadziei że skłonią one górników do umieszczenia transakcji w najbliższym bloku. Jeśli opłata będzie niska, transakcja będzie musiała poczekać na zaksięgowanie wszystkich innych, dających górnikom większy zarobek. Aktualne ceny możemy sprawdzić na wykresie Bitcoin Average Transaction Fee.
W gruncie rzeczy zatem, głównym czynnikiem determinującym opłaty transakcyjne w sieci Bitcoin jest relacja popytu i podaży.
Gdy miejsca w bloku starcza dla wszystkich, do przetworzenia transakcji wystarczy 1 dolar. W sytuacji dużego obłożenia sieci, na przykład podczas szału Bitcoin Ordinals i tokenów BRC-20, 30$ i więcej wcale nie jest przesadą. Nawet wtedy jednak koszty mogą być niższe, niż określane w Gwei opłaty na Ethereum.
Zmiana zasad: aktualizacja SegWit
Choć SegWit wprowadzono w roku 2017 i odpowiada on już za 90% transakcji w sieci Bitcoin, wciąż nie wszystkie węzły obsługują tę aktualizację. Z tego powodu mamy dwa rodzaje adresów: starsze Legacy i nowsze SegWit, oferujące korzyści w postaci niższych opłat transakcyjnych i lepszej skalowalności.
Adresy Legacy zaczynają się od cyfry „1”, na przykład „1a20….”. Adresy SegWit występują w dwóch odmianach: format P2SH, zaczynający się od cyfry „3” oraz format bech32, zaczynający się się od „bc1”. O ile pierwszy jest bezproblemowy, drugi może sprawić nieco kłopotu podczas interakcji z adresami Legacy, choć żadne BTC nie zostaną utracone.
Głównym celem SegWit jest poprawa przepustowości. Zmniejsza on rozmiar transakcji w bloku, dzieląc ją na dwie sekcje. Pierwsza zawiera adresy portfeli nadawcy i odbiorcy, natomiast druga część zawiera „dane świadków”, czyli podpisy transakcji. W rezultacie transakcje wymagają mniej miejsca, umożliwiając umieszczenie więcej transakcji w jednym bloku.
Przed wprowadzeniem SegWit każdy blok był ograniczony do 1 MB danych (ok. 1500-2000 transakcji. SegWit umożliwia umieszczenie w bloku nawet 3000-4000 transakcji.
Co najważniejsze, wprowadzenie SegWit umożliwiło uruchomienie Lightning Network jako drugiej warstwy na sieci Bitcoin.
Lightning Network przyspiesza sieć
Główna sieć Bitcoina jest godna zaufania i bardzo bezpieczna, słabo jednak radzi sobie z przetwarzaniem dużej liczby transakcji. Jako jej uzupełnienie powstał protokół Lightning Network. Jest to rozwiązanie Layer 2 dla Bitcoina, zaprojektowane w celu zwiększenia wydajności tej sieci.
Przy pomocy Lightning Network użytkownicy otwierają między sobą dwukierunkowe kanały płatności. Transakcje między stronami rozliczane są w tym kanale i nie są przekazywane do sieci głównej BTC aż do momentu jego zamknięcia. Znacznie przyspiesza to przetwarzanie i pozwala na duże oszczędności na opłatach. LN jest bezpieczne w użyciu, ma jednak także parę wad, o czym wspominaliśmy w linkowanym wcześniej tekście.
Opłaty za korzystanie z sieci są minimalne przy drobnych płatnościach, rosną jednak wraz ze wzrostem przekazywanej sumy. Stała stawka to kilkanaście-kilkadziesiąt satów plus z reguły 0,1% wartości transakcji. O ile w przypadku kilku dolarów nie ma o czym mówić, to przekazanie 10 000$ może kosztować nas ponad 10$, co jest porównywalne z operacją bezpośrednio w sieci głównej. Do zakupu kawy za BTC nie ma jednak lepszego sposobu. 😉
Jak widać transakcja w sieci Bitcoin to temat bardziej skomplikowany, niż mogłoby się wydawać. Potwierdzenie operacji, jej weryfikacja, bloki, adresy, portfele… Pocieszające jest, że mimo komplikacji tematu Bitcoin wytrzymał próbę czasu. Nigdy nie uległ atakowi, a jeśli nasza transakcja przebiegła inaczej niż sądziliśmy, była to nasza wina, a nie błąd systemu.
Najczęściej zadawane pytania (FAQ)
Jaka była pierwsza transakcja Bitcoin?
Transakcja została zarejestrowana w bloku nr 170 w dniu 12 stycznia 2009 r. Satoshi Nakamoto wysłał wtedy 10 BTC do Hala Finneya.
Jaka była największa transakcja Bitcoin?
Był to transfer 26139 BTC, których wartość w momencie transakcji wynosiła około 1,3 miliarda dolarów, wykonany 23 lutego 2024.
Jaka była najsłynniejsza transakcja Bitcoin?
22 maja 2010 roku Laszlo Hanyecz zapłacił 10 000 BTC za dwie pizze Papa John’s z dostawą do domu. W 2024 takie zamówienie byłoby równe około 600 milionów dolarów.
Ile trwa transakcja Bitcoin?
W normalnych okolicznościach transakcja zostaje potwierdzona po 10 minutach, ale duży ruch w sieci może wydłużyć ten czas nawet do kilku-kilkunastu godzin.
Co zrobić, gdy transakcja Bitcoin utknie?
Najprościej poczekać. Transakcja zostanie umieszczona w bloku, kiedy ruch w sieci spadnie. Jeśli nie chcesz czekać, zainicjuj nową transakcję, używając funkcji Child Pays for Parent (CPFP).
Po jakiej sieci wysyła się BTC?
Oczywiście po sieci Bitcoin, choć istnieją także rozwiązania Layer 2 jak Lightning Network, Stacks czy Rootstock.
Ile kosztują transakcje w Bitcoinie?
Zależy to od wielu czynników, głównie ceny BTC i obciążenia sieci. W pierwszej połowie 2024 ceny oscylują w zakresie 2-20$.
Inwestowanie jest ryzykowne. Inwestuj odpowiedzialnie.