Bitcoin
Blockchain
mijin
NEM

NEM/mijinにおけるマルチシグのユースケースについての考察

マルチシグとは?

仮想通貨におけるマルチシグの基本的な考え方は「送金時に複数個の秘密鍵を必要とする」ことです。この仕組みが意味することは、一つの鍵が盗難されたとしても出金されることはないということです。

Multisig(マルチシグ)って何? | ビットコインダンジョン

信頼のおける場所にサービスとお金が集まった段階で最終決済をおこなうという意味で使用されているようです。
さらに発展させてこれを利用させることを考えてみましょう。マルチシグは単に盗難防止だけではなく、トランザクションを自分で作るのは面倒くさいので、作成してくれる人に鍵を1個預けておくことが可能になります。

  • ECサイト
  • ブラウザ

こういったサービスに鍵を預けておくことで効力を発揮します。
また鍵の一つを場所や時間に制限された環境下に置くことで本人確認の方法として利用することもできます。

  • センサーが感知した場合のみ署名
  • 制限時間内にパスコードを入力した場合のみ署名

そしてネットワーク上にプッシュされたトランザクションは最後に自分が最も信頼のおけるアプリから署名することで決済となります。

  • nanoWallet
  • NEM Pay(まだ開発中?)

NEMの場合はこのマルチシグ署名者の変更が実に容易で、マルチシグされたアカウントを権利物(コンテンツ)として扱うことで、譲渡・貸借などのユースケースにも簡単に使えます。また、トランザクションに独自トークンや暗号化メッセージを載せることもできるので、その効力はさらに強力です。トランザクション作成者にプログラムコードを記述させ、独自ポイントを発行し、手元スマホのボタン一つで実行・配布させることが可能です。

ユースケース例

行政サービス

転入から転出

住民AがB市に転入する場合を考える。
住民AがマルチシグCを作成し、Cのアドレスを役所Bに通知する。
役所BはアカウントCに対して、マルチシグを行い住民登録完了とする。
マルチシグCの秘密鍵を行政サービスシステムに登録しておく。
また、マルチシグCに対して市民トークンを配布しておく。

住民Aが転出する場合はマルチシグCからアカウントBの解除で対応する。
なお役所Bアカウントは公務員Dからマルチシグされており、人事異動などがあれば住民Aの転入・転出と同様に対応する。

住民Aが元アカウントを紛失した場合は、新規アカウントEを作成しマルチシグCに追加、その後アカウントAを解除する。
住民AがマルチシグCの秘密鍵を紛失した場合も同様、新規マルチシグFを作成し、秘密鍵を行政サービスシステムに再登録する。

住民票取得

住民AがB市システムにアクセスし、住民票取得ボタンをクリックする。
B市サービスは、紐づけられたマルチシグCを特定し、そこから市民トークンを返却させるためのトランザクションを作成しNEM/mijin上にPUSHする。
住民Aが署名することでB市はAが住民であることを特定、マルチシグCに対して住民情報を暗号化してメッセージ送信する。

行政サービスシステムがインストールされた端末から、マルチシグCの秘密鍵を用いて住民情報を復号化する。
住民票のプリントアウトやその他サービスが求める要件に応じて、役所BからのトランザクションIDと共に住民情報を提供する。

ECサイト

商品紹介から商品購入まで

ユーザAはマルチシグBを作成し、ショップCのアカウントを追加する。
ユーザAはあらかじめショッピング用に使用する金額をマルチシグBに振り込んでおく。
また、ショップCは独自トークンをマルチシグBに送付しておく。
紹介者Dのコメントで商品に興味を持ったユーザAはリンクをクリックすることで、
マルチシグBから紹介者Dへのトークン送信トランザクションが生成される。
商品詳細を読んで気に入ったユーザAは購入ボタンをクリックして、
ショップCが送金トランザクションをNEMネットワーク上にPUSHする。
ユーザAは手元のNEMPayで金額を確認し署名(クリック)することで決済が完了する。
また、紹介者Dは貯まった独自トークンをショップCに送付することでXEMと交換できる。

物流

追跡

荷物Aは出荷元Bから中継地Cを経由して目的地Dへ行くものとする。
荷物の移動については追跡監視アカウントEによってモニターされている。
まず、荷物Aを出荷元B、中継地Cによってマルチシグ化しておく。
出荷元Bセンサーは荷物Aが倉庫から離れたことを検知すると荷物AからシステムEに対し、トークン送信を行う。
中継地Cセンサーは荷物Aが接近したことを検知するとトークン送信の署名を行う。
システムEはトークンを受信し、マルチシグAから出荷元Bを解除し、新たに目的地Dを追加する。
出荷元Cセンサーは荷物Aが倉庫から離れたことを検知すると荷物AからトークンをシステムEに送信する。
以下同様。

(この投稿では、引き続きマルチシグのユースケースについて考えていこうと思います。)