Transaction Sizeとは何ですか?
Transaction Sizeは、暗号取引が占めるデータ量で、通常はバイトまたは仮想バイトで測定されます。データが多いほどネットワーク上で保存や転送に負担がかかります。絵文字1つのメールを送るのと写真アルバム丸ごとを送るのを比べるとイメージしやすいです。
「もし多くの暗号資産を送れば、Transaction Sizeが大きくなる」これは正しくありません。サイズはコインの量ではなく、トランザクションが含む入力、出力、署名の数によって決まります。
Transaction Sizeの仕組み
Bitcoinのシンプルな送金例を使った簡単な説明です。
- ステップ 1:ウォレットは入力を選びます。これは過去に受け取ったコインです。入力が多いほど一般にバイト数が増えます。
- ステップ 2:受取人への出力と、通常はあなたへのお釣り用の出力を作成します。各出力がデータを少し増やします。
- ステップ 3:署名とスクリプトを追加します。マルチシグ取引のような機能は、より多くの鍵が署名する必要があるため追加のバイトが増えます。
- ステップ 4:ウォレットはサイズに現在の手数料率を掛けて費用を見積もります。ここで取引手数料が関係します。
- ステップ 5:マイナーはバイトあたりの手数料が高いものを優先するため、同じ総手数料ならTransaction Sizeが小さい方が早く承認されやすくなります。
分かりやすいですね。データが小さいほど通りやすくなります。
なぜTransaction Sizeが重要か
速度とコストを気にするのはあなただけでなくマイナーも同じです。
- 利点:Transaction Sizeが小さいと、同じ確認目標を維持しつつ支払額が少なく済むことが多いです。
- 状況:ネットワーク混雑時は手数料が高騰し、サイズの大きいトランザクションは処理するのに高くつきます。
- 関連:スケーラビリティに関係します。より多くのトランザクションをブロックに収められれば総処理量が増えます。
Segregated Witness (SegWit)をサポートするアドレスやウォレットを使いましょう。費用に影響しやすいデータが削減されるため、Transaction Sizeの仮想バイトが減少します。
Transaction Sizeの主な特徴
増減させる要因:
- 入力:入力が多いと署名やスクリプトが増え、それがバイト数を増やします。
- 出力:受取人やお釣り用の出力が増えるとサイズが増えますが、通常は入力ほどではありません。
- スクリプト:複雑なスクリプトや支払い条件は含めるデータを増やします。
- ウィットネス:SegWitでは一部のデータが仮想バイト換算で割引扱いになります。
- 再利用:手数料が低いときに小口コインをまとめると、将来のTransaction Sizeを減らせます。
Transaction Sizeはどのように計算されますか?
Bitcoinではデータはバイト列として直列化されます。SegWitがあるとサイズはしばしばweight(ウェイト)と仮想バイトで表されます。
- ウェイト:非ウィットネス部分のバイト数×4にウィットネス部分のバイト数を加えます。
- 仮想バイト:vbytesはウェイトを4で割って切り上げた値です。
例:非ウィットネスが180バイト、ウィットネスが100バイトの場合、ウェイトは180×4+100=820になり、vbytesは820÷4=205です。
表記の違い
サイズを指すさまざまな表現:
- バイト:割引なしの生の直列化長です。
- 仮想バイト:SegWit割引後に手数料市場で使われる指標です。
- ウェイト:ウィットネス部分と非ウィットネス部分に異なる重みを適用する内部的な指標です。
送るビットコインの量はTransaction Sizeを変えません。トランザクションの構造が決めます。
例
入力1つ、出力1つで友人に送る場合は数百仮想バイト程度になることが多いですが、小さな入力を5つ使うとTransaction Sizeが大幅に増え、手数料も上がります。
豆知識
SegWitはウェイトと仮想バイトの概念を導入しました。これにより従来の1メガバイトという見方を変えずにブロックにより多くのトランザクションを収められるようになりました。暗号史とコード上の工夫が組み合わさった話です。
まとめ
Transaction Sizeはコストの足跡だと考えてください。可能なときに小さくしておくと、手数料がかかるときに助かります。
