Ripple(瑞波)多重签名

介绍

您可以将一个“SignerList”添加到Ripple帐户,以便签名的法定人数可以授权帐户的交易。SignerList具有与常规密钥相同的权限级别。(基本上,除了禁用主密钥或执行全局冻结之外,它可以执行所有操作。)您可以使用SignerList以及其他授权方法,也可以禁用主密钥并删除任何常规密钥,以便SignerList是唯一的授权账户交易的方式。如前所述,该帐户必须至少保留一种授权交易的方法。

SignerList的成员可以是“实际的”Ripple帐户或“幻影”帐户(未在分类账中出资的地址)。如果所引用的帐户存在于分类帐中,则可以使用常规密钥(如果已定义密钥)或主密钥(除非它被禁用)为多重签名的交易提供签名。如果该帐户不存在,则只能使用主密钥进行签名。即使引用的帐户启用了SignerList,多重签名中的每个成员都必须是单个签名,而不是另一个多重签名。

主要用例:

  • 双因素认证
    • 可能需要多个设备来授权交易。
  • 组管理一个Ripple帐户。
    • 包括必须合作签署交易的自动化流程组。只要这些流程的法定人数不受影响,账户就不会受到影响。

注意事项:

  • 如果有人更改其常规密钥或禁用其主密钥,则其未完成签名可能失效。他们需要构建新的签名。

协议更改:

  • 分类账中的新节点类型“SignerList”,它由一个账户拥有,并包含可签名的账户列表。
    • 一个帐户最多可以有1个SignerList。
    • SignerList中的每个成员都有一个权重值。
    • SignerList具有法定值。签名者的权重必须等于或大于授权交易的法定人数。
    • 重量和法定人数共同允许允许多个签名(如“所有成员”,“任何3个成员”,“任何两个成员加上特定成员”等等)的灵活要求。
    • 一个SignerList必须至少有一个成员和不超过八个成员。
  • 新的交易类型“SignerListSet”,它为账户指定一个SignerList提供了一种方式。
    • SignerListSet没有特殊的交易费用要求
    • SignerListSet可以添加,替换或从帐户中删除SignerList。
  • AccountSetSetRegularKey事务被修改,以便您可以禁用主密钥并在SignerList可用时删除常规密钥。
  • 多签名事务与常规密钥签名事务具有相同的权限级别。他们不能禁用主密钥,但他们可以重新启用它。
    • 任何其他交易都可以进行多重签名。


费用

像往常一样,如果发送账户可以支付XRP费用,则波动服务器仅分发候选交易。多签名交易需要更大的XRP费用进行分配。如果简单签名交易的网络费用为N XRP,那么多签名交易需要为其中的每个签名添加N个XRP。

例如:如果当前的网络费用是12,000个XRP,则由3个签名签署的交易需要(3 + 1)* N = 48,000个下降。

SignerListSet交易具有正常费用。

储量

像往常一样,账户拥有的分类帐中的节点有助于该账户的XRP储备金要求。SignerList节点需要比Offer或RippleState(Trust Line)节点更大的预留。SignerList本身对所有者数量贡献2,并且SignerList的每个成员都为业主数量增加了另一个1。所有者储备是N XRP乘以所有者数量。

例如:如果“所有者保留”为每个项目5个XRP,则包含8个成员的SignerList需要保留(2 + 8)* N = 50个XRP。具有1个成员的SignerList需要(2 + 1)* N = 15个XRP的保留。

不包含

Ripple中已经讨论过的多特征的许多特征不包括在多重签名的第一阶段。这些功能将不包含在初始功能集中,但仍可能在未来版本中考虑。

  • 门票 - 在您收集签名时为交易保留一个位置
  • 关于需要额外签名的未决交易的分类账通信
  • 多级多重签名:使用多重签名作为多重签名的成员。
  • 多个签署者列表为单个帐户
  • 用于多重签名的细粒度权限

如何多重签名

多重签名是授权XRP分类帐交易的三种方式之一,同时还可以使用常规密钥和主密钥进行签名您可以配置您的地址以允许这三种方法的任意组合来授权交易。

多重签署的好处包括:

  • 您可以要求使用不同设备上的密钥,以便恶意角色必须妥协多台机器才能代表您发送交易。
  • 您可以在多人之间分享地址的监管权限,每个人只能从该地址发送交易所必需的几个密钥之一。
  • 您可以委派从您的地址发送交易到一组人员的权力,如果您不可用或无法正常签署,他们可以控制您的地址。
  • ... 和更多。

