[JA] update multisig

This commit is contained in:
tequ
2023-03-26 14:18:22 +09:00
parent 9036769770
commit 8db06f1ebf
37 changed files with 162 additions and 119 deletions

View File

@@ -20,7 +20,7 @@ XRP Ledgerの「アカウント」は、XRPの所有者と[トランザクショ
- [トランザクションの承認](transaction-basics.html#トランザクションの承認)方法。以下に例を示します。
- アカウント固有のマスターキーのペア。([無効](accountset.html)にできますが、変更はできません。)
- [ローテーションで使用](setregularkey.html)できる「レギュラー」キーペア。
- [マルチ署名](multi-signing.html)の署名者のリスト。(アカウントのコアデータとは別に保存されます。)
- [マルチシグ](multi-signing.html)の署名者のリスト。(アカウントのコアデータとは別に保存されます。)
アカウントのコアデータは、レジャーのデータツリーの[AccountRoot](accountroot.html)レジャーのオブジェクトタイプに保存されます。アカウントは、他の複数のタイプのデータの所有者(または部分的な所有者)になることもできます。
@@ -102,9 +102,9 @@ XRP Ledgerでは、トランザクション取引履歴をトランザク
- `RippleState`オブジェクト(トラストライン)。アカウントに関連付けられています。
- `DirectoryNode`オブジェクト(特にアカウントの所有オブジェクトを追跡する所有者ディレクトリ)。
- `Offer`オブジェクト。分散型取引所でのアカウントの未処理の取引注文を表すオブジェクト。
- `PayChannel` アカウントとの間の非同期のPayment Channelを表すオブジェクト。
- `Escrow` 時間または暗号条件によってロックされ、アカウントとの間の保留中の支払いを表すオブジェクト。
- `SignerList` [マルチ署名](multi-signing.html)によってアカウントのトランザクションを承認できるアドレスのリストを表すオブジェクト。
- `PayChannel`アカウントとの間の非同期のPayment Channelを表すオブジェクト。
- `Escrow`時間または暗号条件によってロックされ、アカウントとの間の保留中の支払いを表すオブジェクト。
- `SignerList`[マルチシグ](multi-signing.html)によってアカウントのトランザクションを承認できるアドレスのリストを表すオブジェクト。
これらの各オブジェクトの詳細は、[レジャーフォーマットのリファレンス](ledger-data-formats.html)を参照してください。

View File

@@ -38,7 +38,7 @@ XRP Ledgerでは、[トランザクション](transaction-basics.html)による
**シード**
_シード_ 値は、アカウントの実際の秘密鍵(および公開鍵)を[導出する](#鍵導出)ために使用されるコンパクトな値です。`master_key``master_seed`、および`master_seed_hex`はすべて、同じシード値を表しますが、フォーマットが異なります。これらのいずれのフォーマットも、[`rippled` API](http-websocket-apis.html)や[その他のXRPLソフトウェア](software-ecosystem.html)で[トランザクションに署名](transaction-basics.html#トランザクションへの署名とトランザクションの送信)するときに使用することができます。キーの先頭に`master_`が付いていますが、このシードが表すキーが必ずしもアカウントのマスターキーであるとは限りません。キーペアは、レギュラーキーだけでなく、マルチ署名のリストのメンバーとしても使用できます。
_シード_ 値は、アカウントの実際の秘密鍵(および公開鍵)を[導出する](#鍵導出)ために使用されるコンパクトな値です。`master_key``master_seed`、および`master_seed_hex`はすべて、同じシード値を表しますが、フォーマットが異なります。これらのいずれのフォーマットも、[`rippled` API](http-websocket-apis.html)や[その他のXRPLソフトウェア](software-ecosystem.html)で[トランザクションに署名](transaction-basics.html#トランザクションへの署名とトランザクションの送信)するときに使用することができます。キーの先頭に`master_`が付いていますが、このシードが表すキーが必ずしもアカウントのマスターキーであるとは限りません。キーペアは、レギュラーキーだけでなく、マルチシグのリストのメンバーとしても使用できます。
シード値はアカウントのその他のあらゆる情報の基盤であるため、慎重に保護する必要があります。アドレスのシード値を知っている人なら誰でも、事実上そのアドレスを完全に制御できます。

View File

@@ -1,16 +1,16 @@
---
html: multi-signing.html
parent: accounts.html
blurb: マルチ署名を使用することで、トランザクション送信時のセキュリティが強化されます。
blurb: マルチシグを使用することで、トランザクション送信時のセキュリティが強化されます。
labels:
- スマートコントラクト
- セキュリティ
---
# マルチ署名
# マルチシグ
マルチ署名は、複数のシークレットキーを組み合わせて使用してXRP Ledgerの[トランザクションを承認する](transaction-basics.html#トランザクションの承認)手法です。アドレスで有効な承認手法(マルチ署名、[マスターキーペア](cryptographic-keys.html#マスターキーペア)、[レギュラーキーペア](cryptographic-keys.html#レギュラーキーペア)など)を自由に組み合わせて使用できます。(唯一の要件は、 _少なくとも1つの_ 手法を有効にする必要があることです。)
マルチシグは、複数のシークレットキーを組み合わせて使用してXRP Ledgerの[トランザクションを承認する](transaction-basics.html#トランザクションの承認)手法です。アドレスで有効な承認手法(マルチシグ、[マスターキーペア](cryptographic-keys.html#マスターキーペア)、[レギュラーキーペア](cryptographic-keys.html#レギュラーキーペア)など)を自由に組み合わせて使用できます。(唯一の要件は、 _少なくとも1つの_ 手法を有効にする必要があることです。)
マルチ署名には次のメリットがあります。
マルチシグには次のメリットがあります。
* 複数のデバイスからのキーを要求できます。これにより、不正使用者があなたの代わりにトランザクションを送信するには複数のマシンを悪用しなければならなくなります。
* 複数のユーザー間で1つのアドレスの管理を共有できます。この場合、各ユーザーが、そのアドレスからトランザクションを送信する際に必要な複数のキーのいずれか1つだけを所有します。
@@ -19,25 +19,68 @@ labels:
## 署名者リスト
マルチ署名を使用するには、あなたの代理として署名できるアドレスのリストを作成する必要があります。
マルチシグを使用するには、あなたの代理として署名できるアドレスのリストを作成する必要があります。
[SignerListSetトランザクション][]は、あなたのアドレスからのトランザクションを承認できるアドレスを定義します。SignerListには最大8個のアドレスを指定できます。SignerListのquorum値とweight値を使用して、必要な署名の数と組み合わせを制御できます。
[SignerListSetトランザクション][]は、_署名者リスト_自分のアドレスからのトランザクションを承認できるアドレスのセット)を定義します。署名者リストには、132のアドレスを含めることができます。このリストには、自分のアドレスを含めることはできず、重複して登録することはできません。リストの _Signer Weight__Quorum_ の設定を使用することで、どのような組み合わせでどれだけの署名が必要かを制御することができます。
## マルチ署名済みトランザクションの送信
_([ExpandedSignerList amendment][]により更新されました。)_
マルチ署名済みトランザクションを正常に送信するには、以下のすべての条件を満たす必要があります。
### Signer Weight
* トランザクションを送信するアドレス(`Account`に指定されるアドレス)は、[レジャーに`SignerList`](signerlist.html)を所有する必要があります
リスト内の各署名者にウェイトを割り当てます。ウェイトは、リスト上の他の署名者と比較して、その署名者の相対的な権限を表します。値が高いほど、より多くの権限を持つことになります。個々のウェイト値は、2<sup>16</sup>-1を超えることはできません
### Quorum
リストの定足数(quorum)の値は、トランザクションを承認するために必要な最小のウェイト合計です。クォーラムは0より大きく、署名者リストのウェイト値の合計以下でなければならない。つまり、与えられた署名者のウェイトでクォーラムを達成することが可能でなければなりません。
### Wallet Locator
また、リスト内の各署名者のエントリに最大256ビットの任意のデータを追加することができます。このデータはネットワークで必要とされたり使用されたりすることはありませんが、スマートコントラクトや他のアプリケーションが署名者に関する他のデータを特定したり確認したりするために使用することができます。
_([ExpandedSignerList amendment][]によって追加されました。)_
### Signer WeightとQuorumの使用例
ウェイトと定足数により、アカウントを管理する責任ある参加者への相対的な信頼と権限に基づき、トランザクションごとに適切なレベルの監視を設定することができます。
共有アカウントのユースケースの場合、定足数1のリストを作成し、すべての参加者に1のウェイトを与えることができます。
非常に重要なアカウントの場合、定足数を3に設定し、重みを1とする3人の参加者を設定することができます。すべての参加者がトランザクションごとに同意して承認する必要があります。
CEOのウェイトを3、副社長3人のウェイトを各2、取締役3人のウェイトを各1に割り当てたとする。このアカウントのトランザクションを承認するには、取締役3名全員合計ウェイト3、副社長1名と取締役1名合計ウェイト3、副社長2名合計ウェイト4、またはCEO合計ウェイト3の承認が必要となります。
先の3つのユースケースでは、レギュラーキーを設定せずにマスターキーを無効にすることで、マルチシグが唯一の[トランザクションの承認](transaction-basics.html#authorizing-transactions)の方法となるようにします。
"バックアッププラン"としてマルチシグリストを作成するシナリオがあるかもしれません。アカウント所有者は、通常、トランザクションにレギュラーキー(マルチシグではない)を使用します。もしアカウント所有者が秘密鍵を紛失した場合、通常の鍵に代わるトランザクションにマルチシグするよう友人に依頼することができます。
## マルチシグトランザクションの送信
マルチシグトランザクションを正常に送信するには、以下のすべての条件を満たす必要があります。
* トランザクションを送信するアドレス(`Account`に指定されるアドレス)は、[レジャーに`SignerList`](signerlist.html)を所有する必要があります。この方法については、[マルチシグを設定する](set-up-multi-signing.html)を参照してください。
* トランザクションに`SigningPubKey`フィールドを空の文字列として含める必要があります。
* トランザクションに、署名の配列が指定されている[`Signers`フィールド](transaction-common-fields.html#signersフィールド)を含める必要があります。
* `Signers`配列に含まれている署名は、SignerListで定義されている署名と一致している必要があります。
* 指定された署名で、これらの署名者に関連付けられている`weight`の合計が、SignerListの`quorum`以上である必要があります。
* `Signers`配列に含まれている署名は、`SignerList`で定義されている署名と一致している必要があります。
* 指定された署名で、これらの署名者に関連付けられている`weight`の合計が、`SignerList``quorum`以上である必要があります。
* [トランザクションコスト](transaction-cost.html)`Fee`フィールドで指定は、通常のトランザクションコストのN+1倍以上である必要があります。このNは、指定される署名の数です。
* トランザクションのすべてのフィールドは、署名収集前に定義する必要があります。フィールドの[自動入力](transaction-common-fields.html#自動入力可能なフィールド)は実行できません。
* `Signers` 配列がバイナリ形式で指定される場合、この配列は署名者アドレスの数値に基づいて、低い値から順にソートされている必要があります。JSONとして提出される場合は、[submit_multisignedメソッド][] がこの処理を自動的に実行します。)
* `Signers`配列がバイナリ形式で指定される場合、この配列は署名者アドレスの数値に基づいて、低い値から順にソートされている必要があります。JSONとして提出される場合は、[submit_multisignedメソッド][]がこの処理を自動的に実行します。)
詳細は、[マルチ署名の設定](set-up-multi-signing.html)を参照してください。
詳細は、[マルチシグの設定](set-up-multi-signing.html)を参照してください。
## 関連項目
- **チュートリアル:**
- [マルチシグを設定する](set-up-multi-signing.html)
- [マルチシグトランザクションを送信する](send-a-multi-signed-transaction.html)
- **コンセプト:**
- [暗号鍵](cryptographic-keys.html)
- [マルチシグトランザクションの特別なトランザクションコスト](transaction-cost.html#特別なトランザクションコスト)
- **リファレンス:**
- [SignerListSetトランザクション][]
- [SignerListオブジェクト](signerlist.html)
- [sign_forメソッド][]
- [submit_multisignedメソッド][]
{% include '_snippets/rippled-api-links.md' %}
{% include '_snippets/tx-type-links.md' %}

View File

@@ -60,7 +60,7 @@ XRP Ledgerのチケットは、取引をすぐに送信せずに、その取引
- **Concepts:**
- [マルチ署名](multi-signing.html)
- [マルチシグ](multi-signing.html)
- **Tutorials:**
- [チケットを使用する](use-tickets.html)
- **References:**