
ブロックチェーン
標準だが安全でないトランザクションとは?
標準だが安全でないトランザクションとは?
このトランザクションはわかりやすい状況で発生します。それは、コールドウォレットから忽然と全残高が消える現象を生み出している原因がこの「標準だが安全でないトランザクション」です。
概要
トランザクションが発生した場合その特徴は次の4つのタイプに分類されます。
1, 標準かつ安全なトランザクション
2, 非標準だが安全なトランザクション
3, 標準だが安全でないトランザクション
4, 非標準かつ安全でないトランザクション
メモリプールに追加する前のトランザクションチェックはハードコーディングされています。
この過程で、標準か非標準かを区別するために、タイプ2とタイプ4が除外されます。ところで、タイプ1は通常のトランザクションで、問題がありません。では、残るのはタイプ3ですね?
このタイプ3は動的な性質を持つため、ハードコーディングで除外することができません。そのため、AIの推論が活用されます。ところが、トランザクションがメモリプールに入ってしまうと標準的だが安全でないトランザクションをキャンセルするのは難しいことに気付きました。
全ノードでAI監視を行えば、そのようなトランザクションを取り除けると考えていましたがこの考えは甘いという結論に至ります。
理由として、トランザクションをキャンセルする操作がAIによって行われたのかそれともそうでないのかを区別できず正当なトランザクションが恣意的にキャンセルされてしまいスパムに発展する恐れがあるからです。
したがって、やはりメモリプールに入る前の異常検知にAIの推論を実装するのが有効だということが明確になりました。つまり、メモリプールに入る前にAIの推論などの技術を使ってそのような『標準的だが安全ではないトランザクション』を無効化するというアイデアです。
ところが、その方法も意味がありません。なぜなら、ハッカーが組み立てた「標準だが安全でないトランザクション」を狙われたノードのメモリプールに放出する必要がないためです。
そこで、その狙われたノードにはAIの推論による監視が実装されていたとします。「標準だが安全でないトランザクション」をそのノードに放出した場合は確かにその監視がそのようなトランザクションを弾くことでメモリプールに放出されることはなくその結果、ブロックに取り込まれることがないため取引は成立しません。
しかし、ブロックチェーンは分散性です。各ノードはそれぞれ独立し利用者はどのノードを利用してもブロックに取り込めるトランザクションを放出することができます。
つまり、AIの推論による監視が実装されたノードにそのようなトランザクションを放出する必要性がなく、ハッカーはメモリプールへの受け入れ設定がゆるいノードにそのようなトランザクションを放出すれば良いことになります。
ちなみに、トランザクション受け入れの厳格さは「ブロックへの取り込み」よりも「メモリプールへの受け入れ」の方が上です。つまり、メモリプールに入り、そこにマイナーが存在すれば、ブロックに取り込まれるのは「ほぼ間違いない状況」となります。
そして、ブロックチェーンの性質上、ブロックに取り込まれると、その取引は不正であっても成立となります。それで、不審なトランザクションを検知したとしても残高が失われる状態になるのです。
その検知した段階で、そのようなトランザクションは別のノードから伝播することですでに他のメモリプールに存在する状態となっており、アラートが出た段階では「ブロックに取り込まれているのが観察できる」はずで、取引は成立しておりすでに手遅れとなります。
さらに、この現象はコールドウォレットの概念すら簡単に突破します。なぜなら、ウォレット自体は管理しているscriptPubKey(またはECRecover)などから残高を計算しているだけの存在なので、ウォレット自体はトランザクションや取引に関与していません。
よって、トランザクションを組み立てられればそれをどのノードに放出するのかは自由に選べる状況となっておりウォレットの概念とは独立しております。
