How to run a Symbol node with added security.

セキュアなノードの立ち上げ

ノードの立ち上げ ガイドでは Symbol Bootstrap を使用してノードを簡単に作成 する方法について説明しています。このガイドでは、セットアッププロセスはノードをホストするマシン上で実行されます。つまり、秘密鍵はインターネットに接続されたマシンで生成されます。 より強固なレベルのセキュリティ が必要な場合は、このガイドに従いますが、より複雑なセットアップ手順が要求されます。

この 要約symbol-bootstrap start コマンドを config フェーズに分割して、オフラインで実行し、設定フォルダが生成され、それ以外の start コマンドはノードのホスト先である、オンラインのマシンで実行されます。 メインアカウントの秘密鍵がオフラインマシン以外に暴露されることはありません

マシン

機能

設定

  • ソフトウェアをオンラインでインストールしたら、その後オフラインにします。

  • 設定ファイルの作成。

  • セットアップトランザクションの準備。

ノード

  • 恒久的にオンラインです。

  • ノードの起動。

  • セットアップトランザクションのアナウンス。

ノードはすべてのハーベスト報酬が、このアカウントの秘密鍵を必要とせずに 外部アカウント に送られるように設定することもできます。これは 非カストディアルセットアップ と呼ばれ、 ノードが稼働してから 設定する必要があるため、このページの最後に適切なガイドへの案内があります。

マシンの設定

セットアップ

マシンの設定 中はオフラインです:

  • Symbol Bootstrap の使用 ガイドに示されるように Symbol Bootstrap のインストール をします。プリセットとアセンブリについて理解するために、そのガイドの 構成 セクションを必ず確認してください。

  • symbol-cli ガイドで示されるように Symbol CLI をインストール して、次のように実行します:

    npm install --global symbol-cli
    
  • 初回の Symbol Bootstrap の実行 ではイメージのダウンロードが必要です:

    symbol-bootstrap config -p mainnet -a <assembly> --noPassword
    rm -rf target
    

    この最初の実行の出力は使用しないため --noPassword を使用し、 target フォルダは削除します。

  • このマシンで秘密鍵を生成するため 設定マシンをインターネットから切断 します。

設定の作成

プロファイル

メインアカウントのプロファイルを作成 これはすべてのハーベスティング手数料を受け取り、ハーベスト時に インポータンススコア が使用されるアカウントです。

このガイドの目的は、アカウントの秘密鍵がオンラインマシン上で使用されないようにすることです

このステップでは、メインアカウントを保持し、その秘密鍵を使用してトランザクションに署名する symbol-cli プロファイルを作成します。マシンは現在オフラインなので、ネットワーク関連のデータを提供する必要があります。

注釈

以下のコマンドは、 新しい メインアカウントを作成することを前提に profile create コマンドを使用します。メインとして使用したい アカウント が既にある場合は、代わりに profile import コマンドを使用してください。

symbol-cli profile create --profile offline-main --default \
   --url http://localhost:3000 --network MAIN_NET \
   --generation-hash 57F7DA205008026C776CB6AED843393F04CD458E0AA2D9F1D5F31A402072B2D6 \
   --namespace-id symbol.xym --divisibility 6 \
   --epoch-adjustment 1615853185

プロンプトが表示されたら、プロファイルを保護するためのパスワードを入力して PrivateKey インポートタイプを選択します。

Enter your wallet password: … *********
Select an import type: › PrivateKey

Account
┌───────────────┬──────────────────────────────────────────────────────────────────────┐
│ PropertyValue                                                                │
├───────────────┼──────────────────────────────────────────────────────────────────────┤
│ Address       │ NCCE5O-BMZHWM-IYZKR6-4WZKFD-4P7DTS-IRXJZ2-3LI                        │
├───────────────┼──────────────────────────────────────────────────────────────────────┤
│ Public Key    │ 51C2CB98B61D666A993FA9B25EEBCB48DE5F0B1B7D8B79ECB7AFCB1E5E601108     │
├───────────────┼──────────────────────────────────────────────────────────────────────┤
│ Private Key   │ ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●     │
├───────────────┼──────────────────────────────────────────────────────────────────────┤
│ Password      │ ●●●●●●●●●                                                            │
└───────────────┴──────────────────────────────────────────────────────────────────────┘

SUCCESS Stored offline-main profile

symbol-cli が後に使用できるようになりました。すべてのトランザクションはメインアカウントが署名するため、 手数料 の支払いにいくらかの資産があることを確認してください。

メインアカウントの秘密鍵をメモして、安全な場所に保管してください

プリセット

Symbol Bootstrap 用に custom.yml と命名して カスタムプリセットファイル作成 します。これには最低でも次の行を含める必要があります:

privateKeySecurityMode: PROMPT_MAIN
nodes:
-
  mainPrivateKey: ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●