要使用多重签名:

  1. XRP分类帐对等网络必须启用多重签名。
  2. 在您的帐户中设置一个签名者列表。
  3. 使用多个签名发送交易。

多签名的可用性

自2016年6月27日起对XRP总账协议修订已启用多重签名

如果您想要rippled独立模式下使用新帐本进行多重签名,则必须强制启用MultiSign功能。您可以使用该feature命令检查MultiSign修订版的状态

要强制启用多重签名功能,请将以下节添加到您的rippled.cfg

[features]
MultiSign

设置多重签名

要对来自特定地址的交易进行多重签名,您必须创建一个地址列表,以便为您的地址提供多重签名。该列表作为SignerList节点存储在XRP分类帐中以下过程演示如何为您的地址设置SignerList:

1.准备一个受资助的地址

您需要一个可以发送交易的XRP分类帐地址,并且有足够的XRP可用。对于账户储备交易成本而言多重签名要求的XRP的数量通常要多于您使用的签名者和签名的数量。

如果您rippled独立模式开始创建新的分类账,您必须:

  1. 为新地址生成密钥,或重新使用已拥有的密钥。
  2. 提交支付交易以资助创建帐户中的新地址。(发送至少100,000,000 滴XRP。)
  3. 手动关闭分类帐。

2.准备成员密钥

您需要多组XRP分类帐密钥(地址和秘密)才能包含为您的SignerList的成员。这些可以是分类帐中存在的资金地址,也可以使用该wallet_propose命令生成新地址例如:

$ rippled wallet_propose
Loading: "/home/mduo13/.config/ripple/rippled.cfg"
Connecting to 127.0.0.1:5005
{
    "result" : {
        "account_id" : "rnRJ4dpSBKDR2M1itf4Ah6tZZm5xuNZFPH",
        "key_type" : "secp256k1",
        "master_key" : "FLOG SEND GOES CUFF GAGE FAT ANTI DEL GUM TIRE ISLE BEAR",
        "master_seed" : "snheH5UUjU4CWqiNVLny2k21TyKPC",
        "master_seed_hex" : "A9F859765EB8614D26809836382AFB82",
        "public_key" : "aBR4hxFXcDNHnGYvTiqb2KU8TTTV1cYV9wXTAuz2DjBm7S8TYEBU",
        "public_key_hex" : "03C09A5D112B393D531E4F092E3A5769A5752129F0A9C55C61B3A226BB9B567B9B",
        "status" : "success"
    }
}

记下您生成的每个人account_id(XRP分类帐地址)和master_seed(密钥)。

3.发送SignerListSet事务

签署并提交一个SignerListSet交易正常(单签名)的方式。这将一个SignerList与您的XRP分类帐地址关联,以便来自该SignerList成员的签名组合可以代表您以后多次签署交易。

在本例中,SignerList有3个成员,设置权重和法定人数,使得多重签名的交易需要来自rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW的签名以及来自列表的其他两个成员的至少一个签名。

警告:切勿将密钥提交给不受控制的服务器。不要通过网络发送未加密的密钥。

