2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

NTPに頼らず、Symbol from NEMブロックチェーンで同期された現在時刻を取得する

Last updated at Posted at 2020-10-13

今回はブロックチェーンとは少し離れた内容です。
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

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?