This commit is contained in:
intelliot
2023-12-20 17:33:27 +00:00
parent 1049e53947
commit 314443b11c
570 changed files with 42666 additions and 43230 deletions

View File

@@ -896,41 +896,41 @@ $(function() {
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160;}</div>
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; </div>
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160;<a class="code" href="classJson_1_1Value.html">Json::Value</a></div>
<div class="line"><a name="l00830"></a><span class="lineno"><a class="line" href="namespaceripple_1_1RPC.html#ac16a3a5fc27cf3801186c4d19bc934bc"> 830</a></span>&#160;<a class="code" href="namespaceripple_1_1RPC.html#ac16a3a5fc27cf3801186c4d19bc934bc">transactionSubmit</a>(</div>
<div class="line"><a name="l00830"></a><span class="lineno"><a class="line" href="namespaceripple_1_1RPC.html#a86285e11e9d368859ec6b73014300564"> 830</a></span>&#160;<a class="code" href="namespaceripple_1_1RPC.html#a86285e11e9d368859ec6b73014300564">transactionSubmit</a>(</div>
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> jvRequest,</div>
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; <span class="keywordtype">unsigned</span> apiVersion,</div>
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; <a class="code" href="classripple_1_1NetworkOPs.html#ada325f492d3aa1aa62d4b159e106c37a">NetworkOPs::FailHard</a> failType,</div>
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <a class="code" href="namespaceripple.html#ae08fe18f17b24699ce41d3898fbb8c2c">Role</a> role,</div>
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/duration.html">std::chrono::seconds</a> validatedLedgerAge,</div>
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <a class="code" href="classripple_1_1Application.html">Application</a>&amp; app,</div>
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/functional/function.html">ProcessTransactionFn</a> <span class="keyword">const</span>&amp; processTransaction,</div>
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <a class="code" href="namespaceripple_1_1RPC.html#a33378ee5e4181cef672fc56627fc0551">RPC::SubmitSync</a> sync)</div>
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160;{</div>
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keyword">using namespace </span>detail;</div>
<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; </div>
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span>&amp; ledger = app.<a class="code" href="classripple_1_1Application.html#a002e22abe4c34d378ff9ece1ab46c7ea">openLedger</a>().<a class="code" href="classripple_1_1OpenLedger.html#abb724d61223be6a608b28947bd2e2236">current</a>();</div>
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keyword">auto</span> j = app.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">&quot;RPCHandler&quot;</span>);</div>
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; JLOG(j.debug()) &lt;&lt; <span class="stringliteral">&quot;transactionSubmit: &quot;</span> &lt;&lt; jvRequest;</div>
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; </div>
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <span class="comment">// Add and amend fields based on the transaction type.</span></div>
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; SigningForParams signForParams;</div>
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; transactionPreProcessResult preprocResult = <a class="code" href="namespaceripple_1_1RPC_1_1detail.html#a5243c8f203b40c3b2cedf27af29f7218">transactionPreProcessImpl</a>(</div>
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; jvRequest, role, signForParams, validatedLedgerAge, app);</div>
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; </div>
<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <span class="keywordflow">if</span> (!preprocResult.second)</div>
<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <span class="keywordflow">return</span> preprocResult.first;</div>
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; </div>
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <span class="comment">// Make sure the STTx makes a legitimate Transaction.</span></div>
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair&lt;Json::Value, Transaction::pointer&gt;</a> txn =</div>
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; <a class="code" href="namespaceripple_1_1RPC_1_1detail.html#abafd63792821196881f9a3a2de040aed">transactionConstructImpl</a>(preprocResult.second, ledger-&gt;rules(), app);</div>
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; </div>
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <span class="keywordflow">if</span> (!txn.<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">second</a>)</div>
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; <span class="keywordflow">return</span> txn.<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">first</a>;</div>
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; </div>
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <span class="comment">// Finally, submit the transaction.</span></div>
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; {</div>
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; processTransaction(txn.<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">second</a>, <a class="code" href="namespaceripple.html#a6909f61053b6e084f46665fa9f4ee673">isUnlimited</a>(role), <a class="code" href="namespaceripple_1_1RPC.html#a33378ee5e4181cef672fc56627fc0551a63ad9d34f3503826e5f649ae6b7ac92c">sync</a>, failType);</div>
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/functional/function.html">ProcessTransactionFn</a> <span class="keyword">const</span>&amp; processTransaction)</div>
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160;{</div>
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <span class="keyword">using namespace </span>detail;</div>
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; </div>
<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span>&amp; ledger = app.<a class="code" href="classripple_1_1Application.html#a002e22abe4c34d378ff9ece1ab46c7ea">openLedger</a>().<a class="code" href="classripple_1_1OpenLedger.html#abb724d61223be6a608b28947bd2e2236">current</a>();</div>
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <span class="keyword">auto</span> j = app.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">&quot;RPCHandler&quot;</span>);</div>
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; JLOG(j.debug()) &lt;&lt; <span class="stringliteral">&quot;transactionSubmit: &quot;</span> &lt;&lt; jvRequest;</div>
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; </div>
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="comment">// Add and amend fields based on the transaction type.</span></div>
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; SigningForParams signForParams;</div>
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; transactionPreProcessResult preprocResult = <a class="code" href="namespaceripple_1_1RPC_1_1detail.html#a5243c8f203b40c3b2cedf27af29f7218">transactionPreProcessImpl</a>(</div>
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; jvRequest, role, signForParams, validatedLedgerAge, app);</div>
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; </div>
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <span class="keywordflow">if</span> (!preprocResult.second)</div>
<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <span class="keywordflow">return</span> preprocResult.first;</div>
<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; </div>
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; <span class="comment">// Make sure the STTx makes a legitimate Transaction.</span></div>
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair&lt;Json::Value, Transaction::pointer&gt;</a> txn =</div>
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; <a class="code" href="namespaceripple_1_1RPC_1_1detail.html#abafd63792821196881f9a3a2de040aed">transactionConstructImpl</a>(preprocResult.second, ledger-&gt;rules(), app);</div>
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; </div>
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; <span class="keywordflow">if</span> (!txn.<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">second</a>)</div>
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <span class="keywordflow">return</span> txn.<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">first</a>;</div>
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; </div>
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <span class="comment">// Finally, submit the transaction.</span></div>
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; {</div>
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; <span class="comment">// FIXME: For performance, should use asynch interface</span></div>
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; processTransaction(txn.<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">second</a>, <a class="code" href="namespaceripple.html#a6909f61053b6e084f46665fa9f4ee673">isUnlimited</a>(role), <span class="keyword">true</span>, failType);</div>
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; }</div>
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; <span class="keywordflow">catch</span> (<a class="codeRef" href="http://en.cppreference.com/w/cpp/error/exception.html">std::exception</a>&amp;)</div>
<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; {</div>
@@ -1132,200 +1132,199 @@ $(function() {
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;}</div>
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; </div>
<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;<a class="code" href="classJson_1_1Value.html">Json::Value</a></div>
<div class="line"><a name="l01068"></a><span class="lineno"><a class="line" href="namespaceripple_1_1RPC.html#aca22c2f943740539f8a1560924cae9cd"> 1068</a></span>&#160;<a class="code" href="namespaceripple_1_1RPC.html#aca22c2f943740539f8a1560924cae9cd">transactionSubmitMultiSigned</a>(</div>
<div class="line"><a name="l01068"></a><span class="lineno"><a class="line" href="namespaceripple_1_1RPC.html#a1aaebf843616a5dd8eacb3c5e7af9540"> 1068</a></span>&#160;<a class="code" href="namespaceripple_1_1RPC.html#a1aaebf843616a5dd8eacb3c5e7af9540">transactionSubmitMultiSigned</a>(</div>
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> jvRequest,</div>
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; <span class="keywordtype">unsigned</span> apiVersion,</div>
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; <a class="code" href="classripple_1_1NetworkOPs.html#ada325f492d3aa1aa62d4b159e106c37a">NetworkOPs::FailHard</a> failType,</div>
<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; <a class="code" href="namespaceripple.html#ae08fe18f17b24699ce41d3898fbb8c2c">Role</a> role,</div>
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/chrono/duration.html">std::chrono::seconds</a> validatedLedgerAge,</div>
<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; <a class="code" href="classripple_1_1Application.html">Application</a>&amp; app,</div>
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/functional/function.html">ProcessTransactionFn</a> <span class="keyword">const</span>&amp; processTransaction,</div>
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; <a class="code" href="namespaceripple_1_1RPC.html#a33378ee5e4181cef672fc56627fc0551">RPC::SubmitSync</a> sync)</div>
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160;{</div>
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span>&amp; ledger = app.<a class="code" href="classripple_1_1Application.html#a002e22abe4c34d378ff9ece1ab46c7ea">openLedger</a>().<a class="code" href="classripple_1_1OpenLedger.html#abb724d61223be6a608b28947bd2e2236">current</a>();</div>
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; <span class="keyword">auto</span> j = app.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">&quot;RPCHandler&quot;</span>);</div>
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; JLOG(j.debug()) &lt;&lt; <span class="stringliteral">&quot;transactionSubmitMultiSigned: &quot;</span> &lt;&lt; jvRequest;</div>
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; </div>
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; <span class="comment">// When multi-signing, the &quot;Sequence&quot; and &quot;SigningPubKey&quot; fields must</span></div>
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <span class="comment">// be passed in by the caller.</span></div>
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; <span class="keyword">using namespace </span>detail;</div>
<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; {</div>
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> err = <a class="code" href="namespaceripple_1_1RPC_1_1detail.html#a9951e7bcb8c906eb76608e94b1f56320">checkMultiSignFields</a>(jvRequest);</div>
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceripple_1_1RPC.html#a1a79f0c33d1405fe85c40d63a49658bd">RPC::contains_error</a>(err))</div>
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; <span class="keywordflow">return</span> err;</div>
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; }</div>
<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; </div>
<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a>&amp; tx_json(jvRequest[<span class="stringliteral">&quot;tx_json&quot;</span>]);</div>
<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; </div>
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; <span class="keyword">auto</span> [txJsonResult, srcAddressID] = <a class="code" href="namespaceripple_1_1RPC_1_1detail.html#a46a243ed59d281adf82fdadac147bfb2">checkTxJsonFields</a>(</div>
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; tx_json,</div>
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; role,</div>
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; <span class="keyword">true</span>,</div>
<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; validatedLedgerAge,</div>
<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; app.<a class="code" href="classripple_1_1Application.html#aca56b7c63030174e59720ab51d739422">config</a>(),</div>
<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; app.<a class="code" href="classripple_1_1Application.html#a426bdbb87f6dc2082cf6f418526901cb">getFeeTrack</a>(),</div>
<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; <a class="code" href="namespaceripple_1_1RPC.html#a1913cdcfd25a883affb49c4f40174cd6">getAPIVersionNumber</a>(jvRequest, app.<a class="code" href="classripple_1_1Application.html#aca56b7c63030174e59720ab51d739422">config</a>().<a class="code" href="classripple_1_1Config.html#a60e194c37b2e6e2a6cbaab170579fd15">BETA_RPC_API</a>));</div>
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; </div>
<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceripple_1_1RPC.html#a1a79f0c33d1405fe85c40d63a49658bd">RPC::contains_error</a>(txJsonResult))</div>
<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; <span class="keywordflow">return</span> std::move(txJsonResult);</div>
<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; </div>
<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;SLE const&gt;</a> sle =</div>
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; ledger-&gt;read(<a class="code" href="namespaceripple_1_1keylet.html#a50c370db96b4fdcdd202d9c2c38afce9">keylet::account</a>(srcAddressID));</div>
<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; </div>
<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; <span class="keywordflow">if</span> (!sle)</div>
<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; {</div>
<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; <span class="comment">// If did not find account, error.</span></div>
<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; JLOG(j.debug())</div>
<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; &lt;&lt; <span class="stringliteral">&quot;transactionSubmitMultiSigned: Failed to find source account &quot;</span></div>
<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; &lt;&lt; <span class="stringliteral">&quot;in current ledger: &quot;</span> &lt;&lt; <a class="code" href="namespaceripple.html#a08a13b62b18272366f788632359e8793">toBase58</a>(srcAddressID);</div>
<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; </div>
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple.html#a67869382f83fd55cf3096d2591a57b07">rpcError</a>(<a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a45e21d134aa6921065916fcbcb875877">rpcSRC_ACT_NOT_FOUND</a>);</div>
<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; }</div>
<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; </div>
<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; {</div>
<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> err = <a class="code" href="namespaceripple_1_1RPC.html#adf952f7ca5d0d26e982a92acce6bf937">checkFee</a>(</div>
<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; jvRequest,</div>
<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; role,</div>
<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; <span class="keyword">false</span>,</div>
<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; app.<a class="code" href="classripple_1_1Application.html#aca56b7c63030174e59720ab51d739422">config</a>(),</div>
<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; app.<a class="code" href="classripple_1_1Application.html#a426bdbb87f6dc2082cf6f418526901cb">getFeeTrack</a>(),</div>
<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; app.<a class="code" href="classripple_1_1Application.html#a9865710c130bf4427842a544b2b7f077">getTxQ</a>(),</div>
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; app);</div>
<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; </div>
<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceripple_1_1RPC.html#a1a79f0c33d1405fe85c40d63a49658bd">RPC::contains_error</a>(err))</div>
<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; <span class="keywordflow">return</span> err;</div>
<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; </div>
<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; err = <a class="code" href="namespaceripple_1_1RPC_1_1detail.html#a00e6bad0d6f35c70c4e10463ea34abd9">checkPayment</a>(jvRequest, tx_json, srcAddressID, role, app, <span class="keyword">false</span>);</div>
<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; </div>
<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceripple_1_1RPC.html#a1a79f0c33d1405fe85c40d63a49658bd">RPC::contains_error</a>(err))</div>
<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; <span class="keywordflow">return</span> err;</div>
<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; }</div>
<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; </div>
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; <span class="comment">// Grind through the JSON in tx_json to produce a STTx.</span></div>
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;STTx&gt;</a> stpTrans;</div>
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; {</div>
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; <a class="code" href="classripple_1_1STParsedJSONObject.html">STParsedJSONObject</a> parsedTx_json(<span class="stringliteral">&quot;tx_json&quot;</span>, tx_json);</div>
<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; <span class="keywordflow">if</span> (!parsedTx_json.<a class="code" href="classripple_1_1STParsedJSONObject.html#a5684522fa6918e6256d910053cd58c47">object</a>)</div>
<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; {</div>
<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> jvResult;</div>
<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; jvResult[<span class="stringliteral">&quot;error&quot;</span>] = parsedTx_json.<a class="code" href="classripple_1_1STParsedJSONObject.html#a75ae1e4c096f722a17614c58d8b284a4">error</a>[<span class="stringliteral">&quot;error&quot;</span>];</div>
<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; jvResult[<span class="stringliteral">&quot;error_code&quot;</span>] = parsedTx_json.<a class="code" href="classripple_1_1STParsedJSONObject.html#a75ae1e4c096f722a17614c58d8b284a4">error</a>[<span class="stringliteral">&quot;error_code&quot;</span>];</div>
<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; jvResult[<span class="stringliteral">&quot;error_message&quot;</span>] = parsedTx_json.<a class="code" href="classripple_1_1STParsedJSONObject.html#a75ae1e4c096f722a17614c58d8b284a4">error</a>[<span class="stringliteral">&quot;error_message&quot;</span>];</div>
<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; <span class="keywordflow">return</span> jvResult;</div>
<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; }</div>
<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; {</div>
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; stpTrans =</div>
<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; std::make_shared&lt;STTx&gt;(std::move(parsedTx_json.<a class="code" href="classripple_1_1STParsedJSONObject.html#a5684522fa6918e6256d910053cd58c47">object</a>.value()));</div>
<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; }</div>
<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; <span class="keywordflow">catch</span> (<a class="code" href="classripple_1_1STObject_1_1FieldErr.html">STObject::FieldErr</a>&amp; err)</div>
<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; {</div>
<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a2cd6200f6709780fcf1dd26ec9cd2866">RPC::make_error</a>(<a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a82ddebc5ec7a37ff38892487277bf9c4">rpcINVALID_PARAMS</a>, err.<a class="codeRef" href="http://en.cppreference.com/w/cpp/error/exception/what.html">what</a>());</div>
<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; }</div>
<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; <span class="keywordflow">catch</span> (<a class="codeRef" href="http://en.cppreference.com/w/cpp/error/exception.html">std::exception</a>&amp; ex)</div>
<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; {</div>
<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> reason(ex.<a class="codeRef" href="http://en.cppreference.com/w/cpp/error/exception/what.html">what</a>());</div>
<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a2cd6200f6709780fcf1dd26ec9cd2866">RPC::make_error</a>(</div>
<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; <a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a839833d48b635d8df6a9176274ae922f">rpcINTERNAL</a>,</div>
<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; <span class="stringliteral">&quot;Exception while serializing transaction: &quot;</span> + reason);</div>
<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; }</div>
<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> reason;</div>
<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceripple.html#a80b2f965303dfe486ecbae7d99be5f2d">passesLocalChecks</a>(*stpTrans, reason))</div>
<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a2cd6200f6709780fcf1dd26ec9cd2866">RPC::make_error</a>(<a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a82ddebc5ec7a37ff38892487277bf9c4">rpcINVALID_PARAMS</a>, reason);</div>
<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; }</div>
<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; </div>
<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; <span class="comment">// Validate the fields in the serialized transaction.</span></div>
<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; {</div>
<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; <span class="comment">// We now have the transaction text serialized and in the right format.</span></div>
<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; <span class="comment">// Verify the values of select fields.</span></div>
<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; <span class="comment">// The SigningPubKey must be present but empty.</span></div>
<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; <span class="keywordflow">if</span> (!stpTrans-&gt;getFieldVL(<a class="code" href="namespaceripple.html#a590913040d5c9a68f3bf1d4da20311ad">sfSigningPubKey</a>).empty())</div>
<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; {</div>
<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_ostringstream.html">std::ostringstream</a> err;</div>
<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; err &lt;&lt; <span class="stringliteral">&quot;Invalid &quot;</span> &lt;&lt; <a class="code" href="namespaceripple.html#a590913040d5c9a68f3bf1d4da20311ad">sfSigningPubKey</a>.<a class="code" href="classripple_1_1SField.html#a634bfabbd5e4494a2d5be6b7c6d3d70d">fieldName</a></div>
<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; &lt;&lt; <span class="stringliteral">&quot; field. Field must be empty when multi-signing.&quot;</span>;</div>
<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a2cd6200f6709780fcf1dd26ec9cd2866">RPC::make_error</a>(<a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a82ddebc5ec7a37ff38892487277bf9c4">rpcINVALID_PARAMS</a>, err.<a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_ostringstream/str.html">str</a>());</div>
<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; }</div>
<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; </div>
<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; <span class="comment">// There may not be a TxnSignature field.</span></div>
<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; <span class="keywordflow">if</span> (stpTrans-&gt;isFieldPresent(<a class="code" href="namespaceripple.html#a61697c13ea8123e926a3df063c625245">sfTxnSignature</a>))</div>
<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple.html#a67869382f83fd55cf3096d2591a57b07">rpcError</a>(<a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a9e3a3fa2bb1e04da92ea7253db9189d3">rpcSIGNING_MALFORMED</a>);</div>
<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; </div>
<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; <span class="comment">// The Fee field must be in XRP and greater than zero.</span></div>
<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> fee = stpTrans-&gt;getFieldAmount(<a class="code" href="namespaceripple.html#a13864ec0864daa5d24b70d276414b8ff">sfFee</a>);</div>
<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; </div>
<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceripple.html#a3e312ecdb199409dca142d307a3e0e5b">isLegalNet</a>(fee))</div>
<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; {</div>
<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_ostringstream.html">std::ostringstream</a> err;</div>
<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; err &lt;&lt; <span class="stringliteral">&quot;Invalid &quot;</span> &lt;&lt; <a class="code" href="namespaceripple.html#a13864ec0864daa5d24b70d276414b8ff">sfFee</a>.<a class="code" href="classripple_1_1SField.html#a634bfabbd5e4494a2d5be6b7c6d3d70d">fieldName</a></div>
<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; &lt;&lt; <span class="stringliteral">&quot; field. Fees must be specified in XRP.&quot;</span>;</div>
<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a2cd6200f6709780fcf1dd26ec9cd2866">RPC::make_error</a>(<a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a82ddebc5ec7a37ff38892487277bf9c4">rpcINVALID_PARAMS</a>, err.<a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_ostringstream/str.html">str</a>());</div>
<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; }</div>
<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; <span class="keywordflow">if</span> (fee &lt;= <a class="code" href="classripple_1_1STAmount.html">STAmount</a>{0})</div>
<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; {</div>
<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_ostringstream.html">std::ostringstream</a> err;</div>
<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; err &lt;&lt; <span class="stringliteral">&quot;Invalid &quot;</span> &lt;&lt; <a class="code" href="namespaceripple.html#a13864ec0864daa5d24b70d276414b8ff">sfFee</a>.<a class="code" href="classripple_1_1SField.html#a634bfabbd5e4494a2d5be6b7c6d3d70d">fieldName</a></div>
<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; &lt;&lt; <span class="stringliteral">&quot; field. Fees must be greater than zero.&quot;</span>;</div>
<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a2cd6200f6709780fcf1dd26ec9cd2866">RPC::make_error</a>(<a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a82ddebc5ec7a37ff38892487277bf9c4">rpcINVALID_PARAMS</a>, err.<a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_ostringstream/str.html">str</a>());</div>
<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; }</div>
<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; }</div>
<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; </div>
<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; <span class="comment">// Verify that the Signers field is present.</span></div>
<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; <span class="keywordflow">if</span> (!stpTrans-&gt;isFieldPresent(<a class="code" href="namespaceripple.html#a22a86f3d2d6d958de794f8532d459bac">sfSigners</a>))</div>
<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#aec2e1163b39a450d3917af9dd15b0f06">RPC::missing_field_error</a>(<span class="stringliteral">&quot;tx_json.Signers&quot;</span>);</div>
<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; </div>
<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; <span class="comment">// If the Signers field is present the SField guarantees it to be an array.</span></div>
<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; <span class="comment">// Get a reference to the Signers array so we can verify and sort it.</span></div>
<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; <span class="keyword">auto</span>&amp; signers = stpTrans-&gt;peekFieldArray(<a class="code" href="namespaceripple.html#a22a86f3d2d6d958de794f8532d459bac">sfSigners</a>);</div>
<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; </div>
<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; <span class="keywordflow">if</span> (signers.empty())</div>
<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a5b6ce0616f6995340f4dd846660c3749">RPC::make_param_error</a>(<span class="stringliteral">&quot;tx_json.Signers array may not be empty.&quot;</span>);</div>
<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; </div>
<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; <span class="comment">// The Signers array may only contain Signer objects.</span></div>
<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; <span class="keywordflow">if</span> (<a class="codeRef" href="http://en.cppreference.com/w/cpp/algorithm/find.html">std::find_if_not</a>(</div>
<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; signers.begin(), signers.end(), [](<a class="code" href="classripple_1_1STObject.html">STObject</a> <span class="keyword">const</span>&amp; obj) {</div>
<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; return (</div>
<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; <span class="comment">// A Signer object always contains these fields and no</span></div>
<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; <span class="comment">// others.</span></div>
<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; obj.isFieldPresent(sfAccount) &amp;&amp;</div>
<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; obj.isFieldPresent(sfSigningPubKey) &amp;&amp;</div>
<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; obj.isFieldPresent(sfTxnSignature) &amp;&amp; obj.getCount() == 3);</div>
<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; }) != signers.end())</div>
<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; {</div>
<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a5b6ce0616f6995340f4dd846660c3749">RPC::make_param_error</a>(</div>
<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; <span class="stringliteral">&quot;Signers array may only contain Signer entries.&quot;</span>);</div>
<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; }</div>
<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; </div>
<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; <span class="comment">// The array must be sorted and validated.</span></div>
<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160; <span class="keyword">auto</span> err = <a class="code" href="namespaceripple_1_1RPC_1_1detail.html#ae55247d02759e159363f3e9e370eee81">sortAndValidateSigners</a>(signers, srcAddressID);</div>
<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceripple_1_1RPC.html#a1a79f0c33d1405fe85c40d63a49658bd">RPC::contains_error</a>(err))</div>
<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; <span class="keywordflow">return</span> err;</div>
<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; </div>
<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; <span class="comment">// Make sure the SerializedTransaction makes a legitimate Transaction.</span></div>
<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair&lt;Json::Value, Transaction::pointer&gt;</a> txn =</div>
<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; <a class="code" href="namespaceripple_1_1RPC_1_1detail.html#abafd63792821196881f9a3a2de040aed">transactionConstructImpl</a>(stpTrans, ledger-&gt;rules(), app);</div>
<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; </div>
<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; <span class="keywordflow">if</span> (!txn.<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">second</a>)</div>
<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; <span class="keywordflow">return</span> txn.<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">first</a>;</div>
<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; </div>
<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; <span class="comment">// Finally, submit the transaction.</span></div>
<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; {</div>
<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; <span class="comment">// FIXME: For performance, should use asynch interface</span></div>
<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; processTransaction(txn.<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">second</a>, <a class="code" href="namespaceripple.html#a6909f61053b6e084f46665fa9f4ee673">isUnlimited</a>(role), <a class="code" href="namespaceripple_1_1RPC.html#a33378ee5e4181cef672fc56627fc0551a63ad9d34f3503826e5f649ae6b7ac92c">sync</a>, failType);</div>
<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; }</div>
<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; <span class="keywordflow">catch</span> (<a class="codeRef" href="http://en.cppreference.com/w/cpp/error/exception.html">std::exception</a>&amp;)</div>
<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; {</div>
<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a2cd6200f6709780fcf1dd26ec9cd2866">RPC::make_error</a>(</div>
<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; <a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a839833d48b635d8df6a9176274ae922f">rpcINTERNAL</a>, <span class="stringliteral">&quot;Exception occurred during transaction submission.&quot;</span>);</div>
<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; }</div>
<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; </div>
<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC_1_1detail.html#af4dc49eb0a127a2e10548647378fea74">transactionFormatResultImpl</a>(txn.<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">second</a>, apiVersion);</div>
<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160;}</div>
<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; </div>
<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160;} <span class="comment">// namespace RPC</span></div>
<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160;} <span class="comment">// namespace ripple</span></div>
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/functional/function.html">ProcessTransactionFn</a> <span class="keyword">const</span>&amp; processTransaction)</div>
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160;{</div>
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span>&amp; ledger = app.<a class="code" href="classripple_1_1Application.html#a002e22abe4c34d378ff9ece1ab46c7ea">openLedger</a>().<a class="code" href="classripple_1_1OpenLedger.html#abb724d61223be6a608b28947bd2e2236">current</a>();</div>
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; <span class="keyword">auto</span> j = app.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">&quot;RPCHandler&quot;</span>);</div>
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; JLOG(j.debug()) &lt;&lt; <span class="stringliteral">&quot;transactionSubmitMultiSigned: &quot;</span> &lt;&lt; jvRequest;</div>
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; </div>
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; <span class="comment">// When multi-signing, the &quot;Sequence&quot; and &quot;SigningPubKey&quot; fields must</span></div>
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; <span class="comment">// be passed in by the caller.</span></div>
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; <span class="keyword">using namespace </span>detail;</div>
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160; {</div>
<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> err = <a class="code" href="namespaceripple_1_1RPC_1_1detail.html#a9951e7bcb8c906eb76608e94b1f56320">checkMultiSignFields</a>(jvRequest);</div>
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceripple_1_1RPC.html#a1a79f0c33d1405fe85c40d63a49658bd">RPC::contains_error</a>(err))</div>
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; <span class="keywordflow">return</span> err;</div>
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; }</div>
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; </div>
<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a>&amp; tx_json(jvRequest[<span class="stringliteral">&quot;tx_json&quot;</span>]);</div>
<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; </div>
<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; <span class="keyword">auto</span> [txJsonResult, srcAddressID] = <a class="code" href="namespaceripple_1_1RPC_1_1detail.html#a46a243ed59d281adf82fdadac147bfb2">checkTxJsonFields</a>(</div>
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; tx_json,</div>
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; role,</div>
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; <span class="keyword">true</span>,</div>
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; validatedLedgerAge,</div>
<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; app.<a class="code" href="classripple_1_1Application.html#aca56b7c63030174e59720ab51d739422">config</a>(),</div>
<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; app.<a class="code" href="classripple_1_1Application.html#a426bdbb87f6dc2082cf6f418526901cb">getFeeTrack</a>(),</div>
<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; <a class="code" href="namespaceripple_1_1RPC.html#a1913cdcfd25a883affb49c4f40174cd6">getAPIVersionNumber</a>(jvRequest, app.<a class="code" href="classripple_1_1Application.html#aca56b7c63030174e59720ab51d739422">config</a>().<a class="code" href="classripple_1_1Config.html#a60e194c37b2e6e2a6cbaab170579fd15">BETA_RPC_API</a>));</div>
<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; </div>
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceripple_1_1RPC.html#a1a79f0c33d1405fe85c40d63a49658bd">RPC::contains_error</a>(txJsonResult))</div>
<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <span class="keywordflow">return</span> std::move(txJsonResult);</div>
<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; </div>
<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;SLE const&gt;</a> sle =</div>
<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; ledger-&gt;read(<a class="code" href="namespaceripple_1_1keylet.html#a50c370db96b4fdcdd202d9c2c38afce9">keylet::account</a>(srcAddressID));</div>
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; </div>
<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; <span class="keywordflow">if</span> (!sle)</div>
<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; {</div>
<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; <span class="comment">// If did not find account, error.</span></div>
<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; JLOG(j.debug())</div>
<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; &lt;&lt; <span class="stringliteral">&quot;transactionSubmitMultiSigned: Failed to find source account &quot;</span></div>
<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; &lt;&lt; <span class="stringliteral">&quot;in current ledger: &quot;</span> &lt;&lt; <a class="code" href="namespaceripple.html#a08a13b62b18272366f788632359e8793">toBase58</a>(srcAddressID);</div>
<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; </div>
<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple.html#a67869382f83fd55cf3096d2591a57b07">rpcError</a>(<a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a45e21d134aa6921065916fcbcb875877">rpcSRC_ACT_NOT_FOUND</a>);</div>
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; }</div>
<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; </div>
<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; {</div>
<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> err = <a class="code" href="namespaceripple_1_1RPC.html#adf952f7ca5d0d26e982a92acce6bf937">checkFee</a>(</div>
<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; jvRequest,</div>
<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160; role,</div>
<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; <span class="keyword">false</span>,</div>
<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; app.<a class="code" href="classripple_1_1Application.html#aca56b7c63030174e59720ab51d739422">config</a>(),</div>
<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160; app.<a class="code" href="classripple_1_1Application.html#a426bdbb87f6dc2082cf6f418526901cb">getFeeTrack</a>(),</div>
<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; app.<a class="code" href="classripple_1_1Application.html#a9865710c130bf4427842a544b2b7f077">getTxQ</a>(),</div>
<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160; app);</div>
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160; </div>
<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceripple_1_1RPC.html#a1a79f0c33d1405fe85c40d63a49658bd">RPC::contains_error</a>(err))</div>
<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; <span class="keywordflow">return</span> err;</div>
<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; </div>
<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160; err = <a class="code" href="namespaceripple_1_1RPC_1_1detail.html#a00e6bad0d6f35c70c4e10463ea34abd9">checkPayment</a>(jvRequest, tx_json, srcAddressID, role, app, <span class="keyword">false</span>);</div>
<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; </div>
<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceripple_1_1RPC.html#a1a79f0c33d1405fe85c40d63a49658bd">RPC::contains_error</a>(err))</div>
<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; <span class="keywordflow">return</span> err;</div>
<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; }</div>
<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; </div>
<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; <span class="comment">// Grind through the JSON in tx_json to produce a STTx.</span></div>
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;STTx&gt;</a> stpTrans;</div>
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; {</div>
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <a class="code" href="classripple_1_1STParsedJSONObject.html">STParsedJSONObject</a> parsedTx_json(<span class="stringliteral">&quot;tx_json&quot;</span>, tx_json);</div>
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; <span class="keywordflow">if</span> (!parsedTx_json.<a class="code" href="classripple_1_1STParsedJSONObject.html#a5684522fa6918e6256d910053cd58c47">object</a>)</div>
<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; {</div>
<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> jvResult;</div>
<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; jvResult[<span class="stringliteral">&quot;error&quot;</span>] = parsedTx_json.<a class="code" href="classripple_1_1STParsedJSONObject.html#a75ae1e4c096f722a17614c58d8b284a4">error</a>[<span class="stringliteral">&quot;error&quot;</span>];</div>
<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160; jvResult[<span class="stringliteral">&quot;error_code&quot;</span>] = parsedTx_json.<a class="code" href="classripple_1_1STParsedJSONObject.html#a75ae1e4c096f722a17614c58d8b284a4">error</a>[<span class="stringliteral">&quot;error_code&quot;</span>];</div>
<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; jvResult[<span class="stringliteral">&quot;error_message&quot;</span>] = parsedTx_json.<a class="code" href="classripple_1_1STParsedJSONObject.html#a75ae1e4c096f722a17614c58d8b284a4">error</a>[<span class="stringliteral">&quot;error_message&quot;</span>];</div>
<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; <span class="keywordflow">return</span> jvResult;</div>
<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160; }</div>
<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; {</div>
<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160; stpTrans =</div>
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; std::make_shared&lt;STTx&gt;(std::move(parsedTx_json.<a class="code" href="classripple_1_1STParsedJSONObject.html#a5684522fa6918e6256d910053cd58c47">object</a>.value()));</div>
<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160; }</div>
<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; <span class="keywordflow">catch</span> (<a class="code" href="classripple_1_1STObject_1_1FieldErr.html">STObject::FieldErr</a>&amp; err)</div>
<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; {</div>
<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a2cd6200f6709780fcf1dd26ec9cd2866">RPC::make_error</a>(<a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a82ddebc5ec7a37ff38892487277bf9c4">rpcINVALID_PARAMS</a>, err.<a class="codeRef" href="http://en.cppreference.com/w/cpp/error/exception/what.html">what</a>());</div>
<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; }</div>
<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; <span class="keywordflow">catch</span> (<a class="codeRef" href="http://en.cppreference.com/w/cpp/error/exception.html">std::exception</a>&amp; ex)</div>
<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; {</div>
<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> reason(ex.<a class="codeRef" href="http://en.cppreference.com/w/cpp/error/exception/what.html">what</a>());</div>
<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a2cd6200f6709780fcf1dd26ec9cd2866">RPC::make_error</a>(</div>
<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; <a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a839833d48b635d8df6a9176274ae922f">rpcINTERNAL</a>,</div>
<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; <span class="stringliteral">&quot;Exception while serializing transaction: &quot;</span> + reason);</div>
<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; }</div>
<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> reason;</div>
<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceripple.html#a80b2f965303dfe486ecbae7d99be5f2d">passesLocalChecks</a>(*stpTrans, reason))</div>
<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a2cd6200f6709780fcf1dd26ec9cd2866">RPC::make_error</a>(<a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a82ddebc5ec7a37ff38892487277bf9c4">rpcINVALID_PARAMS</a>, reason);</div>
<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; }</div>
<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; </div>
<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; <span class="comment">// Validate the fields in the serialized transaction.</span></div>
<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; {</div>
<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; <span class="comment">// We now have the transaction text serialized and in the right format.</span></div>
<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; <span class="comment">// Verify the values of select fields.</span></div>
<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; <span class="comment">// The SigningPubKey must be present but empty.</span></div>
<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; <span class="keywordflow">if</span> (!stpTrans-&gt;getFieldVL(<a class="code" href="namespaceripple.html#a590913040d5c9a68f3bf1d4da20311ad">sfSigningPubKey</a>).empty())</div>
<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; {</div>
<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_ostringstream.html">std::ostringstream</a> err;</div>
<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; err &lt;&lt; <span class="stringliteral">&quot;Invalid &quot;</span> &lt;&lt; <a class="code" href="namespaceripple.html#a590913040d5c9a68f3bf1d4da20311ad">sfSigningPubKey</a>.<a class="code" href="classripple_1_1SField.html#a634bfabbd5e4494a2d5be6b7c6d3d70d">fieldName</a></div>
<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; &lt;&lt; <span class="stringliteral">&quot; field. Field must be empty when multi-signing.&quot;</span>;</div>
<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a2cd6200f6709780fcf1dd26ec9cd2866">RPC::make_error</a>(<a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a82ddebc5ec7a37ff38892487277bf9c4">rpcINVALID_PARAMS</a>, err.<a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_ostringstream/str.html">str</a>());</div>
<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; }</div>
<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; </div>
<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; <span class="comment">// There may not be a TxnSignature field.</span></div>
<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160; <span class="keywordflow">if</span> (stpTrans-&gt;isFieldPresent(<a class="code" href="namespaceripple.html#a61697c13ea8123e926a3df063c625245">sfTxnSignature</a>))</div>
<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple.html#a67869382f83fd55cf3096d2591a57b07">rpcError</a>(<a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a9e3a3fa2bb1e04da92ea7253db9189d3">rpcSIGNING_MALFORMED</a>);</div>
<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; </div>
<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; <span class="comment">// The Fee field must be in XRP and greater than zero.</span></div>
<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> fee = stpTrans-&gt;getFieldAmount(<a class="code" href="namespaceripple.html#a13864ec0864daa5d24b70d276414b8ff">sfFee</a>);</div>
<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; </div>
<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceripple.html#a3e312ecdb199409dca142d307a3e0e5b">isLegalNet</a>(fee))</div>
<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; {</div>
<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_ostringstream.html">std::ostringstream</a> err;</div>
<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; err &lt;&lt; <span class="stringliteral">&quot;Invalid &quot;</span> &lt;&lt; <a class="code" href="namespaceripple.html#a13864ec0864daa5d24b70d276414b8ff">sfFee</a>.<a class="code" href="classripple_1_1SField.html#a634bfabbd5e4494a2d5be6b7c6d3d70d">fieldName</a></div>
<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; &lt;&lt; <span class="stringliteral">&quot; field. Fees must be specified in XRP.&quot;</span>;</div>
<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a2cd6200f6709780fcf1dd26ec9cd2866">RPC::make_error</a>(<a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a82ddebc5ec7a37ff38892487277bf9c4">rpcINVALID_PARAMS</a>, err.<a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_ostringstream/str.html">str</a>());</div>
<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; }</div>
<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; <span class="keywordflow">if</span> (fee &lt;= <a class="code" href="classripple_1_1STAmount.html">STAmount</a>{0})</div>
<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; {</div>
<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_ostringstream.html">std::ostringstream</a> err;</div>
<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; err &lt;&lt; <span class="stringliteral">&quot;Invalid &quot;</span> &lt;&lt; <a class="code" href="namespaceripple.html#a13864ec0864daa5d24b70d276414b8ff">sfFee</a>.<a class="code" href="classripple_1_1SField.html#a634bfabbd5e4494a2d5be6b7c6d3d70d">fieldName</a></div>
<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; &lt;&lt; <span class="stringliteral">&quot; field. Fees must be greater than zero.&quot;</span>;</div>
<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a2cd6200f6709780fcf1dd26ec9cd2866">RPC::make_error</a>(<a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a82ddebc5ec7a37ff38892487277bf9c4">rpcINVALID_PARAMS</a>, err.<a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_ostringstream/str.html">str</a>());</div>
<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; }</div>
<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160; }</div>
<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; </div>
<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; <span class="comment">// Verify that the Signers field is present.</span></div>
<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160; <span class="keywordflow">if</span> (!stpTrans-&gt;isFieldPresent(<a class="code" href="namespaceripple.html#a22a86f3d2d6d958de794f8532d459bac">sfSigners</a>))</div>
<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#aec2e1163b39a450d3917af9dd15b0f06">RPC::missing_field_error</a>(<span class="stringliteral">&quot;tx_json.Signers&quot;</span>);</div>
<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160; </div>
<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>&#160; <span class="comment">// If the Signers field is present the SField guarantees it to be an array.</span></div>
<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; <span class="comment">// Get a reference to the Signers array so we can verify and sort it.</span></div>
<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; <span class="keyword">auto</span>&amp; signers = stpTrans-&gt;peekFieldArray(<a class="code" href="namespaceripple.html#a22a86f3d2d6d958de794f8532d459bac">sfSigners</a>);</div>
<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; </div>
<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; <span class="keywordflow">if</span> (signers.empty())</div>
<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a5b6ce0616f6995340f4dd846660c3749">RPC::make_param_error</a>(<span class="stringliteral">&quot;tx_json.Signers array may not be empty.&quot;</span>);</div>
<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; </div>
<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; <span class="comment">// The Signers array may only contain Signer objects.</span></div>
<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; <span class="keywordflow">if</span> (<a class="codeRef" href="http://en.cppreference.com/w/cpp/algorithm/find.html">std::find_if_not</a>(</div>
<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; signers.begin(), signers.end(), [](<a class="code" href="classripple_1_1STObject.html">STObject</a> <span class="keyword">const</span>&amp; obj) {</div>
<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; return (</div>
<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; <span class="comment">// A Signer object always contains these fields and no</span></div>
<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; <span class="comment">// others.</span></div>
<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; obj.isFieldPresent(sfAccount) &amp;&amp;</div>
<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; obj.isFieldPresent(sfSigningPubKey) &amp;&amp;</div>
<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; obj.isFieldPresent(sfTxnSignature) &amp;&amp; obj.getCount() == 3);</div>
<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160; }) != signers.end())</div>
<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; {</div>
<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a5b6ce0616f6995340f4dd846660c3749">RPC::make_param_error</a>(</div>
<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; <span class="stringliteral">&quot;Signers array may only contain Signer entries.&quot;</span>);</div>
<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; }</div>
<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; </div>
<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; <span class="comment">// The array must be sorted and validated.</span></div>
<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; <span class="keyword">auto</span> err = <a class="code" href="namespaceripple_1_1RPC_1_1detail.html#ae55247d02759e159363f3e9e370eee81">sortAndValidateSigners</a>(signers, srcAddressID);</div>
<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceripple_1_1RPC.html#a1a79f0c33d1405fe85c40d63a49658bd">RPC::contains_error</a>(err))</div>
<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; <span class="keywordflow">return</span> err;</div>
<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; </div>
<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; <span class="comment">// Make sure the SerializedTransaction makes a legitimate Transaction.</span></div>
<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair&lt;Json::Value, Transaction::pointer&gt;</a> txn =</div>
<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160; <a class="code" href="namespaceripple_1_1RPC_1_1detail.html#abafd63792821196881f9a3a2de040aed">transactionConstructImpl</a>(stpTrans, ledger-&gt;rules(), app);</div>
<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160; </div>
<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160; <span class="keywordflow">if</span> (!txn.<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">second</a>)</div>
<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>&#160; <span class="keywordflow">return</span> txn.<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">first</a>;</div>
<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160; </div>
<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; <span class="comment">// Finally, submit the transaction.</span></div>
<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; {</div>
<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160; <span class="comment">// FIXME: For performance, should use asynch interface</span></div>
<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; processTransaction(txn.<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">second</a>, <a class="code" href="namespaceripple.html#a6909f61053b6e084f46665fa9f4ee673">isUnlimited</a>(role), <span class="keyword">true</span>, failType);</div>
<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; }</div>
<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160; <span class="keywordflow">catch</span> (<a class="codeRef" href="http://en.cppreference.com/w/cpp/error/exception.html">std::exception</a>&amp;)</div>
<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; {</div>
<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a2cd6200f6709780fcf1dd26ec9cd2866">RPC::make_error</a>(</div>
<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; <a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a839833d48b635d8df6a9176274ae922f">rpcINTERNAL</a>, <span class="stringliteral">&quot;Exception occurred during transaction submission.&quot;</span>);</div>
<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; }</div>
<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; </div>
<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC_1_1detail.html#af4dc49eb0a127a2e10548647378fea74">transactionFormatResultImpl</a>(txn.<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">second</a>, apiVersion);</div>
<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160;}</div>
<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; </div>
<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160;} <span class="comment">// namespace RPC</span></div>
<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160;} <span class="comment">// namespace ripple</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="astructripple_1_1JsonOptions_html_ab85e43ec84df987200d3355c3ba89f0aa3ace7cc623d6c6f5783c87db5efea1bc"><div class="ttname"><a href="structripple_1_1JsonOptions.html#ab85e43ec84df987200d3355c3ba89f0aa3ace7cc623d6c6f5783c87db5efea1bc">ripple::JsonOptions::disable_API_prior_V2</a></div><div class="ttdeci">@ disable_API_prior_V2</div><div class="ttdef"><b>Definition:</b> <a href="STBase_8h_source.html#l00044">STBase.h:44</a></div></div>
<div class="ttc" id="aclassripple_1_1RPC_1_1detail_1_1SigningForParams_html_a0ab3efc1640b95cd72718751e4efa282"><div class="ttname"><a href="classripple_1_1RPC_1_1detail_1_1SigningForParams.html#a0ab3efc1640b95cd72718751e4efa282">ripple::RPC::detail::SigningForParams::multiSigningAcctID_</a></div><div class="ttdeci">AccountID const *const multiSigningAcctID_</div><div class="ttdef"><b>Definition:</b> <a href="TransactionSign_8cpp_source.html#l00055">TransactionSign.cpp:55</a></div></div>
@@ -1333,7 +1332,6 @@ $(function() {
<div class="ttc" id="aclassripple_1_1Application_html"><div class="ttname"><a href="classripple_1_1Application.html">ripple::Application</a></div><div class="ttdef"><b>Definition:</b> <a href="Application_8h_source.html#l00116">Application.h:116</a></div></div>
<div class="ttc" id="aclassripple_1_1Application_html_a3f00a293d48fe74b97e406066362816d"><div class="ttname"><a href="classripple_1_1Application.html#a3f00a293d48fe74b97e406066362816d">ripple::Application::checkSigs</a></div><div class="ttdeci">virtual bool checkSigs() const =0</div></div>
<div class="ttc" id="anamespaceripple_html_aa9cb2090c47c4d84b469ae634cdfdc59"><div class="ttname"><a href="namespaceripple.html#aa9cb2090c47c4d84b469ae634cdfdc59">ripple::amountFromJsonNoThrow</a></div><div class="ttdeci">bool amountFromJsonNoThrow(STAmount &amp;result, Json::Value const &amp;jvSource)</div><div class="ttdef"><b>Definition:</b> <a href="STAmount_8cpp_source.html#l01032">STAmount.cpp:1032</a></div></div>
<div class="ttc" id="anamespaceripple_1_1RPC_html_a33378ee5e4181cef672fc56627fc0551"><div class="ttname"><a href="namespaceripple_1_1RPC.html#a33378ee5e4181cef672fc56627fc0551">ripple::RPC::SubmitSync</a></div><div class="ttdeci">SubmitSync</div><div class="ttdoc">Possible values for defining synchronous behavior of the transaction submission API.</div><div class="ttdef"><b>Definition:</b> <a href="SubmitSync_8h_source.html#l00036">SubmitSync.h:36</a></div></div>
<div class="ttc" id="anamespaceripple_html_aabe37451093c21757855542d68fba3ce"><div class="ttname"><a href="namespaceripple.html#aabe37451093c21757855542d68fba3ce">ripple::makeSlice</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_same&lt; T, char &gt;::value||std::is_same&lt; T, unsigned char &gt;::value, Slice &gt; makeSlice(std::array&lt; T, N &gt; const &amp;a)</div><div class="ttdef"><b>Definition:</b> <a href="Slice_8h_source.html#l00241">Slice.h:241</a></div></div>
<div class="ttc" id="astructripple_1_1RPC_1_1detail_1_1transactionPreProcessResult_html_a65d07eccb63a3e7258f101d60d21a6d3"><div class="ttname"><a href="structripple_1_1RPC_1_1detail_1_1transactionPreProcessResult.html#a65d07eccb63a3e7258f101d60d21a6d3">ripple::RPC::detail::transactionPreProcessResult::operator=</a></div><div class="ttdeci">transactionPreProcessResult &amp; operator=(transactionPreProcessResult const &amp;)=delete</div></div>
<div class="ttc" id="anamespaceripple_html_aadd701a1cb273bb797f6467ca8ee8fb1"><div class="ttname"><a href="namespaceripple.html#aadd701a1cb273bb797f6467ca8ee8fb1">ripple::mulDiv</a></div><div class="ttdeci">std::optional&lt; Dest &gt; mulDiv(Source1 value, Dest mul, Source2 div)</div><div class="ttdef"><b>Definition:</b> <a href="FeeUnits_8h_source.html#l00468">FeeUnits.h:468</a></div></div>
@@ -1396,7 +1394,6 @@ $(function() {
<div class="ttc" id="anamespaceripple_1_1RPC_html_a97b09da785b1944b7b1964eeff97a43b"><div class="ttname"><a href="namespaceripple_1_1RPC.html#a97b09da785b1944b7b1964eeff97a43b">ripple::RPC::object_field_error</a></div><div class="ttdeci">Json::Value object_field_error(std::string const &amp;name)</div><div class="ttdef"><b>Definition:</b> <a href="ErrorCodes_8h_source.html#l00282">ErrorCodes.h:282</a></div></div>
<div class="ttc" id="aalgorithm_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/header/algorithm.html">algorithm</a></div></div>
<div class="ttc" id="anamespaceripple_html_a32d6d3ce1a48272b677d2c88b1d30932"><div class="ttname"><a href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932">ripple::error_code_i</a></div><div class="ttdeci">error_code_i</div><div class="ttdef"><b>Definition:</b> <a href="ErrorCodes_8h_source.html#l00040">ErrorCodes.h:40</a></div></div>
<div class="ttc" id="anamespaceripple_1_1RPC_html_aca22c2f943740539f8a1560924cae9cd"><div class="ttname"><a href="namespaceripple_1_1RPC.html#aca22c2f943740539f8a1560924cae9cd">ripple::RPC::transactionSubmitMultiSigned</a></div><div class="ttdeci">Json::Value transactionSubmitMultiSigned(Json::Value jvRequest, unsigned apiVersion, NetworkOPs::FailHard failType, Role role, std::chrono::seconds validatedLedgerAge, Application &amp;app, ProcessTransactionFn const &amp;processTransaction, RPC::SubmitSync sync)</div><div class="ttdoc">Returns a Json::objectValue.</div><div class="ttdef"><b>Definition:</b> <a href="TransactionSign_8cpp_source.html#l01068">TransactionSign.cpp:1068</a></div></div>
<div class="ttc" id="anamespaceripple_html_ab5fadc2b2814a10d35c00c0a8241fbe7"><div class="ttname"><a href="namespaceripple.html#ab5fadc2b2814a10d35c00c0a8241fbe7">ripple::forceValidity</a></div><div class="ttdeci">void forceValidity(HashRouter &amp;router, uint256 const &amp;txid, Validity validity)</div><div class="ttdoc">Sets the validity of a given transaction in the cache.</div><div class="ttdef"><b>Definition:</b> <a href="apply_8cpp_source.html#l00089">apply.cpp:89</a></div></div>
<div class="ttc" id="aclassripple_1_1STPathSet_html_a22435db9f32e0a4de785c3249e0f917d"><div class="ttname"><a href="classripple_1_1STPathSet.html#a22435db9f32e0a4de785c3249e0f917d">ripple::STPathSet::empty</a></div><div class="ttdeci">bool empty() const</div><div class="ttdef"><b>Definition:</b> <a href="STPathSet_8h_source.html#l00503">STPathSet.h:503</a></div></div>
<div class="ttc" id="astructripple_1_1RPC_1_1detail_1_1transactionPreProcessResult_html_a3830c0378a1c85760748817ba2731cdc"><div class="ttname"><a href="structripple_1_1RPC_1_1detail_1_1transactionPreProcessResult.html#a3830c0378a1c85760748817ba2731cdc">ripple::RPC::detail::transactionPreProcessResult::transactionPreProcessResult</a></div><div class="ttdeci">transactionPreProcessResult(std::shared_ptr&lt; STTx &gt; &amp;&amp;st)</div><div class="ttdef"><b>Definition:</b> <a href="TransactionSign_8cpp_source.html#l00372">TransactionSign.cpp:372</a></div></div>
@@ -1415,7 +1412,7 @@ $(function() {
<div class="ttc" id="anamespaceripple_1_1RPC_html_a7bad76b302b3dcc91dd60c10830d0968"><div class="ttname"><a href="namespaceripple_1_1RPC.html#a7bad76b302b3dcc91dd60c10830d0968">ripple::RPC::expected_field_message</a></div><div class="ttdeci">std::string expected_field_message(std::string const &amp;name, std::string const &amp;type)</div><div class="ttdef"><b>Definition:</b> <a href="ErrorCodes_8h_source.html#l00318">ErrorCodes.h:318</a></div></div>
<div class="ttc" id="anamespaceripple_html_a32d6d3ce1a48272b677d2c88b1d30932a6f69b339743d28bbc421fa3b31437173"><div class="ttname"><a href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a6f69b339743d28bbc421fa3b31437173">ripple::rpcSUCCESS</a></div><div class="ttdeci">@ rpcSUCCESS</div><div class="ttdef"><b>Definition:</b> <a href="ErrorCodes_8h_source.html#l00044">ErrorCodes.h:44</a></div></div>
<div class="ttc" id="aclassripple_1_1STObject_1_1FieldErr_html"><div class="ttname"><a href="classripple_1_1STObject_1_1FieldErr.html">ripple::STObject::FieldErr</a></div><div class="ttdef"><b>Definition:</b> <a href="STObject_8h_source.html#l00647">STObject.h:647</a></div></div>
<div class="ttc" id="aclassripple_1_1Config_html_a8fdf3fd3b2112759b3a0a7fa4d8afa05"><div class="ttname"><a href="classripple_1_1Config.html#a8fdf3fd3b2112759b3a0a7fa4d8afa05">ripple::Config::reporting</a></div><div class="ttdeci">bool reporting() const</div><div class="ttdef"><b>Definition:</b> <a href="Config_8h_source.html#l00351">Config.h:351</a></div></div>
<div class="ttc" id="aclassripple_1_1Config_html_a8fdf3fd3b2112759b3a0a7fa4d8afa05"><div class="ttname"><a href="classripple_1_1Config.html#a8fdf3fd3b2112759b3a0a7fa4d8afa05">ripple::Config::reporting</a></div><div class="ttdeci">bool reporting() const</div><div class="ttdef"><b>Definition:</b> <a href="Config_8h_source.html#l00350">Config.h:350</a></div></div>
<div class="ttc" id="anamespaceripple_1_1RPC_1_1detail_html_a5243c8f203b40c3b2cedf27af29f7218"><div class="ttname"><a href="namespaceripple_1_1RPC_1_1detail.html#a5243c8f203b40c3b2cedf27af29f7218">ripple::RPC::detail::transactionPreProcessImpl</a></div><div class="ttdeci">static transactionPreProcessResult transactionPreProcessImpl(Json::Value &amp;params, Role role, SigningForParams &amp;signingArgs, std::chrono::seconds validatedLedgerAge, Application &amp;app)</div><div class="ttdef"><b>Definition:</b> <a href="TransactionSign_8cpp_source.html#l00379">TransactionSign.cpp:379</a></div></div>
<div class="ttc" id="aclassripple_1_1TxQ_html"><div class="ttname"><a href="classripple_1_1TxQ.html">ripple::TxQ</a></div><div class="ttdoc">Transaction Queue.</div><div class="ttdef"><b>Definition:</b> <a href="TxQ_8h_source.html#l00057">TxQ.h:57</a></div></div>
<div class="ttc" id="anamespaceripple_html_adb47f5675e01882e14c2cf9cc5700648"><div class="ttname"><a href="namespaceripple.html#adb47f5675e01882e14c2cf9cc5700648">ripple::checkValidity</a></div><div class="ttdeci">std::pair&lt; Validity, std::string &gt; checkValidity(HashRouter &amp;router, STTx const &amp;tx, Rules const &amp;rules, Config const &amp;config)</div><div class="ttdoc">Checks transaction signature and local checks.</div><div class="ttdef"><b>Definition:</b> <a href="apply_8cpp_source.html#l00037">apply.cpp:37</a></div></div>
@@ -1426,12 +1423,11 @@ $(function() {
<div class="ttc" id="aclassripple_1_1PublicKey_html"><div class="ttname"><a href="classripple_1_1PublicKey.html">ripple::PublicKey</a></div><div class="ttdoc">A public key.</div><div class="ttdef"><b>Definition:</b> <a href="PublicKey_8h_source.html#l00061">PublicKey.h:61</a></div></div>
<div class="ttc" id="anamespaceripple_1_1keylet_html_a50c370db96b4fdcdd202d9c2c38afce9"><div class="ttname"><a href="namespaceripple_1_1keylet.html#a50c370db96b4fdcdd202d9c2c38afce9">ripple::keylet::account</a></div><div class="ttdeci">Keylet account(AccountID const &amp;id) noexcept</div><div class="ttdoc">AccountID root.</div><div class="ttdef"><b>Definition:</b> <a href="Indexes_8cpp_source.html#l00142">Indexes.cpp:142</a></div></div>
<div class="ttc" id="aclassripple_1_1Config_html"><div class="ttname"><a href="classripple_1_1Config.html">ripple::Config</a></div><div class="ttdef"><b>Definition:</b> <a href="Config_8h_source.html#l00092">Config.h:92</a></div></div>
<div class="ttc" id="anamespaceripple_1_1RPC_html_ac16a3a5fc27cf3801186c4d19bc934bc"><div class="ttname"><a href="namespaceripple_1_1RPC.html#ac16a3a5fc27cf3801186c4d19bc934bc">ripple::RPC::transactionSubmit</a></div><div class="ttdeci">Json::Value transactionSubmit(Json::Value jvRequest, unsigned apiVersion, NetworkOPs::FailHard failType, Role role, std::chrono::seconds validatedLedgerAge, Application &amp;app, ProcessTransactionFn const &amp;processTransaction, RPC::SubmitSync sync)</div><div class="ttdoc">Returns a Json::objectValue.</div><div class="ttdef"><b>Definition:</b> <a href="TransactionSign_8cpp_source.html#l00830">TransactionSign.cpp:830</a></div></div>
<div class="ttc" id="anamespaceripple_html_a32d6d3ce1a48272b677d2c88b1d30932afff1867365ccf8f1661c8d796c93ef4c"><div class="ttname"><a href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932afff1867365ccf8f1661c8d796c93ef4c">ripple::rpcSRC_ACT_MISSING</a></div><div class="ttdeci">@ rpcSRC_ACT_MISSING</div><div class="ttdef"><b>Definition:</b> <a href="ErrorCodes_8h_source.html#l00121">ErrorCodes.h:121</a></div></div>
<div class="ttc" id="aclassripple_1_1Application_html_aca56b7c63030174e59720ab51d739422"><div class="ttname"><a href="classripple_1_1Application.html#aca56b7c63030174e59720ab51d739422">ripple::Application::config</a></div><div class="ttdeci">virtual Config &amp; config()=0</div></div>
<div class="ttc" id="anamespaceripple_html_a32d6d3ce1a48272b677d2c88b1d30932a11b93b10f2466e402c74aa4a9b5cb2f7"><div class="ttname"><a href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a11b93b10f2466e402c74aa4a9b5cb2f7">ripple::rpcALREADY_SINGLE_SIG</a></div><div class="ttdeci">@ rpcALREADY_SINGLE_SIG</div><div class="ttdef"><b>Definition:</b> <a href="ErrorCodes_8h_source.html#l00092">ErrorCodes.h:92</a></div></div>
<div class="ttc" id="anamespaceripple_1_1RPC_1_1detail_html_ae55247d02759e159363f3e9e370eee81"><div class="ttname"><a href="namespaceripple_1_1RPC_1_1detail.html#ae55247d02759e159363f3e9e370eee81">ripple::RPC::detail::sortAndValidateSigners</a></div><div class="ttdeci">static Json::Value sortAndValidateSigners(STArray &amp;signers, AccountID const &amp;signingForID)</div><div class="ttdef"><b>Definition:</b> <a href="TransactionSign_8cpp_source.html#l00910">TransactionSign.cpp:910</a></div></div>
<div class="ttc" id="aclassripple_1_1Config_html_a55cd8ef67ffbf6a137e0dd71bc8151c6"><div class="ttname"><a href="classripple_1_1Config.html#a55cd8ef67ffbf6a137e0dd71bc8151c6">ripple::Config::standalone</a></div><div class="ttdeci">bool standalone() const</div><div class="ttdef"><b>Definition:</b> <a href="Config_8h_source.html#l00346">Config.h:346</a></div></div>
<div class="ttc" id="aclassripple_1_1Config_html_a55cd8ef67ffbf6a137e0dd71bc8151c6"><div class="ttname"><a href="classripple_1_1Config.html#a55cd8ef67ffbf6a137e0dd71bc8151c6">ripple::Config::standalone</a></div><div class="ttdeci">bool standalone() const</div><div class="ttdef"><b>Definition:</b> <a href="Config_8h_source.html#l00345">Config.h:345</a></div></div>
<div class="ttc" id="anamespaceripple_html_a32d6d3ce1a48272b677d2c88b1d30932ae44751c9b253c3b447721a315c5525c7"><div class="ttname"><a href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932ae44751c9b253c3b447721a315c5525c7">ripple::rpcHIGH_FEE</a></div><div class="ttdeci">@ rpcHIGH_FEE</div><div class="ttdef"><b>Definition:</b> <a href="ErrorCodes_8h_source.html#l00058">ErrorCodes.h:58</a></div></div>
<div class="ttc" id="anamespaceripple_html_a614d8681c8dff84ac2257939751987c5"><div class="ttname"><a href="namespaceripple.html#a614d8681c8dff84ac2257939751987c5">ripple::calcAccountID</a></div><div class="ttdeci">AccountID calcAccountID(PublicKey const &amp;pk)</div><div class="ttdef"><b>Definition:</b> <a href="AccountID_8cpp_source.html#l00158">AccountID.cpp:158</a></div></div>
<div class="ttc" id="aclassripple_1_1STArray_html"><div class="ttname"><a href="classripple_1_1STArray.html">ripple::STArray</a></div><div class="ttdef"><b>Definition:</b> <a href="STArray_8h_source.html#l00028">STArray.h:28</a></div></div>
@@ -1440,17 +1436,17 @@ $(function() {
<div class="ttc" id="anamespaceripple_1_1RPC_html_a0e52076e77d0078231dda289f8048200"><div class="ttname"><a href="namespaceripple_1_1RPC.html#a0e52076e77d0078231dda289f8048200">ripple::RPC::transactionSign</a></div><div class="ttdeci">Json::Value transactionSign(Json::Value jvRequest, unsigned apiVersion, NetworkOPs::FailHard failType, Role role, std::chrono::seconds validatedLedgerAge, Application &amp;app)</div><div class="ttdoc">Returns a Json::objectValue.</div><div class="ttdef"><b>Definition:</b> <a href="TransactionSign_8cpp_source.html#l00792">TransactionSign.cpp:792</a></div></div>
<div class="ttc" id="aclassripple_1_1STAmount_html"><div class="ttname"><a href="classripple_1_1STAmount.html">ripple::STAmount</a></div><div class="ttdef"><b>Definition:</b> <a href="STAmount_8h_source.html#l00046">STAmount.h:46</a></div></div>
<div class="ttc" id="aclassripple_1_1Serializer_html_a394c3299f6cfcebdaa4bc98ec0c602d6"><div class="ttname"><a href="classripple_1_1Serializer.html#a394c3299f6cfcebdaa4bc98ec0c602d6">ripple::Serializer::slice</a></div><div class="ttdeci">Slice slice() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="Serializer_8h_source.html#l00064">Serializer.h:64</a></div></div>
<div class="ttc" id="aclassripple_1_1Config_html_a60e194c37b2e6e2a6cbaab170579fd15"><div class="ttname"><a href="classripple_1_1Config.html#a60e194c37b2e6e2a6cbaab170579fd15">ripple::Config::BETA_RPC_API</a></div><div class="ttdeci">bool BETA_RPC_API</div><div class="ttdef"><b>Definition:</b> <a href="Config_8h_source.html#l00299">Config.h:299</a></div></div>
<div class="ttc" id="aclassripple_1_1Config_html_a60e194c37b2e6e2a6cbaab170579fd15"><div class="ttname"><a href="classripple_1_1Config.html#a60e194c37b2e6e2a6cbaab170579fd15">ripple::Config::BETA_RPC_API</a></div><div class="ttdeci">bool BETA_RPC_API</div><div class="ttdef"><b>Definition:</b> <a href="Config_8h_source.html#l00298">Config.h:298</a></div></div>
<div class="ttc" id="aclassripple_1_1TxQ_html_a5bffe9eec3a97e1b5bc209e0edf17fda"><div class="ttname"><a href="classripple_1_1TxQ.html#a5bffe9eec3a97e1b5bc209e0edf17fda">ripple::TxQ::nextQueuableSeq</a></div><div class="ttdeci">SeqProxy nextQueuableSeq(std::shared_ptr&lt; SLE const &gt; const &amp;sleAccount) const</div><div class="ttdoc">Return the next sequence that would go in the TxQ for an account.</div><div class="ttdef"><b>Definition:</b> <a href="TxQ_8cpp_source.html#l01587">TxQ.cpp:1587</a></div></div>
<div class="ttc" id="astructripple_1_1RPC_1_1detail_1_1transactionPreProcessResult_html"><div class="ttname"><a href="structripple_1_1RPC_1_1detail_1_1transactionPreProcessResult.html">ripple::RPC::detail::transactionPreProcessResult</a></div><div class="ttdef"><b>Definition:</b> <a href="TransactionSign_8cpp_source.html#l00353">TransactionSign.cpp:353</a></div></div>
<div class="ttc" id="aclassripple_1_1SerialIter_html"><div class="ttname"><a href="classripple_1_1SerialIter.html">ripple::SerialIter</a></div><div class="ttdef"><b>Definition:</b> <a href="Serializer_8h_source.html#l00311">Serializer.h:311</a></div></div>
<div class="ttc" id="aclassJson_1_1Value_html_ad6d4df2227321bab05e86667609a7fad"><div class="ttname"><a href="classJson_1_1Value.html#ad6d4df2227321bab05e86667609a7fad">Json::Value::isMember</a></div><div class="ttdeci">bool isMember(const char *key) const</div><div class="ttdoc">Return true if the object has a member named key.</div><div class="ttdef"><b>Definition:</b> <a href="json__value_8cpp_source.html#l00932">json_value.cpp:932</a></div></div>
<div class="ttc" id="anamespaceripple_html_a32d6d3ce1a48272b677d2c88b1d30932a74511028d6a24bc8826f5fc70ca61ef5"><div class="ttname"><a href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a74511028d6a24bc8826f5fc70ca61ef5">ripple::rpcNO_CURRENT</a></div><div class="ttdeci">@ rpcNO_CURRENT</div><div class="ttdef"><b>Definition:</b> <a href="ErrorCodes_8h_source.html#l00065">ErrorCodes.h:65</a></div></div>
<div class="ttc" id="anamespaceripple_1_1RPC_html_a86285e11e9d368859ec6b73014300564"><div class="ttname"><a href="namespaceripple_1_1RPC.html#a86285e11e9d368859ec6b73014300564">ripple::RPC::transactionSubmit</a></div><div class="ttdeci">Json::Value transactionSubmit(Json::Value jvRequest, unsigned apiVersion, NetworkOPs::FailHard failType, Role role, std::chrono::seconds validatedLedgerAge, Application &amp;app, ProcessTransactionFn const &amp;processTransaction)</div><div class="ttdoc">Returns a Json::objectValue.</div><div class="ttdef"><b>Definition:</b> <a href="TransactionSign_8cpp_source.html#l00830">TransactionSign.cpp:830</a></div></div>
<div class="ttc" id="anamespaceripple_1_1RPC_html_aced54d69612c2b58940e2132e905dfc6"><div class="ttname"><a href="namespaceripple_1_1RPC.html#aced54d69612c2b58940e2132e905dfc6">ripple::RPC::transactionSignFor</a></div><div class="ttdeci">Json::Value transactionSignFor(Json::Value jvRequest, unsigned apiVersion, NetworkOPs::FailHard failType, Role role, std::chrono::seconds validatedLedgerAge, Application &amp;app)</div><div class="ttdoc">Returns a Json::objectValue.</div><div class="ttdef"><b>Definition:</b> <a href="TransactionSign_8cpp_source.html#l00960">TransactionSign.cpp:960</a></div></div>
<div class="ttc" id="aclassripple_1_1feeunit_1_1TaggedFee_html"><div class="ttname"><a href="classripple_1_1feeunit_1_1TaggedFee.html">ripple::feeunit::TaggedFee</a></div><div class="ttdef"><b>Definition:</b> <a href="FeeUnits_8h_source.html#l00070">FeeUnits.h:70</a></div></div>
<div class="ttc" id="anamespaceripple_html_a32d6d3ce1a48272b677d2c88b1d30932a63fd0c00dcecf06df448bf7eddf6bd8c"><div class="ttname"><a href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a63fd0c00dcecf06df448bf7eddf6bd8c">ripple::rpcALREADY_MULTISIG</a></div><div class="ttdeci">@ rpcALREADY_MULTISIG</div><div class="ttdef"><b>Definition:</b> <a href="ErrorCodes_8h_source.html#l00091">ErrorCodes.h:91</a></div></div>
<div class="ttc" id="anamespaceripple_1_1RPC_html_a33378ee5e4181cef672fc56627fc0551a63ad9d34f3503826e5f649ae6b7ac92c"><div class="ttname"><a href="namespaceripple_1_1RPC.html#a33378ee5e4181cef672fc56627fc0551a63ad9d34f3503826e5f649ae6b7ac92c">ripple::RPC::SubmitSync::sync</a></div><div class="ttdeci">@ sync</div></div>
<div class="ttc" id="aclassripple_1_1NetworkOPs_html_ada325f492d3aa1aa62d4b159e106c37a"><div class="ttname"><a href="classripple_1_1NetworkOPs.html#ada325f492d3aa1aa62d4b159e106c37a">ripple::NetworkOPs::FailHard</a></div><div class="ttdeci">FailHard</div><div class="ttdef"><b>Definition:</b> <a href="NetworkOPs_8h_source.html#l00095">NetworkOPs.h:95</a></div></div>
<div class="ttc" id="aclassripple_1_1NetworkOPs_html_ada325f492d3aa1aa62d4b159e106c37a"><div class="ttname"><a href="classripple_1_1NetworkOPs.html#ada325f492d3aa1aa62d4b159e106c37a">ripple::NetworkOPs::FailHard</a></div><div class="ttdeci">FailHard</div><div class="ttdef"><b>Definition:</b> <a href="NetworkOPs_8h_source.html#l00091">NetworkOPs.h:91</a></div></div>
<div class="ttc" id="anamespaceripple_html_a4bfa815b348a23b5cd7ba52b04d21e43"><div class="ttname"><a href="namespaceripple.html#a4bfa815b348a23b5cd7ba52b04d21e43">ripple::sfSigner</a></div><div class="ttdeci">const SField sfSigner</div></div>
<div class="ttc" id="aclassripple_1_1Config_html_a22e402f03909935b07b56ffeb7069b0f"><div class="ttname"><a href="classripple_1_1Config.html#a22e402f03909935b07b56ffeb7069b0f">ripple::Config::PATH_SEARCH_OLD</a></div><div class="ttdeci">int PATH_SEARCH_OLD</div><div class="ttdef"><b>Definition:</b> <a href="Config_8h_source.html#l00205">Config.h:205</a></div></div>
<div class="ttc" id="anamespaceripple_1_1RPC_1_1detail_html_af4dc49eb0a127a2e10548647378fea74"><div class="ttname"><a href="namespaceripple_1_1RPC_1_1detail.html#af4dc49eb0a127a2e10548647378fea74">ripple::RPC::detail::transactionFormatResultImpl</a></div><div class="ttdeci">static Json::Value transactionFormatResultImpl(Transaction::pointer tpTrans, unsigned apiVersion)</div><div class="ttdef"><b>Definition:</b> <a href="TransactionSign_8cpp_source.html#l00649">TransactionSign.cpp:649</a></div></div>
@@ -1467,7 +1463,7 @@ $(function() {
<div class="ttc" id="anamespaceripple_html_a32d6d3ce1a48272b677d2c88b1d30932a967859223f75630b2c78876fca0c0436"><div class="ttname"><a href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a967859223f75630b2c78876fca0c0436">ripple::rpcSRC_ACT_MALFORMED</a></div><div class="ttdeci">@ rpcSRC_ACT_MALFORMED</div><div class="ttdef"><b>Definition:</b> <a href="ErrorCodes_8h_source.html#l00120">ErrorCodes.h:120</a></div></div>
<div class="ttc" id="aclassripple_1_1STAmount_html_af3a02d7e9cd0b11509a90e0e6980bd64"><div class="ttname"><a href="classripple_1_1STAmount.html#af3a02d7e9cd0b11509a90e0e6980bd64">ripple::STAmount::native</a></div><div class="ttdeci">bool native() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="STAmount_8h_source.html#l00332">STAmount.h:332</a></div></div>
<div class="ttc" id="anamespaceripple_html"><div class="ttname"><a href="namespaceripple.html">ripple</a></div><div class="ttdoc">Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.</div><div class="ttdef"><b>Definition:</b> <a href="RCLCensorshipDetector_8h_source.html#l00029">RCLCensorshipDetector.h:29</a></div></div>
<div class="ttc" id="anamespaceripple_html_ae04027bd22a38d096b7f711575a3ba59"><div class="ttname"><a href="namespaceripple.html#ae04027bd22a38d096b7f711575a3ba59">ripple::transResultInfo</a></div><div class="ttdeci">bool transResultInfo(TER code, std::string &amp;token, std::string &amp;text)</div><div class="ttdef"><b>Definition:</b> <a href="TER_8cpp_source.html#l00226">TER.cpp:226</a></div></div>
<div class="ttc" id="anamespaceripple_html_ae04027bd22a38d096b7f711575a3ba59"><div class="ttname"><a href="namespaceripple.html#ae04027bd22a38d096b7f711575a3ba59">ripple::transResultInfo</a></div><div class="ttdeci">bool transResultInfo(TER code, std::string &amp;token, std::string &amp;text)</div><div class="ttdef"><b>Definition:</b> <a href="TER_8cpp_source.html#l00225">TER.cpp:225</a></div></div>
<div class="ttc" id="aclassripple_1_1RPC_1_1LegacyPathFind_html_a4a435bef7913d5f5fd52be0be21d7dad"><div class="ttname"><a href="classripple_1_1RPC_1_1LegacyPathFind.html#a4a435bef7913d5f5fd52be0be21d7dad">ripple::RPC::LegacyPathFind::isOk</a></div><div class="ttdeci">bool isOk() const</div><div class="ttdef"><b>Definition:</b> <a href="LegacyPathFind_8h_source.html#l00038">LegacyPathFind.h:38</a></div></div>
<div class="ttc" id="aclassripple_1_1Application_html_a2897c28a5b5040e80e66f676d201d03f"><div class="ttname"><a href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">ripple::Application::journal</a></div><div class="ttdeci">virtual beast::Journal journal(std::string const &amp;name)=0</div></div>
<div class="ttc" id="astructripple_1_1JsonOptions_html_ab85e43ec84df987200d3355c3ba89f0aa1917451e3686dfe8d5016670eb87ab33"><div class="ttname"><a href="structripple_1_1JsonOptions.html#ab85e43ec84df987200d3355c3ba89f0aa1917451e3686dfe8d5016670eb87ab33">ripple::JsonOptions::none</a></div><div class="ttdeci">@ none</div><div class="ttdef"><b>Definition:</b> <a href="STBase_8h_source.html#l00042">STBase.h:42</a></div></div>
@@ -1480,9 +1476,10 @@ $(function() {
<div class="ttc" id="aclassripple_1_1LoadFeeTrack_html_a140bbd5a2de7340712078a31ad712053"><div class="ttname"><a href="classripple_1_1LoadFeeTrack.html#a140bbd5a2de7340712078a31ad712053">ripple::LoadFeeTrack::isLoadedCluster</a></div><div class="ttdeci">bool isLoadedCluster() const</div><div class="ttdef"><b>Definition:</b> <a href="LoadFeeTrack_8h_source.html#l00133">LoadFeeTrack.h:133</a></div></div>
<div class="ttc" id="aclassripple_1_1STPathSet_html_a98d06aae5b406ad1633092c13af49408"><div class="ttname"><a href="classripple_1_1STPathSet.html#a98d06aae5b406ad1633092c13af49408">ripple::STPathSet::getJson</a></div><div class="ttdeci">Json::Value getJson(JsonOptions) const override</div><div class="ttdef"><b>Definition:</b> <a href="STPathSet_8cpp_source.html#l00193">STPathSet.cpp:193</a></div></div>
<div class="ttc" id="aclassripple_1_1RPC_1_1detail_1_1SigningForParams_html_ac10e287a84ad4aa4e2de888297054eb4"><div class="ttname"><a href="classripple_1_1RPC_1_1detail_1_1SigningForParams.html#ac10e287a84ad4aa4e2de888297054eb4">ripple::RPC::detail::SigningForParams::isSingleSigning</a></div><div class="ttdeci">bool isSingleSigning() const</div><div class="ttdef"><b>Definition:</b> <a href="TransactionSign_8cpp_source.html#l00088">TransactionSign.cpp:88</a></div></div>
<div class="ttc" id="anamespaceripple_1_1RPC_html_a1aaebf843616a5dd8eacb3c5e7af9540"><div class="ttname"><a href="namespaceripple_1_1RPC.html#a1aaebf843616a5dd8eacb3c5e7af9540">ripple::RPC::transactionSubmitMultiSigned</a></div><div class="ttdeci">Json::Value transactionSubmitMultiSigned(Json::Value jvRequest, unsigned apiVersion, NetworkOPs::FailHard failType, Role role, std::chrono::seconds validatedLedgerAge, Application &amp;app, ProcessTransactionFn const &amp;processTransaction)</div><div class="ttdoc">Returns a Json::objectValue.</div><div class="ttdef"><b>Definition:</b> <a href="TransactionSign_8cpp_source.html#l01068">TransactionSign.cpp:1068</a></div></div>
<div class="ttc" id="aadjacent_find_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/algorithm/adjacent_find.html">std::adjacent_find</a></div><div class="ttdeci">T adjacent_find(T... args)</div></div>
<div class="ttc" id="aclassripple_1_1RPC_1_1detail_1_1SigningForParams_html_a897684e7173a1dfbfd8472c493823f8f"><div class="ttname"><a href="classripple_1_1RPC_1_1detail_1_1SigningForParams.html#a897684e7173a1dfbfd8472c493823f8f">ripple::RPC::detail::SigningForParams::isMultiSigning</a></div><div class="ttdeci">bool isMultiSigning() const</div><div class="ttdef"><b>Definition:</b> <a href="TransactionSign_8cpp_source.html#l00080">TransactionSign.cpp:80</a></div></div>
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_a50acc6cfefb3886a65affa2e213f089d"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#a50acc6cfefb3886a65affa2e213f089d">ripple::LedgerMaster::getValidatedLedger</a></div><div class="ttdeci">std::shared_ptr&lt; Ledger const &gt; getValidatedLedger()</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8cpp_source.html#l01715">LedgerMaster.cpp:1715</a></div></div>
<div class="ttc" id="aclassripple_1_1LedgerMaster_html_a50acc6cfefb3886a65affa2e213f089d"><div class="ttname"><a href="classripple_1_1LedgerMaster.html#a50acc6cfefb3886a65affa2e213f089d">ripple::LedgerMaster::getValidatedLedger</a></div><div class="ttdeci">std::shared_ptr&lt; Ledger const &gt; getValidatedLedger()</div><div class="ttdef"><b>Definition:</b> <a href="LedgerMaster_8cpp_source.html#l01712">LedgerMaster.cpp:1712</a></div></div>
<div class="ttc" id="aempty_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/string/basic_string/empty.html">std::string::empty</a></div><div class="ttdeci">T empty(T... args)</div></div>
<div class="ttc" id="aclassripple_1_1Rules_html"><div class="ttname"><a href="classripple_1_1Rules.html">ripple::Rules</a></div><div class="ttdoc">Rules controlling protocol behavior.</div><div class="ttdef"><b>Definition:</b> <a href="Rules_8h_source.html#l00033">Rules.h:33</a></div></div>
<div class="ttc" id="anamespaceripple_1_1RPC_1_1detail_html_a9951e7bcb8c906eb76608e94b1f56320"><div class="ttname"><a href="namespaceripple_1_1RPC_1_1detail.html#a9951e7bcb8c906eb76608e94b1f56320">ripple::RPC::detail::checkMultiSignFields</a></div><div class="ttdeci">static Json::Value checkMultiSignFields(Json::Value const &amp;jvRequest)</div><div class="ttdef"><b>Definition:</b> <a href="TransactionSign_8cpp_source.html#l00879">TransactionSign.cpp:879</a></div></div>