NEM LIFE

nem、xemに関する最新のニュースを翻訳してお届けします!

ナノウォレットのDNSモジュール

以下は下記記事を和訳したものです。
https://nemflash.io/dns-module-nanowallet/

ナノウォレットのDNSモジュール
ジュリアン・2018年8月11日公表・2018年8月13日更新

f:id:jijikokkoku:20190127071221p:plain

NEMのDNS

このブログ記事は、NEMブロックチェーンが賢くて、分散されていて、そして頼れるインターネットサービスであるDNSサービスにどのように活用できるかを論証します。例えばドメインネームからIPアドレスへの変換などです。このプロジェクトは、以下のものを含みます。
■MITライセンスのGitHubコード
■ドメインネームからIPアドレスへの変換
■ドメインネームの関連情報参照
■.nemドメインオーナーの簡単でアップデート可能なレコードの証明

DNSとは何か

ドメインネームシステム(DNS)とは、コンピューター、サービス、またその他のインターネットや個人的なネットワークに接続されるリソースのための階層的なネーミングシステムです。それはかかわる各存在を指定する様々な情報に関連します。最も有名なのは、コンピューターサービスやネットワークプロトコルに内在するデバイスをロケーティングしたり特定したりするのに必要な記憶されたドメインネームから数字のIPアドレスより敏速に変換するものです。世界中で提供することで、分散された住所氏名録サービス、ドメインネームシステムはインターネットの機能の構成としてなくてはならないものとなり、1985年より使用されています。

なぜブロックチェーンDNSが必要なのか

一流のDNSシステムは高いパフォーマンスにもかかわらず、たくさんの弱点もあります。一流のDNSシステムは攻撃を受けやすいです。例えば、攻撃者がハックしたら、そこでサーバーを即座に隠すためのDNSレスポンスをハイジャックし、ウェブサイトを偽装するためのやりとりを促進します。世界中のあちこちで当局が検閲をし、多かれ少なかれ正当な理由でドメインをブロックしています。ドメインネームの所有/維持のためには値段がかかりるかもしれません、そしてドメインレコードの更新スピードはゆっくりです。

NEMはドメイン登記官、ドメインゾーンオーナー、また中間に隠し場となる場所をもたないピアーツーピアのネットワークです。NEMブロックチェーンはもっとも安全であり、情報が勝手に改ざんされないブロックチェーンのひとつであると証明されています。それぞれのNISにはブロックチェーン全体の有効化されたコピー、ドメインネームの完全なデータベース、メッセージや取引がある。データの信頼性はデータベースがブロックチェーン技術自体から守られているすべてのNISと同じであることと、民意のしくみに基づいています。一度提出され有効になると、それぞれのプライベートキーの所有者以外は誰もチェーンのレコードを変えたりキャンセルしたりできません。

f:id:jijikokkoku:20190127071551p:plain

f:id:jijikokkoku:20190127071647p:plain

NEM DNS

ネームスペースのコントロール

NEMネームスペースの所有者はいくつか簡単なステップを踏むことでNEM DNSを使用できます。DNSはNEMエコシステムと関連するポインターアドレス(PA)のネームスペースプラットフォームのまわりに作られます。ネームスペースの所有者は暗号化されていないメッセージをjsonフォーマットにしネームスペースに関連する情報とともに、取引情報をPAに送信する必要があります。メッセージは、IPアドレスやオーナーシップ情報、住所、連絡先情報やその他関連する情報も含みます。記録のアップデートを行うには、所有者は単に新たな取引と新しい情報をとともに送信すればよいです。

JSONオブジェクトの例:

f:id:jijikokkoku:20190127071849p:plain

PAがネームスペースの名前を寄せ集め、NEMのパブリックアドレスを引き出しsha256を見つけました。

PA発見の例:

f:id:jijikokkoku:20190127071913p:plain

DNSの検索

DNSの検索はナノウォレットを使用することで可能です。 .nemのドメインネームの検索をリクエストするとき、アルゴリズムが2つのNISのリクエストを行います。1つ目はドメインのオーナーシップの設立です。

例:
http://104.128.226.60:7890/namespace?namespace=helloworld


戻ってきたJSONオブジェクトの例:

f:id:jijikokkoku:20190127071956p:plain

ドメインのオーナーシップができあがるとアルゴリズムによってPAに関係する2回目のリクエストがなされます。このリクエストは所有者のアカウントから新しく入ってきた取引を探します。最新のDNS情報とともに最新のDNS取引を探す取引を紐づけ予測しました。

例:
http://104.128.226.60:7890/account/transfers/incoming?address=TCGD57YKW5TFEY5TWTN7XBJXEZBGGURYXJ54FLDE

f:id:jijikokkoku:20190127072020p:plain

