coincheckがロールバック処理を行った本当の理由
coincheckロールバック事件概要
2017年5月9日、ビットコイン取引所のcoincheckで1BTCが100万円を超える価格で約定するという異常事態が起こりました。 (当時、1BTCは20万円前後で売買されていました。)同時に、同取引所内で購入できるオルトコインの提示価格も通常時の数倍の価格が表示され、 約数十分間に渡って祭り状態となりました。
coincheckでバグ? botの暴走? ビットコインが100万円でイーサが5万 リップルが85円でXEMも65円w ビットコインベースのレートベースに他の通貨の価格決めてるとかな気もするなぁ pic.twitter.com/9ojtRW7Djd
— unknown (@unknown_bitcoin)2017年5月9日
この後coincheckはシステムを完全停止させ、同日の夕方全てを巻き戻すロールバックを行いました。つまり、取引所でビットコインを100万円で売れた人やXRPを80円で売れた人は、それらの約定を無かったコトにされたのです。
coincheck側は公式ブログで
システムが算出している仮想通貨購入・売却価格に異常値が発生
という説明を行っているのですが、なぜ異常値が発生したのかという重要な点が説明されておらず、有耶無耶にしたまま時が経って忘れ去られるのを待とうとする姿勢を取っています。
今回の記事ではなぜcoincheckがロールバックを行ったのかという考察を行っていきます。この記事の続きを読む前に、coincheckでのオルトコインの売買の仕組みがどのようになっているのかを解説した前回の記事に目を通しておくことをおすすめします。
オルトコイン購入の仕組み
coincheckでは日本円を利用してXRPやETHといったオルトコインの購入および売却ができます。これは取引所ではなく販売所であり、顧客の売買の相対は運営会社であるcoincheckです。そして、XRPやETHといった通貨は市場全体の9割以上が海外の取引所であるPoloniexで売買されているので、coincheckは顧客から受けた注文をPoloniexでカバーしていたと思われます。ここで問題となるのはPoloniexはBTCの入金を持ってでしかオルトコインの売買ができないため、顧客から受けたJPYをBTCに交換する必要があるということです。coincheckでは自社でBTC/JPYの取引所を運営しているため、このJPY→BTCの交換は自社内で可能です。
また、coincheckでのオルトコイン/JPYの売買スプレッドは5%〜10%とかなり広いです。askとbidの提示価格の計算方法はおそらくざっくり以下のようになっていたものと思われます。
ask 売り気配
- PoloniexでのBestAskの値を取得
- 自社BTC/JPY板のBestAskを取得
- 上記2つの値をかけ合わせ、1.05倍する
bid 買い気配
- PoloniexでのBestBidの値を取得
- 自社BTC/JPY板のBestBidを取得
- 上記2つの値をかけ合わせ、0.95倍する
顧客が例えば日本円でXRPを購入すると、coincheckの自社内ボットは顧客が購入に使った日本円全てを使ってBTC/JPY板で成行きの買い注文を行います。その後、Poloniexで同数のBTCを使ってXRP/BTCで成行買い注文を行うのです。
※ 成り行き注文、または全て約定するのに十分な価格を指定して注文を出していたと思われます
BTC/JPYの売り板の枯渇
事件当時、BTC価格は連日の高騰劇を続けていました。日本国内のどの取引所でも売り需要が買い需要に追いついておらず、売り板はどこもスカスカという状況にありました。事件当日もcoincheckのBTC/JPY売り板は全て足し合わせても500BTC程度しかなく、もしこの状態で誰かが500BTCの成行き買いといった大きな注文を行えば、信用売りを行っているトレーダーのポジションが軒並みロスカットされる強制決済の連鎖が起こるという非常に危ない局面にありました。
ここで大事なのは、売り需要が少なすぎて大量のビットコインは買えないという点です。
BTC/JPYの約定リスクをcoincheckが背負っていた
「オルトコイン購入の仕組み」で述べた、"coincheckの自社内ボットは顧客が購入に使った日本円全てを使ってBTC/JPY板で成行きの買い注文を行います"という部分が核心です。 つまり、顧客から日本円でのオルトコイン購入を受け付けてしまうとcoincheckはそれに相当するBTCを市場で必ず購入しなければならない のです。
例えば1億円分のXRPの購入を受け付けてしまうと、1億円分のBTCを購入しなければなりません。BTC/JPYの売り板は薄く1億円分購入しようとすると約定単価はありえない程の高額になる、もしくは購入できません。
これが異常値
がついた本当の理由だと私は考えています。
もしこれが原因だった場合、coincheckは相当額の損失を被っているはずです。顧客に対しては定額でXRPを販売しているにも関わらず、カバーするためのBTCの調達で現在レートから著しく乖離した高値で購入することになるためです。また、事件発生時のBTC/JPY板は一時的に売り板が消滅し、買い板も異常な値にあったため、オルト/JPYの提示価格も異常な値になっていました。ここでXRPなどを高値で売却できた顧客も多いハズで、これらも全てcoincheckの損失となります。
昔話
数年前、ビットコインが3〜4万円程度で売買されていた頃、下落相場でロングポジションの大規模なロスカットが発生し1BTCを22500円で決済された人が現れる事件がありました。その時は顧客同士の売買だったため、ロールバックなどの処置はありませんでした。
もし、今回も顧客同士の売買のみで運営側の損益に一切関係がなかった場合、ロールバック処置はなかったでしょう。