ブロックチェーンが一時的にフォーク!
本日ビットコインにstale block(古くなったブロック)が見つかりました。
Stale blockとは、ある時点まではブロックチェーンの先頭につながれていたブロックで、現在は有効なブロックチェーンに含まれていないブロックのことです。以下は、その事象をまとめたBitMexのリサーチチームによるツイートです。
以下に今回の事象について解説してみました。
今回の事象をまめた図が以下となります。図を見ると、①のブロックにつながっているのは②と③です。
これは、ある時点で有効なブロック②と③がほぼ同時に見つかったため、ビットコインのコミュニティの半分は②のブロックを、その他は③のブロックを有効なブロックとして取り込んだことを表しています。その後、④のブロックが見つり、③のブロックへつなげられました。コミュニティは、一番良いブロックチェーン(最長ではなく、最も作業を要したチェーン)を採用するので、①→③→④のチェーンを有効なものとしました。この時点で、②のブロックは非活性ブロックとして置き去りになります。
では、②のブロックを見つけた時のマインイング報酬や、②のブロックに含まれた送金トランザクションはどうなるのでしょうか?
まず、マイニング報酬は無効となります。②の時点で報酬を得たマイナーですが、チェーンが④へ切り替わると、②で得た報酬残高が消えてしまいます。
次に、②の時点でブロックに取り込まれて承認済みとなった取引についてですが、これらは③を採用していたコミュニティにとっては未承認な取引とみなされています。そして、④のブロックを見つけたマイナーは②に含まれていた取引(マイナーは②に含まれていたとは認識していない)を④のブロックに格納して、③のチェーンへつなげます。今回の場合、②に含まれていた取引件数は39件で、その内38件は④のブロックに取り込まれ承認されました。しかし、1件だけは③のブロックに取り込まれて二重支払いとみなされました。その取引額は0.00034801BTC(US$3)だったとのことです。二重支払いとは、既に使用したコインを再び使用することです。
③を採用したコミュニティにとって、②に含まれる取引(今回の場合AさんからBさんへ0.00034801BTC送金した取引)は未承認な状態です。そのため、AさんはCさんへ同じコインを送金する取引を作って③のブロックへ含ませることが可能で、今回それが起こりました。
しかし、BitMexは二重支払いの金額が少額であったことから、悪意ある事象ではなさそうだとしています。
でも、二重支払いをするには、それを無意識にできることではないと思うのですが、本当のところはどうなんでしょか?知っている方がいれば教えてください。
ビットコインには、ブロックが2つに分かれるフォークとは別な理由で、一時的にフォークしたような状態がおきることがあり、これをStaleブロック(またはオーファンブロック)と呼び、今回そのような事象が起きたのでした。複数のブロックが同時に見つかり競合するStaleブロックはたまに起こる現象ですが、その中でも同じUTXO(インプット)を使用して支払う二重支払いが起こるのは稀です。
おしまい。
(2021/1/22 追記)
2021/1/20にStale Blockによる二重支払いが確認されました。今回の二重支払いされた額0.00062063BTC(US$21)となっています。実際に競合したブロックと二重支払いとみなされた取引は以下から確認できます。