$ rippled submit shqZZy2Rzs9ZqWTCQAdqc3bKgxnYq '{
>     "Flags": 0,
>     "TransactionType": "SignerListSet",
>     "Account": "rnBFvgZphmN39GWzUJeUitaP22Fr9be75H",
>     "Fee": "10000",
>     "SignerQuorum": 3,
>     "SignerEntries": [
>         {
>             "SignerEntry": {
>                 "Account": "rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW",
>                 "SignerWeight": 2
>             }
>         },
>         {
>             "SignerEntry": {
>                 "Account": "rUpy3eEg8rqjqfUoLeBnZkscbKbFsKXC3v",
>                 "SignerWeight": 1
>             }
>         },
>         {
>             "SignerEntry": {
>                 "Account": "raKEEVSGnKSD9Zyvxu4z6Pqpm4ABH8FS6n",
>                 "SignerWeight": 1
>             }
>         }
>     ]
> }'
Loading: "/home/mduo13/.config/ripple/rippled.cfg"
Connecting to 127.0.0.1:5005
{
   "result" : {
      "engine_result" : "tesSUCCESS",
      "engine_result_code" : 0,
      "engine_result_message" : "The transaction was applied. Only final in a validated ledger.",
      "status" : "success",
      "tx_blob" : "12000C2200000000240000000120230000000368400000000000271073210303E20EC6B4A39A629815AE02C0A1393B9225E3B890CAE45B59F42FA29BE9668D74473045022100BEDFA12502C66DDCB64521972E5356F4DB965F553853D53D4C69B4897F11B4780220595202D1E080345B65BAF8EBD6CA161C227F1B62C7E72EA5CA282B9434A6F04281142DECAB42CA805119A9BA2FF305C9AFA12F0B86A1F4EB1300028114204288D2E47F8EF6C99BCC457966320D12409711E1EB13000181147908A7F0EDD48EA896C3580A399F0EE78611C8E3E1EB13000181143A4C02EA95AD6AC3BED92FA036E0BBFB712C030CE1F1",
      "tx_json" : {
         "Account" : "rnBFvgZphmN39GWzUJeUitaP22Fr9be75H",
         "Fee" : "10000",
         "Flags" : 0,
         "Sequence" : 1,
         "SignerEntries" : [
            {
               "SignerEntry" : {
                  "Account" : "rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW",
                  "SignerWeight" : 2
               }
            },
            {
               "SignerEntry" : {
                  "Account" : "rUpy3eEg8rqjqfUoLeBnZkscbKbFsKXC3v",
                  "SignerWeight" : 1
               }
            },
            {
               "SignerEntry" : {
                  "Account" : "raKEEVSGnKSD9Zyvxu4z6Pqpm4ABH8FS6n",
                  "SignerWeight" : 1
               }
            }
         ],
         "SignerQuorum" : 3,
         "SigningPubKey" : "0303E20EC6B4A39A629815AE02C0A1393B9225E3B890CAE45B59F42FA29BE9668D",
         "TransactionType" : "SignerListSet",
         "TxnSignature" : "3045022100BEDFA12502C66DDCB64521972E5356F4DB965F553853D53D4C69B4897F11B4780220595202D1E080345B65BAF8EBD6CA161C227F1B62C7E72EA5CA282B9434A6F042",
         "hash" : "3950D98AD20DA52EBB1F3937EF32F382D74092A4C8DF9A0B1A06ED25200B5756"
      }
   }
}

确保交易结果tesSUCCESS否则,交易失败。如果您在独立模式或非生产网络中遇到问题,请检查是否启用多重符号

注意:SignerList中的成员越多,您的地址必须拥有的XRP就越多,以用于所有者预留如果您的地址没有足够的XRP,则交易将失败,并显示tecinsuFFICIENT_RESERVE另见:签名者列表和储备

4.关闭分类帐

在实时网络上,您可以等待4-7秒让分类账自动关闭。

如果您rippled以独立模式运行,请使用该ledger_accept命令手动关闭分类帐:

$ rippled ledger_accept
Loading: "/home/mduo13/.config/ripple/rippled.cfg"
Connecting to 127.0.0.1:5005
{
   "result" : {
      "ledger_current_index" : 6,
      "status" : "success"
   }
}

5.确认新的签名者列表

使用该account_objects命令确认SignerList与最新验证分类帐中的地址相关联。

通常,一个账户可以拥有不同类型的许多对象(例如信任线和优惠)。如果您为本教程提供了一个新地址,则SignerList是响应中的唯一对象。

$ rippled account_objects rEuLyBCvcw4CFmzv8RepSiAoNgF8tTGJQC validated
Loading: "/home/mduo13/.config/ripple/rippled.cfg"
Connecting to 127.0.0.1:5005
{
   "result" : {
      "account" : "rEuLyBCvcw4CFmzv8RepSiAoNgF8tTGJQC",
      "account_objects" : [
         {
            "Flags" : 0,
            "LedgerEntryType" : "SignerList",
            "OwnerNode" : "0000000000000000",
            "PreviousTxnID" : "8FDC18960455C196A8C4DE0D24799209A21F4A17E32102B5162BD79466B90222",
            "PreviousTxnLgrSeq" : 5,
            "SignerEntries" : [
               {
                  "SignerEntry" : {
                     "Account" : "rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW",
                     "SignerWeight" : 2
                  }
               },
               {
                  "SignerEntry" : {
                     "Account" : "raKEEVSGnKSD9Zyvxu4z6Pqpm4ABH8FS6n",
                     "SignerWeight" : 1
                  }
               },
               {
                  "SignerEntry" : {
                     "Account" : "rUpy3eEg8rqjqfUoLeBnZkscbKbFsKXC3v",
                     "SignerWeight" : 1
                  }
               }
            ],
            "SignerListID" : 0,
            "SignerQuorum" : 3,
            "index" : "79FD203E4DDDF2EA78B798C963487120C048C78652A28682425E47C96D016F92"
         }
      ],
      "ledger_hash" : "56E81069F06492FB410A70218C08169BE3AB3CFD5AEA20E999662D81DC361D9F",
      "ledger_index" : 5,
      "status" : "success",
      "validated" : true
   }
}

