ビットコインを使ったことのあるすべての人は、「メンプール」あるいは「何らかのメンプール」を利用したことがあるだろう。では、メンプールとは何なのか?
技術的にいえば、「ザ・メンプール(唯一のメンプール)」というものは存在しない。ビットコインのフルノード(全履歴を保持するノード)は、それぞれ独自のメンプールで動作している。メンプールとは、ネットワーク上にブロードキャストされた有効なビットコイン・トランザクションのキャッシュであり、まだブロックに取り込まれていない状態の取引を保持する領域だ。
ノード同士は、互いにどの取引を保有しているかを確認し合い、もっていない取引データを交換する。これにより、メンプール内の情報がネットワーク全体で共有・拡散される。
本質的に、各メンプールは独立した「島」のようなもので、それぞれ独自の未確認トランザクションを保持している。また、ノードごとに異なる設定値や構成をもつ場合もある。例えば、メンプールのサイズは設定可能であり、デフォルトでは300MBに設定されている。加えて、「最低手数料レート(feerate)」も存在し、これはネットワークの混雑状況に応じて動的に調整される。必要に応じてこのレートを固定することも可能だ。メンプールがいっぱいになり、新たな取引が到着した際には、この最低手数料レートをもとに、低い手数料の取引をメンプールから除外するかどうかが決定される。そのほかにも、「datacarrier」や「datacarriersize」といったオプションも設定可能であり、これらはOP_RETURN出力(ブロックチェーン上にデータを記録するために使われる特殊な出力形式)を含むようなデータ記録用トランザクションに影響を与える。
ノードごとに、メンプールを運用する目的はさまざまで、求められる機能や挙動も異なる。しかし、最終的には各ノードが自律的にメンプールを運用しつつ、他のノードと連携・同期することによって、それぞれのニーズが満たされている。
各メンプールを地下でチャネル(通路)によってつながった文字通りの「プール(貯水池)」だと考えてみてほしい。プールが大きければ大きいほど、地面の掘り込みは深くなるというイメージだ。マイナーや取引所、ブロックエクスプローラー(ブロックチェーンの状態を可視化するサービス)などは、もっとも深いプールに該当する。こうした存在には、それぞれの立場から、未確認トランザクションすべてを把握しておきたい理由がある。マイナーにとっては、次に自分が採掘するブロックにもっとも高い手数料を含むトランザクションを選びたいという経済的動機がある。取引所にとっては、自社の顧客から発信された、あるいは顧客に届く予定のすべての送金情報を把握することが重要だ。ブロックエクスプローラーは、ブロックチェーンとメンプールに関するできる限り完全なデータセットを表示することがサービスの本質なので、あらゆるトランザクション情報を取り込む必要がある。一方で、一般的なノードにとって、メンプールの深さはそれほど必要ではない。むしろ、手数料レートが高い、いわば「上澄み」のトランザクションを保持できる深さがあれば十分だ。
ここで、各トランザクションを「液体のしずく」としてイメージしてみよう。手数料レートが高いほど、しずくは「密度の高い液体」として扱われる。このしずくは、チャネルを通ってプール間を流れ、それぞれのプールに到達すると複製されて、そのしずくをまだ受け取っていない他のプールへとさらに伝播されていく。プールが満杯になってくると、密度の低い液体(手数料の低いトランザクション)から順にプールの縁から溢れ出して排除されていく。
やがて、ある幸運なマイナーが自身のプールの底から「容量制限内の液体」をすくい取り、それをガラス製の水槽の列に注ぐ。このガラス水槽の列が、いわゆるブロックチェーンだ。ブロックチェーンには、時間の経過とともに次々と新しいブロック(ガラスの水槽)が追加され、取引が永続的に記録されていく。このようにメンプールの仕組みを視覚的にとらえることで、そのダイナミクス全体を直感的に理解しやすくなる。
この「プールが相互につながっている構造」は、ユーザーが異なる目的を果たすために存在している。
送金者
ビットコインでトランザクションを発信するユーザーにとって、メンプールには主にふたつの役割がある。
第一に、もっとも基本的な目的は、自分のトランザクションをマイナーのメンプールに届けることだ。マイナーのメンプールに届かなければ、そのトランザクションがブロックに取り込まれる可能性は皆無だ。メンプール同士がネットワーク上で連携し、トランザクションを相互に共有することで、どこかのメンプールに一度登録された取引は最終的にはすべてのマイナーのメンプールに行き渡ることが保証される。このように、ネットワークの接続状況が変化し分断されていても、トランザクションが確実にマイナーに届くようにする堅牢かつ分散化されたネットワーク構造は、ビットコインの健全な動作にとって極めて重要だ。
第二の用途は、手数料の見積もりだ。これは、特にレイヤー2技術を利用するユーザーにとって非常に重要といえる。例えば、ライトニングネットワークなどのレイヤー2ソリューションでは、ある時点で不正な状態に対して「チャネルを閉じる」ためのトランザクションを、すみやかに確実にブロックチェーン上で承認しなければならない状況が生じる。その際、適切な手数料設定が必要となる。ブロック内のトランザクション手数料を観察することで、ある程度の目安は得られるかもしれない。しかし、それだけでは最新のメンプールの状況、つまり直前のブロックが生成された後にネットワーク上に蓄積された未確認取引の状態を反映できない。突発的なスパイク(急増)や意図的にメンプールを圧迫するアクター(スパム攻撃)、または現在進行中でまだピークに達していない取引量の増加など、ブロックだけではみえない要素が多い。メンプールの可視化がなければ、手数料の見積もりは「現在の未確認トランザクションの混雑状況」を正確に反映することができないわけだ。
受信者
ビットコインを受け取る際、ユーザーのノードはそのトランザクションとそれを含むブロック全体を検証する。自分に支払われるトランザクションがネットワーク上にブロードキャストされ、それがマイナーのメンプールに届き、マイナーがブロックを発見し、そのブロックがネットワーク上に広まり、自分のノードがそれをダウンロードして検証する。通常はそうした流れを想像しがちだ。
しかし、実際にはそんな動作はしていない(ただし、自身のノードでメンプールを無効化し、「blocksonlyモード」で動作させている場合は別だ)。通常のノードは、トランザクションが最初に自分のメンプールに届いた時点で、取引の正当性を検証し、有効なビットコイン・トランザクションとしてキャッシュしている。マイナーがブロックを見つけた際、実際にはブロック全体を最初から送信してくるわけではない。代わりに、ブロックヘッダーと、より簡単に説明するなら「そのブロックにどのトランザクションが含まれているかを推定可能にする、圧縮された小さな情報片」が送られてくる。受信側のノードは、あらかじめ検証済みで保持していたトランザクション情報を用いてブロックの中身を復元し、ブロックヘッダーを検証する。すべてが有効だと確認できれば、その「コンパクトブロック」を次のノードへと中継する。
こうした最適化のおかげで、マイナーたちはもはやFIBRE(マット・コラロが運営していた中央集権型の許可制リレーネットワーク)や短命に終わったFalcon Networkといったリレーネットワークに依存せずに済む。かつて、これらのリレーネットワークは、ピア・ツー・ピア(P2P)ネットワーク上でのブロック伝播速度が不十分だったことから、他のマイナーへの低遅延でのブロック中継を保証するために利用されていた。
マイナー
言うまでもなく、マイナーはすべてのトランザクションを把握したいと考えている。なぜなら彼らは利益追求型の存在であり、できるだけ多くの未確認トランザクションのなかから、もっとも高額な手数料を支払っているものを選びたいからだ。これこそが、彼らが利益を最大化し、収益を得て、事業を拡大し続け、競争力を維持するための方法なのだ。
マイナーは文字通り「メンプールからお金を取り出している」存在だ。したがって、マイナーにとっては、どんな有効な取引であっても手数料を支払っている限り、それを取得する動機が非常に強い。実際に歴史をみても、現在においても、将来においても、ユーザーがトランザクションをオープンなP2P経由ではなく、マイナーに直接送信できるようにするための仕組みが数多く構築されてきた。これには、特定のプロトコルやインフラに加え、非公式でソーシャルな手段によるものも含まれている。つまり、マイナーは収益の機会を逃さないために、ネットワーク上のすべての有効なトランザクションにアクセスできる手段を積極的に模索・構築しているのだ。
ブロックエクスプローラーやチェーン解析企業など
このカテゴリに属する存在も、マイナーと同様に、世界中で生成・ブロードキャストされたすべての未確認トランザクションを把握したいと考えている。両者の主な違いは、マイナーはこうしたトランザクションから直接手数料収入を得るのに対して、ブロックチェーンエクスプローラーやチェーン解析企業は、トランザクション情報を表示・分析し、その分析結果を製品やサービスとして提供・収益化するという間接的なかたちで収益を得ている点だ。
キャッシュされたメンプールデータに関して明確な事例を挙げることはできないが、チェーン解析企業が、オンチェーン上の取引活動に関するプライベートに取得されたメタデータを定期的に購入していることは知られている。また、彼らが「シビルノード」を運用していることもある。これは、ビットコイン・ネットワーク上のできるだけ多くのノードと接続し、どのノードが最初にトランザクションをブロードキャストしたのかを特定するための手法である。
ブロックエクスプローラーもまた、ブロックチェーンおよびメンプールの可視化データを収益化している。彼らのビジネスモデルは、こうした情報をユーザーに提供することに基づいている。表示データが多ければ多いほど、より豊富なコンテンツを提供でき、情報の可視化や派生分析において新規性や有用性のある手法があれば、それ自体を収益化の材料とすることが可能となる。
情報は“流れたい”
こうしたあらゆるユーザー層が、「公開メンプール」の存在によって恩恵を受けている理由は非常にシンプル。それは「情報が自由に流通する」というダイナミクスがあるからだ。
トランザクションに十分な手数料が設定されており、ネットワーク上の最低中継フィルターを通過でき、かつコンセンサス上の有効性があり、個々のノードにとってサービス妨害(DoS)やリソース枯渇のリスクを与えるものでなければ、それはネットワーク全体のメンプールを通して伝播されることで、あらゆるユーザー層に価値をもたらす。
もし、機能的な公開メンプールが存在しなければ、ユーザーが本来享受できるすべての用途に対する選択肢は、中央集権的なソリューション、あるいは管理不能なほどに断片化された寄せ集めの不完全な公開メンプールの混沌とした集合に限定されてしまう。こうした分断された環境では、ユーザーひとりひとりが個別にそれらを追跡しなければならなくなる。
その結果として生じるのは、手数料レートデータの操作、ユーザーを欺く行為、プライベート中継によるマイナー抽出可能価値(Miner Extractable Value: MEV)の懸念などだ。健全で開かれた公開メンプールが存在しない限り、ビットコインはこれらの問題に直面せざるをえなくなる。
続編記事では、こうした課題に加えて、さまざまなメンプールフィルターの種類や、それぞれが存在する理由についても取り上げていく予定だ。