Cardanoの問題点シリーズ#13「Selfish mining脆弱性」

Cardanoの問題点シリーズ#13「Selfish mining脆弱性」について話します。

Selfish mining利己的マイニングとは、SPOが、そのSPOに不利な取引であったり、賄賂を受け取ったりして、ブロックの承認を遅らせたりすることでその遅らせることによりステーキング報酬以上の利益が出る場合、その取引をあえて検証しないという手法を言います。

喩えとしてベルトコンベアで大量のぬいぐるみを段ボールに詰めてそれを検品する仕事を考えます。基本的に段ボールに詰めるほどに100円の給料がもらえますが、嫌いなぬいぐるみをあえて入れなかったり、あるいは嫌いなぬいぐるみを入れなかったら200円あげるよと言われたら、あえて入れない可能性があります。

現在のOuroborosの仕組みでは、事前に担当が決まっているSPOがブロックに入れるトランザクションを決めて確認してブロックを生成していますので、理論的にそのようなことが可能である可能性があります。

解決策として、Input endorserがあります。Input endorserはスケーラビリティ向上の技術として打ち出されることが多いですが、実はこの「Selfish mining脆弱性」対応のための意義の方が大きいのではとの見方もあります。(セバスチャンさんより)

先ほどの例えで言うと、ぬいぐるみを段ボールに詰める人と、詰めた段ボールを検品する人を分けます。すると、段ボールに詰める人が嫌いなぬいぐるみをあえて入れないと、検品する人に怒られます。検品する人はぬいぐるみを入れたり除いたりすることはできないので、検品する人が嫌いなぬいぐるみを勝手に捨てることもありません。

Input endorserにおいてはブロックにトランザクションを詰め込む人と、それを承認する人が分かれています。現在これが一致していることがSelfish miningを簡単にしていましたが、別々に分担されることで、不正のリスクを下げているのです。