NTPに頼らず、Symbol from NEMブロックチェーンで同期された現在時刻を取得する
今回はブロックチェーンとは少し離れた内容です。
Symbol from NEM では内部で独立したネットワーク時刻を保有しています。
これを外部から利用するための方法です。NTPサービスなどにアクセスする必要はありません。
事前準備
NODE = 'https://sym-test.opening-line.jp:3001';
(script = document.createElement('script')).src = 'https://xembook.github.io/nem2-browserify/symbol-sdk-pack-0.21.0.js';
document.getElementsByTagName('head')[0].appendChild(script);
ライブラリインポート
nem = require("/node_modules/symbol-sdk");
nodeHttp = new nem.NodeHttp(NODE);
networkHttp = new nem.NetworkHttp(NODE);
Symbol のエポックタイム取得
props = await networkHttp.getNetworkProperties().toPromise()
epoch = nem.UInt64.fromNumericString(
props.network.epochAdjustment.replace("s","")
) * 1000
Symbol from NEMでは2019 11/11 0時(GMT)がエポックタイムとして指定されているため、その秒情報をネットワークより取得しておきます。
現在時刻取得
nodeTime = await nodeHttp.getNodeTime().toPromise()
console.log(new Date(epoch + nodeTime.receiveTimeStamp.compact()));
ノードより現在時刻を取得してエポックタイムと足し合わせてJavaScriptのDate関数より現在時刻を出力します。
Wed Oct 14 2020 00:10:51 GMT+0900 (日本標準時)
無事出力されました。
ちなみにライブラリを使用したくない場合は以下のエンドポイントより情報を取得できます。
network. epochAdjustment
http://api-01.ap-northeast-1.0.10.0.x.symboldev.network:3000/network/properties
communicationTimestamps.receiveTimestamp
http://api-01.ap-northeast-1.0.10.0.x.symboldev.network:3000/node/time
Author And Source
この問題について(NTPに頼らず、Symbol from NEMブロックチェーンで同期された現在時刻を取得する), 我々は、より多くの情報をここで見つけました https://qiita.com/nem_takanobu/items/3fdcdc8c19a0a98f275d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .