ダスクのマイグレーション契約に、Solidityのエクスプロイトを見つけられると思って入ってみた。けれど、もっと面白いものを見つけた。

契約自体はシンプルだ。ユーザーはERC-20のDUSKをロックし、「Locked」というイベントが発行される。

本当の力はオフチェーンにある。

バックエンドのリスナーがそのイベントを監視し、ネイティブのDUSKを発行する署名ウォレットを起動する。つまり、この契約は実際にはマイグレーションを完了しない。完了させるのはバックエンドの処理と、その鍵だ。

1月16日のインシデントはリスクを示した。攻撃者はまず7,880 DUSKでシステムを試し、その後1.91M DUSKを移した。さらに8.91Mの3回目の送金は、署名サービスが停止されて初めて止まった。

契約が壊れたわけじゃない。壊れていたのは運用だった。

再設計――リスナー、署名者、データベース、ジョブキューを分離すること――は意味のある改善だが、信頼をなくすわけではない。信頼は契約の周囲のインフラへと移る。

そのことで、ブリッジについての考え方が変わった。

ブリッジは単にスマートコントラクトではない。オンチェーンのイベントをオフチェーンの認可へと変換する、プロセス全体だ。

最も恐ろしい脆弱性がSolidityの中にあるとは限らない。

民間に気づかれない場所で、秘密鍵とともに静かに動いているスクリプトこそがそうだ。

@Dusk_Foundation #dusk $DUSK