39 / 736CBTX

Transakcja coinbase

Transakcja przyznająca nagrodę za blok

Kto płaci górnikowi, skoro Bitcoin nie ma centralnej kasy? Górnik zapisuje nagrodę w szczególnej transakcji na początku swojego bloku. Pozostałe węzły sprawdzają, czy nie przyznał sobie więcej, niż wolno. Ta transakcja to coinbase.

Transakcja coinbase wskazuje odbiorców nagrody za blok: dozwolonych nowych bitcoinów oraz opłat pozostałych transakcji. W odróżnieniu od zwykłego przelewu nie wydaje wcześniej otrzymanych środków. Jest prawidłowa tylko w prawidłowym bloku, a nagrody nie można wydać od razu. Nazwa oznacza rodzaj transakcji, nie giełdę Coinbase.

Wyobraźmy sobie Annę przygotowującą kandydata na blok do wydobycia. Zbiera płatności użytkowników i umieszcza przed nimi specjalną transakcję wskazującą odbiorców nagrody. W naszym przykładzie reguły pozwalają stworzyć 3,125 BTC, a wybrane płatności przynoszą 0,075 BTC opłat. Anna może więc przyznać sobie najwyżej 3,2 BTC. Ta pierwsza transakcja to coinbase. Sam zapis nie daje jeszcze nagrody: blok musi spełnić wymóg wydobycia i wszystkie pozostałe warunki, które odbierające go węzły sprawdzają samodzielnie. Jeśli Anna zażąda zbyt wiele, odrzucą cały blok, niezależnie od energii zużytej na jego znalezienie. Żadne centralne konto nie przesyła jej wypłaty. Nowe monety powstają według wspólnych zasad wewnątrz przyjętego bloku. Z przykładowych 3,2 BTC nowe jest tylko 3,125 BTC; resztę zapłacili użytkownicy. To nagroda, nie zysk: nie odjęliśmy kosztów wydobycia. [6] [4]

Dozwolona nowa emisja to Block Subsidy, okresowo zmniejszana o połowę podczas wydarzenia zwanego Halving. Satoshi jest najmniejszą jednostką bitcoina. Opłaty zależą od konkretnych płatności w bloku, więc dwa bloki mogą przynosić różne nagrody. Limit nagrody to emisja dozwolona na danej wysokości, obliczana w Bitcoin Core przez GetBlockSubsidy, oraz opłaty pozostałych prawidłowych transakcji w bloku. Tylko emisja zwiększa podaż; opłaty są istniejącymi satoshi. Górnik może pobrać mniej, ale nie odzyska różnicy później: niewykorzystana emisja nie powstaje, a niepobranych opłat nie da się już wydać. Nawet jeden satoshi ponad limit unieważnia cały blok. [4] [6]

Nagroda często trafia do poolu, który koordynuje pracę wielu górników. Skrypt blokujący to krótki program określający warunki późniejszego wydania wyjścia. PPS, FPPS i PPLNS to różne sposoby podziału przychodów poolu między uczestników. Wyjścia używają zwykłych skryptów blokujących. Nagroda może trafić na wspólny adres, zostać podzielona między odbiorców albo obejmować udział operatora poolu. Węzły sprawdzają kwoty i warunki wydania, nie umowy ani rzeczywistych właścicieli. PPS, FPPS, PPLNS, progi wypłat i późniejsze przelewy uczestnikom są zasadami poolu, nie regułami konsensusu Bitcoina. [6] [7]

Anna widzi nagrodę w bloku, lecz jeszcze nie zapłaci nią rachunku za prąd. Nie zatrzymuje jej giełda: oczekiwanie narzucają reguły Bitcoina. Wysokość to numer pozycji bloku; H oznacza tu wysokość bloku, w którym powstała nagroda. COINBASE_MATURITY wymaga różnicy co najmniej 100 między wysokością bloku wydającego wyjście a wysokością jego powstania. Wyjście utworzone na H można po raz pierwszy wydać w prawidłowym bloku H+100. Licznik potwierdzeń może wyglądać inaczej, bo blok tworzący wyjście już liczy się jako pierwszy. Decyduje różnica wysokości, nie szacunek godzinowy. Spełnienie warunku nie gwarantuje, że blok nigdy nie opuści łańcucha. [5]

Reorganizacja oznacza przejście węzła na inną prawidłową gałąź z większą skumulowaną pracą wydobywczą. UTXO to niewydane wyjścia, czyli pojedyncze dostępne kwoty. Nagroda może zniknąć z tego zbioru razem ze swoim blokiem. Reorganizacja może usunąć pierwotny blok z aktywnego prawidłowego łańcucha o największej skumulowanej pracy. Jego wyjścia coinbase znikają wtedy z aktywnego zbioru UTXO. Może to dotknąć również transakcje wydające nagrodę. Oczekiwanie 100 bloków ogranicza skutki krótkich reorganizacji, ale nie daje absolutnej gwarancji. Pool musi oddzielać nagrodę w aktywnym łańcuchu, możliwość jej wydania i zobowiązania wobec górników. [4] [5]

Do opisu formatu potrzebne są nazwy: wejście zwykle wskazuje wydawane środki, a wyjście określa kwotę i warunki jej wydania. Txid identyfikuje transakcję, wersja określa format, a locktime może ograniczać moment włączenia. Blok musi zawierać co najmniej jedną transakcję; tylko pierwsza może być coinbase. Ma jedno wejście z pustym odwołaniem do wcześniejszego wyjścia: hash składa się z 32 zerowych bajtów, a indeks wynosi 0xffffffff. To odwołanie, zwane outpoint, niczego wcześniejszego nie wydaje, więc nie sprawdza się zwykłego podpisu uprawniającego do takiego wydatku. Transakcja nadal ma txid, wersję, locktime i jedno lub więcej wyjść. [1] [2] [3]