如果SignerList与预期的内容一同出现,那么您的地址已准备好进行多重签名。

6.进一步的步骤

此时,您的地址已准备好发送多重签名的交易您可能还想要:

  • 通过使用标志发送AccountSet事务禁用地址的主密钥对asfDisableMaster
  • 通过发送SetRegularKey事务来移除地址的常规密钥对(如果您以前设置了一对)

发送多重签名的交易

在您可以对交易进行多重签名之前,请先 为您的地址设置多重签名以下过程演示如何创建,签署和提交多签名事务。

1.创建交易

创建一个表示要提交的事务的JSON对象。您必须指定有关此事务的所有信息,包括FeeSequence还要将该字段SigningPubKey作为空字符串来表示该事务是多重签名的。

请记住,Fee多签名交易的数量远远高于定期签署的交易数量。它应该至少是正常交易成本的(N + 1)倍,其中N是您计划提供的签名数量。由于收集来自多个来源的签名有时需要一段时间,因此在此期间交易成本增加的情况下,您可能需要指定比当前最小值更多的签名

以下是一个准备好多签名的示例事务:

{
    "TransactionType": "TrustSet",
    "Account": "rEuLyBCvcw4CFmzv8RepSiAoNgF8tTGJQC",
    "Flags": 262144,
    "LimitAmount": {
        "currency": "USD",
        "issuer": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
        "value": "100"
    },
    "Sequence": 2,
    "SigningPubKey": "",
    "Fee": "30000"
}

(此交易创建了一个从rEuLyBCvcw4CFmzv8RepSiAoNgF8tTGJQC到rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh的会计关系,最大余额为100美元。)

2.获取一个签名

使用带有您的SignerList成员之一的秘密密钥和地址sign_for命令来获取该成员的签名。

警告:切勿将密钥提交给不受控制的服务器。不要通过网络发送未加密的密钥。

$ rippled sign_for rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW  '{
>     "TransactionType": "TrustSet",
>     "Account": "rEuLyBCvcw4CFmzv8RepSiAoNgF8tTGJQC",
>     "Flags": 262144,
>     "LimitAmount": {
>         "currency": "USD",
>         "issuer": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
>         "value": "100"
>     },
>     "Sequence": 2,
>     "SigningPubKey": "",
>     "Fee": "30000"
> }'
Loading: "/home/mduo13/.config/ripple/rippled.cfg"
Connecting to 127.0.0.1:5005
{
   "result" : {
      "status" : "success",
      "tx_blob" : "1200142200040000240000000263D5038D7EA4C680000000000000000000000000005553440000000000B5F762798A53D543A014CAF8B297CFF8F2F937E868400000000000753073008114A3780F5CB5A44D366520FC44055E8ED44D9A2270F3E010732102B3EC4E5DD96029A647CFA20DA07FE1F85296505552CCAC114087E66B46BD77DF744730450221009C195DBBF7967E223D8626CA19CF02073667F2B22E206727BFE848FF42BEAC8A022048C323B0BED19A988BDBEFA974B6DE8AA9DCAE250AA82BBD1221787032A864E58114204288D2E47F8EF6C99BCC457966320D12409711E1F1",
      "tx_json" : {
         "Account" : "rEuLyBCvcw4CFmzv8RepSiAoNgF8tTGJQC",
         "Fee" : "30000",
         "Flags" : 262144,
         "LimitAmount" : {
            "currency" : "USD",
            "issuer" : "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
            "value" : "100"
         },
         "Sequence" : 2,
         "Signers" : [
            {
               "Signer" : {
                  "Account" : "rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW",
                  "SigningPubKey" : "02B3EC4E5DD96029A647CFA20DA07FE1F85296505552CCAC114087E66B46BD77DF",
                  "TxnSignature" : "30450221009C195DBBF7967E223D8626CA19CF02073667F2B22E206727BFE848FF42BEAC8A022048C323B0BED19A988BDBEFA974B6DE8AA9DCAE250AA82BBD1221787032A864E5"
               }
            }
         ],
         "SigningPubKey" : "",
         "TransactionType" : "TrustSet",
         "hash" : "A94A6417D1A7AAB059822B894E13D322ED3712F7212CE9257801F96DE6C3F6AE"
      }
   }
}

