今月上旬に、メジャーなビットコイン系DEXのBisqが3BTCと4000XMRの不正流出があったことを発表し、対応を発表しました。「非中央集権取引所が発表とか対応って、何言ってんだ」という点を含め、今回の事件の原因と対応をまとめ、他のDEXのハッキング事例を含め、非中央集権取引所の条件を考えます。
BISQ
Bisqは主にビットコインにフォーカスした非中央集権取引所で、BTC⇔法定通貨、BTC⇔XMR(モネロ)の取引が多いです。誰でもソフトウェアをダウンロードすれば参加でき、Bitcoin MainnetとTorを使ったP2Pソフトです。OpenBazaarに似てますね。したがって、オンラインのノード間でしか注文などが共有されないので、トレードするにはオンラインである必要があります。
他に特徴的なのはカラードコインBSQを使ったDAOによる運営が行われている点で、取引手数料の分配などの意思決定をBSQ保有者が投票で行ったり、トラストが必要な役務に着くのにロックアップが必要だったりします。
発行自体は、開発に貢献した人が1000サトシを送り、DAOで貢献が認められると、その1000サトシが$1000分のBSQとなり開発者に与えられます。そしてビットコインより有利なレートで取引手数料に使うことができるので、取引をしたい人が買うという想定です。BSQ自体に資金調達の機能はなく(ICOでもなく)、Bisqの収益源は取引手数料のみなので、BSQの発行は将来のキャッシュフローを悪化させる影響があります。
DAO化する目的は、DEXのアキレス腱とも言える開発・運営の分散化だそうで、当然、最初は実態は完全なる中央集権状態だったので、DAOによる分散化は徐々に進む性質のものと捉えているようです。
また、4年ほどのメインネットでの取引の歴史がありますが、今回初めて使われた、全ての取引を停止するアラートキー機能というものがあります。これについてウェブサイトなどに明確な記述はなく、コードをくまなく調べてやっと見つかる、隠されたキルスイッチのようなものです。ただし、あくまでもユーザーはこれを無視して取引を再開することができます。
事件
昨年10月にBisq 1.2.0にアップデートした際、取引の仲裁者となる第三者を含めたマルチシグ・エスクローを作成する方式から、取引の当事者のみの2-of-2マルチシグに入金し、時間切れの場合はBisq DAOによって設定される「寄付アドレス」に送金するという仕様になりました。(第三者の鍵によって結果が左右されないので、非中央集権性が高いという理由)
しかし、Bisqのソフトウェアは相手から送られてくる部分的に署名されたトランザクションにおけるその寄付アドレスの真贋を検証していなかったので、取引相手から送られてきたトランザクションにおいてBisqの寄付アドレスが実際は相手の保有するアドレスだった、というケースがあり、今回の不正流出が起きました。
要するに、ソフトウェアの脆弱性により、トレードのプロトコルに穴があった状態です。
対応
最初の対応として、史上初めてアラートキー機能でBisqネットワークでの取引停止(勧告)を行いました。一連の対応の中で、ここが一番中央集権的かな、というところです。
Bisqはその後、バージョン1.3.0(現在は1.3.1)にアップデートして問題を修正しています。
不正流出した資金は取り戻すことはできませんが、今後の取引手数料から盗難に遭ったユーザーへの返金がDAOで提案される見込みだそうです。