This commit is contained in:
intelliot
2023-08-21 23:24:10 +00:00
parent 6f1ca2cba3
commit 2082d336dc
2389 changed files with 122140 additions and 114310 deletions

View File

@@ -865,40 +865,40 @@ $(function() {
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160;}</div>
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; </div>
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160;<a class="code" href="classJson_1_1Value.html">Json::Value</a></div>
<div class="line"><a name="l00799"></a><span class="lineno"><a class="line" href="namespaceripple_1_1RPC.html#a0178ac853fe8968c19f9d5da694f47fd"> 799</a></span>&#160;<a class="code" href="namespaceripple_1_1RPC.html#a0178ac853fe8968c19f9d5da694f47fd">transactionSubmit</a>(</div>
<div class="line"><a name="l00799"></a><span class="lineno"><a class="line" href="namespaceripple_1_1RPC.html#aec2860565139f7e6f21a31ce991f96f4"> 799</a></span>&#160;<a class="code" href="namespaceripple_1_1RPC.html#aec2860565139f7e6f21a31ce991f96f4">transactionSubmit</a>(</div>
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> jvRequest,</div>
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; <a class="code" href="classripple_1_1NetworkOPs.html#ada325f492d3aa1aa62d4b159e106c37a">NetworkOPs::FailHard</a> failType,</div>
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; <a class="code" href="namespaceripple.html#ae08fe18f17b24699ce41d3898fbb8c2c">Role</a> role,</div>
<div class="line"><a name="l00803"></a><span class="lineno"> 803</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="l00804"></a><span class="lineno"> 804</span>&#160; <a class="code" href="classripple_1_1Application.html">Application</a>&amp; app,</div>
<div class="line"><a name="l00805"></a><span class="lineno"> 805</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="l00806"></a><span class="lineno"> 806</span>&#160;{</div>
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <span class="keyword">using namespace </span>detail;</div>
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; </div>
<div class="line"><a name="l00809"></a><span class="lineno"> 809</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="l00810"></a><span class="lineno"> 810</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="l00811"></a><span class="lineno"> 811</span>&#160; JLOG(j.debug()) &lt;&lt; <span class="stringliteral">&quot;transactionSubmit: &quot;</span> &lt;&lt; jvRequest;</div>
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; </div>
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <span class="comment">// Add and amend fields based on the transaction type.</span></div>
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; SigningForParams signForParams;</div>
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; transactionPreProcessResult preprocResult = <a class="code" href="namespaceripple_1_1RPC_1_1detail.html#a5243c8f203b40c3b2cedf27af29f7218">transactionPreProcessImpl</a>(</div>
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; jvRequest, role, signForParams, validatedLedgerAge, app);</div>
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; </div>
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keywordflow">if</span> (!preprocResult.second)</div>
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="keywordflow">return</span> preprocResult.first;</div>
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; </div>
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="comment">// Make sure the STTx makes a legitimate Transaction.</span></div>
<div class="line"><a name="l00822"></a><span class="lineno"> 822</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="l00823"></a><span class="lineno"> 823</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="l00824"></a><span class="lineno"> 824</span>&#160; </div>
<div class="line"><a name="l00825"></a><span class="lineno"> 825</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="l00826"></a><span class="lineno"> 826</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="l00827"></a><span class="lineno"> 827</span>&#160; </div>
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="comment">// Finally, submit the transaction.</span></div>
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; {</div>
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; <span class="comment">// FIXME: For performance, should use asynch interface</span></div>
<div class="line"><a name="l00832"></a><span class="lineno"> 832</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="l00805"></a><span class="lineno"> 805</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="l00806"></a><span class="lineno"> 806</span>&#160; <a class="code" href="namespaceripple_1_1RPC.html#a33378ee5e4181cef672fc56627fc0551">RPC::SubmitSync</a> sync)</div>
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160;{</div>
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <span class="keyword">using namespace </span>detail;</div>
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; </div>
<div class="line"><a name="l00810"></a><span class="lineno"> 810</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="l00811"></a><span class="lineno"> 811</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="l00812"></a><span class="lineno"> 812</span>&#160; JLOG(j.debug()) &lt;&lt; <span class="stringliteral">&quot;transactionSubmit: &quot;</span> &lt;&lt; jvRequest;</div>
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; </div>
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="comment">// Add and amend fields based on the transaction type.</span></div>
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; SigningForParams signForParams;</div>
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; transactionPreProcessResult preprocResult = <a class="code" href="namespaceripple_1_1RPC_1_1detail.html#a5243c8f203b40c3b2cedf27af29f7218">transactionPreProcessImpl</a>(</div>
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; jvRequest, role, signForParams, validatedLedgerAge, app);</div>
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; </div>
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="keywordflow">if</span> (!preprocResult.second)</div>
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="keywordflow">return</span> preprocResult.first;</div>
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; </div>
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <span class="comment">// Make sure the STTx makes a legitimate Transaction.</span></div>
<div class="line"><a name="l00823"></a><span class="lineno"> 823</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="l00824"></a><span class="lineno"> 824</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="l00825"></a><span class="lineno"> 825</span>&#160; </div>
<div class="line"><a name="l00826"></a><span class="lineno"> 826</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="l00827"></a><span class="lineno"> 827</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="l00828"></a><span class="lineno"> 828</span>&#160; </div>
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="comment">// Finally, submit the transaction.</span></div>
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; {</div>
<div class="line"><a name="l00832"></a><span class="lineno"> 832</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="l00833"></a><span class="lineno"> 833</span>&#160; }</div>
<div class="line"><a name="l00834"></a><span class="lineno"> 834</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="l00835"></a><span class="lineno"> 835</span>&#160; {</div>
@@ -1099,204 +1099,206 @@ $(function() {
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160;}</div>
<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160; </div>
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160;<a class="code" href="classJson_1_1Value.html">Json::Value</a></div>
<div class="line"><a name="l01035"></a><span class="lineno"><a class="line" href="namespaceripple_1_1RPC.html#a97488c6a780e56f3116fdd0a2e8128a2"> 1035</a></span>&#160;<a class="code" href="namespaceripple_1_1RPC.html#a97488c6a780e56f3116fdd0a2e8128a2">transactionSubmitMultiSigned</a>(</div>
<div class="line"><a name="l01035"></a><span class="lineno"><a class="line" href="namespaceripple_1_1RPC.html#a2fb0d86fd372bbf3ce906631e0aeca73"> 1035</a></span>&#160;<a class="code" href="namespaceripple_1_1RPC.html#a2fb0d86fd372bbf3ce906631e0aeca73">transactionSubmitMultiSigned</a>(</div>
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> jvRequest,</div>
<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; <a class="code" href="classripple_1_1NetworkOPs.html#ada325f492d3aa1aa62d4b159e106c37a">NetworkOPs::FailHard</a> failType,</div>
<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; <a class="code" href="namespaceripple.html#ae08fe18f17b24699ce41d3898fbb8c2c">Role</a> role,</div>
<div class="line"><a name="l01039"></a><span class="lineno"> 1039</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="l01040"></a><span class="lineno"> 1040</span>&#160; <a class="code" href="classripple_1_1Application.html">Application</a>&amp; app,</div>
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</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="l01042"></a><span class="lineno"> 1042</span>&#160;{</div>
<div class="line"><a name="l01043"></a><span class="lineno"> 1043</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="l01044"></a><span class="lineno"> 1044</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="l01045"></a><span class="lineno"> 1045</span>&#160; JLOG(j.debug()) &lt;&lt; <span class="stringliteral">&quot;transactionSubmitMultiSigned: &quot;</span> &lt;&lt; jvRequest;</div>
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; </div>
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</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="l01048"></a><span class="lineno"> 1048</span>&#160; <span class="comment">// be passed in by the caller.</span></div>
<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; <span class="keyword">using namespace </span>detail;</div>
<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; {</div>
<div class="line"><a name="l01051"></a><span class="lineno"> 1051</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="l01052"></a><span class="lineno"> 1052</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="l01053"></a><span class="lineno"> 1053</span>&#160; <span class="keywordflow">return</span> err;</div>
<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; }</div>
<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; </div>
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</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="l01057"></a><span class="lineno"> 1057</span>&#160; </div>
<div class="line"><a name="l01058"></a><span class="lineno"> 1058</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="l01059"></a><span class="lineno"> 1059</span>&#160; tx_json,</div>
<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; role,</div>
<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; <span class="keyword">true</span>,</div>
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; validatedLedgerAge,</div>
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; app.<a class="code" href="classripple_1_1Application.html#aca56b7c63030174e59720ab51d739422">config</a>(),</div>
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; app.<a class="code" href="classripple_1_1Application.html#a426bdbb87f6dc2082cf6f418526901cb">getFeeTrack</a>(),</div>
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</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="l01066"></a><span class="lineno"> 1066</span>&#160; </div>
<div class="line"><a name="l01067"></a><span class="lineno"> 1067</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="l01068"></a><span class="lineno"> 1068</span>&#160; <span class="keywordflow">return</span> std::move(txJsonResult);</div>
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160; </div>
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</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="l01071"></a><span class="lineno"> 1071</span>&#160; ledger-&gt;read(<a class="code" href="namespaceripple_1_1keylet.html#a50c370db96b4fdcdd202d9c2c38afce9">keylet::account</a>(srcAddressID));</div>
<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160; </div>
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; <span class="keywordflow">if</span> (!sle)</div>
<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; {</div>
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; <span class="comment">// If did not find account, error.</span></div>
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; JLOG(j.debug())</div>
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; &lt;&lt; <span class="stringliteral">&quot;transactionSubmitMultiSigned: Failed to find source account &quot;</span></div>
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</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="l01079"></a><span class="lineno"> 1079</span>&#160; </div>
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</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="l01081"></a><span class="lineno"> 1081</span>&#160; }</div>
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160; </div>
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; {</div>
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</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="l01085"></a><span class="lineno"> 1085</span>&#160; jvRequest,</div>
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; role,</div>
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; <span class="keyword">false</span>,</div>
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; app.<a class="code" href="classripple_1_1Application.html#aca56b7c63030174e59720ab51d739422">config</a>(),</div>
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; app.<a class="code" href="classripple_1_1Application.html#a426bdbb87f6dc2082cf6f418526901cb">getFeeTrack</a>(),</div>
<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; app.<a class="code" href="classripple_1_1Application.html#a9865710c130bf4427842a544b2b7f077">getTxQ</a>(),</div>
<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; app);</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="keywordflow">if</span> (<a class="code" href="namespaceripple_1_1RPC.html#a1a79f0c33d1405fe85c40d63a49658bd">RPC::contains_error</a>(err))</div>
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; <span class="keywordflow">return</span> err;</div>
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; </div>
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</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="l01097"></a><span class="lineno"> 1097</span>&#160; </div>
<div class="line"><a name="l01098"></a><span class="lineno"> 1098</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="l01099"></a><span class="lineno"> 1099</span>&#160; <span class="keywordflow">return</span> err;</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; </div>
<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <span class="comment">// Grind through the JSON in tx_json to produce a STTx.</span></div>
<div class="line"><a name="l01103"></a><span class="lineno"> 1103</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="l01104"></a><span class="lineno"> 1104</span>&#160; {</div>
<div class="line"><a name="l01105"></a><span class="lineno"> 1105</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="l01106"></a><span class="lineno"> 1106</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="l01107"></a><span class="lineno"> 1107</span>&#160; {</div>
<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> jvResult;</div>
<div class="line"><a name="l01109"></a><span class="lineno"> 1109</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="l01110"></a><span class="lineno"> 1110</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="l01111"></a><span class="lineno"> 1111</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="l01112"></a><span class="lineno"> 1112</span>&#160; <span class="keywordflow">return</span> jvResult;</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">try</span></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; stpTrans =</div>
<div class="line"><a name="l01117"></a><span class="lineno"> 1117</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="l01118"></a><span class="lineno"> 1118</span>&#160; }</div>
<div class="line"><a name="l01119"></a><span class="lineno"> 1119</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="l01120"></a><span class="lineno"> 1120</span>&#160; {</div>
<div class="line"><a name="l01121"></a><span class="lineno"> 1121</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="l01122"></a><span class="lineno"> 1122</span>&#160; }</div>
<div class="line"><a name="l01123"></a><span class="lineno"> 1123</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="l01124"></a><span class="lineno"> 1124</span>&#160; {</div>
<div class="line"><a name="l01125"></a><span class="lineno"> 1125</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="l01126"></a><span class="lineno"> 1126</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="l01127"></a><span class="lineno"> 1127</span>&#160; <a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a839833d48b635d8df6a9176274ae922f">rpcINTERNAL</a>,</div>
<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160; <span class="stringliteral">&quot;Exception while serializing transaction: &quot;</span> + reason);</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; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> reason;</div>
<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceripple.html#a80b2f965303dfe486ecbae7d99be5f2d">passesLocalChecks</a>(*stpTrans, reason))</div>
<div class="line"><a name="l01132"></a><span class="lineno"> 1132</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="l01133"></a><span class="lineno"> 1133</span>&#160; }</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; <span class="comment">// Validate the fields in the serialized transaction.</span></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">// We now have the transaction text serialized and in the right format.</span></div>
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; <span class="comment">// Verify the values of select fields.</span></div>
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; <span class="comment">// The SigningPubKey must be present but empty.</span></div>
<div class="line"><a name="l01141"></a><span class="lineno"> 1141</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="l01142"></a><span class="lineno"> 1142</span>&#160; {</div>
<div class="line"><a name="l01143"></a><span class="lineno"> 1143</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="l01144"></a><span class="lineno"> 1144</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="l01145"></a><span class="lineno"> 1145</span>&#160; &lt;&lt; <span class="stringliteral">&quot; field. Field must be empty when multi-signing.&quot;</span>;</div>
<div class="line"><a name="l01146"></a><span class="lineno"> 1146</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="l01147"></a><span class="lineno"> 1147</span>&#160; }</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="comment">// There may not be a TxnSignature field.</span></div>
<div class="line"><a name="l01150"></a><span class="lineno"> 1150</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="l01151"></a><span class="lineno"> 1151</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="l01152"></a><span class="lineno"> 1152</span>&#160; </div>
<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; <span class="comment">// The Fee field must be in XRP and greater than zero.</span></div>
<div class="line"><a name="l01154"></a><span class="lineno"> 1154</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="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">if</span> (!<a class="code" href="namespaceripple.html#a3e312ecdb199409dca142d307a3e0e5b">isLegalNet</a>(fee))</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; <a class="codeRef" href="http://en.cppreference.com/w/cpp/io/basic_ostringstream.html">std::ostringstream</a> err;</div>
<div class="line"><a name="l01159"></a><span class="lineno"> 1159</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="l01160"></a><span class="lineno"> 1160</span>&#160; &lt;&lt; <span class="stringliteral">&quot; field. Fees must be specified in XRP.&quot;</span>;</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>(<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="l01162"></a><span class="lineno"> 1162</span>&#160; }</div>
<div class="line"><a name="l01163"></a><span class="lineno"> 1163</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="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/io/basic_ostringstream.html">std::ostringstream</a> err;</div>
<div class="line"><a name="l01166"></a><span class="lineno"> 1166</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="l01167"></a><span class="lineno"> 1167</span>&#160; &lt;&lt; <span class="stringliteral">&quot; field. Fees must be greater than zero.&quot;</span>;</div>
<div class="line"><a name="l01168"></a><span class="lineno"> 1168</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="l01169"></a><span class="lineno"> 1169</span>&#160; }</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; </div>
<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; <span class="comment">// Verify that the Signers field is present.</span></div>
<div class="line"><a name="l01173"></a><span class="lineno"> 1173</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="l01174"></a><span class="lineno"> 1174</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="l01175"></a><span class="lineno"> 1175</span>&#160; </div>
<div class="line"><a name="l01176"></a><span class="lineno"> 1176</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="l01177"></a><span class="lineno"> 1177</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="l01178"></a><span class="lineno"> 1178</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="l01179"></a><span class="lineno"> 1179</span>&#160; </div>
<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; <span class="keywordflow">if</span> (signers.empty())</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#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="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">// The Signers array may only contain Signer objects.</span></div>
<div class="line"><a name="l01184"></a><span class="lineno"> 1184</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="l01185"></a><span class="lineno"> 1185</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="l01186"></a><span class="lineno"> 1186</span>&#160; return (</div>
<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160; <span class="comment">// A Signer object always contains these fields and no</span></div>
<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; <span class="comment">// others.</span></div>
<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; obj.isFieldPresent(sfAccount) &amp;&amp;</div>
<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; obj.isFieldPresent(sfSigningPubKey) &amp;&amp;</div>
<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; obj.isFieldPresent(sfTxnSignature) &amp;&amp; obj.getCount() == 3);</div>
<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; }) != signers.end())</div>
<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; {</div>
<div class="line"><a name="l01194"></a><span class="lineno"> 1194</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="l01195"></a><span class="lineno"> 1195</span>&#160; <span class="stringliteral">&quot;Signers array may only contain Signer entries.&quot;</span>);</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; </div>
<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; <span class="comment">// The array must be sorted and validated.</span></div>
<div class="line"><a name="l01199"></a><span class="lineno"> 1199</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="l01200"></a><span class="lineno"> 1200</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="l01201"></a><span class="lineno"> 1201</span>&#160; <span class="keywordflow">return</span> err;</div>
<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; </div>
<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; <span class="comment">// Make sure the SerializedTransaction makes a legitimate Transaction.</span></div>
<div class="line"><a name="l01204"></a><span class="lineno"> 1204</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="l01205"></a><span class="lineno"> 1205</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="l01206"></a><span class="lineno"> 1206</span>&#160; </div>
<div class="line"><a name="l01207"></a><span class="lineno"> 1207</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="l01208"></a><span class="lineno"> 1208</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="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">// Finally, submit the transaction.</span></div>
<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160; <span class="keywordflow">try</span></div>
<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; {</div>
<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; <span class="comment">// FIXME: For performance, should use asynch interface</span></div>
<div class="line"><a name="l01214"></a><span class="lineno"> 1214</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="l01215"></a><span class="lineno"> 1215</span>&#160; }</div>
<div class="line"><a name="l01216"></a><span class="lineno"> 1216</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="l01217"></a><span class="lineno"> 1217</span>&#160; {</div>
<div class="line"><a name="l01218"></a><span class="lineno"> 1218</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="l01219"></a><span class="lineno"> 1219</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="l01220"></a><span class="lineno"> 1220</span>&#160; }</div>
<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; </div>
<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC_1_1detail.html#a0912a681a9aae2f9ff0f6f24327934db">transactionFormatResultImpl</a>(txn.<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">second</a>);</div>
<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;}</div>
<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160; </div>
<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160;} <span class="comment">// namespace RPC</span></div>
<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;} <span class="comment">// namespace ripple</span></div>
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</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="l01042"></a><span class="lineno"> 1042</span>&#160; <a class="code" href="namespaceripple_1_1RPC.html#a33378ee5e4181cef672fc56627fc0551">RPC::SubmitSync</a> sync)</div>
<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160;{</div>
<div class="line"><a name="l01044"></a><span class="lineno"> 1044</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="l01045"></a><span class="lineno"> 1045</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="l01046"></a><span class="lineno"> 1046</span>&#160; JLOG(j.debug()) &lt;&lt; <span class="stringliteral">&quot;transactionSubmitMultiSigned: &quot;</span> &lt;&lt; jvRequest;</div>
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; </div>
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</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="l01049"></a><span class="lineno"> 1049</span>&#160; <span class="comment">// be passed in by the caller.</span></div>
<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; <span class="keyword">using namespace </span>detail;</div>
<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160; {</div>
<div class="line"><a name="l01052"></a><span class="lineno"> 1052</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="l01053"></a><span class="lineno"> 1053</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="l01054"></a><span class="lineno"> 1054</span>&#160; <span class="keywordflow">return</span> err;</div>
<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160; }</div>
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; </div>
<div class="line"><a name="l01057"></a><span class="lineno"> 1057</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="l01058"></a><span class="lineno"> 1058</span>&#160; </div>
<div class="line"><a name="l01059"></a><span class="lineno"> 1059</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="l01060"></a><span class="lineno"> 1060</span>&#160; tx_json,</div>
<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; role,</div>
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; <span class="keyword">true</span>,</div>
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; validatedLedgerAge,</div>
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160; app.<a class="code" href="classripple_1_1Application.html#aca56b7c63030174e59720ab51d739422">config</a>(),</div>
<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160; app.<a class="code" href="classripple_1_1Application.html#a426bdbb87f6dc2082cf6f418526901cb">getFeeTrack</a>(),</div>
<div class="line"><a name="l01066"></a><span class="lineno"> 1066</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="l01067"></a><span class="lineno"> 1067</span>&#160; </div>
<div class="line"><a name="l01068"></a><span class="lineno"> 1068</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="l01069"></a><span class="lineno"> 1069</span>&#160; <span class="keywordflow">return</span> std::move(txJsonResult);</div>
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; </div>
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</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="l01072"></a><span class="lineno"> 1072</span>&#160; ledger-&gt;read(<a class="code" href="namespaceripple_1_1keylet.html#a50c370db96b4fdcdd202d9c2c38afce9">keylet::account</a>(srcAddressID));</div>
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; </div>
<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; <span class="keywordflow">if</span> (!sle)</div>
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160; {</div>
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; <span class="comment">// If did not find account, error.</span></div>
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; JLOG(j.debug())</div>
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; &lt;&lt; <span class="stringliteral">&quot;transactionSubmitMultiSigned: Failed to find source account &quot;</span></div>
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</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="l01080"></a><span class="lineno"> 1080</span>&#160; </div>
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</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="l01082"></a><span class="lineno"> 1082</span>&#160; }</div>
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; </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.html#adf952f7ca5d0d26e982a92acce6bf937">checkFee</a>(</div>
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; jvRequest,</div>
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; role,</div>
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; <span class="keyword">false</span>,</div>
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; app.<a class="code" href="classripple_1_1Application.html#aca56b7c63030174e59720ab51d739422">config</a>(),</div>
<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; app.<a class="code" href="classripple_1_1Application.html#a426bdbb87f6dc2082cf6f418526901cb">getFeeTrack</a>(),</div>
<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; app.<a class="code" href="classripple_1_1Application.html#a9865710c130bf4427842a544b2b7f077">getTxQ</a>(),</div>
<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; app);</div>
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; </div>
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</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="l01095"></a><span class="lineno"> 1095</span>&#160; <span class="keywordflow">return</span> err;</div>
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; </div>
<div class="line"><a name="l01097"></a><span class="lineno"> 1097</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="l01098"></a><span class="lineno"> 1098</span>&#160; </div>
<div class="line"><a name="l01099"></a><span class="lineno"> 1099</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="l01100"></a><span class="lineno"> 1100</span>&#160; <span class="keywordflow">return</span> err;</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; </div>
<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; <span class="comment">// Grind through the JSON in tx_json to produce a STTx.</span></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;STTx&gt;</a> stpTrans;</div>
<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; {</div>
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</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="l01107"></a><span class="lineno"> 1107</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="l01108"></a><span class="lineno"> 1108</span>&#160; {</div>
<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; <a class="code" href="classJson_1_1Value.html">Json::Value</a> jvResult;</div>
<div class="line"><a name="l01110"></a><span class="lineno"> 1110</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="l01111"></a><span class="lineno"> 1111</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="l01112"></a><span class="lineno"> 1112</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="l01113"></a><span class="lineno"> 1113</span>&#160; <span class="keywordflow">return</span> jvResult;</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">try</span></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; stpTrans =</div>
<div class="line"><a name="l01118"></a><span class="lineno"> 1118</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="l01119"></a><span class="lineno"> 1119</span>&#160; }</div>
<div class="line"><a name="l01120"></a><span class="lineno"> 1120</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="l01121"></a><span class="lineno"> 1121</span>&#160; {</div>
<div class="line"><a name="l01122"></a><span class="lineno"> 1122</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="l01123"></a><span class="lineno"> 1123</span>&#160; }</div>
<div class="line"><a name="l01124"></a><span class="lineno"> 1124</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="l01125"></a><span class="lineno"> 1125</span>&#160; {</div>
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</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="l01127"></a><span class="lineno"> 1127</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="l01128"></a><span class="lineno"> 1128</span>&#160; <a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a839833d48b635d8df6a9176274ae922f">rpcINTERNAL</a>,</div>
<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; <span class="stringliteral">&quot;Exception while serializing transaction: &quot;</span> + reason);</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; <a class="codeRef" href="http://en.cppreference.com/w/cpp/string/basic_string.html">std::string</a> reason;</div>
<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceripple.html#a80b2f965303dfe486ecbae7d99be5f2d">passesLocalChecks</a>(*stpTrans, reason))</div>
<div class="line"><a name="l01133"></a><span class="lineno"> 1133</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="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">// Validate the fields in the serialized transaction.</span></div>
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; {</div>
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; <span class="comment">// We now have the transaction text serialized and in the right format.</span></div>
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <span class="comment">// Verify the values of select fields.</span></div>
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; <span class="comment">//</span></div>
<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; <span class="comment">// The SigningPubKey must be present but empty.</span></div>
<div class="line"><a name="l01142"></a><span class="lineno"> 1142</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="l01143"></a><span class="lineno"> 1143</span>&#160; {</div>
<div class="line"><a name="l01144"></a><span class="lineno"> 1144</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="l01145"></a><span class="lineno"> 1145</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="l01146"></a><span class="lineno"> 1146</span>&#160; &lt;&lt; <span class="stringliteral">&quot; field. Field must be empty when multi-signing.&quot;</span>;</div>
<div class="line"><a name="l01147"></a><span class="lineno"> 1147</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="l01148"></a><span class="lineno"> 1148</span>&#160; }</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; <span class="comment">// There may not be a TxnSignature field.</span></div>
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</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="l01152"></a><span class="lineno"> 1152</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="l01153"></a><span class="lineno"> 1153</span>&#160; </div>
<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; <span class="comment">// The Fee field must be in XRP and greater than zero.</span></div>
<div class="line"><a name="l01155"></a><span class="lineno"> 1155</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="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">if</span> (!<a class="code" href="namespaceripple.html#a3e312ecdb199409dca142d307a3e0e5b">isLegalNet</a>(fee))</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/io/basic_ostringstream.html">std::ostringstream</a> err;</div>
<div class="line"><a name="l01160"></a><span class="lineno"> 1160</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="l01161"></a><span class="lineno"> 1161</span>&#160; &lt;&lt; <span class="stringliteral">&quot; field. Fees must be specified in XRP.&quot;</span>;</div>
<div class="line"><a name="l01162"></a><span class="lineno"> 1162</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="l01163"></a><span class="lineno"> 1163</span>&#160; }</div>
<div class="line"><a name="l01164"></a><span class="lineno"> 1164</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="l01165"></a><span class="lineno"> 1165</span>&#160; {</div>
<div class="line"><a name="l01166"></a><span class="lineno"> 1166</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="l01167"></a><span class="lineno"> 1167</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="l01168"></a><span class="lineno"> 1168</span>&#160; &lt;&lt; <span class="stringliteral">&quot; field. Fees must be greater than zero.&quot;</span>;</div>
<div class="line"><a name="l01169"></a><span class="lineno"> 1169</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="l01170"></a><span class="lineno"> 1170</span>&#160; }</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; </div>
<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; <span class="comment">// Verify that the Signers field is present.</span></div>
<div class="line"><a name="l01174"></a><span class="lineno"> 1174</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="l01175"></a><span class="lineno"> 1175</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="l01176"></a><span class="lineno"> 1176</span>&#160; </div>
<div class="line"><a name="l01177"></a><span class="lineno"> 1177</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="l01178"></a><span class="lineno"> 1178</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="l01179"></a><span class="lineno"> 1179</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="l01180"></a><span class="lineno"> 1180</span>&#160; </div>
<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; <span class="keywordflow">if</span> (signers.empty())</div>
<div class="line"><a name="l01182"></a><span class="lineno"> 1182</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="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">// The Signers array may only contain Signer objects.</span></div>
<div class="line"><a name="l01185"></a><span class="lineno"> 1185</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="l01186"></a><span class="lineno"> 1186</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="l01187"></a><span class="lineno"> 1187</span>&#160; return (</div>
<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160; <span class="comment">// A Signer object always contains these fields and no</span></div>
<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>&#160; <span class="comment">// others.</span></div>
<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160; obj.isFieldPresent(sfAccount) &amp;&amp;</div>
<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; obj.isFieldPresent(sfSigningPubKey) &amp;&amp;</div>
<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160; obj.isFieldPresent(sfTxnSignature) &amp;&amp; obj.getCount() == 3);</div>
<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; }) != signers.end())</div>
<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; {</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#a5b6ce0616f6995340f4dd846660c3749">RPC::make_param_error</a>(</div>
<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; <span class="stringliteral">&quot;Signers array may only contain Signer entries.&quot;</span>);</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; </div>
<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; <span class="comment">// The array must be sorted and validated.</span></div>
<div class="line"><a name="l01200"></a><span class="lineno"> 1200</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="l01201"></a><span class="lineno"> 1201</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="l01202"></a><span class="lineno"> 1202</span>&#160; <span class="keywordflow">return</span> err;</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; <span class="comment">// Make sure the SerializedTransaction makes a legitimate Transaction.</span></div>
<div class="line"><a name="l01205"></a><span class="lineno"> 1205</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="l01206"></a><span class="lineno"> 1206</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="l01207"></a><span class="lineno"> 1207</span>&#160; </div>
<div class="line"><a name="l01208"></a><span class="lineno"> 1208</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="l01209"></a><span class="lineno"> 1209</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="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">// Finally, submit the transaction.</span></div>
<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; <span class="keywordflow">try</span></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="comment">// FIXME: For performance, should use asynch interface</span></div>
<div class="line"><a name="l01215"></a><span class="lineno"> 1215</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="l01216"></a><span class="lineno"> 1216</span>&#160; }</div>
<div class="line"><a name="l01217"></a><span class="lineno"> 1217</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="l01218"></a><span class="lineno"> 1218</span>&#160; {</div>
<div class="line"><a name="l01219"></a><span class="lineno"> 1219</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="l01220"></a><span class="lineno"> 1220</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="l01221"></a><span class="lineno"> 1221</span>&#160; }</div>
<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; </div>
<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC_1_1detail.html#a0912a681a9aae2f9ff0f6f24327934db">transactionFormatResultImpl</a>(txn.<a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">second</a>);</div>
<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160;}</div>
<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>&#160; </div>
<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;} <span class="comment">// namespace RPC</span></div>
<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160;} <span class="comment">// namespace ripple</span></div>
</div><!-- fragment --></div><!-- contents -->
<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#l00054">TransactionSign.cpp:54</a></div></div>
<div class="ttc" id="astructripple_1_1FeeSetup_html_a0eec4da1884d29e364b4475f57f1453d"><div class="ttname"><a href="structripple_1_1FeeSetup.html#a0eec4da1884d29e364b4475f57f1453d">ripple::FeeSetup::reference_fee</a></div><div class="ttdeci">XRPAmount reference_fee</div><div class="ttdoc">The cost of a reference transaction in drops.</div><div class="ttdef"><b>Definition:</b> <a href="Config_8h_source.html#l00072">Config.h:72</a></div></div>
<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#l01021">STAmount.cpp:1021</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>
@@ -1336,6 +1338,7 @@ $(function() {
<div class="ttc" id="anamespaceripple_html_a08a13b62b18272366f788632359e8793"><div class="ttname"><a href="namespaceripple.html#a08a13b62b18272366f788632359e8793">ripple::toBase58</a></div><div class="ttdeci">std::string toBase58(AccountID const &amp;v)</div><div class="ttdoc">Convert AccountID to base58 checked string.</div><div class="ttdef"><b>Definition:</b> <a href="AccountID_8cpp_source.html#l00104">AccountID.cpp:104</a></div></div>
<div class="ttc" id="anamespaceripple_html_ac6935ad0ddb8c447dd408f2404a97b40"><div class="ttname"><a href="namespaceripple.html#ac6935ad0ddb8c447dd408f2404a97b40">ripple::tfFullyCanonicalSig</a></div><div class="ttdeci">constexpr std::uint32_t tfFullyCanonicalSig</div><div class="ttdoc">Transaction flags.</div><div class="ttdef"><b>Definition:</b> <a href="TxFlags_8h_source.html#l00058">TxFlags.h:58</a></div></div>
<div class="ttc" id="astructripple_1_1RPC_1_1detail_1_1transactionPreProcessResult_html_a2a7978e68399a276f2df814653f25aaa"><div class="ttname"><a href="structripple_1_1RPC_1_1detail_1_1transactionPreProcessResult.html#a2a7978e68399a276f2df814653f25aaa">ripple::RPC::detail::transactionPreProcessResult::first</a></div><div class="ttdeci">const Json::Value first</div><div class="ttdef"><b>Definition:</b> <a href="TransactionSign_8cpp_source.html#l00338">TransactionSign.cpp:338</a></div></div>
<div class="ttc" id="anamespaceripple_1_1RPC_html_aec2860565139f7e6f21a31ce991f96f4"><div class="ttname"><a href="namespaceripple_1_1RPC.html#aec2860565139f7e6f21a31ce991f96f4">ripple::RPC::transactionSubmit</a></div><div class="ttdeci">Json::Value transactionSubmit(Json::Value jvRequest, 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#l00799">TransactionSign.cpp:799</a></div></div>
<div class="ttc" id="abasic_stringstream_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/basic_stringstream.html">std::stringstream</a></div><div class="ttdoc">STL class.</div></div>
<div class="ttc" id="anamespaceripple_1_1RPC_1_1detail_html_a00e6bad0d6f35c70c4e10463ea34abd9"><div class="ttname"><a href="namespaceripple_1_1RPC_1_1detail.html#a00e6bad0d6f35c70c4e10463ea34abd9">ripple::RPC::detail::checkPayment</a></div><div class="ttdeci">static Json::Value checkPayment(Json::Value const &amp;params, Json::Value &amp;tx_json, AccountID const &amp;srcAddressID, Role const role, Application &amp;app, bool doPath)</div><div class="ttdef"><b>Definition:</b> <a href="TransactionSign_8cpp_source.html#l00158">TransactionSign.cpp:158</a></div></div>
<div class="ttc" id="aclassripple_1_1PublicKey_html_ae0bcc607176a440ec63a86bae5767036"><div class="ttname"><a href="classripple_1_1PublicKey.html#ae0bcc607176a440ec63a86bae5767036">ripple::PublicKey::slice</a></div><div class="ttdeci">Slice slice() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="PublicKey_8h_source.html#l00123">PublicKey.h:123</a></div></div>
@@ -1378,8 +1381,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#l00646">STObject.h:646</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#l00337">Config.h:337</a></div></div>
<div class="ttc" id="anamespaceripple_1_1RPC_html_a0178ac853fe8968c19f9d5da694f47fd"><div class="ttname"><a href="namespaceripple_1_1RPC.html#a0178ac853fe8968c19f9d5da694f47fd">ripple::RPC::transactionSubmit</a></div><div class="ttdeci">Json::Value transactionSubmit(Json::Value jvRequest, 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#l00799">TransactionSign.cpp:799</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#l00338">Config.h:338</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#l00362">TransactionSign.cpp:362</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>
@@ -1395,30 +1397,32 @@ $(function() {
<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#l00878">TransactionSign.cpp:878</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#l00332">Config.h:332</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#l00333">Config.h:333</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>
<div class="ttc" id="aclassripple_1_1Application_html_a9865710c130bf4427842a544b2b7f077"><div class="ttname"><a href="classripple_1_1Application.html#a9865710c130bf4427842a544b2b7f077">ripple::Application::getTxQ</a></div><div class="ttdeci">virtual TxQ &amp; getTxQ()=0</div></div>
<div class="ttc" id="aclassripple_1_1LoadFeeTrack_html"><div class="ttname"><a href="classripple_1_1LoadFeeTrack.html">ripple::LoadFeeTrack</a></div><div class="ttdoc">Manages the current fee schedule.</div><div class="ttdef"><b>Definition:</b> <a href="LoadFeeTrack_8h_source.html#l00044">LoadFeeTrack.h:44</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#l00045">STAmount.h:45</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#l00063">Serializer.h:63</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#l00293">Config.h:293</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#l00294">Config.h:294</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#l00336">TransactionSign.cpp:336</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#l00310">Serializer.h:310</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="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="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_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="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#l00200">Config.h:200</a></div></div>
<div class="ttc" id="anamespaceripple_html_a32d6d3ce1a48272b677d2c88b1d30932a839833d48b635d8df6a9176274ae922f"><div class="ttname"><a href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a839833d48b635d8df6a9176274ae922f">ripple::rpcINTERNAL</a></div><div class="ttdeci">@ rpcINTERNAL</div><div class="ttdef"><b>Definition:</b> <a href="ErrorCodes_8h_source.html#l00130">ErrorCodes.h:130</a></div></div>
<div class="ttc" id="anamespaceripple_html_a6909f61053b6e084f46665fa9f4ee673"><div class="ttname"><a href="namespaceripple.html#a6909f61053b6e084f46665fa9f4ee673">ripple::isUnlimited</a></div><div class="ttdeci">bool isUnlimited(Role const &amp;role)</div><div class="ttdoc">ADMIN and IDENTIFIED roles shall have unlimited resources.</div><div class="ttdef"><b>Definition:</b> <a href="Role_8cpp_source.html#l00124">Role.cpp:124</a></div></div>
<div class="ttc" id="aclassripple_1_1Serializer_html"><div class="ttname"><a href="classripple_1_1Serializer.html">ripple::Serializer</a></div><div class="ttdef"><b>Definition:</b> <a href="Serializer_8h_source.html#l00039">Serializer.h:39</a></div></div>
<div class="ttc" id="aclassripple_1_1Serializer_html"><div class="ttname"><a href="classripple_1_1Serializer.html">ripple::Serializer</a></div><div class="ttdef"><b>Definition:</b> <a href="Serializer_8h_source.html#l00040">Serializer.h:40</a></div></div>
<div class="ttc" id="abasic_ostringstream_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/io/basic_ostringstream.html">std::ostringstream</a></div><div class="ttdoc">STL class.</div></div>
<div class="ttc" id="aclassripple_1_1Pathfinder_html_addfe15f1a79f11abf25a21091d4b8a35"><div class="ttname"><a href="classripple_1_1Pathfinder.html#addfe15f1a79f11abf25a21091d4b8a35">ripple::Pathfinder::getBestPaths</a></div><div class="ttdeci">STPathSet getBestPaths(int maxPaths, STPath &amp;fullLiquidityPath, STPathSet const &amp;extraPaths, AccountID const &amp;srcIssuer, std::function&lt; bool(void)&gt; const &amp;continueCallback={})</div><div class="ttdef"><b>Definition:</b> <a href="Pathfinder_8cpp_source.html#l00567">Pathfinder.cpp:567</a></div></div>
<div class="ttc" id="anamespaceripple_1_1RPC_html_a2fb0d86fd372bbf3ce906631e0aeca73"><div class="ttname"><a href="namespaceripple_1_1RPC.html#a2fb0d86fd372bbf3ce906631e0aeca73">ripple::RPC::transactionSubmitMultiSigned</a></div><div class="ttdeci">Json::Value transactionSubmitMultiSigned(Json::Value jvRequest, 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#l01035">TransactionSign.cpp:1035</a></div></div>
<div class="ttc" id="astructripple_1_1RPC_1_1detail_1_1transactionPreProcessResult_html_a84665d471ed6dd4c4f0d5053f0fb0544"><div class="ttname"><a href="structripple_1_1RPC_1_1detail_1_1transactionPreProcessResult.html#a84665d471ed6dd4c4f0d5053f0fb0544">ripple::RPC::detail::transactionPreProcessResult::transactionPreProcessResult</a></div><div class="ttdeci">transactionPreProcessResult(Json::Value &amp;&amp;json)</div><div class="ttdef"><b>Definition:</b> <a href="TransactionSign_8cpp_source.html#l00350">TransactionSign.cpp:350</a></div></div>
<div class="ttc" id="anamespaceripple_1_1RPC_html_a786aa1fb7be9a79763f72a11aa8224b6"><div class="ttname"><a href="namespaceripple_1_1RPC.html#a786aa1fb7be9a79763f72a11aa8224b6">ripple::RPC::invalid_field_message</a></div><div class="ttdeci">std::string invalid_field_message(std::string const &amp;name)</div><div class="ttdef"><b>Definition:</b> <a href="ErrorCodes_8h_source.html#l00294">ErrorCodes.h:294</a></div></div>
<div class="ttc" id="aclassripple_1_1STObject_html"><div class="ttname"><a href="classripple_1_1STObject.html">ripple::STObject</a></div><div class="ttdef"><b>Definition:</b> <a href="STObject_8h_source.html#l00052">STObject.h:52</a></div></div>
@@ -1427,7 +1431,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#l00329">STAmount.h:329</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#l00201">TER.cpp:201</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#l00206">TER.cpp:206</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="anamespaceripple_html_abcad59b0151763334cc398263373bcdda3ac705f2acd51a4613f9188c05c91d0d"><div class="ttname"><a href="namespaceripple.html#abcad59b0151763334cc398263373bcdda3ac705f2acd51a4613f9188c05c91d0d">ripple::Validity::Valid</a></div><div class="ttdeci">@ Valid</div><div class="ttdoc">Signature and local checks are good / passed.</div></div>
@@ -1441,7 +1445,7 @@ $(function() {
<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#l00087">TransactionSign.cpp:87</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#l00079">TransactionSign.cpp:79</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#l01664">LedgerMaster.cpp:1664</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#l01669">LedgerMaster.cpp:1669</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#l00847">TransactionSign.cpp:847</a></div></div>
@@ -1452,7 +1456,7 @@ $(function() {
<div class="ttc" id="anamespaceripple_html_a5bab99595719d22579e10d21cf048eb0"><div class="ttname"><a href="namespaceripple.html#a5bab99595719d22579e10d21cf048eb0">ripple::sfAccount</a></div><div class="ttdeci">const SF_ACCOUNT sfAccount</div></div>
<div class="ttc" id="aclassJson_1_1Value_html_a614d635bc248a592593feb322cd15ab8"><div class="ttname"><a href="classJson_1_1Value.html#a614d635bc248a592593feb322cd15ab8">Json::Value::asInt</a></div><div class="ttdeci">Int asInt() const</div><div class="ttdef"><b>Definition:</b> <a href="json__value_8cpp_source.html#l00503">json_value.cpp:503</a></div></div>
<div class="ttc" id="anamespaceripple_html_a86e358ce3f06ff049af13c2342791cf8"><div class="ttname"><a href="namespaceripple.html#a86e358ce3f06ff049af13c2342791cf8">ripple::strHex</a></div><div class="ttdeci">std::string strHex(FwdIt begin, FwdIt end)</div><div class="ttdef"><b>Definition:</b> <a href="strHex_8h_source.html#l00030">strHex.h:30</a></div></div>
<div class="ttc" id="aclassripple_1_1Serializer_html_a4f42b878a90a9d5818a4d598ec038d4d"><div class="ttname"><a href="classripple_1_1Serializer.html#a4f42b878a90a9d5818a4d598ec038d4d">ripple::Serializer::getData</a></div><div class="ttdeci">Blob getData() const</div><div class="ttdef"><b>Definition:</b> <a href="Serializer_8h_source.html#l00173">Serializer.h:173</a></div></div>
<div class="ttc" id="aclassripple_1_1Serializer_html_a4f42b878a90a9d5818a4d598ec038d4d"><div class="ttname"><a href="classripple_1_1Serializer.html#a4f42b878a90a9d5818a4d598ec038d4d">ripple::Serializer::getData</a></div><div class="ttdeci">Blob getData() const</div><div class="ttdef"><b>Definition:</b> <a href="Serializer_8h_source.html#l00174">Serializer.h:174</a></div></div>
<div class="ttc" id="amax_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/algorithm/max.html">std::max</a></div><div class="ttdeci">T max(T... args)</div></div>
<div class="ttc" id="aclassripple_1_1TxQ_html_a2a08d6cdb1e6700a24dc0f71eb3ef7ed"><div class="ttname"><a href="classripple_1_1TxQ.html#a2a08d6cdb1e6700a24dc0f71eb3ef7ed">ripple::TxQ::getMetrics</a></div><div class="ttdeci">Metrics getMetrics(OpenView const &amp;view) const</div><div class="ttdoc">Returns fee metrics in reference fee level units.</div><div class="ttdef"><b>Definition:</b> <a href="TxQ_8cpp_source.html#l01748">TxQ.cpp:1748</a></div></div>
<div class="ttc" id="anamespaceripple_1_1RPC_html_a5b6ce0616f6995340f4dd846660c3749"><div class="ttname"><a href="namespaceripple_1_1RPC.html#a5b6ce0616f6995340f4dd846660c3749">ripple::RPC::make_param_error</a></div><div class="ttdeci">Json::Value make_param_error(std::string const &amp;message)</div><div class="ttdoc">Returns a new json object that indicates invalid parameters.</div><div class="ttdef"><b>Definition:</b> <a href="ErrorCodes_8h_source.html#l00252">ErrorCodes.h:252</a></div></div>
@@ -1477,7 +1481,6 @@ $(function() {
<div class="ttc" id="awhat_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/error/exception/what.html">std::runtime_error::what</a></div><div class="ttdeci">T what(T... args)</div></div>
<div class="ttc" id="aclassJson_1_1Value_html"><div class="ttname"><a href="classJson_1_1Value.html">Json::Value</a></div><div class="ttdoc">Represents a JSON value.</div><div class="ttdef"><b>Definition:</b> <a href="json__value_8h_source.html#l00145">json_value.h:145</a></div></div>
<div class="ttc" id="aclassripple_1_1XRPAmount_html"><div class="ttname"><a href="classripple_1_1XRPAmount.html">ripple::XRPAmount</a></div><div class="ttdef"><b>Definition:</b> <a href="XRPAmount_8h_source.html#l00046">XRPAmount.h:46</a></div></div>
<div class="ttc" id="anamespaceripple_1_1RPC_html_a97488c6a780e56f3116fdd0a2e8128a2"><div class="ttname"><a href="namespaceripple_1_1RPC.html#a97488c6a780e56f3116fdd0a2e8128a2">ripple::RPC::transactionSubmitMultiSigned</a></div><div class="ttdeci">Json::Value transactionSubmitMultiSigned(Json::Value jvRequest, 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#l01035">TransactionSign.cpp:1035</a></div></div>
<div class="ttc" id="astructripple_1_1RPC_1_1detail_1_1transactionPreProcessResult_html_a9b885b1c6044f4301c1c59251fec30c3"><div class="ttname"><a href="structripple_1_1RPC_1_1detail_1_1transactionPreProcessResult.html#a9b885b1c6044f4301c1c59251fec30c3">ripple::RPC::detail::transactionPreProcessResult::transactionPreProcessResult</a></div><div class="ttdeci">transactionPreProcessResult()=delete</div></div>
<div class="ttc" id="aclassJson_1_1Value_html_ab0d86bf425efefd03513e8dbfaca317b"><div class="ttname"><a href="classJson_1_1Value.html#ab0d86bf425efefd03513e8dbfaca317b">Json::Value::asString</a></div><div class="ttdeci">std::string asString() const</div><div class="ttdoc">Returns the unquoted string value.</div><div class="ttdef"><b>Definition:</b> <a href="json__value_8cpp_source.html#l00469">json_value.cpp:469</a></div></div>
<!-- start footer part -->