From be15bc4d02c6ba3a54d820ac06b5eb416f06b7ff Mon Sep 17 00:00:00 2001 From: mDuo13 Date: Tue, 12 Apr 2016 14:04:08 -0700 Subject: [PATCH] multisign - tx&ledger format improvements --- content/reference-ledger-format.md | 2 +- content/reference-transaction-format.md | 11 +++++++++++ reference-ledger-format.html | 2 +- reference-transaction-format.html | 11 +++++++++++ 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/content/reference-ledger-format.md b/content/reference-ledger-format.md index 1f323f4dd8..4ec642e406 100644 --- a/content/reference-ledger-format.md +++ b/content/reference-ledger-format.md @@ -408,7 +408,7 @@ The `index` of a RippleState node is the SHA-512Half of the following values put ## SignerList ## [[Source]
](https://github.com/ripple/rippled/blob/6d2e3da30696bd10e3bb11a5ff6d45d2c4dae90f/src/ripple/protocol/impl/LedgerFormats.cpp#L127 "Source") -The `SignerList` node type represents a list of parties that, as a group, are authorized to sign a transaction in place of an individual account. This node type is introduced by the [MultiSign amendment](concept-amendments.html#multisign). _(New in [version 0.31.0][])_ +The `SignerList` node type represents a list of parties that, as a group, are authorized to sign a transaction in place of an individual account. You can create, replace, or remove a SignerList using the [SignerListSet transaction type](reference-transaction-format.html#signerlistset) This node type is introduced by the [MultiSign amendment](concept-amendments.html#multisign). _(New in [version 0.31.0][])_ Example SignerList node: diff --git a/content/reference-transaction-format.md b/content/reference-transaction-format.md index 0153d5adb4..5bc199974a 100644 --- a/content/reference-transaction-format.md +++ b/content/reference-transaction-format.md @@ -191,6 +191,17 @@ Multi-signing in Ripple is the act of [authorizing transactions](#authorizing-tr The [SignerListSet transaction](#signerlistset) defines which addresses can authorize transactions from your address. You can include up to 8 addresses in a SignerList. You can control how many signatures are needed, in which combinations, by using the quorum and weight values of the SignerList. +To successfully submit a multi-signed transaction, you must do all of the following: + +* The address sending the transaction (specified in the `Account` field) must own a [`SignerList` in the ledger](reference-ledger-format.html#signerlist). +* The transaction must include the `SigningPubKey` field as an empty string. +* The transaction must include a [`Signers` field](#signers-field) containing an array of signatures. +* The signatures present in the `Signers` array must match signers defined in the SignerList. +* For the provided signatures, the total `weight` associated with those signers must be equal or greater than the `quorum` for the SignerList. +* The [transaction cost](concept-transaction-cost.html) (specified in the `Fee` field) must be at least (N+1) times the normal transaction cost, where N is the number of signatures provided. +* All fields of the transaction must be defined before collecting signatures. You cannot [auto-fill](#auto-fillable-fields) any fields. +* If presented in binary form, the `Signers` array must be sorted based on the numeric value of the signer addresses, with the lowest value first. (If submitted as JSON, the [`submit_multisigned` command](reference-rippled.html#submit-multisigned) handles this automatically.) + For more information, see [How to Multi-Sign](tutorial-multisign.html). diff --git a/reference-ledger-format.html b/reference-ledger-format.html index 2d4e79b3ae..beed515048 100644 --- a/reference-ledger-format.html +++ b/reference-ledger-format.html @@ -985,7 +985,7 @@

SignerList

[Source]

-

The SignerList node type represents a list of parties that, as a group, are authorized to sign a transaction in place of an individual account. This node type is introduced by the MultiSign amendment. (New in [version 0.31.0][])

+

The SignerList node type represents a list of parties that, as a group, are authorized to sign a transaction in place of an individual account. You can create, replace, or remove a SignerList using the SignerListSet transaction type This node type is introduced by the MultiSign amendment. (New in [version 0.31.0][])

Example SignerList node:

{
     "Flags": 0,
diff --git a/reference-transaction-format.html b/reference-transaction-format.html
index b34b094c43..206b7ba4e3 100644
--- a/reference-transaction-format.html
+++ b/reference-transaction-format.html
@@ -304,6 +304,17 @@
 

Multi-Signing

Multi-signing in Ripple is the act of authorizing transactions for the Ripple Consensus Ledger by using a combination of multiple secret keys. Multi-signing is due to be enabled by an Amendment to the Ripple Consensus Protocol. You can have any combination of authorization methods enabled for your address, including multi-signing, a master key, and a regular key. (The only requirement is that at least one method must be enabled.)

The SignerListSet transaction defines which addresses can authorize transactions from your address. You can include up to 8 addresses in a SignerList. You can control how many signatures are needed, in which combinations, by using the quorum and weight values of the SignerList.

+

To successfully submit a multi-signed transaction, you must do all of the following:

+
    +
  • The address sending the transaction (specified in the Account field) must own a SignerList in the ledger.
  • +
  • The transaction must include the SigningPubKey field as an empty string.
  • +
  • The transaction must include a Signers field containing an array of signatures.
  • +
  • The signatures present in the Signers array must match signers defined in the SignerList.
  • +
  • For the provided signatures, the total weight associated with those signers must be equal or greater than the quorum for the SignerList.
  • +
  • The transaction cost (specified in the Fee field) must be at least (N+1) times the normal transaction cost, where N is the number of signatures provided.
  • +
  • All fields of the transaction must be defined before collecting signatures. You cannot auto-fill any fields.
  • +
  • If presented in binary form, the Signers array must be sorted based on the numeric value of the signer addresses, with the lowest value first. (If submitted as JSON, the submit_multisigned command handles this automatically.)
  • +

For more information, see How to Multi-Sign.

Reliable Transaction Submission

Reliably submitting transactions is the process of achieving both of the following: