ついにNEMのMobileWalletがリリースされましたね。
導入方法についてはいろいろと話を聞くのですがネイティブで実装されているという、マルチシグアドレス機能については(日本語の)解説をあまり見ないので
週末に自分でいろいろといじってみました。
(NEMについては前回の記事の冒頭を参照してください。)
ラズベリー農家のすすめ/NEM Harvesting on Raspberry Pi 3 B
マルチシグってなに?
正直、自分も実際にいじってみるまでちゃんと把握できていませんでした。
マルチシグとは複数人の署名がそろうと実行されるトランザクション(取引)ですが、実際やってみると複数人で管理する仮想通貨の口座(マルチシグアドレス)という認識のほうがわかりやすいです。
なんかいいことあんの?
今のところは透明性の高い資金運用って感じでしょうか。
複数人で共有したい資金ってありますよね。
でもそういう資金ってどこに保管すればいいのかとか参加者の誰かがネコババしないかとかの心配がつきもの。
金額が高くなるとそのリスクが急上昇するのでマルチシグアドレスで保管しましょう。
動作
参加者でマルチシグアドレスにお金を入れるのは誰の許可なしでもできますが、アドレスからお金を移そうとするとほかの参加者に許可を求めるリクエストが自動的に送られてきます。
必要な人数が確認(署名)するとそのお金の移動(何らかの購入とかの支払いの取引)が実際に行われます。
使用例(妄想)
卑近な例
・卒業旅行の会費をマルチシグアドレスに参加者がそれぞれ送り、溜まった分から宿泊費としてそこから直接支払う。全員がお金の動きを確認できる。
・寄付をマルチシグアドレスに募り、送ってきた人の金額上位何%かを署名者にする。何に使用するか寄付者が直接決める権利を持つ。
・共同出資者とコンサートを計画しマルチシグアドレスを作る。チェロ奏者に出演を依頼し出演料を送金する。共同出資者がその送金を許可する。
www.youtube.com
(考えてみると全く親近感のわかないPVですね。一生のうちに「複数人でお金をためチェロ奏者に40万円だして演奏を頼む」なんてことがあるとは全く思えない(笑))
・家族の共有口座として使用。大きな買い物をするときは家族みんなの確認が必要。
・投資基金とかを簡単につくる。投資も利益分配も透明性が確保できる。
とかでしょうか?
マルチシグを実際にやってみましょう
さていつも通り前置きが長くなりましたが、実際にスマートフォンにモバイルウォレットをいれてマルチシグをテストしてみました。
androidのアプリは以下からダウンロードできます。
NEMウォレット – Google Play の Android アプリ
IOS版はまだのようです。
導入方法はクリプトストリームさんで紹介されています。手軽なので気軽に入れてみましょう。
【画像アリ】遂に出ました!NEMモバイルウォレット導入方法 – クリプトストリーム
1.マルチシグ用のアカウントを作る
アカウント作成メニューからアカウントを作ります。
ご覧のとおりいくらでも作成できます。
自分のメインのアカウントはマルチシグアカウントにはしないように注意しましょう。
マルチシグ化するのに手数料としてXEMが必要なのであらかじめマルチシグ用のアカウントにXEMを入金しておきます。
現状だと署名者一人で12XEM必要です(署名者一人につき6XEM,マルチシグ化手数料で6XEMでしょうか)
署名者の追加や送金などにも当然手数料が必要なので、いろいろいじりたいならある程度入れておいたほうが良いです。
2.アカウントをマルチシグアドレスに転換する
アカウント作成した時点では通常のアドレスなので、マルチシグアドレスへの転換が必要です。転換するには署名人になるその他のアカウントの「公開鍵」が必要です。
公開鍵は、署名人の署名が本物かどうかをマルチシグアドレスが確認するための鍵です。その名の通り公開しても問題はありません(秘密鍵は絶対に公開してはいけません)
まず自分のメインのアドレスの公開鍵を調べます。
”もっと”からアカウントのエクスポートを選択。(エクスポートが目的ではないのでパスワードは何でもよい)
一番下に表示されるパブリックキー(公開鍵)をコピーします。
次に、マルチシグにしたいアカウントに入り、”もっと”からマルチシグネチャに移動
署名者の最小限の数はとりあえず1にしておいて、
“アドレスかラベルを入力してください”とありますが、先ほどコピーした公開鍵を入力します。
アドレスを入力するとこのようにエラーになります。
最後に転換をクリックします。転換すると元には戻せないので注意してください。
数分待つと手数料分の残高が減り、
マルチシグネチャの設定メニューに入れなくなります。
これで転換は完了です。
3.署名者の追加
さきほど署名者に指定したメインのアカウントからマルチシグネチャの設定メニューに入ります。
追加したい署名人の公開鍵と署名者の最小限の数を入力(2人なのでとりあえず2にします)
”署名者を取り除く”のタブを見ると追加できていることがわかります
4.マルチシグを実行する
アドレス帳もしくはダッシュボードから、”新しい取引”を開き、送信者を今のアカウントではなくマルチシグアカウントに変更します。
あとは普通に金額を入れて送信すればマルチシグのアカウントからの送金のリクエストが行われ、署名者に通知がいきます。
自分にきた通知の例ですが、このような感じで来ます。
showをクリックすると、内容が表示されます。確認してくださいをタップすると署名が完了します。
必要な署名者の人数に達すれば送金が行われます。
マルチシグの実行はこれで完了です。
ぜひ実際に動かしてみてください!
感想
- 公開鍵の入力は教えてもらうところも含めて面倒です。アドレスで何とかできないのかな……アップデートに期待。
- 操作感はよい。デザインもシンプルで割と好き。
- 手数料低めでもわりと取引のスピードが速い。
- 裏技がある。わかるわけない(笑)
- 開く度にパスワード求められるのがストレス。まだ無理だと思うけど指紋認証したい。そのうちお願いします。(17/10/25追記:現在対応してます!)
P.S.
ご協力いただいたミジンコさんtomotomoさんありがとうございました。
@HowDoYouLikeU @ocknamo なんか来てた! pic.twitter.com/08ErCspCW4
— tomotomo9696 (@tomotomo_9696) 2016年11月5日
NCCはNEMコミュニティーでは今後廃止方向だと思いますが、NCCでマルチシグをする場合には、公開鍵使わなくて可能でした。
求める関数かAPI内蔵しているからだと思われますが、やはりnanoウォレットにはこの機能搭載していただきたいですね♪
訂正:nanoウォレット→モバイルウォレットですね。
敷居が低いところがモバイルウォレットの利点なのでそこは何とかなるといいですね。日本語表記が「アドレスかラベルを…」と書いてあるのはそういう仕様にするつもりでいて忘れてたのかなとか(笑)
メモとして残します。
公開鍵はをゲットするには、
http://NISサーバ:7890/account/get?address=NBOXCDYI2X4CFPUCQFRNZHSAK6VNQ3JYP3BM2PCP
って感じですねw
あ、アドレスの-を取らないとエラー