Smidgen-IOTAマルチシグネチャウォレット-の実装方法

この記事は原題『smidgen – an IOTA Multisignature Wallet』の翻訳です。
ご参考までに公開します。必要だと思われる部分には言葉を補っています。私の力不足のため、えいやで翻訳されている部分もあります。

注意
この記事はIOTA初心者向けの記事ではありません。

基礎知識

この翻訳を読む前に基礎知識が必要だと思われるので、ご参考までにリンクを掲載します。とはいえ、この記事をご覧になる方の大半はそのような知識は身に着けていらっしゃると思いますので、そのような場合は基礎知識をスキップして翻訳に進んでください。

マルチシグネチャについて

Node.jsとnpmについて

筆者のPCがWindowsのため、Winでの解説をおいておきます。


以下、翻訳となります。

Smidgen-IOTAマルチシグネチャウォレット-の実装方法

投稿者:Bitfinex
投稿日:2017年9月15日 09:40 AM (UTC)

私たちの顧客のセキュリティは、私たちにとって非常に重要です。この理由から、Smidgen-マルチシグネチャウォレット-のリリースを発表できることに興奮しています。

マルチシグネチャウォレットは更なるセキュリティレイヤーを追加します。マルチシグネチャウォレットを使用することで、それぞれのトランザクションについてや、一人または複数人に管理されるそれぞれのシードについて、複数のシードを要求するアドレスを生成することができます。

smidgenはOSS(オープンソフトソフトウェア)で、MITライセンスです。

現在smidgenはベータ版の最終段階におり、多くの便利なコマンド(アドレス生成から残高確認まで)をサポートします。

smidgenを下記のようにインストールしてください:

npm install -g smidgen
重要
マルチシグネチャウォレットを作成するシードは、ひとつのウォレットだけに使用するべきです。

smidgenはシード所有者間で共有されるファイルを使用します。このファイルによって、アドレスや送金をウォレットで管理可能になります。これにより、現在の状態を把握しやすくなります。秘密鍵はファイルの一部ではありません。Offical IOTA Multisig FAQの確認を怠ってはいけません。

重要
現在、smidgenは送金のプロバイダーとしてフルノードに依存しています。–providerでフルノードを指定できます。

マルチシグネチャウォレットを作成する

ウォレットを作成するコマンドは次のとおりです。

smidgen multisig create  <id>

idは当事者(注1)の識別子です。署名する当事者の順序は、それぞれの送金において重要です。各当事者に識別子を割り当てることによって、署名の正しい順序を確認することが容易になります。ファイルはトランザクションとアドレスを格納するために使用するファイルです。

ウォレットを管理する2人の当事者BobとAliceがいるとします。

Bobはプロセスを開始し、マルチシグネチャウォレットを作成します。

smidgen multisig create bob multisig.txt

smidgenがBobが使用しようとしているシードを尋ね、ダイジェストを含むファイルを作成します。

Tip:smidgen generate-seedはセキュアなシードを作成します。

Enter your seed:
info Successfully wrote to multisig.txt
info Used key index 0 (main) and 1 (remainder)
info
info Add another party with:
info smidgen multisig add <id> multisig.txt
info You can finalize the wallet with:
info smidgen multisig finalize multisig.txt

BobはAlisとmultisig.txtファイルを共有してプロセスを続行します。

アリスがファイルを受け取ると、smidgen multisig addコマンドを使用して自分自身を次の当事者として追加する必要があります。当事者の追加は、ウォレットを確定させるまで可能です。

smidgen multisig add alice multisig.txt
Enter your seed:
info Successfully wrote to multisig.txt
info Used key index 0 (main) and 1 (remainder)
info
info Add another party with:
info smidgen multisig add <id> multisig.txt
info You can finalize the wallet with:
info smidgen multisig finalize multisig.txt

これ以上追加すべき当事者がいないので、Aliceはウォレットを確定します。

smidgen multisig finalize multisig.txt

smidgenは現在のメインアドレスを返します:

info Successfully wrote to multisig.txt
info Main address: SNEERGHLCZDUYDATGDQSCGCSROWBJVFGDKRSSQLCISMU9IYPJHQHUMFZLARRSEPHISJCDFMZAZEWTBYJZTCKUNDMJA

これで終了です。アリスは確定されたWalletファイルをBobと共有できるようになりました。生成されたアドレスからの送金は、AliceとBobの両方が送金に署名した場合にのみ可能です。

マルチシグネチャウォレットを使用する

別のウォレットからIOTAを取り出し、新しいマルチシグネチャウォレットに移しましょう:

