出典:Bitcoin Magazine; Compiled by Five Baht, Golden Finance
ビットコインを使ったことがある人なら、誰もがメモリープール(mempool)を使ったことがあるだろう。では、メモリプールとは何でしょうか?
技術的には、「ユニークな」メモリープールというものは存在しません。各ビットコインフルノードは、ネットワークにブロードキャストされたが、まだブロックで承認されていない有効なビットコイン取引のキャッシュである独自のメモリプールを操作します。ノードは互いにメッセージを交換して、どのトランザクションを所有しているか、または所有していないかを確認し、所有していないトランザクションを交換します。
各メモリプールは基本的に、未確認トランザクションの独自のセットと、時には独自の構成変数や設定を持つ、独立した「島」です。プールのサイズは設定可能で、デフォルトは300MBです。また、最小レートがあり、これは動的に調整され、値を設定することができます。これは、メモリプールが満杯になり、さらにトランザクションが入ってきたときに、どのトランザクションをメモリプールから追い出すかを決定するために使用される。OP_RETURN出力を含むトランザクションに影響するdatacarrierやdatacarriersizeオプションなど、他にも設定可能なオプションが多数あります。
ノードによってメモリプールを実行する理由は異なり、したがってニーズも異なりますが、最終的には、すべてのノードがそれぞれのメモリプールを同期して実行し、相互に作用することによって、これらのニーズが満たされます。
各メモリプールは、基礎となるチャネルを介して互いに接続されている実際のプールと考えることができます。メモリプールが大きいほど、基礎となるプールは深くなります。マイナー、取引所、ブロックブラウザ、これらは最も深いプールになります。これらにはそれぞれ、ブロックにパッケージされるのを待っているすべての未確認トランザクションについて知りたいという動機がある。マイナーは、次のブロックで最も収益性の高い取引を行うため。取引所は保留中の取引をすべて把握するため。ブロックブラウザーは、ブロックチェーンとメモリプールに関する完全なデータセットを可能な限り提示するサービスです。平均的なノードは、「メモリプール」の最高レート部分を含むのに十分な深さしか必要としません。
ここで、各トランザクションを液体の一滴と想像してください。この液体はマイニングプール間のチャネルを流れ、各プールに到達すると、受け取った液体の一滴はコピーされ、チャネルを通じて、まだ受け取っていない他のプールに送られます。プールが満杯になり、液体が溢れ出すと、密度の低い(レートの低い)液体が先にプールの端からこぼれる。
やがて、幸運な採掘者がプールの底から一定量の液体をすくい上げ、最新のガラスシュートに注ぎ込むと、液体で満たされ、永遠にそこに留まる(ブロックチェーン)、長く曲がりくねったガラスシュートができあがる。これはシステムを直感的に考え、そのダイナミクスの大部分をカバーする方法にすぎない。
このように相互接続されたマイニングプールの配置は、ユーザーによって異なる用途を提供します。
トレーダー
ユーザーが取引を行う場合、メモリプールには2つの用途があります。1つ目は、最も重要なことですが、取引をマイナーに送信することです。トランザクションが採掘者のメモリプールに入らなければ、ブロックにまとめることができません。メモリプールはトランザクションを互いにリンクし共有するため、トランザクションが一旦メモリプールに置かれると、それがすべてすべてのマイナーのメモリプールに行き着くことを保証する。ネットワーク接続の変更や断片化とは無関係に、トランザクションが最終的にユーザーからすべてのマイナーに送信されることを保証する、堅牢で分散化されたネットワークを持つことは非常に貴重です。
2つ目の用途は手数料の見積もりで、無効な状態への応答トランザクションがタイムリーに確認されることを常に保証する必要があるレイヤー2ユーザーにとって特に重要です。これらのブロックのトランザクションのレートを見るだけで、料金をある程度推定することは可能ですが、これでは最新のブロックの後のメモリプールの状態についての情報は得られません。突発的な高騰や投機筋がメモリプールに殺到したり、まだ終了していない次の取引の波が急増したりすることを考慮することはできない。メモリプールを表示する機能がなければ、手数料の見積もりは、保留中のトランザクションの現在の状態を確実に考慮することはできません。
受取人
ビットコインを受け取ると、あなたのノードはトランザクションとそれを含むブロック全体を検証します。あなたに支払われた取引はブロードキャストされ、採掘者のメモリプールに行き着きます。採掘者はネットワークにブロードキャストされるブロックを見つけ、あなたのノードがブロックをダウンロードして検証します。
しかし、実際の仕組みはそうではありません(ノードのメモリプールを無効にしてブロックオンリーモードで実行しない限り)。ノードは、各トランザクションがメモリプールで最初に受信されたときにそれを検証し、有効なビットコイントランザクションとしてキャッシュします。マイナーがブロックを見つけると、実際にはブロックヘッダと、どの取引がブロックに含まれているかを判断するために使用できる圧縮された情報(簡単な説明はできませんが)を転送するだけです。その後、ノードは事前に検証されたトランザクションを取得し、ブロックヘッダを検証し、それらすべてがパスした場合、「コンパクトブロック」を転送します。
この最適化により、以前Matt Corrallo氏によって維持されていたFIBREや、短命に終わったFalcon Networkのような、中央集権的でパーミッションが必要なリレーネットワークにマイナーが頼らなくなりました。ピアツーピアネットワークのリレー速度が遅いため、他のマイナーとの低遅延ブロックリレーを保証するために、マイナーはファルコンネットワークに接続しなければなりませんでした。
採掘者
採掘者は明らかにすべてを見たいと思っています。彼らは利益を追求する主体であり、保留中のトランザクションの可能な限り最大のコレクションをふるいにかけて、最も高いペイアウトを含むものを見つけることができるようにしたいと考えています。これが、彼らが利益を最大化し、ビジネスを拡大し競争力を維持し続けるための収益を得る方法なのです。
彼らは事実上、メモリのプールからお金を取っているのです。有効な有料トランザクションを捕捉しようという彼らのインセンティブは非常に強いため、彼らは歴史的にも、現在も、そして将来的にも、オープンなピアツーピアネットワークを通じてではなく、ユーザーが直接マイナーにトランザクションを提出できるように設計された数多くのシステムや、社会的に利用可能な非公式の取り決めさえも構築してきました。
ブロックブラウザ、オンチェーン分析ツール、その他
彼らはマイナーと同様に、作成され世界にブロードキャストされたすべての保留中のトランザクションを見たいと思っています。この2つの主な違いは、採掘者はこれらの取引に対して手数料を請求することで直接利益を得ているのに対し、ブロックチェーンブラウザや分析会社は、有益な分析結果を表示、分析、提供することで間接的に利益を得ているという点です。
キャッシュメモリプールデータに関わる具体的な例を挙げることはできませんが、オンチェーン分析企業がオンチェーン取引活動に関する個人的に入手したメタデータを定期的に購入していることはよく知られています。彼らはまた、最初にトランザクションをブロードキャストするノードを絞り込むために、ネットワーク全体のノードと可能な限り広くピアする魔女のビットコインノードを操作しています。
Block Browserはまた、ブロックチェーンとメモリプールのデータを視覚的に表示することで利益を得ており、彼らのビジネスモデル全体がこれを中心に回っている。より多くのデータにアクセスし、それをユーザーに提示するということは、実用的または斬新な方法で提示することができれば、より多くの潜在的に利益を生む情報を得ることができる、またはそこから得られる情報を得ることができるということです。
情報は流れに飢えている
これらすべての異なるタイプのユーザーが、「1つの」パブリック・メモリー・プールから恩恵を受けるのは、1つの単純な理由があるからです。最低のリレーフィルターを通過するのに十分なコストがあり、コンセンサスを満たし、個々のノードにサービス拒否やリソース枯渇の正当なリスクをもたらさない限り、ネットワーク内のメモリの各個別プールを横切って情報を広めることは、すべてのタイプのユーザーに価値を提供します。
完全に機能するパブリックメモリプールがなければ、用途の異なるこれらの個々のユーザーすべてにとって実行可能な唯一の選択肢は、中央集権的なソリューションか、各ユーザーが個別に追跡する必要がある断片化されたパブリックメモリプールを構築する、行き当たりばったりの管理不能な混乱した試みしかないでしょう。
これは、レートデータの操作、ユーザーの不正行為、私的なリレートランザクションによるマイナーによる価値の抽出可能性についての懸念を潜在的に生み出すだけではありません。健全でオープンなパブリックメモリプールがなければ、これらはすべてビットコインが取り組まなければならない問題です。
次の記事では、これらの問題と、さまざまな種類のメモリプールフィルタ、およびそれらが存在する理由を検証します。