mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-21 11:35:53 +00:00
deploy: 3574956e5e
This commit is contained in:
@@ -865,40 +865,40 @@ $(function() {
|
||||
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span> }</div>
|
||||
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  </div>
|
||||
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span> <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> <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> <a class="code" href="namespaceripple_1_1RPC.html#aec2860565139f7e6f21a31ce991f96f4">transactionSubmit</a>(</div>
|
||||
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  <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>  <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>  <a class="code" href="namespaceripple.html#ae08fe18f17b24699ce41d3898fbb8c2c">Role</a> role,</div>
|
||||
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  <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>  <a class="code" href="classripple_1_1Application.html">Application</a>& app,</div>
|
||||
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/functional/function.html">ProcessTransactionFn</a> <span class="keyword">const</span>& processTransaction)</div>
|
||||
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span> {</div>
|
||||
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  <span class="keyword">using namespace </span>detail;</div>
|
||||
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  </div>
|
||||
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  <span class="keyword">auto</span> <span class="keyword">const</span>& 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>  <span class="keyword">auto</span> j = app.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">"RPCHandler"</span>);</div>
|
||||
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  JLOG(j.debug()) << <span class="stringliteral">"transactionSubmit: "</span> << jvRequest;</div>
|
||||
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  </div>
|
||||
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  <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>  SigningForParams signForParams;</div>
|
||||
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  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>  jvRequest, role, signForParams, validatedLedgerAge, app);</div>
|
||||
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  </div>
|
||||
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  <span class="keywordflow">if</span> (!preprocResult.second)</div>
|
||||
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  <span class="keywordflow">return</span> preprocResult.first;</div>
|
||||
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  </div>
|
||||
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <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>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair<Json::Value, Transaction::pointer></a> txn =</div>
|
||||
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  <a class="code" href="namespaceripple_1_1RPC_1_1detail.html#abafd63792821196881f9a3a2de040aed">transactionConstructImpl</a>(preprocResult.second, ledger->rules(), app);</div>
|
||||
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  </div>
|
||||
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  <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>  <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>  </div>
|
||||
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  <span class="comment">// Finally, submit the transaction.</span></div>
|
||||
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  <span class="keywordflow">try</span></div>
|
||||
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  {</div>
|
||||
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <span class="comment">// FIXME: For performance, should use asynch interface</span></div>
|
||||
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  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>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/functional/function.html">ProcessTransactionFn</a> <span class="keyword">const</span>& processTransaction,</div>
|
||||
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  <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> {</div>
|
||||
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  <span class="keyword">using namespace </span>detail;</div>
|
||||
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  </div>
|
||||
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <span class="keyword">auto</span> <span class="keyword">const</span>& 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>  <span class="keyword">auto</span> j = app.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">"RPCHandler"</span>);</div>
|
||||
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  JLOG(j.debug()) << <span class="stringliteral">"transactionSubmit: "</span> << jvRequest;</div>
|
||||
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  </div>
|
||||
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  <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>  SigningForParams signForParams;</div>
|
||||
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  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>  jvRequest, role, signForParams, validatedLedgerAge, app);</div>
|
||||
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  </div>
|
||||
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  <span class="keywordflow">if</span> (!preprocResult.second)</div>
|
||||
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <span class="keywordflow">return</span> preprocResult.first;</div>
|
||||
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  </div>
|
||||
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <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>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair<Json::Value, Transaction::pointer></a> txn =</div>
|
||||
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  <a class="code" href="namespaceripple_1_1RPC_1_1detail.html#abafd63792821196881f9a3a2de040aed">transactionConstructImpl</a>(preprocResult.second, ledger->rules(), app);</div>
|
||||
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  </div>
|
||||
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <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>  <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>  </div>
|
||||
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  <span class="comment">// Finally, submit the transaction.</span></div>
|
||||
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  <span class="keywordflow">try</span></div>
|
||||
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  {</div>
|
||||
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  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>  }</div>
|
||||
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  <span class="keywordflow">catch</span> (<a class="codeRef" href="http://en.cppreference.com/w/cpp/error/exception.html">std::exception</a>&)</div>
|
||||
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  {</div>
|
||||
@@ -1099,204 +1099,206 @@ $(function() {
|
||||
<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span> }</div>
|
||||
<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  </div>
|
||||
<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> <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> <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> <a class="code" href="namespaceripple_1_1RPC.html#a2fb0d86fd372bbf3ce906631e0aeca73">transactionSubmitMultiSigned</a>(</div>
|
||||
<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  <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>  <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>  <a class="code" href="namespaceripple.html#ae08fe18f17b24699ce41d3898fbb8c2c">Role</a> role,</div>
|
||||
<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>  <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>  <a class="code" href="classripple_1_1Application.html">Application</a>& app,</div>
|
||||
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/functional/function.html">ProcessTransactionFn</a> <span class="keyword">const</span>& processTransaction)</div>
|
||||
<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> {</div>
|
||||
<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>  <span class="keyword">auto</span> <span class="keyword">const</span>& 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>  <span class="keyword">auto</span> j = app.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">"RPCHandler"</span>);</div>
|
||||
<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>  JLOG(j.debug()) << <span class="stringliteral">"transactionSubmitMultiSigned: "</span> << jvRequest;</div>
|
||||
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  </div>
|
||||
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  <span class="comment">// When multi-signing, the "Sequence" and "SigningPubKey" fields must</span></div>
|
||||
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  <span class="comment">// be passed in by the caller.</span></div>
|
||||
<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  <span class="keyword">using namespace </span>detail;</div>
|
||||
<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  {</div>
|
||||
<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  <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>  <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>  <span class="keywordflow">return</span> err;</div>
|
||||
<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  }</div>
|
||||
<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  </div>
|
||||
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  <a class="code" href="classJson_1_1Value.html">Json::Value</a>& tx_json(jvRequest[<span class="stringliteral">"tx_json"</span>]);</div>
|
||||
<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  </div>
|
||||
<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  <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>  tx_json,</div>
|
||||
<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  role,</div>
|
||||
<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  <span class="keyword">true</span>,</div>
|
||||
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  validatedLedgerAge,</div>
|
||||
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  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>  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>  <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>  </div>
|
||||
<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>  <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>  <span class="keywordflow">return</span> std::move(txJsonResult);</div>
|
||||
<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>  </div>
|
||||
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<SLE const></a> sle =</div>
|
||||
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  ledger->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>  </div>
|
||||
<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  <span class="keywordflow">if</span> (!sle)</div>
|
||||
<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  {</div>
|
||||
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  <span class="comment">// If did not find account, error.</span></div>
|
||||
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  JLOG(j.debug())</div>
|
||||
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  << <span class="stringliteral">"transactionSubmitMultiSigned: Failed to find source account "</span></div>
|
||||
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  << <span class="stringliteral">"in current ledger: "</span> << <a class="code" href="namespaceripple.html#a08a13b62b18272366f788632359e8793">toBase58</a>(srcAddressID);</div>
|
||||
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  </div>
|
||||
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  <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>  }</div>
|
||||
<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  </div>
|
||||
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>  {</div>
|
||||
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  <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>  jvRequest,</div>
|
||||
<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  role,</div>
|
||||
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  <span class="keyword">false</span>,</div>
|
||||
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>  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>  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>  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>  app);</div>
|
||||
<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>  </div>
|
||||
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  <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>  <span class="keywordflow">return</span> err;</div>
|
||||
<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>  </div>
|
||||
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  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>  </div>
|
||||
<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>  <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>  <span class="keywordflow">return</span> err;</div>
|
||||
<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>  }</div>
|
||||
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  </div>
|
||||
<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  <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>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<STTx></a> stpTrans;</div>
|
||||
<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>  {</div>
|
||||
<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  <a class="code" href="classripple_1_1STParsedJSONObject.html">STParsedJSONObject</a> parsedTx_json(<span class="stringliteral">"tx_json"</span>, tx_json);</div>
|
||||
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  <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>  {</div>
|
||||
<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  <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>  jvResult[<span class="stringliteral">"error"</span>] = parsedTx_json.<a class="code" href="classripple_1_1STParsedJSONObject.html#a75ae1e4c096f722a17614c58d8b284a4">error</a>[<span class="stringliteral">"error"</span>];</div>
|
||||
<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  jvResult[<span class="stringliteral">"error_code"</span>] = parsedTx_json.<a class="code" href="classripple_1_1STParsedJSONObject.html#a75ae1e4c096f722a17614c58d8b284a4">error</a>[<span class="stringliteral">"error_code"</span>];</div>
|
||||
<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  jvResult[<span class="stringliteral">"error_message"</span>] = parsedTx_json.<a class="code" href="classripple_1_1STParsedJSONObject.html#a75ae1e4c096f722a17614c58d8b284a4">error</a>[<span class="stringliteral">"error_message"</span>];</div>
|
||||
<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  <span class="keywordflow">return</span> jvResult;</div>
|
||||
<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  }</div>
|
||||
<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  <span class="keywordflow">try</span></div>
|
||||
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  {</div>
|
||||
<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  stpTrans =</div>
|
||||
<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>  std::make_shared<STTx>(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>  }</div>
|
||||
<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>  <span class="keywordflow">catch</span> (<a class="code" href="classripple_1_1STObject_1_1FieldErr.html">STObject::FieldErr</a>& err)</div>
|
||||
<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>  {</div>
|
||||
<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>  <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>  }</div>
|
||||
<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  <span class="keywordflow">catch</span> (<a class="codeRef" href="http://en.cppreference.com/w/cpp/error/exception.html">std::exception</a>& ex)</div>
|
||||
<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  {</div>
|
||||
<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  <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>  <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>  <a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a839833d48b635d8df6a9176274ae922f">rpcINTERNAL</a>,</div>
|
||||
<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>  <span class="stringliteral">"Exception while serializing transaction: "</span> + reason);</div>
|
||||
<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>  }</div>
|
||||
<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>  <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>  <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>  <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>  }</div>
|
||||
<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  </div>
|
||||
<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  <span class="comment">// Validate the fields in the serialized transaction.</span></div>
|
||||
<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>  {</div>
|
||||
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>  <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>  <span class="comment">// Verify the values of select fields.</span></div>
|
||||
<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>  <span class="comment">//</span></div>
|
||||
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  <span class="comment">// The SigningPubKey must be present but empty.</span></div>
|
||||
<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>  <span class="keywordflow">if</span> (!stpTrans->getFieldVL(<a class="code" href="namespaceripple.html#a590913040d5c9a68f3bf1d4da20311ad">sfSigningPubKey</a>).empty())</div>
|
||||
<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>  {</div>
|
||||
<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  <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>  err << <span class="stringliteral">"Invalid "</span> << <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>  << <span class="stringliteral">" field. Field must be empty when multi-signing."</span>;</div>
|
||||
<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>  <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>  }</div>
|
||||
<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>  </div>
|
||||
<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  <span class="comment">// There may not be a TxnSignature field.</span></div>
|
||||
<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  <span class="keywordflow">if</span> (stpTrans->isFieldPresent(<a class="code" href="namespaceripple.html#a61697c13ea8123e926a3df063c625245">sfTxnSignature</a>))</div>
|
||||
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  <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>  </div>
|
||||
<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>  <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>  <span class="keyword">auto</span> <span class="keyword">const</span> fee = stpTrans->getFieldAmount(<a class="code" href="namespaceripple.html#a13864ec0864daa5d24b70d276414b8ff">sfFee</a>);</div>
|
||||
<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>  </div>
|
||||
<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>  <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>  {</div>
|
||||
<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>  <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>  err << <span class="stringliteral">"Invalid "</span> << <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>  << <span class="stringliteral">" field. Fees must be specified in XRP."</span>;</div>
|
||||
<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>  <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>  }</div>
|
||||
<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>  <span class="keywordflow">if</span> (fee <= <a class="code" href="classripple_1_1STAmount.html">STAmount</a>{0})</div>
|
||||
<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>  {</div>
|
||||
<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  <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>  err << <span class="stringliteral">"Invalid "</span> << <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>  << <span class="stringliteral">" field. Fees must be greater than zero."</span>;</div>
|
||||
<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>  <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>  }</div>
|
||||
<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  }</div>
|
||||
<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>  </div>
|
||||
<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  <span class="comment">// Verify that the Signers field is present.</span></div>
|
||||
<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  <span class="keywordflow">if</span> (!stpTrans->isFieldPresent(<a class="code" href="namespaceripple.html#a22a86f3d2d6d958de794f8532d459bac">sfSigners</a>))</div>
|
||||
<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#aec2e1163b39a450d3917af9dd15b0f06">RPC::missing_field_error</a>(<span class="stringliteral">"tx_json.Signers"</span>);</div>
|
||||
<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  </div>
|
||||
<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>  <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>  <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>  <span class="keyword">auto</span>& signers = stpTrans->peekFieldArray(<a class="code" href="namespaceripple.html#a22a86f3d2d6d958de794f8532d459bac">sfSigners</a>);</div>
|
||||
<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  </div>
|
||||
<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>  <span class="keywordflow">if</span> (signers.empty())</div>
|
||||
<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a5b6ce0616f6995340f4dd846660c3749">RPC::make_param_error</a>(<span class="stringliteral">"tx_json.Signers array may not be empty."</span>);</div>
|
||||
<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>  </div>
|
||||
<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>  <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>  <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>  signers.begin(), signers.end(), [](<a class="code" href="classripple_1_1STObject.html">STObject</a> <span class="keyword">const</span>& obj) {</div>
|
||||
<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  return (</div>
|
||||
<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  <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>  <span class="comment">// others.</span></div>
|
||||
<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>  obj.isFieldPresent(sfAccount) &&</div>
|
||||
<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>  obj.isFieldPresent(sfSigningPubKey) &&</div>
|
||||
<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>  obj.isFieldPresent(sfTxnSignature) && obj.getCount() == 3);</div>
|
||||
<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>  }) != signers.end())</div>
|
||||
<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>  {</div>
|
||||
<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>  <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>  <span class="stringliteral">"Signers array may only contain Signer entries."</span>);</div>
|
||||
<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>  }</div>
|
||||
<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>  </div>
|
||||
<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>  <span class="comment">// The array must be sorted and validated.</span></div>
|
||||
<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>  <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>  <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>  <span class="keywordflow">return</span> err;</div>
|
||||
<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>  </div>
|
||||
<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>  <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>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair<Json::Value, Transaction::pointer></a> txn =</div>
|
||||
<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>  <a class="code" href="namespaceripple_1_1RPC_1_1detail.html#abafd63792821196881f9a3a2de040aed">transactionConstructImpl</a>(stpTrans, ledger->rules(), app);</div>
|
||||
<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>  </div>
|
||||
<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  <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>  <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>  </div>
|
||||
<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>  <span class="comment">// Finally, submit the transaction.</span></div>
|
||||
<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>  <span class="keywordflow">try</span></div>
|
||||
<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>  {</div>
|
||||
<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>  <span class="comment">// FIXME: For performance, should use asynch interface</span></div>
|
||||
<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>  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>  }</div>
|
||||
<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>  <span class="keywordflow">catch</span> (<a class="codeRef" href="http://en.cppreference.com/w/cpp/error/exception.html">std::exception</a>&)</div>
|
||||
<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>  {</div>
|
||||
<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>  <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>  <a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a839833d48b635d8df6a9176274ae922f">rpcINTERNAL</a>, <span class="stringliteral">"Exception occurred during transaction submission."</span>);</div>
|
||||
<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>  }</div>
|
||||
<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>  </div>
|
||||
<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>  <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> }</div>
|
||||
<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>  </div>
|
||||
<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span> } <span class="comment">// namespace RPC</span></div>
|
||||
<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span> } <span class="comment">// namespace ripple</span></div>
|
||||
<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/functional/function.html">ProcessTransactionFn</a> <span class="keyword">const</span>& processTransaction,</div>
|
||||
<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>  <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> {</div>
|
||||
<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>  <span class="keyword">auto</span> <span class="keyword">const</span>& 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>  <span class="keyword">auto</span> j = app.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">"RPCHandler"</span>);</div>
|
||||
<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>  JLOG(j.debug()) << <span class="stringliteral">"transactionSubmitMultiSigned: "</span> << jvRequest;</div>
|
||||
<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>  </div>
|
||||
<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  <span class="comment">// When multi-signing, the "Sequence" and "SigningPubKey" fields must</span></div>
|
||||
<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>  <span class="comment">// be passed in by the caller.</span></div>
|
||||
<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  <span class="keyword">using namespace </span>detail;</div>
|
||||
<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  {</div>
|
||||
<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  <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>  <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>  <span class="keywordflow">return</span> err;</div>
|
||||
<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  }</div>
|
||||
<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  </div>
|
||||
<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  <a class="code" href="classJson_1_1Value.html">Json::Value</a>& tx_json(jvRequest[<span class="stringliteral">"tx_json"</span>]);</div>
|
||||
<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  </div>
|
||||
<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  <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>  tx_json,</div>
|
||||
<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  role,</div>
|
||||
<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  <span class="keyword">true</span>,</div>
|
||||
<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  validatedLedgerAge,</div>
|
||||
<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  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>  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>  <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>  </div>
|
||||
<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>  <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>  <span class="keywordflow">return</span> std::move(txJsonResult);</div>
|
||||
<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>  </div>
|
||||
<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<SLE const></a> sle =</div>
|
||||
<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  ledger->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>  </div>
|
||||
<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  <span class="keywordflow">if</span> (!sle)</div>
|
||||
<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  {</div>
|
||||
<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  <span class="comment">// If did not find account, error.</span></div>
|
||||
<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  JLOG(j.debug())</div>
|
||||
<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  << <span class="stringliteral">"transactionSubmitMultiSigned: Failed to find source account "</span></div>
|
||||
<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  << <span class="stringliteral">"in current ledger: "</span> << <a class="code" href="namespaceripple.html#a08a13b62b18272366f788632359e8793">toBase58</a>(srcAddressID);</div>
|
||||
<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  </div>
|
||||
<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  <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>  }</div>
|
||||
<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>  </div>
|
||||
<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  {</div>
|
||||
<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  <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>  jvRequest,</div>
|
||||
<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  role,</div>
|
||||
<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>  <span class="keyword">false</span>,</div>
|
||||
<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  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>  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>  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>  app);</div>
|
||||
<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>  </div>
|
||||
<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>  <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>  <span class="keywordflow">return</span> err;</div>
|
||||
<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>  </div>
|
||||
<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  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>  </div>
|
||||
<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>  <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>  <span class="keywordflow">return</span> err;</div>
|
||||
<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>  }</div>
|
||||
<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>  </div>
|
||||
<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  <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>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr<STTx></a> stpTrans;</div>
|
||||
<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>  {</div>
|
||||
<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>  <a class="code" href="classripple_1_1STParsedJSONObject.html">STParsedJSONObject</a> parsedTx_json(<span class="stringliteral">"tx_json"</span>, tx_json);</div>
|
||||
<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>  <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>  {</div>
|
||||
<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>  <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>  jvResult[<span class="stringliteral">"error"</span>] = parsedTx_json.<a class="code" href="classripple_1_1STParsedJSONObject.html#a75ae1e4c096f722a17614c58d8b284a4">error</a>[<span class="stringliteral">"error"</span>];</div>
|
||||
<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>  jvResult[<span class="stringliteral">"error_code"</span>] = parsedTx_json.<a class="code" href="classripple_1_1STParsedJSONObject.html#a75ae1e4c096f722a17614c58d8b284a4">error</a>[<span class="stringliteral">"error_code"</span>];</div>
|
||||
<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  jvResult[<span class="stringliteral">"error_message"</span>] = parsedTx_json.<a class="code" href="classripple_1_1STParsedJSONObject.html#a75ae1e4c096f722a17614c58d8b284a4">error</a>[<span class="stringliteral">"error_message"</span>];</div>
|
||||
<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  <span class="keywordflow">return</span> jvResult;</div>
|
||||
<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  }</div>
|
||||
<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  <span class="keywordflow">try</span></div>
|
||||
<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  {</div>
|
||||
<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>  stpTrans =</div>
|
||||
<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  std::make_shared<STTx>(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>  }</div>
|
||||
<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>  <span class="keywordflow">catch</span> (<a class="code" href="classripple_1_1STObject_1_1FieldErr.html">STObject::FieldErr</a>& err)</div>
|
||||
<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>  {</div>
|
||||
<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  <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>  }</div>
|
||||
<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  <span class="keywordflow">catch</span> (<a class="codeRef" href="http://en.cppreference.com/w/cpp/error/exception.html">std::exception</a>& ex)</div>
|
||||
<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  {</div>
|
||||
<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  <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>  <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>  <a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a839833d48b635d8df6a9176274ae922f">rpcINTERNAL</a>,</div>
|
||||
<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>  <span class="stringliteral">"Exception while serializing transaction: "</span> + reason);</div>
|
||||
<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>  }</div>
|
||||
<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>  <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>  <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>  <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>  }</div>
|
||||
<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  </div>
|
||||
<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>  <span class="comment">// Validate the fields in the serialized transaction.</span></div>
|
||||
<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>  {</div>
|
||||
<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>  <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>  <span class="comment">// Verify the values of select fields.</span></div>
|
||||
<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  <span class="comment">//</span></div>
|
||||
<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>  <span class="comment">// The SigningPubKey must be present but empty.</span></div>
|
||||
<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>  <span class="keywordflow">if</span> (!stpTrans->getFieldVL(<a class="code" href="namespaceripple.html#a590913040d5c9a68f3bf1d4da20311ad">sfSigningPubKey</a>).empty())</div>
|
||||
<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>  {</div>
|
||||
<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>  <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>  err << <span class="stringliteral">"Invalid "</span> << <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>  << <span class="stringliteral">" field. Field must be empty when multi-signing."</span>;</div>
|
||||
<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>  <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>  }</div>
|
||||
<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  </div>
|
||||
<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>  <span class="comment">// There may not be a TxnSignature field.</span></div>
|
||||
<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>  <span class="keywordflow">if</span> (stpTrans->isFieldPresent(<a class="code" href="namespaceripple.html#a61697c13ea8123e926a3df063c625245">sfTxnSignature</a>))</div>
|
||||
<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>  <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>  </div>
|
||||
<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>  <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>  <span class="keyword">auto</span> <span class="keyword">const</span> fee = stpTrans->getFieldAmount(<a class="code" href="namespaceripple.html#a13864ec0864daa5d24b70d276414b8ff">sfFee</a>);</div>
|
||||
<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>  </div>
|
||||
<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>  <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>  {</div>
|
||||
<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>  <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>  err << <span class="stringliteral">"Invalid "</span> << <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>  << <span class="stringliteral">" field. Fees must be specified in XRP."</span>;</div>
|
||||
<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>  <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>  }</div>
|
||||
<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>  <span class="keywordflow">if</span> (fee <= <a class="code" href="classripple_1_1STAmount.html">STAmount</a>{0})</div>
|
||||
<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>  {</div>
|
||||
<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>  <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>  err << <span class="stringliteral">"Invalid "</span> << <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>  << <span class="stringliteral">" field. Fees must be greater than zero."</span>;</div>
|
||||
<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  <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>  }</div>
|
||||
<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>  }</div>
|
||||
<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  </div>
|
||||
<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  <span class="comment">// Verify that the Signers field is present.</span></div>
|
||||
<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>  <span class="keywordflow">if</span> (!stpTrans->isFieldPresent(<a class="code" href="namespaceripple.html#a22a86f3d2d6d958de794f8532d459bac">sfSigners</a>))</div>
|
||||
<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#aec2e1163b39a450d3917af9dd15b0f06">RPC::missing_field_error</a>(<span class="stringliteral">"tx_json.Signers"</span>);</div>
|
||||
<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>  </div>
|
||||
<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>  <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>  <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>  <span class="keyword">auto</span>& signers = stpTrans->peekFieldArray(<a class="code" href="namespaceripple.html#a22a86f3d2d6d958de794f8532d459bac">sfSigners</a>);</div>
|
||||
<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>  </div>
|
||||
<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  <span class="keywordflow">if</span> (signers.empty())</div>
|
||||
<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceripple_1_1RPC.html#a5b6ce0616f6995340f4dd846660c3749">RPC::make_param_error</a>(<span class="stringliteral">"tx_json.Signers array may not be empty."</span>);</div>
|
||||
<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>  </div>
|
||||
<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>  <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>  <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>  signers.begin(), signers.end(), [](<a class="code" href="classripple_1_1STObject.html">STObject</a> <span class="keyword">const</span>& obj) {</div>
|
||||
<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  return (</div>
|
||||
<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>  <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>  <span class="comment">// others.</span></div>
|
||||
<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>  obj.isFieldPresent(sfAccount) &&</div>
|
||||
<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>  obj.isFieldPresent(sfSigningPubKey) &&</div>
|
||||
<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>  obj.isFieldPresent(sfTxnSignature) && obj.getCount() == 3);</div>
|
||||
<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>  }) != signers.end())</div>
|
||||
<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>  {</div>
|
||||
<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>  <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>  <span class="stringliteral">"Signers array may only contain Signer entries."</span>);</div>
|
||||
<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>  }</div>
|
||||
<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>  </div>
|
||||
<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>  <span class="comment">// The array must be sorted and validated.</span></div>
|
||||
<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>  <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>  <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>  <span class="keywordflow">return</span> err;</div>
|
||||
<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>  </div>
|
||||
<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>  <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>  <a class="codeRef" href="http://en.cppreference.com/w/cpp/utility/pair.html">std::pair<Json::Value, Transaction::pointer></a> txn =</div>
|
||||
<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>  <a class="code" href="namespaceripple_1_1RPC_1_1detail.html#abafd63792821196881f9a3a2de040aed">transactionConstructImpl</a>(stpTrans, ledger->rules(), app);</div>
|
||||
<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>  </div>
|
||||
<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>  <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>  <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>  </div>
|
||||
<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>  <span class="comment">// Finally, submit the transaction.</span></div>
|
||||
<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>  <span class="keywordflow">try</span></div>
|
||||
<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>  {</div>
|
||||
<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>  <span class="comment">// FIXME: For performance, should use asynch interface</span></div>
|
||||
<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>  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>  }</div>
|
||||
<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>  <span class="keywordflow">catch</span> (<a class="codeRef" href="http://en.cppreference.com/w/cpp/error/exception.html">std::exception</a>&)</div>
|
||||
<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>  {</div>
|
||||
<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>  <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>  <a class="code" href="namespaceripple.html#a32d6d3ce1a48272b677d2c88b1d30932a839833d48b635d8df6a9176274ae922f">rpcINTERNAL</a>, <span class="stringliteral">"Exception occurred during transaction submission."</span>);</div>
|
||||
<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>  }</div>
|
||||
<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>  </div>
|
||||
<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>  <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> }</div>
|
||||
<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>  </div>
|
||||
<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span> } <span class="comment">// namespace RPC</span></div>
|
||||
<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span> } <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 &result, Json::Value const &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< std::is_same< T, char >::value||std::is_same< T, unsigned char >::value, Slice > makeSlice(std::array< T, N > const &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 & operator=(transactionPreProcessResult const &)=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< Dest > 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 &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 &app, ProcessTransactionFn const &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 &params, Json::Value &tx_json, AccountID const &srcAddressID, Role const role, Application &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 &name, std::string const &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 &app, ProcessTransactionFn const &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 &params, Role role, SigningForParams &signingArgs, std::chrono::seconds validatedLedgerAge, Application &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< Validity, std::string > checkValidity(HashRouter &router, STTx const &tx, Rules const &rules, Config const &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 & 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 &signers, AccountID const &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 &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 & 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< SLE const > const &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 &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 &fullLiquidityPath, STPathSet const &extraPaths, AccountID const &srcIssuer, std::function< bool(void)> const &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 &app, ProcessTransactionFn const &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 &&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 &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 &token, std::string &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 &token, std::string &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 &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< Ledger const > 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< Ledger const > 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 &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 &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 &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 &app, ProcessTransactionFn const &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 -->
|
||||
|
||||
Reference in New Issue
Block a user