125 / 736vB

vByte

仮想バイト · vB

ウォレットに表示される sat/vB の意味と、小額の送金でも高額の送金と同じ手数料になる理由。仮想サイズが表すのは重み付けされた取引データの大きさであり、送るビットコインの価値ではありません。

vByte、略して vB は、ビットコイン取引の仮想サイズを表す単位です。データの部分ごとに異なる重みで数えます。ウォレットはこのサイズを手数料計算に使います。取引が大きくなるか、選ぶ料率が高くなると、手数料の合計も増えます。

Transaction Fees:サイズと手数料取引の仮想サイズ、指定した料率での手数料、選択通貨でのおおよその価値を見積もります。

アンナが Bitcoin を送ろうとすると、ウォレットは 2 sat/vB という料率を示しました。sat はビットコインの最小単位 satoshi、vB は取引の仮想サイズを表します。完成した取引が 127 vB なら、この料率での手数料は 254 sat です。Fee Rate とも呼ばれる料率は、送金の総費用そのものではありません。この例は計算方法の説明であり、現在のネットワークへの推奨料率ではありません。また、手数料を払っただけで特定の時刻までの承認が保証されるわけではありません。 [3] [5] [7]

ウォレットは残高をひとつの数字として支払うわけではありません。以前に受け取り、まだ使っていない取引の出力、つまり UTXO を使います。使う出力ごとに入力が増え、多くの場合、残りを自分のウォレットへ戻すお釣りの出力も作ります。そのため、小さな受け取りを多数まとめる方が、ひとつの受け取りから大きな額を送るより多くのデータを要することがあります。手数料は入力金額の合計から出力金額の合計を引いた額です。デジタル署名は、選んだ資金を使う権限があることを証明します。署名を作る前のサイズは見積もりであり、実効料率は最終手数料と最終サイズで決まります。 [6] [7]

バイトはデータ量を表す一般的な単位です。ただし、ビットコイン取引の手数料計算では、すべてのバイトを同じ重みで数えるわけではありません。SegWit は、資金を使う権限を証明するデータの一部を分離します。署名などを含むこの部分を witness と呼びます。取引の重さを計算するとき、基本データのバイトは 4 WU、witness を含む形式で追加されるバイトは 1 WU と数えます。WU は重さの単位です。この形式の補助フィールド marker と flag にも同じ割引が適用されます。署名の検証は依然として必要です。重さが小さいことは、検証を省いてよいという意味ではありません。 [1] [2]

シリアライズとは、コンピューターが送受信して読めるよう、取引を定められたバイト列で記述することです。witness を除くサイズを B、完全なサイズを T とします。BIP 141 は重さを W = 3 × B + T と定義します。基本データは T にも含まれるため、この式では基本データを四重に、追加された witness データを一重に数えます。送金額やプロセッサーの処理時間を測る式ではありません。 [1]

仮想サイズは重さを 4 で割り、整数に切り上げたものです。式では vsize = ceil(W / 4) と書き、ceil は切り上げを意味します。そのため、重さ 401 WU の取引は 101 vB になります。切り上げるのは取引全体の結果です。各入力を別々に切り上げてから足すと、同じサイズにならないことがあります。 [1]

例として B = 100、T = 208 バイトとします。式に入れると W = 508 WU、vsize = 127 vB となり、冒頭の手数料例のサイズが得られます。しかし、完全な取引が縮んだわけではありません。完全な形式で送るデータは依然として 208 バイトです。仮想サイズは容量と手数料を扱うための重み付けされた尺度であり、ファイル圧縮ではありません。 [1] [5]

ブロックエクスプローラーは、特定のネットワークの取引やブロックを調べるためのアプリです。witness データを持たない取引では B = T、したがって W = 4 × T です。この場合、基本的な仮想サイズは完全なバイト数と一致します。エクスプローラーのふたつのサイズ欄が同じ数字になる場合と、異なる場合があるのはこのためです。SegWit では、送るすべてのバイトを単純に四で割ることはできません。重みの違いは、データの特定の部分に適用されます。 [1] [2]

ノードは、取引やブロックを検証し、ネットワークの他の参加者と通信するソフトウェアです。Bitcoin Core v29.0 は、一部の運用方針で調整後のサイズ ceil(max(W, sigop_cost × bytes_per_sigop) / 4) を使います。sigop_cost は署名演算の重み付きコスト、bytes_per_sigop は方針のパラメーターです。max は大きい方の値を選びます。検証負荷が特に高いと、これらの方針で使うサイズが増えることがあります。BIP 141 の重さやブロックの有効性のルールが変わるわけではありません。これは記載した版の詳細であり、普段の送金に必要な追加計算ではありません。 [1] [4]

まだ承認されていない別の取引の出力を使う支払いもあります。そのようなパッケージを評価するときは、対象となる手数料の合計を、対応する仮想サイズの合計で割ることがあります。個々の料率を単純平均すると、サイズの違いが無視されます。Bitcoin Core v29.0 はローカルな優先度調整も考慮し、すでに自分の待機領域にある取引を重複して数えません。合算した料率が高くても、他のすべてのルールを無効にはできず、受け入れや承認も保証しません。 [4] [8]

送信前には、料率だけでなく手数料の合計と見積もりサイズも併せて見ましょう。取引ができた後なら、decoderawtransaction で実際の size、vsize、weight を確認できます。それぞれバイト数、仮想サイズ、重さです。普通の支払いで式を手計算する必要はありません。似た名前の CompactSize にも注意してください。これは整数を可変長で符号化する形式です。vByte の別名でも、取引を小さくする方法でもありません。 [5] [6]

理解を深めるには、この項目とあわせて次もお読みください Block Weight, Compact Blocks, Block Propagation, Initial Block Download, Bitcoin, SegWit. 次の項目からも参照されています Compact Blocks, Pruned Node, Block Weight, Package Relay.

DOC · 001BIP 141 — Segregated Witness仕様 DOC · 002BIP 144 — SegWit peer services仕様 DOC · 003Bitcoin Core — policy fees文書 DOC · 004Bitcoin Core — transaction policy文書 DOC · 005Bitcoin Core — decoderawtransaction RPC文書 DOC · 006Bitcoin Developer Reference — Transactions文書 DOC · 007Bitcoin Core v29.0 — Wallet transaction size and fees文書 DOC · 008Bitcoin Core v29.0 — Package mempool acceptance文書
改訂日: 一次資料を優先 · 投資助言ではありません