今回は、NEM(ネム)の史上最高セキュリティ「NEM Hot/Cold Wallet」が登場したことについてまとめてみました。
NEM(ネム)とは
NEM(ネム)とは、もともとNem Economy Movement(新しい経済運動)の略語です。
現在は、略称ではなく、NEMという固有名詞であるとされています。
NEM(ネム)は金銭的な自由、分散化、平等、連帯感の原則に基づいて、新しい経済研の創出を
目標として始まった仮想通貨のプロジェクトになります。
NEM(ネム)は、2014年1月19日にbitcointall.orgのフォーラムでutopianfutureというハンドルネームの人物によって
この企画が立ち上がり、2015年3月31日に公開されました。
NEM(ネム)は当初開発チームの一人に日本人がいたことで日本での知名度が上がったようです。
現在コア開発チームには存在しておりません。
NEM(ネム)は格好される仮想通貨の単位は、「XEM(ゼム)」で、総発行量は8,999,999,999XEMです。
およそ1600人の投資家に均等に分けられたのが最初になります。
NEM(ネム)はビットコインのマイニングというものがなく、新規発行がありません。
NEM(ネム)はネットワーク後見者への報酬は後で説明する、ハーベストという形で分配されます。
NEM(ネム)のブロック生成間隔は、約1分でビットコインに比べてかなり早いです。
詳しくは、下記の記事を参照してください。

