第3回で取引を送信する流れまでを追いましたが、今回は送信された取引を承認し、第2回で説明したブロックチェーンに取引を組み込むまでの流れを解説します。
ユーザーによって送信された取引は、すぐにメモリプール(memory pool, mempool)と呼ばれる場所に一旦溜め置かれます。メモリプールはマイナー(採掘者)と呼ばれる取引の承認者それぞれのコンピュータ内で別々に構築されます。
マイナーが受信したすべての取引は一時的にメモリプールに入りますが、署名された取引を検証し不正な取引を除外したり、同じアドレスから送金が複数回実行されるような重複する取引(二重支払い)を除外したりすることによって、不正な取引がブロックには組み込まれないようになっています。
メモリプールの構築と同時に行っているのが第2回で解説したnonceの探索です。ブロックヘッダーのハッシュが一定数の連続する0からはじまる値になるような任意の値のことをnonceと言います。正しいnonceを発見したマイナーが、メモリプールからブロックを作成しブロックチェーンにつなげる権利を獲得できるというわけです。
nonceは4バイトの任意の値ですが、上図のように0から順番に数字を増加させていくという方法が最も効率的であるため、このようにnonceの探索を行うのが一般的です。ちなみに、各マイナーで構築しているメモリプール(上図では「その他のデータ」)が異なるため、マイナーによって正しいnonceも異なります。
ビットコインでは、nonceの発見に約10分かかるように調整されています。調整するための値はターゲット(target)と呼ばれます。簡単に言えば、ターゲットとは、有効なブロックヘッダーのハッシュとして0が何個連続すればいいかを定める値です。0が10個連続しなければならないターゲットよりも0が20個連続しなければならないターゲットのほうが、難しいというわけです。このターゲットは人間の目では一見よくわからない値なので、通常はdifficulty(採掘難易度)という数字に変換して表現されます。
なお、マイナーのコンピュータの演算能力は、技術の進歩やマイナーの数によって日々変化していると考えられるので、ビットコインではターゲット(=difficulty)を約二週間に1回調整するようになっています。
このようにコンピューターに計算(仕事)をさせることにより、有効なブロックヘッダーのハッシュを求め取引を承認するシステムのことをプルーフ・オブ・ワーク(proof of work)と呼びます。
これまで、マイナーが取引承認を行う流れを追ってきましたが、ではその作業を行う動機は何なのでしょうか?ビットコインの黎明期には単なる好奇心でマイナーの作業を行っていた人もいるでしょうが、ビットコインには明確な動機付けとなる仕組みが含まれています。それは、ブロックを生成したときに報酬としてビットコインをもらえることです。
この報酬の内訳は①新たに生成されるビットコインと②ユーザーが支払う取引手数料となっています。新たに生成するコインは、最初は50BTCで210,000ブロック(約4年)おきに半減するように設定されており、最終的には、2140年頃に2,100万BTCを生成した時点で発行が終了することになっています。報酬には新たに生成するコイン以外にも取引手数料が含まれているので、発行上限に達してもマイナーとなる動機はなくならないというわけです。
ビットコインにおける取引承認が金などの採掘になぞらえてマイニング(採掘)と呼ばれるのもこのためです。ちなみに報酬をブロックを生成したマイナーに送る取引のことはcoinbaseと呼ばれます。
ビットコインを利用する上では重要な仕組みがもう一つあります。もう一度メモリプールの段階に戻ってみていきましょう。
ブロックを生成する権利を得たマイナーは自身のメモリプールからブロックを生成しますが、ブロックには1MBというサイズ上限が設定されているため、メモリプール内のすべての取引を同時にブロックに組み込むわけではありません。メモリプール内の取引は優先順位をつけられ、優先度の高いもののみブロックに格納され、残りはメモリプールに残ったままになります。ブロックに格納されることを確認(confirmation)(または承認)と言います。メモリプールに残っている状態は未確認(unconfirmed)です。ブロックに取り込まれ確認された取引は、ブロックを生成したマイナー以外のメモリプールからも消去されることになります。
取引の優先度は取引手数料(トランザクションフィー)によって決められます。取引手数料は、単純な金額ではなく取引データ(トランザクション)サイズあたりの取引手数料であるため、取引データのサイズが大きいほど必要手数料も大きくなります。また、ネットワークが混雑、つまりメモリプールに取引が沢山押し寄せている1MB上限を超えるような状況のときほど必要手数料は大きくなると言えます。
なお、メモリプールにも有効期限及び最大容量が設定されているため、一定期間経過した取引が除外されたりメモリプールが容量オーバーになった場合には、手数料の低い取引から順にメモリプールから除外され、実質的にビットコインは元のアドレスに戻り再度使用できるようになります。
※メモリプールは確固とした「ビットコインの仕様」というよりも簡単に変更され得る「マイナーの自主制定ルール」というべきものです。実際に以前のビットコインのバージョンでは、取引手数料だけではなく取引の経過時間も取引の優先度に考慮されていたことや、メモリプールに特に有効期限などがなかったこともありました。実質的にビットコインの公式ソフト的な役割を果しているBitcoin Core以外を利用すれば、現在でも過去のルールや独自のルールを利用したり、マイナーの関係者の取引だけ特別に手数料無料で承認させるといったことも可能です。
最後に実際にビットコインを利用する上で重要な仕組みを説明しましょう。
これまで見てきたように、取引が確認されるのには約10分かかります。そして、ビットコインの「送金完了」にかかる時間はこの10分と言われています。これは、メモリプール内の取引は、一時的に残っていても除外されたりする可能性があるためです。しかし、店頭での支払いなど10分待つのが現実的ではない場面が多くあるのも事実です。そこで実際には、未確認でも送金完了とみなす「0確認取引」がしばらくの間行われていました。
これは、二重支払い(同じアドレスの同じコインから出金される複数の取引)があったとき、メモリプール内に先に取り込まれた取引を優先し、後からきた取引は二重支払いと見なしメモリプールに組み込まないという作業を、マイナーが基本的に行っていたためです。ほとんど時間を置かずに送信された二重支払いの取引は、ネットワークの遅延などにより不正な取引が先にメモリプールに入る可能性もありますが、数秒~数十秒待って正しい取引が主要マイナーのメモリプールにあることを確認すれば二重支払いのリスクは大幅に下がりました。
しかし、Bitcoin Core 0.12.0(2016年2月リリース)から状況が変化しました。ビットコインの利用者増加や価格高騰に伴い必要な取引手数料も高騰し、送金したのに何時間もあるいは何日もなかなか確認されずに困る人が続出したため、手数料を上乗せで支払えば取引の置換を可能にする機能が実装されたのです。この機能はRBF(Replace-By-Fee, 手数料による置換)と呼ばれます。Bitcoin Core 0.12では、事前に手数料を上げるかもしれないという印を付加した取引のみRBFを可能にする限定的なRBFで、Opt-in RBFと呼ばれています。
Bitcoin Core 24.0(2022年11月リリース)からは、印をつけることなくどんな取引でも手数料を追加で支払えば取引の置換が可能になる、Full RBFという完全なRBFがさらに実装されました。
追加の手数料を支払うRBFは、別の言い方をすれば、重複するトランザクションを再度送信して二重支払いを実行するものです。RBFはより高い手数料を支払わなければならないものの、同じ送信先でなければならないなどの制限はないため、相手のアドレスに送金した後にトランザクションが確認される前にRBFにより自分のアドレスに送金して、実質的に送金を「キャンセル」することも可能です。そのため、現在ではリスク回避のため即時決済を行うことは難しくなっています。
このRBFの導入には当然賛否がありましたが、メモリプールの取引の優先度で見たようにブロックに入る前のメモリプール内のトランザクションの取り扱いは、あくまでも「マイナーの自主制定ルール」によります。そのため、導入前でもリスクはありましたし、それよりもユーザーが送金したトランザクションがなかなか承認されずに身動きがとれない状況の解決などのためにこのような流れとなっています。
※取引所のアカウントなど企業に預けているビットコインをそのまま決済に利用すれば、安全に即時決済を行うことはできます。また、個人のウォレットから安全に即時決済を行うための技術の開発なども進められています。
ブロックチェーンは全世界に公開されているため、実際に取引が確認されたのか、つまりブロックに組み込まれたのかを簡単にインターネット上で見ることができます。このようなブロックチェーン情報を見れるサイトはブロックエクスプローラーと呼ばれ、多くのサイトがあります。
以下にその例をいくつか挙げるので、実際にビットコインを送金する際には確認して見ると便利でしょう。
最終更新日: 2023年03月05日
コメントシステムを試験的に変更し、メールアドレスの入力やSNSからのログインを廃止しました。投稿後5分以内であれば編集や削除が可能です。その後に削除したいコメントがあれば依頼していただければこちらで削除いたします。
質問については出来る限りお答えしていますが、個人が運営している関係上対応の遅れや見逃し等限界もあるのでご了承ください。