最終更新:
編集

Witnessサーバ

[ソース]

XChainBridge Amendment が必要です)

Witnessサーバは、ロックチェーンと発行チェーン間のトランザクションの中立的な監視人として機能します。このサーバはブリッジの両側のドアアカウントをリッスンし、トランザクションが発生したことを確認する証明書に署名します。サーバは基本的に、送金元アカウントで価値がロックまたはバーンされたことを"証明"するオラクルとして機能し、これにより受取人は送金先アカウントで同等の資金を(作成またはロック解除によって)請求することができます。

ロックチェーンと発行チェーンの間のブリッジは、その設定に以下の情報を含みます。

  • ブリッジ上のトランザクションを監視するWitnessサーバ。Witnessサーバは1つ以上選択できます。
  • Witnessサーバのサービス料金。

誰でもWitnessサーバを運用することができます。しかし、Witnessサーバの信頼性を評価する責任は発行チェーンの参加者にあります。Witnessサーバを実行する場合、rippledノードも実行し、Witnessサーバがアクセスする必要があるチェーンと同期させる必要があります。

注記: 発行チェーンは、最初は1台のWitnessサーバだけでブリッジを構成し、Witnessサーバ自体を実行することを選択できます。この戦略は、発行チェーンがまだマーケットで地位を確立していない初期に役立ちます。

Witnessサーバの設定

Witnessサーバはコマンドライン引数--confで指定されたJSON設定ファイルを受け取ります。

設定JSONの例

{
  "LockingChain": {
    "Endpoint": {
      "Host": "127.0.0.1",
      "Port": 6005
    },
    "TxnSubmit": {
      "ShouldSubmit": true,
      "SigningKeySeed": "shUe3eSgGK4e6xMFuCakZnxsMN1uk",
      "SigningKeyType": "ed25519",
      "SubmittingAccount": "rpFp36UHW6FpEcZjZqq5jSJWY6UCj3k4Es"
    },
    "RewardAccount": "rpFp36UHW6FpEcZjZqq5jSJWY6UCj3k4Es"
  },
  "IssuingChain": {
    "Endpoint": {
      "Host": "127.0.0.1",
      "Port": 6007
    },
    "TxnSubmit": {
      "ShouldSubmit": true,
      "SigningKeySeed": "shUe3eSgGK4e6xMFuCakZnxsMN1uk",
      "SigningKeyType": "ed25519",
      "SubmittingAccount": "rpFp36UHW6FpEcZjZqq5jSJWY6UCj3k4Es"
    },
    "RewardAccount": "rpFp36UHW6FpEcZjZqq5jSJWY6UCj3k4Es"
  },
  "RPCEndpoint": {
    "Host": "127.0.0.1",
    "Port": 6010
  },
  "DBDir": "/var/lib/witness/witness01/db",
  "LogFile": "/var/log/witness/witness01.log",
  "SigningKeySeed": "spkHEwDKeChm8PAFApLkF1E2sDs6t",
  "SigningKeyType": "ed25519",
  "XChainBridge": {
    "LockingChainDoor": "r3nCVTbZGGYoWvZ58BcxDmiMUU7ChMa1eC",
    "LockingChainIssue": {
      "currency": "XRP"
    },
    "IssuingChainDoor": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
    "IssuingChainIssue": {
      "currency": "XRP"
    }
  },
  "Admin": {
    "Username": "username01",
    "Password": "password01"
  }
}

設定のフィールド

フィールド名JSONの型必須?説明
AdminオブジェクトいいえWitnessサーバへの特権リクエスト用のUsernameフィールドとPasswordフィールド (文字列)。注記: adminフィールドは両方に設定、またはどちらも設定されていない必要があります。
IssuingChainオブジェクトはい発行チェーンと通信するためのパラメータ。
LockingChainオブジェクトはいロックチェーンと通信するためのパラメータ。
RPCEndpointオブジェクトはいWitnessサーバへのRPCリクエストのエンドポイント。
LogFile文字列はいログファイルの保存場所。
LogLevel文字列はいログファイルに保存するログのレベル。AllTraceDebugInfoWarningErrorFatalDisabledNoneのいずれかを指定します。
DBDir文字列はいデータベースが保存されているディレクトリの場所。
SigningKeySeed文字列はいWitnessサーバが証明書に署名する際に使用するシード。
SigningKeyType文字列はいSigningKeySeedのエンコードに使用するアルゴリズム。secp256k1ed25519のいずれかを指定します。
XChainBridgeXChainBridgeはいWitnessサーバが監視しているブリッジ。

IssuingChainとLockingChainのフィールド

フィールド名JSONの型必須?説明
Endpointオブジェクトはいチェーンと同期したrippledノードのWebSocketエンドポイント。注記: rippledノードとWitnessサーバは同じ人が操作する必要があります。
TxnSubmitオブジェクトはいチェーン上でトランザクションを送信するためのパラメータ。
RewardAccount文字列はいチェーン上でSignatureRewardの報酬の分配を受け取るアカウント。

Endpointのフィールド

フィールド名JSONの型必須?説明
Host文字列はいrippledノードのIPアドレス。注記: IPv4アドレスかURLを指定します。
Port文字列はいWebSocketエンドポイントのポート。

RPCEndpointのフィールド

フィールド名JSONの型必須?説明
Host文字列はいrippledノードのIPアドレス。注記: IPv4アドレスかURLを指定します。
Port文字列はいWebSocketエンドポイントのポート。

TxnSubmitのフィールド

フィールド名JSONの型必須?説明
ShouldSubmit真偽値はいWitnessサーバがロックチェーン上でトランザクションを提出すべきかどうかを示す真偽値。
SigningKeySeed文字列いいえWitnessサーバがロックチェーン上のトランザクションに署名する際に使用するシード。これはShouldSubmittrueの場合に必要です。
SigningKeyType文字列いいえSigningKeySeedのエンコードに使用するアルゴリズム。secp256k1ed25519のいずれかを指定します。これはShouldSubmittrueの場合に必要です。
SubmittingAccount文字列いいえXChainAddClaimAttestationXChainAddAccountCreateAttestationトランザクションを送信するアカウント。これはShouldSubmittrueの場合に必要です。

XChainBridgeのフィールド

フィールドJSONの型内部の型必須?説明
IssuingChainDoor文字列Accountはい発行チェーンのドアアカウント。XRP-XRPブリッジの場合、これはジェネシスアカウント(ネットワークが最初に開始されたときに作成されるアカウントで、すべてのXRPを含む)でなければなりません。
IssuingChainIssueIssueIssueはい発行チェーン上で作成され、バーンされる資産。IOU-IOUブリッジの場合、供給量の問題を避けるため、資産の発行者は発行チェーンのドアアカウントでなければなりません。
LockingChainDoor文字列Accountはいロックチェーンのドアアカウント。
LockingChainIssueIssueIssueはいロックチェーンでロック、アンロックされる資産。