- Cold Wallet(インターネットに接続されない)でありながらHot Wallet(資産を容易に送受信できる)であるWallet
- これによりユーザーはオフラインcold storageの安全性を保ちながらXEMを送受信できるようになります。
パート1:イントロダクション
仮想通貨とブロックチェーン技術での新しく革新的なアイデアを紹介します。Cold Wallet(インターネットに接続されない)でありながらHot Wallet(資産を容易に送受信できる)であるWalletをセットアップします。
これによりユーザーはオフラインcold storageの安全性を保ちながらXEMを送受信できるようになります。これはNEMの強力なAPI及び完全に新たなコードによる層によって設計された構造のおかげです。
仮想通貨の出現によってこの新たな分野において利益及び投資の増加を目の当たりにしましたが、それに伴ってセキュリティー(安全性)について考える必要が出てきました。
幸いなことに、理想的な状況ではブロックチェーン技術は自身のプライベートキーを管理しているという条件の元、このことを頭に入れた上で作られます。
NEMは仮想通貨時価総額において一貫してトップ10にランクインしており、開発者やユーザーがセキュリティーを強化できる簡単で直観的な方法を提供しています。
これを実現するために我々はwalletの「air-gapping」を実行します。つまりwalletが一度もインターネットに接続することなく、そしてインターネットに接続している他のデバイス(例えばハードウェアwallet)とも繋がることもなく、暗号通貨の送受信が可能になります。
では、安全性をさらに確保するには何ができるでしょうか?
二つのコンピューターがあればサイバー攻撃を防ぐためにプライベートキーをインターネットから離すことはもちろん可能です。
単に取引をオンラインで作り、キーを守るためにオフラインでサインをし、再びオンラインで放送すればいいだけです。これが「air gap」保護もしくは「cold storage」と言われているものです。
「Air-Gapping」
Air-gappingのアイデアは二つのデバイスを所持しているところから始まります。
一つはインターネットにアクセスでき、もう一つは「一度も」インターネットに接続しないという条件があります。
プライベートキーをそこに保管するため、「一度も」インターネットに接続しないという条件が非常に大事です。
今回は普段から使われることがなくなったアンドロイド携帯を使います。本質的には取引の作成とサインの伝達を離すということを行います。
作成とサインはオフラインデバイスで行われ、伝達はオンラインデバイスで行われます。これは前から技術に精通している開発者からすると理論的に可能であるとされていたが、今回初めてほぼ誰でも使えて追加ハードウェア購入を必要としない実験用アプリを提供します。
これが実験用の概念実証アプリであり、注意深く扱われるべきであることを理解しておく必要があります。よってNEMチームはこのアプリの利用による資金の損失については責任は取れません。
パート2:開発過程
パート2では作成・サインアプリ(Cold)と伝達アプリの二つの過程があります。
作成・サインアプリ(Cold)
両方のアプリはプラットホーム間コンプライアンスを可能とするためにイオニア式枠組みで作られています。さらにNPMで利用できるNEM-SDKは広範囲にわたってこのアプリに使われています。
作成・サインアプリのためには以下のことを実現しなければなりませんでした:
- モバイルアカウントQRのスキャン
- QR及びWalletをデコードし、プライベートキーを回収
- 回収したプライベートキーを使って取引を作成しサインする
- QRを生成
全過程については詳細に説明しませんのでコード全体のGitHubリンクはこちらにあります。
しかし、正確に文書として記録されていなかったがために難解だった部分については話します:QRのデコード及びWalletの解読。
QRコードの解読は割と簡単であり、それに似たjson オブジェクトが得られました:
次の関数を使用して、上記のオブジェクトでウォレットを復元化しました。
この関数の結果は、トランザクションを作成して署名するウォレットの秘密鍵です。
その後、伝達アプリケーションによってスキャンされるQRコードが生成されます。
熟読したい方向けに、コード全体がここにあります。
伝達アプリ
伝達部分は割と簡単でした。Cold Walletによって生成されたQRコードをスキャンし、与えられた終了点へのPOSTリクエストをすることでブロックチェーンへと伝達させるだけでした。
注:この終了点はこちらからアクセスできる利用可能なNEMメインネット節のリストから選ばれました。
さらに詳しく知りたい方はGithubへ
パート3:Hot / Cold Walletの利用チュートリアル
資金を動かす際にpaper walletの利用によってセキュリティーの層が一つ追加されます。
これによりほぼ完全なcold wallet環境を実現できます。前もって説明したように二つのスマートフォンが必要になります:インターネットに接続するものとしないもの。
取引サインアプリに移動させる前にオフラインのiOS/Android/NanoWalletアプリによってwalletを作ってバックアップすることも可能です。
OSが新しくインストールされたアンドロイド携帯を使用することを勧めます。そして取引サインアプリをインストールし、デバイスの寿命が尽きるまで携帯を飛行機モードに切り替えておきます。
注:飛行機モードに切り替えた後にアプリをインターネットに接続してしまうとオフラインサインアプリによるセキュリティーを無効にしてしまいます。
以下のようにアプリをインストールします:
- ・取引放送アプリ:インターネットに接続する携帯にインストール
- ・取引サインアプリ:インターネットに接続しない携帯にインストール
準備を進める
このステップではpaper walletを作ります。これはインターネットに接続されていないPCで行うことを勧めます。
これによりさらにcold環境に近づき資金をwalletからとwalletへと移動できます。Paper wallet生成アプリをダウンロードし、以下の情報に従ってください:
- ・左にあるQRコードには誰とでも共有できるNEMアカウントアドレス情報があります。このアドレスを送ることによって資金が貸方に記入されます。
- ・右上にあるQRコードにはパスワードが暗号化されたプライベートキー情報があります。NanoWalletとスマートフォンは両方ともプライベートキーを含む同じQR構造をもっています。
- ・右下のQRコードはプライベートキー自身です。一般的なQRコードリーダーを使って秘密のキーストリング自身を読み込むことができます。
Cold Walletから資金を引き出す方法
NEM Hot / Cold Wallet
古いもしくはインターネットに繋がらないスマートフォンでこのアプリを起動しましょう。このアプリがオフラインで取引をサインします。
- ・Wallet QRをスキャン:Paper walletの右上にあるQRコードをスキャンすることでプライベートキーを入手することができます。
- ・手動入場:宛先アドレス/送金額/メッセージ/プラベートキーを手動で入力します。しかし用意されたインボイスQRコードをスキャンすることも可能です。インボイスはNanoWalletもしくはiom.ioで入手できるAndroid/iOS NEMアプリで容易に作ることができます。
パスワードを入力して、プライベートキーを復元して取得します。
入力後、QRリーダーが起動し、QRコードをスキャンして、最終的に、提供されたウォレットのプライベートキーフィールドに入力します。
この画面では、復元化が成功するとプライベートキーが自動的に入力されます。
準備されたINVOICE QRをお持ちの場合は、前と同じように ‘SCAN INVOICE’を押すと、カメラにINVOICEのQRコードをスキャンするように促すことができます。
そこに、あなたの「NEMアドレス」、「金額」および「メッセージ」フィールドが自動的に入力されます。
必要なすべてのフィールドを入力すると、 ‘SIGN TRANSACTION’ボタンが有効になります。
「SIGN TRANSACTION」ボタンを押すと、ネットワークに伝達される最終的なQRコードを含む新しいページが表示されます。
このQRコードは、「トランザクション伝達」アプリによってスキャンされます。
トランザクション伝達アプリ
定期的に使用するスマートフォンにインストールしたこのアプリを起動します。 例えば、インターネットに接続されているものなどの。
SCAN QR CODEの説明をします。
SCAN QR CODEボタンを押して、生成したQRコードを他の電話機(スマートフォンなど)の「NEM Hot / Cold」ウォレットアプリでスキャンします。
スキャンが成功すると、「BROADCAST」ボタンが有効になり、トランザクションをNEMネットワークに伝達できます。
伝達が成功すると、以下のようなメッセージが表示されます。 トランザクションハッシュと「成功」または「失敗」メッセージで完了します。
不十分な金額などの場合は、エラーメッセージも表示されます。
以上となります。 これで、オフラインウォレット、NEMホット/コールドウォレットから送受信されました。
NEM Hot/Cold Wallet: The First Ever NEM Cold Offline Wallet You Can Use To Send And Receive Funds
参考記事はこちらから