保存tx_json响应字段:它在该Signers字段中具有新的签名您可以放弃该tx_blob字段的值

如果您在独立模式或非生产网络中遇到问题,请检查是否启用多重符号

3.获得额外的签名

您可以并行或串行收集其他签名:

  • 并行执行:使用sign_for具有原始JSON 命令作为事务。每个响应在Signers数组中都有一个签名
  • 在串行中:使用sign_for带有tx_json前一个sign_for响应命令每个响应都会为现有Signers阵列添加一个新签名

警告:切勿将密钥提交给不受控制的服务器。不要通过网络发送未加密的密钥。

$ rippled sign_for rUpy3eEg8rqjqfUoLeBnZkscbKbFsKXC3v  '{
>    "Account" : "rEuLyBCvcw4CFmzv8RepSiAoNgF8tTGJQC",
>    "Fee" : "30000",
>    "Flags" : 262144,
>    "LimitAmount" : {
>       "currency" : "USD",
>       "issuer" : "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
>       "value" : "100"
>    },
>    "Sequence" : 2,
>    "Signers" : [
>       {
>          "Signer" : {
>             "Account" : "rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW",
>             "SigningPubKey" : "02B3EC4E5DD96029A647CFA20DA07FE1F85296505552CCAC114087E66B46BD77DF",
>             "TxnSignature" : "30450221009C195DBBF7967E223D8626CA19CF02073667F2B22E206727BFE848FF42BEAC8A022048C323B0BED19A988BDBEFA974B6DE8AA9DCAE250AA82BBD1221787032A864E5"
>          }
>       }
>    ],
>    "SigningPubKey" : "",
>    "TransactionType" : "TrustSet",
>    "hash" : "A94A6417D1A7AAB059822B894E13D322ED3712F7212CE9257801F96DE6C3F6AE"
> }'
Loading: "/home/mduo13/.config/ripple/rippled.cfg"
Connecting to 127.0.0.1:5005
{
   "result" : {
      "status" : "success",
      "tx_blob" : "1200142200040000240000000263D5038D7EA4C680000000000000000000000000005553440000000000B5F762798A53D543A014CAF8B297CFF8F2F937E868400000000000753073008114A3780F5CB5A44D366520FC44055E8ED44D9A2270F3E010732102B3EC4E5DD96029A647CFA20DA07FE1F85296505552CCAC114087E66B46BD77DF744730450221009C195DBBF7967E223D8626CA19CF02073667F2B22E206727BFE848FF42BEAC8A022048C323B0BED19A988BDBEFA974B6DE8AA9DCAE250AA82BBD1221787032A864E58114204288D2E47F8EF6C99BCC457966320D12409711E1E0107321028FFB276505F9AC3F57E8D5242B386A597EF6C40A7999F37F1948636FD484E25B744630440220680BBD745004E9CFB6B13A137F505FB92298AD309071D16C7B982825188FD1AE022004200B1F7E4A6A84BB0E4FC09E1E3BA2B66EBD32F0E6D121A34BA3B04AD99BC181147908A7F0EDD48EA896C3580A399F0EE78611C8E3E1F1",
      "tx_json" : {
         "Account" : "rEuLyBCvcw4CFmzv8RepSiAoNgF8tTGJQC",
         "Fee" : "30000",
         "Flags" : 262144,
         "LimitAmount" : {
            "currency" : "USD",
            "issuer" : "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
            "value" : "100"
         },
         "Sequence" : 2,
         "Signers" : [
            {
               "Signer" : {
                  "Account" : "rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW",
                  "SigningPubKey" : "02B3EC4E5DD96029A647CFA20DA07FE1F85296505552CCAC114087E66B46BD77DF",
                  "TxnSignature" : "30450221009C195DBBF7967E223D8626CA19CF02073667F2B22E206727BFE848FF42BEAC8A022048C323B0BED19A988BDBEFA974B6DE8AA9DCAE250AA82BBD1221787032A864E5"
               }
            },
            {
               "Signer" : {
                  "Account" : "rUpy3eEg8rqjqfUoLeBnZkscbKbFsKXC3v",
                  "SigningPubKey" : "028FFB276505F9AC3F57E8D5242B386A597EF6C40A7999F37F1948636FD484E25B",
                  "TxnSignature" : "30440220680BBD745004E9CFB6B13A137F505FB92298AD309071D16C7B982825188FD1AE022004200B1F7E4A6A84BB0E4FC09E1E3BA2B66EBD32F0E6D121A34BA3B04AD99BC1"
               }
            }
         ],
         "SigningPubKey" : "",
         "TransactionType" : "TrustSet",
         "hash" : "BD636194C48FD7A100DE4C972336534C8E710FD008C0F3CF7BC5BF34DAF3C3E6"
      }
   }
}

