みなさんはBitMEXと聞くとどのようなイメージがありますか?レバレッジ100倍、No KYC、アーサー・ヘイズの独特なブログなど色々あると思いますが、個人的には数ある取引所の中で一番ビットコイナーな取引所だったというイメージが強いです。

2年ほど前に幹部が米国の圧力により追い出され、コンプライアンス重視の体制に変わったBitMEXの存在感は往時と比べると非常に小さくなってしまいましたが、現在もBitMEX Researchは技術研究および研究支援によってビットコイン周辺に貢献をしています。

そんなBitMEXが今年8月に実験的に預かり資産の保有証明である"Proof of Reserves"を公開しました。今回は一般的なProof of ReservesスキームとBitMEXによる改善点、そして業界で採用が広がる可能性を見ていきたいと思います。

PROOF OF RESERVESを導入している取引所

Proof of Reservesを導入している取引所は非常に少ないです。有名なのはイギリスの小規模な取引所であるCoinFloorです。他にはKrakenなど数社が実証実験をしていましたが、正式導入には至っていません。Krakenは監査人を用いた、ユーザーから見ると透明性の低いプロセスによって預かり資産の保全を主張しています。

一方で、そもそも資産を預からないという方針の取引所 (販売所と呼ばれる形式に近い)もいくつかあり、それらはある意味Proof of Reservesを必要としない形態といえます。

PROOF OF RESERVESの仕組みとデメリット

Proof of Reservesの実現方法はいくつかありますが、共通点として「資産と負債の両方を監査できる形で提供し、資産>負債を証明する」という点が挙げられます。具体的な方法を見ていきましょう。

まず、資産の部の証明は比較的カンタンで、保有しているビットコインアドレスすべてから負債の部のデータに署名をしたり、あるいはアドレスが少ない場合は新しいアドレスに移しながらブロックチェーンにデータを書き込むOP_RETURNという機能を使う手もあります。

問題なのは負債の部で、各アカウントが自身の残高を検証できるようにする必要があります。実現方法としては、アカウント番号と残高の単純なリストの公開から、プライバシーを高めるためにマークル木を用いたものまで考えられます。

マークル木はビットコインや仮想通貨関係でよく出てくるデータ構造です。自分のデータと他のデータのハッシュ値(または他のデータの部分集合のハッシュ値)から、自分のデータが頂点の計算に使用されたことを証明できます。

一般的に、これらの情報を公開して、ユーザーは任意で自分のアカウントが負債の部に正しく含まれており、負債総額の計算に使われていることと、資産の部の証明が正しいことを自身のノードを使うなどして検証することでProof of Reservesは成り立ちます。大事なのは「検証されるかもしれない」ことであり、必ずしも全員が検証しなくても不正の抑止効果があると言えます。

さて、大味な実装でも定期的に資産>負債の証明をすることができることがわかりましたが、これだけではプライバシー面まで考慮しているとはいえません。今回、BitMEXがどのようにプライバシーに配慮したProof of Reservesを実現したのかを説明していきます。

ちなみに「絶対に照会してこないとわかっているアカウント」があればそのアカウントをマークル木から省くことで負債を小さく見せる不正を行えるためProof of Reservesは完璧ではありませんが、監査自体がなかったり監査人を用いるよりは優れた証明方法だと感じます。

BITMEXのやり方はプライバシー面の問題を改善

先程説明したProof of Reservesのマークル木では、1アカウントあたり1つの葉ノードでした。あるいは、CoinFloorのように単純にアカウントIDと残高のリストを公開する場合も考えられます。

しかし、IDを毎回改変しなければアカウントの残高推移が公開されてしまうのと同じ効果があり、IDを毎回改変するだけでは「前回の公開時と全く同じ残高の口座」というものが高い確率で結び付けられてしまいます。このようなデータは取引所のアクティビティの推定や、個々のアカウント・残高別のアカウントの動向を読み取るのに利用されてしまう可能性が高いため、ユーザーにとって不利益となります。BitMEXはこのデータプライバシーの問題が大手の取引所がProof of Reservesに積極的ではない理由の1つと推測しています。

実際、取引所というのは日本円の入出金額のデータやアクティブユーザー数の推移、ポジションの動向などトレードに非常に参考になるデータを持っているはずですが、絶対に公開していませんね。

今回のBitMEXの例ではアカウントを毎回新しい比率で2つの葉ノードに分けることによって残高の変化がなかったアカウントとその他のアカウントの区別を防ぐことに成功しました。マークル木のデータ量は増加しますが、検証コストは低いのでとても良い改善ではないでしょうか。

業界標準になるのか?

さて、BitMEXはプライバシー面の改善がProof of Reservesの導入ハードルを大きく下げるだろうと予想していますが、果たして業界内の様々な取引所が採用する可能性はあるのでしょうか。

まず考えられる大きなハードルはたくさんの通貨を預かっている取引所にとってProof of Reservesの実施が大きな負担となる可能性です。一部通貨についてのみ行うのでは取引所全体の債務超過に陥っている可能性を排除できず、意味がないからです。(取引所が預かり資産でトレーディングを行っている場合など)

次に、法定通貨を扱っている取引所は資産・負債のうち法定通貨の部分について証明できないため、Proof of Reservesを行うことが難しいです。会計年度末に合わせて行うなどの工夫は考えられますが、貸借対照表に記載した内容も厳密にはProofとは言えません。

最後に、コールドウォレットの鍵を用いたメッセージ署名あるいはOP_RETURNつきの送金を業務プロセスに加えることが難しい場合も考えられるでしょう。この変更コストによっては、Proof of Reservesの導入を正当化しづらいかもしれません。(Proof of Reservesの有無がユーザーの取引所選択にどれくらい影響を与えるかの試算も必要)

また当然ながら預かり資産を運用しているような危なっかしいところは「資産の証明」が難しくなる(というか資産にリスクが存在する)ためProof of Reservesを行うことはできません。

まとめ

・資産と負債の証明を通して顧客の資産が欠損していないことを保証するProof of Reservesを行っている取引所は数年前から存在するが、データプライバシー面で問題があるため導入は限られていた

・BitMEXはアカウントの残高をランダムな割合で2つに分けることにより、証明に必要なデータの公開によって漏洩する情報を大幅に削減した

・メジャーな取引所が導入するには取扱通貨数による負担増や法定通貨の扱いなど、いくつかの大きなハードルが残っている