UWAGA! Ten serwis używa cookies i podobnych technologii.

Brak zmiany ustawienia przeglądarki oznacza zgodę na to. Czytaj więcej…

Zrozumiałem

Szukaj na blogu bitcoin

Bitcoin i mechanizm reszty - jak to działa?

Bitcoin posiada pewien mechanizm, podobny do tego, w jaki sposób otrzymujemy resztę w sklepie, płacąc przykładowo banknotami, których nominały są ustalone - w większości przypadków kasjer musi wydać nam resztę. Podczas, gdy odbywa się transakcja Bitcoin, działa podobny mechanizm, który omówię w tym artykule, będącym w większości tłumaczeniem z Wikipedii Bitcoin. Osobom nie rozumiejącym do końca, jak działa transakcja Bitcoin, polecam inny z moich artykułów.

Kiedy output z transakcji jest użyty jako input w kolejnej transakcji, musi zostać “wydany” w całości. Często jednak chcemy wydać mniej bitcoinów, niż pozwala na to output, którym dysponujemy. Protokół Bitcoin radzi z tym sobie w ten sposób, że my wysyłamy odbiorcy cały output, a reszta, czyli część outputa, który teraz stał się inputem nowej transakcji wraca do nas. Na tym polega mechanizm reszty, który pokażę na przykładzie.

Warto zwrócić uwagę na to, że portfel Bitcoin Core generuje za każdym razem nowy adres, na który przychodzi reszta, a na przykład Electrum przyjmuje resztę na ten sam adres. Warto mieć to na uwadze, robiąc backup Bitcoin Core - co 100 transakcji wychodzących trzeba zrobić nowy. Można to jednak obejść, podając odpowiednie parametry w opcjach portfela, co zmusi go do wygenerowania większej ilości adresów na resztę. Z powyższego mechanizmu mogą również wynikać różnice w saldach w zależności od użytego portfela.

Teraz wyobraźmy sobie, że przeprowadzamy transakcję w sklepie za pomocą banknotu 20 zł, a towar kosztował złotówkę. Kasjer musi wydać nam 19 zł, nie może jednak zrobić tego bezpośrednio, ponieważ nie ma monety lub banknotu o takim nominale. Wyda nam więc dla przykładu:

10 zł

5 zł

2 zł

1 zł

1 zł

Co daje w sumie 19 zł. Dostaliśmy resztę i wychodzimy ze sklepu, kończąc transakcję. Tłumacząc to na język transakcji Bitcoin, wyglądało by tak, że:

input: 20 zł

output: 10 zł, 5 zł, 2 zł, 1 zł, 1 zł oraz 1 zł dla kasjera

Jak widać, do naszego portfela wróciło by pięć różnych outputów, które dalej możemy wydawać. Stało się tak, ponieważ bank zmusza nas do operowania na monetach, które mają ograniczoną liczbę nominałów. Protokół Bitcoin nie ma jednak takich ograniczeń i może wygenerować sobie resztę z dowolną wartością aż do ósmego miejsca po przecinku. Posiada również inna właściwość - może "niszczyć" monety, które zostały użyte jako input i generować nowe, by posłużyły jako reszta i część, która trafia do nadawcy. W ten sposób można zachować ciągłość transakcji, a ilość bitcoinów w obiegu nie zmienia się. Zobaczmy na przykładzie:

input: 20 zł - "zniszczone"

output: nowo utworzone 19 zł (dla nas) i 1 zł (dla kasjera)

Jak widać, w realnym świecie taka sytuacja nie może mieć miejsca, bowiem to rząd emituje nowe monety i decyduje o ich nominałach. W przypadku Bitcoin, wygląda to właśnie tak, jak przedstawiono.

Aby przeprowadzić transakcję Bitcoin, musimy, jak wspomniałem wcześniej, wziąć jeden z otrzymanych w innej, poprzedzającej transakcji outputów, przerobić go na input dla nowej i otrzymać resztę. Suma środków na naszym portfelu to suma niewydanych jeszcze outputów, co jest przed nami ukrywane, ponieważ portfel sam sumuje wszystkie środki i wyświetla nam ich sumę jako stan konta.

W celu lepszego wyjaśnienia zagadnienia, weźmiemy sobie prawdziwą transakcję Bitcoin o numerze 0a1c0b1ec0ac55a45b1555202daf2e08419648096f5bcc4267898d420dffef87. 10.89 bitcoina zostało wydane. 10 BTC to ilość bitcoinów przekazanych nadawcy, a reszta, tj. 0.89 to reszta, która została zwrócona. 10.89 BTC zostało “zniszczone”, a na jego miejsce powstały ilości 10 BTC i 0.89 BTC, które teraz mogą zostać wykorzystane jako kolejne inputy w nowych transakcjach.

 

Serwis bitmon.pl nie wyraża zgody na przedruk tego artykułu.

Ostatnio zmieniany: środa, 22 październik 2014 15:31

Artykuły powiązane