NEM(ネム)の史上最高セキュリティ「NEM Hot/Cold Wallet」が登場
NEM(ネム)の史上最高セキュリティ「NEM Hot/Cold Wallet」が登場しました。
以下は、本文を翻訳した内容となります。
NEMチームは、このアプリとブログを作成するためのAnthony(Telegram user @antownee)に感謝します。
パート1:はじめに
このブログでは、cryptocurrenciesとblockchain technologyの新しい革新的なアイデアを紹介します。
私たちは冷たい財布、つまり決してインターネットに触れたことのない財布、すなわち財布、すなわち財産を簡単に送受信できる財布でもあります。
つまり、ユーザーはオフラインコールドストレージのセキュリティを持ちますが、実際にはXEMを送受信できます。
これは、NEMの強力なAPIと階層化されたアーキテクチャのおかげです。
cryptocurrenciesの登場により、この新しい空間への関心と投資が増加し、セキュリティに重点を置く必要が生じました。
幸運なことに、理想的な状況では、秘密鍵を管理していることを前提として、ブロックチェーンテクノロジを念頭に置いて構築されています。
NEMは、時価総額によってトップ10に一貫してランク付けされており、開発者とユーザーが同様にセキュリティを強化するために、
ブロックチェーンとやりとりするための簡単で直感的な方法を提供します。
これを達成するために、基本的に「エアギャップ」を財布にします。
このウォレットは決してインターネットに触れることも、
インターネットに接続された別のデバイス(ハードウェアウォレットなど)に直接接続することもなく、暗号の送受信を行うことができます。
だから、より安全を確保するために何をすることができますか?あなたが2台のコンピュータを持っていれば、
秘密鍵をインターネットから分離して、サイバー攻撃から完全に保護することができます。
取引をオンラインで作成し、オフラインで署名して鍵を保護し、オンラインで再度ブロードキャストするだけです。
これは、「空隙」保護または「冷たい貯蔵」として知られているものです。
「エアーギャップ」
エアギャップの背後にあるアイデアは、2つの別々のデバイスを持つことです。
1つはインターネットにアクセスでき、もう1つは決してインターネットに接続しません。こ
れがあなたの秘密鍵を保持するデバイスであるため、NEVERに重点を置いています。
この場合は、もはや通常使用されていないAndroid携帯を使用します。
私たちが本質的にやっていることは、トランザクションの作成と署名をその放送から分割することです。
作成と署名はオフラインデバイスで行われ、放送はオンラインデバイスで行われます。
理論的にはこれまで技術的に精通した開発者がこれまでにも可能でしたが、
初めて誰もが使用できる追加のハードウェアを購入することなく実験的なアプリを提供しています。
実験的なProof-of-Conceptアプリであり、そのように扱われ、慎重に使用されるべきです。
NEMチームは、このアプリを使用した結果として発生した資金の喪失について責任を負いません。
パート2:開発プロセス
作成サインアプリケーション(コールド)
両方のアプリは、Ionicフレームワークを使用して構築され、クロスプラットフォームのコンプライアンスを可能にしました。
同様に、nem-SDKは、npm install nem-SDKを介してnpmで利用可能なこのアプリ用に広範囲に使用されていました
作成署名アプリケーションでは、次のことを達成する必要がありました。
スキャンモバイルアカウントQR
QRとウォレットをデコードして秘密鍵を取得する
取得した秘密鍵を使用してトランザクションを作成し署名する
QRを生成する
私はプロセス全体について詳しくは触れませんが、完全なコードへのGitHubのリンクがあります。
しかし、QRを解読して財布を解読することが適切に文書化されていないため、挑戦的であることが判明したビットについて話したい 。
QRコードを解読することはかなり単純明快であり、同様のjsonオブジェクトが生成されました。
// Foo
let walletinfo = {
“V” 1,
“type” 3,
“date”: {
“name”: “test-WLT”
“priv_key”:”23a57b49fbac363aa2a9d8d5421930b14c3c55fa96a4c675611766207fdf67a61ded08686f72d874db7cb057354dcae7115cf69c1fe33c57af4a891f346a7e07″,
“salt”:”580e102a1b834b2ded7dcb26f683af4097e57a6803b01cbc343216a4d52dd7e0″
}
}次の関数を使用して、上記のオブジェクトでウォレットを復号化しました。
// Decrypting wallet
decryptWalllet(walletinfo, password) {
return new Promise((resolve, reject) => {let salt = CryptoJS.enc.Hex.parse(walletinfo.salt);
let encrypted = walletinfo.priv_key;
let key = CryptoJS.PBKDF2(password, salt, {
keySize: 256 / 32,
iterations: 2000
}).toString();let iv = encrypted.substring(0, 32);
let encryptedPrvKey = encrypted.substring(32, 128);
let obj = {
ciphertext: CryptoJS.enc.Hex.parse(encryptedPrvKey),
iv: convert.hex2ua(iv),
key: convert.hex2ua(key.toString())
}resolve(CryptoHelpers.decrypt(obj));
})
}
このファンクションの結果は、トランザクションを作成して署名するウォレットの秘密鍵です。// Sign Transaction
signTransaction() {// Set the private key in common object
this.common.privateKey = this.nemPrivatekey;// Check private key for errors
if (this.common.privateKey.length !== 64 && this.common.privateKey.length !== 66)
return {
error: true,
message: ‘Invalid private key, length must be 64 or 66 characters !’
};if (!nem.utils.helpers.isHexadecimal(this.common.privateKey))
return {
error: true,
message: ‘Private key must be hexadecimal only !’
}// Set the cleaned amount into transfer transaction object
this.transferTransaction.amount = nem.utils.helpers.cleanTextAmount(this.nemAmount);// Recipient address must be clean (no hypens: “-“)
this.transferTransaction.recipient = nem.model.address.clean(this.nemAddress);// Set message
this.transferTransaction.message = this.nemMessage;// Prepare the updated transfer transaction object
var transactionEntity = nem.model.transactions.prepare(“transferTransaction”)(this.common, this.transferTransaction, nem.model.network.data.mainnet.id);// Create a key pair object from private key
var kp = nem.crypto.keyPair.create(this.common.privateKey);// Serialize the transaction
var serialized = nem.utils.serialization.serializeTransaction(transactionEntity);// Sign the serialized transaction with keypair object
var signature = kp.sign(serialized);// Build the object to send
var result = {
‘data’: nem.utils.convert.ua2hex(serialized),
‘signature’: signature.toString()
};// Show the object to send in view
return {
error: false,
message: JSON.stringify(result)
}}
その後、ブロードキャストアプリケーションによってスキャンされるQRコードが生成される。あなたの熟読のために、コード全体がここにあります。
ブロードキャストアプリ
放送ビットはかなり簡単でした。コールドウォレットで生成されたQRコードをスキャンして、
指定されたエンドポイントにPOSTリクエストを行うことでブロックチェーンにブロードキャストするだけでした。
注:このエンドポイントは、ここでアクセス可能な使用可能なNEMメインネットノードのリストから選択されています。
this.nodeUrl = “http://62.75.251.134:7890/transaction/announce”;
//Broadcast transaction
broadcastTx(signedTransaction: any): Promise<any> {
this.signedTx = signedTransaction;let headers = new Headers({ ‘Content-Type’: ‘application/json’ });
let options = new RequestOptions({ headers: headers });return this.http.post(this.nodeUrl, this.signedTx, options)
.toPromise()
.then(this.extractData)
.catch(this.handleErrorPromise);
}ここではGitHub上の全コードレポアップです。
パート3:ホット/コールドウォレットを使用した場合の留意点
概要
あなたの資金を移動している間にセキュリティの余分な層は、紙の財布の使用によって追加されます。
これを実現するには、ほぼ完全に冷たい財布の環境を達成する必要があります。前に説明したように、2つのスマートフォンが必要です。
スマートフォンが1つはインターネットに接続できず、もう1つはスマートフォンには接続できません。
また、オフラインのiOS / Android / NanoWalletアプリでウォレットを作成し、ウォレットをトランザクション署名者アプリに移動する前にバックアップすることもできます。
私たちは、新しくインストールされたOSを搭載した未処理のAndroid phoneを使用することをお勧めします。
次に、トランザクション署名者アプリをインストールして、携帯電話を飛行機モードにして、端末の寿命を延ばします。
注:飛行機ノードをオンにした後にアプリをインターネットに接続すると、
オフラインの署名者アプリケーションを使用することによって提供されるセキュリティが無効になります。
次のようにアプリをインストールします。
Transaction Broadcast app:インターネットに接続する電話機にインストールします。
Transaction Sign app:これはインターネットに接続しないスマートフォンにインストールされます
事前準備
このステップでは、好ましくはインターネットに接続されていないPC上に紙財布を作成します。
これは、私たちの財布との間で資金を移動する寒冷環境アプローチをさらに強化します。
ペーパーウォレットジェネレータアプリをダウンロードし、以下の情報に従ってください:
説明
左側のQRコードには誰とでも公然と共有できるNEMのアカウントアドレス情報があります。資金は、この住所に送金することで入金されます。
右上のQRコードには、パスワードで暗号化された秘密鍵に関する情報があります。
NanoWalletアプリとスマートフォンアプリの両方は、秘密鍵を含むQRと同じ構造を持っています。
右下のQRコードは秘密鍵そのものです。一般的なQRコードリーダーは、秘密鍵ストリング自体を読むことができます。
コールドウォレットから資金を引き出す方法
NEM Hot/Cold wallet
古いスマートフォンやインターネットに接続しない電話でこのアプリを起動します。これはオフラインでトランザクションに署名するアプリです。
説明
SCAN WALLET QR:紙幣の右上隅にあるQRコードをスキャンすることで、秘密鍵を取得することができます。
MANUAL ENTRY:宛先アドレス/送金額/メッセージ/秘密鍵を手動で入力してください。
ただし、作成した請求書のQRコードをスキャンすることもできます。請求書は、nem.ioのNanoWalletまたはAndroid / iOS NEMアプリで簡単に作成できます。
SCAN WALLET QR
ポップアップにパスワードを入力して、秘密鍵を復号して取得します。
入力後、QRリーダーが起動し、QRコードをスキャンして、最終的に、提供されたウォレットの秘密鍵フィールドに入力します。
この画面では、復号化が成功すると秘密鍵が自動的に入力されます。
準備された請求書QRをお持ちの場合は、前と同じように「SCAN INVOICE」を押すと、カメラに請求書のQRコードをスキャンするように促されます。
そこに、あなたの「NEMアドレス」、「金額」および「メッセージ」フィールドが自動的に入力されます。
必要なすべてのフィールドが入力されると、 ‘SIGN TRANSACTION’ボタンが有効になります。
「SIGN TRANSACTION」ボタンを押すと、ネットワークにブロードキャストされる最終的なQRコードを含む新しいページが表示されます。
このQRコードは、「トランザクションブロードキャスト」アプリによってスキャンされます。
Transaction Broadcast app
定期的に使用するスマートフォンにインストールしたこのアプリを起動します。例えば、インターネットに接続されているもの。
説明
SCAN QRコード
SCAN QR CODEボタンを押して、生成したQRコードを他の電話機の「NEM Hot / Cold」ウォレットアプリでスキャンします。
スキャンが成功すると、「ブロードキャスト」ボタンが有効になり、トランザクションをNEMネットワークにブロードキャストできます。
放送が成功すると、以下のようなメッセージが表示されます。トランザクションハッシュと「成功」または「失敗」メッセージで完了します。
不十分な資金などの場合は、エラーメッセージも表示されます。
以上です。これで、オフラインウォレット、NEMホット/コールドウォレットから送受信されました。
→https://blog.nem.io/hot-cold-wallet/
Ethereum(イーサリアム)とNem(ネム)が合体した仮想通貨「Ethernem」についてまとめてみた

NEM(ネム)が韓国の仮想通貨取引所で上場先が2つ増えることについてまとめてみた

まとめ
少し、技術的なことがあったので、詳しくない人でもわかりやすくまとめると、
・取引作成(オンライン)→署名(オフライン)→データ送信(オンライン)という工程を行う。
・今までにないウォレット形式で、資産を安全に守りながら取引が可能。
ということが、NEM(ネム)の機能として導入されます。
やはり、仮想通貨業界では、資産を守るためのセキュリティ対策は非常に大切なので、こうした動きがNEM(ネム)にあるので
より通貨としての活躍の場が早まりそうですね!!