根据您配置的SignerList,您可能需要多次重复此步骤才能从所有必要方获取签名。

4.合并签名并提交

如果您以串行方式收集签名,tx_json则从最后一个sign_for响应收集所有签名,因此您可以将其用作该submit_multisigned命令的参数

如果您并行收集签名,则必须手动构建tx_json包含所有签名对象。Signers从所有sign_for响应中取出数组,并将它们的内容组合成一个Signers具有每个签名的数组。将组合Signers数组添加到原始事务JSON值,并将其用作该submit_multisigned命令的参数

$ rippled submit_multisigned '{
>              "Account" : "rEuLyBCvcw4CFmzv8RepSiAoNgF8tTGJQC",
>              "Fee" : "30000",
>              "Flags" : 262144,
>              "LimitAmount" : {
>                 "currency" : "USD",
>                 "issuer" : "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
>                 "value" : "100"
>              },
>              "Sequence" : 2,
>              "Signers" : [
>                 {
>                    "Signer" : {
>                       "Account" : "rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW",
>                       "SigningPubKey" : "02B3EC4E5DD96029A647CFA20DA07FE1F85296505552CCAC114087E66B46BD77DF",
>                       "TxnSignature" : "30450221009C195DBBF7967E223D8626CA19CF02073667F2B22E206727BFE848FF42BEAC8A022048C323B0BED19A988BDBEFA974B6DE8AA9DCAE250AA82BBD1221787032A864E5"
>                    }
>                 },
>                 {
>                    "Signer" : {
>                       "Account" : "rUpy3eEg8rqjqfUoLeBnZkscbKbFsKXC3v",
>                       "SigningPubKey" : "028FFB276505F9AC3F57E8D5242B386A597EF6C40A7999F37F1948636FD484E25B",
>                       "TxnSignature" : "30440220680BBD745004E9CFB6B13A137F505FB92298AD309071D16C7B982825188FD1AE022004200B1F7E4A6A84BB0E4FC09E1E3BA2B66EBD32F0E6D121A34BA3B04AD99BC1"
>                    }
>                 }
>              ],
>              "SigningPubKey" : "",
>              "TransactionType" : "TrustSet",
>              "hash" : "BD636194C48FD7A100DE4C972336534C8E710FD008C0F3CF7BC5BF34DAF3C3E6"
>           }'
Loading: "/home/mduo13/.config/ripple/rippled.cfg"
Connecting to 127.0.0.1:5005
{
    "result": {
        "engine_result": "tesSUCCESS",
        "engine_result_code": 0,
        "engine_result_message": "The transaction was applied. Only final in a validated ledger.",
        "status": "success",
        "tx_blob": "1200142200040000240000000263D5038D7EA4C680000000000000000000000000005553440000000000B5F762798A53D543A014CAF8B297CFF8F2F937E868400000000000753073008114A3780F5CB5A44D366520FC44055E8ED44D9A2270F3E010732102B3EC4E5DD96029A647CFA20DA07FE1F85296505552CCAC114087E66B46BD77DF744730450221009C195DBBF7967E223D8626CA19CF02073667F2B22E206727BFE848FF42BEAC8A022048C323B0BED19A988BDBEFA974B6DE8AA9DCAE250AA82BBD1221787032A864E58114204288D2E47F8EF6C99BCC457966320D12409711E1E0107321028FFB276505F9AC3F57E8D5242B386A597EF6C40A7999F37F1948636FD484E25B744630440220680BBD745004E9CFB6B13A137F505FB92298AD309071D16C7B982825188FD1AE022004200B1F7E4A6A84BB0E4FC09E1E3BA2B66EBD32F0E6D121A34BA3B04AD99BC181147908A7F0EDD48EA896C3580A399F0EE78611C8E3E1F1",
        "tx_json": {
            "Account": "rEuLyBCvcw4CFmzv8RepSiAoNgF8tTGJQC",
            "Fee": "30000",
            "Flags": 262144,
            "LimitAmount": {
                "currency": "USD",
                "issuer": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
                "value": "100"
            },
            "Sequence": 2,
            "Signers": [{
                "Signer": {
                    "Account": "rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW",
                    "SigningPubKey": "02B3EC4E5DD96029A647CFA20DA07FE1F85296505552CCAC114087E66B46BD77DF",
                    "TxnSignature": "30450221009C195DBBF7967E223D8626CA19CF02073667F2B22E206727BFE848FF42BEAC8A022048C323B0BED19A988BDBEFA974B6DE8AA9DCAE250AA82BBD1221787032A864E5"
                }
            }, {
                "Signer": {
                    "Account": "rUpy3eEg8rqjqfUoLeBnZkscbKbFsKXC3v",
                    "SigningPubKey": "028FFB276505F9AC3F57E8D5242B386A597EF6C40A7999F37F1948636FD484E25B",
                    "TxnSignature": "30440220680BBD745004E9CFB6B13A137F505FB92298AD309071D16C7B982825188FD1AE022004200B1F7E4A6A84BB0E4FC09E1E3BA2B66EBD32F0E6D121A34BA3B04AD99BC1"
                }
            }],
            "SigningPubKey": "",
            "TransactionType": "TrustSet",
            "hash": "BD636194C48FD7A100DE4C972336534C8E710FD008C0F3CF7BC5BF34DAF3C3E6"
        }
    }
}