You can read more about these properties in the security mode section in Symbol Bootstrap's documentation.

If you have customizations to make, like enabling voting, you can provide them too:

privateKeySecurityMode: PROMPT_MAIN
nodes:
-
  mainPrivateKey: ●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●●
  voting: true
  host: my-symbol-node.com # Could also be an IP address

設定

Symbol Bootstrap を再度実行 今回は必要なすべてのパラメータを使用します:

symbol-bootstrap config -p mainnet -a <assembly> -c custom.yml

設定ファイル の暗号化に使用する パスワード の入力を求められます。

? Enter password to use to encrypt and decrypt custom presets, addresses.yml,
  and preset.yml files. When providing a password, private keys will be
  encrypted. Keep this password in a secure place! ******
info     Password has been provided
info     Generating config from preset testnet
info     Assembly preset dual
info     Generating Main account...
info     Generating Transport account...
info     Generating Remote account...
info     Generating VRF account...
info     User for docker resolved: 1000:1000
info     Running image using Exec: symbolplatform/symbol-server:tools-gcc-0.10.1.8 bash createNodeCertificates.sh
info     Certificate for node api-node created
info     Generating api-node server configuration
info     Generating api-broker broker configuration
info     Non-voting node api-node.
info     Configuration generated.

これにより、 addresses.yml ファイルと複数の構成ファイルを含む target ディレクトリが生成されます。

メインアカウントの秘密鍵は、これらのファイルのいずれにも存在しません

Symbol Bootstrap はデフォルトで リモートハーベスティング を有効にします。クライアント上で 平文テキストファイル内のメインの秘密鍵を使用することはない ということです。ノードとそのメインアカウント間のプロキシとして機能するリモートキーのみです。

設定をコピー

  • custom.yml を開いて mainPrivateKey が含まれる 行を削除して ください。

    すでに Symbol Bootstrap は config ステージで使用したので、そのような機密キーをプレーンテキストファイルに置く必要はありません。

  • 後で使用するので target ディレクトリ全体をペンドライブ (またはネットワークに繋がっていない媒体) に コピー します。

トランザクションの準備

オフラインの構成マシンで 一連のリンクトランザクションを手動で準備 します。これらのトランザクションは symbol-cli によって作成され、メインアカウントで署名し、後にアナウンスするためにオンラインマシンへ移動します。

次のコマンドでは全て、各トランザクションに 1 XYM を支払うことを意味する --max-fee 1000000 を使用します。 f手数料ドキュメント を理解しているなら、自由に異なる数字を使用してみてください。

Concerning deadlines

すべてのトランザクションには期限があるため、 期限を迎える前に アナウンス (そして承認) される必要があります。

There is currently a limitation in symbol-cli which sets this deadline to 2 hours after transaction creation, for all non-multisig transactions.

ペイロードのコピー

以前に target フォルダをコピーしたペンドライブに payloads.txt をコピーします。

マシンのオンライン

Move now to the online machine, the one that is permanently connected to the Internet and will host the node. Plug in the pen drive with the node configuration.

セットアップ

  • Symbol Bootstrap の使用 ガイドで示されるように Symbol Bootstrap をインストール します。

  • symbol-cli ガイドで示されるように Symbol CLI をインストール して、次のように実行します:

    npm install --global symbol-cli
    
  • Create an announcer profile for symbol-cli. This is only a temporary account used to announce the payloads; it does not require funds:

    Use the --url parameter to specify the NODE_URL to access the network.

    symbol-cli profile create --profile announcer --default \
       --network MAIN_NET \
       --url <NODE_URL>
    

    プロンプトが表示されたら、プロファイルを保護するためのパスワードを入力して PrivateKey インポートタイプを選択します。

    Enter your wallet password: ... *********
    Select an import type: » PrivateKey
    ...
    SUCCESS Stored announcer profile
    

ノードの開始

すべてのキーリンクトランザクションが承認されたら、ノードが設定され、最終的には起動することができます。

ディレクトリに移動 構成マシンからコピーした target ディレクトリを含めて、 ノードを開始 します:

symbol-bootstrap start

他のパラメータは必要なく、すでに設定は target ディレクトリにあり、 Symbol Bootstrap がそれを使用します。

ノードが起動すると多くのデバッグ出力が画面に表示されます。

info     Password has been provided
info     The generated preset target/preset.yml already exist, ignoring configuration. (run -r to reset or --upgrade to upgrade)
...

これでノードは 稼働中 になり、そのメイン秘密鍵が設定した (オフライン) マシンを離れることはありません。

For added security, you can now turn the node's main account into a マルチシグアカウント. This is useful, for example, for service providers that work in a non-custodial manner. Read about this process in the 非カストディアルなノードのセットアップ guide.