125 / 736vB

vByte

Bajt wirtualny · vB

Co oznacza sat/vB w portfelu i dlaczego mały przelew może kosztować tyle samo co duży. Rozmiar wirtualny mierzy ważoną ilość danych transakcji, a nie wartość wysyłanych bitcoinów.

vByte, w skrócie vB, jest jednostką wirtualnego rozmiaru transakcji Bitcoin. Jej poszczególne części są liczone z różną wagą. Portfel używa tego rozmiaru do wyliczenia opłaty: większa transakcja lub wyższa wybrana stawka oznacza wyższą opłatę całkowitą.

Transaction Fees: rozmiar i opłataOszacuj wirtualny rozmiar transakcji, opłatę według własnej stawki i jej orientacyjną wartość w wybranej walucie.

Anna chce wysłać Bitcoin, a portfel proponuje stawkę 2 sat/vB. Sat to satoshi, najmniejsza jednostka bitcoina; vB określa wirtualny rozmiar transakcji. Jeżeli gotowa transakcja ma 127 vB, opłata przy tej stawce wyniesie 254 sat. Stawka, nazywana też Fee Rate, nie jest więc pełnym kosztem przelewu. To przykład obliczenia, a nie zalecana stawka dla dzisiejszej sieci. Sama zapłata opłaty nie gwarantuje też konkretnego czasu potwierdzenia. [3] [5] [7]

Portfel nie wydaje salda jako jednej liczby. Korzysta z otrzymanych wcześniej, jeszcze niewydanych wyjść transakcji, czyli UTXO. Każde wykorzystane wyjście dodaje wejście; często powstaje też wyjście zwracające resztę do portfela. Połączenie wielu drobnych wpływów może zatem wymagać więcej danych niż wysłanie większej kwoty z jednego wpływu. Opłata jest sumą wartości wejść pomniejszoną o sumę wartości wyjść. Podpis cyfrowy potwierdza uprawnienie do wydania wybranych środków. Przed jego utworzeniem portfel szacuje rozmiar; efektywną stawkę wyznaczają dopiero rzeczywista opłata i końcowy rozmiar. [6] [7]

Bajt jest standardową jednostką ilości danych. Przy obliczaniu opłaty za transakcję Bitcoin nie wszystkie bajty liczą się jednak tak samo. SegWit oddziela część danych potwierdzających prawo do wydania środków, między innymi podpisy. Ta część nazywa się witness. Bajt danych podstawowych wnosi do wagi transakcji 4 WU, a bajt dodany przez format zapisu z witness — 1 WU. WU oznacza jednostkę wagi. Tak samo traktowane są pomocnicze pola marker i flag tego zapisu. Podpisy nadal podlegają weryfikacji: niższa waga nie pozwala pomijać sprawdzeń. [1] [2]

Serializacja to zapis transakcji jako precyzyjnie ustalonej sekwencji bajtów, którą komputery mogą przesyłać i odczytywać. Niech B oznacza rozmiar bez witness, a T rozmiar pełnego zapisu. BIP 141 definiuje wagę jako W = 3 × B + T. Dane podstawowe są już zawarte w T, więc wzór liczy je czterokrotnie, a dodatkowe dane witness jednokrotnie. Nie mierzy wartości płatności ani czasu pracy procesora. [1]

Rozmiar wirtualny to waga podzielona przez 4 i zaokrąglona w górę do liczby całkowitej: vsize = ceil(W / 4). ceil oznacza właśnie zaokrąglenie w górę. Transakcja ważąca 401 WU zajmuje zatem 101 vB. Zaokrągla się wynik dla całej transakcji. Osobne zaokrąglenie każdego wejścia i późniejsze dodanie wyników może dać inną wartość. [1]

Przyjmijmy przykładowe rozmiary B = 100 i T = 208 bajtów. Wzór daje W = 508 WU oraz vsize = 127 vB, czyli rozmiar z początkowego przykładu opłaty. Pełna transakcja jednak się nie skurczyła: jej kompletny zapis nadal wymaga przesłania 208 bajtów. Rozmiar wirtualny jest ważoną miarą używaną do rozliczania miejsca w blokach i obliczania opłat, a nie kompresją pliku. [1] [5]

Eksplorator bloków to aplikacja do wyszukiwania transakcji i bloków w danej sieci. Jeśli transakcja nie ma danych witness, B = T, a więc W = 4 × T. Jej podstawowy rozmiar wirtualny odpowiada wtedy pełnej liczbie bajtów. Dlatego eksplorator czasem pokazuje tę samą liczbę w obu polach rozmiaru, a czasem różne. W przypadku SegWit nie można po prostu podzielić wszystkich przesyłanych bajtów przez cztery: inne wagi dotyczą konkretnych części danych. [1] [2]

Węzeł to program, który sprawdza transakcje i bloki oraz wymienia dane z innymi uczestnikami sieci. Bitcoin Core v29.0 używa w niektórych regułach działania skorygowanego rozmiaru ceil(max(W, sigop_cost × bytes_per_sigop) / 4). sigop_cost oznacza ważony koszt operacji związanych z podpisami; bytes_per_sigop jest parametrem tych reguł. max wybiera większą wartość. Wyjątkowo wymagająca weryfikacja może więc zwiększyć rozmiar uwzględniany przez te reguły. Nie zmienia to wagi z BIP 141 ani zasad poprawności bloków. Jest to szczegół wskazanej wersji, a nie dodatkowe obliczenie wymagane przy zwykłej płatności. [1] [4]

Płatność może wydawać wyjście innej, jeszcze niepotwierdzonej transakcji. Przy ocenie takiego pakietu można dzielić właściwą sumę opłat przez sumę odpowiadających im rozmiarów wirtualnych. Zwykła średnia pojedynczych stawek pomijałaby różnice rozmiaru. Bitcoin Core v29.0 uwzględnia też lokalne korekty priorytetu i nie liczy ponownie transakcji, które już są w jego poczekalni. Wysoka łączna stawka nie uchyla pozostałych zasad i nie gwarantuje przyjęcia ani potwierdzenia. [4] [8]

Przed wysłaniem porównaj stawkę z całkowitą opłatą i szacowanym rozmiarem. Po utworzeniu transakcji decoderawtransaction może pokazać rzeczywiste pola size, vsize i weight: bajty, rozmiar wirtualny oraz wagę. Przy zwykłej płatności nie trzeba liczyć wzorów ręcznie. Uważaj też na podobną nazwę CompactSize: to kodowanie liczby całkowitej o zmiennej długości. Nie jest inną nazwą vByte ani sposobem zmniejszania transakcji. [5] [6]

Pełniejszy obraz uzyskasz, czytając to hasło razem z Block Weight, Compact Blocks, Block Propagation, Initial Block Download, Bitcoin, SegWit. Do tego hasła prowadzą również odsyłacze z Compact Blocks, Pruned Node, Block Weight, Package Relay.

DOC · 001BIP 141 — Segregated WitnessSpecyfikacja DOC · 002BIP 144 — SegWit peer servicesSpecyfikacja DOC · 003Bitcoin Core — policy feesDokumentacja DOC · 004Bitcoin Core — transaction policyDokumentacja DOC · 005Bitcoin Core — decoderawtransaction RPCDokumentacja DOC · 006Bitcoin Developer Reference — TransactionsDokumentacja DOC · 007Bitcoin Core v29.0 — Wallet transaction size and feesDokumentacja DOC · 008Bitcoin Core v29.0 — Package mempool acceptanceDokumentacja
Zaktualizowano: Najpierw źródła · To nie jest porada inwestycyjna