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 | 文字列 | はい | ログファイルに保存するログのレベル。All 、Trace 、Debug 、Info 、Warning 、Error 、Fatal 、Disabled 、None のいずれかを指定します。 |
DBDir | 文字列 | はい | データベースが保存されているディレクトリの場所。 |
SigningKeySeed | 文字列 | はい | Witnessサーバが証明書に署名する際に使用するシード。 |
SigningKeyType | 文字列 | はい | SigningKeySeed のエンコードに使用するアルゴリズム。secp256k1 とed25519 のいずれかを指定します。 |
XChainBridge | XChainBridge | はい | 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サーバがロックチェーン上のトランザクションに署名する際に使用するシード。これはShouldSubmit がtrue の場合に必要です。 |
SigningKeyType | 文字列 | いいえ | SigningKeySeed のエンコードに使用するアルゴリズム。secp256k1 とed25519 のいずれかを指定します。これはShouldSubmit がtrue の場合に必要です。 |
SubmittingAccount | 文字列 | いいえ | XChainAddClaimAttestation とXChainAddAccountCreateAttestation トランザクションを送信するアカウント。これはShouldSubmit がtrue の場合に必要です。 |
XChainBridgeのフィールド
フィールド | JSONの型 | 内部の型 | 必須? | 説明 |
---|---|---|---|---|
IssuingChainDoor | 文字列 | Account | はい | 発行チェーンのドアアカウント。XRP-XRPブリッジの場合、これはジェネシスアカウント(ネットワークが最初に開始されたときに作成されるアカウントで、すべてのXRPを含む)でなければなりません。 |
IssuingChainIssue | Issue | Issue | はい | 発行チェーン上で作成され、バーンされる資産。IOU-IOUブリッジの場合、供給量の問題を避けるため、資産の発行者は発行チェーンのドアアカウントでなければなりません。 |
LockingChainDoor | 文字列 | Account | はい | ロックチェーンのドアアカウント。 |
LockingChainIssue | Issue | Issue | はい | ロックチェーンでロック、アンロックされる資産。 |