このプロジェクトからのコードはMITライセンス下のGitHub経由で有効となっています。このプロジェクトとウェブサイトデモはGitHub 1よりダウンロードするか、NEMのナノウォレットで実行してみてください。

・・・・
以下原文
・・・・

NEM DNS
This blog post will demonstrate how the NEM blockchain can be used for a smart, decentralized and reliable DNS service for internet services, for example the translation of domain names to IP addresses. The project include
 MIT licensed GitHub code
 Translation of domain names to IP addresses
 Domain name lookup of associated information
 Demonstration of easy updatable records for the .nem domain owner
What is DNS
The Domain Name System (DNS) is a hierarchical naming system for computers, services, or other resources connected to the Internet or a private network. It associates various information with domain names assigned to each of the participating entities. Most prominently, it translates more readily memorized domain names to the numerical IP addresses needed for locating and identifying computer services and devices with the underlying network protocols. By providing a worldwide, distributed directory service, the Domain Name System is an essential component of the functionality on the Internet, that has been in use since 1985.
Why do we need a blockchain DNS
The classic DNS system despite its high performance, has many weaknesses. The classic DNS system is vulnerable for attacks. For instance, an attacker can hack it and then forward your traffic to fake websites by hijacking DNS responses for intermediate caching servers. In many parts of the world, authorities are censoring and blocking domains for more or less righteous reasons. The price for owning / maintaining a domain name can be costly and the speed of updating domain records is slow.
NEM is a peer-to-peer network that has no domain registrars, domain zone owners, or intermediate caches. The NEM blockchain has proven to be one of the most secure blockchains and information cannot be tampered with. Each NIS has a validated copy of the entire blockchain , the complete database of domain names, messages and transactions. Data reliability is based on the fact that the database is the same for all NIS ensured by the blockchain technology itself and a public consensus mechanism. No one, except the owner of each private key, can change or cancel any record in the chain after it has been submitted and validated.



NEM DNS
Controlling a namespace
The owner of a NEM namespace can use the NEM DNS in a few easy steps. The DNS is built around the namespace platform in the NEM ecosystem and an associated pointer address (PA). The namespace owner needs to send a transaction to the namespace pointer address including a non-encrypted message in json format with information related to the namespace. The message can include relevant information such as IP address, ownership info, physical address, contact info and much more. To update the record the owner can simply send a new transaction with the new information.
Example of JSON object:
{"dns":"yes","ip1":"your ip", "email": "your email"}

// the "dns" = "yes" key will signal that the massage contains DNS info
// the "ip1" key is the primary IP related to your .nem domain
The pointer address (PA) is found sha256 hashing the namespace name and deriving a NEM public address.
Example of finding PA:
function getPointerAccount(namespace){

passphrase = nem.crypto.js.SHA256(namespace);

var privateKey = nem.crypto.helpers.derivePassSha(passphrase, 1).priv;

var keyPair = nem.crypto.keyPair.create(privateKey);

var publicKey = keyPair.publicKey.toString();

var address = nem.model.address.toAddress(publicKey, nem.model.network.data.testnet.id);

return address;

}

pointerAdd = getPointerAccount('helloworld');

//getPointerAccount for the namespace 'helloworld' will return TCGD57YKW5TFEY5TWTN7XBJXEZBGGURYXJ54FLDE

Searching the DNS
Searching the DNS can be done using a the NanoWallet.When requesting a search for the .nem domain name the algorithm will do two NIS requests, the first one will establish ownership of the domain.
Example:
http://104.128.226.60:7890/namespace?namespace=helloworld
Example of returned JSON object:
{"owner":"TCFSDG3XDH2SXWPVJ2Q4LV2SLS57TFJUATT2UJSZ","fqn":"helloworld","height":1387671}
When ownership of the domain is established the algorithm will do a second request related to the pointer address. This request will look for incoming transactions from the owner account. Looping thought the transactions searching for the newest DNS transaction with DNS information.
Example:
http://104.128.226.60:7890/account/transfers/incoming?address=TCGD57YKW5TFEY5TWTN7XBJXEZBGGURYXJ54FLDE
var stop =0;
$.each(data['data'], function( index, value ) {

if ( nem.model.address.toAddress(value['transaction']['signer']...
, nem.model.network.data.testnet.id)== ownerAdd){

var payload = convertFromHex(value['transaction']['message']['payload']);
var objPayload = jQuery.parseJSON( payload );
if (objPayload['dns']=='yes' && stop==0){

stop =1;

if(typeRe==1){window.location ='http://'+objPayload['ip1']};
if(typeRe==2){alert(payload);};

}

}

});
Code from this project is available via GitHub under MIT license. The project and website demo can be downloaded from GitHub 1 or you can try the implementation in the nem NanoWallet.