LoginSignup
7

RESTゲートウェイに任意のJSON拡張情報をもたせるnodeMetadata設定

Last updated at Posted at 2022-12-15

実は結構前に、ノード(RESTゲートウェイ)に自由なメッセージ領域をもたせられないか、という打診をしてみたところ、実装してくれていたのでした。

いままではfriendlyName領域がユーザーとして比較的自由な文字列でカスタムできる領域でしたが、このnodeMetadataによって、完全に自由な領域を設定することができます。

せっかく実装されたのに、RESTゲートウェイのDockerイメージがなかなか更新されなかったので、すっかり忘れていました。

今はもうリリースされているので、利用可能です。

どのRESTゲートウェイのバージョンから有効なのか、までは調べてませんが、
まぁノードを建てるような皆さんなら常に最新の状態にアップデートしてるから、大丈夫でしょう。

ちなみにこの記事ではRestのバージョンは2.4.2でした。
最新でない場合は、一応安全のためにも、早めにアップデートをしてくださいね。

どんなの?

例えば、こんな感じの設定をすると…。

"nodeMetadata": {
  "greeting": "こんにちは",
  "message": "テストメッセージだよ",
  "foo": {
    "bar": "ばー",
    "baz": {
      "greeting": "Hello!",
      "array": [
        1,
        2,
        3
      ]
    }
  }
}

スクリーンショット 2022-12-14 6.10.56.png

その値がそのまま反映されます。

なお、未設定の場合は何も返ってきません。

設定方法

symbol-bootstrapによって、構成ファイルを用意している場合は、target/gateways/rest-gateway/rest.jsonにファイルがあると思いますので、これを開きます。
(今後のバージョンアップや構成によっては異なる可能性があります。同じような内容または名前のファイルを探してください)

スクリーンショット 2022-12-14 6.24.11.png

位置はどこでもいいので、"nodeMetadata"というキーで、お好きにオブジェクトを書いてください。

書いたら、RESTサーバを再起動するだけです。

なお、JSONの形式ミスがあると、RESTサーバが立ち上がらなくなるので、気をつけてください。
ミスったら一旦止めて、記述を見直して、再起動すれば大丈夫です。

現状では、手動で設定する方法しか無いと思います。
Symbol-Bootstrapを使用している場合、アップデートコマンドによって吹き飛ぶと思います。
そのあたりは環境整備に期待してください。

人柱

試しに設定してもらったノードを掲載させてもらいます。

*内容はノードの持ち主によって変更されている場合があります。

コード

ルーティングはここで設定されています。

なお、RESTサーバのルーティングはこのファイルに集約されていると思われるので、ココを覗くと、アンドキュメンテッドなパスが見つかるかも。

nodeMetadataの設定サンプル。

"nodeMetadata": {
    "_info": "replace the body of this object with custom fields and objects to personalize your node"
}

テストコードを覗いてみると、オブジェクトのネストも考慮していることがわかります。

expect(mockServer.send.firstCall.args[0]).to.deep.equal({
    foo: 1234,
    bar: 'lorem ipsum',
    baz: { abc: 41, xyz: 82 }
});

用途

自由にjsonオブジェクトを公開できるので、使い方は自分たちで決めなければなりません。

例えば、第一階層でサービス名などの名前空間を区切り、第二階層で具体的な値を公開してみる、とか…。

"jp.sugoi-web-service": {
  "name": "ノード太郎",
  "twitter": "@node_tarou",
  "message": "維持がんばるぞい!"
}

と書いておくと、すごいウェブサービスのシステムがこの値をみて、何らかに利用するとか。

まぁ、いろいろと考えてみて、何かに利用してください(ぶん投げ

ブロックチェーンの話ではありませんが、ノード運用を楽しく、ノードに関するサービスの可能性が広がる話でした。

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
What you can do with signing up
7