ビットコイン相場で話題の「マイニング(採掘)」って何?
これにより、後からのデータの書き換えがとても大変になる。例えば図表7のようなケースで、Aが「ブロック#3」に含まれている【取引7】を改ざんしたいと思った場合を考えて見る。そのためには新しい【改ざん取引7'】の「ブロック#3'」を作成する必要がある。これは改ざん取引7'のブロックで"当たり"の「ナンス」を発掘する必要があるということである(これは「ブロック#3」の"当たり"の「ナンス」とは異なる。「マークルルート」と「タイムスタンプ」の数値が異なっている可能性が高いためである)。さらにこのブロック#3'はブロック#4にはつながらない(「ブロック#4ヘッダ」の先頭にある値は「ブロック#3ヘッダのハッシュ値」であり、それを前提に発掘された"当たり"の「ナンス」となっている)。したがって、ブロック#3'に続くブロック(ブロック#4')を作成する必要がある。これには、ブロック#4の"当たり"の「ナンス」を別途発掘することが必要になる(そして、このブロック#3'に続くブロックの"当たり"の「ナンス」は、ブロック#4の"当たり"の「ナンス」とは異なるため、新たに計算しなおさなければならない)。
書き換えを成功させるには、攻撃者以外の参加者で作成しているブロックの高さを超えるまで新しい"当たり"の「ナンス」を見つけ、ブロックを伸ばさなければならない。つまり、データの改ざんを成功させるには、攻撃者が、自分以外の参加者全員による「ナンス」探しを上回るほどの計算力を持っている必要がある。多くの参加者がマイニングをしている場合、攻撃者が他の参加者以上の計算力を得る可能性は難しくなる(ただし、こうしたデータ書き換えは「51%攻撃」と呼ばれ、理論的には不可能ではない)。また、ブロック(とそれに含まれている取引)が古いほど改ざんするのは難しくなるのである。これは不正な攻撃ではない場合も同じで、間違って取引を行ってしまった場合でも、後からキャンセルすることは困難になる。費やされた計算力(≒電力)が耐改ざん性を保証していると言える22。
逆に言えば、新しい取引ほど改ざんされる可能性は高い。特に、承認前の取引(ブロック作成までの10分程度)はかなり不安定である。同じ原資の別の取引を記載すると、どちらかが消えてしまうからだ。
なお、承認後であっても、既存の「ブロック」より、長い「ブロック」を伸ばすことができれば、「取引」はすべて長いブロックに含まれているものに書き換えられることになる(上述の通り、ビットコインには「残高」情報は直接的には含まれていないが、採用されるブロックチェーンが変わり、それに含まれる「取引」も変更されれば、利用可能な「残高」も変わる)。
最後に、"当たり"の「ナンス」を探すのは難しいが、"当たり"のナンスがあったときにそれが"当たり"であることを確かめることは簡単であることも重要であるので触れておきたい(ハッシュ値を計算するだけである)。ビットコインでは参加者がデータを共有する際に、共有されたデータ自体が正当であることを検証するが、検証作業は発掘作業の負荷と比較すると断然容易である。この"当たり"の「ナンス」の、「見つけにくいが"当たり"であることを検証しやすい」という性質は、参加者がデータを検証し、共有・管理する(「分散」させつつも、プルーフオブワークという「耐改ざん性」を確保する)上では重要な性質といえる23。
-----
22 また、不正による暗号資産への信頼喪失というデメリットが攻撃の抑止となっている面がある。51%攻撃をできるほどの計算力を持った人であれば、自らの資産を毀損する攻撃はしないだろう、ということ(プルーフオブステーク(PoS)などの概念では重要となる抑止力)。
23 たとえば、「マインイング」が円周率の小数点以下○桁目~△桁目の数字を計算する、という計算だったとしたら、○桁を増やして難易度を挙げると、その"当たり"の数値を計算することも難しくなる。一方で、それが"当たり"であることを確かめることも発見するのと同じ程度に難しくなってしまうだろう。発掘は難しいが検証は簡単ということ複数のノードでデータを管理する(検証してもらう)上では重要と言える。