けいおん!で学ぶ NEM のマルチシグ運用

けいおん!…え、もう10年近く前…?!

…さておいて、NEMのマルチシグを妄想しながら使ってみて、理解したことをメモりました。

NEMが一般的に使われる世界で

部員が4人集まったので、軽音部として活動できるようになりました。

そこで部費をNanoWalletでやり取りをすることにしました。

まずは軽音部のウォレットを作成し、それをマルチシグアカウントに変更します。

「署名者は公開鍵を取得するために最低1回はトランザクションを発生させる必要があります。」と表示されました。

これはネットワーク上にトランザクションの記録がないとアドレスから公開鍵を割り出すことができないためです。

マルチシグアカウント変更手数料も必要なので、50xemほど入れて、自分宛てに 0xemでもいいので送金しておきましょう。

(受信だけではダメみたいです。送信トランザクションを発行して下さい)

マルチシグアカウントに変換したいアドレスの秘密鍵を入力します。

(秘密鍵を知っていれば操作できるみたいなのでログイン中のアカウントでなくても良いみたいです)

顧問は山中さわ子先生、部長はりっちゃんなので連署人に追加します。

(二人はすでにウォレットを持っているものとします)

「送信」をクリックして、トランザクションを発行、承認されたらこのアカウントはマルチシグアカウントとなり、部費を引き出すためには顧問と部長の署名(承認)が必要になります。

なお、マルチシグアドレスへ変換すると、そのアドレスの元の秘密鍵は使えなくなる仕様ですので、最初にこのアドレスを作った人に秘密鍵が知られていても操作することができなくなります。

(現在有効な連署人だけが資金の移動を行えるということです)

部費ウォレットからの支払い

ある日、部室を整理するためにホームセンターへ向かった軽音部一同。

ちょうどよい棚を見つけたので購入することに。

まず部長であるりっちゃんがホームセンターの支払いアドレスへ棚代のxemを送金するトランザクションを作ります。

連署人になったアカウントは「送信」を開くと「マルチシグ」というタブが増えています。

出金したいアカウント(ここでは軽音部)を選択し、宛先と支払う量を入力、送信します。

手数料が「1+6」となっているのは、トランザクション手数料が1xemで、マルチシグトランザクション手数料が6xemだからです。

「送金」をするとトランザクションは発行されますが、まだ承認されません。

さわ子先生のウォレットに署名すべきマルチシグトランザクションが届くので確認します。

電話にて棚を購入したい旨を説明すると、さわ子先生は了承し、トランザクションに署名をします。

これで二人の署名が揃ったので、部費ウォレットからホームセンターへ支払いトランザクションが承認されます。

支払いの拒否

ある日、新しいスネアが欲しいとおもったりっちゃん。

部費で購入出来ないかと、購入金額分のトランザクションを楽器店へ向けて発行。

当然さわ子先生の署名も必要なので相談しますが、そうそう簡単に新しい楽器を買うことは出来ない、と提案を却下。

署名はせずにトランザクションは期限(deadline)が訪れて破棄されました。

(NanoWalletの発行するトランザクションの期限は、Mainnetでは24時間、Testnetでは1時間で固定されています。

https://github.com/NemProject/NanoWallet/blob/master/src/app/services/transactions.service.js#L152

将来的には変更されたり、設定できるようになるかもしれません)

信頼の置ける部員の追加

最近いそがしく、あまり軽音部の面倒を見れないさわ子先生。

トランザクションの署名も滞り、部費を使うときのボトルネックとなってしまいました。

そこで、信頼のおける澪を連署人として登録し、代理を頼むことに。

「既存コントラストを編集」からマルチシグアカウントの連署人を追加・削除できます。

澪のアドレスを入力し、修正リストを確認。

「最小署名数の相対変化」は3人のうち2人が署名すればトランザクションが承認されるように「0」に設定。

現在の2人の署名が必要な数から変化させないという意味です。

「送信」したら、マルチシグ変更のトランザクションもりっちゃんの署名によって承認されるので、りっちゃんアカウントでも署名をして、連署人に澪の追加が完了します。

これで、3人のうち2人が署名をすればトランザクションを承認できるので、さわ子先生の代わりに澪が判断を下すということができるようになりました。

澪は生徒ですが、真面目な彼女は与えられた権限を濫用せず、きっちりとさわ子先生の替わりを努めましたとさ。

最低でも顧問の署名が必要のケースが対応できない。

さてお察しの通り、生徒が2人以上連署人になってしまうと、生徒だけの署名によって部費を出金できてしまいます。

(もっともトランザクションを参照できるのであとからたどれば追求はできますが)

もしくは全員を連署人にすると、生徒が一人以上かつ顧問が署名すればいいルールがあったとして、他の生徒にも署名をしてもらわなければなりません。

つまりこのマルチシグの仕様だと、特定の連署人の署名が最低でも必要なケースが対応できませんでした。

ただ、NEMのロードマップみたいなものをどこかで見かけた時、連署人ごとの重要度付け?みたいな機能が実装予定だというのを見たので、そうゆうこともできるようになるのではないかと思います。

(できないと上記のようなケースで不便ですよね…)

ともあれこんなイメージ(妄想)をしながらマルチシグの理解を深めました。

最初はわけも分からず適当にいじっていたらトランザクションが発行できなくなった?!と思い込みセルフGOXしてしまったのかと思いました。

(いま思い返すと、実際にはマルチシグアカウントから発行しようとしていた。そうではなく連署人がトランザクションを発行しないといけない)

まぁテストネットだったので失うものはなかったのですが。

やはりNanoWalletもまだβ版ですし、正直UIも少しわかりにくい部分が多いと思います。

様々な人が解説記事を書いてくださっていますが、日々アップデートされてますし、まず操作を覚える所まではテストネットで試すほうがよいのではないでしょうか。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする