ブロックウィズホールディング:1 つのシェアではプールが見抜けない攻撃
マイナーが本物のシェアは送りながら、ブロックになるはずだったシェアだけを隠します。その損失、誰が負担するのか、そしてどのように見つかるのかを解説します。
攻撃の内容
プールに送るシェアはどれも、ブロックの目標値には届かなかった本物の解です。ときどき、ブロックの目標値も下回る解が来ることがあり、そのシェアはブロックそのものです。プールが確認するまでは、ほかのシェアとまったく同じに見えます。
ブロック保留攻撃とは、作業を正直に行い、通常のシェアをすべて送りながら、ブロックになるはずだった 1 つをこっそり捨てるマイナーのことです。プールはシェアを数えてその分を支払います。受け取るはずだったブロックは決して届きません。
1 つのシェアでは決して露見しない理由
これがこの攻撃を単なる迷惑ではなく興味深いものにしている点です。個々のシェアを見ても、攻撃者におかしな点は何もありません。ハードウェアは本物で、ハッシュレートも本物で、シェアは有効で、正しい頻度で届きます。プールは 1 つのシェアを調べても何も見つけられません。
欠けているのは「ないこと」で、ないことは時間をかけて初めて見えてきます。プールのハッシュレートのある割合を持つマイナーは、プールのブロックのおおよそその割合を見つけるはずです。1 時間ではそれは何も語りません。ブロックの発見はランダムな過程で、静かな期間はよくあることだからです。十分に長い期間なら、多くを語ります。
損失の大きさと、実際に負担する人
プールは受け取るはずだったブロック報酬を失います。しかし実際に損失がかかるのはプールではなく、どのプールでマイニングしていても理解しておく価値があるのはこの点です。
比例方式では、ほかの誰かがブロックを見つけるまでラウンドが続くだけです。ラウンドの全員が、本来より長くかかったラウンドに作業を提供したので、全員の作業量あたりの収益がわずかに減ります。コストは正直なマイナーたちに分散されます。
シェアごとに支払う方式では運営者にとってさらに悪くなります。プールはすでにすべてのシェアを自己資金で支払っており、ブロックが届くことに頼っているからです。シェアごとに支払うプールへの持続的な攻撃は運営者からの直接の流出であり、歴史的に最も心配されてきたのはこのケースです。
なぜそんなことをするのか
攻撃者もブロック報酬を捨てるので、一見すると純粋な自傷行為です。攻撃者がプールから見えないところで得をする場合にのみ意味があります。
よくある動機は競争です。自分のプールを運営する運営者が、ハッシュレートを借りるか向けるかしてライバルを攻撃し、その成果を抑え込んで、相対的に自分のプールの運がよく見えるようにできます。攻撃者は妨害の費用を、まだ受け取れるシェアの報酬でまかないます。
より巧妙な変種として、攻撃者がブロックを捨てずに保持し、その上で密かにマイニングを続け、都合のよいタイミングで後から提出するものがあります。実行はより難しく、試す価値があるにはハッシュレートの大きな割合が必要です。
実際の検出方法
検出は統計的であり、そうでなければなりません。ほかに使えるシグナルがないからです。測定は簡単に言えます。ある提供者が見つけたブロックの数を、そのシェア数から見て見つけるはずだったブロックの数と、運が平均化されるほど長い期間で比べることです。
難しいのは期間です。短くすると普通の不運が攻撃のように見え、正直なマイナーを絶えず疑うことになります。長くすると、本当の攻撃者は数字が物語るまでしばらく活動できます。このトレードオフを回避する巧妙な方法はありません。それはソフトウェアではなく、ランダム性の性質だからです。
本格的な検出器が自分で行動せず、人間に問題を提起するのはこのためです。統計に基づく自動の禁止は、いずれ単に運が悪かっただけの人を禁止してしまい、正当なマイナーをオフラインにすることは攻撃そのものより悪い結果です。
正直なマイナーにとっての意味
ほとんど何もありません。それをはっきり言うことがここでの要点です。
シェアはどちらの場合も同じように数えられ、支払われます。運が悪いことは違反ではなく、違反になりえません。短い期間で見れば、ほとんどのマイナーは運が悪いからです。多くを提供したのにプールが何も見つけなかったラウンドが続くのは普通の変動で、プール統計の運の数字は、それがどれほど普通かを確認できるようにするためにあります。
知っておく価値があるのは、プールが誰からハッシュレートを向けられているかを気にする理由がこれであり、ブロックと運を正直に公開しているプールがそうでないプールより信頼しやすい理由でもあるということです。プールを確認するのに必要なものはすべて「ブロック」ページにあります。