CCの事件の最中、その裏では盗まれたxemが転送されたアドレスが特定され、@minarin_氏によりアドレスの監視が行われていました。

その中で「動かせないモザイクでマーキングをした」という話が上がっていました。

おそらくはそのモザイクを持っているアドレスから取引所に送られたxemを保護するためのマーキングでしょう。

(実際にどうゆうことが行われたか、具体的なことはわかりません。時期がきたら公表されるかもしれませんが)

それはそうと、「動かせないモザイク」ってどうゆうことだろう?と思ったのですが、確認して見たところ、Levyを応用したやり方でそれを実現していました。

動かせないモザイクの作り方

モザイクにはLevyという、そのモザイクを転送するために必要なモザイク(xemを含む)を設定できます。

Levyが設定されたモザイク、転送手数料とは別に、Levyで設定されたモザイクが転送する際に必要です。

いままでよくあったのは、高額のxemを設定して、うっかりそのモザイクを転送するとxemがLevy指定のアドレスへ送られてしまう(事実上奪われる)という罠めいたものがありました。

その際、残高が足りなければ当然送信はできません。

それを応用して、Levyに流通していない、絶対に手に入らないモザイク(自分で発行してどこにも転送しない)を設定します。

そうすれば、送りつけられたモザイクを転送するためのLevyモザイクが手に入らないので、モザイクを転送できなくなっちゃいます。

この方法で、盗まれたアドレスへこのモザイクを送りつけることでマーキングを実現していたわけですね。

unmovable-mosaic-with-levy

具体的に、こちらがそのトランザクションの一部です。

mizunashi.coincheck_stolen_funds_do_not_accept_trades.owner_of_this_account_is_hackerというモザイクを送りつけています。

そしてそのモザイクのLevyにはmizunashi.coincheck_stolen_funds_do_not_accept_trades.levy_to_lock_assets1必要だと定義されています。

このmizunashi.coincheck_stolen_funds_do_not_accept_trades.levy_to_lock_assetsがどこにも流通しない限り、owner_of_this_account_is_hackerを受け取ったアドレスからは動かせません。

マーキング

みなりん氏は犯人のアドレスを監視し、そこからxemが転送されたら、その転送先アドレスにもモザイクを送りつけるbotを稼働させ追跡しているようです。

nemのパブリックチェーンを追えば全ての取引は確認できますが、トランザクションを遡るのはなかなか大変です。

取引所で資金をロックさせるために(もしくは犯人の逃げ場を塞ぐために)、簡単に確認する方法としてはとても優れた方法だと思います。

これで、なんとか良い方向で騒動が収束するとよいのですが…。

いまいちLevyの応用が思いつかず、あまり注目していなかったのですが、こんなこともちょっとした応用でできてしまうところはアポスティーユ同様、相変わらず応用が効くプラットフォームだなぁと感じました。

こういった応用の仕方をパターンとしてまとめて行って、応用図鑑ができるといいですね。

また、言わずもがなだとは思いますが、今回の事件はnemの脆弱性を攻撃されたわけではありません。

事件の詳細は現時点では不明ですが、何らかの方法で秘密鍵が流出したのが可能性が高いでしょう。

(もし秘密鍵をクラックされた(逆算された)、というならばもうそれどころではないレベルです…)

nemのテクノロジー自体はなにも揺らいでいません。それだけは誤解のないように。