用語集 / トランザクションと手数料
標準トランザクション
- 標準トランザクションとは?
- 標準トランザクションとは、通常のノードがリレーし、自身のmempoolに保持することに同意するトランザクションのことであり、単にコンセンサスルールの下で有効であることよりも厳しい基準です。
ネットワークを守る関門は2つあり、それぞれ別のものです。コンセンサスはブロックに何を含めてよいかを決め、フォークによってしか変更できません。標準性は、あなたのノードがピアに何を伝えるかを決め、新しいリリースが出るたびに変わります。2つ目の関門を通過しないトランザクションは無効ではなく、受け入れられないものであり、何か別の経路でマイナーに届ける必要があります。
仕組み
標準性とは、各ノードが独自に適用するチェックリストであり、Bitcoin Coreにおけるそのチェックリストの版は1つのソースファイル、src/policy/policy.cppにあります。
主な条件は次のとおりです。すべてのアウトプットスクリプトは、認識されるテンプレートのいずれかに一致しなければなりません。pay to public key hash、pay to script hash、3種類のウィットネスタイプ、鍵が3つ以下のベアマルチシグ、またはデータを運ぶアウトプット1つのいずれかです。トランザクションは400,000ウェイトユニット、つまり100,000仮想バイトを超えてはなりません。これはブロック1つ分の4分の1です。バージョンは許容範囲内でなければなりません。手数料は最小リレー手数料、既定では仮想バイトあたり1サトシ以上でなければなりません。どのアウトプットもダストのしきい値を下回ってはならず、レガシーアウトプットでは546サトシ、ネイティブSegWitのアウトプットでは294です。アンロックスクリプトはデータプッシュのみを含み、オペコードを含んではなりません。
これらのいずれかに違反すると、sendrawtransactionから具体的なエラーが返ります。通常は"non-mandatory-script-verify-flag"または"scriptpubkey"という語で始まり、そのトランザクションは送信先のノードの先へ広がることはありません。
ポリシーの層が存在するのは、リレーは無料でブロックは無料ではないからです。誰でもマイニングされることのないトランザクションでネットワークを溢れさせることができるため、ノードは、悪用に見える形、検証に費用がかかる形、現実的に費用を賄えない形を伝えることを拒否します。またポリシーは、エコシステムが安全であると合意するまで実験を一般の流通から遠ざけておく場所でもあり、それゆえポリシールールを緩めることは、まったく調整を必要としないにもかかわらず、ソフトフォークと同じくらい議論を呼ぶことがあります。
どこで目にするか
ほとんどの人は標準性にエラーメッセージとして出会い、それを生み出すウォレットは通常、意図的に何か普通でないことをしています。
300サトシのアウトプットを送ろうとすると、ダストのルールに触れます。大きなマルチシグをpay to script hashの内側ではなくベアスクリプトとして構築すると、テンプレートのルールに触れます。ノードのデータキャリア設定が許す以上のデータを付加すると、その上限に触れます。3つとも、何かがネットワークに届く前に、あなた自身のノードからの拒否として返ってきます。
非標準は不可能という意味ではなく、今ではそれを回避する市場があります。2023年2月2日に、マイニングプールのLuxorはブロック774,628をマイニングしました。このブロックには、どのノードもリレーしなかった3.94メガバイトのトランザクションが1件だけ含まれており、プールに直接送信されたものでした。後にMarathonは同じ考えをSlipstreamという製品にして2024年に投入し、非標準および過大なトランザクションを直接取り込むために受け入れています。一般の購入者であれば、これを必要とすることは決してなく、そのようなサービスの利用を求められることは、何か異常なことが起きているという強い兆候です。
標準トランザクションvsコンセンサス上有効なトランザクション
コンセンサス上の有効性はネットワーク全体が合意しなければならないものであり、標準性は個々のノードが手助けすることを選ぶものです。トランザクションはコンセンサス上有効でありながら非標準であり得、その場合マイナーはそれを含めることができ、すべてのノードは結果として生じたブロックを異議なく受け入れます。逆は起こり得ません。コンセンサスに反するものは、そもそもマイニングされることがあり得ないため、リレーされることも決してありません。平たく言えば、標準性はマイナーへ至る道のフィルターであり、コンセンサスは履歴が正しく延長されたかどうかを決めるルールです。