Wysokość to numer pozycji bloku. BIP34 oznacza propozycję, której regułę przyjął Bitcoin; scriptSig jest polem danych wejścia, a CScript sposobem zapisu instrukcji i liczb skryptu. BIP34 wymaga, by scriptSig zaczynał się od wysokości bloku zapisanej jako minimalnie zakodowana liczba CScript. Całe pole ma 2–100 bajtów. Dalej mogą wystąpić extra nonce, oznaczenie poolu lub dane wydobycia łączonego. Błędna wysokość albo długość powoduje odrzucenie. Choć wejście nie wykonuje zwykłego skryptu odblokowującego, jego kody operacji podpisu mogą wliczać się do limitu sigops, czyli limitu liczby operacji podpisu. [1] [9]

Wydobycie wielokrotnie oblicza hash, cyfrowy odcisk krótkiego opisu bloku zwanego nagłówkiem. Nonce to zmieniana liczba, a korzeń Merkle’a jest wspólnym odciskiem transakcji. Zmiana transakcji otwiera nowe próby. Pole nonce nagłówka ma 32 bity, a sprzęt szybko wyczerpuje jego możliwości. Program zmienia więc także extra nonce w coinbase. Zmienia to txid, korzeń drzewa Merkle’a i nagłówek, otwierając kolejny obszar poszukiwań hasha. Pool dzieli pracę między urządzenia, aby niepotrzebnie nie sprawdzały tych samych wariantów. Extra nonce nie tworzy dodatkowych monet. [6] [7] [12]

SegWit oddziela część danych weryfikacyjnych, na przykład podpisy, do części witness. Commitment jest weryfikowalnym powiązaniem z danymi, a nie kolejną wypłatą. Poniższy format stanowi jego techniczny opis. Jeśli blok zawiera dane witness, BIP141 wymaga wyjścia coinbase z witness commitment, czyli kryptograficznym powiązaniem z tymi danymi. Skrypt zaczyna się od 6a24aa21a9ed: OP_RETURN, wstawienie 36 bajtów i znacznik aa21a9ed. Dalej jest 32-bajtowy podwójny hash SHA-256 korzenia Merkle’a witness połączonego z wartością zarezerwowaną. Witness wejścia coinbase musi zawierać wyłącznie tę jedną 32-bajtową wartość. Przy wielu pasujących wyjściach obowiązuje najwyższy indeks. To nie jest wypłata możliwa do wydania; bez danych witness w bloku commitment jest opcjonalny. [10]

Full Node to komputer samodzielnie sprawdzający reguły Bitcoina. Waga bloku mierzy wykorzystanie dozwolonej pojemności danych; Mempool lokalnie przechowuje zwykłe niepotwierdzone transakcje. Sprawdzanie nagrody należy do sprawdzania całego bloku. Full Node wymaga coinbase na początku i odrzuca kolejną coinbase w tym samym bloku. Sprawdza scriptSig, wysokość BIP34, zakresy kwot, wagę bloku, opłaty i wymagane witness commitment. Suma wyjść nie może przekroczyć emisji i opłat; późniejsze wydanie musi spełniać warunek dojrzałości. Górnik nie może więc prawidłowo przyznać sobie dowolnej kwoty. Bez swojego bloku coinbase nie trafia do mempoolu. [3] [4] [10]

Genesis Block to początkowy blok Bitcoina. Jego szczególne miejsce i dawne powtarzające się identyfikatory pokazują, dlaczego obecnych zwykłych reguł nie należy bez rozróżnienia stosować do wszystkich historycznych przypadków. Zanim wysokość stała się obowiązkowa, różne coinbase mogły mieć takie samo txid. BIP30 zapobiega nadpisywaniu starszych niewydanych wyjść; BIP34 dodaje wysokość odróżniającą zwykłe współczesne bloki. Genesis Block jest szczególny: jego coinbase znajduje się w zapisanym bloku, lecz inicjalizacja nie uczyniła jej wyjścia możliwym do wydania. Pierwotnych 50 BTC nie da się więc wydać; nie chodzi o zwykłe czekanie 100 bloków. [8] [9] [11]

Pełniejszy obraz uzyskasz, czytając to hasło razem z Block, Block Subsidy, Transaction Fees, Wydobywanie, Block Template, Bitcoin. Do tego hasła prowadzą również odsyłacze z Block Subsidy, Potwierdzenie, Reorg, Stale Block.

DOC · 001Bitcoin Developer Reference — Coinbase inputDokumentacja DOC · 002Bitcoin Developer Reference — Block chainDokumentacja DOC · 003Bitcoin Core — transaction.h (IsCoinBase)Dokumentacja DOC · 004Bitcoin Core — validation.cppDokumentacja DOC · 005Bitcoin Core — consensus.h (COINBASE_MATURITY)Dokumentacja DOC · 006Bitcoin Core — miner.cppDokumentacja DOC · 007BIP 22 — getblocktemplateSpecyfikacja DOC · 008BIP 30 — Duplicate transactionsSpecyfikacja DOC · 009BIP 34 — Block height in coinbaseSpecyfikacja DOC · 010BIP 141 — Segregated Witness commitmentSpecyfikacja DOC · 011Bitcoin Core — chainparams.cpp (genesis construction)Dokumentacja DOC · 012Stratum V2 — Mining Protocol specificationSpecyfikacja
Zaktualizowano: Najpierw źródła · To nie jest porada inwestycyjna