NEM/XEM盗難騒動と、盗人に消せないMosaicを付与する話
coincheckから大量のXEMが盗まれた件でNEM財団とNEMの日本人開発者が面白いことをしているのでとりあげてみます。
coincheckからなぜXEMが流出してしまったかは、今回は置いておきます。おそらく秘密鍵が漏れてしまってそれによるトランザクションの生成だとは思いますが。
さて、大量に盗まれたXEMですが、ブロックチェーンという、取引がすべて公開されている仕組み上、誰が盗んだのかは判明しています。
Namespace / Mosaic / Levy
NEMという仕組みにはまずネームスペースという、ドメイン名のような仕組みがあります。公式のNEMというネームスペースの下にXEMという名前でトークンが定義されていて、一般的にはXEMが仮想通貨として流通しています。
- namespace: NEM
- token: NEM.XEM
日本人開発者のRin, MIZUNASHI JK17@minarin_さんが、coincheck_stolen_funds_do_not_accept_trades:owner_of_this_account_is_hacker
という独自トークン (Mosaic) を作成した上でこのトークンを犯人及び、犯人からXEMを受け取った人に自動的に送りつけるbotを動かしました。
このMosaicは普通であれば他の人に送りつければ、手放す事ができるんですが、Mosaicを作った人は、Mosaicの流通に対してLevy(税金)を設定できます。トランザクション手数料の設定とそれの徴収ができるってことです。この時、coincheck_stolen_funds_do_not_accept_trades:owner_of_this_account_is_hacker
のLevyとして、さらに別のMosaicが設定されています。その税金用のMosaicは誰も入手できない、つまりcoincheck_stolen_funds_do_not_accept_trades:owner_of_this_account_is_hacker
を手放すための税金を、ハッカーは支払うことができません。
これによって盗まれたXEMを受け取る人には、「こいつハッカーだぞ!こいつと取引すんなよ!」という消せないマーキングがなされます。
理屈の上で言えば、取引所がこのマーキングをされたアカウントからのXEMの受け取りを拒否すれば、ハッカーがXEMの換金を、取引所単位で閉め出すことができます。取引所としては「盗品」とわかってる通貨を受け取るべきではないというのはみんなわかるはずなので、それによって仮想通貨の盗難への対策とするというのは、なかなか面白いなーと思いました。
(ちなみに間違いとかツッコミとかあればよろしくお願いします)