记下hash响应中的值,以便稍后检查交易结果。(在这种情况下,哈希是BD636194C48FD7A100DE4C972336534C8E710FD008C0F3CF7BC5BF34DAF3C3E6。)

5.关闭分类帐

如果您正在使用实时网络,则可以等待4-7秒让账簿自动关闭。

如果您rippled以独立模式运行,请使用该ledger_accept命令手动关闭分类帐:

$ rippled ledger_accept
Loading: "/home/mduo13/.config/ripple/rippled.cfg"
Connecting to 127.0.0.1:5005
{
   "result" : {
      "ledger_current_index" : 7,
      "status" : "success"
   }
}

6.确认交易结果

使用该submit_multisigned命令的响应中的散列值来查找使用该tx命令的事务特别是,检查是否TransactionResult是字符串tesSUCCESS

在实时网络上,您还必须确认该validated字段已设置为布尔值true如果该领域不是true,那么您可能需要等待更长的时间才能达成共识流程; 或者出于某种原因,您的交易可能无法包含在分类账中。

在独立模式下,服务器会自动将分类帐视为validated手动关闭。

$ rippled tx BD636194C48FD7A100DE4C972336534C8E710FD008C0F3CF7BC5BF34DAF3C3E6
Loading: "/home/mduo13/.config/ripple/rippled.cfg"
Connecting to 127.0.0.1:5005
{
    "result": {
        "Account": "rEuLyBCvcw4CFmzv8RepSiAoNgF8tTGJQC",
        "Fee": "30000",
        "Flags": 262144,
        "LimitAmount": {
            "currency": "USD",
            "issuer": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
            "value": "100"
        },
        "Sequence": 2,
        "Signers": [{
            "Signer": {
                "Account": "rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW",
                "SigningPubKey": "02B3EC4E5DD96029A647CFA20DA07FE1F85296505552CCAC114087E66B46BD77DF",
                "TxnSignature": "30450221009C195DBBF7967E223D8626CA19CF02073667F2B22E206727BFE848FF42BEAC8A022048C323B0BED19A988BDBEFA974B6DE8AA9DCAE250AA82BBD1221787032A864E5"
            }
        }, {
            "Signer": {
                "Account": "rUpy3eEg8rqjqfUoLeBnZkscbKbFsKXC3v",
                "SigningPubKey": "028FFB276505F9AC3F57E8D5242B386A597EF6C40A7999F37F1948636FD484E25B",
                "TxnSignature": "30440220680BBD745004E9CFB6B13A137F505FB92298AD309071D16C7B982825188FD1AE022004200B1F7E4A6A84BB0E4FC09E1E3BA2B66EBD32F0E6D121A34BA3B04AD99BC1"
            }
        }],
        "SigningPubKey": "",
        "TransactionType": "TrustSet",
        "date": 512172510,
        "hash": "BD636194C48FD7A100DE4C972336534C8E710FD008C0F3CF7BC5BF34DAF3C3E6",
        "inLedger": 6,
        "ledger_index": 6,
        "meta": {
            "AffectedNodes": [{
                "ModifiedNode": {
                    "LedgerEntryType": "AccountRoot",
                    "LedgerIndex": "2B6AC232AA4C4BE41BF49D2459FA4A0347E1B543A4C92FCEE0821C0201E2E9A8",
                    "PreviousTxnID": "B7E1D33DB7DEA3BB65BFAB2C80E02125F47FCCF6C957A7FDECD915B3EBE0C1DD",
                    "PreviousTxnLgrSeq": 4
                }
            }, {
                "CreatedNode": {
                    "LedgerEntryType": "RippleState",
                    "LedgerIndex": "93E317B32022977C77810A2C558FBB28E30E744C68E73720622B797F957EC5FA",
                    "NewFields": {
                        "Balance": {
                            "currency": "USD",
                            "issuer": "rrrrrrrrrrrrrrrrrrrrBZbvji",
                            "value": "0"
                        },
                        "Flags": 2162688,
                        "HighLimit": {
                            "currency": "USD",
                            "issuer": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
                            "value": "0"
                        },
                        "LowLimit": {
                            "currency": "USD",
                            "issuer": "rEuLyBCvcw4CFmzv8RepSiAoNgF8tTGJQC",
                            "value": "100"
                        }
                    }
                }
            }, {
                "ModifiedNode": {
                    "FinalFields": {
                        "Account": "rEuLyBCvcw4CFmzv8RepSiAoNgF8tTGJQC",
                        "Balance": "999960000",
                        "Flags": 0,
                        "OwnerCount": 6,
                        "Sequence": 3
                    },
                    "LedgerEntryType": "AccountRoot",
                    "LedgerIndex": "A6B1BA6F2D70813100908EA84ABB7783695050312735E2C3665259F388804EA0",
                    "PreviousFields": {
                        "Balance": "999990000",
                        "OwnerCount": 5,
                        "Sequence": 2
                    },
                    "PreviousTxnID": "8FDC18960455C196A8C4DE0D24799209A21F4A17E32102B5162BD79466B90222",
                    "PreviousTxnLgrSeq": 5
                }
            }, {
                "ModifiedNode": {
                    "FinalFields": {
                        "Flags": 0,
                        "Owner": "rEuLyBCvcw4CFmzv8RepSiAoNgF8tTGJQC",
                        "RootIndex": "C2728175908D82FB1DE6676F203D8D3C056995A9FA9B369EF326523F1C65A1DE"
                    },
                    "LedgerEntryType": "DirectoryNode",
                    "LedgerIndex": "C2728175908D82FB1DE6676F203D8D3C056995A9FA9B369EF326523F1C65A1DE"
                }
            }, {
                "CreatedNode": {
                    "LedgerEntryType": "DirectoryNode",
                    "LedgerIndex": "D8120FC732737A2CF2E9968FDF3797A43B457F2A81AA06D2653171A1EA635204",
                    "NewFields": {
                        "Owner": "rHb9CJAWyB4rj91VRWn96DkukG4bwdtyTh",
                        "RootIndex": "D8120FC732737A2CF2E9968FDF3797A43B457F2A81AA06D2653171A1EA635204"
                    }
                }
            }],
            "TransactionIndex": 0,
            "TransactionResult": "tesSUCCESS"
        },
        "status": "success",
        "validated": true
    }
}

你可能感兴趣的:(Ripple)