Simple multisigning (RIPD-182):

With this changeset two-level multisigning is removed from the
codebase and replaced with single-level multisigning.

Additionally, SignerLists in the ledger are prepared for the
possibility of multiple SignerLists per account.  This was done
by adding a defaulted 32-bit SignerListID to each SignerList.
The SignerListIndex calculation incorporates the SignerListID.

There are three known missing elements:

 1. Multisigned transactions should require higher fees than
    regular (single-signed) transaction.  That's not yet
    implemented.

 2. It should be possible to disable the master key on an account
    if that account is multisign enabled (has a signer list).
    That's not yet implemented.

 3. Documentation about multisigning needs to be improved.

Multisigning is still compiled out of the code base.  To enable
multisigning for a stand-alone rippled, change the
RIPPLE_ENABLE_MULTI_SIGN macro (in BeastConfig.h) to "1" and
rebuild.

This commit also addresses:
 o RIPD-912: Remove multisign APIs from STObject, and
 o RIPD-944: Replace common_transactor with jtx at call sites.
This commit is contained in:
Scott Schurr
2015-06-22 10:49:03 -07:00
committed by Nik Bougalis
parent ceeb36039e
commit 9e69bd5c56
33 changed files with 851 additions and 3323 deletions

View File

@@ -80,14 +80,13 @@ R"({
{
"",
"",
"Missing field 'signing_for'.",
"Missing field 'tx_json.Sequence'.",
"Missing field 'tx_json.Sequence'."}},
{ "Pass in Sequence.",
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"tx_json": {
"Sequence": 0,
@@ -107,7 +106,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"tx_json": {
"Sequence": 0,
@@ -128,7 +126,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"fee_mult_max": 7,
"tx_json": {
@@ -149,7 +146,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"fee_mult_max": 0,
"tx_json": {
@@ -171,7 +167,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"fee_mult_max": "NotAFeeMultiplier",
"tx_json": {
@@ -192,7 +187,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"fee_mult_max": 0,
"tx_json": {
@@ -213,7 +207,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"tx_json": {
"Account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
@@ -231,7 +224,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"tx_json": {
"Account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
@@ -250,7 +242,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"tx_json": {
"Account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
@@ -268,7 +259,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"tx_json": {
"Account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
@@ -287,7 +277,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"build_path": 1,
"tx_json": {
@@ -307,7 +296,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"build_path": 1,
"tx_json": {
@@ -331,7 +319,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"build_path": 1,
"tx_json": {
@@ -356,7 +343,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"build_path": 1,
"tx_json": {
@@ -385,7 +371,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"build_path": 1,
"tx_json": {
@@ -410,7 +395,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"tx_json": {
"Account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"Amount": "1000000000",
@@ -428,7 +412,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "",
"tx_json": {
"Account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
@@ -447,7 +430,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"rx_json": {
"Account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
@@ -466,7 +448,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"tx_json": {
"Account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
@@ -484,7 +465,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"tx_json": {
"Account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
@@ -503,7 +483,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"tx_json": {
"Account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
@@ -522,7 +501,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"tx_json": {
"Amount": "1000000000",
@@ -540,7 +518,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"tx_json": {
"Account": "NotAnAccount",
@@ -559,7 +536,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"offline": 0,
"tx_json": {
@@ -579,7 +555,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"offline": 1,
"tx_json": {
@@ -599,7 +574,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"offline": 1,
"tx_json": {
@@ -620,7 +594,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"tx_json": {
"Flags": 0,
@@ -640,7 +613,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"tx_json": {
"Flags": "NotGoodFlags",
@@ -660,7 +632,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"debug_signing": 0,
"tx_json": {
@@ -680,7 +651,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"tx_json": {
"Account": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
@@ -696,13 +666,12 @@ R"({
"",
"",
"",
"Missing field 'MultiSigners'."}},
"Missing field 'Signers'."}},
{ "Missing 'Account' in sign_for.",
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"tx_json": {
"Amount": "1000000000",
@@ -723,7 +692,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"tx_json": {
"Account": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
@@ -744,7 +712,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"tx_json": {
"Account": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
@@ -765,7 +732,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"tx_json": {
"Account": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
@@ -786,7 +752,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"tx_json": {
"Account": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
@@ -807,7 +772,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"tx_json": {
"Account": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
@@ -828,7 +792,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"tx_json": {
"Account": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
@@ -850,7 +813,6 @@ R"({
R"({
"command": "doesnt_matter",
"account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"signing_for": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
"secret": "masterpassphrase",
"tx_json": {
"Account": "rnUy2SHTrB9DubsPmkJZUXTf5FcNDGrYEA",
@@ -870,19 +832,12 @@ R"({
{ "Minimal submit_multisigned.",
R"({
"command": "submit_multisigned",
"MultiSigners": [
"Signers": [
{
"SigningFor": {
"Account": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
"SigningAccounts": [
{
"SigningAccount": {
"Account": "rPcNzota6B8YBokhYtcTNqQVCngtbnWfux",
"MultiSignature": "3045022100F9ED357606932697A4FAB2BE7F222C21DD93CA4CFDD90357AADD07465E8457D6022038173193E3DFFFB5D78DD738CC0905395F885DA65B98FDB9793901FE3FD26ECE",
"SigningPubKey": "02FE36A690D6973D55F88553F5D2C4202DE75F2CF8A6D0E17C70AC223F044501F8"
}
}
]
"Signer": {
"Account": "rPcNzota6B8YBokhYtcTNqQVCngtbnWfux",
"TxnSignature": "3045022100F9ED357606932697A4FAB2BE7F222C21DD93CA4CFDD90357AADD07465E8457D6022038173193E3DFFFB5D78DD738CC0905395F885DA65B98FDB9793901FE3FD26ECE",
"SigningPubKey": "02FE36A690D6973D55F88553F5D2C4202DE75F2CF8A6D0E17C70AC223F044501F8"
}
}
],