smidgen transfer 3 --provider=http://fullnode.example.com LDSWPKCQ9HNPIVHDRUBUWB9ZZPEDFZLYXJNZKIXBFQTWZFVJZJTTOJQWYOR9XVR9NZOQXNQGWQPCCSSWZQPLPDAOIZ

次のようにsmidgenが返してきます:

Enter your seed:
info Successfully sent 3i to LDSWPKCQ9HNPIVHDRUBUWB9ZZPEDFZLYXJNZKIXBFQTWZFVJZJTTOJQWYOR9XVR9NZOQXNQGWQPCCSSWZQPLPDAOIZ
info Transaction sent, hash: HMBROOZJBZYCFZTRVCDINXBLCAUX9ZREKIDWGLFAFYSFFBVBHDZTBBOCRKPNLEBZIURQXGJNXSU999999
info Reattach with `smidgen reattach HMBROOZJBZYCFZTRVCDINXBLCAUX9ZREKIDWGLFAFYSFFBVBHDZTBBOCRKPNLEBZIURQXGJNXSU999999`

素晴らしい!トランザクションがスタックしている場合は、次のようにリアタッチを試みることができます:

smidgen reattach --provider=http://fullnode.example.com HMBROOZJBZYCFZTRVCDINXBLCAUX9ZREKIDWGLFAFYSFFBVBHDZTBBOCRKPNLEBZIURQXGJNXSU999999

smidgenでマルチシグネチャウォレットの残高もモニターすることができます。

smidgen get-balance --watch LDSWPKCQ9HNPIVHDRUBUWB9ZZPEDFZLYXJNZKIXBFQTWZFVJZJTTOJQWYOR9XVR9NZOQXNQGWQPCCSSWZQPLPDAOIZ

smidgenは15秒ごとに現在の残高を表示します:

Balance: 0 i (0 Mi) - 3s since last update

資金がマルチシグネチャウォレットに到着するまではティータイムです…

IOTAが到着しました!

Balance: 3 (0.000003 Mi) - 3s since last update

続けて最初の送金を完了させましょう。

送金を開始するには、ボブとアリスの両方がそれぞれのシードで署名しなければいけません。Bobが最初の当事者として署名したので、彼はまた、今度は最初に署名しなければいけません。当事者間で共有されるウォレット・ファイルから送金が作られます。各送金はそのファイルに追加されます。そのファイルを読み取ることで、私たちはキーインデックスやその他の詳細(例えば現在のアドレスなど)を把握できます。

署名のコマンドは次のとおりです:

smidgen multisig transfer <value> 
<address> <id> <file>

間違った順序でサインインしようとすると、smidgenは次のように通知します:

smidgen multisig transfer 3 VSBHQVNJNWR... alice multisig.txt --provider=http://fullnode.example.com

ERR! Wrong party signing. Current party: bob
ERR! Signing order: bob, alice

Bobは最初に署名しなければなりません。

smidgen multisig transfer 3 VSBHQVNJNWR... bob multisig.txt

次のようにsmidgenが返してきます:

info Successfully signed transfer
info Share multisig.txt with 'alice' to continue

グレート!ボブが更新されたウォレットファイルを送った後に、今度はAliceが送金に署名する番です。smidgenは、最後の当事者が署名してトランザクションを送信したことを検出します。送金のためにPoWをする必要があるので、プロバイダとしてフルノードを指定する必要があります:

smidgen multisig transfer 3 VSBHQVNJNWR... alice multisig.txt --provider=http://fullnode.example.com

smidgenはバンドルを検証し、送金を送信します。

Enter your seed:
info Verifying bundle... Bundle: OK
info Sending transaction...
info Transaction sent, hash: OHHJOCLRMKQ9EMINOZXITIKWFZIQBEWPOQWCIOMWOFNOILVDYLERFLJOFANUSECBXFEXOJ...
info Reattach with `smidgen reattach OHHJOCLRMKQ9EMINOZXITIKWFZIQBEWPOQWCIOMWOFNOILVDYLERFLJOFANUSECBXF`
info Saved status to multisig.txt
info New main address: DIYWAXPNINNJXWDPGGXAQTYTPREQYDONTZXGZMQTAGDCUOAEJXJXOIUFAVDUORHERZCXCCUMQGRAP...

グレート!これで終わりです。smidgenは私たちの新しいアドレスを生成しました。

もし新しいIOTAを受け取りたい場合には、新しく生成されたアドレスを使う必要があります。

Bitfinexは、皆様がsmidgenを使って、マルチシグネチャウォレット管理のスモールツアーを楽しんで頂けましたら幸いです。

訳者注釈

注1)原語は”Party”です。日本では一般的に”ユーザー”という意味でつかわれる?


 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です