This article has been translated from English to Japanese.
ビットコインは「どの取引を維持するか?」という問いに答えている。
ビットコインがこの質問に答える方法は素晴らしい。
その方法は次の通りである。
ビットコイン・ネットワーク上のすべてのノードは、新しい取引に関する情報を共有している。
ビットコインネットワーク上で実行された取引は、直接ブロックチェーンに追加されるわけではない。まず「メモリプール」と呼ばれる場所に集められ、保存される。
ビットコインプログラムを実行しているすべてのコンピュータは、「メモリプール」と呼ばれる 取引の一時的な保存領域を作成する。「mempool」と略して呼ばれることもある。
各ビットコインノードには独自のmempoolがあり、そこで確認済みで有効とみなされた取引のキューが保存される。
大まかに言えば、mempoolは、新たに作成されるブロックに追加される前に、取引が保存され、整理される整理されたキューである。
- メモリプールには「最新」または未確認の取引(個々の取引として保存)が格納される。
- ブロックチェーンには、「アーカイブ済み」または「確認済み」の取引(「ブロック」にパッケージ化された)が保存される。
ビットコインのすべての取引は、単に「未確認」の取引であり、「確認」されてブロックチェーンに追加されるまでは、メモリプールにのみ存在する。
ビットコインネットワークでは、すべてのフルノードがメモリプールを持っている。
例えば、あなたがネットワークのこちら側でトランザクションを開始したとする(紫色のトランザクション)。
そして、こちら側へ移動し、同じビットコインを使って、このコンピューターに赤いトランザクションを挿入する。
気づいたと思うが、この2つのトランザクションはファイルに直接書き込まれるわけではない。両方のトランザクションは、まずそれぞれのコンピュータのメモリプールに保存されるだけだ。
そのため、両方の取引がネットワーク全体に伝播する。
このコンピュータは、紫色のトランザクションをすでに受け取っているため、赤色のトランザクションを拒否する。
したがって、今では両方のトランザクションがネットワーク上にある。
しかし、まだファイルには書き込まれていないため、ファイルはまだ更新されていない。
次に何が起こるかというと、これらのコンピュータすべてが動作し、メモリプールからファイルにトランザクションを取得しようとする。
メモリプール内のトランザクションをファイルの先頭に追加しようと競い合うことになる。
例えば、このコンピュータ(黄色)が最初にそれを実行できたとしよう。
そのコンピュータは、メモリプールからファイルにトランザクションを追加する。
そして、それが完了すると、
更新されたファイルのコピーを、接続している他の全員に渡す。
そして、彼らは自分のコピーを更新する。
下の図では、このノードが紫色で同じビットコインを使用する支出を含む更新されたファイルを受け取る。
メモリープール内の競合する赤いトランザクションはどうなるのか?
紫色のトランザクションで同じビットコインがすでに使用されているため、赤色のトランザクションはメモリープールから追い出されることになる。
このノードは更新されたファイルを渡す。
そして、他のノードも同じことを行う。つまり、メモリプール内の競合するトランザクションをすべて排除する。
すべてのコンピュータが更新されたファイルを持つことになる。
これが、ネットワーク上で2つの競合するトランザクションが発生する問題を解決する方法である。
文字通り、保留中のトランザクションのための「待合室」(mempool)があり、ノードが競合してトランザクションをファイルに追加しようとする。
この例では、紫色の人物がビットコインを受け取るだろうが、
しかし、あなたが怪しい人物で、同じビットコインを赤い人物と使おうとした場合、それはうまくいかない。
ノードが競い合って、それぞれのメモリプールからトランザクションを「ブロックチェーン」と呼ばれるファイルに書き込もうとするこのプロセスは、「マイニング」と呼ばれている。









