マルチ署名

マルチ署名は、複数のシークレットキーを組み合わせて使用してXRP Ledgerのトランザクションを承認する手法です。アドレスで有効な承認手法(マルチ署名、マスターキーペアレギュラーキーペアなど)を自由に組み合わせて使用できます。(唯一の要件は、 少なくとも1つの 手法を有効にする必要があることです。)

マルチ署名には次のメリットがあります。

  • 複数のデバイスからのキーを要求できます。これにより、不正使用者があなたの代わりにトランザクションを送信するには複数のマシンを悪用しなければならなくなります。
  • 複数のユーザー間で1つのアドレスの管理を共有できます。この場合、各ユーザーが、そのアドレスからトランザクションを送信する際に必要な複数のキーのいずれか1つだけを所有します。
  • あなたのアドレスからトランザクションを送信できる権限を、複数ユーザーのグループに委任できます。委任を受けた各ユーザーは、あなたが通常の方法で署名できない場合にあなたのアドレスを制御できます。
  • その他のメリットもあります。

署名者リスト

マルチ署名を使用するには、あなたの代理として署名できるアドレスのリストを作成する必要があります。

SignerListSetトランザクションは、あなたのアドレスからのトランザクションを承認できるアドレスを定義します。SignerListには最大8個のアドレスを指定できます。SignerListのquorum値とweight値を使用して、必要な署名の数と組み合わせを制御できます。

マルチ署名済みトランザクションの送信

マルチ署名済みトランザクションを正常に送信するには、以下のすべての条件を満たす必要があります。

  • トランザクションを送信するアドレス(Accountに指定されるアドレス)は、レジャーにSignerListを所有する必要があります。
  • トランザクションにSigningPubKeyフィールドを空の文字列として含める必要があります。
  • トランザクションに、署名の配列が指定されているSignersフィールドを含める必要があります。
  • Signers配列に含まれている署名は、SignerListで定義されている署名と一致している必要があります。
  • 指定された署名で、これらの署名者に関連付けられているweightの合計が、SignerListのquorum以上である必要があります。
  • トランザクションコストFeeフィールドで指定)は、通常のトランザクションコストの(N+1)倍以上である必要があります。このNは、指定される署名の数です。
  • トランザクションのすべてのフィールドは、署名収集前に定義する必要があります。フィールドの自動入力は実行できません。
  • Signers 配列がバイナリ形式で指定される場合、この配列は署名者アドレスの数値に基づいて、低い値から順にソートされている必要があります。(JSONとして提出される場合は、submit_multisignedメソッド がこの処理を自動的に実行します。)

詳細は、マルチ署名の設定を参照してください。