Monacoin core based Bitcoin 0.20 の論点整理 (4)
最初に「 2 つ」と書いたのですが、実は 3 つめがあります。
「ノードが伝搬させる最低送金手数料 (tansaction fee) のデフォルト値」です。
Ⓜ
送金手数料については知っている人のほうが多いと思いますが、一応、復習。
Bicoin 系のチェーンでは、採掘に成功した採掘者は採掘者報酬(半減期のたびに話題になるアレ)だけでなく、そのブロックに含まれるトランザクションの送金手数料を獲得できます。
経済合理に沿えば、採掘者は送金手数料が高く設定されたトランザクションを、優先的にブロックに採り込みます。オークションの原理で送金手数料は高騰し、昨今の Bitcoin や Ethereum のように数円相当の送金に数千円かかる、みたいなことになります。
他方、送金手数料の仕組みは、ネットワーク攻撃する側の道具にもなります。異様に安い送金手数料を設定したトランザクション、つまり採掘者がブロックに含めるインセンティブの低いトランザクションを大量にネットワークに放出されると、各ノードの mempool (0-conf のトランザクション置き場)が逼迫します。場合によっては耐えきれずノードが落ちるかもしれません。
これもまた、tx spam と呼ばれる攻撃の一形態です。
このような攻撃を防ぐべく「あまりに安い送金手数料設定のトランザクションは、他のノードへ伝搬させない」という設定項目が Bitcoin core には、あります。Litecoin やモナコインも引き継いでいます。
Ⓜ
ご承知の通りモナコインは Bitcoin よりも法定通貨建の価格が大幅に安いので、相対的に低コストで tx spam を実施できる余地があります。
…早合点しないでください。「攻撃されやすい危険なコインだ!!!!」とはなりません。
モナコインのブロックチェーン・エクスプローラを見ると、採掘者報酬しかないトランザクションが結構な率で見られます。つまり、mempool はスカスカです。モナパーティの誕生で、少しはマシになりましたが。
さらにいうと、取りうる最低の送金手数料設定のトランザクションであっても、ブロックに採り込んでいる採掘者の存在が確認されています。
そして、Bitcoin とモナコインとでは、平均採掘間隔が異なります。10 分と 90 秒。モナコインのほうが早くブロックが生成され、mempool にあるトランザクションは Bitcoin と比較して短時間で消えます。
諸々踏まえて導き出せるのは「"現時点では" モナコインへの送金手数料を使った tx spam 攻撃を成功させるのは、かなり難しい」です。
Ⓜ
先に示した論点とは異なり、わかりやすく「変更の必要はない」という結論が出ました。
もちろん "現時点では" という限定を忘れると危険です。いきなりモナパーティが大ブレイクしてモナコインのチェーンを使ったトランザクションが爆増する、とか、採掘者のブロック採り込み方針が変わる、とか。起きそうだったり起きなさそうだったりしますが、リスクは常にあります。
とはいえ、ソースコードに埋め込まれているのは、デフォルト値。この辺りの値は、ノードの管理者が設定可能です。危なくなったら、違う値を明示的に設定するよう dev から勧告する、という対策でも十分でしょう。