dash-docs/en/doxygen/html/wallet_8cpp_source.html

659 lines
974 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Dash Core: src/wallet/wallet.cpp Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(initResizable);
/* @license-end */</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectlogo"><img alt="Logo" src="bitcoin_logo_doxygen.png"/></td>
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Dash Core
&#160;<span id="projectnumber">0.12.2.1</span>
</div>
<div id="projectbrief">P2P Digital Currency</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('wallet_8cpp_source.html','');});
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="headertitle">
<div class="title">wallet.cpp</div> </div>
</div><!--header-->
<div class="contents">
<a href="wallet_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">// Copyright (c) 2009-2010 Satoshi Nakamoto</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">// Copyright (c) 2009-2015 The Bitcoin Core developers</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">// Copyright (c) 2014-2017 The Dash Core developers</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">// Distributed under the MIT software license, see the accompanying</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">// file COPYING or http://www.opensource.org/licenses/mit-license.php.</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="wallet_8h.html">wallet/wallet.h</a>&quot;</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="base58_8h.html">base58.h</a>&quot;</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="checkpoints_8h.html">checkpoints.h</a>&quot;</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="chain_8h.html">chain.h</a>&quot;</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="coincontrol_8h.html">coincontrol.h</a>&quot;</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="consensus_8h.html">consensus/consensus.h</a>&quot;</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="consensus_2validation_8h.html">consensus/validation.h</a>&quot;</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="key_8h.html">key.h</a>&quot;</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="keystore_8h.html">keystore.h</a>&quot;</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="consensus_2validation_8h.html">validation.h</a>&quot;</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="net_8h.html">net.h</a>&quot;</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="policy_8h.html">policy/policy.h</a>&quot;</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="block_8h.html">primitives/block.h</a>&quot;</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="transaction_8h.html">primitives/transaction.h</a>&quot;</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="script_8h.html">script/script.h</a>&quot;</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="sign_8h.html">script/sign.h</a>&quot;</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="timedata_8h.html">timedata.h</a>&quot;</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="txmempool_8h.html">txmempool.h</a>&quot;</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="preprocessor">#include &quot;util.h&quot;</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="utilmoneystr_8h.html">utilmoneystr.h</a>&quot;</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="governance_8h.html">governance.h</a>&quot;</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="instantx_8h.html">instantx.h</a>&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="keepass_8h.html">keepass.h</a>&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="privatesend-client_8h.html">privatesend-client.h</a>&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="spork_8h.html">spork.h</a>&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;<span class="preprocessor">#include &lt;assert.h&gt;</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160;<span class="preprocessor">#include &lt;boost/algorithm/string/replace.hpp&gt;</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160;<span class="preprocessor">#include &lt;boost/filesystem.hpp&gt;</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;<span class="preprocessor">#include &lt;boost/thread.hpp&gt;</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160;<span class="keyword">using namespace </span><a class="code" href="namespacestd.html">std</a>;</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;<a class="code" href="classCFeeRate.html">CFeeRate</a> <a class="code" href="wallet_8cpp.html#a306d99326ae3a32749287b1812ac5ea7">payTxFee</a>(<a class="code" href="wallet_8h.html#a552380bab1040b682ab9d4a1fca48f2f">DEFAULT_TRANSACTION_FEE</a>);</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="wallet_8h.html#a77a17dcfb43cece2a434c0a9bfe9e441"> 46</a></span>&#160;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="wallet_8cpp.html#a77a17dcfb43cece2a434c0a9bfe9e441">maxTxFee</a> = <a class="code" href="wallet_8h.html#a08e44dbb6db8502639f09f72737afd19">DEFAULT_TRANSACTION_MAXFEE</a>;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="wallet_8h.html#a98515175145feea7ec9776cbf202e446"> 47</a></span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="wallet_8cpp.html#a98515175145feea7ec9776cbf202e446">nTxConfirmTarget</a> = <a class="code" href="wallet_8h.html#a31d13bcc9bac14a52ca62a93088f115d">DEFAULT_TX_CONFIRM_TARGET</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="wallet_8h.html#a755a19591df8d2f5079c1f7132c65642"> 48</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="wallet_8cpp.html#a755a19591df8d2f5079c1f7132c65642">bSpendZeroConfChange</a> = <a class="code" href="wallet_8h.html#a7f01c5239c67e07b5bd29405b65ee46a">DEFAULT_SPEND_ZEROCONF_CHANGE</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="wallet_8h.html#acfb04198cec6dc995cbc6adf98e575d3"> 49</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="wallet_8cpp.html#acfb04198cec6dc995cbc6adf98e575d3">fSendFreeTransactions</a> = <a class="code" href="wallet_8h.html#aa805d0c9ae7328aa3e88dca182c186f5">DEFAULT_SEND_FREE_TRANSACTIONS</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;<a class="code" href="classCFeeRate.html">CFeeRate</a> <a class="code" href="classCWallet.html#ab60ceb8041d1f9cecc70b19d2317c686">CWallet::minTxFee</a> = <a class="code" href="classCFeeRate.html">CFeeRate</a>(<a class="code" href="wallet_8h.html#a91574d7e11957e02e07206d769a4e829">DEFAULT_LEGACY_TRANSACTION_MINFEE</a>);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160;<a class="code" href="classCFeeRate.html">CFeeRate</a> <a class="code" href="classCWallet.html#a097ee5497796e133776030c27e6661f8">CWallet::fallbackFee</a> = <a class="code" href="classCFeeRate.html">CFeeRate</a>(<a class="code" href="wallet_8h.html#a2e1ad8571f6e40aa90375ad63fe47a92">DEFAULT_LEGACY_FALLBACK_FEE</a>);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160;<span class="keyword">const</span> <a class="code" href="classuint256.html">uint256</a> <a class="code" href="classCMerkleTx.html#a5c2a9ab2b46a2cfba58e315fd3c16a17">CMerkleTx::ABANDON_HASH</a>(<a class="code" href="uint256_8h.html#a52e679560cc1ebf68f878ed69e38f259">uint256S</a>(<span class="stringliteral">&quot;0000000000000000000000000000000000000000000000000000000000000001&quot;</span>));</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="structCompareValueOnly.html"> 70</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structCompareValueOnly.html">CompareValueOnly</a></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160;{</div><div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="structCompareValueOnly.html#a423bf5200199a41849aabb4b6ae46d94"> 72</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structCompareValueOnly.html#a423bf5200199a41849aabb4b6ae46d94">operator()</a>(<span class="keyword">const</span> pair&lt;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a>, pair&lt;const CWalletTx*, unsigned int&gt; &gt;&amp; t1,</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; <span class="keyword">const</span> pair&lt;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a>, pair&lt;const CWalletTx*, unsigned int&gt; &gt;&amp; t2)<span class="keyword"> const</span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <span class="keywordflow">return</span> t1.first &lt; t2.first;</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;};</div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno"><a class="line" href="group__mapWallet.html#gad80664c1a4a4cc36e8bd52077b1bd4db"> 79</a></span>&#160;std::string <a class="code" href="group__mapWallet.html#gad80664c1a4a4cc36e8bd52077b1bd4db">COutput::ToString</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <span class="keywordflow">return</span> <a class="code" href="tinyformat_8h.html#a56c674871a61baaad36ad52238c08857">strprintf</a>(<span class="stringliteral">&quot;COutput(%s, %d, %d) [%s]&quot;</span>, tx-&gt;GetHash().ToString(), i, nDepth, <a class="code" href="utilmoneystr_8cpp.html#a0043c9abedcbce2d7d1d2cacaf595c9e">FormatMoney</a>(tx-&gt;vout[i].nValue));</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;}</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160;</div><div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga1e98c1005aec356c68c4f56ff9a02944"> 84</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__mapWallet.html#ga1e98c1005aec356c68c4f56ff9a02944">COutput::Priority</a>()<span class="keyword"> const</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160; BOOST_FOREACH(<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> d, <a class="code" href="classCPrivateSend.html#a43229314704738ac10f7daacb34ee3c1">CPrivateSend::GetStandardDenominations</a>())</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; <span class="keywordflow">if</span>(tx-&gt;vout[i].nValue == d) <span class="keywordflow">return</span> 10000;</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordflow">if</span>(tx-&gt;vout[i].nValue &lt; 1*<a class="code" href="amount_8h.html#aed6bcb17bc73a5dcf33250e9c2c023cc">COIN</a>) <span class="keywordflow">return</span> 20000;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; <span class="comment">//nondenom return largest first</span></div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordflow">return</span> -(tx-&gt;vout[i].nValue/<a class="code" href="amount_8h.html#aed6bcb17bc73a5dcf33250e9c2c023cc">COIN</a>);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;}</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="group__mapWallet.html#gac496716bb889a5934fa27398aeb2330a"> 94</a></span>&#160;<span class="keyword">const</span> <a class="code" href="classCWalletTx.html">CWalletTx</a>* <a class="code" href="group__mapWallet.html#gac496716bb889a5934fa27398aeb2330a">CWallet::GetWalletTx</a>(<span class="keyword">const</span> <a class="code" href="classuint256.html">uint256</a>&amp; hash)<span class="keyword"> const</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet);</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; std::map&lt;uint256, CWalletTx&gt;::const_iterator it = mapWallet.find(hash);</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160; <span class="keywordflow">if</span> (it == mapWallet.end())</div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keywordflow">return</span> NULL;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keywordflow">return</span> &amp;(it-&gt;second);</div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160;}</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga8495da27a11e957d31d7cf6e60c7422d"> 103</a></span>&#160;<a class="code" href="classCPubKey.html">CPubKey</a> <a class="code" href="group__mapWallet.html#ga8495da27a11e957d31d7cf6e60c7422d">CWallet::GenerateNewKey</a>(uint32_t nAccountIndex, <span class="keywordtype">bool</span> fInternal)</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160;{</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160; <a class="code" href="sync_8h.html#acd61d0cb3b49f367728193720014aed0">AssertLockHeld</a>(cs_wallet); <span class="comment">// mapKeyMetadata</span></div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160; <span class="keywordtype">bool</span> fCompressed = CanSupportFeature(<a class="code" href="wallet_8h.html#a39a6b71da3eb95cddc0836d3b27ac7c9a9b917e6922fd5de60c0b9fc95a3bf0e4">FEATURE_COMPRPUBKEY</a>); <span class="comment">// default to compressed public keys if we want 0.6.0 wallets</span></div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; <a class="code" href="classCKey.html">CKey</a> secret;</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160;</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; <span class="comment">// Create new metadata</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; int64_t nCreationTime = <a class="code" href="utiltime_8cpp.html#a46fac5fba8ba905b5f9acb364f5d8c6f">GetTime</a>();</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <a class="code" href="classCKeyMetadata.html">CKeyMetadata</a> metadata(nCreationTime);</div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="classCPubKey.html">CPubKey</a> pubkey;</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <span class="comment">// use HD key derivation if HD was enabled during wallet creation</span></div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; <span class="keywordflow">if</span> (IsHDEnabled()) {</div><div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; DeriveNewChildKey(metadata, secret, nAccountIndex, fInternal);</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; pubkey = secret.<a class="code" href="classCKey.html#aa1085c59603a62db6ec776300f250337">GetPubKey</a>();</div><div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; secret.<a class="code" href="classCKey.html#a9d12ed9d297e4286250fd7ea6b59e1a5">MakeNewKey</a>(fCompressed);</div><div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>&#160; <span class="comment">// Compressed public keys were introduced in version 0.6.0</span></div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>&#160; <span class="keywordflow">if</span> (fCompressed)</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>&#160; SetMinVersion(<a class="code" href="wallet_8h.html#a39a6b71da3eb95cddc0836d3b27ac7c9a9b917e6922fd5de60c0b9fc95a3bf0e4">FEATURE_COMPRPUBKEY</a>);</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span>&#160; pubkey = secret.<a class="code" href="classCKey.html#aa1085c59603a62db6ec776300f250337">GetPubKey</a>();</div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span>&#160; assert(secret.<a class="code" href="classCKey.html#ac53425b8d0f89067bce781c485101b20">VerifyPubKey</a>(pubkey));</div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span>&#160; <span class="comment">// Create new metadata</span></div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>&#160; mapKeyMetadata[pubkey.<a class="code" href="classCPubKey.html#a2675f7e6f72eff68e7a5227289feb021">GetID</a>()] = metadata;</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>&#160; <span class="keywordflow">if</span> (!nTimeFirstKey || nCreationTime &lt; nTimeFirstKey)</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>&#160; nTimeFirstKey = nCreationTime;</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>&#160; <span class="keywordflow">if</span> (!AddKeyPubKey(secret, pubkey))</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(std::string(__func__) + <span class="stringliteral">&quot;: AddKey failed&quot;</span>);</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>&#160; }</div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>&#160; <span class="keywordflow">return</span> pubkey;</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span>&#160;}</div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga76beb4aa57afa52c8fca1f84784f29f0"> 140</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__mapWallet.html#ga76beb4aa57afa52c8fca1f84784f29f0">CWallet::DeriveNewChildKey</a>(<span class="keyword">const</span> <a class="code" href="classCKeyMetadata.html">CKeyMetadata</a>&amp; metadata, <a class="code" href="classCKey.html">CKey</a>&amp; secretRet, uint32_t nAccountIndex, <span class="keywordtype">bool</span> fInternal)</div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160;{</div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>&#160; <a class="code" href="classCHDChain.html">CHDChain</a> hdChainTmp;</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keywordflow">if</span> (!GetHDChain(hdChainTmp)) {</div><div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(std::string(__func__) + <span class="stringliteral">&quot;: GetHDChain failed&quot;</span>);</div><div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; }</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; <span class="keywordflow">if</span> (!DecryptHDChain(hdChainTmp))</div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(std::string(__func__) + <span class="stringliteral">&quot;: DecryptHDChainSeed failed&quot;</span>);</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>&#160; <span class="comment">// make sure seed matches this chain</span></div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span>&#160; <span class="keywordflow">if</span> (hdChainTmp.<a class="code" href="classCHDChain.html#a37c75884a3ef7c7ff435aae648c3c6de">GetID</a>() != hdChainTmp.<a class="code" href="classCHDChain.html#a4593a3c0b9eb1918f0c3820f1a54b5f4">GetSeedHash</a>())</div><div class="line"><a name="l00151"></a><span class="lineno"> 151</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(std::string(__func__) + <span class="stringliteral">&quot;: Wrong HD chain!&quot;</span>);</div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>&#160; <a class="code" href="classCHDAccount.html">CHDAccount</a> acc;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>&#160; <span class="keywordflow">if</span> (!hdChainTmp.<a class="code" href="classCHDChain.html#a2a0c671986223564036fedb8b8102f6b">GetAccount</a>(nAccountIndex, acc))</div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(std::string(__func__) + <span class="stringliteral">&quot;: Wrong HD account!&quot;</span>);</div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>&#160;</div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>&#160; <span class="comment">// derive child key at next index, skip keys already known to the wallet</span></div><div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <a class="code" href="structCExtKey.html">CExtKey</a> childKey;</div><div class="line"><a name="l00159"></a><span class="lineno"> 159</span>&#160; uint32_t nChildIndex = fInternal ? acc.<a class="code" href="classCHDAccount.html#a7d5630dac573978f9eb98c451fbb1c4b">nInternalChainCounter</a> : acc.<a class="code" href="classCHDAccount.html#a1ff7dbe6c3d28c85d2111368cdd2ab6f">nExternalChainCounter</a>;</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">do</span> {</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; hdChainTmp.<a class="code" href="classCHDChain.html#aef1b10fffd41285366d594ace3a97d69">DeriveChildExtKey</a>(nAccountIndex, fInternal, nChildIndex, childKey);</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; <span class="comment">// increment childkey index</span></div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>&#160; nChildIndex++;</div><div class="line"><a name="l00164"></a><span class="lineno"> 164</span>&#160; } <span class="keywordflow">while</span> (HaveKey(childKey.<a class="code" href="structCExtKey.html#a93cd93ef3311d9dbcf475282a5f80fb2">key</a>.<a class="code" href="classCKey.html#aa1085c59603a62db6ec776300f250337">GetPubKey</a>().<a class="code" href="classCPubKey.html#a2675f7e6f72eff68e7a5227289feb021">GetID</a>()));</div><div class="line"><a name="l00165"></a><span class="lineno"> 165</span>&#160; secretRet = childKey.<a class="code" href="structCExtKey.html#a93cd93ef3311d9dbcf475282a5f80fb2">key</a>;</div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>&#160; <a class="code" href="classCPubKey.html">CPubKey</a> pubkey = secretRet.<a class="code" href="classCKey.html#aa1085c59603a62db6ec776300f250337">GetPubKey</a>();</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>&#160; assert(secretRet.<a class="code" href="classCKey.html#ac53425b8d0f89067bce781c485101b20">VerifyPubKey</a>(pubkey));</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>&#160; <span class="comment">// store metadata</span></div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>&#160; mapKeyMetadata[pubkey.<a class="code" href="classCPubKey.html#a2675f7e6f72eff68e7a5227289feb021">GetID</a>()] = metadata;</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; <span class="keywordflow">if</span> (!nTimeFirstKey || metadata.<a class="code" href="classCKeyMetadata.html#accfd31222aefcbdcba1fb0214e546e6d">nCreateTime</a> &lt; nTimeFirstKey)</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>&#160; nTimeFirstKey = metadata.<a class="code" href="classCKeyMetadata.html#accfd31222aefcbdcba1fb0214e546e6d">nCreateTime</a>;</div><div class="line"><a name="l00174"></a><span class="lineno"> 174</span>&#160;</div><div class="line"><a name="l00175"></a><span class="lineno"> 175</span>&#160; <span class="comment">// update the chain model in the database</span></div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>&#160; <a class="code" href="classCHDChain.html">CHDChain</a> hdChainCurrent;</div><div class="line"><a name="l00177"></a><span class="lineno"> 177</span>&#160; GetHDChain(hdChainCurrent);</div><div class="line"><a name="l00178"></a><span class="lineno"> 178</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno"> 179</span>&#160; <span class="keywordflow">if</span> (fInternal) {</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>&#160; acc.<a class="code" href="classCHDAccount.html#a7d5630dac573978f9eb98c451fbb1c4b">nInternalChainCounter</a> = nChildIndex;</div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>&#160; }</div><div class="line"><a name="l00182"></a><span class="lineno"> 182</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00183"></a><span class="lineno"> 183</span>&#160; acc.<a class="code" href="classCHDAccount.html#a1ff7dbe6c3d28c85d2111368cdd2ab6f">nExternalChainCounter</a> = nChildIndex;</div><div class="line"><a name="l00184"></a><span class="lineno"> 184</span>&#160; }</div><div class="line"><a name="l00185"></a><span class="lineno"> 185</span>&#160;</div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>&#160; <span class="keywordflow">if</span> (!hdChainCurrent.<a class="code" href="classCHDChain.html#a9e79f152d459a87a4603c054e0d9a03e">SetAccount</a>(nAccountIndex, acc))</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(std::string(__func__) + <span class="stringliteral">&quot;: SetAccount failed&quot;</span>);</div><div class="line"><a name="l00188"></a><span class="lineno"> 188</span>&#160;</div><div class="line"><a name="l00189"></a><span class="lineno"> 189</span>&#160; <span class="keywordflow">if</span> (IsCrypted()) {</div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>&#160; <span class="keywordflow">if</span> (!SetCryptedHDChain(hdChainCurrent, <span class="keyword">false</span>))</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(std::string(__func__) + <span class="stringliteral">&quot;: SetCryptedHDChain failed&quot;</span>);</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span>&#160; }</div><div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span>&#160; <span class="keywordflow">if</span> (!SetHDChain(hdChainCurrent, <span class="keyword">false</span>))</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(std::string(__func__) + <span class="stringliteral">&quot;: SetHDChain failed&quot;</span>);</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span>&#160; }</div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>&#160;</div><div class="line"><a name="l00198"></a><span class="lineno"> 198</span>&#160; <span class="keywordflow">if</span> (!AddHDPubKey(childKey.<a class="code" href="structCExtKey.html#a4ea6bbc6c9bda4f8d77cade114155569">Neuter</a>(), fInternal))</div><div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(std::string(__func__) + <span class="stringliteral">&quot;: AddHDPubKey failed&quot;</span>);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>&#160;}</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>&#160;</div><div class="line"><a name="l00202"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga156417283f7cb4e283ee97720ab07d43"> 202</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#ga156417283f7cb4e283ee97720ab07d43">CWallet::GetPubKey</a>(<span class="keyword">const</span> <a class="code" href="classCKeyID.html">CKeyID</a> &amp;address, <a class="code" href="classCPubKey.html">CPubKey</a>&amp; vchPubKeyOut)<span class="keyword"> const</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet);</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>&#160; std::map&lt;CKeyID, CHDPubKey&gt;::const_iterator mi = mapHdPubKeys.find(address);</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>&#160; <span class="keywordflow">if</span> (mi != mapHdPubKeys.end())</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span>&#160; {</div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>&#160; <span class="keyword">const</span> <a class="code" href="classCHDPubKey.html">CHDPubKey</a> &amp;hdPubKey = (*mi).second;</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; vchPubKeyOut = hdPubKey.<a class="code" href="classCHDPubKey.html#ac3ddb59612ca1bab618d7bb0b0c38ba9">extPubKey</a>.<a class="code" href="structCExtPubKey.html#ab18c8520919d20bbfd068565ae566ea8">pubkey</a>;</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>&#160; }</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classCCryptoKeyStore.html#a20b474adfe6900bb36cd4fd6f9c31380">CCryptoKeyStore::GetPubKey</a>(address, vchPubKeyOut);</div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>&#160;}</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>&#160;</div><div class="line"><a name="l00216"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga81b8985d9f44cfbbf71c12f0857a4c54"> 216</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#ga81b8985d9f44cfbbf71c12f0857a4c54">CWallet::GetKey</a>(<span class="keyword">const</span> <a class="code" href="classCKeyID.html">CKeyID</a> &amp;address, <a class="code" href="classCKey.html">CKey</a>&amp; keyOut)<span class="keyword"> const</span></div><div class="line"><a name="l00217"></a><span class="lineno"> 217</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00218"></a><span class="lineno"> 218</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>&#160; std::map&lt;CKeyID, CHDPubKey&gt;::const_iterator mi = mapHdPubKeys.find(address);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; <span class="keywordflow">if</span> (mi != mapHdPubKeys.end())</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>&#160; {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>&#160; <span class="comment">// if the key has been found in mapHdPubKeys, derive it on the fly</span></div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>&#160; <span class="keyword">const</span> <a class="code" href="classCHDPubKey.html">CHDPubKey</a> &amp;hdPubKey = (*mi).second;</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>&#160; <a class="code" href="classCHDChain.html">CHDChain</a> hdChainCurrent;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>&#160; <span class="keywordflow">if</span> (!GetHDChain(hdChainCurrent))</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(std::string(__func__) + <span class="stringliteral">&quot;: GetHDChain failed&quot;</span>);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>&#160; <span class="keywordflow">if</span> (!DecryptHDChain(hdChainCurrent))</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(std::string(__func__) + <span class="stringliteral">&quot;: DecryptHDChainSeed failed&quot;</span>);</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>&#160; <span class="comment">// make sure seed matches this chain</span></div><div class="line"><a name="l00230"></a><span class="lineno"> 230</span>&#160; <span class="keywordflow">if</span> (hdChainCurrent.<a class="code" href="classCHDChain.html#a37c75884a3ef7c7ff435aae648c3c6de">GetID</a>() != hdChainCurrent.<a class="code" href="classCHDChain.html#a4593a3c0b9eb1918f0c3820f1a54b5f4">GetSeedHash</a>())</div><div class="line"><a name="l00231"></a><span class="lineno"> 231</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(std::string(__func__) + <span class="stringliteral">&quot;: Wrong HD chain!&quot;</span>);</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span>&#160;</div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>&#160; <a class="code" href="structCExtKey.html">CExtKey</a> extkey;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>&#160; hdChainCurrent.<a class="code" href="classCHDChain.html#aef1b10fffd41285366d594ace3a97d69">DeriveChildExtKey</a>(hdPubKey.<a class="code" href="classCHDPubKey.html#a50ea1ddefc7c812f4224a28f8ae57617">nAccountIndex</a>, hdPubKey.<a class="code" href="classCHDPubKey.html#a9039ae18e4af321889cbb260e2605222">nChangeIndex</a> != 0, hdPubKey.<a class="code" href="classCHDPubKey.html#ac3ddb59612ca1bab618d7bb0b0c38ba9">extPubKey</a>.<a class="code" href="structCExtPubKey.html#af816bc2798e9d9aaa94f56af4775d9bf">nChild</a>, extkey);</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; keyOut = extkey.<a class="code" href="structCExtKey.html#a93cd93ef3311d9dbcf475282a5f80fb2">key</a>;</div><div class="line"><a name="l00236"></a><span class="lineno"> 236</span>&#160;</div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>&#160; }</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classCCryptoKeyStore.html#af46ec271fffb65a113702ba40a3738c8">CCryptoKeyStore::GetKey</a>(address, keyOut);</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>&#160; }</div><div class="line"><a name="l00242"></a><span class="lineno"> 242</span>&#160;}</div><div class="line"><a name="l00243"></a><span class="lineno"> 243</span>&#160;</div><div class="line"><a name="l00244"></a><span class="lineno"><a class="line" href="group__mapWallet.html#gae290e7a17f18e54ee3352430b745b474"> 244</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#gae290e7a17f18e54ee3352430b745b474">CWallet::HaveKey</a>(<span class="keyword">const</span> <a class="code" href="classCKeyID.html">CKeyID</a> &amp;address)<span class="keyword"> const</span></div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet);</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>&#160; <span class="keywordflow">if</span> (mapHdPubKeys.count(address) &gt; 0)</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classCCryptoKeyStore.html#a6c115cf1fc4129b43c8846b3d51d8ff5">CCryptoKeyStore::HaveKey</a>(address);</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>&#160;}</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>&#160;</div><div class="line"><a name="l00252"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga9772c25246d1058eccd2063bb40c44dc"> 252</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#ga9772c25246d1058eccd2063bb40c44dc">CWallet::LoadHDPubKey</a>(<span class="keyword">const</span> <a class="code" href="classCHDPubKey.html">CHDPubKey</a> &amp;hdPubKey)</div><div class="line"><a name="l00253"></a><span class="lineno"> 253</span>&#160;{</div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>&#160; <a class="code" href="sync_8h.html#acd61d0cb3b49f367728193720014aed0">AssertLockHeld</a>(cs_wallet);</div><div class="line"><a name="l00255"></a><span class="lineno"> 255</span>&#160;</div><div class="line"><a name="l00256"></a><span class="lineno"> 256</span>&#160; mapHdPubKeys[hdPubKey.<a class="code" href="classCHDPubKey.html#ac3ddb59612ca1bab618d7bb0b0c38ba9">extPubKey</a>.<a class="code" href="structCExtPubKey.html#ab18c8520919d20bbfd068565ae566ea8">pubkey</a>.<a class="code" href="classCPubKey.html#a2675f7e6f72eff68e7a5227289feb021">GetID</a>()] = hdPubKey;</div><div class="line"><a name="l00257"></a><span class="lineno"> 257</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span>&#160;}</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>&#160;</div><div class="line"><a name="l00260"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga263869feb1fedcaf74341eae533d1e24"> 260</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#ga263869feb1fedcaf74341eae533d1e24">CWallet::AddHDPubKey</a>(<span class="keyword">const</span> <a class="code" href="structCExtPubKey.html">CExtPubKey</a> &amp;extPubKey, <span class="keywordtype">bool</span> fInternal)</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>&#160;{</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>&#160; <a class="code" href="sync_8h.html#acd61d0cb3b49f367728193720014aed0">AssertLockHeld</a>(cs_wallet);</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span>&#160;</div><div class="line"><a name="l00264"></a><span class="lineno"> 264</span>&#160; <a class="code" href="classCHDChain.html">CHDChain</a> hdChainCurrent;</div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span>&#160; GetHDChain(hdChainCurrent);</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>&#160;</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span>&#160; <a class="code" href="classCHDPubKey.html">CHDPubKey</a> hdPubKey;</div><div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; hdPubKey.<a class="code" href="classCHDPubKey.html#ac3ddb59612ca1bab618d7bb0b0c38ba9">extPubKey</a> = extPubKey;</div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span>&#160; hdPubKey.<a class="code" href="classCHDPubKey.html#aac974fd41af0f5d2375ba4544d302a90">hdchainID</a> = hdChainCurrent.<a class="code" href="classCHDChain.html#a37c75884a3ef7c7ff435aae648c3c6de">GetID</a>();</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; hdPubKey.<a class="code" href="classCHDPubKey.html#a9039ae18e4af321889cbb260e2605222">nChangeIndex</a> = fInternal ? 1 : 0;</div><div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; mapHdPubKeys[extPubKey.<a class="code" href="structCExtPubKey.html#ab18c8520919d20bbfd068565ae566ea8">pubkey</a>.<a class="code" href="classCPubKey.html#a2675f7e6f72eff68e7a5227289feb021">GetID</a>()] = hdPubKey;</div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160;</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; <span class="comment">// check if we need to remove from watch-only</span></div><div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <a class="code" href="classCScript.html">CScript</a> script;</div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; script = <a class="code" href="standard_8cpp.html#ae40f28d3b46c21033f6ee1f1200d0321">GetScriptForDestination</a>(extPubKey.<a class="code" href="structCExtPubKey.html#ab18c8520919d20bbfd068565ae566ea8">pubkey</a>.<a class="code" href="classCPubKey.html#a2675f7e6f72eff68e7a5227289feb021">GetID</a>());</div><div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; <span class="keywordflow">if</span> (HaveWatchOnly(script))</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; RemoveWatchOnly(script);</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; script = <a class="code" href="standard_8cpp.html#aa376c6e2bc4848cfd4f777f8dd239469">GetScriptForRawPubKey</a>(extPubKey.<a class="code" href="structCExtPubKey.html#ab18c8520919d20bbfd068565ae566ea8">pubkey</a>);</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; <span class="keywordflow">if</span> (HaveWatchOnly(script))</div><div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; RemoveWatchOnly(script);</div><div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160;</div><div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; <span class="keywordflow">if</span> (!fFileBacked)</div><div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160;</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classCWalletDB.html">CWalletDB</a>(strWalletFile).<a class="code" href="classCWalletDB.html#a3daf44ceb0cf8ef74d4e60e1859d8f1d">WriteHDPubKey</a>(hdPubKey, mapKeyMetadata[extPubKey.<a class="code" href="structCExtPubKey.html#ab18c8520919d20bbfd068565ae566ea8">pubkey</a>.<a class="code" href="classCPubKey.html#a2675f7e6f72eff68e7a5227289feb021">GetID</a>()]);</div><div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160;}</div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160;</div><div class="line"><a name="l00288"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga3240da36cd717146296969227a3e0bd5"> 288</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#ga3240da36cd717146296969227a3e0bd5">CWallet::AddKeyPubKey</a>(<span class="keyword">const</span> <a class="code" href="classCKey.html">CKey</a>&amp; secret, <span class="keyword">const</span> <a class="code" href="classCPubKey.html">CPubKey</a> &amp;pubkey)</div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160;{</div><div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <a class="code" href="sync_8h.html#acd61d0cb3b49f367728193720014aed0">AssertLockHeld</a>(cs_wallet); <span class="comment">// mapKeyMetadata</span></div><div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classCCryptoKeyStore.html#a340109b8673267676a34664a76ed3274">CCryptoKeyStore::AddKeyPubKey</a>(secret, pubkey))</div><div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160;</div><div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; <span class="comment">// check if we need to remove from watch-only</span></div><div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <a class="code" href="classCScript.html">CScript</a> script;</div><div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; script = <a class="code" href="standard_8cpp.html#ae40f28d3b46c21033f6ee1f1200d0321">GetScriptForDestination</a>(pubkey.<a class="code" href="classCPubKey.html#a2675f7e6f72eff68e7a5227289feb021">GetID</a>());</div><div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; <span class="keywordflow">if</span> (HaveWatchOnly(script))</div><div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; RemoveWatchOnly(script);</div><div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; script = <a class="code" href="standard_8cpp.html#aa376c6e2bc4848cfd4f777f8dd239469">GetScriptForRawPubKey</a>(pubkey);</div><div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; <span class="keywordflow">if</span> (HaveWatchOnly(script))</div><div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; RemoveWatchOnly(script);</div><div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160;</div><div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; <span class="keywordflow">if</span> (!fFileBacked)</div><div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">if</span> (!IsCrypted()) {</div><div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classCWalletDB.html">CWalletDB</a>(strWalletFile).<a class="code" href="classCWalletDB.html#a7ebef5e0c7f604aa2159ba96d527e3a2">WriteKey</a>(pubkey,</div><div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; secret.<a class="code" href="classCKey.html#a91b6ecf71cc16e0b05ce79ec9276e729">GetPrivKey</a>(),</div><div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; mapKeyMetadata[pubkey.<a class="code" href="classCPubKey.html#a2675f7e6f72eff68e7a5227289feb021">GetID</a>()]);</div><div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; }</div><div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160;}</div><div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160;</div><div class="line"><a name="l00313"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga3e90096a903d49cd751f05fcdb7692ce"> 313</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#ga3e90096a903d49cd751f05fcdb7692ce">CWallet::AddCryptedKey</a>(<span class="keyword">const</span> <a class="code" href="classCPubKey.html">CPubKey</a> &amp;vchPubKey,</div><div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keyword">const</span> vector&lt;unsigned char&gt; &amp;vchCryptedSecret)</div><div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160;{</div><div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classCCryptoKeyStore.html#a9f4d2df95008205b2b9784c5f0e8e12b">CCryptoKeyStore::AddCryptedKey</a>(vchPubKey, vchCryptedSecret))</div><div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="keywordflow">if</span> (!fFileBacked)</div><div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; {</div><div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet);</div><div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; <span class="keywordflow">if</span> (pwalletdbEncryption)</div><div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; <span class="keywordflow">return</span> pwalletdbEncryption-&gt;WriteCryptedKey(vchPubKey,</div><div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; vchCryptedSecret,</div><div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; mapKeyMetadata[vchPubKey.<a class="code" href="classCPubKey.html#a2675f7e6f72eff68e7a5227289feb021">GetID</a>()]);</div><div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00327"></a><span class="lineno"> 327</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classCWalletDB.html">CWalletDB</a>(strWalletFile).<a class="code" href="classCWalletDB.html#a914fb53d1731daf9b486f164dd325210">WriteCryptedKey</a>(vchPubKey,</div><div class="line"><a name="l00328"></a><span class="lineno"> 328</span>&#160; vchCryptedSecret,</div><div class="line"><a name="l00329"></a><span class="lineno"> 329</span>&#160; mapKeyMetadata[vchPubKey.<a class="code" href="classCPubKey.html#a2675f7e6f72eff68e7a5227289feb021">GetID</a>()]);</div><div class="line"><a name="l00330"></a><span class="lineno"> 330</span>&#160; }</div><div class="line"><a name="l00331"></a><span class="lineno"> 331</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00332"></a><span class="lineno"> 332</span>&#160;}</div><div class="line"><a name="l00333"></a><span class="lineno"> 333</span>&#160;</div><div class="line"><a name="l00334"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga21e6580474514f838dfe1446890085a4"> 334</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#ga21e6580474514f838dfe1446890085a4">CWallet::LoadKeyMetadata</a>(<span class="keyword">const</span> <a class="code" href="classCPubKey.html">CPubKey</a> &amp;pubkey, <span class="keyword">const</span> <a class="code" href="classCKeyMetadata.html">CKeyMetadata</a> &amp;meta)</div><div class="line"><a name="l00335"></a><span class="lineno"> 335</span>&#160;{</div><div class="line"><a name="l00336"></a><span class="lineno"> 336</span>&#160; <a class="code" href="sync_8h.html#acd61d0cb3b49f367728193720014aed0">AssertLockHeld</a>(cs_wallet); <span class="comment">// mapKeyMetadata</span></div><div class="line"><a name="l00337"></a><span class="lineno"> 337</span>&#160; <span class="keywordflow">if</span> (meta.<a class="code" href="classCKeyMetadata.html#accfd31222aefcbdcba1fb0214e546e6d">nCreateTime</a> &amp;&amp; (!nTimeFirstKey || meta.<a class="code" href="classCKeyMetadata.html#accfd31222aefcbdcba1fb0214e546e6d">nCreateTime</a> &lt; nTimeFirstKey))</div><div class="line"><a name="l00338"></a><span class="lineno"> 338</span>&#160; nTimeFirstKey = meta.<a class="code" href="classCKeyMetadata.html#accfd31222aefcbdcba1fb0214e546e6d">nCreateTime</a>;</div><div class="line"><a name="l00339"></a><span class="lineno"> 339</span>&#160;</div><div class="line"><a name="l00340"></a><span class="lineno"> 340</span>&#160; mapKeyMetadata[pubkey.<a class="code" href="classCPubKey.html#a2675f7e6f72eff68e7a5227289feb021">GetID</a>()] = meta;</div><div class="line"><a name="l00341"></a><span class="lineno"> 341</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00342"></a><span class="lineno"> 342</span>&#160;}</div><div class="line"><a name="l00343"></a><span class="lineno"> 343</span>&#160;</div><div class="line"><a name="l00344"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga01fbd78238d4ef833d059f12a7e8ac9f"> 344</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#ga01fbd78238d4ef833d059f12a7e8ac9f">CWallet::LoadCryptedKey</a>(<span class="keyword">const</span> <a class="code" href="classCPubKey.html">CPubKey</a> &amp;vchPubKey, <span class="keyword">const</span> std::vector&lt;unsigned char&gt; &amp;vchCryptedSecret)</div><div class="line"><a name="l00345"></a><span class="lineno"> 345</span>&#160;{</div><div class="line"><a name="l00346"></a><span class="lineno"> 346</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classCCryptoKeyStore.html#a9f4d2df95008205b2b9784c5f0e8e12b">CCryptoKeyStore::AddCryptedKey</a>(vchPubKey, vchCryptedSecret);</div><div class="line"><a name="l00347"></a><span class="lineno"> 347</span>&#160;}</div><div class="line"><a name="l00348"></a><span class="lineno"> 348</span>&#160;</div><div class="line"><a name="l00349"></a><span class="lineno"><a class="line" href="group__mapWallet.html#gad7edacad1c926bc4b7fe0dc1be95ce31"> 349</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#gad7edacad1c926bc4b7fe0dc1be95ce31">CWallet::AddCScript</a>(<span class="keyword">const</span> <a class="code" href="classCScript.html">CScript</a>&amp; redeemScript)</div><div class="line"><a name="l00350"></a><span class="lineno"> 350</span>&#160;{</div><div class="line"><a name="l00351"></a><span class="lineno"> 351</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classCBasicKeyStore.html#a56249ce3540398999cd397eeb662e836">CCryptoKeyStore::AddCScript</a>(redeemScript))</div><div class="line"><a name="l00352"></a><span class="lineno"> 352</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00353"></a><span class="lineno"> 353</span>&#160; <span class="keywordflow">if</span> (!fFileBacked)</div><div class="line"><a name="l00354"></a><span class="lineno"> 354</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00355"></a><span class="lineno"> 355</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classCWalletDB.html">CWalletDB</a>(strWalletFile).<a class="code" href="classCWalletDB.html#a8c69e48e2305775898658e0a4f4616c9">WriteCScript</a>(<a class="code" href="hash_8h.html#a4490f70ddae16e9e48460a0416a48a6b">Hash160</a>(redeemScript), redeemScript);</div><div class="line"><a name="l00356"></a><span class="lineno"> 356</span>&#160;}</div><div class="line"><a name="l00357"></a><span class="lineno"> 357</span>&#160;</div><div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="group__mapWallet.html#gadbf0abef9da8102f000d4afd5cec5bbc"> 358</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#gadbf0abef9da8102f000d4afd5cec5bbc">CWallet::LoadCScript</a>(<span class="keyword">const</span> <a class="code" href="classCScript.html">CScript</a>&amp; redeemScript)</div><div class="line"><a name="l00359"></a><span class="lineno"> 359</span>&#160;{</div><div class="line"><a name="l00360"></a><span class="lineno"> 360</span>&#160; <span class="comment">/* A sanity check was added in pull #3843 to avoid adding redeemScripts</span></div><div class="line"><a name="l00361"></a><span class="lineno"> 361</span>&#160;<span class="comment"> * that never can be redeemed. However, old wallets may still contain</span></div><div class="line"><a name="l00362"></a><span class="lineno"> 362</span>&#160;<span class="comment"> * these. Do not add them to the wallet and warn. */</span></div><div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; <span class="keywordflow">if</span> (redeemScript.<a class="code" href="classprevector.html#a626f7d206dbc24e5610631809762758b">size</a>() &gt; <a class="code" href="script_8h.html#a4e2e7158597de76ecbb03d866ec4c693">MAX_SCRIPT_ELEMENT_SIZE</a>)</div><div class="line"><a name="l00364"></a><span class="lineno"> 364</span>&#160; {</div><div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; std::string strAddr = <a class="code" href="classCBitcoinAddress.html">CBitcoinAddress</a>(<a class="code" href="classCScriptID.html">CScriptID</a>(redeemScript)).<a class="code" href="classCBase58Data.html#a7dc91af403ca02694b3247b15604e220">ToString</a>();</div><div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;%s: Warning: This wallet contains a redeemScript of size %i which exceeds maximum size %i thus can never be redeemed. Do not use address %s.\n&quot;</span>,</div><div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; __func__, redeemScript.<a class="code" href="classprevector.html#a626f7d206dbc24e5610631809762758b">size</a>(), <a class="code" href="script_8h.html#a4e2e7158597de76ecbb03d866ec4c693">MAX_SCRIPT_ELEMENT_SIZE</a>, strAddr);</div><div class="line"><a name="l00368"></a><span class="lineno"> 368</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00369"></a><span class="lineno"> 369</span>&#160; }</div><div class="line"><a name="l00370"></a><span class="lineno"> 370</span>&#160;</div><div class="line"><a name="l00371"></a><span class="lineno"> 371</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classCBasicKeyStore.html#a56249ce3540398999cd397eeb662e836">CCryptoKeyStore::AddCScript</a>(redeemScript);</div><div class="line"><a name="l00372"></a><span class="lineno"> 372</span>&#160;}</div><div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160;</div><div class="line"><a name="l00374"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga022f12d5f56bbe831136388e2ac19969"> 374</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#ga022f12d5f56bbe831136388e2ac19969">CWallet::AddWatchOnly</a>(<span class="keyword">const</span> <a class="code" href="classCScript.html">CScript</a> &amp;dest)</div><div class="line"><a name="l00375"></a><span class="lineno"> 375</span>&#160;{</div><div class="line"><a name="l00376"></a><span class="lineno"> 376</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classCBasicKeyStore.html#a2417d0ae4e654c88cf47a1ba5f71b5a3">CCryptoKeyStore::AddWatchOnly</a>(dest))</div><div class="line"><a name="l00377"></a><span class="lineno"> 377</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00378"></a><span class="lineno"> 378</span>&#160; nTimeFirstKey = 1; <span class="comment">// No birthday information for watch-only keys.</span></div><div class="line"><a name="l00379"></a><span class="lineno"> 379</span>&#160; <a class="code" href="walletmodel_8cpp.html#a6c9555da4fe0c7643b7ea96f8bc2475b">NotifyWatchonlyChanged</a>(<span class="keyword">true</span>);</div><div class="line"><a name="l00380"></a><span class="lineno"> 380</span>&#160; <span class="keywordflow">if</span> (!fFileBacked)</div><div class="line"><a name="l00381"></a><span class="lineno"> 381</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00382"></a><span class="lineno"> 382</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classCWalletDB.html">CWalletDB</a>(strWalletFile).<a class="code" href="classCWalletDB.html#a05e5a277f66010d12071a5d72cb4dfb0">WriteWatchOnly</a>(dest);</div><div class="line"><a name="l00383"></a><span class="lineno"> 383</span>&#160;}</div><div class="line"><a name="l00384"></a><span class="lineno"> 384</span>&#160;</div><div class="line"><a name="l00385"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga5be12b9afcf63079b8c009038843b5a2"> 385</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#ga5be12b9afcf63079b8c009038843b5a2">CWallet::RemoveWatchOnly</a>(<span class="keyword">const</span> <a class="code" href="classCScript.html">CScript</a> &amp;dest)</div><div class="line"><a name="l00386"></a><span class="lineno"> 386</span>&#160;{</div><div class="line"><a name="l00387"></a><span class="lineno"> 387</span>&#160; <a class="code" href="sync_8h.html#acd61d0cb3b49f367728193720014aed0">AssertLockHeld</a>(cs_wallet);</div><div class="line"><a name="l00388"></a><span class="lineno"> 388</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classCBasicKeyStore.html#a20c0eccf943d6d16e24c6e2fb63fb527">CCryptoKeyStore::RemoveWatchOnly</a>(dest))</div><div class="line"><a name="l00389"></a><span class="lineno"> 389</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; <span class="keywordflow">if</span> (!HaveWatchOnly())</div><div class="line"><a name="l00391"></a><span class="lineno"> 391</span>&#160; <a class="code" href="walletmodel_8cpp.html#a6c9555da4fe0c7643b7ea96f8bc2475b">NotifyWatchonlyChanged</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l00392"></a><span class="lineno"> 392</span>&#160; <span class="keywordflow">if</span> (fFileBacked)</div><div class="line"><a name="l00393"></a><span class="lineno"> 393</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classCWalletDB.html">CWalletDB</a>(strWalletFile).EraseWatchOnly(dest))</div><div class="line"><a name="l00394"></a><span class="lineno"> 394</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00395"></a><span class="lineno"> 395</span>&#160;</div><div class="line"><a name="l00396"></a><span class="lineno"> 396</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00397"></a><span class="lineno"> 397</span>&#160;}</div><div class="line"><a name="l00398"></a><span class="lineno"> 398</span>&#160;</div><div class="line"><a name="l00399"></a><span class="lineno"><a class="line" href="group__mapWallet.html#gad6580f1844fc639389e1c6a1e2787ee6"> 399</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#gad6580f1844fc639389e1c6a1e2787ee6">CWallet::LoadWatchOnly</a>(<span class="keyword">const</span> <a class="code" href="classCScript.html">CScript</a> &amp;dest)</div><div class="line"><a name="l00400"></a><span class="lineno"> 400</span>&#160;{</div><div class="line"><a name="l00401"></a><span class="lineno"> 401</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classCBasicKeyStore.html#a2417d0ae4e654c88cf47a1ba5f71b5a3">CCryptoKeyStore::AddWatchOnly</a>(dest);</div><div class="line"><a name="l00402"></a><span class="lineno"> 402</span>&#160;}</div><div class="line"><a name="l00403"></a><span class="lineno"> 403</span>&#160;</div><div class="line"><a name="l00404"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga7d19286b74feeb6219af749a1fa5330b"> 404</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#ga7d19286b74feeb6219af749a1fa5330b">CWallet::Unlock</a>(<span class="keyword">const</span> <a class="code" href="secure_8h.html#a396ed773a5ac24aec28c8f7dc413c7ac">SecureString</a>&amp; strWalletPassphrase, <span class="keywordtype">bool</span> fForMixingOnly)</div><div class="line"><a name="l00405"></a><span class="lineno"> 405</span>&#160;{</div><div class="line"><a name="l00406"></a><span class="lineno"> 406</span>&#160; <a class="code" href="secure_8h.html#a396ed773a5ac24aec28c8f7dc413c7ac">SecureString</a> strWalletPassphraseFinal;</div><div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160;</div><div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160; <span class="keywordflow">if</span> (!IsLocked()) <span class="comment">// was already fully unlocked, not only for mixing</span></div><div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160;</div><div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160; <span class="comment">// Verify KeePassIntegration</span></div><div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; <span class="keywordflow">if</span> (strWalletPassphrase == <span class="stringliteral">&quot;keepass&quot;</span> &amp;&amp; <a class="code" href="util_8cpp.html#a64d956f1dda7f9a80ab5d594532b906d">GetBoolArg</a>(<span class="stringliteral">&quot;-keepass&quot;</span>, <span class="keyword">false</span>)) {</div><div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160; <span class="keywordflow">try</span> {</div><div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160; strWalletPassphraseFinal = <a class="code" href="keepass_8cpp.html#a33e391e23935d229d815a1523acc9454">keePassInt</a>.<a class="code" href="classCKeePassIntegrator.html#ae985d304459dde24548acaff08e75a42">retrievePassphrase</a>();</div><div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160; } <span class="keywordflow">catch</span> (std::exception&amp; e) {</div><div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;CWallet::Unlock could not retrieve passphrase from KeePass: Error: %s\n&quot;</span>, e.what());</div><div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160; }</div><div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160; strWalletPassphraseFinal = strWalletPassphrase;</div><div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; }</div><div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;</div><div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160; <a class="code" href="classCCrypter.html">CCrypter</a> crypter;</div><div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160; <a class="code" href="keystore_8h.html#a64709c9a3acc8f5694515789a183ad7b">CKeyingMaterial</a> vMasterKey;</div><div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160;</div><div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160; {</div><div class="line"><a name="l00427"></a><span class="lineno"> 427</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet);</div><div class="line"><a name="l00428"></a><span class="lineno"> 428</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> MasterKeyMap::value_type&amp; pMasterKey, mapMasterKeys)</div><div class="line"><a name="l00429"></a><span class="lineno"> 429</span>&#160; {</div><div class="line"><a name="l00430"></a><span class="lineno"> 430</span>&#160; <span class="keywordflow">if</span> (!crypter.<a class="code" href="classCCrypter.html#a5368279e4a1549d3c1d15d8aa2179708">SetKeyFromPassphrase</a>(strWalletPassphraseFinal, pMasterKey.second.vchSalt, pMasterKey.second.nDeriveIterations, pMasterKey.second.nDerivationMethod))</div><div class="line"><a name="l00431"></a><span class="lineno"> 431</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00432"></a><span class="lineno"> 432</span>&#160; <span class="keywordflow">if</span> (!crypter.<a class="code" href="classCCrypter.html#a4dbabed4975d4435d22c76deac43df7f">Decrypt</a>(pMasterKey.second.vchCryptedKey, vMasterKey))</div><div class="line"><a name="l00433"></a><span class="lineno"> 433</span>&#160; <span class="keywordflow">continue</span>; <span class="comment">// try another master key</span></div><div class="line"><a name="l00434"></a><span class="lineno"> 434</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classCCryptoKeyStore.html#a0717bc91b52f267df77e61870211ca62">CCryptoKeyStore::Unlock</a>(vMasterKey, fForMixingOnly)) {</div><div class="line"><a name="l00435"></a><span class="lineno"> 435</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="util_8cpp.html#a5e34214b56ce780359081f030cd9dcba">nWalletBackups</a> == -2) {</div><div class="line"><a name="l00436"></a><span class="lineno"> 436</span>&#160; TopUpKeyPool();</div><div class="line"><a name="l00437"></a><span class="lineno"> 437</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;Keypool replenished, re-initializing automatic backups.\n&quot;</span>);</div><div class="line"><a name="l00438"></a><span class="lineno"> 438</span>&#160; <a class="code" href="util_8cpp.html#a5e34214b56ce780359081f030cd9dcba">nWalletBackups</a> = <a class="code" href="util_8cpp.html#a24f685720bf40370e5bd2a192ad50cd8">GetArg</a>(<span class="stringliteral">&quot;-createwalletbackups&quot;</span>, 10);</div><div class="line"><a name="l00439"></a><span class="lineno"> 439</span>&#160; }</div><div class="line"><a name="l00440"></a><span class="lineno"> 440</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00441"></a><span class="lineno"> 441</span>&#160; }</div><div class="line"><a name="l00442"></a><span class="lineno"> 442</span>&#160; }</div><div class="line"><a name="l00443"></a><span class="lineno"> 443</span>&#160; }</div><div class="line"><a name="l00444"></a><span class="lineno"> 444</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00445"></a><span class="lineno"> 445</span>&#160;}</div><div class="line"><a name="l00446"></a><span class="lineno"> 446</span>&#160;</div><div class="line"><a name="l00447"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga4abcec3066e7c462f4564c159fc15031"> 447</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#ga4abcec3066e7c462f4564c159fc15031">CWallet::ChangeWalletPassphrase</a>(<span class="keyword">const</span> <a class="code" href="secure_8h.html#a396ed773a5ac24aec28c8f7dc413c7ac">SecureString</a>&amp; strOldWalletPassphrase, <span class="keyword">const</span> <a class="code" href="secure_8h.html#a396ed773a5ac24aec28c8f7dc413c7ac">SecureString</a>&amp; strNewWalletPassphrase)</div><div class="line"><a name="l00448"></a><span class="lineno"> 448</span>&#160;{</div><div class="line"><a name="l00449"></a><span class="lineno"> 449</span>&#160; <span class="keywordtype">bool</span> fWasLocked = IsLocked(<span class="keyword">true</span>);</div><div class="line"><a name="l00450"></a><span class="lineno"> 450</span>&#160; <span class="keywordtype">bool</span> bUseKeePass = <span class="keyword">false</span>;</div><div class="line"><a name="l00451"></a><span class="lineno"> 451</span>&#160;</div><div class="line"><a name="l00452"></a><span class="lineno"> 452</span>&#160; <a class="code" href="secure_8h.html#a396ed773a5ac24aec28c8f7dc413c7ac">SecureString</a> strOldWalletPassphraseFinal;</div><div class="line"><a name="l00453"></a><span class="lineno"> 453</span>&#160;</div><div class="line"><a name="l00454"></a><span class="lineno"> 454</span>&#160; <span class="comment">// Verify KeePassIntegration</span></div><div class="line"><a name="l00455"></a><span class="lineno"> 455</span>&#160; <span class="keywordflow">if</span>(strOldWalletPassphrase == <span class="stringliteral">&quot;keepass&quot;</span> &amp;&amp; <a class="code" href="util_8cpp.html#a64d956f1dda7f9a80ab5d594532b906d">GetBoolArg</a>(<span class="stringliteral">&quot;-keepass&quot;</span>, <span class="keyword">false</span>)) {</div><div class="line"><a name="l00456"></a><span class="lineno"> 456</span>&#160; bUseKeePass = <span class="keyword">true</span>;</div><div class="line"><a name="l00457"></a><span class="lineno"> 457</span>&#160; <span class="keywordflow">try</span> {</div><div class="line"><a name="l00458"></a><span class="lineno"> 458</span>&#160; strOldWalletPassphraseFinal = <a class="code" href="keepass_8cpp.html#a33e391e23935d229d815a1523acc9454">keePassInt</a>.<a class="code" href="classCKeePassIntegrator.html#ae985d304459dde24548acaff08e75a42">retrievePassphrase</a>();</div><div class="line"><a name="l00459"></a><span class="lineno"> 459</span>&#160; } <span class="keywordflow">catch</span> (std::exception&amp; e) {</div><div class="line"><a name="l00460"></a><span class="lineno"> 460</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;CWallet::ChangeWalletPassphrase -- could not retrieve passphrase from KeePass: Error: %s\n&quot;</span>, e.what());</div><div class="line"><a name="l00461"></a><span class="lineno"> 461</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00462"></a><span class="lineno"> 462</span>&#160; }</div><div class="line"><a name="l00463"></a><span class="lineno"> 463</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00464"></a><span class="lineno"> 464</span>&#160; strOldWalletPassphraseFinal = strOldWalletPassphrase;</div><div class="line"><a name="l00465"></a><span class="lineno"> 465</span>&#160; }</div><div class="line"><a name="l00466"></a><span class="lineno"> 466</span>&#160;</div><div class="line"><a name="l00467"></a><span class="lineno"> 467</span>&#160; {</div><div class="line"><a name="l00468"></a><span class="lineno"> 468</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet);</div><div class="line"><a name="l00469"></a><span class="lineno"> 469</span>&#160; Lock();</div><div class="line"><a name="l00470"></a><span class="lineno"> 470</span>&#160;</div><div class="line"><a name="l00471"></a><span class="lineno"> 471</span>&#160; <a class="code" href="classCCrypter.html">CCrypter</a> crypter;</div><div class="line"><a name="l00472"></a><span class="lineno"> 472</span>&#160; <a class="code" href="keystore_8h.html#a64709c9a3acc8f5694515789a183ad7b">CKeyingMaterial</a> vMasterKey;</div><div class="line"><a name="l00473"></a><span class="lineno"> 473</span>&#160; BOOST_FOREACH(MasterKeyMap::value_type&amp; pMasterKey, mapMasterKeys)</div><div class="line"><a name="l00474"></a><span class="lineno"> 474</span>&#160; {</div><div class="line"><a name="l00475"></a><span class="lineno"> 475</span>&#160; <span class="keywordflow">if</span>(!crypter.<a class="code" href="classCCrypter.html#a5368279e4a1549d3c1d15d8aa2179708">SetKeyFromPassphrase</a>(strOldWalletPassphraseFinal, pMasterKey.second.vchSalt, pMasterKey.second.nDeriveIterations, pMasterKey.second.nDerivationMethod))</div><div class="line"><a name="l00476"></a><span class="lineno"> 476</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00477"></a><span class="lineno"> 477</span>&#160; <span class="keywordflow">if</span> (!crypter.<a class="code" href="classCCrypter.html#a4dbabed4975d4435d22c76deac43df7f">Decrypt</a>(pMasterKey.second.vchCryptedKey, vMasterKey))</div><div class="line"><a name="l00478"></a><span class="lineno"> 478</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00479"></a><span class="lineno"> 479</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classCCryptoKeyStore.html#a0717bc91b52f267df77e61870211ca62">CCryptoKeyStore::Unlock</a>(vMasterKey))</div><div class="line"><a name="l00480"></a><span class="lineno"> 480</span>&#160; {</div><div class="line"><a name="l00481"></a><span class="lineno"> 481</span>&#160; int64_t nStartTime = <a class="code" href="utiltime_8cpp.html#a139d0fe6387b9e230a9b8bb12d9b43b9">GetTimeMillis</a>();</div><div class="line"><a name="l00482"></a><span class="lineno"> 482</span>&#160; crypter.<a class="code" href="classCCrypter.html#a5368279e4a1549d3c1d15d8aa2179708">SetKeyFromPassphrase</a>(strNewWalletPassphrase, pMasterKey.second.vchSalt, pMasterKey.second.nDeriveIterations, pMasterKey.second.nDerivationMethod);</div><div class="line"><a name="l00483"></a><span class="lineno"> 483</span>&#160; pMasterKey.second.nDeriveIterations = pMasterKey.second.nDeriveIterations * (100 / ((double)(<a class="code" href="utiltime_8cpp.html#a139d0fe6387b9e230a9b8bb12d9b43b9">GetTimeMillis</a>() - nStartTime)));</div><div class="line"><a name="l00484"></a><span class="lineno"> 484</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno"> 485</span>&#160; nStartTime = <a class="code" href="utiltime_8cpp.html#a139d0fe6387b9e230a9b8bb12d9b43b9">GetTimeMillis</a>();</div><div class="line"><a name="l00486"></a><span class="lineno"> 486</span>&#160; crypter.<a class="code" href="classCCrypter.html#a5368279e4a1549d3c1d15d8aa2179708">SetKeyFromPassphrase</a>(strNewWalletPassphrase, pMasterKey.second.vchSalt, pMasterKey.second.nDeriveIterations, pMasterKey.second.nDerivationMethod);</div><div class="line"><a name="l00487"></a><span class="lineno"> 487</span>&#160; pMasterKey.second.nDeriveIterations = (pMasterKey.second.nDeriveIterations + pMasterKey.second.nDeriveIterations * 100 / ((double)(<a class="code" href="utiltime_8cpp.html#a139d0fe6387b9e230a9b8bb12d9b43b9">GetTimeMillis</a>() - nStartTime))) / 2;</div><div class="line"><a name="l00488"></a><span class="lineno"> 488</span>&#160;</div><div class="line"><a name="l00489"></a><span class="lineno"> 489</span>&#160; <span class="keywordflow">if</span> (pMasterKey.second.nDeriveIterations &lt; 25000)</div><div class="line"><a name="l00490"></a><span class="lineno"> 490</span>&#160; pMasterKey.second.nDeriveIterations = 25000;</div><div class="line"><a name="l00491"></a><span class="lineno"> 491</span>&#160;</div><div class="line"><a name="l00492"></a><span class="lineno"> 492</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;Wallet passphrase changed to an nDeriveIterations of %i\n&quot;</span>, pMasterKey.second.nDeriveIterations);</div><div class="line"><a name="l00493"></a><span class="lineno"> 493</span>&#160;</div><div class="line"><a name="l00494"></a><span class="lineno"> 494</span>&#160; <span class="keywordflow">if</span> (!crypter.<a class="code" href="classCCrypter.html#a5368279e4a1549d3c1d15d8aa2179708">SetKeyFromPassphrase</a>(strNewWalletPassphrase, pMasterKey.second.vchSalt, pMasterKey.second.nDeriveIterations, pMasterKey.second.nDerivationMethod))</div><div class="line"><a name="l00495"></a><span class="lineno"> 495</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00496"></a><span class="lineno"> 496</span>&#160; <span class="keywordflow">if</span> (!crypter.<a class="code" href="classCCrypter.html#a124fcd3021569a660ce2daa3391c8ea4">Encrypt</a>(vMasterKey, pMasterKey.second.vchCryptedKey))</div><div class="line"><a name="l00497"></a><span class="lineno"> 497</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00498"></a><span class="lineno"> 498</span>&#160; <a class="code" href="classCWalletDB.html">CWalletDB</a>(strWalletFile).<a class="code" href="classCWalletDB.html#a507690da431ef61244941ad39c308aeb">WriteMasterKey</a>(pMasterKey.first, pMasterKey.second);</div><div class="line"><a name="l00499"></a><span class="lineno"> 499</span>&#160; <span class="keywordflow">if</span> (fWasLocked)</div><div class="line"><a name="l00500"></a><span class="lineno"> 500</span>&#160; Lock();</div><div class="line"><a name="l00501"></a><span class="lineno"> 501</span>&#160;</div><div class="line"><a name="l00502"></a><span class="lineno"> 502</span>&#160; <span class="comment">// Update KeePass if necessary</span></div><div class="line"><a name="l00503"></a><span class="lineno"> 503</span>&#160; <span class="keywordflow">if</span>(bUseKeePass) {</div><div class="line"><a name="l00504"></a><span class="lineno"> 504</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;CWallet::ChangeWalletPassphrase -- Updating KeePass with new passphrase&quot;</span>);</div><div class="line"><a name="l00505"></a><span class="lineno"> 505</span>&#160; <span class="keywordflow">try</span> {</div><div class="line"><a name="l00506"></a><span class="lineno"> 506</span>&#160; <a class="code" href="keepass_8cpp.html#a33e391e23935d229d815a1523acc9454">keePassInt</a>.<a class="code" href="classCKeePassIntegrator.html#a8f0f9765dfaaf14fc9b2b780b5332c24">updatePassphrase</a>(strNewWalletPassphrase);</div><div class="line"><a name="l00507"></a><span class="lineno"> 507</span>&#160; } <span class="keywordflow">catch</span> (std::exception&amp; e) {</div><div class="line"><a name="l00508"></a><span class="lineno"> 508</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;CWallet::ChangeWalletPassphrase -- could not update passphrase in KeePass: Error: %s\n&quot;</span>, e.what());</div><div class="line"><a name="l00509"></a><span class="lineno"> 509</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00510"></a><span class="lineno"> 510</span>&#160; }</div><div class="line"><a name="l00511"></a><span class="lineno"> 511</span>&#160; }</div><div class="line"><a name="l00512"></a><span class="lineno"> 512</span>&#160;</div><div class="line"><a name="l00513"></a><span class="lineno"> 513</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00514"></a><span class="lineno"> 514</span>&#160; }</div><div class="line"><a name="l00515"></a><span class="lineno"> 515</span>&#160; }</div><div class="line"><a name="l00516"></a><span class="lineno"> 516</span>&#160; }</div><div class="line"><a name="l00517"></a><span class="lineno"> 517</span>&#160;</div><div class="line"><a name="l00518"></a><span class="lineno"> 518</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00519"></a><span class="lineno"> 519</span>&#160;}</div><div class="line"><a name="l00520"></a><span class="lineno"> 520</span>&#160;</div><div class="line"><a name="l00521"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga1697a92171b4359f49b38aed643cf92b"> 521</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__mapWallet.html#ga1697a92171b4359f49b38aed643cf92b">CWallet::SetBestChain</a>(<span class="keyword">const</span> <a class="code" href="structCBlockLocator.html">CBlockLocator</a>&amp; loc)</div><div class="line"><a name="l00522"></a><span class="lineno"> 522</span>&#160;{</div><div class="line"><a name="l00523"></a><span class="lineno"> 523</span>&#160; <a class="code" href="classCWalletDB.html">CWalletDB</a> walletdb(strWalletFile);</div><div class="line"><a name="l00524"></a><span class="lineno"> 524</span>&#160; walletdb.<a class="code" href="classCWalletDB.html#a5660d366fee16ab81f3e7d3a97892486">WriteBestBlock</a>(loc);</div><div class="line"><a name="l00525"></a><span class="lineno"> 525</span>&#160;}</div><div class="line"><a name="l00526"></a><span class="lineno"> 526</span>&#160;</div><div class="line"><a name="l00527"></a><span class="lineno"><a class="line" href="group__mapWallet.html#gafa48a3ee3096681650c8b9589579e9cb"> 527</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#gafa48a3ee3096681650c8b9589579e9cb">CWallet::SetMinVersion</a>(<span class="keyword">enum</span> <a class="code" href="wallet_8h.html#a39a6b71da3eb95cddc0836d3b27ac7c9">WalletFeature</a> nVersion, <a class="code" href="classCWalletDB.html">CWalletDB</a>* pwalletdbIn, <span class="keywordtype">bool</span> fExplicit)</div><div class="line"><a name="l00528"></a><span class="lineno"> 528</span>&#160;{</div><div class="line"><a name="l00529"></a><span class="lineno"> 529</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet); <span class="comment">// nWalletVersion</span></div><div class="line"><a name="l00530"></a><span class="lineno"> 530</span>&#160; <span class="keywordflow">if</span> (nWalletVersion &gt;= nVersion)</div><div class="line"><a name="l00531"></a><span class="lineno"> 531</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00532"></a><span class="lineno"> 532</span>&#160;</div><div class="line"><a name="l00533"></a><span class="lineno"> 533</span>&#160; <span class="comment">// when doing an explicit upgrade, if we pass the max version permitted, upgrade all the way</span></div><div class="line"><a name="l00534"></a><span class="lineno"> 534</span>&#160; <span class="keywordflow">if</span> (fExplicit &amp;&amp; nVersion &gt; nWalletMaxVersion)</div><div class="line"><a name="l00535"></a><span class="lineno"> 535</span>&#160; nVersion = <a class="code" href="wallet_8h.html#a39a6b71da3eb95cddc0836d3b27ac7c9a867e17547f858859f558244dc96ac2f3">FEATURE_LATEST</a>;</div><div class="line"><a name="l00536"></a><span class="lineno"> 536</span>&#160;</div><div class="line"><a name="l00537"></a><span class="lineno"> 537</span>&#160; nWalletVersion = nVersion;</div><div class="line"><a name="l00538"></a><span class="lineno"> 538</span>&#160;</div><div class="line"><a name="l00539"></a><span class="lineno"> 539</span>&#160; <span class="keywordflow">if</span> (nVersion &gt; nWalletMaxVersion)</div><div class="line"><a name="l00540"></a><span class="lineno"> 540</span>&#160; nWalletMaxVersion = nVersion;</div><div class="line"><a name="l00541"></a><span class="lineno"> 541</span>&#160;</div><div class="line"><a name="l00542"></a><span class="lineno"> 542</span>&#160; <span class="keywordflow">if</span> (fFileBacked)</div><div class="line"><a name="l00543"></a><span class="lineno"> 543</span>&#160; {</div><div class="line"><a name="l00544"></a><span class="lineno"> 544</span>&#160; <a class="code" href="classCWalletDB.html">CWalletDB</a>* pwalletdb = pwalletdbIn ? pwalletdbIn : <span class="keyword">new</span> <a class="code" href="classCWalletDB.html">CWalletDB</a>(strWalletFile);</div><div class="line"><a name="l00545"></a><span class="lineno"> 545</span>&#160; <span class="keywordflow">if</span> (nWalletVersion &gt; 40000)</div><div class="line"><a name="l00546"></a><span class="lineno"> 546</span>&#160; pwalletdb-&gt;<a class="code" href="classCWalletDB.html#ab008b6c6e09a60a988cac6e1a9e11886">WriteMinVersion</a>(nWalletVersion);</div><div class="line"><a name="l00547"></a><span class="lineno"> 547</span>&#160; <span class="keywordflow">if</span> (!pwalletdbIn)</div><div class="line"><a name="l00548"></a><span class="lineno"> 548</span>&#160; <span class="keyword">delete</span> pwalletdb;</div><div class="line"><a name="l00549"></a><span class="lineno"> 549</span>&#160; }</div><div class="line"><a name="l00550"></a><span class="lineno"> 550</span>&#160;</div><div class="line"><a name="l00551"></a><span class="lineno"> 551</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00552"></a><span class="lineno"> 552</span>&#160;}</div><div class="line"><a name="l00553"></a><span class="lineno"> 553</span>&#160;</div><div class="line"><a name="l00554"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga1bb7c19e7dd483f231f8077fb7fb942b"> 554</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#ga1bb7c19e7dd483f231f8077fb7fb942b">CWallet::SetMaxVersion</a>(<span class="keywordtype">int</span> nVersion)</div><div class="line"><a name="l00555"></a><span class="lineno"> 555</span>&#160;{</div><div class="line"><a name="l00556"></a><span class="lineno"> 556</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet); <span class="comment">// nWalletVersion, nWalletMaxVersion</span></div><div class="line"><a name="l00557"></a><span class="lineno"> 557</span>&#160; <span class="comment">// cannot downgrade below current version</span></div><div class="line"><a name="l00558"></a><span class="lineno"> 558</span>&#160; <span class="keywordflow">if</span> (nWalletVersion &gt; nVersion)</div><div class="line"><a name="l00559"></a><span class="lineno"> 559</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00560"></a><span class="lineno"> 560</span>&#160;</div><div class="line"><a name="l00561"></a><span class="lineno"> 561</span>&#160; nWalletMaxVersion = nVersion;</div><div class="line"><a name="l00562"></a><span class="lineno"> 562</span>&#160;</div><div class="line"><a name="l00563"></a><span class="lineno"> 563</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00564"></a><span class="lineno"> 564</span>&#160;}</div><div class="line"><a name="l00565"></a><span class="lineno"> 565</span>&#160;</div><div class="line"><a name="l00566"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga63ace949094f4f52d7ef1f9f321a24e7"> 566</a></span>&#160;set&lt;uint256&gt; <a class="code" href="group__mapWallet.html#ga63ace949094f4f52d7ef1f9f321a24e7">CWallet::GetConflicts</a>(<span class="keyword">const</span> <a class="code" href="classuint256.html">uint256</a>&amp; txid)<span class="keyword"> const</span></div><div class="line"><a name="l00567"></a><span class="lineno"> 567</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00568"></a><span class="lineno"> 568</span>&#160; set&lt;uint256&gt; <a class="code" href="namespacerpcuser.html#a637791b4450c02d511291cd297ce12df">result</a>;</div><div class="line"><a name="l00569"></a><span class="lineno"> 569</span>&#160; <a class="code" href="sync_8h.html#acd61d0cb3b49f367728193720014aed0">AssertLockHeld</a>(cs_wallet);</div><div class="line"><a name="l00570"></a><span class="lineno"> 570</span>&#160;</div><div class="line"><a name="l00571"></a><span class="lineno"> 571</span>&#160; std::map&lt;uint256, CWalletTx&gt;::const_iterator it = mapWallet.find(txid);</div><div class="line"><a name="l00572"></a><span class="lineno"> 572</span>&#160; <span class="keywordflow">if</span> (it == mapWallet.end())</div><div class="line"><a name="l00573"></a><span class="lineno"> 573</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacerpcuser.html#a637791b4450c02d511291cd297ce12df">result</a>;</div><div class="line"><a name="l00574"></a><span class="lineno"> 574</span>&#160; <span class="keyword">const</span> <a class="code" href="classCWalletTx.html">CWalletTx</a>&amp; wtx = it-&gt;second;</div><div class="line"><a name="l00575"></a><span class="lineno"> 575</span>&#160;</div><div class="line"><a name="l00576"></a><span class="lineno"> 576</span>&#160; std::pair&lt;TxSpends::const_iterator, TxSpends::const_iterator&gt; range;</div><div class="line"><a name="l00577"></a><span class="lineno"> 577</span>&#160;</div><div class="line"><a name="l00578"></a><span class="lineno"> 578</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="classCTxIn.html">CTxIn</a>&amp; txin, wtx.<a class="code" href="classCTransaction.html#ad64447ea044ec850313696fc99412d95">vin</a>)</div><div class="line"><a name="l00579"></a><span class="lineno"> 579</span>&#160; {</div><div class="line"><a name="l00580"></a><span class="lineno"> 580</span>&#160; <span class="keywordflow">if</span> (mapTxSpends.count(txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>) &lt;= 1)</div><div class="line"><a name="l00581"></a><span class="lineno"> 581</span>&#160; <span class="keywordflow">continue</span>; <span class="comment">// No conflict if zero or one spends</span></div><div class="line"><a name="l00582"></a><span class="lineno"> 582</span>&#160; range = mapTxSpends.equal_range(txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>);</div><div class="line"><a name="l00583"></a><span class="lineno"> 583</span>&#160; <span class="keywordflow">for</span> (TxSpends::const_iterator it = range.first; it != range.second; ++it)</div><div class="line"><a name="l00584"></a><span class="lineno"> 584</span>&#160; <a class="code" href="namespacerpcuser.html#a637791b4450c02d511291cd297ce12df">result</a>.insert(it-&gt;second);</div><div class="line"><a name="l00585"></a><span class="lineno"> 585</span>&#160; }</div><div class="line"><a name="l00586"></a><span class="lineno"> 586</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacerpcuser.html#a637791b4450c02d511291cd297ce12df">result</a>;</div><div class="line"><a name="l00587"></a><span class="lineno"> 587</span>&#160;}</div><div class="line"><a name="l00588"></a><span class="lineno"> 588</span>&#160;</div><div class="line"><a name="l00589"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga1933d34612a6a438d6c45bad608ce87c"> 589</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__mapWallet.html#ga1933d34612a6a438d6c45bad608ce87c">CWallet::Flush</a>(<span class="keywordtype">bool</span> shutdown)</div><div class="line"><a name="l00590"></a><span class="lineno"> 590</span>&#160;{</div><div class="line"><a name="l00591"></a><span class="lineno"> 591</span>&#160; <a class="code" href="db_8cpp.html#a0e3d95be19da4a302447fa44703b1979">bitdb</a>.<a class="code" href="classCDBEnv.html#a09c5850b88919553a8db416ce288ff1a">Flush</a>(shutdown);</div><div class="line"><a name="l00592"></a><span class="lineno"> 592</span>&#160;}</div><div class="line"><a name="l00593"></a><span class="lineno"> 593</span>&#160;</div><div class="line"><a name="l00594"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga2ed6fec1e8e0076d380351d5a469e4c8"> 594</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#ga2ed6fec1e8e0076d380351d5a469e4c8">CWallet::Verify</a>(<span class="keyword">const</span> <span class="keywordtype">string</span>&amp; walletFile, <span class="keywordtype">string</span>&amp; warningString, <span class="keywordtype">string</span>&amp; errorString)</div><div class="line"><a name="l00595"></a><span class="lineno"> 595</span>&#160;{</div><div class="line"><a name="l00596"></a><span class="lineno"> 596</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="db_8cpp.html#a0e3d95be19da4a302447fa44703b1979">bitdb</a>.<a class="code" href="classCDBEnv.html#aaaef61cd032e25144c06e405fb7f93cf">Open</a>(<a class="code" href="util_8cpp.html#ab83866a054745d4b30a3948a1b44beba">GetDataDir</a>()))</div><div class="line"><a name="l00597"></a><span class="lineno"> 597</span>&#160; {</div><div class="line"><a name="l00598"></a><span class="lineno"> 598</span>&#160; <span class="comment">// try moving the database env out of the way</span></div><div class="line"><a name="l00599"></a><span class="lineno"> 599</span>&#160; boost::filesystem::path pathDatabase = <a class="code" href="util_8cpp.html#ab83866a054745d4b30a3948a1b44beba">GetDataDir</a>() / <span class="stringliteral">&quot;database&quot;</span>;</div><div class="line"><a name="l00600"></a><span class="lineno"> 600</span>&#160; boost::filesystem::path pathDatabaseBak = <a class="code" href="util_8cpp.html#ab83866a054745d4b30a3948a1b44beba">GetDataDir</a>() / <a class="code" href="tinyformat_8h.html#a56c674871a61baaad36ad52238c08857">strprintf</a>(<span class="stringliteral">&quot;database.%d.bak&quot;</span>, <a class="code" href="utiltime_8cpp.html#a46fac5fba8ba905b5f9acb364f5d8c6f">GetTime</a>());</div><div class="line"><a name="l00601"></a><span class="lineno"> 601</span>&#160; <span class="keywordflow">try</span> {</div><div class="line"><a name="l00602"></a><span class="lineno"> 602</span>&#160; boost::filesystem::rename(pathDatabase, pathDatabaseBak);</div><div class="line"><a name="l00603"></a><span class="lineno"> 603</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;Moved old %s to %s. Retrying.\n&quot;</span>, pathDatabase.string(), pathDatabaseBak.string());</div><div class="line"><a name="l00604"></a><span class="lineno"> 604</span>&#160; } <span class="keywordflow">catch</span> (<span class="keyword">const</span> boost::filesystem::filesystem_error&amp;) {</div><div class="line"><a name="l00605"></a><span class="lineno"> 605</span>&#160; <span class="comment">// failure is ok (well, not really, but it&#39;s not worse than what we started with)</span></div><div class="line"><a name="l00606"></a><span class="lineno"> 606</span>&#160; }</div><div class="line"><a name="l00607"></a><span class="lineno"> 607</span>&#160; </div><div class="line"><a name="l00608"></a><span class="lineno"> 608</span>&#160; <span class="comment">// try again</span></div><div class="line"><a name="l00609"></a><span class="lineno"> 609</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="db_8cpp.html#a0e3d95be19da4a302447fa44703b1979">bitdb</a>.<a class="code" href="classCDBEnv.html#aaaef61cd032e25144c06e405fb7f93cf">Open</a>(<a class="code" href="util_8cpp.html#ab83866a054745d4b30a3948a1b44beba">GetDataDir</a>())) {</div><div class="line"><a name="l00610"></a><span class="lineno"> 610</span>&#160; <span class="comment">// if it still fails, it probably means we can&#39;t even create the database env</span></div><div class="line"><a name="l00611"></a><span class="lineno"> 611</span>&#160; <span class="keywordtype">string</span> <a class="code" href="namespacezmq__sub.html#ab82b53c595929ff5ab2d30ec91fd539a">msg</a> = <a class="code" href="tinyformat_8h.html#a56c674871a61baaad36ad52238c08857">strprintf</a>(<a class="code" href="util_8h.html#aad133bb6103b53cebf03fd01e2f11ba1">_</a>(<span class="stringliteral">&quot;Error initializing wallet database environment %s!&quot;</span>), <a class="code" href="util_8cpp.html#ab83866a054745d4b30a3948a1b44beba">GetDataDir</a>());</div><div class="line"><a name="l00612"></a><span class="lineno"> 612</span>&#160; errorString += <a class="code" href="namespacezmq__sub.html#ab82b53c595929ff5ab2d30ec91fd539a">msg</a>;</div><div class="line"><a name="l00613"></a><span class="lineno"> 613</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00614"></a><span class="lineno"> 614</span>&#160; }</div><div class="line"><a name="l00615"></a><span class="lineno"> 615</span>&#160; }</div><div class="line"><a name="l00616"></a><span class="lineno"> 616</span>&#160; </div><div class="line"><a name="l00617"></a><span class="lineno"> 617</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="util_8cpp.html#a64d956f1dda7f9a80ab5d594532b906d">GetBoolArg</a>(<span class="stringliteral">&quot;-salvagewallet&quot;</span>, <span class="keyword">false</span>))</div><div class="line"><a name="l00618"></a><span class="lineno"> 618</span>&#160; {</div><div class="line"><a name="l00619"></a><span class="lineno"> 619</span>&#160; <span class="comment">// Recover readable keypairs:</span></div><div class="line"><a name="l00620"></a><span class="lineno"> 620</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classCWalletDB.html#af9fa539659473e1484dc280ec01c0b70">CWalletDB::Recover</a>(<a class="code" href="db_8cpp.html#a0e3d95be19da4a302447fa44703b1979">bitdb</a>, walletFile, <span class="keyword">true</span>))</div><div class="line"><a name="l00621"></a><span class="lineno"> 621</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00622"></a><span class="lineno"> 622</span>&#160; }</div><div class="line"><a name="l00623"></a><span class="lineno"> 623</span>&#160; </div><div class="line"><a name="l00624"></a><span class="lineno"> 624</span>&#160; <span class="keywordflow">if</span> (boost::filesystem::exists(<a class="code" href="util_8cpp.html#ab83866a054745d4b30a3948a1b44beba">GetDataDir</a>() / walletFile))</div><div class="line"><a name="l00625"></a><span class="lineno"> 625</span>&#160; {</div><div class="line"><a name="l00626"></a><span class="lineno"> 626</span>&#160; <a class="code" href="classCDBEnv.html#a6fbf26da5d7f8f64a77a3ba15e4df244">CDBEnv::VerifyResult</a> r = <a class="code" href="db_8cpp.html#a0e3d95be19da4a302447fa44703b1979">bitdb</a>.<a class="code" href="classCDBEnv.html#a3b051e81f5cb7d5ba71e2742bb6e47fa">Verify</a>(walletFile, <a class="code" href="classCWalletDB.html#af9fa539659473e1484dc280ec01c0b70">CWalletDB::Recover</a>);</div><div class="line"><a name="l00627"></a><span class="lineno"> 627</span>&#160; <span class="keywordflow">if</span> (r == <a class="code" href="classCDBEnv.html#a6fbf26da5d7f8f64a77a3ba15e4df244a25eebe1e7f52e4e07a4c9b1e6abc4274">CDBEnv::RECOVER_OK</a>)</div><div class="line"><a name="l00628"></a><span class="lineno"> 628</span>&#160; {</div><div class="line"><a name="l00629"></a><span class="lineno"> 629</span>&#160; warningString += <a class="code" href="tinyformat_8h.html#a56c674871a61baaad36ad52238c08857">strprintf</a>(<a class="code" href="util_8h.html#aad133bb6103b53cebf03fd01e2f11ba1">_</a>(<span class="stringliteral">&quot;Warning: wallet.dat corrupt, data salvaged!&quot;</span></div><div class="line"><a name="l00630"></a><span class="lineno"> 630</span>&#160; <span class="stringliteral">&quot; Original wallet.dat saved as wallet.{timestamp}.bak in %s; if&quot;</span></div><div class="line"><a name="l00631"></a><span class="lineno"> 631</span>&#160; <span class="stringliteral">&quot; your balance or transactions are incorrect you should&quot;</span></div><div class="line"><a name="l00632"></a><span class="lineno"> 632</span>&#160; <span class="stringliteral">&quot; restore from a backup.&quot;</span>), <a class="code" href="util_8cpp.html#ab83866a054745d4b30a3948a1b44beba">GetDataDir</a>());</div><div class="line"><a name="l00633"></a><span class="lineno"> 633</span>&#160; }</div><div class="line"><a name="l00634"></a><span class="lineno"> 634</span>&#160; <span class="keywordflow">if</span> (r == <a class="code" href="classCDBEnv.html#a6fbf26da5d7f8f64a77a3ba15e4df244a0c9f58677b786e700258e8ad29579d75">CDBEnv::RECOVER_FAIL</a>)</div><div class="line"><a name="l00635"></a><span class="lineno"> 635</span>&#160; errorString += <a class="code" href="util_8h.html#aad133bb6103b53cebf03fd01e2f11ba1">_</a>(<span class="stringliteral">&quot;wallet.dat corrupt, salvage failed&quot;</span>);</div><div class="line"><a name="l00636"></a><span class="lineno"> 636</span>&#160; }</div><div class="line"><a name="l00637"></a><span class="lineno"> 637</span>&#160; </div><div class="line"><a name="l00638"></a><span class="lineno"> 638</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00639"></a><span class="lineno"> 639</span>&#160;}</div><div class="line"><a name="l00640"></a><span class="lineno"> 640</span>&#160;</div><div class="line"><a name="l00641"></a><span class="lineno"><a class="line" href="group__mapWallet.html#gac555c90c12f8141f809df7113e8f225f"> 641</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__mapWallet.html#gac555c90c12f8141f809df7113e8f225f">CWallet::SyncMetaData</a>(pair&lt;TxSpends::iterator, TxSpends::iterator&gt; range)</div><div class="line"><a name="l00642"></a><span class="lineno"> 642</span>&#160;{</div><div class="line"><a name="l00643"></a><span class="lineno"> 643</span>&#160; <span class="comment">// We want all the wallet transactions in range to have the same metadata as</span></div><div class="line"><a name="l00644"></a><span class="lineno"> 644</span>&#160; <span class="comment">// the oldest (smallest nOrderPos).</span></div><div class="line"><a name="l00645"></a><span class="lineno"> 645</span>&#160; <span class="comment">// So: find smallest nOrderPos:</span></div><div class="line"><a name="l00646"></a><span class="lineno"> 646</span>&#160;</div><div class="line"><a name="l00647"></a><span class="lineno"> 647</span>&#160; <span class="keywordtype">int</span> nMinOrderPos = std::numeric_limits&lt;int&gt;::max();</div><div class="line"><a name="l00648"></a><span class="lineno"> 648</span>&#160; <span class="keyword">const</span> <a class="code" href="classCWalletTx.html">CWalletTx</a>* copyFrom = NULL;</div><div class="line"><a name="l00649"></a><span class="lineno"> 649</span>&#160; <span class="keywordflow">for</span> (TxSpends::iterator it = range.first; it != range.second; ++it)</div><div class="line"><a name="l00650"></a><span class="lineno"> 650</span>&#160; {</div><div class="line"><a name="l00651"></a><span class="lineno"> 651</span>&#160; <span class="keyword">const</span> <a class="code" href="classuint256.html">uint256</a>&amp; hash = it-&gt;second;</div><div class="line"><a name="l00652"></a><span class="lineno"> 652</span>&#160; <span class="keywordtype">int</span> <a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a> = mapWallet[hash].nOrderPos;</div><div class="line"><a name="l00653"></a><span class="lineno"> 653</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a> &lt; nMinOrderPos)</div><div class="line"><a name="l00654"></a><span class="lineno"> 654</span>&#160; {</div><div class="line"><a name="l00655"></a><span class="lineno"> 655</span>&#160; nMinOrderPos = <a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a>;</div><div class="line"><a name="l00656"></a><span class="lineno"> 656</span>&#160; copyFrom = &amp;mapWallet[hash];</div><div class="line"><a name="l00657"></a><span class="lineno"> 657</span>&#160; }</div><div class="line"><a name="l00658"></a><span class="lineno"> 658</span>&#160; }</div><div class="line"><a name="l00659"></a><span class="lineno"> 659</span>&#160; <span class="comment">// Now copy data from copyFrom to rest:</span></div><div class="line"><a name="l00660"></a><span class="lineno"> 660</span>&#160; <span class="keywordflow">for</span> (TxSpends::iterator it = range.first; it != range.second; ++it)</div><div class="line"><a name="l00661"></a><span class="lineno"> 661</span>&#160; {</div><div class="line"><a name="l00662"></a><span class="lineno"> 662</span>&#160; <span class="keyword">const</span> <a class="code" href="classuint256.html">uint256</a>&amp; hash = it-&gt;second;</div><div class="line"><a name="l00663"></a><span class="lineno"> 663</span>&#160; <a class="code" href="classCWalletTx.html">CWalletTx</a>* copyTo = &amp;mapWallet[hash];</div><div class="line"><a name="l00664"></a><span class="lineno"> 664</span>&#160; <span class="keywordflow">if</span> (copyFrom == copyTo) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00665"></a><span class="lineno"> 665</span>&#160; <span class="keywordflow">if</span> (!copyFrom-&gt;<a class="code" href="group__mapWallet.html#ga663593382cf8b0fb993e2515261bb017">IsEquivalentTo</a>(*copyTo)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00666"></a><span class="lineno"> 666</span>&#160; copyTo-&gt;<a class="code" href="classCWalletTx.html#a17229eca0c81245312115a9c333203d8">mapValue</a> = copyFrom-&gt;<a class="code" href="classCWalletTx.html#a17229eca0c81245312115a9c333203d8">mapValue</a>;</div><div class="line"><a name="l00667"></a><span class="lineno"> 667</span>&#160; copyTo-&gt;<a class="code" href="classCWalletTx.html#a923dbbba343b8f4d1c3d89ae73bdcea0">vOrderForm</a> = copyFrom-&gt;<a class="code" href="classCWalletTx.html#a923dbbba343b8f4d1c3d89ae73bdcea0">vOrderForm</a>;</div><div class="line"><a name="l00668"></a><span class="lineno"> 668</span>&#160; <span class="comment">// fTimeReceivedIsTxTime not copied on purpose</span></div><div class="line"><a name="l00669"></a><span class="lineno"> 669</span>&#160; <span class="comment">// nTimeReceived not copied on purpose</span></div><div class="line"><a name="l00670"></a><span class="lineno"> 670</span>&#160; copyTo-&gt;<a class="code" href="classCWalletTx.html#a3c9ba52ce7203b9f16235785a09c383c">nTimeSmart</a> = copyFrom-&gt;<a class="code" href="classCWalletTx.html#a3c9ba52ce7203b9f16235785a09c383c">nTimeSmart</a>;</div><div class="line"><a name="l00671"></a><span class="lineno"> 671</span>&#160; copyTo-&gt;<a class="code" href="classCWalletTx.html#a1598bf4a18fd05ce5eaaa0c3eb58ff28">fFromMe</a> = copyFrom-&gt;<a class="code" href="classCWalletTx.html#a1598bf4a18fd05ce5eaaa0c3eb58ff28">fFromMe</a>;</div><div class="line"><a name="l00672"></a><span class="lineno"> 672</span>&#160; copyTo-&gt;<a class="code" href="classCWalletTx.html#a099b5ca562f8a8378124b345b9123f25">strFromAccount</a> = copyFrom-&gt;<a class="code" href="classCWalletTx.html#a099b5ca562f8a8378124b345b9123f25">strFromAccount</a>;</div><div class="line"><a name="l00673"></a><span class="lineno"> 673</span>&#160; <span class="comment">// nOrderPos not copied on purpose</span></div><div class="line"><a name="l00674"></a><span class="lineno"> 674</span>&#160; <span class="comment">// cached members not copied on purpose</span></div><div class="line"><a name="l00675"></a><span class="lineno"> 675</span>&#160; }</div><div class="line"><a name="l00676"></a><span class="lineno"> 676</span>&#160;}</div><div class="line"><a name="l00677"></a><span class="lineno"> 677</span>&#160;</div><div class="line"><a name="l00682"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga6adcf1c224ed3c3fe4b0b19f6fca75d8"> 682</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#ga6adcf1c224ed3c3fe4b0b19f6fca75d8">CWallet::IsSpent</a>(<span class="keyword">const</span> <a class="code" href="classuint256.html">uint256</a>&amp; hash, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a>)<span class="keyword"> const</span></div><div class="line"><a name="l00683"></a><span class="lineno"> 683</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l00684"></a><span class="lineno"> 684</span>&#160; <span class="keyword">const</span> <a class="code" href="classCOutPoint.html">COutPoint</a> outpoint(hash, <a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a>);</div><div class="line"><a name="l00685"></a><span class="lineno"> 685</span>&#160; pair&lt;TxSpends::const_iterator, TxSpends::const_iterator&gt; range;</div><div class="line"><a name="l00686"></a><span class="lineno"> 686</span>&#160; range = mapTxSpends.equal_range(outpoint);</div><div class="line"><a name="l00687"></a><span class="lineno"> 687</span>&#160;</div><div class="line"><a name="l00688"></a><span class="lineno"> 688</span>&#160; <span class="keywordflow">for</span> (TxSpends::const_iterator it = range.first; it != range.second; ++it)</div><div class="line"><a name="l00689"></a><span class="lineno"> 689</span>&#160; {</div><div class="line"><a name="l00690"></a><span class="lineno"> 690</span>&#160; <span class="keyword">const</span> <a class="code" href="classuint256.html">uint256</a>&amp; wtxid = it-&gt;second;</div><div class="line"><a name="l00691"></a><span class="lineno"> 691</span>&#160; std::map&lt;uint256, CWalletTx&gt;::const_iterator mit = mapWallet.find(wtxid);</div><div class="line"><a name="l00692"></a><span class="lineno"> 692</span>&#160; <span class="keywordflow">if</span> (mit != mapWallet.end()) {</div><div class="line"><a name="l00693"></a><span class="lineno"> 693</span>&#160; <span class="keywordtype">int</span> depth = mit-&gt;second.GetDepthInMainChain();</div><div class="line"><a name="l00694"></a><span class="lineno"> 694</span>&#160; <span class="keywordflow">if</span> (depth &gt; 0 || (depth == 0 &amp;&amp; !mit-&gt;second.isAbandoned()))</div><div class="line"><a name="l00695"></a><span class="lineno"> 695</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// Spent</span></div><div class="line"><a name="l00696"></a><span class="lineno"> 696</span>&#160; }</div><div class="line"><a name="l00697"></a><span class="lineno"> 697</span>&#160; }</div><div class="line"><a name="l00698"></a><span class="lineno"> 698</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00699"></a><span class="lineno"> 699</span>&#160;}</div><div class="line"><a name="l00700"></a><span class="lineno"> 700</span>&#160;</div><div class="line"><a name="l00701"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga73b98163dac6f2e45bf3e75e0dc3c94f"> 701</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__mapWallet.html#ga73b98163dac6f2e45bf3e75e0dc3c94f">CWallet::AddToSpends</a>(<span class="keyword">const</span> <a class="code" href="classCOutPoint.html">COutPoint</a>&amp; outpoint, <span class="keyword">const</span> <a class="code" href="classuint256.html">uint256</a>&amp; wtxid)</div><div class="line"><a name="l00702"></a><span class="lineno"> 702</span>&#160;{</div><div class="line"><a name="l00703"></a><span class="lineno"> 703</span>&#160; mapTxSpends.insert(make_pair(outpoint, wtxid));</div><div class="line"><a name="l00704"></a><span class="lineno"> 704</span>&#160; setWalletUTXO.erase(outpoint);</div><div class="line"><a name="l00705"></a><span class="lineno"> 705</span>&#160;</div><div class="line"><a name="l00706"></a><span class="lineno"> 706</span>&#160; pair&lt;TxSpends::iterator, TxSpends::iterator&gt; range;</div><div class="line"><a name="l00707"></a><span class="lineno"> 707</span>&#160; range = mapTxSpends.equal_range(outpoint);</div><div class="line"><a name="l00708"></a><span class="lineno"> 708</span>&#160; SyncMetaData(range);</div><div class="line"><a name="l00709"></a><span class="lineno"> 709</span>&#160;}</div><div class="line"><a name="l00710"></a><span class="lineno"> 710</span>&#160;</div><div class="line"><a name="l00711"></a><span class="lineno"> 711</span>&#160;</div><div class="line"><a name="l00712"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga6929a0e946b08a1363a6de0ad379279f"> 712</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__mapWallet.html#ga73b98163dac6f2e45bf3e75e0dc3c94f">CWallet::AddToSpends</a>(<span class="keyword">const</span> <a class="code" href="classuint256.html">uint256</a>&amp; wtxid)</div><div class="line"><a name="l00713"></a><span class="lineno"> 713</span>&#160;{</div><div class="line"><a name="l00714"></a><span class="lineno"> 714</span>&#160; assert(mapWallet.count(wtxid));</div><div class="line"><a name="l00715"></a><span class="lineno"> 715</span>&#160; <a class="code" href="classCWalletTx.html">CWalletTx</a>&amp; thisTx = mapWallet[wtxid];</div><div class="line"><a name="l00716"></a><span class="lineno"> 716</span>&#160; <span class="keywordflow">if</span> (thisTx.IsCoinBase()) <span class="comment">// Coinbases don&#39;t spend anything!</span></div><div class="line"><a name="l00717"></a><span class="lineno"> 717</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l00718"></a><span class="lineno"> 718</span>&#160;</div><div class="line"><a name="l00719"></a><span class="lineno"> 719</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="classCTxIn.html">CTxIn</a>&amp; txin, thisTx.vin)</div><div class="line"><a name="l00720"></a><span class="lineno"> 720</span>&#160; AddToSpends(txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>, wtxid);</div><div class="line"><a name="l00721"></a><span class="lineno"> 721</span>&#160;}</div><div class="line"><a name="l00722"></a><span class="lineno"> 722</span>&#160;</div><div class="line"><a name="l00723"></a><span class="lineno"><a class="line" href="group__mapWallet.html#gab34fe5bf771619dcbe22a65f013e5469"> 723</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#gab34fe5bf771619dcbe22a65f013e5469">CWallet::EncryptWallet</a>(<span class="keyword">const</span> <a class="code" href="secure_8h.html#a396ed773a5ac24aec28c8f7dc413c7ac">SecureString</a>&amp; strWalletPassphrase)</div><div class="line"><a name="l00724"></a><span class="lineno"> 724</span>&#160;{</div><div class="line"><a name="l00725"></a><span class="lineno"> 725</span>&#160; <span class="keywordflow">if</span> (IsCrypted())</div><div class="line"><a name="l00726"></a><span class="lineno"> 726</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00727"></a><span class="lineno"> 727</span>&#160;</div><div class="line"><a name="l00728"></a><span class="lineno"> 728</span>&#160; <a class="code" href="keystore_8h.html#a64709c9a3acc8f5694515789a183ad7b">CKeyingMaterial</a> vMasterKey;</div><div class="line"><a name="l00729"></a><span class="lineno"> 729</span>&#160; <a class="code" href="random_8cpp.html#a786af12a87491f8dc24351d93b9833b6">RandAddSeedPerfmon</a>();</div><div class="line"><a name="l00730"></a><span class="lineno"> 730</span>&#160;</div><div class="line"><a name="l00731"></a><span class="lineno"> 731</span>&#160; vMasterKey.resize(<a class="code" href="crypter_8h.html#abf8d5f4eb0b3c828d9fbedb9b2e10b2a">WALLET_CRYPTO_KEY_SIZE</a>);</div><div class="line"><a name="l00732"></a><span class="lineno"> 732</span>&#160; <a class="code" href="random_8cpp.html#ada0c29949c4d1ac0cc027d93c4771423">GetRandBytes</a>(&amp;vMasterKey[0], <a class="code" href="crypter_8h.html#abf8d5f4eb0b3c828d9fbedb9b2e10b2a">WALLET_CRYPTO_KEY_SIZE</a>);</div><div class="line"><a name="l00733"></a><span class="lineno"> 733</span>&#160;</div><div class="line"><a name="l00734"></a><span class="lineno"> 734</span>&#160; <a class="code" href="classCMasterKey.html">CMasterKey</a> kMasterKey;</div><div class="line"><a name="l00735"></a><span class="lineno"> 735</span>&#160; <a class="code" href="random_8cpp.html#a786af12a87491f8dc24351d93b9833b6">RandAddSeedPerfmon</a>();</div><div class="line"><a name="l00736"></a><span class="lineno"> 736</span>&#160;</div><div class="line"><a name="l00737"></a><span class="lineno"> 737</span>&#160; kMasterKey.<a class="code" href="classCMasterKey.html#a00009f4b4feaa2ebe630a0d7cc854d3a">vchSalt</a>.resize(<a class="code" href="crypter_8h.html#aa42a9547c4738b8f92fd88016c5184a0">WALLET_CRYPTO_SALT_SIZE</a>);</div><div class="line"><a name="l00738"></a><span class="lineno"> 738</span>&#160; <a class="code" href="random_8cpp.html#ada0c29949c4d1ac0cc027d93c4771423">GetRandBytes</a>(&amp;kMasterKey.<a class="code" href="classCMasterKey.html#a00009f4b4feaa2ebe630a0d7cc854d3a">vchSalt</a>[0], <a class="code" href="crypter_8h.html#aa42a9547c4738b8f92fd88016c5184a0">WALLET_CRYPTO_SALT_SIZE</a>);</div><div class="line"><a name="l00739"></a><span class="lineno"> 739</span>&#160;</div><div class="line"><a name="l00740"></a><span class="lineno"> 740</span>&#160; <a class="code" href="classCCrypter.html">CCrypter</a> crypter;</div><div class="line"><a name="l00741"></a><span class="lineno"> 741</span>&#160; int64_t nStartTime = <a class="code" href="utiltime_8cpp.html#a139d0fe6387b9e230a9b8bb12d9b43b9">GetTimeMillis</a>();</div><div class="line"><a name="l00742"></a><span class="lineno"> 742</span>&#160; crypter.<a class="code" href="classCCrypter.html#a5368279e4a1549d3c1d15d8aa2179708">SetKeyFromPassphrase</a>(strWalletPassphrase, kMasterKey.<a class="code" href="classCMasterKey.html#a00009f4b4feaa2ebe630a0d7cc854d3a">vchSalt</a>, 25000, kMasterKey.<a class="code" href="classCMasterKey.html#a7a4b1e432a30011297f496441769957f">nDerivationMethod</a>);</div><div class="line"><a name="l00743"></a><span class="lineno"> 743</span>&#160; kMasterKey.<a class="code" href="classCMasterKey.html#aec53e0be82d1053cf5a70a67fd4cc25d">nDeriveIterations</a> = 2500000 / ((double)(<a class="code" href="utiltime_8cpp.html#a139d0fe6387b9e230a9b8bb12d9b43b9">GetTimeMillis</a>() - nStartTime));</div><div class="line"><a name="l00744"></a><span class="lineno"> 744</span>&#160;</div><div class="line"><a name="l00745"></a><span class="lineno"> 745</span>&#160; nStartTime = <a class="code" href="utiltime_8cpp.html#a139d0fe6387b9e230a9b8bb12d9b43b9">GetTimeMillis</a>();</div><div class="line"><a name="l00746"></a><span class="lineno"> 746</span>&#160; crypter.<a class="code" href="classCCrypter.html#a5368279e4a1549d3c1d15d8aa2179708">SetKeyFromPassphrase</a>(strWalletPassphrase, kMasterKey.<a class="code" href="classCMasterKey.html#a00009f4b4feaa2ebe630a0d7cc854d3a">vchSalt</a>, kMasterKey.<a class="code" href="classCMasterKey.html#aec53e0be82d1053cf5a70a67fd4cc25d">nDeriveIterations</a>, kMasterKey.<a class="code" href="classCMasterKey.html#a7a4b1e432a30011297f496441769957f">nDerivationMethod</a>);</div><div class="line"><a name="l00747"></a><span class="lineno"> 747</span>&#160; kMasterKey.<a class="code" href="classCMasterKey.html#aec53e0be82d1053cf5a70a67fd4cc25d">nDeriveIterations</a> = (kMasterKey.<a class="code" href="classCMasterKey.html#aec53e0be82d1053cf5a70a67fd4cc25d">nDeriveIterations</a> + kMasterKey.<a class="code" href="classCMasterKey.html#aec53e0be82d1053cf5a70a67fd4cc25d">nDeriveIterations</a> * 100 / ((double)(<a class="code" href="utiltime_8cpp.html#a139d0fe6387b9e230a9b8bb12d9b43b9">GetTimeMillis</a>() - nStartTime))) / 2;</div><div class="line"><a name="l00748"></a><span class="lineno"> 748</span>&#160;</div><div class="line"><a name="l00749"></a><span class="lineno"> 749</span>&#160; <span class="keywordflow">if</span> (kMasterKey.<a class="code" href="classCMasterKey.html#aec53e0be82d1053cf5a70a67fd4cc25d">nDeriveIterations</a> &lt; 25000)</div><div class="line"><a name="l00750"></a><span class="lineno"> 750</span>&#160; kMasterKey.<a class="code" href="classCMasterKey.html#aec53e0be82d1053cf5a70a67fd4cc25d">nDeriveIterations</a> = 25000;</div><div class="line"><a name="l00751"></a><span class="lineno"> 751</span>&#160;</div><div class="line"><a name="l00752"></a><span class="lineno"> 752</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;Encrypting Wallet with an nDeriveIterations of %i\n&quot;</span>, kMasterKey.<a class="code" href="classCMasterKey.html#aec53e0be82d1053cf5a70a67fd4cc25d">nDeriveIterations</a>);</div><div class="line"><a name="l00753"></a><span class="lineno"> 753</span>&#160;</div><div class="line"><a name="l00754"></a><span class="lineno"> 754</span>&#160; <span class="keywordflow">if</span> (!crypter.<a class="code" href="classCCrypter.html#a5368279e4a1549d3c1d15d8aa2179708">SetKeyFromPassphrase</a>(strWalletPassphrase, kMasterKey.<a class="code" href="classCMasterKey.html#a00009f4b4feaa2ebe630a0d7cc854d3a">vchSalt</a>, kMasterKey.<a class="code" href="classCMasterKey.html#aec53e0be82d1053cf5a70a67fd4cc25d">nDeriveIterations</a>, kMasterKey.<a class="code" href="classCMasterKey.html#a7a4b1e432a30011297f496441769957f">nDerivationMethod</a>))</div><div class="line"><a name="l00755"></a><span class="lineno"> 755</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00756"></a><span class="lineno"> 756</span>&#160; <span class="keywordflow">if</span> (!crypter.<a class="code" href="classCCrypter.html#a124fcd3021569a660ce2daa3391c8ea4">Encrypt</a>(vMasterKey, kMasterKey.<a class="code" href="classCMasterKey.html#ab52e0eaabb0eb3af78fc4879c192e163">vchCryptedKey</a>))</div><div class="line"><a name="l00757"></a><span class="lineno"> 757</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00758"></a><span class="lineno"> 758</span>&#160;</div><div class="line"><a name="l00759"></a><span class="lineno"> 759</span>&#160; {</div><div class="line"><a name="l00760"></a><span class="lineno"> 760</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet);</div><div class="line"><a name="l00761"></a><span class="lineno"> 761</span>&#160; mapMasterKeys[++nMasterKeyMaxID] = kMasterKey;</div><div class="line"><a name="l00762"></a><span class="lineno"> 762</span>&#160; <span class="keywordflow">if</span> (fFileBacked)</div><div class="line"><a name="l00763"></a><span class="lineno"> 763</span>&#160; {</div><div class="line"><a name="l00764"></a><span class="lineno"> 764</span>&#160; assert(!pwalletdbEncryption);</div><div class="line"><a name="l00765"></a><span class="lineno"> 765</span>&#160; pwalletdbEncryption = <span class="keyword">new</span> <a class="code" href="classCWalletDB.html">CWalletDB</a>(strWalletFile);</div><div class="line"><a name="l00766"></a><span class="lineno"> 766</span>&#160; <span class="keywordflow">if</span> (!pwalletdbEncryption-&gt;TxnBegin()) {</div><div class="line"><a name="l00767"></a><span class="lineno"> 767</span>&#160; <span class="keyword">delete</span> pwalletdbEncryption;</div><div class="line"><a name="l00768"></a><span class="lineno"> 768</span>&#160; pwalletdbEncryption = NULL;</div><div class="line"><a name="l00769"></a><span class="lineno"> 769</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00770"></a><span class="lineno"> 770</span>&#160; }</div><div class="line"><a name="l00771"></a><span class="lineno"> 771</span>&#160; pwalletdbEncryption-&gt;WriteMasterKey(nMasterKeyMaxID, kMasterKey);</div><div class="line"><a name="l00772"></a><span class="lineno"> 772</span>&#160; }</div><div class="line"><a name="l00773"></a><span class="lineno"> 773</span>&#160;</div><div class="line"><a name="l00774"></a><span class="lineno"> 774</span>&#160; <span class="comment">// must get current HD chain before EncryptKeys</span></div><div class="line"><a name="l00775"></a><span class="lineno"> 775</span>&#160; <a class="code" href="classCHDChain.html">CHDChain</a> hdChainCurrent;</div><div class="line"><a name="l00776"></a><span class="lineno"> 776</span>&#160; GetHDChain(hdChainCurrent);</div><div class="line"><a name="l00777"></a><span class="lineno"> 777</span>&#160;</div><div class="line"><a name="l00778"></a><span class="lineno"> 778</span>&#160; <span class="keywordflow">if</span> (!EncryptKeys(vMasterKey))</div><div class="line"><a name="l00779"></a><span class="lineno"> 779</span>&#160; {</div><div class="line"><a name="l00780"></a><span class="lineno"> 780</span>&#160; <span class="keywordflow">if</span> (fFileBacked) {</div><div class="line"><a name="l00781"></a><span class="lineno"> 781</span>&#160; pwalletdbEncryption-&gt;TxnAbort();</div><div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; <span class="keyword">delete</span> pwalletdbEncryption;</div><div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; }</div><div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <span class="comment">// We now probably have half of our keys encrypted in memory, and half not...</span></div><div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <span class="comment">// die and let the user reload the unencrypted wallet.</span></div><div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; assert(<span class="keyword">false</span>);</div><div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; }</div><div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160;</div><div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <span class="keywordflow">if</span> (!hdChainCurrent.<a class="code" href="classCHDChain.html#a72b48b299ab3d24d46e487d4bc1603b2">IsNull</a>()) {</div><div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; assert(EncryptHDChain(vMasterKey));</div><div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160;</div><div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <a class="code" href="classCHDChain.html">CHDChain</a> hdChainCrypted;</div><div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; assert(GetHDChain(hdChainCrypted));</div><div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160;</div><div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; <a class="code" href="util_8h.html#a32adf79142f0a426b5e782fb7cd4cad3">DBG</a>(</div><div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; printf(<span class="stringliteral">&quot;EncryptWallet -- current seed: &#39;%s&#39;\n&quot;</span>, <a class="code" href="utilstrencodings_8h.html#ace13a819ca4e98c22847d26b3b357e75">HexStr</a>(hdChainCurrent.<a class="code" href="classCHDChain.html#a3606bfc2be2e89278b11440528141978">GetSeed</a>()).c_str());</div><div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; printf(<span class="stringliteral">&quot;EncryptWallet -- crypted seed: &#39;%s&#39;\n&quot;</span>, <a class="code" href="utilstrencodings_8h.html#ace13a819ca4e98c22847d26b3b357e75">HexStr</a>(hdChainCrypted.<a class="code" href="classCHDChain.html#a3606bfc2be2e89278b11440528141978">GetSeed</a>()).c_str());</div><div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; );</div><div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160;</div><div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; <span class="comment">// ids should match, seed hashes should not</span></div><div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; assert(hdChainCurrent.<a class="code" href="classCHDChain.html#a37c75884a3ef7c7ff435aae648c3c6de">GetID</a>() == hdChainCrypted.<a class="code" href="classCHDChain.html#a37c75884a3ef7c7ff435aae648c3c6de">GetID</a>());</div><div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; assert(hdChainCurrent.<a class="code" href="classCHDChain.html#a4593a3c0b9eb1918f0c3820f1a54b5f4">GetSeedHash</a>() != hdChainCrypted.<a class="code" href="classCHDChain.html#a4593a3c0b9eb1918f0c3820f1a54b5f4">GetSeedHash</a>());</div><div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160;</div><div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; assert(SetCryptedHDChain(hdChainCrypted, <span class="keyword">false</span>));</div><div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; }</div><div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160;</div><div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <span class="comment">// Encryption was introduced in version 0.4.0</span></div><div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; SetMinVersion(<a class="code" href="wallet_8h.html#a39a6b71da3eb95cddc0836d3b27ac7c9a16fc17e025bfd90749cb594e8fc664b0">FEATURE_WALLETCRYPT</a>, pwalletdbEncryption, <span class="keyword">true</span>);</div><div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160;</div><div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; <span class="keywordflow">if</span> (fFileBacked)</div><div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; {</div><div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keywordflow">if</span> (!pwalletdbEncryption-&gt;TxnCommit()) {</div><div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; <span class="keyword">delete</span> pwalletdbEncryption;</div><div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="comment">// We now have keys encrypted in memory, but not on disk...</span></div><div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <span class="comment">// die to avoid confusion and let the user reload the unencrypted wallet.</span></div><div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; assert(<span class="keyword">false</span>);</div><div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; }</div><div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160;</div><div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; <span class="keyword">delete</span> pwalletdbEncryption;</div><div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; pwalletdbEncryption = NULL;</div><div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; }</div><div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160;</div><div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; Lock();</div><div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; Unlock(strWalletPassphrase);</div><div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160;</div><div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <span class="comment">// if we are not using HD, generate new keypool</span></div><div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; <span class="keywordflow">if</span>(IsHDEnabled()) {</div><div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; TopUpKeyPool();</div><div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; }</div><div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; NewKeyPool();</div><div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; }</div><div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160;</div><div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; Lock();</div><div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160;</div><div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <span class="comment">// Need to completely rewrite the wallet file; if we don&#39;t, bdb might keep</span></div><div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <span class="comment">// bits of the unencrypted private key in slack space in the database file.</span></div><div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <a class="code" href="classCDB.html#acfb8a373edb9c4cfab780fb7578b277e">CDB::Rewrite</a>(strWalletFile);</div><div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160;</div><div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="comment">// Update KeePass if necessary</span></div><div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="util_8cpp.html#a64d956f1dda7f9a80ab5d594532b906d">GetBoolArg</a>(<span class="stringliteral">&quot;-keepass&quot;</span>, <span class="keyword">false</span>)) {</div><div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;CWallet::EncryptWallet -- Updating KeePass with new passphrase&quot;</span>);</div><div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <span class="keywordflow">try</span> {</div><div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <a class="code" href="keepass_8cpp.html#a33e391e23935d229d815a1523acc9454">keePassInt</a>.<a class="code" href="classCKeePassIntegrator.html#a8f0f9765dfaaf14fc9b2b780b5332c24">updatePassphrase</a>(strWalletPassphrase);</div><div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; } <span class="keywordflow">catch</span> (std::exception&amp; e) {</div><div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;CWallet::EncryptWallet -- could not update passphrase in KeePass: Error: %s\n&quot;</span>, e.what());</div><div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; }</div><div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; }</div><div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160;</div><div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; }</div><div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; NotifyStatusChanged(<span class="keyword">this</span>);</div><div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160;</div><div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160;}</div><div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160;</div><div class="line"><a name="l00856"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga7a76d68661e6879651ac0b11f2893e58"> 856</a></span>&#160;int64_t <a class="code" href="group__mapWallet.html#ga7a76d68661e6879651ac0b11f2893e58">CWallet::IncOrderPosNext</a>(<a class="code" href="classCWalletDB.html">CWalletDB</a> *pwalletdb)</div><div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160;{</div><div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; <a class="code" href="sync_8h.html#acd61d0cb3b49f367728193720014aed0">AssertLockHeld</a>(cs_wallet); <span class="comment">// nOrderPosNext</span></div><div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; int64_t nRet = nOrderPosNext++;</div><div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; <span class="keywordflow">if</span> (pwalletdb) {</div><div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; pwalletdb-&gt;<a class="code" href="classCWalletDB.html#a6a1f671e6376b38a1f73c8a023abdd38">WriteOrderPosNext</a>(nOrderPosNext);</div><div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; <a class="code" href="classCWalletDB.html">CWalletDB</a>(strWalletFile).<a class="code" href="classCWalletDB.html#a6a1f671e6376b38a1f73c8a023abdd38">WriteOrderPosNext</a>(nOrderPosNext);</div><div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; }</div><div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <span class="keywordflow">return</span> nRet;</div><div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160;}</div><div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160;</div><div class="line"><a name="l00868"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga26fd9a9f48230daf346500d2afb6115e"> 868</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__mapWallet.html#ga26fd9a9f48230daf346500d2afb6115e">CWallet::MarkDirty</a>()</div><div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160;{</div><div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; {</div><div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet);</div><div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; BOOST_FOREACH(<a class="code" href="utilstrencodings_8h.html#aa3052ab82a2ba880ea3e30b3357c8820">PAIRTYPE</a>(<span class="keyword">const</span> <a class="code" href="classuint256.html">uint256</a>, <a class="code" href="classCWalletTx.html">CWalletTx</a>)&amp; item, mapWallet)</div><div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; item.second.<a class="code" href="classCWalletTx.html#ac8a376bcb955e437489504dc596b43cf">MarkDirty</a>();</div><div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; }</div><div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160;</div><div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; fAnonymizableTallyCached = <span class="keyword">false</span>;</div><div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; fAnonymizableTallyCachedNonDenom = <span class="keyword">false</span>;</div><div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160;}</div><div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160;</div><div class="line"><a name="l00880"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga5dd4c302f7ead99d078a113077eac045"> 880</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#ga5dd4c302f7ead99d078a113077eac045">CWallet::AddToWallet</a>(<span class="keyword">const</span> <a class="code" href="classCWalletTx.html">CWalletTx</a>&amp; wtxIn, <span class="keywordtype">bool</span> fFromLoadWallet, <a class="code" href="classCWalletDB.html">CWalletDB</a>* pwalletdb)</div><div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160;{</div><div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; <a class="code" href="classuint256.html">uint256</a> hash = wtxIn.<a class="code" href="classCTransaction.html#a7efd1379de830341417c0bfa23a149aa">GetHash</a>();</div><div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160;</div><div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <span class="keywordflow">if</span> (fFromLoadWallet)</div><div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; {</div><div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; mapWallet[hash] = wtxIn;</div><div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; <a class="code" href="classCWalletTx.html">CWalletTx</a>&amp; wtx = mapWallet[hash];</div><div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; wtx.<a class="code" href="classCWalletTx.html#ab0ee7347584bff886dc24b9f63ff023c">BindWallet</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; wtxOrdered.insert(make_pair(wtx.<a class="code" href="classCWalletTx.html#af51e160ff1d9d78986e9f239c7ac7a35">nOrderPos</a>, <a class="code" href="classCWallet.html#ad1557a7d200f70bc97319376a24c98a7">TxPair</a>(&amp;wtx, (<a class="code" href="classCAccountingEntry.html">CAccountingEntry</a>*)0)));</div><div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; AddToSpends(hash);</div><div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="classCTxIn.html">CTxIn</a>&amp; txin, wtx.<a class="code" href="classCTransaction.html#ad64447ea044ec850313696fc99412d95">vin</a>) {</div><div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <span class="keywordflow">if</span> (mapWallet.count(txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>.<a class="code" href="classCOutPoint.html#af131c7194a660558b0ff158f4efa7a28">hash</a>)) {</div><div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <a class="code" href="classCWalletTx.html">CWalletTx</a>&amp; prevtx = mapWallet[txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>.<a class="code" href="classCOutPoint.html#af131c7194a660558b0ff158f4efa7a28">hash</a>];</div><div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <span class="keywordflow">if</span> (prevtx.<a class="code" href="classCMerkleTx.html#a829655e70702fdf97b6e534dd3227b0b">nIndex</a> == -1 &amp;&amp; !prevtx.<a class="code" href="classCMerkleTx.html#aff66148b06d22c7ee555b79058211493">hashUnset</a>()) {</div><div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; MarkConflicted(prevtx.<a class="code" href="classCMerkleTx.html#a788ee54c14b6d9706eb3737404663238">hashBlock</a>, wtx.<a class="code" href="classCTransaction.html#a7efd1379de830341417c0bfa23a149aa">GetHash</a>());</div><div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; }</div><div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; }</div><div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; }</div><div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; }</div><div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; {</div><div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet);</div><div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <span class="comment">// Inserts only if not already there, returns tx inserted or tx found</span></div><div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; pair&lt;map&lt;uint256, CWalletTx&gt;::iterator, <span class="keywordtype">bool</span>&gt; ret = mapWallet.insert(make_pair(hash, wtxIn));</div><div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <a class="code" href="classCWalletTx.html">CWalletTx</a>&amp; wtx = (*ret.first).second;</div><div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; wtx.<a class="code" href="classCWalletTx.html#ab0ee7347584bff886dc24b9f63ff023c">BindWallet</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <span class="keywordtype">bool</span> fInsertedNew = ret.second;</div><div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; <span class="keywordflow">if</span> (fInsertedNew)</div><div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; {</div><div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; wtx.<a class="code" href="classCWalletTx.html#af4f4b58875061467026da7b259532b69">nTimeReceived</a> = <a class="code" href="timedata_8cpp.html#a09f81b9c7650f898cf3cf305b87547e6">GetAdjustedTime</a>();</div><div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; wtx.<a class="code" href="classCWalletTx.html#af51e160ff1d9d78986e9f239c7ac7a35">nOrderPos</a> = IncOrderPosNext(pwalletdb);</div><div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; wtxOrdered.insert(make_pair(wtx.<a class="code" href="classCWalletTx.html#af51e160ff1d9d78986e9f239c7ac7a35">nOrderPos</a>, <a class="code" href="classCWallet.html#ad1557a7d200f70bc97319376a24c98a7">TxPair</a>(&amp;wtx, (<a class="code" href="classCAccountingEntry.html">CAccountingEntry</a>*)0)));</div><div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160;</div><div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; wtx.<a class="code" href="classCWalletTx.html#a3c9ba52ce7203b9f16235785a09c383c">nTimeSmart</a> = wtx.<a class="code" href="classCWalletTx.html#af4f4b58875061467026da7b259532b69">nTimeReceived</a>;</div><div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; <span class="keywordflow">if</span> (!wtxIn.<a class="code" href="classCMerkleTx.html#aff66148b06d22c7ee555b79058211493">hashUnset</a>())</div><div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; {</div><div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="validation_8cpp.html#a887b8e9f9fea0ea870c6987f1fd52eb6">mapBlockIndex</a>.count(wtxIn.<a class="code" href="classCMerkleTx.html#a788ee54c14b6d9706eb3737404663238">hashBlock</a>))</div><div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; {</div><div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; int64_t latestNow = wtx.<a class="code" href="classCWalletTx.html#af4f4b58875061467026da7b259532b69">nTimeReceived</a>;</div><div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; int64_t latestEntry = 0;</div><div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; {</div><div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; <span class="comment">// Tolerate times up to the last timestamp in the wallet not more than 5 minutes into the future</span></div><div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; int64_t latestTolerated = latestNow + 300;</div><div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; <span class="keyword">const</span> <a class="code" href="classCWallet.html#ac35fb148c0967ad24db292435b54ad85">TxItems</a> &amp; txOrdered = wtxOrdered;</div><div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="keywordflow">for</span> (TxItems::const_reverse_iterator it = txOrdered.rbegin(); it != txOrdered.rend(); ++it)</div><div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; {</div><div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; <a class="code" href="classCWalletTx.html">CWalletTx</a> *<span class="keyword">const</span> pwtx = (*it).second.first;</div><div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; <span class="keywordflow">if</span> (pwtx == &amp;wtx)</div><div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; <a class="code" href="classCAccountingEntry.html">CAccountingEntry</a> *<span class="keyword">const</span> pacentry = (*it).second.second;</div><div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; int64_t nSmartTime;</div><div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <span class="keywordflow">if</span> (pwtx)</div><div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; {</div><div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; nSmartTime = pwtx-&gt;<a class="code" href="classCWalletTx.html#a3c9ba52ce7203b9f16235785a09c383c">nTimeSmart</a>;</div><div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; <span class="keywordflow">if</span> (!nSmartTime)</div><div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; nSmartTime = pwtx-&gt;<a class="code" href="classCWalletTx.html#af4f4b58875061467026da7b259532b69">nTimeReceived</a>;</div><div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; }</div><div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; nSmartTime = pacentry-&gt;<a class="code" href="classCAccountingEntry.html#a416a4eb8d47e4c4cfdfc366d9d777ae6">nTime</a>;</div><div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <span class="keywordflow">if</span> (nSmartTime &lt;= latestTolerated)</div><div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; {</div><div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; latestEntry = nSmartTime;</div><div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; <span class="keywordflow">if</span> (nSmartTime &gt; latestNow)</div><div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; latestNow = nSmartTime;</div><div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; }</div><div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; }</div><div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; }</div><div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160;</div><div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; int64_t blocktime = <a class="code" href="validation_8cpp.html#a887b8e9f9fea0ea870c6987f1fd52eb6">mapBlockIndex</a>[wtxIn.<a class="code" href="classCMerkleTx.html#a788ee54c14b6d9706eb3737404663238">hashBlock</a>]-&gt;GetBlockTime();</div><div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; wtx.<a class="code" href="classCWalletTx.html#a3c9ba52ce7203b9f16235785a09c383c">nTimeSmart</a> = std::max(latestEntry, std::min(blocktime, latestNow));</div><div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; }</div><div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;AddToWallet(): found %s in block %s not in index\n&quot;</span>,</div><div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; wtxIn.<a class="code" href="classCTransaction.html#a7efd1379de830341417c0bfa23a149aa">GetHash</a>().<a class="code" href="classbase__blob.html#a7a0d25782830d8b087c4da839f3ccdeb">ToString</a>(),</div><div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; wtxIn.<a class="code" href="classCMerkleTx.html#a788ee54c14b6d9706eb3737404663238">hashBlock</a>.<a class="code" href="classbase__blob.html#a7a0d25782830d8b087c4da839f3ccdeb">ToString</a>());</div><div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; }</div><div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160; AddToSpends(hash);</div><div class="line"><a name="l00959"></a><span class="lineno"> 959</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; wtx.<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>.size(); ++i) {</div><div class="line"><a name="l00960"></a><span class="lineno"> 960</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="wallet__ismine_8cpp.html#adc59cf67d903c1ba1ef225561b85bfce">IsMine</a>(wtx.<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[i]) &amp;&amp; !IsSpent(hash, i)) {</div><div class="line"><a name="l00961"></a><span class="lineno"> 961</span>&#160; setWalletUTXO.insert(<a class="code" href="classCOutPoint.html">COutPoint</a>(hash, i));</div><div class="line"><a name="l00962"></a><span class="lineno"> 962</span>&#160; }</div><div class="line"><a name="l00963"></a><span class="lineno"> 963</span>&#160; }</div><div class="line"><a name="l00964"></a><span class="lineno"> 964</span>&#160; }</div><div class="line"><a name="l00965"></a><span class="lineno"> 965</span>&#160;</div><div class="line"><a name="l00966"></a><span class="lineno"> 966</span>&#160; <span class="keywordtype">bool</span> fUpdated = <span class="keyword">false</span>;</div><div class="line"><a name="l00967"></a><span class="lineno"> 967</span>&#160; <span class="keywordflow">if</span> (!fInsertedNew)</div><div class="line"><a name="l00968"></a><span class="lineno"> 968</span>&#160; {</div><div class="line"><a name="l00969"></a><span class="lineno"> 969</span>&#160; <span class="comment">// Merge</span></div><div class="line"><a name="l00970"></a><span class="lineno"> 970</span>&#160; <span class="keywordflow">if</span> (!wtxIn.<a class="code" href="classCMerkleTx.html#aff66148b06d22c7ee555b79058211493">hashUnset</a>() &amp;&amp; wtxIn.<a class="code" href="classCMerkleTx.html#a788ee54c14b6d9706eb3737404663238">hashBlock</a> != wtx.<a class="code" href="classCMerkleTx.html#a788ee54c14b6d9706eb3737404663238">hashBlock</a>)</div><div class="line"><a name="l00971"></a><span class="lineno"> 971</span>&#160; {</div><div class="line"><a name="l00972"></a><span class="lineno"> 972</span>&#160; wtx.<a class="code" href="classCMerkleTx.html#a788ee54c14b6d9706eb3737404663238">hashBlock</a> = wtxIn.<a class="code" href="classCMerkleTx.html#a788ee54c14b6d9706eb3737404663238">hashBlock</a>;</div><div class="line"><a name="l00973"></a><span class="lineno"> 973</span>&#160; fUpdated = <span class="keyword">true</span>;</div><div class="line"><a name="l00974"></a><span class="lineno"> 974</span>&#160; }</div><div class="line"><a name="l00975"></a><span class="lineno"> 975</span>&#160; <span class="comment">// If no longer abandoned, update</span></div><div class="line"><a name="l00976"></a><span class="lineno"> 976</span>&#160; <span class="keywordflow">if</span> (wtxIn.<a class="code" href="classCMerkleTx.html#a788ee54c14b6d9706eb3737404663238">hashBlock</a>.<a class="code" href="classbase__blob.html#aba89c6722866a5850882a509d27d7bbd">IsNull</a>() &amp;&amp; wtx.<a class="code" href="classCMerkleTx.html#a0a2c5cd56d31bbe9b5b870ef6ebb441d">isAbandoned</a>())</div><div class="line"><a name="l00977"></a><span class="lineno"> 977</span>&#160; {</div><div class="line"><a name="l00978"></a><span class="lineno"> 978</span>&#160; wtx.<a class="code" href="classCMerkleTx.html#a788ee54c14b6d9706eb3737404663238">hashBlock</a> = wtxIn.<a class="code" href="classCMerkleTx.html#a788ee54c14b6d9706eb3737404663238">hashBlock</a>;</div><div class="line"><a name="l00979"></a><span class="lineno"> 979</span>&#160; fUpdated = <span class="keyword">true</span>;</div><div class="line"><a name="l00980"></a><span class="lineno"> 980</span>&#160; }</div><div class="line"><a name="l00981"></a><span class="lineno"> 981</span>&#160; <span class="keywordflow">if</span> (wtxIn.<a class="code" href="classCMerkleTx.html#a829655e70702fdf97b6e534dd3227b0b">nIndex</a> != -1 &amp;&amp; (wtxIn.<a class="code" href="classCMerkleTx.html#a829655e70702fdf97b6e534dd3227b0b">nIndex</a> != wtx.<a class="code" href="classCMerkleTx.html#a829655e70702fdf97b6e534dd3227b0b">nIndex</a>))</div><div class="line"><a name="l00982"></a><span class="lineno"> 982</span>&#160; {</div><div class="line"><a name="l00983"></a><span class="lineno"> 983</span>&#160; wtx.<a class="code" href="classCMerkleTx.html#a829655e70702fdf97b6e534dd3227b0b">nIndex</a> = wtxIn.<a class="code" href="classCMerkleTx.html#a829655e70702fdf97b6e534dd3227b0b">nIndex</a>;</div><div class="line"><a name="l00984"></a><span class="lineno"> 984</span>&#160; fUpdated = <span class="keyword">true</span>;</div><div class="line"><a name="l00985"></a><span class="lineno"> 985</span>&#160; }</div><div class="line"><a name="l00986"></a><span class="lineno"> 986</span>&#160; <span class="keywordflow">if</span> (wtxIn.<a class="code" href="classCWalletTx.html#a1598bf4a18fd05ce5eaaa0c3eb58ff28">fFromMe</a> &amp;&amp; wtxIn.<a class="code" href="classCWalletTx.html#a1598bf4a18fd05ce5eaaa0c3eb58ff28">fFromMe</a> != wtx.<a class="code" href="classCWalletTx.html#a1598bf4a18fd05ce5eaaa0c3eb58ff28">fFromMe</a>)</div><div class="line"><a name="l00987"></a><span class="lineno"> 987</span>&#160; {</div><div class="line"><a name="l00988"></a><span class="lineno"> 988</span>&#160; wtx.<a class="code" href="classCWalletTx.html#a1598bf4a18fd05ce5eaaa0c3eb58ff28">fFromMe</a> = wtxIn.<a class="code" href="classCWalletTx.html#a1598bf4a18fd05ce5eaaa0c3eb58ff28">fFromMe</a>;</div><div class="line"><a name="l00989"></a><span class="lineno"> 989</span>&#160; fUpdated = <span class="keyword">true</span>;</div><div class="line"><a name="l00990"></a><span class="lineno"> 990</span>&#160; }</div><div class="line"><a name="l00991"></a><span class="lineno"> 991</span>&#160; }</div><div class="line"><a name="l00992"></a><span class="lineno"> 992</span>&#160;</div><div class="line"><a name="l00994"></a><span class="lineno"> 994</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;AddToWallet %s %s%s\n&quot;</span>, wtxIn.<a class="code" href="classCTransaction.html#a7efd1379de830341417c0bfa23a149aa">GetHash</a>().<a class="code" href="classbase__blob.html#a7a0d25782830d8b087c4da839f3ccdeb">ToString</a>(), (fInsertedNew ? <span class="stringliteral">&quot;new&quot;</span> : <span class="stringliteral">&quot;&quot;</span>), (fUpdated ? <span class="stringliteral">&quot;update&quot;</span> : <span class="stringliteral">&quot;&quot;</span>));</div><div class="line"><a name="l00995"></a><span class="lineno"> 995</span>&#160;</div><div class="line"><a name="l00996"></a><span class="lineno"> 996</span>&#160; <span class="comment">// Write to disk</span></div><div class="line"><a name="l00997"></a><span class="lineno"> 997</span>&#160; <span class="keywordflow">if</span> (fInsertedNew || fUpdated)</div><div class="line"><a name="l00998"></a><span class="lineno"> 998</span>&#160; <span class="keywordflow">if</span> (!wtx.<a class="code" href="group__mapWallet.html#ga83fbd462d5c070f1ad041def675007d2">WriteToDisk</a>(pwalletdb))</div><div class="line"><a name="l00999"></a><span class="lineno"> 999</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>&#160;</div><div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>&#160; <span class="comment">// Break debit/credit balance caches:</span></div><div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>&#160; wtx.<a class="code" href="classCWalletTx.html#ac8a376bcb955e437489504dc596b43cf">MarkDirty</a>();</div><div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>&#160;</div><div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>&#160; <span class="comment">// Notify UI of new or updated transaction</span></div><div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>&#160; <a class="code" href="transactiontablemodel_8cpp.html#a07e9dfe08b758569cb80c2558979c164">NotifyTransactionChanged</a>(<span class="keyword">this</span>, hash, fInsertedNew ? <a class="code" href="ui__interface_8h.html#a293ba931937e469a6327b8d6b4872969ae975c67c7f3a5386de0bbde38221b32f">CT_NEW</a> : <a class="code" href="ui__interface_8h.html#a293ba931937e469a6327b8d6b4872969a5ab4035117df6ed11f4f5cd2f2d732e5">CT_UPDATED</a>);</div><div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>&#160;</div><div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>&#160; <span class="comment">// notify an external script when a wallet transaction comes in or is updated</span></div><div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>&#160; std::string strCmd = <a class="code" href="util_8cpp.html#a24f685720bf40370e5bd2a192ad50cd8">GetArg</a>(<span class="stringliteral">&quot;-walletnotify&quot;</span>, <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>&#160;</div><div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>&#160; <span class="keywordflow">if</span> ( !strCmd.empty())</div><div class="line"><a name="l01011"></a><span class="lineno"> 1011</span>&#160; {</div><div class="line"><a name="l01012"></a><span class="lineno"> 1012</span>&#160; boost::replace_all(strCmd, <span class="stringliteral">&quot;%s&quot;</span>, wtxIn.<a class="code" href="classCTransaction.html#a7efd1379de830341417c0bfa23a149aa">GetHash</a>().<a class="code" href="classbase__blob.html#ad7263503f949fb3c6c520ebb1f28e378">GetHex</a>());</div><div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>&#160; boost::thread t(<a class="code" href="util_8cpp.html#aa803aa631ab8b4bd79fa9d7b2172bf9a">runCommand</a>, strCmd); <span class="comment">// thread runs free</span></div><div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>&#160; }</div><div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>&#160;</div><div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>&#160; fAnonymizableTallyCached = <span class="keyword">false</span>;</div><div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>&#160; fAnonymizableTallyCachedNonDenom = <span class="keyword">false</span>;</div><div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>&#160;</div><div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>&#160; }</div><div class="line"><a name="l01020"></a><span class="lineno"> 1020</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>&#160;}</div><div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>&#160;</div><div class="line"><a name="l01028"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga487f7cba517d37d24e5fa422711574d9"> 1028</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#ga487f7cba517d37d24e5fa422711574d9">CWallet::AddToWalletIfInvolvingMe</a>(<span class="keyword">const</span> <a class="code" href="classCTransaction.html">CTransaction</a>&amp; tx, <span class="keyword">const</span> <a class="code" href="classCBlock.html">CBlock</a>* pblock, <span class="keywordtype">bool</span> fUpdate)</div><div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>&#160;{</div><div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>&#160; {</div><div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>&#160; <a class="code" href="sync_8h.html#acd61d0cb3b49f367728193720014aed0">AssertLockHeld</a>(cs_wallet);</div><div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>&#160;</div><div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>&#160; <span class="keywordflow">if</span> (pblock) {</div><div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="classCTxIn.html">CTxIn</a>&amp; txin, tx.<a class="code" href="classCTransaction.html#ad64447ea044ec850313696fc99412d95">vin</a>) {</div><div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>&#160; std::pair&lt;TxSpends::const_iterator, TxSpends::const_iterator&gt; range = mapTxSpends.equal_range(txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>);</div><div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>&#160; <span class="keywordflow">while</span> (range.first != range.second) {</div><div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>&#160; <span class="keywordflow">if</span> (range.first-&gt;second != tx.<a class="code" href="classCTransaction.html#a7efd1379de830341417c0bfa23a149aa">GetHash</a>()) {</div><div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;Transaction %s (in block %s) conflicts with wallet transaction %s (both spend %s:%i)\n&quot;</span>, tx.<a class="code" href="classCTransaction.html#a7efd1379de830341417c0bfa23a149aa">GetHash</a>().<a class="code" href="classbase__blob.html#a7a0d25782830d8b087c4da839f3ccdeb">ToString</a>(), pblock-&gt;<a class="code" href="classCBlockHeader.html#af0239f86a13f622a826e9eea66b2d7f3">GetHash</a>().<a class="code" href="classbase__blob.html#a7a0d25782830d8b087c4da839f3ccdeb">ToString</a>(), range.first-&gt;second.ToString(), range.first-&gt;first.hash.ToString(), range.first-&gt;first.n);</div><div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>&#160; MarkConflicted(pblock-&gt;<a class="code" href="classCBlockHeader.html#af0239f86a13f622a826e9eea66b2d7f3">GetHash</a>(), range.first-&gt;second);</div><div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>&#160; }</div><div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>&#160; range.first++;</div><div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>&#160; }</div><div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>&#160; }</div><div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>&#160; }</div><div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>&#160;</div><div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>&#160; <span class="keywordtype">bool</span> fExisted = mapWallet.count(tx.<a class="code" href="classCTransaction.html#a7efd1379de830341417c0bfa23a149aa">GetHash</a>()) != 0;</div><div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>&#160; <span class="keywordflow">if</span> (fExisted &amp;&amp; !fUpdate) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>&#160; <span class="keywordflow">if</span> (fExisted || <a class="code" href="wallet__ismine_8cpp.html#adc59cf67d903c1ba1ef225561b85bfce">IsMine</a>(tx) || IsFromMe(tx))</div><div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>&#160; {</div><div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>&#160; <a class="code" href="classCWalletTx.html">CWalletTx</a> wtx(<span class="keyword">this</span>,tx);</div><div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>&#160;</div><div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>&#160; <span class="comment">// Get merkle branch if transaction was found in a block</span></div><div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>&#160; <span class="keywordflow">if</span> (pblock)</div><div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>&#160; wtx.<a class="code" href="classCMerkleTx.html#a538ba1b6faedbb447cb45ac7019b6f47">SetMerkleBranch</a>(*pblock);</div><div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>&#160;</div><div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>&#160; <span class="comment">// Do not flush the wallet here for performance reasons</span></div><div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>&#160; <span class="comment">// this is safe, as in case of a crash, we rescan the necessary blocks on startup through our SetBestChain-mechanism</span></div><div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>&#160; <a class="code" href="classCWalletDB.html">CWalletDB</a> walletdb(strWalletFile, <span class="stringliteral">&quot;r+&quot;</span>, <span class="keyword">false</span>);</div><div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>&#160;</div><div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>&#160; <span class="keywordflow">return</span> AddToWallet(wtx, <span class="keyword">false</span>, &amp;walletdb);</div><div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>&#160; }</div><div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>&#160; }</div><div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>&#160;}</div><div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>&#160;</div><div class="line"><a name="l01066"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga9a4633bfb89da7a4afa04356a74b7970"> 1066</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#ga9a4633bfb89da7a4afa04356a74b7970">CWallet::AbandonTransaction</a>(<span class="keyword">const</span> <a class="code" href="classuint256.html">uint256</a>&amp; hashTx)</div><div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>&#160;{</div><div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>&#160; <a class="code" href="sync_8h.html#a35644e2b75a93da0cb0f6c768f34efa8">LOCK2</a>(<a class="code" href="validation_8cpp.html#a1ed8285f0fe3c6799c53265ce72552c8">cs_main</a>, cs_wallet);</div><div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>&#160;</div><div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>&#160; <span class="comment">// Do not flush the wallet here for performance reasons</span></div><div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>&#160; <a class="code" href="classCWalletDB.html">CWalletDB</a> walletdb(strWalletFile, <span class="stringliteral">&quot;r+&quot;</span>, <span class="keyword">false</span>);</div><div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>&#160;</div><div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>&#160; std::set&lt;uint256&gt; todo;</div><div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>&#160; std::set&lt;uint256&gt; done;</div><div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>&#160;</div><div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>&#160; <span class="comment">// Can&#39;t mark abandoned if confirmed or in mempool</span></div><div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>&#160; assert(mapWallet.count(hashTx));</div><div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>&#160; <a class="code" href="classCWalletTx.html">CWalletTx</a>&amp; origtx = mapWallet[hashTx];</div><div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>&#160; <span class="keywordflow">if</span> (origtx.GetDepthInMainChain() &gt; 0 || origtx.InMempool()) {</div><div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>&#160; }</div><div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>&#160;</div><div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>&#160; todo.insert(hashTx);</div><div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>&#160;</div><div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>&#160; <span class="keywordflow">while</span> (!todo.empty()) {</div><div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>&#160; <a class="code" href="classuint256.html">uint256</a> now = *todo.<a class="code" href="classbase__blob.html#aeee68e00ceeacf49086e98b661e017ff">begin</a>();</div><div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>&#160; todo.erase(now);</div><div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>&#160; done.insert(now);</div><div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>&#160; assert(mapWallet.count(now));</div><div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>&#160; <a class="code" href="classCWalletTx.html">CWalletTx</a>&amp; wtx = mapWallet[now];</div><div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>&#160; <span class="keywordtype">int</span> currentconfirm = wtx.<a class="code" href="classCMerkleTx.html#a5bf3a355593ecce5799de92d013149b1">GetDepthInMainChain</a>();</div><div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>&#160; <span class="comment">// If the orig tx was not in block, none of its spends can be</span></div><div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>&#160; assert(currentconfirm &lt;= 0);</div><div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>&#160; <span class="comment">// if (currentconfirm &lt; 0) {Tx and spends are already conflicted, no need to abandon}</span></div><div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>&#160; <span class="keywordflow">if</span> (currentconfirm == 0 &amp;&amp; !wtx.isAbandoned()) {</div><div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>&#160; <span class="comment">// If the orig tx was not in block/mempool, none of its spends can be in mempool</span></div><div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>&#160; assert(!wtx.InMempool());</div><div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>&#160; wtx.nIndex = -1;</div><div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>&#160; wtx.setAbandoned();</div><div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>&#160; wtx.MarkDirty();</div><div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>&#160; wtx.WriteToDisk(&amp;walletdb);</div><div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>&#160; <a class="code" href="transactiontablemodel_8cpp.html#a07e9dfe08b758569cb80c2558979c164">NotifyTransactionChanged</a>(<span class="keyword">this</span>, wtx.GetHash(), <a class="code" href="ui__interface_8h.html#a293ba931937e469a6327b8d6b4872969a5ab4035117df6ed11f4f5cd2f2d732e5">CT_UPDATED</a>);</div><div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>&#160; <span class="comment">// Iterate over all its outputs, and mark transactions in the wallet that spend them abandoned too</span></div><div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>&#160; TxSpends::const_iterator iter = mapTxSpends.lower_bound(<a class="code" href="classCOutPoint.html">COutPoint</a>(hashTx, 0));</div><div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>&#160; <span class="keywordflow">while</span> (iter != mapTxSpends.end() &amp;&amp; iter-&gt;first.hash == now) {</div><div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>&#160; <span class="keywordflow">if</span> (!done.count(iter-&gt;second)) {</div><div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>&#160; todo.insert(iter-&gt;second);</div><div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>&#160; }</div><div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>&#160; iter++;</div><div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>&#160; }</div><div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>&#160; <span class="comment">// If a transaction changes &#39;conflicted&#39; state, that changes the balance</span></div><div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>&#160; <span class="comment">// available of the outputs it spends. So force those to be recomputed</span></div><div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="classCTxIn.html">CTxIn</a>&amp; txin, wtx.vin)</div><div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>&#160; {</div><div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>&#160; <span class="keywordflow">if</span> (mapWallet.count(txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>.<a class="code" href="classCOutPoint.html#af131c7194a660558b0ff158f4efa7a28">hash</a>))</div><div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>&#160; mapWallet[txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>.<a class="code" href="classCOutPoint.html#af131c7194a660558b0ff158f4efa7a28">hash</a>].MarkDirty();</div><div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>&#160; }</div><div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>&#160; }</div><div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>&#160; }</div><div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>&#160;</div><div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>&#160; fAnonymizableTallyCached = <span class="keyword">false</span>;</div><div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>&#160; fAnonymizableTallyCachedNonDenom = <span class="keyword">false</span>;</div><div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>&#160;</div><div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>&#160;}</div><div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>&#160;</div><div class="line"><a name="l01127"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga009ea6afd94f2c5d560ae063883628b5"> 1127</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__mapWallet.html#ga009ea6afd94f2c5d560ae063883628b5">CWallet::MarkConflicted</a>(<span class="keyword">const</span> <a class="code" href="classuint256.html">uint256</a>&amp; hashBlock, <span class="keyword">const</span> <a class="code" href="classuint256.html">uint256</a>&amp; hashTx)</div><div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>&#160;{</div><div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>&#160; <a class="code" href="sync_8h.html#a35644e2b75a93da0cb0f6c768f34efa8">LOCK2</a>(<a class="code" href="validation_8cpp.html#a1ed8285f0fe3c6799c53265ce72552c8">cs_main</a>, cs_wallet);</div><div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>&#160;</div><div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>&#160; <span class="keywordtype">int</span> conflictconfirms = 0;</div><div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="validation_8cpp.html#a887b8e9f9fea0ea870c6987f1fd52eb6">mapBlockIndex</a>.count(hashBlock)) {</div><div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>&#160; <a class="code" href="classCBlockIndex.html">CBlockIndex</a>* pindex = <a class="code" href="validation_8cpp.html#a887b8e9f9fea0ea870c6987f1fd52eb6">mapBlockIndex</a>[hashBlock];</div><div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="validation_8cpp.html#adb31995c443ae2aef1d2f1c350de0419">chainActive</a>.<a class="code" href="classCChain.html#af1786dc229c215dea7f727c11df2c8dc">Contains</a>(pindex)) {</div><div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>&#160; conflictconfirms = -(<a class="code" href="validation_8cpp.html#adb31995c443ae2aef1d2f1c350de0419">chainActive</a>.<a class="code" href="classCChain.html#ad4758bc8872ce065a9579f77c3171d40">Height</a>() - pindex-&gt;<a class="code" href="classCBlockIndex.html#aebfc8d6b95852546760e742553d7bfd5">nHeight</a> + 1);</div><div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>&#160; }</div><div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>&#160; }</div><div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>&#160; <span class="comment">// If number of conflict confirms cannot be determined, this means</span></div><div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>&#160; <span class="comment">// that the block is still unknown or not yet part of the main chain,</span></div><div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>&#160; <span class="comment">// for example when loading the wallet during a reindex. Do nothing in that</span></div><div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>&#160; <span class="comment">// case.</span></div><div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>&#160; <span class="keywordflow">if</span> (conflictconfirms &gt;= 0)</div><div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>&#160;</div><div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>&#160; <span class="comment">// Do not flush the wallet here for performance reasons</span></div><div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>&#160; <a class="code" href="classCWalletDB.html">CWalletDB</a> walletdb(strWalletFile, <span class="stringliteral">&quot;r+&quot;</span>, <span class="keyword">false</span>);</div><div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>&#160;</div><div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>&#160; std::set&lt;uint256&gt; todo;</div><div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>&#160; std::set&lt;uint256&gt; done;</div><div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>&#160;</div><div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>&#160; todo.insert(hashTx);</div><div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>&#160;</div><div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>&#160; <span class="keywordflow">while</span> (!todo.empty()) {</div><div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>&#160; <a class="code" href="classuint256.html">uint256</a> now = *todo.<a class="code" href="classbase__blob.html#aeee68e00ceeacf49086e98b661e017ff">begin</a>();</div><div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>&#160; todo.erase(now);</div><div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>&#160; done.insert(now);</div><div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>&#160; assert(mapWallet.count(now));</div><div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>&#160; <a class="code" href="classCWalletTx.html">CWalletTx</a>&amp; wtx = mapWallet[now];</div><div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>&#160; <span class="keywordtype">int</span> currentconfirm = wtx.<a class="code" href="classCMerkleTx.html#a5bf3a355593ecce5799de92d013149b1">GetDepthInMainChain</a>();</div><div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>&#160; <span class="keywordflow">if</span> (conflictconfirms &lt; currentconfirm) {</div><div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>&#160; <span class="comment">// Block is &#39;more conflicted&#39; than current confirm; update.</span></div><div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>&#160; <span class="comment">// Mark transaction as conflicted with this block.</span></div><div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>&#160; wtx.nIndex = -1;</div><div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>&#160; wtx.hashBlock = hashBlock;</div><div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>&#160; wtx.MarkDirty();</div><div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>&#160; wtx.WriteToDisk(&amp;walletdb);</div><div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>&#160; <span class="comment">// Iterate over all its outputs, and mark transactions in the wallet that spend them conflicted too</span></div><div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>&#160; TxSpends::const_iterator iter = mapTxSpends.lower_bound(<a class="code" href="classCOutPoint.html">COutPoint</a>(now, 0));</div><div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>&#160; <span class="keywordflow">while</span> (iter != mapTxSpends.end() &amp;&amp; iter-&gt;first.hash == now) {</div><div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>&#160; <span class="keywordflow">if</span> (!done.count(iter-&gt;second)) {</div><div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>&#160; todo.insert(iter-&gt;second);</div><div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>&#160; }</div><div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>&#160; iter++;</div><div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>&#160; }</div><div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>&#160; <span class="comment">// If a transaction changes &#39;conflicted&#39; state, that changes the balance</span></div><div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>&#160; <span class="comment">// available of the outputs it spends. So force those to be recomputed</span></div><div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="classCTxIn.html">CTxIn</a>&amp; txin, wtx.vin)</div><div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>&#160; {</div><div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>&#160; <span class="keywordflow">if</span> (mapWallet.count(txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>.<a class="code" href="classCOutPoint.html#af131c7194a660558b0ff158f4efa7a28">hash</a>))</div><div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>&#160; mapWallet[txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>.<a class="code" href="classCOutPoint.html#af131c7194a660558b0ff158f4efa7a28">hash</a>].MarkDirty();</div><div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>&#160; }</div><div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>&#160; }</div><div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>&#160; }</div><div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>&#160;</div><div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>&#160; fAnonymizableTallyCached = <span class="keyword">false</span>;</div><div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>&#160; fAnonymizableTallyCachedNonDenom = <span class="keyword">false</span>;</div><div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>&#160;}</div><div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>&#160;</div><div class="line"><a name="l01189"></a><span class="lineno"><a class="line" href="group__mapWallet.html#gaac999a0c557887b371bd8d9efaa6ea93"> 1189</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__mapWallet.html#gaac999a0c557887b371bd8d9efaa6ea93">CWallet::SyncTransaction</a>(<span class="keyword">const</span> <a class="code" href="classCTransaction.html">CTransaction</a>&amp; tx, <span class="keyword">const</span> <a class="code" href="classCBlock.html">CBlock</a>* pblock)</div><div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>&#160;{</div><div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>&#160; <a class="code" href="sync_8h.html#a35644e2b75a93da0cb0f6c768f34efa8">LOCK2</a>(<a class="code" href="validation_8cpp.html#a1ed8285f0fe3c6799c53265ce72552c8">cs_main</a>, cs_wallet);</div><div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>&#160;</div><div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>&#160; <span class="keywordflow">if</span> (!AddToWalletIfInvolvingMe(tx, pblock, <span class="keyword">true</span>))</div><div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>&#160; <span class="keywordflow">return</span>; <span class="comment">// Not one of ours</span></div><div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>&#160;</div><div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>&#160; <span class="comment">// If a transaction changes &#39;conflicted&#39; state, that changes the balance</span></div><div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>&#160; <span class="comment">// available of the outputs it spends. So force those to be</span></div><div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>&#160; <span class="comment">// recomputed, also:</span></div><div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="classCTxIn.html">CTxIn</a>&amp; txin, tx.<a class="code" href="classCTransaction.html#ad64447ea044ec850313696fc99412d95">vin</a>)</div><div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>&#160; {</div><div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>&#160; <span class="keywordflow">if</span> (mapWallet.count(txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>.<a class="code" href="classCOutPoint.html#af131c7194a660558b0ff158f4efa7a28">hash</a>))</div><div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>&#160; mapWallet[txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>.<a class="code" href="classCOutPoint.html#af131c7194a660558b0ff158f4efa7a28">hash</a>].MarkDirty();</div><div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>&#160; }</div><div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>&#160;</div><div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>&#160; fAnonymizableTallyCached = <span class="keyword">false</span>;</div><div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>&#160; fAnonymizableTallyCachedNonDenom = <span class="keyword">false</span>;</div><div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>&#160;}</div><div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>&#160;</div><div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>&#160;</div><div class="line"><a name="l01210"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga4eada57edc1c443564b8cc9b853d955c"> 1210</a></span>&#160;<a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20d">isminetype</a> <a class="code" href="group__mapWallet.html#ga4eada57edc1c443564b8cc9b853d955c">CWallet::IsMine</a>(<span class="keyword">const</span> <a class="code" href="classCTxIn.html">CTxIn</a> &amp;txin)<span class="keyword"> const</span></div><div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>&#160; {</div><div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet);</div><div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>&#160; map&lt;uint256, CWalletTx&gt;::const_iterator mi = mapWallet.find(txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>.<a class="code" href="classCOutPoint.html#af131c7194a660558b0ff158f4efa7a28">hash</a>);</div><div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>&#160; <span class="keywordflow">if</span> (mi != mapWallet.end())</div><div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>&#160; {</div><div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>&#160; <span class="keyword">const</span> <a class="code" href="classCWalletTx.html">CWalletTx</a>&amp; prev = (*mi).second;</div><div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>&#160; <span class="keywordflow">if</span> (txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>.<a class="code" href="classCOutPoint.html#a1b857e3a0412ff741da2c9f8defe315c">n</a> &lt; prev.<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>.size())</div><div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>&#160; <span class="keywordflow">return</span> <a class="code" href="wallet__ismine_8cpp.html#adc59cf67d903c1ba1ef225561b85bfce">IsMine</a>(prev.<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>.<a class="code" href="classCOutPoint.html#a1b857e3a0412ff741da2c9f8defe315c">n</a>]);</div><div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>&#160; }</div><div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>&#160; }</div><div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>&#160; <span class="keywordflow">return</span> <a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20dabd6dd5ba8963fe559dda755950f29baf">ISMINE_NO</a>;</div><div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>&#160;}</div><div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>&#160;</div><div class="line"><a name="l01225"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga5ab4855aac6f4b335421944403e44d6d"> 1225</a></span>&#160;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="group__mapWallet.html#ga5ab4855aac6f4b335421944403e44d6d">CWallet::GetDebit</a>(<span class="keyword">const</span> <a class="code" href="classCTxIn.html">CTxIn</a> &amp;txin, <span class="keyword">const</span> <a class="code" href="wallet__ismine_8h.html#aaa5e1639d76aef50f70532acc3302c4b">isminefilter</a>&amp; filter)<span class="keyword"> const</span></div><div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>&#160; {</div><div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet);</div><div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>&#160; map&lt;uint256, CWalletTx&gt;::const_iterator mi = mapWallet.find(txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>.<a class="code" href="classCOutPoint.html#af131c7194a660558b0ff158f4efa7a28">hash</a>);</div><div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>&#160; <span class="keywordflow">if</span> (mi != mapWallet.end())</div><div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>&#160; {</div><div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>&#160; <span class="keyword">const</span> <a class="code" href="classCWalletTx.html">CWalletTx</a>&amp; prev = (*mi).second;</div><div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>&#160; <span class="keywordflow">if</span> (txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>.<a class="code" href="classCOutPoint.html#a1b857e3a0412ff741da2c9f8defe315c">n</a> &lt; prev.<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>.size())</div><div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="wallet__ismine_8cpp.html#adc59cf67d903c1ba1ef225561b85bfce">IsMine</a>(prev.<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>.<a class="code" href="classCOutPoint.html#a1b857e3a0412ff741da2c9f8defe315c">n</a>]) &amp; filter)</div><div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>&#160; <span class="keywordflow">return</span> prev.<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>.<a class="code" href="classCOutPoint.html#a1b857e3a0412ff741da2c9f8defe315c">n</a>].nValue;</div><div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>&#160; }</div><div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>&#160; }</div><div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>&#160;}</div><div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>&#160;</div><div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>&#160;<span class="comment">// Recursively determine the rounds of a given input (How deep is the PrivateSend chain for a given input)</span></div><div class="line"><a name="l01242"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga50bbe9588d1d53acb5e85240de353708"> 1242</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__mapWallet.html#ga50bbe9588d1d53acb5e85240de353708">CWallet::GetRealOutpointPrivateSendRounds</a>(<span class="keyword">const</span> <a class="code" href="classCOutPoint.html">COutPoint</a>&amp; outpoint, <span class="keywordtype">int</span> nRounds)<span class="keyword"> const</span></div><div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>&#160; <span class="keyword">static</span> std::map&lt;uint256, CMutableTransaction&gt; mDenomWtxes;</div><div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>&#160;</div><div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>&#160; <span class="keywordflow">if</span>(nRounds &gt;= 16) <span class="keywordflow">return</span> 15; <span class="comment">// 16 rounds max</span></div><div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>&#160;</div><div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>&#160; <a class="code" href="classuint256.html">uint256</a> hash = outpoint.<a class="code" href="classCOutPoint.html#af131c7194a660558b0ff158f4efa7a28">hash</a>;</div><div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nout = outpoint.<a class="code" href="classCOutPoint.html#a1b857e3a0412ff741da2c9f8defe315c">n</a>;</div><div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>&#160;</div><div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>&#160; <span class="keyword">const</span> <a class="code" href="classCWalletTx.html">CWalletTx</a>* wtx = GetWalletTx(hash);</div><div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>&#160; <span class="keywordflow">if</span>(wtx != NULL)</div><div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>&#160; {</div><div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>&#160; std::map&lt;uint256, CMutableTransaction&gt;::const_iterator mdwi = mDenomWtxes.find(hash);</div><div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>&#160; <span class="keywordflow">if</span> (mdwi == mDenomWtxes.end()) {</div><div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>&#160; <span class="comment">// not known yet, let&#39;s add it</span></div><div class="line"><a name="l01257"></a><span class="lineno"> 1257</span>&#160; <a class="code" href="util_8h.html#aab1f837a2366f424bdc996fdf6352171">LogPrint</a>(<span class="stringliteral">&quot;privatesend&quot;</span>, <span class="stringliteral">&quot;GetRealOutpointPrivateSendRounds INSERTING %s\n&quot;</span>, hash.<a class="code" href="classbase__blob.html#a7a0d25782830d8b087c4da839f3ccdeb">ToString</a>());</div><div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>&#160; mDenomWtxes[hash] = <a class="code" href="structCMutableTransaction.html">CMutableTransaction</a>(*wtx);</div><div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(mDenomWtxes[hash].vout[nout].nRounds != -10) {</div><div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>&#160; <span class="comment">// found and it&#39;s not an initial value, just return it</span></div><div class="line"><a name="l01261"></a><span class="lineno"> 1261</span>&#160; <span class="keywordflow">return</span> mDenomWtxes[hash].vout[nout].nRounds;</div><div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>&#160; }</div><div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>&#160;</div><div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>&#160;</div><div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>&#160; <span class="comment">// bounds check</span></div><div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>&#160; <span class="keywordflow">if</span> (nout &gt;= wtx-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>.size()) {</div><div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>&#160; <span class="comment">// should never actually hit this</span></div><div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>&#160; <a class="code" href="util_8h.html#aab1f837a2366f424bdc996fdf6352171">LogPrint</a>(<span class="stringliteral">&quot;privatesend&quot;</span>, <span class="stringliteral">&quot;GetRealOutpointPrivateSendRounds UPDATED %s %3d %3d\n&quot;</span>, hash.<a class="code" href="classbase__blob.html#a7a0d25782830d8b087c4da839f3ccdeb">ToString</a>(), nout, -4);</div><div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>&#160; <span class="keywordflow">return</span> -4;</div><div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>&#160; }</div><div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>&#160;</div><div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>&#160; <span class="keywordflow">if</span> (IsCollateralAmount(wtx-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[nout].nValue)) {</div><div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>&#160; mDenomWtxes[hash].vout[nout].nRounds = -3;</div><div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>&#160; <a class="code" href="util_8h.html#aab1f837a2366f424bdc996fdf6352171">LogPrint</a>(<span class="stringliteral">&quot;privatesend&quot;</span>, <span class="stringliteral">&quot;GetRealOutpointPrivateSendRounds UPDATED %s %3d %3d\n&quot;</span>, hash.<a class="code" href="classbase__blob.html#a7a0d25782830d8b087c4da839f3ccdeb">ToString</a>(), nout, mDenomWtxes[hash].vout[nout].nRounds);</div><div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>&#160; <span class="keywordflow">return</span> mDenomWtxes[hash].vout[nout].nRounds;</div><div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>&#160; }</div><div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>&#160;</div><div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>&#160; <span class="comment">//make sure the final output is non-denominate</span></div><div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>&#160; <span class="keywordflow">if</span> (!IsDenominatedAmount(wtx-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[nout].nValue)) { <span class="comment">//NOT DENOM</span></div><div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>&#160; mDenomWtxes[hash].vout[nout].nRounds = -2;</div><div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>&#160; <a class="code" href="util_8h.html#aab1f837a2366f424bdc996fdf6352171">LogPrint</a>(<span class="stringliteral">&quot;privatesend&quot;</span>, <span class="stringliteral">&quot;GetRealOutpointPrivateSendRounds UPDATED %s %3d %3d\n&quot;</span>, hash.<a class="code" href="classbase__blob.html#a7a0d25782830d8b087c4da839f3ccdeb">ToString</a>(), nout, mDenomWtxes[hash].vout[nout].nRounds);</div><div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>&#160; <span class="keywordflow">return</span> mDenomWtxes[hash].vout[nout].nRounds;</div><div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>&#160; }</div><div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>&#160;</div><div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>&#160; <span class="keywordtype">bool</span> fAllDenoms = <span class="keyword">true</span>;</div><div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>&#160; BOOST_FOREACH(<a class="code" href="classCTxOut.html">CTxOut</a> <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>, wtx-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>) {</div><div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>&#160; fAllDenoms = fAllDenoms &amp;&amp; IsDenominatedAmount(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.nValue);</div><div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>&#160; }</div><div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>&#160;</div><div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>&#160; <span class="comment">// this one is denominated but there is another non-denominated output found in the same tx</span></div><div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>&#160; <span class="keywordflow">if</span> (!fAllDenoms) {</div><div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>&#160; mDenomWtxes[hash].vout[nout].nRounds = 0;</div><div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>&#160; <a class="code" href="util_8h.html#aab1f837a2366f424bdc996fdf6352171">LogPrint</a>(<span class="stringliteral">&quot;privatesend&quot;</span>, <span class="stringliteral">&quot;GetRealOutpointPrivateSendRounds UPDATED %s %3d %3d\n&quot;</span>, hash.<a class="code" href="classbase__blob.html#a7a0d25782830d8b087c4da839f3ccdeb">ToString</a>(), nout, mDenomWtxes[hash].vout[nout].nRounds);</div><div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>&#160; <span class="keywordflow">return</span> mDenomWtxes[hash].vout[nout].nRounds;</div><div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>&#160; }</div><div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>&#160;</div><div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>&#160; <span class="keywordtype">int</span> nShortest = -10; <span class="comment">// an initial value, should be no way to get this by calculations</span></div><div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>&#160; <span class="keywordtype">bool</span> fDenomFound = <span class="keyword">false</span>;</div><div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>&#160; <span class="comment">// only denoms here so let&#39;s look up</span></div><div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>&#160; BOOST_FOREACH(<a class="code" href="classCTxIn.html">CTxIn</a> txinNext, wtx-&gt;<a class="code" href="classCTransaction.html#ad64447ea044ec850313696fc99412d95">vin</a>) {</div><div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="wallet__ismine_8cpp.html#adc59cf67d903c1ba1ef225561b85bfce">IsMine</a>(txinNext)) {</div><div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>&#160; <span class="keywordtype">int</span> <a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a> = GetRealOutpointPrivateSendRounds(txinNext.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>, nRounds + 1);</div><div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>&#160; <span class="comment">// denom found, find the shortest chain or initially assign nShortest with the first found value</span></div><div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a> &gt;= 0 &amp;&amp; (<a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a> &lt; nShortest || nShortest == -10)) {</div><div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>&#160; nShortest = <a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a>;</div><div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>&#160; fDenomFound = <span class="keyword">true</span>;</div><div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>&#160; }</div><div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>&#160; }</div><div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>&#160; }</div><div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>&#160; mDenomWtxes[hash].vout[nout].nRounds = fDenomFound</div><div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>&#160; ? (nShortest &gt;= 15 ? 16 : nShortest + 1) <span class="comment">// good, we a +1 to the shortest one but only 16 rounds max allowed</span></div><div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>&#160; : 0; <span class="comment">// too bad, we are the fist one in that chain</span></div><div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>&#160; <a class="code" href="util_8h.html#aab1f837a2366f424bdc996fdf6352171">LogPrint</a>(<span class="stringliteral">&quot;privatesend&quot;</span>, <span class="stringliteral">&quot;GetRealOutpointPrivateSendRounds UPDATED %s %3d %3d\n&quot;</span>, hash.<a class="code" href="classbase__blob.html#a7a0d25782830d8b087c4da839f3ccdeb">ToString</a>(), nout, mDenomWtxes[hash].vout[nout].nRounds);</div><div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>&#160; <span class="keywordflow">return</span> mDenomWtxes[hash].vout[nout].nRounds;</div><div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>&#160; }</div><div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>&#160;</div><div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>&#160; <span class="keywordflow">return</span> nRounds - 1;</div><div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>&#160;}</div><div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>&#160;</div><div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>&#160;<span class="comment">// respect current settings</span></div><div class="line"><a name="l01321"></a><span class="lineno"><a class="line" href="group__mapWallet.html#gaa149287cc5463b561e55c24f91353649"> 1321</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__mapWallet.html#gaa149287cc5463b561e55c24f91353649">CWallet::GetOutpointPrivateSendRounds</a>(<span class="keyword">const</span> <a class="code" href="classCOutPoint.html">COutPoint</a>&amp; outpoint)<span class="keyword"> const</span></div><div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet);</div><div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>&#160; <span class="keywordtype">int</span> realPrivateSendRounds = GetRealOutpointPrivateSendRounds(outpoint, 0);</div><div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>&#160; <span class="keywordflow">return</span> realPrivateSendRounds &gt; <a class="code" href="privatesend-client_8cpp.html#ae36d24fafeb216cd61fb55e3475154a3">privateSendClient</a>.<a class="code" href="classCPrivateSendClient.html#a9eaafa61ebf8cf727cdd2b4ffb69cad3">nPrivateSendRounds</a> ? <a class="code" href="privatesend-client_8cpp.html#ae36d24fafeb216cd61fb55e3475154a3">privateSendClient</a>.<a class="code" href="classCPrivateSendClient.html#a9eaafa61ebf8cf727cdd2b4ffb69cad3">nPrivateSendRounds</a> : realPrivateSendRounds;</div><div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>&#160;}</div><div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>&#160;</div><div class="line"><a name="l01328"></a><span class="lineno"><a class="line" href="group__mapWallet.html#gaa19d4251c40cfd00f55c0895891d5028"> 1328</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#gaa19d4251c40cfd00f55c0895891d5028">CWallet::IsDenominated</a>(<span class="keyword">const</span> <a class="code" href="classCOutPoint.html">COutPoint</a>&amp; outpoint)<span class="keyword"> const</span></div><div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet);</div><div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>&#160;</div><div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>&#160; map&lt;uint256, CWalletTx&gt;::const_iterator mi = mapWallet.find(outpoint.<a class="code" href="classCOutPoint.html#af131c7194a660558b0ff158f4efa7a28">hash</a>);</div><div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>&#160; <span class="keywordflow">if</span> (mi != mapWallet.end()) {</div><div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>&#160; <span class="keyword">const</span> <a class="code" href="classCWalletTx.html">CWalletTx</a>&amp; prev = (*mi).second;</div><div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>&#160; <span class="keywordflow">if</span> (outpoint.<a class="code" href="classCOutPoint.html#a1b857e3a0412ff741da2c9f8defe315c">n</a> &lt; prev.<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>.size()) {</div><div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>&#160; <span class="keywordflow">return</span> IsDenominatedAmount(prev.<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[outpoint.<a class="code" href="classCOutPoint.html#a1b857e3a0412ff741da2c9f8defe315c">n</a>].nValue);</div><div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>&#160; }</div><div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>&#160; }</div><div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>&#160;</div><div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>&#160;}</div><div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>&#160;</div><div class="line"><a name="l01343"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga070aa9135ca31d630fa798a868c0b59c"> 1343</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#ga070aa9135ca31d630fa798a868c0b59c">CWallet::IsDenominatedAmount</a>(<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nInputAmount)<span class="keyword"> const</span></div><div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>&#160; BOOST_FOREACH(<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> d, <a class="code" href="classCPrivateSend.html#a43229314704738ac10f7daacb34ee3c1">CPrivateSend::GetStandardDenominations</a>())</div><div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>&#160; <span class="keywordflow">if</span>(nInputAmount == d)</div><div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>&#160;}</div><div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>&#160;</div><div class="line"><a name="l01351"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga01e86e06b2dfbff1560fc5a1b9af384e"> 1351</a></span>&#160;<a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20d">isminetype</a> <a class="code" href="group__mapWallet.html#ga4eada57edc1c443564b8cc9b853d955c">CWallet::IsMine</a>(<span class="keyword">const</span> <a class="code" href="classCTxOut.html">CTxOut</a>&amp; txout)<span class="keyword"> const</span></div><div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>&#160; <a class="code" href="wallet__ismine_8cpp.html#adc59cf67d903c1ba1ef225561b85bfce">return ::IsMine</a>(*<span class="keyword">this</span>, txout.<a class="code" href="classCTxOut.html#a25bf3f2f4befb22a6a0be45784fe57e2">scriptPubKey</a>);</div><div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>&#160;}</div><div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>&#160;</div><div class="line"><a name="l01356"></a><span class="lineno"><a class="line" href="group__mapWallet.html#gaa60b69c7d4ea6063ed83b13d7c6fe695"> 1356</a></span>&#160;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="group__mapWallet.html#gaa60b69c7d4ea6063ed83b13d7c6fe695">CWallet::GetCredit</a>(<span class="keyword">const</span> <a class="code" href="classCTxOut.html">CTxOut</a>&amp; txout, <span class="keyword">const</span> <a class="code" href="wallet__ismine_8h.html#aaa5e1639d76aef50f70532acc3302c4b">isminefilter</a>&amp; filter)<span class="keyword"> const</span></div><div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="amount_8h.html#a12db56a9a1c931941f0943ecbb278aae">MoneyRange</a>(txout.<a class="code" href="classCTxOut.html#ab278ecef3817a972cb6bc5360d13f197">nValue</a>))</div><div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;CWallet::GetCredit(): value out of range&quot;</span>);</div><div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>&#160; <span class="keywordflow">return</span> ((<a class="code" href="wallet__ismine_8cpp.html#adc59cf67d903c1ba1ef225561b85bfce">IsMine</a>(txout) &amp; filter) ? txout.<a class="code" href="classCTxOut.html#ab278ecef3817a972cb6bc5360d13f197">nValue</a> : 0);</div><div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>&#160;}</div><div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>&#160;</div><div class="line"><a name="l01363"></a><span class="lineno"><a class="line" href="group__mapWallet.html#gaba1c6108b7d2d3800dd487bab4c4c82e"> 1363</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#gaba1c6108b7d2d3800dd487bab4c4c82e">CWallet::IsChange</a>(<span class="keyword">const</span> <a class="code" href="classCTxOut.html">CTxOut</a>&amp; txout)<span class="keyword"> const</span></div><div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>&#160; <span class="comment">// TODO: fix handling of &#39;change&#39; outputs. The assumption is that any</span></div><div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>&#160; <span class="comment">// payment to a script that is ours, but is not in the address book</span></div><div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>&#160; <span class="comment">// is change. That assumption is likely to break when we implement multisignature</span></div><div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>&#160; <span class="comment">// wallets that return change back into a multi-signature-protected address;</span></div><div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>&#160; <span class="comment">// a better way of identifying which outputs are &#39;the send&#39; and which are</span></div><div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>&#160; <span class="comment">// &#39;the change&#39; will need to be implemented (maybe extend CWalletTx to remember</span></div><div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>&#160; <span class="comment">// which output, if any, was change).</span></div><div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>&#160; <span class="keywordflow">if</span> (::<a class="code" href="wallet__ismine_8cpp.html#adc59cf67d903c1ba1ef225561b85bfce">IsMine</a>(*<span class="keyword">this</span>, txout.<a class="code" href="classCTxOut.html#a25bf3f2f4befb22a6a0be45784fe57e2">scriptPubKey</a>))</div><div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>&#160; {</div><div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>&#160; <a class="code" href="standard_8h.html#a50f712c3d9a0d2f85ae464497dd9cff8">CTxDestination</a> address;</div><div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="standard_8cpp.html#a951f7e601746ae076afdf3169ecca2fc">ExtractDestination</a>(txout.<a class="code" href="classCTxOut.html#a25bf3f2f4befb22a6a0be45784fe57e2">scriptPubKey</a>, address))</div><div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>&#160;</div><div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet);</div><div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>&#160; <span class="keywordflow">if</span> (!mapAddressBook.count(address))</div><div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>&#160; }</div><div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>&#160;}</div><div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>&#160;</div><div class="line"><a name="l01385"></a><span class="lineno"><a class="line" href="group__mapWallet.html#gac1abe6ee00d6a8f20e92e164c423a6d5"> 1385</a></span>&#160;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="group__mapWallet.html#gac1abe6ee00d6a8f20e92e164c423a6d5">CWallet::GetChange</a>(<span class="keyword">const</span> <a class="code" href="classCTxOut.html">CTxOut</a>&amp; txout)<span class="keyword"> const</span></div><div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="amount_8h.html#a12db56a9a1c931941f0943ecbb278aae">MoneyRange</a>(txout.<a class="code" href="classCTxOut.html#ab278ecef3817a972cb6bc5360d13f197">nValue</a>))</div><div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;CWallet::GetChange(): value out of range&quot;</span>);</div><div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>&#160; <span class="keywordflow">return</span> (IsChange(txout) ? txout.<a class="code" href="classCTxOut.html#ab278ecef3817a972cb6bc5360d13f197">nValue</a> : 0);</div><div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>&#160;}</div><div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>&#160;</div><div class="line"><a name="l01392"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga0a4476be9fde3845394c1514e69e5ff7"> 1392</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__mapWallet.html#ga0a4476be9fde3845394c1514e69e5ff7">CWallet::GenerateNewHDChain</a>()</div><div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>&#160;{</div><div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>&#160; <a class="code" href="classCHDChain.html">CHDChain</a> newHdChain;</div><div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>&#160;</div><div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>&#160; std::string strSeed = <a class="code" href="util_8cpp.html#a24f685720bf40370e5bd2a192ad50cd8">GetArg</a>(<span class="stringliteral">&quot;-hdseed&quot;</span>, <span class="stringliteral">&quot;not hex&quot;</span>);</div><div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>&#160;</div><div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="util_8cpp.html#a0502b74b88db99500ee21dcb446311e5">mapArgs</a>.count(<span class="stringliteral">&quot;-hdseed&quot;</span>) &amp;&amp; <a class="code" href="utilstrencodings_8cpp.html#aa4e3553d2b2fe693c106f4296685f75c">IsHex</a>(strSeed)) {</div><div class="line"><a name="l01399"></a><span class="lineno"> 1399</span>&#160; std::vector&lt;unsigned char&gt; vchSeed = <a class="code" href="utilstrencodings_8cpp.html#abea395175fbc4a788ed0f0a41710b8a7">ParseHex</a>(strSeed);</div><div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>&#160; <span class="keywordflow">if</span> (!newHdChain.<a class="code" href="classCHDChain.html#a5674417d85794b38fd7ee42911dcce77">SetSeed</a>(<a class="code" href="secure_8h.html#a74df98445c5299c9e987447c7b123e55">SecureVector</a>(vchSeed.begin(), vchSeed.end()), <span class="keyword">true</span>))</div><div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(std::string(__func__) + <span class="stringliteral">&quot;: SetSeed failed&quot;</span>);</div><div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>&#160; }</div><div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="util_8cpp.html#a0502b74b88db99500ee21dcb446311e5">mapArgs</a>.count(<span class="stringliteral">&quot;-hdseed&quot;</span>) &amp;&amp; !<a class="code" href="utilstrencodings_8cpp.html#aa4e3553d2b2fe693c106f4296685f75c">IsHex</a>(strSeed))</div><div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;CWallet::GenerateNewHDChain -- Incorrect seed, generating random one instead\n&quot;</span>);</div><div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>&#160;</div><div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>&#160; <span class="comment">// NOTE: empty mnemonic means &quot;generate a new one for me&quot;</span></div><div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>&#160; std::string strMnemonic = <a class="code" href="util_8cpp.html#a24f685720bf40370e5bd2a192ad50cd8">GetArg</a>(<span class="stringliteral">&quot;-mnemonic&quot;</span>, <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>&#160; <span class="comment">// NOTE: default mnemonic passphrase is an empty string</span></div><div class="line"><a name="l01410"></a><span class="lineno"> 1410</span>&#160; std::string strMnemonicPassphrase = <a class="code" href="util_8cpp.html#a24f685720bf40370e5bd2a192ad50cd8">GetArg</a>(<span class="stringliteral">&quot;-mnemonicpassphrase&quot;</span>, <span class="stringliteral">&quot;&quot;</span>);</div><div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>&#160;</div><div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>&#160; <a class="code" href="secure_8h.html#a74df98445c5299c9e987447c7b123e55">SecureVector</a> vchMnemonic(strMnemonic.begin(), strMnemonic.end());</div><div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>&#160; <a class="code" href="secure_8h.html#a74df98445c5299c9e987447c7b123e55">SecureVector</a> vchMnemonicPassphrase(strMnemonicPassphrase.begin(), strMnemonicPassphrase.end());</div><div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>&#160;</div><div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>&#160; <span class="keywordflow">if</span> (!newHdChain.<a class="code" href="classCHDChain.html#a94873f2f4a63b5cdaf4d22f9714f2fe4">SetMnemonic</a>(vchMnemonic, vchMnemonicPassphrase, <span class="keyword">true</span>))</div><div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(std::string(__func__) + <span class="stringliteral">&quot;: SetMnemonic failed&quot;</span>);</div><div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>&#160; }</div><div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>&#160; newHdChain.<a class="code" href="classCHDChain.html#ada5366bcf86ad715b0e0fed80733e35b">Debug</a>(__func__);</div><div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>&#160;</div><div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>&#160; <span class="keywordflow">if</span> (!SetHDChain(newHdChain, <span class="keyword">false</span>))</div><div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(std::string(__func__) + <span class="stringliteral">&quot;: SetHDChain failed&quot;</span>);</div><div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>&#160;</div><div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>&#160; <span class="comment">// clean up</span></div><div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>&#160; <a class="code" href="util_8cpp.html#a0502b74b88db99500ee21dcb446311e5">mapArgs</a>.erase(<span class="stringliteral">&quot;-hdseed&quot;</span>);</div><div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>&#160; <a class="code" href="util_8cpp.html#a0502b74b88db99500ee21dcb446311e5">mapArgs</a>.erase(<span class="stringliteral">&quot;-mnemonic&quot;</span>);</div><div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>&#160; <a class="code" href="util_8cpp.html#a0502b74b88db99500ee21dcb446311e5">mapArgs</a>.erase(<span class="stringliteral">&quot;-mnemonicpassphrase&quot;</span>);</div><div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>&#160;}</div><div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>&#160;</div><div class="line"><a name="l01429"></a><span class="lineno"><a class="line" href="group__mapWallet.html#gac129c3bbc19abfc6986fefab1ce35aa0"> 1429</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#gac129c3bbc19abfc6986fefab1ce35aa0">CWallet::SetHDChain</a>(<span class="keyword">const</span> <a class="code" href="classCHDChain.html">CHDChain</a>&amp; chain, <span class="keywordtype">bool</span> memonly)</div><div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>&#160;{</div><div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet);</div><div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>&#160;</div><div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classCCryptoKeyStore.html#aa83082b7cdde407247666d9fd73dd492">CCryptoKeyStore::SetHDChain</a>(chain))</div><div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>&#160;</div><div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>&#160; <span class="keywordflow">if</span> (!memonly &amp;&amp; !<a class="code" href="classCWalletDB.html">CWalletDB</a>(strWalletFile).WriteHDChain(chain))</div><div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(std::string(__func__) + <span class="stringliteral">&quot;: WriteHDChain failed&quot;</span>);</div><div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>&#160;</div><div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>&#160;}</div><div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>&#160;</div><div class="line"><a name="l01442"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga60b3bce6e7e2c091287085b2facb08d0"> 1442</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#ga60b3bce6e7e2c091287085b2facb08d0">CWallet::SetCryptedHDChain</a>(<span class="keyword">const</span> <a class="code" href="classCHDChain.html">CHDChain</a>&amp; chain, <span class="keywordtype">bool</span> memonly)</div><div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>&#160;{</div><div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet);</div><div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>&#160;</div><div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classCCryptoKeyStore.html#a289f2c42d460d338b632ec63aeb06e47">CCryptoKeyStore::SetCryptedHDChain</a>(chain))</div><div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>&#160;</div><div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>&#160; <span class="keywordflow">if</span> (!memonly) {</div><div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>&#160; <span class="keywordflow">if</span> (!fFileBacked)</div><div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>&#160; <span class="keywordflow">if</span> (pwalletdbEncryption) {</div><div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>&#160; <span class="keywordflow">if</span> (!pwalletdbEncryption-&gt;WriteCryptedHDChain(chain))</div><div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(std::string(__func__) + <span class="stringliteral">&quot;: WriteCryptedHDChain failed&quot;</span>);</div><div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classCWalletDB.html">CWalletDB</a>(strWalletFile).<a class="code" href="classCWalletDB.html#a2d07148c367682758ec8fd8f0e8e9ef5">WriteCryptedHDChain</a>(chain))</div><div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(std::string(__func__) + <span class="stringliteral">&quot;: WriteCryptedHDChain failed&quot;</span>);</div><div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>&#160; }</div><div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>&#160; }</div><div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>&#160;</div><div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>&#160;}</div><div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>&#160;</div><div class="line"><a name="l01464"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga2e1bee3d382fc3553be7525b80ed7c99"> 1464</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#ga2e1bee3d382fc3553be7525b80ed7c99">CWallet::GetDecryptedHDChain</a>(<a class="code" href="classCHDChain.html">CHDChain</a>&amp; hdChainRet)</div><div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>&#160;{</div><div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet);</div><div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>&#160;</div><div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>&#160; <a class="code" href="classCHDChain.html">CHDChain</a> hdChainTmp;</div><div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>&#160; <span class="keywordflow">if</span> (!GetHDChain(hdChainTmp)) {</div><div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>&#160; }</div><div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>&#160;</div><div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>&#160; <span class="keywordflow">if</span> (!DecryptHDChain(hdChainTmp))</div><div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>&#160;</div><div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>&#160; <span class="comment">// make sure seed matches this chain</span></div><div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>&#160; <span class="keywordflow">if</span> (hdChainTmp.<a class="code" href="classCHDChain.html#a37c75884a3ef7c7ff435aae648c3c6de">GetID</a>() != hdChainTmp.<a class="code" href="classCHDChain.html#a4593a3c0b9eb1918f0c3820f1a54b5f4">GetSeedHash</a>())</div><div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>&#160;</div><div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>&#160; hdChainRet = hdChainTmp;</div><div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>&#160;</div><div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>&#160;}</div><div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>&#160;</div><div class="line"><a name="l01485"></a><span class="lineno"><a class="line" href="group__mapWallet.html#gab357b83eabbf66ccfbccb9e658b47c72"> 1485</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#gab357b83eabbf66ccfbccb9e658b47c72">CWallet::IsHDEnabled</a>()</div><div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>&#160;{</div><div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>&#160; <a class="code" href="classCHDChain.html">CHDChain</a> hdChainCurrent;</div><div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>&#160; <span class="keywordflow">return</span> GetHDChain(hdChainCurrent);</div><div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>&#160;}</div><div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>&#160;</div><div class="line"><a name="l01491"></a><span class="lineno"><a class="line" href="group__mapWallet.html#gaacddba6a399e67f598d043a369d1ba7c"> 1491</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#ga4eada57edc1c443564b8cc9b853d955c">CWallet::IsMine</a>(<span class="keyword">const</span> <a class="code" href="classCTransaction.html">CTransaction</a>&amp; tx)<span class="keyword"> const</span></div><div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="classCTxOut.html">CTxOut</a>&amp; txout, tx.<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>)</div><div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="wallet__ismine_8cpp.html#adc59cf67d903c1ba1ef225561b85bfce">IsMine</a>(txout))</div><div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>&#160;}</div><div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>&#160;</div><div class="line"><a name="l01499"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga553ae4c21d71d887c392ae7b147f9dd0"> 1499</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#ga553ae4c21d71d887c392ae7b147f9dd0">CWallet::IsFromMe</a>(<span class="keyword">const</span> <a class="code" href="classCTransaction.html">CTransaction</a>&amp; tx)<span class="keyword"> const</span></div><div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>&#160; <span class="keywordflow">return</span> (GetDebit(tx, <a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20da1fe9e47b4c162fd9a1779e59a11dd067">ISMINE_ALL</a>) &gt; 0);</div><div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>&#160;}</div><div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>&#160;</div><div class="line"><a name="l01504"></a><span class="lineno"><a class="line" href="group__mapWallet.html#gab443cb2d3a96e324587625e6b41ebcbf"> 1504</a></span>&#160;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="group__mapWallet.html#ga5ab4855aac6f4b335421944403e44d6d">CWallet::GetDebit</a>(<span class="keyword">const</span> <a class="code" href="classCTransaction.html">CTransaction</a>&amp; tx, <span class="keyword">const</span> <a class="code" href="wallet__ismine_8h.html#aaa5e1639d76aef50f70532acc3302c4b">isminefilter</a>&amp; filter)<span class="keyword"> const</span></div><div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nDebit = 0;</div><div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="classCTxIn.html">CTxIn</a>&amp; txin, tx.<a class="code" href="classCTransaction.html#ad64447ea044ec850313696fc99412d95">vin</a>)</div><div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>&#160; {</div><div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>&#160; nDebit += GetDebit(txin, filter);</div><div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="amount_8h.html#a12db56a9a1c931941f0943ecbb278aae">MoneyRange</a>(nDebit))</div><div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;CWallet::GetDebit(): value out of range&quot;</span>);</div><div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>&#160; }</div><div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>&#160; <span class="keywordflow">return</span> nDebit;</div><div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>&#160;}</div><div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>&#160;</div><div class="line"><a name="l01516"></a><span class="lineno"><a class="line" href="group__mapWallet.html#gae85ae49c421a405fe091ad4afa839241"> 1516</a></span>&#160;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="group__mapWallet.html#gaa60b69c7d4ea6063ed83b13d7c6fe695">CWallet::GetCredit</a>(<span class="keyword">const</span> <a class="code" href="classCTransaction.html">CTransaction</a>&amp; tx, <span class="keyword">const</span> <a class="code" href="wallet__ismine_8h.html#aaa5e1639d76aef50f70532acc3302c4b">isminefilter</a>&amp; filter)<span class="keyword"> const</span></div><div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nCredit = 0;</div><div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="classCTxOut.html">CTxOut</a>&amp; txout, tx.<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>)</div><div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>&#160; {</div><div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>&#160; nCredit += GetCredit(txout, filter);</div><div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="amount_8h.html#a12db56a9a1c931941f0943ecbb278aae">MoneyRange</a>(nCredit))</div><div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;CWallet::GetCredit(): value out of range&quot;</span>);</div><div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>&#160; }</div><div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>&#160; <span class="keywordflow">return</span> nCredit;</div><div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>&#160;}</div><div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>&#160;</div><div class="line"><a name="l01528"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga3e9a088a7b6b77edd7a0f80ed246eb58"> 1528</a></span>&#160;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="group__mapWallet.html#gac1abe6ee00d6a8f20e92e164c423a6d5">CWallet::GetChange</a>(<span class="keyword">const</span> <a class="code" href="classCTransaction.html">CTransaction</a>&amp; tx)<span class="keyword"> const</span></div><div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nChange = 0;</div><div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="classCTxOut.html">CTxOut</a>&amp; txout, tx.<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>)</div><div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>&#160; {</div><div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>&#160; nChange += GetChange(txout);</div><div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="amount_8h.html#a12db56a9a1c931941f0943ecbb278aae">MoneyRange</a>(nChange))</div><div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;CWallet::GetChange(): value out of range&quot;</span>);</div><div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>&#160; }</div><div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>&#160; <span class="keywordflow">return</span> nChange;</div><div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>&#160;}</div><div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>&#160;</div><div class="line"><a name="l01540"></a><span class="lineno"><a class="line" href="group__mapWallet.html#gab94368cf0553687d8f1fec5d2aaa1457"> 1540</a></span>&#160;int64_t <a class="code" href="group__mapWallet.html#gab94368cf0553687d8f1fec5d2aaa1457">CWalletTx::GetTxTime</a>()<span class="keyword"> const</span></div><div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>&#160; int64_t <a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a> = nTimeSmart;</div><div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a> ? <a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a> : nTimeReceived;</div><div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>&#160;}</div><div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>&#160;</div><div class="line"><a name="l01546"></a><span class="lineno"><a class="line" href="group__mapWallet.html#gafd3ca5b54d33038a06189f3f27a97910"> 1546</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__mapWallet.html#gafd3ca5b54d33038a06189f3f27a97910">CWalletTx::GetRequestCount</a>()<span class="keyword"> const</span></div><div class="line"><a name="l01547"></a><span class="lineno"> 1547</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>&#160; <span class="comment">// Returns -1 if it wasn&#39;t being tracked</span></div><div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>&#160; <span class="keywordtype">int</span> nRequests = -1;</div><div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>&#160; {</div><div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(pwallet-&gt;cs_wallet);</div><div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>&#160; <span class="keywordflow">if</span> (IsCoinBase())</div><div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>&#160; {</div><div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>&#160; <span class="comment">// Generated block</span></div><div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>&#160; <span class="keywordflow">if</span> (!hashUnset())</div><div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>&#160; {</div><div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>&#160; map&lt;uint256, int&gt;::const_iterator mi = pwallet-&gt;mapRequestCount.find(hashBlock);</div><div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>&#160; <span class="keywordflow">if</span> (mi != pwallet-&gt;mapRequestCount.end())</div><div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>&#160; nRequests = (*mi).second;</div><div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>&#160; }</div><div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>&#160; }</div><div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>&#160; {</div><div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>&#160; <span class="comment">// Did anyone request this transaction?</span></div><div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>&#160; map&lt;uint256, int&gt;::const_iterator mi = pwallet-&gt;mapRequestCount.find(GetHash());</div><div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>&#160; <span class="keywordflow">if</span> (mi != pwallet-&gt;mapRequestCount.end())</div><div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>&#160; {</div><div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>&#160; nRequests = (*mi).second;</div><div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>&#160;</div><div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>&#160; <span class="comment">// How about the block it&#39;s in?</span></div><div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>&#160; <span class="keywordflow">if</span> (nRequests == 0 &amp;&amp; !hashUnset())</div><div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>&#160; {</div><div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>&#160; map&lt;uint256, int&gt;::const_iterator mi = pwallet-&gt;mapRequestCount.find(hashBlock);</div><div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>&#160; <span class="keywordflow">if</span> (mi != pwallet-&gt;mapRequestCount.end())</div><div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>&#160; nRequests = (*mi).second;</div><div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>&#160; nRequests = 1; <span class="comment">// If it&#39;s in someone else&#39;s block it must have got out</span></div><div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>&#160; }</div><div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>&#160; }</div><div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>&#160; }</div><div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>&#160; }</div><div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>&#160; <span class="keywordflow">return</span> nRequests;</div><div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>&#160;}</div><div class="line"><a name="l01584"></a><span class="lineno"> 1584</span>&#160;</div><div class="line"><a name="l01585"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga75c673700a9d5fa2b0ab63bfd094b045"> 1585</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__mapWallet.html#ga75c673700a9d5fa2b0ab63bfd094b045">CWalletTx::GetAmounts</a>(list&lt;COutputEntry&gt;&amp; listReceived,</div><div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>&#160; list&lt;COutputEntry&gt;&amp; listSent, <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a>&amp; nFee, <span class="keywordtype">string</span>&amp; strSentAccount, <span class="keyword">const</span> <a class="code" href="wallet__ismine_8h.html#aaa5e1639d76aef50f70532acc3302c4b">isminefilter</a>&amp; filter)<span class="keyword"> const</span></div><div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>&#160; nFee = 0;</div><div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>&#160; listReceived.clear();</div><div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>&#160; listSent.clear();</div><div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>&#160; strSentAccount = strFromAccount;</div><div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>&#160;</div><div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>&#160; <span class="comment">// Compute fee:</span></div><div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nDebit = GetDebit(filter);</div><div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>&#160; <span class="keywordflow">if</span> (nDebit &gt; 0) <span class="comment">// debit&gt;0 means we signed/sent this transaction</span></div><div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>&#160; {</div><div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nValueOut = GetValueOut();</div><div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>&#160; nFee = nDebit - nValueOut;</div><div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>&#160; }</div><div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>&#160;</div><div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>&#160; <span class="comment">// Sent/received.</span></div><div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; vout.size(); ++i)</div><div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>&#160; {</div><div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>&#160; <span class="keyword">const</span> <a class="code" href="classCTxOut.html">CTxOut</a>&amp; txout = vout[i];</div><div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>&#160; <a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20d">isminetype</a> fIsMine = pwallet-&gt;IsMine(txout);</div><div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>&#160; <span class="comment">// Only need to handle txouts if AT LEAST one of these is true:</span></div><div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>&#160; <span class="comment">// 1) they debit from us (sent)</span></div><div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>&#160; <span class="comment">// 2) the output is to us (received)</span></div><div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>&#160; <span class="keywordflow">if</span> (nDebit &gt; 0)</div><div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>&#160; {</div><div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>&#160; <span class="comment">// Don&#39;t report &#39;change&#39; txouts</span></div><div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>&#160; <span class="keywordflow">if</span> (pwallet-&gt;IsChange(txout))</div><div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>&#160; }</div><div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!(fIsMine &amp; filter))</div><div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>&#160;</div><div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>&#160; <span class="comment">// In either case, we need to get the destination address</span></div><div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>&#160; <a class="code" href="standard_8h.html#a50f712c3d9a0d2f85ae464497dd9cff8">CTxDestination</a> address;</div><div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>&#160;</div><div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="standard_8cpp.html#a951f7e601746ae076afdf3169ecca2fc">ExtractDestination</a>(txout.<a class="code" href="classCTxOut.html#a25bf3f2f4befb22a6a0be45784fe57e2">scriptPubKey</a>, address) &amp;&amp; !txout.<a class="code" href="classCTxOut.html#a25bf3f2f4befb22a6a0be45784fe57e2">scriptPubKey</a>.<a class="code" href="classCScript.html#a11c26ad1d03fa2d60a733337c21b6719">IsUnspendable</a>())</div><div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>&#160; {</div><div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;CWalletTx::GetAmounts: Unknown transaction type found, txid %s\n&quot;</span>,</div><div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>&#160; this-&gt;GetHash().ToString());</div><div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>&#160; address = <a class="code" href="classCNoDestination.html">CNoDestination</a>();</div><div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>&#160; }</div><div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>&#160;</div><div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>&#160; <a class="code" href="structCOutputEntry.html">COutputEntry</a> output = {address, txout.<a class="code" href="classCTxOut.html#ab278ecef3817a972cb6bc5360d13f197">nValue</a>, (int)i};</div><div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>&#160;</div><div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>&#160; <span class="comment">// If we are debited by the transaction, add the output as a &quot;sent&quot; entry</span></div><div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>&#160; <span class="keywordflow">if</span> (nDebit &gt; 0)</div><div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>&#160; listSent.push_back(output);</div><div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>&#160;</div><div class="line"><a name="l01634"></a><span class="lineno"> 1634</span>&#160; <span class="comment">// If we are receiving the output, add it as a &quot;received&quot; entry</span></div><div class="line"><a name="l01635"></a><span class="lineno"> 1635</span>&#160; <span class="keywordflow">if</span> (fIsMine &amp; filter)</div><div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>&#160; listReceived.push_back(output);</div><div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>&#160; }</div><div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>&#160;</div><div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>&#160;}</div><div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>&#160;</div><div class="line"><a name="l01641"></a><span class="lineno"><a class="line" href="group__mapWallet.html#gad74c232cc8983a1c032f2163751695ed"> 1641</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__mapWallet.html#gad74c232cc8983a1c032f2163751695ed">CWalletTx::GetAccountAmounts</a>(<span class="keyword">const</span> <span class="keywordtype">string</span>&amp; strAccount, <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a>&amp; nReceived,</div><div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a>&amp; nSent, <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a>&amp; nFee, <span class="keyword">const</span> <a class="code" href="wallet__ismine_8h.html#aaa5e1639d76aef50f70532acc3302c4b">isminefilter</a>&amp; filter)<span class="keyword"> const</span></div><div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>&#160; nReceived = nSent = nFee = 0;</div><div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>&#160;</div><div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> allFee;</div><div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>&#160; <span class="keywordtype">string</span> strSentAccount;</div><div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>&#160; list&lt;COutputEntry&gt; listReceived;</div><div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>&#160; list&lt;COutputEntry&gt; listSent;</div><div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>&#160; GetAmounts(listReceived, listSent, allFee, strSentAccount, filter);</div><div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>&#160;</div><div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>&#160; <span class="keywordflow">if</span> (strAccount == strSentAccount)</div><div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>&#160; {</div><div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="structCOutputEntry.html">COutputEntry</a>&amp; s, listSent)</div><div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>&#160; nSent += s.<a class="code" href="structCOutputEntry.html#acb32c29f06f4b66d1de6bcec47f8f704">amount</a>;</div><div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>&#160; nFee = allFee;</div><div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>&#160; }</div><div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>&#160; {</div><div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(pwallet-&gt;cs_wallet);</div><div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="structCOutputEntry.html">COutputEntry</a>&amp; r, listReceived)</div><div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>&#160; {</div><div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>&#160; <span class="keywordflow">if</span> (pwallet-&gt;mapAddressBook.count(r.<a class="code" href="structCOutputEntry.html#af5961d67591eb98aefe95bf60f2a13e6">destination</a>))</div><div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>&#160; {</div><div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>&#160; map&lt;CTxDestination, CAddressBookData&gt;::const_iterator mi = pwallet-&gt;mapAddressBook.find(r.<a class="code" href="structCOutputEntry.html#af5961d67591eb98aefe95bf60f2a13e6">destination</a>);</div><div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>&#160; <span class="keywordflow">if</span> (mi != pwallet-&gt;mapAddressBook.end() &amp;&amp; (*mi).second.name == strAccount)</div><div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>&#160; nReceived += r.<a class="code" href="structCOutputEntry.html#acb32c29f06f4b66d1de6bcec47f8f704">amount</a>;</div><div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>&#160; }</div><div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (strAccount.empty())</div><div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>&#160; {</div><div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>&#160; nReceived += r.<a class="code" href="structCOutputEntry.html#acb32c29f06f4b66d1de6bcec47f8f704">amount</a>;</div><div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>&#160; }</div><div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>&#160; }</div><div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>&#160; }</div><div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>&#160;}</div><div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>&#160;</div><div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>&#160;</div><div class="line"><a name="l01677"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga83fbd462d5c070f1ad041def675007d2"> 1677</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#ga83fbd462d5c070f1ad041def675007d2">CWalletTx::WriteToDisk</a>(<a class="code" href="classCWalletDB.html">CWalletDB</a> *pwalletdb)</div><div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>&#160;{</div><div class="line"><a name="l01679"></a><span class="lineno"> 1679</span>&#160; <span class="keywordflow">return</span> pwalletdb-&gt;<a class="code" href="classCWalletDB.html#a76d2ca02898221ab66df5d5f7491164e">WriteTx</a>(GetHash(), *<span class="keyword">this</span>);</div><div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>&#160;}</div><div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>&#160;</div><div class="line"><a name="l01687"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga979a17e80e4897ed1f4ae9a4be7c493c"> 1687</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__mapWallet.html#ga979a17e80e4897ed1f4ae9a4be7c493c">CWallet::ScanForWalletTransactions</a>(<a class="code" href="classCBlockIndex.html">CBlockIndex</a>* pindexStart, <span class="keywordtype">bool</span> fUpdate)</div><div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>&#160;{</div><div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>&#160; <span class="keywordtype">int</span> ret = 0;</div><div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>&#160; int64_t nNow = <a class="code" href="utiltime_8cpp.html#a46fac5fba8ba905b5f9acb364f5d8c6f">GetTime</a>();</div><div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>&#160; <span class="keyword">const</span> <a class="code" href="classCChainParams.html">CChainParams</a>&amp; chainParams = <a class="code" href="chainparams_8cpp.html#ace5c5b706d71a324a417dd2db394fd4a">Params</a>();</div><div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>&#160;</div><div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>&#160; <a class="code" href="classCBlockIndex.html">CBlockIndex</a>* pindex = pindexStart;</div><div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>&#160; {</div><div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>&#160; <a class="code" href="sync_8h.html#a35644e2b75a93da0cb0f6c768f34efa8">LOCK2</a>(<a class="code" href="validation_8cpp.html#a1ed8285f0fe3c6799c53265ce72552c8">cs_main</a>, cs_wallet);</div><div class="line"><a name="l01696"></a><span class="lineno"> 1696</span>&#160;</div><div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>&#160; <span class="comment">// no need to read and scan block, if block was created before</span></div><div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>&#160; <span class="comment">// our wallet birthday (as adjusted for block time variability)</span></div><div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>&#160; <span class="keywordflow">while</span> (pindex &amp;&amp; nTimeFirstKey &amp;&amp; (pindex-&gt;<a class="code" href="classCBlockIndex.html#a9fe0d4463c07c466f66252e8eec25f5c">GetBlockTime</a>() &lt; (nTimeFirstKey - 7200)))</div><div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>&#160; pindex = <a class="code" href="validation_8cpp.html#adb31995c443ae2aef1d2f1c350de0419">chainActive</a>.<a class="code" href="classCChain.html#a3077e83c87e8a974765fa76a57fd040b">Next</a>(pindex);</div><div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>&#160;</div><div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>&#160; <a class="code" href="clientmodel_8cpp.html#a2a0f0b996679bcf94acb2c877ee2e497">ShowProgress</a>(<a class="code" href="util_8h.html#aad133bb6103b53cebf03fd01e2f11ba1">_</a>(<span class="stringliteral">&quot;Rescanning...&quot;</span>), 0); <span class="comment">// show rescan progress in GUI as dialog or on splashscreen, if -rescan on startup</span></div><div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>&#160; <span class="keywordtype">double</span> dProgressStart = <a class="code" href="namespaceCheckpoints.html#aa2e60b5114a431ccaff32a6e1f418af1">Checkpoints::GuessVerificationProgress</a>(chainParams.<a class="code" href="classCChainParams.html#a55760ebfb6727f84d98295fa40f08940">Checkpoints</a>(), pindex, <span class="keyword">false</span>);</div><div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>&#160; <span class="keywordtype">double</span> dProgressTip = <a class="code" href="namespaceCheckpoints.html#aa2e60b5114a431ccaff32a6e1f418af1">Checkpoints::GuessVerificationProgress</a>(chainParams.<a class="code" href="classCChainParams.html#a55760ebfb6727f84d98295fa40f08940">Checkpoints</a>(), <a class="code" href="validation_8cpp.html#adb31995c443ae2aef1d2f1c350de0419">chainActive</a>.<a class="code" href="classCChain.html#a578545bde95163bee37b1be28e7b2755">Tip</a>(), <span class="keyword">false</span>);</div><div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>&#160; <span class="keywordflow">while</span> (pindex)</div><div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>&#160; {</div><div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>&#160; <span class="keywordflow">if</span> (pindex-&gt;<a class="code" href="classCBlockIndex.html#aebfc8d6b95852546760e742553d7bfd5">nHeight</a> % 100 == 0 &amp;&amp; dProgressTip - dProgressStart &gt; 0.0)</div><div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>&#160; <a class="code" href="clientmodel_8cpp.html#a2a0f0b996679bcf94acb2c877ee2e497">ShowProgress</a>(<a class="code" href="util_8h.html#aad133bb6103b53cebf03fd01e2f11ba1">_</a>(<span class="stringliteral">&quot;Rescanning...&quot;</span>), std::max(1, std::min(99, (<span class="keywordtype">int</span>)((<a class="code" href="namespaceCheckpoints.html#aa2e60b5114a431ccaff32a6e1f418af1">Checkpoints::GuessVerificationProgress</a>(chainParams.<a class="code" href="classCChainParams.html#a55760ebfb6727f84d98295fa40f08940">Checkpoints</a>(), pindex, <span class="keyword">false</span>) - dProgressStart) / (dProgressTip - dProgressStart) * 100))));</div><div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>&#160;</div><div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>&#160; <a class="code" href="classCBlock.html">CBlock</a> block;</div><div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>&#160; <a class="code" href="validation_8cpp.html#a578c1df234b05798180f0235d469a5ba">ReadBlockFromDisk</a>(block, pindex, <a class="code" href="chainparams_8cpp.html#ace5c5b706d71a324a417dd2db394fd4a">Params</a>().GetConsensus());</div><div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>&#160; BOOST_FOREACH(<a class="code" href="classCTransaction.html">CTransaction</a>&amp; tx, block.vtx)</div><div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>&#160; {</div><div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>&#160; <span class="keywordflow">if</span> (AddToWalletIfInvolvingMe(tx, &amp;block, fUpdate))</div><div class="line"><a name="l01715"></a><span class="lineno"> 1715</span>&#160; ret++;</div><div class="line"><a name="l01716"></a><span class="lineno"> 1716</span>&#160; }</div><div class="line"><a name="l01717"></a><span class="lineno"> 1717</span>&#160; pindex = <a class="code" href="validation_8cpp.html#adb31995c443ae2aef1d2f1c350de0419">chainActive</a>.<a class="code" href="classCChain.html#a3077e83c87e8a974765fa76a57fd040b">Next</a>(pindex);</div><div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="utiltime_8cpp.html#a46fac5fba8ba905b5f9acb364f5d8c6f">GetTime</a>() &gt;= nNow + 60) {</div><div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>&#160; nNow = <a class="code" href="utiltime_8cpp.html#a46fac5fba8ba905b5f9acb364f5d8c6f">GetTime</a>();</div><div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;Still rescanning. At block %d. Progress=%f\n&quot;</span>, pindex-&gt;<a class="code" href="classCBlockIndex.html#aebfc8d6b95852546760e742553d7bfd5">nHeight</a>, <a class="code" href="namespaceCheckpoints.html#aa2e60b5114a431ccaff32a6e1f418af1">Checkpoints::GuessVerificationProgress</a>(chainParams.<a class="code" href="classCChainParams.html#a55760ebfb6727f84d98295fa40f08940">Checkpoints</a>(), pindex));</div><div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>&#160; }</div><div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>&#160; }</div><div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>&#160; <a class="code" href="clientmodel_8cpp.html#a2a0f0b996679bcf94acb2c877ee2e497">ShowProgress</a>(<a class="code" href="util_8h.html#aad133bb6103b53cebf03fd01e2f11ba1">_</a>(<span class="stringliteral">&quot;Rescanning...&quot;</span>), 100); <span class="comment">// hide progress dialog in GUI</span></div><div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>&#160; }</div><div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>&#160;}</div><div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>&#160;</div><div class="line"><a name="l01728"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga796c23450c8482e10e0c75ae5c1fa8ed"> 1728</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__mapWallet.html#ga796c23450c8482e10e0c75ae5c1fa8ed">CWallet::ReacceptWalletTransactions</a>()</div><div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>&#160;{</div><div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>&#160; <span class="comment">// If transactions aren&#39;t being broadcasted, don&#39;t let them into local mempool either</span></div><div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>&#160; <span class="keywordflow">if</span> (!fBroadcastTransactions)</div><div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>&#160; <a class="code" href="sync_8h.html#a35644e2b75a93da0cb0f6c768f34efa8">LOCK2</a>(<a class="code" href="validation_8cpp.html#a1ed8285f0fe3c6799c53265ce72552c8">cs_main</a>, cs_wallet);</div><div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>&#160; std::map&lt;int64_t, CWalletTx*&gt; mapSorted;</div><div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>&#160;</div><div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>&#160; <span class="comment">// Sort pending wallet transactions based on their initial wallet insertion order</span></div><div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>&#160; BOOST_FOREACH(<a class="code" href="utilstrencodings_8h.html#aa3052ab82a2ba880ea3e30b3357c8820">PAIRTYPE</a>(<span class="keyword">const</span> <a class="code" href="classuint256.html">uint256</a>, <a class="code" href="classCWalletTx.html">CWalletTx</a>)&amp; item, mapWallet)</div><div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>&#160; {</div><div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>&#160; <span class="keyword">const</span> <a class="code" href="classuint256.html">uint256</a>&amp; wtxid = item.first;</div><div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>&#160; <a class="code" href="classCWalletTx.html">CWalletTx</a>&amp; wtx = item.second;</div><div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>&#160; assert(wtx.<a class="code" href="classCTransaction.html#a7efd1379de830341417c0bfa23a149aa">GetHash</a>() == wtxid);</div><div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>&#160;</div><div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>&#160; <span class="keywordtype">int</span> nDepth = wtx.<a class="code" href="classCMerkleTx.html#a5bf3a355593ecce5799de92d013149b1">GetDepthInMainChain</a>();</div><div class="line"><a name="l01744"></a><span class="lineno"> 1744</span>&#160;</div><div class="line"><a name="l01745"></a><span class="lineno"> 1745</span>&#160; <span class="keywordflow">if</span> (!wtx.<a class="code" href="classCTransaction.html#a96256e8ac1bf79ad9c057e48c41132dd">IsCoinBase</a>() &amp;&amp; (nDepth == 0 &amp;&amp; !wtx.<a class="code" href="classCMerkleTx.html#a0a2c5cd56d31bbe9b5b870ef6ebb441d">isAbandoned</a>())) {</div><div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>&#160; mapSorted.insert(std::make_pair(wtx.<a class="code" href="classCWalletTx.html#af51e160ff1d9d78986e9f239c7ac7a35">nOrderPos</a>, &amp;wtx));</div><div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>&#160; }</div><div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>&#160; }</div><div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>&#160;</div><div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>&#160; <span class="comment">// Try to add wallet transactions to memory pool</span></div><div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>&#160; BOOST_FOREACH(<a class="code" href="utilstrencodings_8h.html#aa3052ab82a2ba880ea3e30b3357c8820">PAIRTYPE</a>(<span class="keyword">const</span> int64_t, <a class="code" href="classCWalletTx.html">CWalletTx</a>*)&amp; item, mapSorted)</div><div class="line"><a name="l01752"></a><span class="lineno"> 1752</span>&#160; {</div><div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>&#160; <a class="code" href="classCWalletTx.html">CWalletTx</a>&amp; wtx = *(item.second);</div><div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>&#160;</div><div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(<a class="code" href="instantx_8cpp.html#abc71256f703e47c9254093e32ed2994c">mempool</a>.<a class="code" href="classCTxMemPool.html#ac7ee8c06837c7d2688e2d7e3d071bdbb">cs</a>);</div><div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>&#160; wtx.<a class="code" href="classCMerkleTx.html#a6618a127f7e5597c686cec94c16d0bd8">AcceptToMemoryPool</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>&#160; }</div><div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>&#160;}</div><div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>&#160;</div><div class="line"><a name="l01760"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga8467a8a31cc4dded33cc6cdb0cdabb38"> 1760</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#ga8467a8a31cc4dded33cc6cdb0cdabb38">CWalletTx::RelayWalletTransaction</a>(<a class="code" href="classCConnman.html">CConnman</a>* connman, std::string strCommand)</div><div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>&#160;{</div><div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>&#160; assert(pwallet-&gt;GetBroadcastTransactions());</div><div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>&#160; <span class="keywordflow">if</span> (!IsCoinBase())</div><div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>&#160; {</div><div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>&#160; <span class="keywordflow">if</span> (GetDepthInMainChain() == 0 &amp;&amp; !isAbandoned() &amp;&amp; InMempool()) {</div><div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>&#160; <a class="code" href="classuint256.html">uint256</a> hash = GetHash();</div><div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;Relaying wtx %s\n&quot;</span>, hash.<a class="code" href="classbase__blob.html#a7a0d25782830d8b087c4da839f3ccdeb">ToString</a>());</div><div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>&#160;</div><div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>&#160; <span class="keywordflow">if</span>(strCommand == <a class="code" href="namespaceNetMsgType.html#a13eac32e61d992756b94e714fa24e182">NetMsgType::TXLOCKREQUEST</a>) {</div><div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>&#160; <a class="code" href="instantx_8cpp.html#a6ed4b104bfd9f775e0c0a3524a6b4955">instantsend</a>.<a class="code" href="classCInstantSend.html#a418ce98b1e4d61b38bd11d02ff36a47d">ProcessTxLockRequest</a>(((<a class="code" href="classCTxLockRequest.html">CTxLockRequest</a>)*<span class="keyword">this</span>), *connman);</div><div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>&#160; }</div><div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>&#160; <span class="keywordflow">if</span> (connman) {</div><div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>&#160; connman-&gt;<a class="code" href="classCConnman.html#a5fdad96946aa2bc67961ad973bf65fa5">RelayTransaction</a>((<a class="code" href="classCTransaction.html">CTransaction</a>)*<span class="keyword">this</span>);</div><div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>&#160; }</div><div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>&#160; }</div><div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>&#160; }</div><div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>&#160;}</div><div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>&#160;</div><div class="line"><a name="l01781"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga127b064ab044a96158117ec8162188a7"> 1781</a></span>&#160;set&lt;uint256&gt; <a class="code" href="group__mapWallet.html#ga127b064ab044a96158117ec8162188a7">CWalletTx::GetConflicts</a>()<span class="keyword"> const</span></div><div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>&#160; set&lt;uint256&gt; <a class="code" href="namespacerpcuser.html#a637791b4450c02d511291cd297ce12df">result</a>;</div><div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>&#160; <span class="keywordflow">if</span> (pwallet != NULL)</div><div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>&#160; {</div><div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>&#160; <a class="code" href="classuint256.html">uint256</a> myHash = GetHash();</div><div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>&#160; <a class="code" href="namespacerpcuser.html#a637791b4450c02d511291cd297ce12df">result</a> = pwallet-&gt;GetConflicts(myHash);</div><div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>&#160; <a class="code" href="namespacerpcuser.html#a637791b4450c02d511291cd297ce12df">result</a>.erase(myHash);</div><div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>&#160; }</div><div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacerpcuser.html#a637791b4450c02d511291cd297ce12df">result</a>;</div><div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>&#160;}</div><div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>&#160;</div><div class="line"><a name="l01793"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga7757c17a323e5f6f75c92acb398d3568"> 1793</a></span>&#160;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="group__mapWallet.html#ga7757c17a323e5f6f75c92acb398d3568">CWalletTx::GetDebit</a>(<span class="keyword">const</span> <a class="code" href="wallet__ismine_8h.html#aaa5e1639d76aef50f70532acc3302c4b">isminefilter</a>&amp; filter)<span class="keyword"> const</span></div><div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>&#160; <span class="keywordflow">if</span> (vin.empty())</div><div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>&#160;</div><div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> debit = 0;</div><div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>&#160; <span class="keywordflow">if</span>(filter &amp; <a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20daaf93acf4732907100f55dc017b6daf58">ISMINE_SPENDABLE</a>)</div><div class="line"><a name="l01800"></a><span class="lineno"> 1800</span>&#160; {</div><div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>&#160; <span class="keywordflow">if</span> (fDebitCached)</div><div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>&#160; debit += nDebitCached;</div><div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>&#160; {</div><div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>&#160; nDebitCached = pwallet-&gt;GetDebit(*<span class="keyword">this</span>, <a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20daaf93acf4732907100f55dc017b6daf58">ISMINE_SPENDABLE</a>);</div><div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>&#160; fDebitCached = <span class="keyword">true</span>;</div><div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>&#160; debit += nDebitCached;</div><div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>&#160; }</div><div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>&#160; }</div><div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>&#160; <span class="keywordflow">if</span>(filter &amp; <a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20dac8c855baf258588de5f5d7508d243e29">ISMINE_WATCH_ONLY</a>)</div><div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>&#160; {</div><div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>&#160; <span class="keywordflow">if</span>(fWatchDebitCached)</div><div class="line"><a name="l01813"></a><span class="lineno"> 1813</span>&#160; debit += nWatchDebitCached;</div><div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>&#160; {</div><div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>&#160; nWatchDebitCached = pwallet-&gt;GetDebit(*<span class="keyword">this</span>, <a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20dac8c855baf258588de5f5d7508d243e29">ISMINE_WATCH_ONLY</a>);</div><div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>&#160; fWatchDebitCached = <span class="keyword">true</span>;</div><div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>&#160; debit += nWatchDebitCached;</div><div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>&#160; }</div><div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>&#160; }</div><div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>&#160; <span class="keywordflow">return</span> debit;</div><div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>&#160;}</div><div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>&#160;</div><div class="line"><a name="l01824"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga176e9ecbafbee27d604acbab9804885d"> 1824</a></span>&#160;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="group__mapWallet.html#ga176e9ecbafbee27d604acbab9804885d">CWalletTx::GetCredit</a>(<span class="keyword">const</span> <a class="code" href="wallet__ismine_8h.html#aaa5e1639d76aef50f70532acc3302c4b">isminefilter</a>&amp; filter)<span class="keyword"> const</span></div><div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>&#160; <span class="comment">// Must wait until coinbase is safely deep enough in the chain before valuing it</span></div><div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>&#160; <span class="keywordflow">if</span> (IsCoinBase() &amp;&amp; GetBlocksToMaturity() &gt; 0)</div><div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>&#160;</div><div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>&#160; int64_t credit = 0;</div><div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>&#160; <span class="keywordflow">if</span> (filter &amp; <a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20daaf93acf4732907100f55dc017b6daf58">ISMINE_SPENDABLE</a>)</div><div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>&#160; {</div><div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>&#160; <span class="comment">// GetBalance can assume transactions in mapWallet won&#39;t change</span></div><div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>&#160; <span class="keywordflow">if</span> (fCreditCached)</div><div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>&#160; credit += nCreditCached;</div><div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>&#160; {</div><div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>&#160; nCreditCached = pwallet-&gt;GetCredit(*<span class="keyword">this</span>, <a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20daaf93acf4732907100f55dc017b6daf58">ISMINE_SPENDABLE</a>);</div><div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>&#160; fCreditCached = <span class="keyword">true</span>;</div><div class="line"><a name="l01840"></a><span class="lineno"> 1840</span>&#160; credit += nCreditCached;</div><div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>&#160; }</div><div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>&#160; }</div><div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>&#160; <span class="keywordflow">if</span> (filter &amp; <a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20dac8c855baf258588de5f5d7508d243e29">ISMINE_WATCH_ONLY</a>)</div><div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>&#160; {</div><div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>&#160; <span class="keywordflow">if</span> (fWatchCreditCached)</div><div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>&#160; credit += nWatchCreditCached;</div><div class="line"><a name="l01847"></a><span class="lineno"> 1847</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l01848"></a><span class="lineno"> 1848</span>&#160; {</div><div class="line"><a name="l01849"></a><span class="lineno"> 1849</span>&#160; nWatchCreditCached = pwallet-&gt;GetCredit(*<span class="keyword">this</span>, <a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20dac8c855baf258588de5f5d7508d243e29">ISMINE_WATCH_ONLY</a>);</div><div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>&#160; fWatchCreditCached = <span class="keyword">true</span>;</div><div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>&#160; credit += nWatchCreditCached;</div><div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>&#160; }</div><div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>&#160; }</div><div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>&#160; <span class="keywordflow">return</span> credit;</div><div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>&#160;}</div><div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>&#160;</div><div class="line"><a name="l01857"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga19bb617269ab1ce42f5d18e1f1f8db09"> 1857</a></span>&#160;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="group__mapWallet.html#ga19bb617269ab1ce42f5d18e1f1f8db09">CWalletTx::GetImmatureCredit</a>(<span class="keywordtype">bool</span> fUseCache)<span class="keyword"> const</span></div><div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>&#160; <span class="keywordflow">if</span> (IsCoinBase() &amp;&amp; GetBlocksToMaturity() &gt; 0 &amp;&amp; IsInMainChain())</div><div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>&#160; {</div><div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>&#160; <span class="keywordflow">if</span> (fUseCache &amp;&amp; fImmatureCreditCached)</div><div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>&#160; <span class="keywordflow">return</span> nImmatureCreditCached;</div><div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>&#160; nImmatureCreditCached = pwallet-&gt;GetCredit(*<span class="keyword">this</span>, <a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20daaf93acf4732907100f55dc017b6daf58">ISMINE_SPENDABLE</a>);</div><div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>&#160; fImmatureCreditCached = <span class="keyword">true</span>;</div><div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>&#160; <span class="keywordflow">return</span> nImmatureCreditCached;</div><div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>&#160; }</div><div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>&#160;</div><div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>&#160;}</div><div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>&#160;</div><div class="line"><a name="l01871"></a><span class="lineno"><a class="line" href="group__mapWallet.html#gaf3c82ba365c720dd3d929b86bf432ef6"> 1871</a></span>&#160;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="group__mapWallet.html#gaf3c82ba365c720dd3d929b86bf432ef6">CWalletTx::GetAvailableCredit</a>(<span class="keywordtype">bool</span> fUseCache)<span class="keyword"> const</span></div><div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>&#160; <span class="keywordflow">if</span> (pwallet == 0)</div><div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>&#160;</div><div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>&#160; <span class="comment">// Must wait until coinbase is safely deep enough in the chain before valuing it</span></div><div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>&#160; <span class="keywordflow">if</span> (IsCoinBase() &amp;&amp; GetBlocksToMaturity() &gt; 0)</div><div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>&#160;</div><div class="line"><a name="l01880"></a><span class="lineno"> 1880</span>&#160; <span class="keywordflow">if</span> (fUseCache &amp;&amp; fAvailableCreditCached)</div><div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>&#160; <span class="keywordflow">return</span> nAvailableCreditCached;</div><div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>&#160;</div><div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nCredit = 0;</div><div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>&#160; <a class="code" href="classuint256.html">uint256</a> hashTx = GetHash();</div><div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; vout.size(); i++)</div><div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>&#160; {</div><div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>&#160; <span class="keywordflow">if</span> (!pwallet-&gt;IsSpent(hashTx, i))</div><div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>&#160; {</div><div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>&#160; <span class="keyword">const</span> <a class="code" href="classCTxOut.html">CTxOut</a> &amp;txout = vout[i];</div><div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>&#160; nCredit += pwallet-&gt;GetCredit(txout, <a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20daaf93acf4732907100f55dc017b6daf58">ISMINE_SPENDABLE</a>);</div><div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="amount_8h.html#a12db56a9a1c931941f0943ecbb278aae">MoneyRange</a>(nCredit))</div><div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;CWalletTx::GetAvailableCredit() : value out of range&quot;</span>);</div><div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>&#160; }</div><div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>&#160; }</div><div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>&#160;</div><div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>&#160; nAvailableCreditCached = nCredit;</div><div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>&#160; fAvailableCreditCached = <span class="keyword">true</span>;</div><div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>&#160; <span class="keywordflow">return</span> nCredit;</div><div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>&#160;}</div><div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>&#160;</div><div class="line"><a name="l01901"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga72f8eabb937fe06b415316c2ef4ea510"> 1901</a></span>&#160;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="group__mapWallet.html#ga72f8eabb937fe06b415316c2ef4ea510">CWalletTx::GetImmatureWatchOnlyCredit</a>(<span class="keyword">const</span> <span class="keywordtype">bool</span>&amp; fUseCache)<span class="keyword"> const</span></div><div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>&#160; <span class="keywordflow">if</span> (IsCoinBase() &amp;&amp; GetBlocksToMaturity() &gt; 0 &amp;&amp; IsInMainChain())</div><div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>&#160; {</div><div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>&#160; <span class="keywordflow">if</span> (fUseCache &amp;&amp; fImmatureWatchCreditCached)</div><div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>&#160; <span class="keywordflow">return</span> nImmatureWatchCreditCached;</div><div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>&#160; nImmatureWatchCreditCached = pwallet-&gt;GetCredit(*<span class="keyword">this</span>, <a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20dac8c855baf258588de5f5d7508d243e29">ISMINE_WATCH_ONLY</a>);</div><div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>&#160; fImmatureWatchCreditCached = <span class="keyword">true</span>;</div><div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>&#160; <span class="keywordflow">return</span> nImmatureWatchCreditCached;</div><div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>&#160; }</div><div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>&#160;</div><div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>&#160;}</div><div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>&#160;</div><div class="line"><a name="l01915"></a><span class="lineno"><a class="line" href="group__mapWallet.html#gac78c4da3c420b2b28370cba7044dd68d"> 1915</a></span>&#160;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="group__mapWallet.html#gac78c4da3c420b2b28370cba7044dd68d">CWalletTx::GetAvailableWatchOnlyCredit</a>(<span class="keyword">const</span> <span class="keywordtype">bool</span>&amp; fUseCache)<span class="keyword"> const</span></div><div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>&#160; <span class="keywordflow">if</span> (pwallet == 0)</div><div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>&#160;</div><div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>&#160; <span class="comment">// Must wait until coinbase is safely deep enough in the chain before valuing it</span></div><div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>&#160; <span class="keywordflow">if</span> (IsCoinBase() &amp;&amp; GetBlocksToMaturity() &gt; 0)</div><div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>&#160;</div><div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>&#160; <span class="keywordflow">if</span> (fUseCache &amp;&amp; fAvailableWatchCreditCached)</div><div class="line"><a name="l01925"></a><span class="lineno"> 1925</span>&#160; <span class="keywordflow">return</span> nAvailableWatchCreditCached;</div><div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>&#160;</div><div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nCredit = 0;</div><div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; vout.size(); i++)</div><div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>&#160; {</div><div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>&#160; <span class="keywordflow">if</span> (!pwallet-&gt;IsSpent(GetHash(), i))</div><div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>&#160; {</div><div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>&#160; <span class="keyword">const</span> <a class="code" href="classCTxOut.html">CTxOut</a> &amp;txout = vout[i];</div><div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>&#160; nCredit += pwallet-&gt;GetCredit(txout, <a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20dac8c855baf258588de5f5d7508d243e29">ISMINE_WATCH_ONLY</a>);</div><div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="amount_8h.html#a12db56a9a1c931941f0943ecbb278aae">MoneyRange</a>(nCredit))</div><div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;CWalletTx::GetAvailableCredit() : value out of range&quot;</span>);</div><div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>&#160; }</div><div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>&#160; }</div><div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>&#160;</div><div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>&#160; nAvailableWatchCreditCached = nCredit;</div><div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>&#160; fAvailableWatchCreditCached = <span class="keyword">true</span>;</div><div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>&#160; <span class="keywordflow">return</span> nCredit;</div><div class="line"><a name="l01942"></a><span class="lineno"> 1942</span>&#160;}</div><div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>&#160;</div><div class="line"><a name="l01944"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga49cae757845e1bf0cb3c8e17bd96d4a1"> 1944</a></span>&#160;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="group__mapWallet.html#ga49cae757845e1bf0cb3c8e17bd96d4a1">CWalletTx::GetAnonymizedCredit</a>(<span class="keywordtype">bool</span> fUseCache)<span class="keyword"> const</span></div><div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>&#160; <span class="keywordflow">if</span> (pwallet == 0)</div><div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>&#160;</div><div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>&#160; <span class="comment">// Must wait until coinbase is safely deep enough in the chain before valuing it</span></div><div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>&#160; <span class="keywordflow">if</span> (IsCoinBase() &amp;&amp; GetBlocksToMaturity() &gt; 0)</div><div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>&#160;</div><div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>&#160; <span class="keywordflow">if</span> (fUseCache &amp;&amp; fAnonymizedCreditCached)</div><div class="line"><a name="l01954"></a><span class="lineno"> 1954</span>&#160; <span class="keywordflow">return</span> nAnonymizedCreditCached;</div><div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>&#160;</div><div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nCredit = 0;</div><div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>&#160; <a class="code" href="classuint256.html">uint256</a> hashTx = GetHash();</div><div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; vout.size(); i++)</div><div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>&#160; {</div><div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>&#160; <span class="keyword">const</span> <a class="code" href="classCTxOut.html">CTxOut</a> &amp;txout = vout[i];</div><div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>&#160; <span class="keyword">const</span> <a class="code" href="classCOutPoint.html">COutPoint</a> outpoint = <a class="code" href="classCOutPoint.html">COutPoint</a>(hashTx, i);</div><div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>&#160;</div><div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>&#160; <span class="keywordflow">if</span>(pwallet-&gt;IsSpent(hashTx, i) || !pwallet-&gt;IsDenominated(outpoint)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>&#160;</div><div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>&#160; <span class="keyword">const</span> <span class="keywordtype">int</span> nRounds = pwallet-&gt;GetOutpointPrivateSendRounds(outpoint);</div><div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>&#160; <span class="keywordflow">if</span>(nRounds &gt;= <a class="code" href="privatesend-client_8cpp.html#ae36d24fafeb216cd61fb55e3475154a3">privateSendClient</a>.<a class="code" href="classCPrivateSendClient.html#a9eaafa61ebf8cf727cdd2b4ffb69cad3">nPrivateSendRounds</a>){</div><div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>&#160; nCredit += pwallet-&gt;GetCredit(txout, <a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20daaf93acf4732907100f55dc017b6daf58">ISMINE_SPENDABLE</a>);</div><div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="amount_8h.html#a12db56a9a1c931941f0943ecbb278aae">MoneyRange</a>(nCredit))</div><div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;CWalletTx::GetAnonymizedCredit() : value out of range&quot;</span>);</div><div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>&#160; }</div><div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>&#160; }</div><div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>&#160;</div><div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>&#160; nAnonymizedCreditCached = nCredit;</div><div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>&#160; fAnonymizedCreditCached = <span class="keyword">true</span>;</div><div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>&#160; <span class="keywordflow">return</span> nCredit;</div><div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>&#160;}</div><div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>&#160;</div><div class="line"><a name="l01978"></a><span class="lineno"><a class="line" href="group__mapWallet.html#gadd56840ebbe56702eeddbfda1870d628"> 1978</a></span>&#160;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="group__mapWallet.html#gadd56840ebbe56702eeddbfda1870d628">CWalletTx::GetDenominatedCredit</a>(<span class="keywordtype">bool</span> unconfirmed, <span class="keywordtype">bool</span> fUseCache)<span class="keyword"> const</span></div><div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>&#160; <span class="keywordflow">if</span> (pwallet == 0)</div><div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>&#160;</div><div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>&#160; <span class="comment">// Must wait until coinbase is safely deep enough in the chain before valuing it</span></div><div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>&#160; <span class="keywordflow">if</span> (IsCoinBase() &amp;&amp; GetBlocksToMaturity() &gt; 0)</div><div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>&#160;</div><div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>&#160; <span class="keywordtype">int</span> nDepth = GetDepthInMainChain(<span class="keyword">false</span>);</div><div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>&#160; <span class="keywordflow">if</span>(nDepth &lt; 0) <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>&#160;</div><div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>&#160; <span class="keywordtype">bool</span> isUnconfirmed = IsTrusted() &amp;&amp; nDepth == 0;</div><div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>&#160; <span class="keywordflow">if</span>(unconfirmed != isUnconfirmed) <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>&#160;</div><div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>&#160; <span class="keywordflow">if</span> (fUseCache) {</div><div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>&#160; <span class="keywordflow">if</span>(unconfirmed &amp;&amp; fDenomUnconfCreditCached)</div><div class="line"><a name="l01995"></a><span class="lineno"> 1995</span>&#160; <span class="keywordflow">return</span> nDenomUnconfCreditCached;</div><div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!unconfirmed &amp;&amp; fDenomConfCreditCached)</div><div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>&#160; <span class="keywordflow">return</span> nDenomConfCreditCached;</div><div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>&#160; }</div><div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>&#160;</div><div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nCredit = 0;</div><div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>&#160; <a class="code" href="classuint256.html">uint256</a> hashTx = GetHash();</div><div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; vout.size(); i++)</div><div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>&#160; {</div><div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>&#160; <span class="keyword">const</span> <a class="code" href="classCTxOut.html">CTxOut</a> &amp;txout = vout[i];</div><div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>&#160;</div><div class="line"><a name="l02006"></a><span class="lineno"> 2006</span>&#160; <span class="keywordflow">if</span>(pwallet-&gt;IsSpent(hashTx, i) || !pwallet-&gt;IsDenominatedAmount(vout[i].nValue)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>&#160;</div><div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>&#160; nCredit += pwallet-&gt;GetCredit(txout, <a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20daaf93acf4732907100f55dc017b6daf58">ISMINE_SPENDABLE</a>);</div><div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="amount_8h.html#a12db56a9a1c931941f0943ecbb278aae">MoneyRange</a>(nCredit))</div><div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(<span class="stringliteral">&quot;CWalletTx::GetDenominatedCredit() : value out of range&quot;</span>);</div><div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>&#160; }</div><div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>&#160;</div><div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>&#160; <span class="keywordflow">if</span>(unconfirmed) {</div><div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>&#160; nDenomUnconfCreditCached = nCredit;</div><div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>&#160; fDenomUnconfCreditCached = <span class="keyword">true</span>;</div><div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>&#160; nDenomConfCreditCached = nCredit;</div><div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>&#160; fDenomConfCreditCached = <span class="keyword">true</span>;</div><div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>&#160; }</div><div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>&#160; <span class="keywordflow">return</span> nCredit;</div><div class="line"><a name="l02021"></a><span class="lineno"> 2021</span>&#160;}</div><div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>&#160;</div><div class="line"><a name="l02023"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga714fe72284e4cc436d84f751a9a7aa60"> 2023</a></span>&#160;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="group__mapWallet.html#ga714fe72284e4cc436d84f751a9a7aa60">CWalletTx::GetChange</a>()<span class="keyword"> const</span></div><div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>&#160; <span class="keywordflow">if</span> (fChangeCached)</div><div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>&#160; <span class="keywordflow">return</span> nChangeCached;</div><div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>&#160; nChangeCached = pwallet-&gt;GetChange(*<span class="keyword">this</span>);</div><div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>&#160; fChangeCached = <span class="keyword">true</span>;</div><div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>&#160; <span class="keywordflow">return</span> nChangeCached;</div><div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>&#160;}</div><div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>&#160;</div><div class="line"><a name="l02032"></a><span class="lineno"><a class="line" href="group__mapWallet.html#gae4af382e1eeba62ee7e84100c7234f23"> 2032</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#gae4af382e1eeba62ee7e84100c7234f23">CWalletTx::InMempool</a>()<span class="keyword"> const</span></div><div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(<a class="code" href="instantx_8cpp.html#abc71256f703e47c9254093e32ed2994c">mempool</a>.<a class="code" href="classCTxMemPool.html#ac7ee8c06837c7d2688e2d7e3d071bdbb">cs</a>);</div><div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="instantx_8cpp.html#abc71256f703e47c9254093e32ed2994c">mempool</a>.<a class="code" href="classCTxMemPool.html#a8b7a13b5289ab839d4460f41a7da9789">exists</a>(GetHash())) {</div><div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l02037"></a><span class="lineno"> 2037</span>&#160; }</div><div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>&#160;}</div><div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>&#160;</div><div class="line"><a name="l02041"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga71efb0d5b5def8ae00a1d74b8741bfcb"> 2041</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#ga71efb0d5b5def8ae00a1d74b8741bfcb">CWalletTx::IsTrusted</a>()<span class="keyword"> const</span></div><div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l02043"></a><span class="lineno"> 2043</span>&#160; <span class="comment">// Quick answer in most cases</span></div><div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="validation_8cpp.html#a7e254ea66e047c3d3ed0bedc5997fc4f">CheckFinalTx</a>(*<span class="keyword">this</span>))</div><div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>&#160; <span class="keywordtype">int</span> nDepth = GetDepthInMainChain();</div><div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>&#160; <span class="keywordflow">if</span> (nDepth &gt;= 1)</div><div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>&#160; <span class="keywordflow">if</span> (nDepth &lt; 0)</div><div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="wallet_8cpp.html#a755a19591df8d2f5079c1f7132c65642">bSpendZeroConfChange</a> || !IsFromMe(<a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20da1fe9e47b4c162fd9a1779e59a11dd067">ISMINE_ALL</a>)) <span class="comment">// using wtx&#39;s cached debit</span></div><div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>&#160;</div><div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>&#160; <span class="comment">// Don&#39;t trust unconfirmed transactions from us unless they are in the mempool.</span></div><div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>&#160; <span class="keywordflow">if</span> (!InMempool())</div><div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>&#160;</div><div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>&#160; <span class="comment">// Trusted if all inputs are from us and are in the mempool:</span></div><div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="classCTxIn.html">CTxIn</a>&amp; txin, vin)</div><div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>&#160; {</div><div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>&#160; <span class="comment">// Transactions not sent by us: not trusted</span></div><div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>&#160; <span class="keyword">const</span> <a class="code" href="classCWalletTx.html">CWalletTx</a>* parent = pwallet-&gt;GetWalletTx(txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>.<a class="code" href="classCOutPoint.html#af131c7194a660558b0ff158f4efa7a28">hash</a>);</div><div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>&#160; <span class="keywordflow">if</span> (parent == NULL)</div><div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>&#160; <span class="keyword">const</span> <a class="code" href="classCTxOut.html">CTxOut</a>&amp; parentOut = parent-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>.<a class="code" href="classCOutPoint.html#a1b857e3a0412ff741da2c9f8defe315c">n</a>];</div><div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>&#160; <span class="keywordflow">if</span> (pwallet-&gt;IsMine(parentOut) != <a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20daaf93acf4732907100f55dc017b6daf58">ISMINE_SPENDABLE</a>)</div><div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>&#160; }</div><div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>&#160;}</div><div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>&#160;</div><div class="line"><a name="l02072"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga663593382cf8b0fb993e2515261bb017"> 2072</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__mapWallet.html#ga663593382cf8b0fb993e2515261bb017">CWalletTx::IsEquivalentTo</a>(<span class="keyword">const</span> <a class="code" href="classCWalletTx.html">CWalletTx</a>&amp; tx)<span class="keyword"> const</span></div><div class="line"><a name="l02073"></a><span class="lineno"> 2073</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l02074"></a><span class="lineno"> 2074</span>&#160; <a class="code" href="structCMutableTransaction.html">CMutableTransaction</a> tx1 = *<span class="keyword">this</span>;</div><div class="line"><a name="l02075"></a><span class="lineno"> 2075</span>&#160; <a class="code" href="structCMutableTransaction.html">CMutableTransaction</a> tx2 = tx;</div><div class="line"><a name="l02076"></a><span class="lineno"> 2076</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; tx1.<a class="code" href="structCMutableTransaction.html#ad6b1a0a773293fd153a1d384923631da">vin</a>.size(); i++) tx1.<a class="code" href="structCMutableTransaction.html#ad6b1a0a773293fd153a1d384923631da">vin</a>[i].scriptSig = <a class="code" href="classCScript.html">CScript</a>();</div><div class="line"><a name="l02077"></a><span class="lineno"> 2077</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; tx2.<a class="code" href="structCMutableTransaction.html#ad6b1a0a773293fd153a1d384923631da">vin</a>.size(); i++) tx2.<a class="code" href="structCMutableTransaction.html#ad6b1a0a773293fd153a1d384923631da">vin</a>[i].scriptSig = <a class="code" href="classCScript.html">CScript</a>();</div><div class="line"><a name="l02078"></a><span class="lineno"> 2078</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classCTransaction.html">CTransaction</a>(tx1) == <a class="code" href="classCTransaction.html">CTransaction</a>(tx2);</div><div class="line"><a name="l02079"></a><span class="lineno"> 2079</span>&#160;}</div><div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>&#160;</div><div class="line"><a name="l02081"></a><span class="lineno"><a class="line" href="group__mapWallet.html#ga5660023a09ecf8107cb2b3df8d3d0e40"> 2081</a></span>&#160;std::vector&lt;uint256&gt; <a class="code" href="group__mapWallet.html#ga5660023a09ecf8107cb2b3df8d3d0e40">CWallet::ResendWalletTransactionsBefore</a>(int64_t nTime, <a class="code" href="classCConnman.html">CConnman</a>* connman)</div><div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>&#160;{</div><div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>&#160; std::vector&lt;uint256&gt; <a class="code" href="namespacerpcuser.html#a637791b4450c02d511291cd297ce12df">result</a>;</div><div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>&#160;</div><div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet);</div><div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>&#160; <span class="comment">// Sort them in chronological order</span></div><div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>&#160; multimap&lt;unsigned int, CWalletTx*&gt; mapSorted;</div><div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>&#160; BOOST_FOREACH(<a class="code" href="utilstrencodings_8h.html#aa3052ab82a2ba880ea3e30b3357c8820">PAIRTYPE</a>(<span class="keyword">const</span> <a class="code" href="classuint256.html">uint256</a>, <a class="code" href="classCWalletTx.html">CWalletTx</a>)&amp; item, mapWallet)</div><div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>&#160; {</div><div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>&#160; <a class="code" href="classCWalletTx.html">CWalletTx</a>&amp; wtx = item.second;</div><div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>&#160; <span class="comment">// Don&#39;t rebroadcast if newer than nTime:</span></div><div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>&#160; <span class="keywordflow">if</span> (wtx.<a class="code" href="classCWalletTx.html#af4f4b58875061467026da7b259532b69">nTimeReceived</a> &gt; nTime)</div><div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>&#160; mapSorted.insert(make_pair(wtx.<a class="code" href="classCWalletTx.html#af4f4b58875061467026da7b259532b69">nTimeReceived</a>, &amp;wtx));</div><div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>&#160; }</div><div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>&#160; BOOST_FOREACH(<a class="code" href="utilstrencodings_8h.html#aa3052ab82a2ba880ea3e30b3357c8820">PAIRTYPE</a>(<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>, <a class="code" href="classCWalletTx.html">CWalletTx</a>*)&amp; item, mapSorted)</div><div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>&#160; {</div><div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>&#160; <a class="code" href="classCWalletTx.html">CWalletTx</a>&amp; wtx = *item.second;</div><div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>&#160; <span class="keywordflow">if</span> (wtx.<a class="code" href="group__mapWallet.html#ga8467a8a31cc4dded33cc6cdb0cdabb38">RelayWalletTransaction</a>(connman))</div><div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>&#160; <a class="code" href="namespacerpcuser.html#a637791b4450c02d511291cd297ce12df">result</a>.push_back(wtx.<a class="code" href="classCTransaction.html#a7efd1379de830341417c0bfa23a149aa">GetHash</a>());</div><div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>&#160; }</div><div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacerpcuser.html#a637791b4450c02d511291cd297ce12df">result</a>;</div><div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>&#160;}</div><div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>&#160;</div><div class="line"><a name="l02105"></a><span class="lineno"><a class="line" href="group__mapWallet.html#gac56b1e181b831dc6173a458861007b15"> 2105</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__mapWallet.html#gac56b1e181b831dc6173a458861007b15">CWallet::ResendWalletTransactions</a>(int64_t nBestBlockTime, <a class="code" href="classCConnman.html">CConnman</a>* connman)</div><div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>&#160;{</div><div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>&#160; <span class="comment">// Do this infrequently and randomly to avoid giving away</span></div><div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>&#160; <span class="comment">// that these are our transactions.</span></div><div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="utiltime_8cpp.html#a46fac5fba8ba905b5f9acb364f5d8c6f">GetTime</a>() &lt; nNextResend || !fBroadcastTransactions)</div><div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>&#160; <span class="keywordtype">bool</span> fFirst = (nNextResend == 0);</div><div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>&#160; nNextResend = <a class="code" href="utiltime_8cpp.html#a46fac5fba8ba905b5f9acb364f5d8c6f">GetTime</a>() + <a class="code" href="random_8cpp.html#a27d9149d522b1fa87d84e5e9ca902aef">GetRand</a>(30 * 60);</div><div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>&#160; <span class="keywordflow">if</span> (fFirst)</div><div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>&#160;</div><div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>&#160; <span class="comment">// Only do it if there&#39;s been a new block since last time</span></div><div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>&#160; <span class="keywordflow">if</span> (nBestBlockTime &lt; nLastResend)</div><div class="line"><a name="l02118"></a><span class="lineno"> 2118</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>&#160; nLastResend = <a class="code" href="utiltime_8cpp.html#a46fac5fba8ba905b5f9acb364f5d8c6f">GetTime</a>();</div><div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>&#160;</div><div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>&#160; <span class="comment">// Rebroadcast unconfirmed txes older than 5 minutes before the last</span></div><div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>&#160; <span class="comment">// block was found:</span></div><div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>&#160; std::vector&lt;uint256&gt; relayed = ResendWalletTransactionsBefore(nBestBlockTime-5*60, connman);</div><div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>&#160; <span class="keywordflow">if</span> (!relayed.empty())</div><div class="line"><a name="l02125"></a><span class="lineno"> 2125</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;%s: rebroadcast %u unconfirmed transactions\n&quot;</span>, __func__, relayed.size());</div><div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>&#160;}</div><div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>&#160; <span class="comment">// end of mapWallet</span></div><div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>&#160;</div><div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>&#160;</div><div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>&#160;</div><div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>&#160;</div><div class="line"><a name="l02139"></a><span class="lineno"><a class="line" href="group__Actions.html#gaa6522c2833bc0a84d216cf102b51ba05"> 2139</a></span>&#160;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="group__Actions.html#gaa6522c2833bc0a84d216cf102b51ba05">CWallet::GetBalance</a>()<span class="keyword"> const</span></div><div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nTotal = 0;</div><div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>&#160; {</div><div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>&#160; <a class="code" href="sync_8h.html#a35644e2b75a93da0cb0f6c768f34efa8">LOCK2</a>(<a class="code" href="validation_8cpp.html#a1ed8285f0fe3c6799c53265ce72552c8">cs_main</a>, cs_wallet);</div><div class="line"><a name="l02144"></a><span class="lineno"> 2144</span>&#160; <span class="keywordflow">for</span> (map&lt;uint256, CWalletTx&gt;::const_iterator it = mapWallet.begin(); it != mapWallet.end(); ++it)</div><div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>&#160; {</div><div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>&#160; <span class="keyword">const</span> <a class="code" href="classCWalletTx.html">CWalletTx</a>* pcoin = &amp;(*it).second;</div><div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>&#160; <span class="keywordflow">if</span> (pcoin-&gt;<a class="code" href="group__mapWallet.html#ga71efb0d5b5def8ae00a1d74b8741bfcb">IsTrusted</a>())</div><div class="line"><a name="l02148"></a><span class="lineno"> 2148</span>&#160; nTotal += pcoin-&gt;<a class="code" href="group__mapWallet.html#gaf3c82ba365c720dd3d929b86bf432ef6">GetAvailableCredit</a>();</div><div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>&#160; }</div><div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>&#160; }</div><div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>&#160;</div><div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>&#160; <span class="keywordflow">return</span> nTotal;</div><div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>&#160;}</div><div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>&#160;</div><div class="line"><a name="l02155"></a><span class="lineno"><a class="line" href="group__Actions.html#ga69512d5afdbc440763fec4719475a055"> 2155</a></span>&#160;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="group__Actions.html#ga69512d5afdbc440763fec4719475a055">CWallet::GetAnonymizableBalance</a>(<span class="keywordtype">bool</span> fSkipDenominated, <span class="keywordtype">bool</span> fSkipUnconfirmed)<span class="keyword"> const</span></div><div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l02157"></a><span class="lineno"> 2157</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="util_8cpp.html#aa2216c761101b28e38757c5cffea3dc5">fLiteMode</a>) <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l02158"></a><span class="lineno"> 2158</span>&#160;</div><div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>&#160; std::vector&lt;CompactTallyItem&gt; vecTally;</div><div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>&#160; <span class="keywordflow">if</span>(!SelectCoinsGrouppedByAddresses(vecTally, fSkipDenominated, <span class="keyword">true</span>, fSkipUnconfirmed)) <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>&#160;</div><div class="line"><a name="l02162"></a><span class="lineno"> 2162</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nTotal = 0;</div><div class="line"><a name="l02163"></a><span class="lineno"> 2163</span>&#160;</div><div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>&#160; <span class="keyword">const</span> <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nSmallestDenom = <a class="code" href="classCPrivateSend.html#aaea73bfde40e837eb2eee68413139359">CPrivateSend::GetSmallestDenomination</a>();</div><div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>&#160; <span class="keyword">const</span> <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nMixingCollateral = <a class="code" href="classCPrivateSend.html#ac699ad0d6b0b0621b2b6358b38703525">CPrivateSend::GetCollateralAmount</a>();</div><div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>&#160; BOOST_FOREACH(<a class="code" href="structCompactTallyItem.html">CompactTallyItem</a>&amp; item, vecTally) {</div><div class="line"><a name="l02167"></a><span class="lineno"> 2167</span>&#160; <span class="keywordtype">bool</span> fIsDenominated = IsDenominatedAmount(item.<a class="code" href="structCompactTallyItem.html#a0efb39fdaacf62d56f5cb90261b71402">nAmount</a>);</div><div class="line"><a name="l02168"></a><span class="lineno"> 2168</span>&#160; <span class="keywordflow">if</span>(fSkipDenominated &amp;&amp; fIsDenominated) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02169"></a><span class="lineno"> 2169</span>&#160; <span class="comment">// assume that the fee to create denoms should be mixing collateral at max</span></div><div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>&#160; <span class="keywordflow">if</span>(item.<a class="code" href="structCompactTallyItem.html#a0efb39fdaacf62d56f5cb90261b71402">nAmount</a> &gt;= nSmallestDenom + (fIsDenominated ? 0 : nMixingCollateral))</div><div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>&#160; nTotal += item.<a class="code" href="structCompactTallyItem.html#a0efb39fdaacf62d56f5cb90261b71402">nAmount</a>;</div><div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>&#160; }</div><div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>&#160;</div><div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>&#160; <span class="keywordflow">return</span> nTotal;</div><div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>&#160;}</div><div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>&#160;</div><div class="line"><a name="l02177"></a><span class="lineno"><a class="line" href="group__Actions.html#gad71e805ab9614962a57cb931e91b4297"> 2177</a></span>&#160;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="group__Actions.html#gad71e805ab9614962a57cb931e91b4297">CWallet::GetAnonymizedBalance</a>()<span class="keyword"> const</span></div><div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="util_8cpp.html#aa2216c761101b28e38757c5cffea3dc5">fLiteMode</a>) <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>&#160;</div><div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nTotal = 0;</div><div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>&#160;</div><div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>&#160; <a class="code" href="sync_8h.html#a35644e2b75a93da0cb0f6c768f34efa8">LOCK2</a>(<a class="code" href="validation_8cpp.html#a1ed8285f0fe3c6799c53265ce72552c8">cs_main</a>, cs_wallet);</div><div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>&#160;</div><div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>&#160; std::set&lt;uint256&gt; setWalletTxesCounted;</div><div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; outpoint : setWalletUTXO) {</div><div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>&#160;</div><div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>&#160; <span class="keywordflow">if</span> (setWalletTxesCounted.find(outpoint.hash) != setWalletTxesCounted.end()) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>&#160; setWalletTxesCounted.insert(outpoint.hash);</div><div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>&#160;</div><div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>&#160; <span class="keywordflow">for</span> (map&lt;uint256, CWalletTx&gt;::const_iterator it = mapWallet.find(outpoint.hash); it != mapWallet.end() &amp;&amp; it-&gt;first == outpoint.hash; ++it) {</div><div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>&#160; <span class="keywordflow">if</span> (it-&gt;second.IsTrusted())</div><div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>&#160; nTotal += it-&gt;second.GetAnonymizedCredit();</div><div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>&#160; }</div><div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>&#160; }</div><div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>&#160;</div><div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>&#160; <span class="keywordflow">return</span> nTotal;</div><div class="line"><a name="l02198"></a><span class="lineno"> 2198</span>&#160;}</div><div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>&#160;</div><div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>&#160;<span class="comment">// Note: calculated including unconfirmed,</span></div><div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>&#160;<span class="comment">// that&#39;s ok as long as we use it for informational purposes only</span></div><div class="line"><a name="l02202"></a><span class="lineno"><a class="line" href="group__Actions.html#ga2a8edfdfa5b1474b2b047daa89037278"> 2202</a></span>&#160;<span class="keywordtype">float</span> <a class="code" href="group__Actions.html#ga2a8edfdfa5b1474b2b047daa89037278">CWallet::GetAverageAnonymizedRounds</a>()<span class="keyword"> const</span></div><div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l02204"></a><span class="lineno"> 2204</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="util_8cpp.html#aa2216c761101b28e38757c5cffea3dc5">fLiteMode</a>) <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>&#160;</div><div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>&#160; <span class="keywordtype">int</span> nTotal = 0;</div><div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>&#160; <span class="keywordtype">int</span> nCount = 0;</div><div class="line"><a name="l02208"></a><span class="lineno"> 2208</span>&#160;</div><div class="line"><a name="l02209"></a><span class="lineno"> 2209</span>&#160; <a class="code" href="sync_8h.html#a35644e2b75a93da0cb0f6c768f34efa8">LOCK2</a>(<a class="code" href="validation_8cpp.html#a1ed8285f0fe3c6799c53265ce72552c8">cs_main</a>, cs_wallet);</div><div class="line"><a name="l02210"></a><span class="lineno"> 2210</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; outpoint : setWalletUTXO) {</div><div class="line"><a name="l02211"></a><span class="lineno"> 2211</span>&#160; <span class="keywordflow">if</span>(!IsDenominated(outpoint)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02212"></a><span class="lineno"> 2212</span>&#160;</div><div class="line"><a name="l02213"></a><span class="lineno"> 2213</span>&#160; nTotal += GetOutpointPrivateSendRounds(outpoint);</div><div class="line"><a name="l02214"></a><span class="lineno"> 2214</span>&#160; nCount++;</div><div class="line"><a name="l02215"></a><span class="lineno"> 2215</span>&#160; }</div><div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>&#160;</div><div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>&#160; <span class="keywordflow">if</span>(nCount == 0) <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l02218"></a><span class="lineno"> 2218</span>&#160;</div><div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>&#160; <span class="keywordflow">return</span> (<span class="keywordtype">float</span>)nTotal/nCount;</div><div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>&#160;}</div><div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>&#160;</div><div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>&#160;<span class="comment">// Note: calculated including unconfirmed,</span></div><div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>&#160;<span class="comment">// that&#39;s ok as long as we use it for informational purposes only</span></div><div class="line"><a name="l02224"></a><span class="lineno"><a class="line" href="group__Actions.html#ga24e9c793a438c84b48811bd5b7d4edc6"> 2224</a></span>&#160;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="group__Actions.html#ga24e9c793a438c84b48811bd5b7d4edc6">CWallet::GetNormalizedAnonymizedBalance</a>()<span class="keyword"> const</span></div><div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="util_8cpp.html#aa2216c761101b28e38757c5cffea3dc5">fLiteMode</a>) <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l02227"></a><span class="lineno"> 2227</span>&#160;</div><div class="line"><a name="l02228"></a><span class="lineno"> 2228</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nTotal = 0;</div><div class="line"><a name="l02229"></a><span class="lineno"> 2229</span>&#160;</div><div class="line"><a name="l02230"></a><span class="lineno"> 2230</span>&#160; <a class="code" href="sync_8h.html#a35644e2b75a93da0cb0f6c768f34efa8">LOCK2</a>(<a class="code" href="validation_8cpp.html#a1ed8285f0fe3c6799c53265ce72552c8">cs_main</a>, cs_wallet);</div><div class="line"><a name="l02231"></a><span class="lineno"> 2231</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; outpoint : setWalletUTXO) {</div><div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>&#160; map&lt;uint256, CWalletTx&gt;::const_iterator it = mapWallet.find(outpoint.hash);</div><div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>&#160; <span class="keywordflow">if</span> (it == mapWallet.end()) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>&#160; <span class="keywordflow">if</span> (!IsDenominated(outpoint)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>&#160; <span class="keywordflow">if</span> (it-&gt;second.GetDepthInMainChain() &lt; 0) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>&#160;</div><div class="line"><a name="l02237"></a><span class="lineno"> 2237</span>&#160; <span class="keywordtype">int</span> nRounds = GetOutpointPrivateSendRounds(outpoint);</div><div class="line"><a name="l02238"></a><span class="lineno"> 2238</span>&#160; nTotal += it-&gt;second.vout[outpoint.n].nValue * nRounds / <a class="code" href="privatesend-client_8cpp.html#ae36d24fafeb216cd61fb55e3475154a3">privateSendClient</a>.<a class="code" href="classCPrivateSendClient.html#a9eaafa61ebf8cf727cdd2b4ffb69cad3">nPrivateSendRounds</a>;</div><div class="line"><a name="l02239"></a><span class="lineno"> 2239</span>&#160; }</div><div class="line"><a name="l02240"></a><span class="lineno"> 2240</span>&#160;</div><div class="line"><a name="l02241"></a><span class="lineno"> 2241</span>&#160; <span class="keywordflow">return</span> nTotal;</div><div class="line"><a name="l02242"></a><span class="lineno"> 2242</span>&#160;}</div><div class="line"><a name="l02243"></a><span class="lineno"> 2243</span>&#160;</div><div class="line"><a name="l02244"></a><span class="lineno"><a class="line" href="group__Actions.html#ga7c01f732dbde5dc71880203c435196b2"> 2244</a></span>&#160;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="group__Actions.html#ga7c01f732dbde5dc71880203c435196b2">CWallet::GetNeedsToBeAnonymizedBalance</a>(<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nMinBalance)<span class="keyword"> const</span></div><div class="line"><a name="l02245"></a><span class="lineno"> 2245</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l02246"></a><span class="lineno"> 2246</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="util_8cpp.html#aa2216c761101b28e38757c5cffea3dc5">fLiteMode</a>) <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>&#160;</div><div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nAnonymizedBalance = GetAnonymizedBalance();</div><div class="line"><a name="l02249"></a><span class="lineno"> 2249</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nNeedsToAnonymizeBalance = <a class="code" href="privatesend-client_8cpp.html#ae36d24fafeb216cd61fb55e3475154a3">privateSendClient</a>.<a class="code" href="classCPrivateSendClient.html#a27a53a3758ea1df3533ec1c1ba2a0c5c">nPrivateSendAmount</a>*<a class="code" href="amount_8h.html#aed6bcb17bc73a5dcf33250e9c2c023cc">COIN</a> - nAnonymizedBalance;</div><div class="line"><a name="l02250"></a><span class="lineno"> 2250</span>&#160;</div><div class="line"><a name="l02251"></a><span class="lineno"> 2251</span>&#160; <span class="comment">// try to overshoot target DS balance up to nMinBalance</span></div><div class="line"><a name="l02252"></a><span class="lineno"> 2252</span>&#160; nNeedsToAnonymizeBalance += nMinBalance;</div><div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>&#160;</div><div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nAnonymizableBalance = GetAnonymizableBalance();</div><div class="line"><a name="l02255"></a><span class="lineno"> 2255</span>&#160;</div><div class="line"><a name="l02256"></a><span class="lineno"> 2256</span>&#160; <span class="comment">// anonymizable balance is way too small</span></div><div class="line"><a name="l02257"></a><span class="lineno"> 2257</span>&#160; <span class="keywordflow">if</span>(nAnonymizableBalance &lt; nMinBalance) <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l02258"></a><span class="lineno"> 2258</span>&#160;</div><div class="line"><a name="l02259"></a><span class="lineno"> 2259</span>&#160; <span class="comment">// not enough funds to anonymze amount we want, try the max we can</span></div><div class="line"><a name="l02260"></a><span class="lineno"> 2260</span>&#160; <span class="keywordflow">if</span>(nNeedsToAnonymizeBalance &gt; nAnonymizableBalance) nNeedsToAnonymizeBalance = nAnonymizableBalance;</div><div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>&#160;</div><div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>&#160; <span class="comment">// we should never exceed the pool max</span></div><div class="line"><a name="l02263"></a><span class="lineno"> 2263</span>&#160; <span class="keywordflow">if</span> (nNeedsToAnonymizeBalance &gt; <a class="code" href="classCPrivateSend.html#a453e99da580c62dab5b25eff3a600578">CPrivateSend::GetMaxPoolAmount</a>()) nNeedsToAnonymizeBalance = <a class="code" href="classCPrivateSend.html#a453e99da580c62dab5b25eff3a600578">CPrivateSend::GetMaxPoolAmount</a>();</div><div class="line"><a name="l02264"></a><span class="lineno"> 2264</span>&#160;</div><div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>&#160; <span class="keywordflow">return</span> nNeedsToAnonymizeBalance;</div><div class="line"><a name="l02266"></a><span class="lineno"> 2266</span>&#160;}</div><div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>&#160;</div><div class="line"><a name="l02268"></a><span class="lineno"><a class="line" href="group__Actions.html#ga3d9f78bd52a2bd03a9e79c1a84e76cd7"> 2268</a></span>&#160;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="group__Actions.html#ga3d9f78bd52a2bd03a9e79c1a84e76cd7">CWallet::GetDenominatedBalance</a>(<span class="keywordtype">bool</span> unconfirmed)<span class="keyword"> const</span></div><div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l02270"></a><span class="lineno"> 2270</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="util_8cpp.html#aa2216c761101b28e38757c5cffea3dc5">fLiteMode</a>) <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>&#160;</div><div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nTotal = 0;</div><div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>&#160; {</div><div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>&#160; <a class="code" href="sync_8h.html#a35644e2b75a93da0cb0f6c768f34efa8">LOCK2</a>(<a class="code" href="validation_8cpp.html#a1ed8285f0fe3c6799c53265ce72552c8">cs_main</a>, cs_wallet);</div><div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>&#160; <span class="keywordflow">for</span> (map&lt;uint256, CWalletTx&gt;::const_iterator it = mapWallet.begin(); it != mapWallet.end(); ++it)</div><div class="line"><a name="l02276"></a><span class="lineno"> 2276</span>&#160; {</div><div class="line"><a name="l02277"></a><span class="lineno"> 2277</span>&#160; <span class="keyword">const</span> <a class="code" href="classCWalletTx.html">CWalletTx</a>* pcoin = &amp;(*it).second;</div><div class="line"><a name="l02278"></a><span class="lineno"> 2278</span>&#160;</div><div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>&#160; nTotal += pcoin-&gt;<a class="code" href="group__mapWallet.html#gadd56840ebbe56702eeddbfda1870d628">GetDenominatedCredit</a>(unconfirmed);</div><div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>&#160; }</div><div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>&#160; }</div><div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>&#160;</div><div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>&#160; <span class="keywordflow">return</span> nTotal;</div><div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>&#160;}</div><div class="line"><a name="l02285"></a><span class="lineno"> 2285</span>&#160;</div><div class="line"><a name="l02286"></a><span class="lineno"><a class="line" href="group__Actions.html#ga6e6e1497535d499242c2f2a76d1cbe63"> 2286</a></span>&#160;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="group__Actions.html#ga6e6e1497535d499242c2f2a76d1cbe63">CWallet::GetUnconfirmedBalance</a>()<span class="keyword"> const</span></div><div class="line"><a name="l02287"></a><span class="lineno"> 2287</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l02288"></a><span class="lineno"> 2288</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nTotal = 0;</div><div class="line"><a name="l02289"></a><span class="lineno"> 2289</span>&#160; {</div><div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>&#160; <a class="code" href="sync_8h.html#a35644e2b75a93da0cb0f6c768f34efa8">LOCK2</a>(<a class="code" href="validation_8cpp.html#a1ed8285f0fe3c6799c53265ce72552c8">cs_main</a>, cs_wallet);</div><div class="line"><a name="l02291"></a><span class="lineno"> 2291</span>&#160; <span class="keywordflow">for</span> (map&lt;uint256, CWalletTx&gt;::const_iterator it = mapWallet.begin(); it != mapWallet.end(); ++it)</div><div class="line"><a name="l02292"></a><span class="lineno"> 2292</span>&#160; {</div><div class="line"><a name="l02293"></a><span class="lineno"> 2293</span>&#160; <span class="keyword">const</span> <a class="code" href="classCWalletTx.html">CWalletTx</a>* pcoin = &amp;(*it).second;</div><div class="line"><a name="l02294"></a><span class="lineno"> 2294</span>&#160; <span class="keywordflow">if</span> (!pcoin-&gt;<a class="code" href="group__mapWallet.html#ga71efb0d5b5def8ae00a1d74b8741bfcb">IsTrusted</a>() &amp;&amp; pcoin-&gt;<a class="code" href="classCMerkleTx.html#a5bf3a355593ecce5799de92d013149b1">GetDepthInMainChain</a>() == 0 &amp;&amp; pcoin-&gt;<a class="code" href="group__mapWallet.html#gae4af382e1eeba62ee7e84100c7234f23">InMempool</a>())</div><div class="line"><a name="l02295"></a><span class="lineno"> 2295</span>&#160; nTotal += pcoin-&gt;<a class="code" href="group__mapWallet.html#gaf3c82ba365c720dd3d929b86bf432ef6">GetAvailableCredit</a>();</div><div class="line"><a name="l02296"></a><span class="lineno"> 2296</span>&#160; }</div><div class="line"><a name="l02297"></a><span class="lineno"> 2297</span>&#160; }</div><div class="line"><a name="l02298"></a><span class="lineno"> 2298</span>&#160; <span class="keywordflow">return</span> nTotal;</div><div class="line"><a name="l02299"></a><span class="lineno"> 2299</span>&#160;}</div><div class="line"><a name="l02300"></a><span class="lineno"> 2300</span>&#160;</div><div class="line"><a name="l02301"></a><span class="lineno"><a class="line" href="group__Actions.html#ga6ab8dfa75c5c8d5539325f3981697964"> 2301</a></span>&#160;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="group__Actions.html#ga6ab8dfa75c5c8d5539325f3981697964">CWallet::GetImmatureBalance</a>()<span class="keyword"> const</span></div><div class="line"><a name="l02302"></a><span class="lineno"> 2302</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l02303"></a><span class="lineno"> 2303</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nTotal = 0;</div><div class="line"><a name="l02304"></a><span class="lineno"> 2304</span>&#160; {</div><div class="line"><a name="l02305"></a><span class="lineno"> 2305</span>&#160; <a class="code" href="sync_8h.html#a35644e2b75a93da0cb0f6c768f34efa8">LOCK2</a>(<a class="code" href="validation_8cpp.html#a1ed8285f0fe3c6799c53265ce72552c8">cs_main</a>, cs_wallet);</div><div class="line"><a name="l02306"></a><span class="lineno"> 2306</span>&#160; <span class="keywordflow">for</span> (map&lt;uint256, CWalletTx&gt;::const_iterator it = mapWallet.begin(); it != mapWallet.end(); ++it)</div><div class="line"><a name="l02307"></a><span class="lineno"> 2307</span>&#160; {</div><div class="line"><a name="l02308"></a><span class="lineno"> 2308</span>&#160; <span class="keyword">const</span> <a class="code" href="classCWalletTx.html">CWalletTx</a>* pcoin = &amp;(*it).second;</div><div class="line"><a name="l02309"></a><span class="lineno"> 2309</span>&#160; nTotal += pcoin-&gt;<a class="code" href="group__mapWallet.html#ga19bb617269ab1ce42f5d18e1f1f8db09">GetImmatureCredit</a>();</div><div class="line"><a name="l02310"></a><span class="lineno"> 2310</span>&#160; }</div><div class="line"><a name="l02311"></a><span class="lineno"> 2311</span>&#160; }</div><div class="line"><a name="l02312"></a><span class="lineno"> 2312</span>&#160; <span class="keywordflow">return</span> nTotal;</div><div class="line"><a name="l02313"></a><span class="lineno"> 2313</span>&#160;}</div><div class="line"><a name="l02314"></a><span class="lineno"> 2314</span>&#160;</div><div class="line"><a name="l02315"></a><span class="lineno"><a class="line" href="group__Actions.html#ga92a58ebac7d7d398597657600db56611"> 2315</a></span>&#160;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="group__Actions.html#ga92a58ebac7d7d398597657600db56611">CWallet::GetWatchOnlyBalance</a>()<span class="keyword"> const</span></div><div class="line"><a name="l02316"></a><span class="lineno"> 2316</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l02317"></a><span class="lineno"> 2317</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nTotal = 0;</div><div class="line"><a name="l02318"></a><span class="lineno"> 2318</span>&#160; {</div><div class="line"><a name="l02319"></a><span class="lineno"> 2319</span>&#160; <a class="code" href="sync_8h.html#a35644e2b75a93da0cb0f6c768f34efa8">LOCK2</a>(<a class="code" href="validation_8cpp.html#a1ed8285f0fe3c6799c53265ce72552c8">cs_main</a>, cs_wallet);</div><div class="line"><a name="l02320"></a><span class="lineno"> 2320</span>&#160; <span class="keywordflow">for</span> (map&lt;uint256, CWalletTx&gt;::const_iterator it = mapWallet.begin(); it != mapWallet.end(); ++it)</div><div class="line"><a name="l02321"></a><span class="lineno"> 2321</span>&#160; {</div><div class="line"><a name="l02322"></a><span class="lineno"> 2322</span>&#160; <span class="keyword">const</span> <a class="code" href="classCWalletTx.html">CWalletTx</a>* pcoin = &amp;(*it).second;</div><div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>&#160; <span class="keywordflow">if</span> (pcoin-&gt;<a class="code" href="group__mapWallet.html#ga71efb0d5b5def8ae00a1d74b8741bfcb">IsTrusted</a>())</div><div class="line"><a name="l02324"></a><span class="lineno"> 2324</span>&#160; nTotal += pcoin-&gt;<a class="code" href="group__mapWallet.html#gac78c4da3c420b2b28370cba7044dd68d">GetAvailableWatchOnlyCredit</a>();</div><div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>&#160; }</div><div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>&#160; }</div><div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>&#160;</div><div class="line"><a name="l02328"></a><span class="lineno"> 2328</span>&#160; <span class="keywordflow">return</span> nTotal;</div><div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>&#160;}</div><div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>&#160;</div><div class="line"><a name="l02331"></a><span class="lineno"><a class="line" href="group__Actions.html#gab0c110f14f0429f9de594b2293837621"> 2331</a></span>&#160;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="group__Actions.html#gab0c110f14f0429f9de594b2293837621">CWallet::GetUnconfirmedWatchOnlyBalance</a>()<span class="keyword"> const</span></div><div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l02333"></a><span class="lineno"> 2333</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nTotal = 0;</div><div class="line"><a name="l02334"></a><span class="lineno"> 2334</span>&#160; {</div><div class="line"><a name="l02335"></a><span class="lineno"> 2335</span>&#160; <a class="code" href="sync_8h.html#a35644e2b75a93da0cb0f6c768f34efa8">LOCK2</a>(<a class="code" href="validation_8cpp.html#a1ed8285f0fe3c6799c53265ce72552c8">cs_main</a>, cs_wallet);</div><div class="line"><a name="l02336"></a><span class="lineno"> 2336</span>&#160; <span class="keywordflow">for</span> (map&lt;uint256, CWalletTx&gt;::const_iterator it = mapWallet.begin(); it != mapWallet.end(); ++it)</div><div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>&#160; {</div><div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>&#160; <span class="keyword">const</span> <a class="code" href="classCWalletTx.html">CWalletTx</a>* pcoin = &amp;(*it).second;</div><div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>&#160; <span class="keywordflow">if</span> (!pcoin-&gt;<a class="code" href="group__mapWallet.html#ga71efb0d5b5def8ae00a1d74b8741bfcb">IsTrusted</a>() &amp;&amp; pcoin-&gt;<a class="code" href="classCMerkleTx.html#a5bf3a355593ecce5799de92d013149b1">GetDepthInMainChain</a>() == 0 &amp;&amp; pcoin-&gt;<a class="code" href="group__mapWallet.html#gae4af382e1eeba62ee7e84100c7234f23">InMempool</a>())</div><div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>&#160; nTotal += pcoin-&gt;<a class="code" href="group__mapWallet.html#gac78c4da3c420b2b28370cba7044dd68d">GetAvailableWatchOnlyCredit</a>();</div><div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>&#160; }</div><div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>&#160; }</div><div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>&#160; <span class="keywordflow">return</span> nTotal;</div><div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>&#160;}</div><div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>&#160;</div><div class="line"><a name="l02346"></a><span class="lineno"><a class="line" href="group__Actions.html#ga1372ba886aaeda65bf28758c9ccb65b4"> 2346</a></span>&#160;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="group__Actions.html#ga1372ba886aaeda65bf28758c9ccb65b4">CWallet::GetImmatureWatchOnlyBalance</a>()<span class="keyword"> const</span></div><div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nTotal = 0;</div><div class="line"><a name="l02349"></a><span class="lineno"> 2349</span>&#160; {</div><div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>&#160; <a class="code" href="sync_8h.html#a35644e2b75a93da0cb0f6c768f34efa8">LOCK2</a>(<a class="code" href="validation_8cpp.html#a1ed8285f0fe3c6799c53265ce72552c8">cs_main</a>, cs_wallet);</div><div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>&#160; <span class="keywordflow">for</span> (map&lt;uint256, CWalletTx&gt;::const_iterator it = mapWallet.begin(); it != mapWallet.end(); ++it)</div><div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>&#160; {</div><div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>&#160; <span class="keyword">const</span> <a class="code" href="classCWalletTx.html">CWalletTx</a>* pcoin = &amp;(*it).second;</div><div class="line"><a name="l02354"></a><span class="lineno"> 2354</span>&#160; nTotal += pcoin-&gt;<a class="code" href="group__mapWallet.html#ga72f8eabb937fe06b415316c2ef4ea510">GetImmatureWatchOnlyCredit</a>();</div><div class="line"><a name="l02355"></a><span class="lineno"> 2355</span>&#160; }</div><div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>&#160; }</div><div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>&#160; <span class="keywordflow">return</span> nTotal;</div><div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>&#160;}</div><div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>&#160;</div><div class="line"><a name="l02360"></a><span class="lineno"><a class="line" href="group__Actions.html#ga1cc229323a238a59d4eb592286c8bf2a"> 2360</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__Actions.html#ga1cc229323a238a59d4eb592286c8bf2a">CWallet::AvailableCoins</a>(vector&lt;COutput&gt;&amp; <a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>, <span class="keywordtype">bool</span> fOnlyConfirmed, <span class="keyword">const</span> <a class="code" href="classCCoinControl.html">CCoinControl</a> *coinControl, <span class="keywordtype">bool</span> fIncludeZeroValue, <a class="code" href="wallet_8h.html#a90b09b05f289ac32704a6446a94566ce">AvailableCoinsType</a> nCoinType, <span class="keywordtype">bool</span> fUseInstantSend)<span class="keyword"> const</span></div><div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>&#160; <a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>.clear();</div><div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>&#160;</div><div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>&#160; {</div><div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>&#160; <a class="code" href="sync_8h.html#a35644e2b75a93da0cb0f6c768f34efa8">LOCK2</a>(<a class="code" href="validation_8cpp.html#a1ed8285f0fe3c6799c53265ce72552c8">cs_main</a>, cs_wallet);</div><div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>&#160; <span class="keywordflow">for</span> (map&lt;uint256, CWalletTx&gt;::const_iterator it = mapWallet.begin(); it != mapWallet.end(); ++it)</div><div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>&#160; {</div><div class="line"><a name="l02368"></a><span class="lineno"> 2368</span>&#160; <span class="keyword">const</span> <a class="code" href="classuint256.html">uint256</a>&amp; wtxid = it-&gt;first;</div><div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>&#160; <span class="keyword">const</span> <a class="code" href="classCWalletTx.html">CWalletTx</a>* pcoin = &amp;(*it).second;</div><div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>&#160;</div><div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="validation_8cpp.html#a7e254ea66e047c3d3ed0bedc5997fc4f">CheckFinalTx</a>(*pcoin))</div><div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>&#160;</div><div class="line"><a name="l02374"></a><span class="lineno"> 2374</span>&#160; <span class="keywordflow">if</span> (fOnlyConfirmed &amp;&amp; !pcoin-&gt;<a class="code" href="group__mapWallet.html#ga71efb0d5b5def8ae00a1d74b8741bfcb">IsTrusted</a>())</div><div class="line"><a name="l02375"></a><span class="lineno"> 2375</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02376"></a><span class="lineno"> 2376</span>&#160;</div><div class="line"><a name="l02377"></a><span class="lineno"> 2377</span>&#160; <span class="keywordflow">if</span> (pcoin-&gt;<a class="code" href="classCTransaction.html#a96256e8ac1bf79ad9c057e48c41132dd">IsCoinBase</a>() &amp;&amp; pcoin-&gt;<a class="code" href="classCMerkleTx.html#a69ebd437f7b44169659c3527fe73b6ab">GetBlocksToMaturity</a>() &gt; 0)</div><div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>&#160;</div><div class="line"><a name="l02380"></a><span class="lineno"> 2380</span>&#160; <span class="keywordtype">int</span> nDepth = pcoin-&gt;<a class="code" href="classCMerkleTx.html#a5bf3a355593ecce5799de92d013149b1">GetDepthInMainChain</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l02381"></a><span class="lineno"> 2381</span>&#160; <span class="comment">// do not use IX for inputs that have less then INSTANTSEND_CONFIRMATIONS_REQUIRED blockchain confirmations</span></div><div class="line"><a name="l02382"></a><span class="lineno"> 2382</span>&#160; <span class="keywordflow">if</span> (fUseInstantSend &amp;&amp; nDepth &lt; <a class="code" href="instantx_8h.html#a8ad513b37763e4e94cf473adbfc9708e">INSTANTSEND_CONFIRMATIONS_REQUIRED</a>)</div><div class="line"><a name="l02383"></a><span class="lineno"> 2383</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02384"></a><span class="lineno"> 2384</span>&#160;</div><div class="line"><a name="l02385"></a><span class="lineno"> 2385</span>&#160; <span class="comment">// We should not consider coins which aren&#39;t at least in our mempool</span></div><div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>&#160; <span class="comment">// It&#39;s possible for these to be conflicted via ancestors which we may never be able to detect</span></div><div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>&#160; <span class="keywordflow">if</span> (nDepth == 0 &amp;&amp; !pcoin-&gt;<a class="code" href="group__mapWallet.html#gae4af382e1eeba62ee7e84100c7234f23">InMempool</a>())</div><div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>&#160;</div><div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; pcoin-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>.size(); i++) {</div><div class="line"><a name="l02391"></a><span class="lineno"> 2391</span>&#160; <span class="keywordtype">bool</span> found = <span class="keyword">false</span>;</div><div class="line"><a name="l02392"></a><span class="lineno"> 2392</span>&#160; <span class="keywordflow">if</span>(nCoinType == <a class="code" href="wallet_8h.html#a90b09b05f289ac32704a6446a94566ceaab4c4a7abab40ebdb2706c1708fff22e">ONLY_DENOMINATED</a>) {</div><div class="line"><a name="l02393"></a><span class="lineno"> 2393</span>&#160; found = IsDenominatedAmount(pcoin-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[i].nValue);</div><div class="line"><a name="l02394"></a><span class="lineno"> 2394</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(nCoinType == <a class="code" href="wallet_8h.html#a90b09b05f289ac32704a6446a94566ceab6264c785b1784dcb35ee9ddb84b8583">ONLY_NOT1000IFMN</a>) {</div><div class="line"><a name="l02395"></a><span class="lineno"> 2395</span>&#160; found = !(<a class="code" href="util_8cpp.html#af26e0e38b52f08409d399c04cde68c22">fMasterNode</a> &amp;&amp; pcoin-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[i].nValue == 1000*<a class="code" href="amount_8h.html#aed6bcb17bc73a5dcf33250e9c2c023cc">COIN</a>);</div><div class="line"><a name="l02396"></a><span class="lineno"> 2396</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(nCoinType == <a class="code" href="wallet_8h.html#a90b09b05f289ac32704a6446a94566cea35c9bedf196c5d09731928695c969b70">ONLY_NONDENOMINATED_NOT1000IFMN</a>) {</div><div class="line"><a name="l02397"></a><span class="lineno"> 2397</span>&#160; <span class="keywordflow">if</span> (IsCollateralAmount(pcoin-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[i].nValue)) <span class="keywordflow">continue</span>; <span class="comment">// do not use collateral amounts</span></div><div class="line"><a name="l02398"></a><span class="lineno"> 2398</span>&#160; found = !IsDenominatedAmount(pcoin-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[i].nValue);</div><div class="line"><a name="l02399"></a><span class="lineno"> 2399</span>&#160; <span class="keywordflow">if</span>(found &amp;&amp; <a class="code" href="util_8cpp.html#af26e0e38b52f08409d399c04cde68c22">fMasterNode</a>) found = pcoin-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[i].nValue != 1000*<a class="code" href="amount_8h.html#aed6bcb17bc73a5dcf33250e9c2c023cc">COIN</a>; <span class="comment">// do not use Hot MN funds</span></div><div class="line"><a name="l02400"></a><span class="lineno"> 2400</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(nCoinType == <a class="code" href="wallet_8h.html#a90b09b05f289ac32704a6446a94566cea3eec6f6b31b59d32f5dc13c63bae582d">ONLY_1000</a>) {</div><div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>&#160; found = pcoin-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[i].nValue == 1000*<a class="code" href="amount_8h.html#aed6bcb17bc73a5dcf33250e9c2c023cc">COIN</a>;</div><div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(nCoinType == <a class="code" href="wallet_8h.html#a90b09b05f289ac32704a6446a94566cea8454489afd757a138dd833cb00cf7aab">ONLY_PRIVATESEND_COLLATERAL</a>) {</div><div class="line"><a name="l02403"></a><span class="lineno"> 2403</span>&#160; found = IsCollateralAmount(pcoin-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[i].nValue);</div><div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>&#160; found = <span class="keyword">true</span>;</div><div class="line"><a name="l02406"></a><span class="lineno"> 2406</span>&#160; }</div><div class="line"><a name="l02407"></a><span class="lineno"> 2407</span>&#160; <span class="keywordflow">if</span>(!found) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02408"></a><span class="lineno"> 2408</span>&#160;</div><div class="line"><a name="l02409"></a><span class="lineno"> 2409</span>&#160; <a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20d">isminetype</a> mine = <a class="code" href="wallet__ismine_8cpp.html#adc59cf67d903c1ba1ef225561b85bfce">IsMine</a>(pcoin-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[i]);</div><div class="line"><a name="l02410"></a><span class="lineno"> 2410</span>&#160; <span class="keywordflow">if</span> (!(IsSpent(wtxid, i)) &amp;&amp; mine != <a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20dabd6dd5ba8963fe559dda755950f29baf">ISMINE_NO</a> &amp;&amp;</div><div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>&#160; (!IsLockedCoin((*it).first, i) || nCoinType == <a class="code" href="wallet_8h.html#a90b09b05f289ac32704a6446a94566cea3eec6f6b31b59d32f5dc13c63bae582d">ONLY_1000</a>) &amp;&amp;</div><div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>&#160; (pcoin-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[i].nValue &gt; 0 || fIncludeZeroValue) &amp;&amp;</div><div class="line"><a name="l02413"></a><span class="lineno"> 2413</span>&#160; (!coinControl || !coinControl-&gt;<a class="code" href="classCCoinControl.html#a20b259681a7c62b2119256a4862091ac">HasSelected</a>() || coinControl-&gt;<a class="code" href="classCCoinControl.html#acd3e8686c8d78535153ed9fd734ef029">fAllowOtherInputs</a> || coinControl-&gt;<a class="code" href="classCCoinControl.html#a6b419aa41fd3a9d037856d8814d594e1">IsSelected</a>(<a class="code" href="classCOutPoint.html">COutPoint</a>((*it).first, i))))</div><div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>&#160; <a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>.push_back(<a class="code" href="classCOutput.html">COutput</a>(pcoin, i, nDepth,</div><div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>&#160; ((mine &amp; <a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20daaf93acf4732907100f55dc017b6daf58">ISMINE_SPENDABLE</a>) != <a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20dabd6dd5ba8963fe559dda755950f29baf">ISMINE_NO</a>) ||</div><div class="line"><a name="l02416"></a><span class="lineno"> 2416</span>&#160; (coinControl &amp;&amp; coinControl-&gt;<a class="code" href="classCCoinControl.html#a83d3144efcfdd0e87467f0b2d98b4302">fAllowWatchOnly</a> &amp;&amp; (mine &amp; <a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20da973114cfd473ca92166b83740527e0f1">ISMINE_WATCH_SOLVABLE</a>) != <a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20dabd6dd5ba8963fe559dda755950f29baf">ISMINE_NO</a>),</div><div class="line"><a name="l02417"></a><span class="lineno"> 2417</span>&#160; (mine &amp; (<a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20daaf93acf4732907100f55dc017b6daf58">ISMINE_SPENDABLE</a> | <a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20da973114cfd473ca92166b83740527e0f1">ISMINE_WATCH_SOLVABLE</a>)) != <a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20dabd6dd5ba8963fe559dda755950f29baf">ISMINE_NO</a>));</div><div class="line"><a name="l02418"></a><span class="lineno"> 2418</span>&#160; }</div><div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>&#160; }</div><div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>&#160; }</div><div class="line"><a name="l02421"></a><span class="lineno"> 2421</span>&#160;}</div><div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>&#160;</div><div class="line"><a name="l02423"></a><span class="lineno"><a class="line" href="group__Actions.html#ga5120281db2d155cd8254c692267c9d37"> 2423</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="group__Actions.html#ga5120281db2d155cd8254c692267c9d37">ApproximateBestSubset</a>(vector&lt;pair&lt;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a>, pair&lt;const CWalletTx*,unsigned int&gt; &gt; &gt;vValue, <span class="keyword">const</span> <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a>&amp; nTotalLower, <span class="keyword">const</span> <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a>&amp; nTargetValue,</div><div class="line"><a name="l02424"></a><span class="lineno"> 2424</span>&#160; vector&lt;char&gt;&amp; vfBest, <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a>&amp; nBest, <span class="keywordtype">int</span> iterations = 1000, <span class="keywordtype">bool</span> fUseInstantSend = <span class="keyword">false</span>)</div><div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>&#160;{</div><div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>&#160; vector&lt;char&gt; vfIncluded;</div><div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>&#160;</div><div class="line"><a name="l02428"></a><span class="lineno"> 2428</span>&#160; vfBest.assign(vValue.size(), <span class="keyword">true</span>);</div><div class="line"><a name="l02429"></a><span class="lineno"> 2429</span>&#160; nBest = nTotalLower;</div><div class="line"><a name="l02430"></a><span class="lineno"> 2430</span>&#160;</div><div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>&#160; <a class="code" href="random_8cpp.html#aacea702dc3d4d2bcbbd5eb96d410417c">seed_insecure_rand</a>();</div><div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>&#160;</div><div class="line"><a name="l02433"></a><span class="lineno"> 2433</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> nRep = 0; nRep &lt; iterations &amp;&amp; nBest != nTargetValue; nRep++)</div><div class="line"><a name="l02434"></a><span class="lineno"> 2434</span>&#160; {</div><div class="line"><a name="l02435"></a><span class="lineno"> 2435</span>&#160; vfIncluded.assign(vValue.size(), <span class="keyword">false</span>);</div><div class="line"><a name="l02436"></a><span class="lineno"> 2436</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nTotal = 0;</div><div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>&#160; <span class="keywordtype">bool</span> fReachedTarget = <span class="keyword">false</span>;</div><div class="line"><a name="l02438"></a><span class="lineno"> 2438</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">int</span> nPass = 0; nPass &lt; 2 &amp;&amp; !fReachedTarget; nPass++)</div><div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>&#160; {</div><div class="line"><a name="l02440"></a><span class="lineno"> 2440</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; vValue.size(); i++)</div><div class="line"><a name="l02441"></a><span class="lineno"> 2441</span>&#160; {</div><div class="line"><a name="l02442"></a><span class="lineno"> 2442</span>&#160; <span class="keywordflow">if</span> (fUseInstantSend &amp;&amp; nTotal + vValue[i].first &gt; <a class="code" href="spork_8cpp.html#af6873019c3095ea6b554795e4040395c">sporkManager</a>.<a class="code" href="classCSporkManager.html#ac02210f3ce7c779421aeed383c3f6e6c">GetSporkValue</a>(<a class="code" href="spork_8h.html#a6c8f34b96d65df9867e780ff0ca79c22">SPORK_5_INSTANTSEND_MAX_VALUE</a>)*<a class="code" href="amount_8h.html#aed6bcb17bc73a5dcf33250e9c2c023cc">COIN</a>) {</div><div class="line"><a name="l02443"></a><span class="lineno"> 2443</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>&#160; }</div><div class="line"><a name="l02445"></a><span class="lineno"> 2445</span>&#160; <span class="comment">//The solver here uses a randomized algorithm,</span></div><div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>&#160; <span class="comment">//the randomness serves no real security purpose but is just</span></div><div class="line"><a name="l02447"></a><span class="lineno"> 2447</span>&#160; <span class="comment">//needed to prevent degenerate behavior and it is important</span></div><div class="line"><a name="l02448"></a><span class="lineno"> 2448</span>&#160; <span class="comment">//that the rng is fast. We do not use a constant random sequence,</span></div><div class="line"><a name="l02449"></a><span class="lineno"> 2449</span>&#160; <span class="comment">//because there may be some privacy improvement by making</span></div><div class="line"><a name="l02450"></a><span class="lineno"> 2450</span>&#160; <span class="comment">//the selection random.</span></div><div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>&#160; <span class="keywordflow">if</span> (nPass == 0 ? <a class="code" href="random_8h.html#ae8f7a2f188545bbbf746160adc42038e">insecure_rand</a>()&amp;1 : !vfIncluded[i])</div><div class="line"><a name="l02452"></a><span class="lineno"> 2452</span>&#160; {</div><div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>&#160; nTotal += vValue[i].first;</div><div class="line"><a name="l02454"></a><span class="lineno"> 2454</span>&#160; vfIncluded[i] = <span class="keyword">true</span>;</div><div class="line"><a name="l02455"></a><span class="lineno"> 2455</span>&#160; <span class="keywordflow">if</span> (nTotal &gt;= nTargetValue)</div><div class="line"><a name="l02456"></a><span class="lineno"> 2456</span>&#160; {</div><div class="line"><a name="l02457"></a><span class="lineno"> 2457</span>&#160; fReachedTarget = <span class="keyword">true</span>;</div><div class="line"><a name="l02458"></a><span class="lineno"> 2458</span>&#160; <span class="keywordflow">if</span> (nTotal &lt; nBest)</div><div class="line"><a name="l02459"></a><span class="lineno"> 2459</span>&#160; {</div><div class="line"><a name="l02460"></a><span class="lineno"> 2460</span>&#160; nBest = nTotal;</div><div class="line"><a name="l02461"></a><span class="lineno"> 2461</span>&#160; vfBest = vfIncluded;</div><div class="line"><a name="l02462"></a><span class="lineno"> 2462</span>&#160; }</div><div class="line"><a name="l02463"></a><span class="lineno"> 2463</span>&#160; nTotal -= vValue[i].first;</div><div class="line"><a name="l02464"></a><span class="lineno"> 2464</span>&#160; vfIncluded[i] = <span class="keyword">false</span>;</div><div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>&#160; }</div><div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>&#160; }</div><div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>&#160; }</div><div class="line"><a name="l02468"></a><span class="lineno"> 2468</span>&#160; }</div><div class="line"><a name="l02469"></a><span class="lineno"> 2469</span>&#160; }</div><div class="line"><a name="l02470"></a><span class="lineno"> 2470</span>&#160;</div><div class="line"><a name="l02471"></a><span class="lineno"> 2471</span>&#160; <span class="comment">//Reduces the approximate best subset by removing any inputs that are smaller than the surplus of nTotal beyond nTargetValue. </span></div><div class="line"><a name="l02472"></a><span class="lineno"> 2472</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; vValue.size(); i++)</div><div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>&#160; { </div><div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>&#160; <span class="keywordflow">if</span> (vfBest[i] &amp;&amp; (nBest - vValue[i].first) &gt;= nTargetValue )</div><div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>&#160; {</div><div class="line"><a name="l02476"></a><span class="lineno"> 2476</span>&#160; vfBest[i] = <span class="keyword">false</span>;</div><div class="line"><a name="l02477"></a><span class="lineno"> 2477</span>&#160; nBest -= vValue[i].first;</div><div class="line"><a name="l02478"></a><span class="lineno"> 2478</span>&#160; }</div><div class="line"><a name="l02479"></a><span class="lineno"> 2479</span>&#160; }</div><div class="line"><a name="l02480"></a><span class="lineno"> 2480</span>&#160;}</div><div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>&#160;</div><div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>&#160;<span class="comment">// move denoms down</span></div><div class="line"><a name="l02483"></a><span class="lineno"><a class="line" href="group__Actions.html#ga502a73c6cf145be4a420a8bc75c6a69e"> 2483</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__Actions.html#ga502a73c6cf145be4a420a8bc75c6a69e">less_then_denom</a> (<span class="keyword">const</span> <a class="code" href="classCOutput.html">COutput</a>&amp; out1, <span class="keyword">const</span> <a class="code" href="classCOutput.html">COutput</a>&amp; out2)</div><div class="line"><a name="l02484"></a><span class="lineno"> 2484</span>&#160;{</div><div class="line"><a name="l02485"></a><span class="lineno"> 2485</span>&#160; <span class="keyword">const</span> <a class="code" href="classCWalletTx.html">CWalletTx</a> *pcoin1 = out1.<a class="code" href="classCOutput.html#ad5c15e7a2dc48258127b8fd5db421ad5">tx</a>;</div><div class="line"><a name="l02486"></a><span class="lineno"> 2486</span>&#160; <span class="keyword">const</span> <a class="code" href="classCWalletTx.html">CWalletTx</a> *pcoin2 = out2.<a class="code" href="classCOutput.html#ad5c15e7a2dc48258127b8fd5db421ad5">tx</a>;</div><div class="line"><a name="l02487"></a><span class="lineno"> 2487</span>&#160;</div><div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>&#160; <span class="keywordtype">bool</span> found1 = <span class="keyword">false</span>;</div><div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>&#160; <span class="keywordtype">bool</span> found2 = <span class="keyword">false</span>;</div><div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>&#160; BOOST_FOREACH(<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> d, <a class="code" href="classCPrivateSend.html#a43229314704738ac10f7daacb34ee3c1">CPrivateSend::GetStandardDenominations</a>()) <span class="comment">// loop through predefined denoms</span></div><div class="line"><a name="l02491"></a><span class="lineno"> 2491</span>&#160; {</div><div class="line"><a name="l02492"></a><span class="lineno"> 2492</span>&#160; <span class="keywordflow">if</span>(pcoin1-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[out1.<a class="code" href="classCOutput.html#ae1b3534a41afb09bb04a499017f2821e">i</a>].nValue == d) found1 = <span class="keyword">true</span>;</div><div class="line"><a name="l02493"></a><span class="lineno"> 2493</span>&#160; <span class="keywordflow">if</span>(pcoin2-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[out2.<a class="code" href="classCOutput.html#ae1b3534a41afb09bb04a499017f2821e">i</a>].nValue == d) found2 = <span class="keyword">true</span>;</div><div class="line"><a name="l02494"></a><span class="lineno"> 2494</span>&#160; }</div><div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>&#160; <span class="keywordflow">return</span> (!found1 &amp;&amp; found2);</div><div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>&#160;}</div><div class="line"><a name="l02497"></a><span class="lineno"> 2497</span>&#160;</div><div class="line"><a name="l02498"></a><span class="lineno"><a class="line" href="group__Actions.html#gac75c09aea2670e5d144161f285f41156"> 2498</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__Actions.html#gac75c09aea2670e5d144161f285f41156">CWallet::SelectCoinsMinConf</a>(<span class="keyword">const</span> <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a>&amp; nTargetValue, <span class="keywordtype">int</span> nConfMine, <span class="keywordtype">int</span> nConfTheirs, vector&lt;COutput&gt; <a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>,</div><div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>&#160; <span class="keyword">set</span>&lt;pair&lt;const CWalletTx*,unsigned int&gt; &gt;&amp; setCoinsRet, <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a>&amp; nValueRet, <span class="keywordtype">bool</span> fUseInstantSend)<span class="keyword"> const</span></div><div class="line"><a name="l02500"></a><span class="lineno"> 2500</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l02501"></a><span class="lineno"> 2501</span>&#160; setCoinsRet.clear();</div><div class="line"><a name="l02502"></a><span class="lineno"> 2502</span>&#160; nValueRet = 0;</div><div class="line"><a name="l02503"></a><span class="lineno"> 2503</span>&#160;</div><div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>&#160; <span class="comment">// List of values less than target</span></div><div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>&#160; pair&lt;CAmount, pair&lt;const CWalletTx*,unsigned int&gt; &gt; coinLowestLarger;</div><div class="line"><a name="l02506"></a><span class="lineno"> 2506</span>&#160; coinLowestLarger.first = fUseInstantSend</div><div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>&#160; ? <a class="code" href="spork_8cpp.html#af6873019c3095ea6b554795e4040395c">sporkManager</a>.<a class="code" href="classCSporkManager.html#ac02210f3ce7c779421aeed383c3f6e6c">GetSporkValue</a>(<a class="code" href="spork_8h.html#a6c8f34b96d65df9867e780ff0ca79c22">SPORK_5_INSTANTSEND_MAX_VALUE</a>)*<a class="code" href="amount_8h.html#aed6bcb17bc73a5dcf33250e9c2c023cc">COIN</a></div><div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>&#160; : std::numeric_limits&lt;CAmount&gt;::max();</div><div class="line"><a name="l02509"></a><span class="lineno"> 2509</span>&#160; coinLowestLarger.second.first = NULL;</div><div class="line"><a name="l02510"></a><span class="lineno"> 2510</span>&#160; vector&lt;pair&lt;CAmount, pair&lt;const CWalletTx*,unsigned int&gt; &gt; &gt; vValue;</div><div class="line"><a name="l02511"></a><span class="lineno"> 2511</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nTotalLower = 0;</div><div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>&#160;</div><div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>&#160; random_shuffle(<a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>.begin(), <a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>.end(), <a class="code" href="random_8cpp.html#a0e44e088732172da6662db2d5e37d4b2">GetRandInt</a>);</div><div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>&#160;</div><div class="line"><a name="l02515"></a><span class="lineno"> 2515</span>&#160; <span class="comment">// move denoms down on the list</span></div><div class="line"><a name="l02516"></a><span class="lineno"> 2516</span>&#160; sort(<a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>.begin(), <a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>.end(), <a class="code" href="group__Actions.html#ga502a73c6cf145be4a420a8bc75c6a69e">less_then_denom</a>);</div><div class="line"><a name="l02517"></a><span class="lineno"> 2517</span>&#160;</div><div class="line"><a name="l02518"></a><span class="lineno"> 2518</span>&#160; <span class="comment">// try to find nondenom first to prevent unneeded spending of mixed coins</span></div><div class="line"><a name="l02519"></a><span class="lineno"> 2519</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> tryDenom = 0; tryDenom &lt; 2; tryDenom++)</div><div class="line"><a name="l02520"></a><span class="lineno"> 2520</span>&#160; {</div><div class="line"><a name="l02521"></a><span class="lineno"> 2521</span>&#160; <a class="code" href="util_8h.html#aab1f837a2366f424bdc996fdf6352171">LogPrint</a>(<span class="stringliteral">&quot;selectcoins&quot;</span>, <span class="stringliteral">&quot;tryDenom: %d\n&quot;</span>, tryDenom);</div><div class="line"><a name="l02522"></a><span class="lineno"> 2522</span>&#160; vValue.clear();</div><div class="line"><a name="l02523"></a><span class="lineno"> 2523</span>&#160; nTotalLower = 0;</div><div class="line"><a name="l02524"></a><span class="lineno"> 2524</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="classCOutput.html">COutput</a> &amp;output, <a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>)</div><div class="line"><a name="l02525"></a><span class="lineno"> 2525</span>&#160; {</div><div class="line"><a name="l02526"></a><span class="lineno"> 2526</span>&#160; <span class="keywordflow">if</span> (!output.<a class="code" href="classCOutput.html#ab8fa647313fbc2cda12f8b064031dd11">fSpendable</a>)</div><div class="line"><a name="l02527"></a><span class="lineno"> 2527</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02528"></a><span class="lineno"> 2528</span>&#160;</div><div class="line"><a name="l02529"></a><span class="lineno"> 2529</span>&#160; <span class="keyword">const</span> <a class="code" href="classCWalletTx.html">CWalletTx</a> *pcoin = output.<a class="code" href="classCOutput.html#ad5c15e7a2dc48258127b8fd5db421ad5">tx</a>;</div><div class="line"><a name="l02530"></a><span class="lineno"> 2530</span>&#160;</div><div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>&#160;<span class="comment">// if (fDebug) LogPrint(&quot;selectcoins&quot;, &quot;value %s confirms %d\n&quot;, FormatMoney(pcoin-&gt;vout[output.i].nValue), output.nDepth);</span></div><div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>&#160; <span class="keywordflow">if</span> (output.<a class="code" href="classCOutput.html#a2eb24fc73c35fcc551b736d68bd1c64a">nDepth</a> &lt; (pcoin-&gt;<a class="code" href="classCWalletTx.html#a4b4fdec025af8171852c3eece1c2508f">IsFromMe</a>(<a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20da1fe9e47b4c162fd9a1779e59a11dd067">ISMINE_ALL</a>) ? nConfMine : nConfTheirs))</div><div class="line"><a name="l02533"></a><span class="lineno"> 2533</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02534"></a><span class="lineno"> 2534</span>&#160;</div><div class="line"><a name="l02535"></a><span class="lineno"> 2535</span>&#160; <span class="keywordtype">int</span> i = output.<a class="code" href="classCOutput.html#ae1b3534a41afb09bb04a499017f2821e">i</a>;</div><div class="line"><a name="l02536"></a><span class="lineno"> 2536</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a> = pcoin-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[i].nValue;</div><div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>&#160; <span class="keywordflow">if</span> (tryDenom == 0 &amp;&amp; IsDenominatedAmount(<a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a>)) <span class="keywordflow">continue</span>; <span class="comment">// we don&#39;t want denom values on first run</span></div><div class="line"><a name="l02538"></a><span class="lineno"> 2538</span>&#160;</div><div class="line"><a name="l02539"></a><span class="lineno"> 2539</span>&#160; pair&lt;CAmount,pair&lt;const CWalletTx*,unsigned int&gt; &gt; coin = make_pair(<a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a>,make_pair(pcoin, i));</div><div class="line"><a name="l02540"></a><span class="lineno"> 2540</span>&#160;</div><div class="line"><a name="l02541"></a><span class="lineno"> 2541</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a> == nTargetValue)</div><div class="line"><a name="l02542"></a><span class="lineno"> 2542</span>&#160; {</div><div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>&#160; setCoinsRet.insert(coin.second);</div><div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>&#160; nValueRet += coin.first;</div><div class="line"><a name="l02545"></a><span class="lineno"> 2545</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l02546"></a><span class="lineno"> 2546</span>&#160; }</div><div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a> &lt; nTargetValue + <a class="code" href="wallet_8h.html#a49f9ebdfbdb1dbabf084277c4d0f88d2">MIN_CHANGE</a>)</div><div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>&#160; {</div><div class="line"><a name="l02549"></a><span class="lineno"> 2549</span>&#160; vValue.push_back(coin);</div><div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>&#160; nTotalLower += <a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a>;</div><div class="line"><a name="l02551"></a><span class="lineno"> 2551</span>&#160; }</div><div class="line"><a name="l02552"></a><span class="lineno"> 2552</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a> &lt; coinLowestLarger.first)</div><div class="line"><a name="l02553"></a><span class="lineno"> 2553</span>&#160; {</div><div class="line"><a name="l02554"></a><span class="lineno"> 2554</span>&#160; coinLowestLarger = coin;</div><div class="line"><a name="l02555"></a><span class="lineno"> 2555</span>&#160; }</div><div class="line"><a name="l02556"></a><span class="lineno"> 2556</span>&#160; }</div><div class="line"><a name="l02557"></a><span class="lineno"> 2557</span>&#160;</div><div class="line"><a name="l02558"></a><span class="lineno"> 2558</span>&#160; <span class="keywordflow">if</span> (nTotalLower == nTargetValue)</div><div class="line"><a name="l02559"></a><span class="lineno"> 2559</span>&#160; {</div><div class="line"><a name="l02560"></a><span class="lineno"> 2560</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; vValue.size(); ++i)</div><div class="line"><a name="l02561"></a><span class="lineno"> 2561</span>&#160; {</div><div class="line"><a name="l02562"></a><span class="lineno"> 2562</span>&#160; setCoinsRet.insert(vValue[i].second);</div><div class="line"><a name="l02563"></a><span class="lineno"> 2563</span>&#160; nValueRet += vValue[i].first;</div><div class="line"><a name="l02564"></a><span class="lineno"> 2564</span>&#160; }</div><div class="line"><a name="l02565"></a><span class="lineno"> 2565</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l02566"></a><span class="lineno"> 2566</span>&#160; }</div><div class="line"><a name="l02567"></a><span class="lineno"> 2567</span>&#160;</div><div class="line"><a name="l02568"></a><span class="lineno"> 2568</span>&#160; <span class="keywordflow">if</span> (nTotalLower &lt; nTargetValue)</div><div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>&#160; {</div><div class="line"><a name="l02570"></a><span class="lineno"> 2570</span>&#160; <span class="keywordflow">if</span> (coinLowestLarger.second.first == NULL) <span class="comment">// there is no input larger than nTargetValue</span></div><div class="line"><a name="l02571"></a><span class="lineno"> 2571</span>&#160; {</div><div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>&#160; <span class="keywordflow">if</span> (tryDenom == 0)</div><div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>&#160; <span class="comment">// we didn&#39;t look at denom yet, let&#39;s do it</span></div><div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>&#160; <span class="comment">// we looked at everything possible and didn&#39;t find anything, no luck</span></div><div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>&#160; }</div><div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>&#160; setCoinsRet.insert(coinLowestLarger.second);</div><div class="line"><a name="l02580"></a><span class="lineno"> 2580</span>&#160; nValueRet += coinLowestLarger.first;</div><div class="line"><a name="l02581"></a><span class="lineno"> 2581</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l02582"></a><span class="lineno"> 2582</span>&#160; }</div><div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>&#160;</div><div class="line"><a name="l02584"></a><span class="lineno"> 2584</span>&#160; <span class="comment">// nTotalLower &gt; nTargetValue</span></div><div class="line"><a name="l02585"></a><span class="lineno"> 2585</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l02586"></a><span class="lineno"> 2586</span>&#160;</div><div class="line"><a name="l02587"></a><span class="lineno"> 2587</span>&#160; }</div><div class="line"><a name="l02588"></a><span class="lineno"> 2588</span>&#160;</div><div class="line"><a name="l02589"></a><span class="lineno"> 2589</span>&#160; <span class="comment">// Solve subset sum by stochastic approximation</span></div><div class="line"><a name="l02590"></a><span class="lineno"> 2590</span>&#160; sort(vValue.rbegin(), vValue.rend(), <a class="code" href="structCompareValueOnly.html">CompareValueOnly</a>());</div><div class="line"><a name="l02591"></a><span class="lineno"> 2591</span>&#160; vector&lt;char&gt; vfBest;</div><div class="line"><a name="l02592"></a><span class="lineno"> 2592</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nBest;</div><div class="line"><a name="l02593"></a><span class="lineno"> 2593</span>&#160;</div><div class="line"><a name="l02594"></a><span class="lineno"> 2594</span>&#160; <a class="code" href="group__Actions.html#ga5120281db2d155cd8254c692267c9d37">ApproximateBestSubset</a>(vValue, nTotalLower, nTargetValue, vfBest, nBest, fUseInstantSend);</div><div class="line"><a name="l02595"></a><span class="lineno"> 2595</span>&#160; <span class="keywordflow">if</span> (nBest != nTargetValue &amp;&amp; nTotalLower &gt;= nTargetValue + <a class="code" href="wallet_8h.html#a49f9ebdfbdb1dbabf084277c4d0f88d2">MIN_CHANGE</a>)</div><div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>&#160; <a class="code" href="group__Actions.html#ga5120281db2d155cd8254c692267c9d37">ApproximateBestSubset</a>(vValue, nTotalLower, nTargetValue + <a class="code" href="wallet_8h.html#a49f9ebdfbdb1dbabf084277c4d0f88d2">MIN_CHANGE</a>, vfBest, nBest, fUseInstantSend);</div><div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>&#160;</div><div class="line"><a name="l02598"></a><span class="lineno"> 2598</span>&#160; <span class="comment">// If we have a bigger coin and (either the stochastic approximation didn&#39;t find a good solution,</span></div><div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>&#160; <span class="comment">// or the next bigger coin is closer), return the bigger coin</span></div><div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>&#160; <span class="keywordflow">if</span> (coinLowestLarger.second.first &amp;&amp;</div><div class="line"><a name="l02601"></a><span class="lineno"> 2601</span>&#160; ((nBest != nTargetValue &amp;&amp; nBest &lt; nTargetValue + <a class="code" href="wallet_8h.html#a49f9ebdfbdb1dbabf084277c4d0f88d2">MIN_CHANGE</a>) || coinLowestLarger.first &lt;= nBest))</div><div class="line"><a name="l02602"></a><span class="lineno"> 2602</span>&#160; {</div><div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>&#160; setCoinsRet.insert(coinLowestLarger.second);</div><div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>&#160; nValueRet += coinLowestLarger.first;</div><div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>&#160; }</div><div class="line"><a name="l02606"></a><span class="lineno"> 2606</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>&#160; <span class="keywordtype">string</span> s = <span class="stringliteral">&quot;CWallet::SelectCoinsMinConf best subset: &quot;</span>;</div><div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; vValue.size(); i++)</div><div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>&#160; {</div><div class="line"><a name="l02610"></a><span class="lineno"> 2610</span>&#160; <span class="keywordflow">if</span> (vfBest[i])</div><div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>&#160; {</div><div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>&#160; setCoinsRet.insert(vValue[i].second);</div><div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>&#160; nValueRet += vValue[i].first;</div><div class="line"><a name="l02614"></a><span class="lineno"> 2614</span>&#160; s += <a class="code" href="utilmoneystr_8cpp.html#a0043c9abedcbce2d7d1d2cacaf595c9e">FormatMoney</a>(vValue[i].first) + <span class="stringliteral">&quot; &quot;</span>;</div><div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>&#160; }</div><div class="line"><a name="l02616"></a><span class="lineno"> 2616</span>&#160; }</div><div class="line"><a name="l02617"></a><span class="lineno"> 2617</span>&#160; <a class="code" href="util_8h.html#aab1f837a2366f424bdc996fdf6352171">LogPrint</a>(<span class="stringliteral">&quot;selectcoins&quot;</span>, <span class="stringliteral">&quot;%s - total %s\n&quot;</span>, s, <a class="code" href="utilmoneystr_8cpp.html#a0043c9abedcbce2d7d1d2cacaf595c9e">FormatMoney</a>(nBest));</div><div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>&#160; }</div><div class="line"><a name="l02619"></a><span class="lineno"> 2619</span>&#160;</div><div class="line"><a name="l02620"></a><span class="lineno"> 2620</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>&#160;}</div><div class="line"><a name="l02622"></a><span class="lineno"> 2622</span>&#160;</div><div class="line"><a name="l02623"></a><span class="lineno"><a class="line" href="group__Actions.html#ga7dfe1a401b486f3a36fd3b3b94a803d3"> 2623</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__Actions.html#ga7dfe1a401b486f3a36fd3b3b94a803d3">CWallet::SelectCoins</a>(<span class="keyword">const</span> <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a>&amp; nTargetValue, <span class="keyword">set</span>&lt;pair&lt;const CWalletTx*,unsigned int&gt; &gt;&amp; setCoinsRet, <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a>&amp; nValueRet, <span class="keyword">const</span> <a class="code" href="classCCoinControl.html">CCoinControl</a>* coinControl, <a class="code" href="wallet_8h.html#a90b09b05f289ac32704a6446a94566ce">AvailableCoinsType</a> nCoinType, <span class="keywordtype">bool</span> fUseInstantSend)<span class="keyword"> const</span></div><div class="line"><a name="l02624"></a><span class="lineno"> 2624</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l02625"></a><span class="lineno"> 2625</span>&#160; <span class="comment">// Note: this function should never be used for &quot;always free&quot; tx types like dstx</span></div><div class="line"><a name="l02626"></a><span class="lineno"> 2626</span>&#160;</div><div class="line"><a name="l02627"></a><span class="lineno"> 2627</span>&#160; vector&lt;COutput&gt; <a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>;</div><div class="line"><a name="l02628"></a><span class="lineno"> 2628</span>&#160; AvailableCoins(<a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>, <span class="keyword">true</span>, coinControl, <span class="keyword">false</span>, nCoinType, fUseInstantSend);</div><div class="line"><a name="l02629"></a><span class="lineno"> 2629</span>&#160;</div><div class="line"><a name="l02630"></a><span class="lineno"> 2630</span>&#160; <span class="comment">// coin control -&gt; return all selected outputs (we want all selected to go into the transaction for sure)</span></div><div class="line"><a name="l02631"></a><span class="lineno"> 2631</span>&#160; <span class="keywordflow">if</span> (coinControl &amp;&amp; coinControl-&gt;<a class="code" href="classCCoinControl.html#a20b259681a7c62b2119256a4862091ac">HasSelected</a>() &amp;&amp; !coinControl-&gt;<a class="code" href="classCCoinControl.html#acd3e8686c8d78535153ed9fd734ef029">fAllowOtherInputs</a>)</div><div class="line"><a name="l02632"></a><span class="lineno"> 2632</span>&#160; {</div><div class="line"><a name="l02633"></a><span class="lineno"> 2633</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="classCOutput.html">COutput</a>&amp; <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>, <a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>)</div><div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>&#160; {</div><div class="line"><a name="l02635"></a><span class="lineno"> 2635</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.fSpendable)</div><div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02637"></a><span class="lineno"> 2637</span>&#160;</div><div class="line"><a name="l02638"></a><span class="lineno"> 2638</span>&#160; <span class="keywordflow">if</span>(nCoinType == <a class="code" href="wallet_8h.html#a90b09b05f289ac32704a6446a94566ceaab4c4a7abab40ebdb2706c1708fff22e">ONLY_DENOMINATED</a>) {</div><div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>&#160; <a class="code" href="classCOutPoint.html">COutPoint</a> outpoint = <a class="code" href="classCOutPoint.html">COutPoint</a>(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.tx-&gt;GetHash(),<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.i);</div><div class="line"><a name="l02640"></a><span class="lineno"> 2640</span>&#160; <span class="keywordtype">int</span> nRounds = GetOutpointPrivateSendRounds(outpoint);</div><div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>&#160; <span class="comment">// make sure it&#39;s actually anonymized</span></div><div class="line"><a name="l02642"></a><span class="lineno"> 2642</span>&#160; <span class="keywordflow">if</span>(nRounds &lt; <a class="code" href="privatesend-client_8cpp.html#ae36d24fafeb216cd61fb55e3475154a3">privateSendClient</a>.<a class="code" href="classCPrivateSendClient.html#a9eaafa61ebf8cf727cdd2b4ffb69cad3">nPrivateSendRounds</a>) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>&#160; }</div><div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>&#160; nValueRet += <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.tx-&gt;vout[<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.i].nValue;</div><div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>&#160; setCoinsRet.insert(make_pair(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.tx, <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.i));</div><div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>&#160; }</div><div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>&#160;</div><div class="line"><a name="l02648"></a><span class="lineno"> 2648</span>&#160; <span class="keywordflow">return</span> (nValueRet &gt;= nTargetValue);</div><div class="line"><a name="l02649"></a><span class="lineno"> 2649</span>&#160; }</div><div class="line"><a name="l02650"></a><span class="lineno"> 2650</span>&#160;</div><div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>&#160; <span class="comment">//if we&#39;re doing only denominated, we need to round up to the nearest smallest denomination</span></div><div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>&#160; <span class="keywordflow">if</span>(nCoinType == <a class="code" href="wallet_8h.html#a90b09b05f289ac32704a6446a94566ceaab4c4a7abab40ebdb2706c1708fff22e">ONLY_DENOMINATED</a>) {</div><div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>&#160; std::vector&lt;CAmount&gt; vecPrivateSendDenominations = <a class="code" href="classCPrivateSend.html#a43229314704738ac10f7daacb34ee3c1">CPrivateSend::GetStandardDenominations</a>();</div><div class="line"><a name="l02654"></a><span class="lineno"> 2654</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nSmallestDenom = vecPrivateSendDenominations.back();</div><div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>&#160; <span class="comment">// Make outputs by looping through denominations, from large to small</span></div><div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>&#160; BOOST_FOREACH(<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nDenom, vecPrivateSendDenominations)</div><div class="line"><a name="l02657"></a><span class="lineno"> 2657</span>&#160; {</div><div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="classCOutput.html">COutput</a>&amp; <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>, <a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>)</div><div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>&#160; {</div><div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>&#160; <span class="comment">//make sure it&#39;s the denom we&#39;re looking for, round the amount up to smallest denom</span></div><div class="line"><a name="l02661"></a><span class="lineno"> 2661</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.tx-&gt;vout[<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.i].nValue == nDenom &amp;&amp; nValueRet + nDenom &lt; nTargetValue + nSmallestDenom) {</div><div class="line"><a name="l02662"></a><span class="lineno"> 2662</span>&#160; <a class="code" href="classCOutPoint.html">COutPoint</a> outpoint = <a class="code" href="classCOutPoint.html">COutPoint</a>(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.tx-&gt;GetHash(),<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.i);</div><div class="line"><a name="l02663"></a><span class="lineno"> 2663</span>&#160; <span class="keywordtype">int</span> nRounds = GetOutpointPrivateSendRounds(outpoint);</div><div class="line"><a name="l02664"></a><span class="lineno"> 2664</span>&#160; <span class="comment">// make sure it&#39;s actually anonymized</span></div><div class="line"><a name="l02665"></a><span class="lineno"> 2665</span>&#160; <span class="keywordflow">if</span>(nRounds &lt; <a class="code" href="privatesend-client_8cpp.html#ae36d24fafeb216cd61fb55e3475154a3">privateSendClient</a>.<a class="code" href="classCPrivateSendClient.html#a9eaafa61ebf8cf727cdd2b4ffb69cad3">nPrivateSendRounds</a>) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02666"></a><span class="lineno"> 2666</span>&#160; nValueRet += nDenom;</div><div class="line"><a name="l02667"></a><span class="lineno"> 2667</span>&#160; setCoinsRet.insert(make_pair(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.tx, <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.i));</div><div class="line"><a name="l02668"></a><span class="lineno"> 2668</span>&#160; }</div><div class="line"><a name="l02669"></a><span class="lineno"> 2669</span>&#160; }</div><div class="line"><a name="l02670"></a><span class="lineno"> 2670</span>&#160; }</div><div class="line"><a name="l02671"></a><span class="lineno"> 2671</span>&#160; <span class="keywordflow">return</span> (nValueRet &gt;= nTargetValue);</div><div class="line"><a name="l02672"></a><span class="lineno"> 2672</span>&#160; }</div><div class="line"><a name="l02673"></a><span class="lineno"> 2673</span>&#160; <span class="comment">// calculate value from preset inputs and store them</span></div><div class="line"><a name="l02674"></a><span class="lineno"> 2674</span>&#160; set&lt;pair&lt;const CWalletTx*, uint32_t&gt; &gt; setPresetCoins;</div><div class="line"><a name="l02675"></a><span class="lineno"> 2675</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nValueFromPresetInputs = 0;</div><div class="line"><a name="l02676"></a><span class="lineno"> 2676</span>&#160;</div><div class="line"><a name="l02677"></a><span class="lineno"> 2677</span>&#160; std::vector&lt;COutPoint&gt; vPresetInputs;</div><div class="line"><a name="l02678"></a><span class="lineno"> 2678</span>&#160; <span class="keywordflow">if</span> (coinControl)</div><div class="line"><a name="l02679"></a><span class="lineno"> 2679</span>&#160; coinControl-&gt;<a class="code" href="classCCoinControl.html#ad2022117a10ff787973af3d7aa62df6f">ListSelected</a>(vPresetInputs);</div><div class="line"><a name="l02680"></a><span class="lineno"> 2680</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="classCOutPoint.html">COutPoint</a>&amp; outpoint, vPresetInputs)</div><div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>&#160; {</div><div class="line"><a name="l02682"></a><span class="lineno"> 2682</span>&#160; map&lt;uint256, CWalletTx&gt;::const_iterator it = mapWallet.find(outpoint.<a class="code" href="classCOutPoint.html#af131c7194a660558b0ff158f4efa7a28">hash</a>);</div><div class="line"><a name="l02683"></a><span class="lineno"> 2683</span>&#160; <span class="keywordflow">if</span> (it != mapWallet.end())</div><div class="line"><a name="l02684"></a><span class="lineno"> 2684</span>&#160; {</div><div class="line"><a name="l02685"></a><span class="lineno"> 2685</span>&#160; <span class="keyword">const</span> <a class="code" href="classCWalletTx.html">CWalletTx</a>* pcoin = &amp;it-&gt;second;</div><div class="line"><a name="l02686"></a><span class="lineno"> 2686</span>&#160; <span class="comment">// Clearly invalid input, fail</span></div><div class="line"><a name="l02687"></a><span class="lineno"> 2687</span>&#160; <span class="keywordflow">if</span> (pcoin-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>.size() &lt;= outpoint.<a class="code" href="classCOutPoint.html#a1b857e3a0412ff741da2c9f8defe315c">n</a>)</div><div class="line"><a name="l02688"></a><span class="lineno"> 2688</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02689"></a><span class="lineno"> 2689</span>&#160; nValueFromPresetInputs += pcoin-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[outpoint.<a class="code" href="classCOutPoint.html#a1b857e3a0412ff741da2c9f8defe315c">n</a>].nValue;</div><div class="line"><a name="l02690"></a><span class="lineno"> 2690</span>&#160; setPresetCoins.insert(make_pair(pcoin, outpoint.<a class="code" href="classCOutPoint.html#a1b857e3a0412ff741da2c9f8defe315c">n</a>));</div><div class="line"><a name="l02691"></a><span class="lineno"> 2691</span>&#160; } <span class="keywordflow">else</span></div><div class="line"><a name="l02692"></a><span class="lineno"> 2692</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// TODO: Allow non-wallet inputs</span></div><div class="line"><a name="l02693"></a><span class="lineno"> 2693</span>&#160; }</div><div class="line"><a name="l02694"></a><span class="lineno"> 2694</span>&#160;</div><div class="line"><a name="l02695"></a><span class="lineno"> 2695</span>&#160; <span class="comment">// remove preset inputs from vCoins</span></div><div class="line"><a name="l02696"></a><span class="lineno"> 2696</span>&#160; <span class="keywordflow">for</span> (vector&lt;COutput&gt;::iterator it = <a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>.begin(); it != <a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>.end() &amp;&amp; coinControl &amp;&amp; coinControl-&gt;<a class="code" href="classCCoinControl.html#a20b259681a7c62b2119256a4862091ac">HasSelected</a>();)</div><div class="line"><a name="l02697"></a><span class="lineno"> 2697</span>&#160; {</div><div class="line"><a name="l02698"></a><span class="lineno"> 2698</span>&#160; <span class="keywordflow">if</span> (setPresetCoins.count(make_pair(it-&gt;tx, it-&gt;i)))</div><div class="line"><a name="l02699"></a><span class="lineno"> 2699</span>&#160; it = <a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>.erase(it);</div><div class="line"><a name="l02700"></a><span class="lineno"> 2700</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l02701"></a><span class="lineno"> 2701</span>&#160; ++it;</div><div class="line"><a name="l02702"></a><span class="lineno"> 2702</span>&#160; }</div><div class="line"><a name="l02703"></a><span class="lineno"> 2703</span>&#160;</div><div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>&#160; <span class="keywordtype">bool</span> res = nTargetValue &lt;= nValueFromPresetInputs ||</div><div class="line"><a name="l02705"></a><span class="lineno"> 2705</span>&#160; SelectCoinsMinConf(nTargetValue - nValueFromPresetInputs, 1, 6, <a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>, setCoinsRet, nValueRet, fUseInstantSend) ||</div><div class="line"><a name="l02706"></a><span class="lineno"> 2706</span>&#160; SelectCoinsMinConf(nTargetValue - nValueFromPresetInputs, 1, 1, <a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>, setCoinsRet, nValueRet, fUseInstantSend) ||</div><div class="line"><a name="l02707"></a><span class="lineno"> 2707</span>&#160; (<a class="code" href="wallet_8cpp.html#a755a19591df8d2f5079c1f7132c65642">bSpendZeroConfChange</a> &amp;&amp; SelectCoinsMinConf(nTargetValue - nValueFromPresetInputs, 0, 1, <a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>, setCoinsRet, nValueRet, fUseInstantSend));</div><div class="line"><a name="l02708"></a><span class="lineno"> 2708</span>&#160;</div><div class="line"><a name="l02709"></a><span class="lineno"> 2709</span>&#160; <span class="comment">// because SelectCoinsMinConf clears the setCoinsRet, we now add the possible inputs to the coinset</span></div><div class="line"><a name="l02710"></a><span class="lineno"> 2710</span>&#160; setCoinsRet.insert(setPresetCoins.begin(), setPresetCoins.end());</div><div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>&#160;</div><div class="line"><a name="l02712"></a><span class="lineno"> 2712</span>&#160; <span class="comment">// add preset inputs to the total value selected</span></div><div class="line"><a name="l02713"></a><span class="lineno"> 2713</span>&#160; nValueRet += nValueFromPresetInputs;</div><div class="line"><a name="l02714"></a><span class="lineno"> 2714</span>&#160;</div><div class="line"><a name="l02715"></a><span class="lineno"> 2715</span>&#160; <span class="keywordflow">return</span> res;</div><div class="line"><a name="l02716"></a><span class="lineno"> 2716</span>&#160;}</div><div class="line"><a name="l02717"></a><span class="lineno"> 2717</span>&#160;</div><div class="line"><a name="l02718"></a><span class="lineno"><a class="line" href="structCompareByPriority.html"> 2718</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structCompareByPriority.html">CompareByPriority</a></div><div class="line"><a name="l02719"></a><span class="lineno"> 2719</span>&#160;{</div><div class="line"><a name="l02720"></a><span class="lineno"><a class="line" href="structCompareByPriority.html#a880b81d741c9616f12799ff73becf4e3"> 2720</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structCompareByPriority.html#a880b81d741c9616f12799ff73becf4e3">operator()</a>(<span class="keyword">const</span> <a class="code" href="classCOutput.html">COutput</a>&amp; t1,</div><div class="line"><a name="l02721"></a><span class="lineno"> 2721</span>&#160; <span class="keyword">const</span> <a class="code" href="classCOutput.html">COutput</a>&amp; t2)<span class="keyword"> const</span></div><div class="line"><a name="l02722"></a><span class="lineno"> 2722</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02723"></a><span class="lineno"> 2723</span>&#160; <span class="keywordflow">return</span> t1.<a class="code" href="group__mapWallet.html#ga1e98c1005aec356c68c4f56ff9a02944">Priority</a>() &gt; t2.<a class="code" href="group__mapWallet.html#ga1e98c1005aec356c68c4f56ff9a02944">Priority</a>();</div><div class="line"><a name="l02724"></a><span class="lineno"> 2724</span>&#160; }</div><div class="line"><a name="l02725"></a><span class="lineno"> 2725</span>&#160;};</div><div class="line"><a name="l02726"></a><span class="lineno"> 2726</span>&#160;</div><div class="line"><a name="l02727"></a><span class="lineno"><a class="line" href="group__Actions.html#gaf35620af7b11607c2594f413bf9914ef"> 2727</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__Actions.html#gaf35620af7b11607c2594f413bf9914ef">CWallet::FundTransaction</a>(<a class="code" href="structCMutableTransaction.html">CMutableTransaction</a>&amp; tx, <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> &amp;nFeeRet, <span class="keywordtype">int</span>&amp; nChangePosRet, std::string&amp; strFailReason, <span class="keywordtype">bool</span> includeWatching)</div><div class="line"><a name="l02728"></a><span class="lineno"> 2728</span>&#160;{</div><div class="line"><a name="l02729"></a><span class="lineno"> 2729</span>&#160; vector&lt;CRecipient&gt; vecSend;</div><div class="line"><a name="l02730"></a><span class="lineno"> 2730</span>&#160;</div><div class="line"><a name="l02731"></a><span class="lineno"> 2731</span>&#160; <span class="comment">// Turn the txout set into a CRecipient vector</span></div><div class="line"><a name="l02732"></a><span class="lineno"> 2732</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="classCTxOut.html">CTxOut</a>&amp; txOut, tx.<a class="code" href="structCMutableTransaction.html#aca14a252c78e4af2dfe68d7ea67a77dc">vout</a>)</div><div class="line"><a name="l02733"></a><span class="lineno"> 2733</span>&#160; {</div><div class="line"><a name="l02734"></a><span class="lineno"> 2734</span>&#160; <a class="code" href="structCRecipient.html">CRecipient</a> recipient = {txOut.<a class="code" href="classCTxOut.html#a25bf3f2f4befb22a6a0be45784fe57e2">scriptPubKey</a>, txOut.<a class="code" href="classCTxOut.html#ab278ecef3817a972cb6bc5360d13f197">nValue</a>, <span class="keyword">false</span>};</div><div class="line"><a name="l02735"></a><span class="lineno"> 2735</span>&#160; vecSend.push_back(recipient);</div><div class="line"><a name="l02736"></a><span class="lineno"> 2736</span>&#160; }</div><div class="line"><a name="l02737"></a><span class="lineno"> 2737</span>&#160;</div><div class="line"><a name="l02738"></a><span class="lineno"> 2738</span>&#160; <a class="code" href="classCCoinControl.html">CCoinControl</a> coinControl;</div><div class="line"><a name="l02739"></a><span class="lineno"> 2739</span>&#160; coinControl.<a class="code" href="classCCoinControl.html#acd3e8686c8d78535153ed9fd734ef029">fAllowOtherInputs</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l02740"></a><span class="lineno"> 2740</span>&#160; coinControl.<a class="code" href="classCCoinControl.html#a83d3144efcfdd0e87467f0b2d98b4302">fAllowWatchOnly</a> = includeWatching;</div><div class="line"><a name="l02741"></a><span class="lineno"> 2741</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="classCTxIn.html">CTxIn</a>&amp; txin, tx.<a class="code" href="structCMutableTransaction.html#ad6b1a0a773293fd153a1d384923631da">vin</a>)</div><div class="line"><a name="l02742"></a><span class="lineno"> 2742</span>&#160; coinControl.<a class="code" href="classCCoinControl.html#a7903e85623ba9b21583bd4018d17546c">Select</a>(txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>);</div><div class="line"><a name="l02743"></a><span class="lineno"> 2743</span>&#160;</div><div class="line"><a name="l02744"></a><span class="lineno"> 2744</span>&#160; <a class="code" href="classCReserveKey.html">CReserveKey</a> reservekey(<span class="keyword">this</span>);</div><div class="line"><a name="l02745"></a><span class="lineno"> 2745</span>&#160; <a class="code" href="classCWalletTx.html">CWalletTx</a> wtx;</div><div class="line"><a name="l02746"></a><span class="lineno"> 2746</span>&#160; <span class="keywordflow">if</span> (!CreateTransaction(vecSend, wtx, reservekey, nFeeRet, nChangePosRet, strFailReason, &amp;coinControl, <span class="keyword">false</span>))</div><div class="line"><a name="l02747"></a><span class="lineno"> 2747</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02748"></a><span class="lineno"> 2748</span>&#160;</div><div class="line"><a name="l02749"></a><span class="lineno"> 2749</span>&#160; <span class="keywordflow">if</span> (nChangePosRet != -1)</div><div class="line"><a name="l02750"></a><span class="lineno"> 2750</span>&#160; tx.<a class="code" href="structCMutableTransaction.html#aca14a252c78e4af2dfe68d7ea67a77dc">vout</a>.insert(tx.<a class="code" href="structCMutableTransaction.html#aca14a252c78e4af2dfe68d7ea67a77dc">vout</a>.begin() + nChangePosRet, wtx.<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[nChangePosRet]);</div><div class="line"><a name="l02751"></a><span class="lineno"> 2751</span>&#160;</div><div class="line"><a name="l02752"></a><span class="lineno"> 2752</span>&#160; <span class="comment">// Add new txins (keeping original txin scriptSig/order)</span></div><div class="line"><a name="l02753"></a><span class="lineno"> 2753</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="classCTxIn.html">CTxIn</a>&amp; txin, wtx.<a class="code" href="classCTransaction.html#ad64447ea044ec850313696fc99412d95">vin</a>)</div><div class="line"><a name="l02754"></a><span class="lineno"> 2754</span>&#160; {</div><div class="line"><a name="l02755"></a><span class="lineno"> 2755</span>&#160; <span class="keywordflow">if</span> (!coinControl.<a class="code" href="classCCoinControl.html#a6b419aa41fd3a9d037856d8814d594e1">IsSelected</a>(txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>))</div><div class="line"><a name="l02756"></a><span class="lineno"> 2756</span>&#160; tx.<a class="code" href="structCMutableTransaction.html#ad6b1a0a773293fd153a1d384923631da">vin</a>.push_back(txin);</div><div class="line"><a name="l02757"></a><span class="lineno"> 2757</span>&#160; }</div><div class="line"><a name="l02758"></a><span class="lineno"> 2758</span>&#160;</div><div class="line"><a name="l02759"></a><span class="lineno"> 2759</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l02760"></a><span class="lineno"> 2760</span>&#160;}</div><div class="line"><a name="l02761"></a><span class="lineno"> 2761</span>&#160;</div><div class="line"><a name="l02762"></a><span class="lineno"><a class="line" href="group__Actions.html#ga416c2796c5ecb9836d4f6407fcdbb42c"> 2762</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__Actions.html#ga416c2796c5ecb9836d4f6407fcdbb42c">CWallet::SelectCoinsByDenominations</a>(<span class="keywordtype">int</span> nDenom, <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nValueMin, <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nValueMax, std::vector&lt;CTxIn&gt;&amp; vecTxInRet, std::vector&lt;COutput&gt;&amp; vCoinsRet, <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a>&amp; nValueRet, <span class="keywordtype">int</span> nPrivateSendRoundsMin, <span class="keywordtype">int</span> nPrivateSendRoundsMax)</div><div class="line"><a name="l02763"></a><span class="lineno"> 2763</span>&#160;{</div><div class="line"><a name="l02764"></a><span class="lineno"> 2764</span>&#160; vecTxInRet.clear();</div><div class="line"><a name="l02765"></a><span class="lineno"> 2765</span>&#160; vCoinsRet.clear();</div><div class="line"><a name="l02766"></a><span class="lineno"> 2766</span>&#160; nValueRet = 0;</div><div class="line"><a name="l02767"></a><span class="lineno"> 2767</span>&#160;</div><div class="line"><a name="l02768"></a><span class="lineno"> 2768</span>&#160; vector&lt;COutput&gt; <a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>;</div><div class="line"><a name="l02769"></a><span class="lineno"> 2769</span>&#160; AvailableCoins(<a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>, <span class="keyword">true</span>, NULL, <span class="keyword">false</span>, <a class="code" href="wallet_8h.html#a90b09b05f289ac32704a6446a94566ceaab4c4a7abab40ebdb2706c1708fff22e">ONLY_DENOMINATED</a>);</div><div class="line"><a name="l02770"></a><span class="lineno"> 2770</span>&#160;</div><div class="line"><a name="l02771"></a><span class="lineno"> 2771</span>&#160; std::random_shuffle(<a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>.rbegin(), <a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>.rend(), <a class="code" href="random_8cpp.html#a0e44e088732172da6662db2d5e37d4b2">GetRandInt</a>);</div><div class="line"><a name="l02772"></a><span class="lineno"> 2772</span>&#160;</div><div class="line"><a name="l02773"></a><span class="lineno"> 2773</span>&#160; <span class="comment">// ( bit on if present )</span></div><div class="line"><a name="l02774"></a><span class="lineno"> 2774</span>&#160; <span class="comment">// bit 0 - 100DASH+1</span></div><div class="line"><a name="l02775"></a><span class="lineno"> 2775</span>&#160; <span class="comment">// bit 1 - 10DASH+1</span></div><div class="line"><a name="l02776"></a><span class="lineno"> 2776</span>&#160; <span class="comment">// bit 2 - 1DASH+1</span></div><div class="line"><a name="l02777"></a><span class="lineno"> 2777</span>&#160; <span class="comment">// bit 3 - .1DASH+1</span></div><div class="line"><a name="l02778"></a><span class="lineno"> 2778</span>&#160;</div><div class="line"><a name="l02779"></a><span class="lineno"> 2779</span>&#160; std::vector&lt;int&gt; vecBits;</div><div class="line"><a name="l02780"></a><span class="lineno"> 2780</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classCPrivateSend.html#a39fc81255d44c5901513a0c57e3b525f">CPrivateSend::GetDenominationsBits</a>(nDenom, vecBits)) {</div><div class="line"><a name="l02781"></a><span class="lineno"> 2781</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02782"></a><span class="lineno"> 2782</span>&#160; }</div><div class="line"><a name="l02783"></a><span class="lineno"> 2783</span>&#160;</div><div class="line"><a name="l02784"></a><span class="lineno"> 2784</span>&#160; <span class="keywordtype">int</span> nDenomResult = 0;</div><div class="line"><a name="l02785"></a><span class="lineno"> 2785</span>&#160;</div><div class="line"><a name="l02786"></a><span class="lineno"> 2786</span>&#160; std::vector&lt;CAmount&gt; vecPrivateSendDenominations = <a class="code" href="classCPrivateSend.html#a43229314704738ac10f7daacb34ee3c1">CPrivateSend::GetStandardDenominations</a>();</div><div class="line"><a name="l02787"></a><span class="lineno"> 2787</span>&#160; <a class="code" href="classInsecureRand.html">InsecureRand</a> insecureRand;</div><div class="line"><a name="l02788"></a><span class="lineno"> 2788</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="classCOutput.html">COutput</a>&amp; <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>, <a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>)</div><div class="line"><a name="l02789"></a><span class="lineno"> 2789</span>&#160; {</div><div class="line"><a name="l02790"></a><span class="lineno"> 2790</span>&#160; <span class="comment">// masternode-like input should not be selected by AvailableCoins now anyway</span></div><div class="line"><a name="l02791"></a><span class="lineno"> 2791</span>&#160; <span class="comment">//if(out.tx-&gt;vout[out.i].nValue == 1000*COIN) continue;</span></div><div class="line"><a name="l02792"></a><span class="lineno"> 2792</span>&#160; <span class="keywordflow">if</span>(nValueRet + <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.tx-&gt;vout[<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.i].nValue &lt;= nValueMax){</div><div class="line"><a name="l02793"></a><span class="lineno"> 2793</span>&#160;</div><div class="line"><a name="l02794"></a><span class="lineno"> 2794</span>&#160; <a class="code" href="classCTxIn.html">CTxIn</a> txin = <a class="code" href="classCTxIn.html">CTxIn</a>(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.tx-&gt;GetHash(), <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.i);</div><div class="line"><a name="l02795"></a><span class="lineno"> 2795</span>&#160;</div><div class="line"><a name="l02796"></a><span class="lineno"> 2796</span>&#160; <span class="keywordtype">int</span> nRounds = GetOutpointPrivateSendRounds(txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>);</div><div class="line"><a name="l02797"></a><span class="lineno"> 2797</span>&#160; <span class="keywordflow">if</span>(nRounds &gt;= nPrivateSendRoundsMax) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02798"></a><span class="lineno"> 2798</span>&#160; <span class="keywordflow">if</span>(nRounds &lt; nPrivateSendRoundsMin) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02799"></a><span class="lineno"> 2799</span>&#160;</div><div class="line"><a name="l02800"></a><span class="lineno"> 2800</span>&#160; BOOST_FOREACH(<span class="keywordtype">int</span> nBit, vecBits) {</div><div class="line"><a name="l02801"></a><span class="lineno"> 2801</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.tx-&gt;vout[<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.i].nValue == vecPrivateSendDenominations[nBit]) {</div><div class="line"><a name="l02802"></a><span class="lineno"> 2802</span>&#160; <span class="keywordflow">if</span>(nValueRet &gt;= nValueMin) {</div><div class="line"><a name="l02803"></a><span class="lineno"> 2803</span>&#160; <span class="comment">//randomly reduce the max amount we&#39;ll submit (for anonymity)</span></div><div class="line"><a name="l02804"></a><span class="lineno"> 2804</span>&#160; nValueMax -= insecureRand(nValueMax/5);</div><div class="line"><a name="l02805"></a><span class="lineno"> 2805</span>&#160; <span class="comment">//on average use 50% of the inputs or less</span></div><div class="line"><a name="l02806"></a><span class="lineno"> 2806</span>&#160; <span class="keywordtype">int</span> r = insecureRand(<a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>.size());</div><div class="line"><a name="l02807"></a><span class="lineno"> 2807</span>&#160; <span class="keywordflow">if</span>((<span class="keywordtype">int</span>)vecTxInRet.size() &gt; r) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l02808"></a><span class="lineno"> 2808</span>&#160; }</div><div class="line"><a name="l02809"></a><span class="lineno"> 2809</span>&#160; txin.<a class="code" href="classCTxIn.html#a91732c5ffb13520a6989b162ff6683fc">prevPubKey</a> = <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.tx-&gt;vout[<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.i].scriptPubKey; <span class="comment">// the inputs PubKey</span></div><div class="line"><a name="l02810"></a><span class="lineno"> 2810</span>&#160; nValueRet += <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.tx-&gt;vout[<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.i].nValue;</div><div class="line"><a name="l02811"></a><span class="lineno"> 2811</span>&#160; vecTxInRet.push_back(txin);</div><div class="line"><a name="l02812"></a><span class="lineno"> 2812</span>&#160; vCoinsRet.push_back(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>);</div><div class="line"><a name="l02813"></a><span class="lineno"> 2813</span>&#160; nDenomResult |= 1 &lt;&lt; nBit;</div><div class="line"><a name="l02814"></a><span class="lineno"> 2814</span>&#160; }</div><div class="line"><a name="l02815"></a><span class="lineno"> 2815</span>&#160; }</div><div class="line"><a name="l02816"></a><span class="lineno"> 2816</span>&#160; }</div><div class="line"><a name="l02817"></a><span class="lineno"> 2817</span>&#160; }</div><div class="line"><a name="l02818"></a><span class="lineno"> 2818</span>&#160;</div><div class="line"><a name="l02819"></a><span class="lineno"> 2819</span>&#160; <span class="keywordflow">return</span> nValueRet &gt;= nValueMin &amp;&amp; nDenom == nDenomResult;</div><div class="line"><a name="l02820"></a><span class="lineno"> 2820</span>&#160;}</div><div class="line"><a name="l02821"></a><span class="lineno"> 2821</span>&#160;</div><div class="line"><a name="l02822"></a><span class="lineno"><a class="line" href="structCompareByAmount.html"> 2822</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structCompareByAmount.html">CompareByAmount</a></div><div class="line"><a name="l02823"></a><span class="lineno"> 2823</span>&#160;{</div><div class="line"><a name="l02824"></a><span class="lineno"><a class="line" href="structCompareByAmount.html#ab4cca75816bb9085792472eeed7c9505"> 2824</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="structCompareByAmount.html#ab4cca75816bb9085792472eeed7c9505">operator()</a>(<span class="keyword">const</span> <a class="code" href="structCompactTallyItem.html">CompactTallyItem</a>&amp; t1,</div><div class="line"><a name="l02825"></a><span class="lineno"> 2825</span>&#160; <span class="keyword">const</span> <a class="code" href="structCompactTallyItem.html">CompactTallyItem</a>&amp; t2)<span class="keyword"> const</span></div><div class="line"><a name="l02826"></a><span class="lineno"> 2826</span>&#160;<span class="keyword"> </span>{</div><div class="line"><a name="l02827"></a><span class="lineno"> 2827</span>&#160; <span class="keywordflow">return</span> t1.<a class="code" href="structCompactTallyItem.html#a0efb39fdaacf62d56f5cb90261b71402">nAmount</a> &gt; t2.<a class="code" href="structCompactTallyItem.html#a0efb39fdaacf62d56f5cb90261b71402">nAmount</a>;</div><div class="line"><a name="l02828"></a><span class="lineno"> 2828</span>&#160; }</div><div class="line"><a name="l02829"></a><span class="lineno"> 2829</span>&#160;};</div><div class="line"><a name="l02830"></a><span class="lineno"> 2830</span>&#160;</div><div class="line"><a name="l02831"></a><span class="lineno"><a class="line" href="group__Actions.html#ga5444fca647f090a8d55f20fe8ca3f4d1"> 2831</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__Actions.html#ga5444fca647f090a8d55f20fe8ca3f4d1">CWallet::SelectCoinsGrouppedByAddresses</a>(std::vector&lt;CompactTallyItem&gt;&amp; vecTallyRet, <span class="keywordtype">bool</span> fSkipDenominated, <span class="keywordtype">bool</span> fAnonymizable, <span class="keywordtype">bool</span> fSkipUnconfirmed)<span class="keyword"> const</span></div><div class="line"><a name="l02832"></a><span class="lineno"> 2832</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l02833"></a><span class="lineno"> 2833</span>&#160; <a class="code" href="sync_8h.html#a35644e2b75a93da0cb0f6c768f34efa8">LOCK2</a>(<a class="code" href="validation_8cpp.html#a1ed8285f0fe3c6799c53265ce72552c8">cs_main</a>, cs_wallet);</div><div class="line"><a name="l02834"></a><span class="lineno"> 2834</span>&#160;</div><div class="line"><a name="l02835"></a><span class="lineno"> 2835</span>&#160; <a class="code" href="wallet__ismine_8h.html#aaa5e1639d76aef50f70532acc3302c4b">isminefilter</a> filter = <a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20daaf93acf4732907100f55dc017b6daf58">ISMINE_SPENDABLE</a>;</div><div class="line"><a name="l02836"></a><span class="lineno"> 2836</span>&#160;</div><div class="line"><a name="l02837"></a><span class="lineno"> 2837</span>&#160; <span class="comment">// try to use cache for already confirmed anonymizable inputs</span></div><div class="line"><a name="l02838"></a><span class="lineno"> 2838</span>&#160; <span class="keywordflow">if</span>(fAnonymizable &amp;&amp; fSkipUnconfirmed) {</div><div class="line"><a name="l02839"></a><span class="lineno"> 2839</span>&#160; <span class="keywordflow">if</span>(fSkipDenominated &amp;&amp; fAnonymizableTallyCachedNonDenom) {</div><div class="line"><a name="l02840"></a><span class="lineno"> 2840</span>&#160; vecTallyRet = vecAnonymizableTallyCachedNonDenom;</div><div class="line"><a name="l02841"></a><span class="lineno"> 2841</span>&#160; <a class="code" href="util_8h.html#aab1f837a2366f424bdc996fdf6352171">LogPrint</a>(<span class="stringliteral">&quot;selectcoins&quot;</span>, <span class="stringliteral">&quot;SelectCoinsGrouppedByAddresses - using cache for non-denom inputs %d\n&quot;</span>, vecTallyRet.size());</div><div class="line"><a name="l02842"></a><span class="lineno"> 2842</span>&#160; <span class="keywordflow">return</span> vecTallyRet.size() &gt; 0;</div><div class="line"><a name="l02843"></a><span class="lineno"> 2843</span>&#160; }</div><div class="line"><a name="l02844"></a><span class="lineno"> 2844</span>&#160; <span class="keywordflow">if</span>(!fSkipDenominated &amp;&amp; fAnonymizableTallyCached) {</div><div class="line"><a name="l02845"></a><span class="lineno"> 2845</span>&#160; vecTallyRet = vecAnonymizableTallyCached;</div><div class="line"><a name="l02846"></a><span class="lineno"> 2846</span>&#160; <a class="code" href="util_8h.html#aab1f837a2366f424bdc996fdf6352171">LogPrint</a>(<span class="stringliteral">&quot;selectcoins&quot;</span>, <span class="stringliteral">&quot;SelectCoinsGrouppedByAddresses - using cache for all inputs %d\n&quot;</span>, vecTallyRet.size());</div><div class="line"><a name="l02847"></a><span class="lineno"> 2847</span>&#160; <span class="keywordflow">return</span> vecTallyRet.size() &gt; 0;</div><div class="line"><a name="l02848"></a><span class="lineno"> 2848</span>&#160; }</div><div class="line"><a name="l02849"></a><span class="lineno"> 2849</span>&#160; }</div><div class="line"><a name="l02850"></a><span class="lineno"> 2850</span>&#160;</div><div class="line"><a name="l02851"></a><span class="lineno"> 2851</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nSmallestDenom = <a class="code" href="classCPrivateSend.html#aaea73bfde40e837eb2eee68413139359">CPrivateSend::GetSmallestDenomination</a>();</div><div class="line"><a name="l02852"></a><span class="lineno"> 2852</span>&#160;</div><div class="line"><a name="l02853"></a><span class="lineno"> 2853</span>&#160; <span class="comment">// Tally</span></div><div class="line"><a name="l02854"></a><span class="lineno"> 2854</span>&#160; map&lt;CTxDestination, CompactTallyItem&gt; mapTally;</div><div class="line"><a name="l02855"></a><span class="lineno"> 2855</span>&#160; std::set&lt;uint256&gt; setWalletTxesCounted;</div><div class="line"><a name="l02856"></a><span class="lineno"> 2856</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; outpoint : setWalletUTXO) {</div><div class="line"><a name="l02857"></a><span class="lineno"> 2857</span>&#160;</div><div class="line"><a name="l02858"></a><span class="lineno"> 2858</span>&#160; <span class="keywordflow">if</span> (setWalletTxesCounted.find(outpoint.hash) != setWalletTxesCounted.end()) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02859"></a><span class="lineno"> 2859</span>&#160; setWalletTxesCounted.insert(outpoint.hash);</div><div class="line"><a name="l02860"></a><span class="lineno"> 2860</span>&#160;</div><div class="line"><a name="l02861"></a><span class="lineno"> 2861</span>&#160; map&lt;uint256, CWalletTx&gt;::const_iterator it = mapWallet.find(outpoint.hash);</div><div class="line"><a name="l02862"></a><span class="lineno"> 2862</span>&#160; <span class="keywordflow">if</span> (it == mapWallet.end()) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02863"></a><span class="lineno"> 2863</span>&#160;</div><div class="line"><a name="l02864"></a><span class="lineno"> 2864</span>&#160; <span class="keyword">const</span> <a class="code" href="classCWalletTx.html">CWalletTx</a>&amp; wtx = (*it).second;</div><div class="line"><a name="l02865"></a><span class="lineno"> 2865</span>&#160;</div><div class="line"><a name="l02866"></a><span class="lineno"> 2866</span>&#160; <span class="keywordflow">if</span>(wtx.<a class="code" href="classCTransaction.html#a96256e8ac1bf79ad9c057e48c41132dd">IsCoinBase</a>() &amp;&amp; wtx.<a class="code" href="classCMerkleTx.html#a69ebd437f7b44169659c3527fe73b6ab">GetBlocksToMaturity</a>() &gt; 0) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02867"></a><span class="lineno"> 2867</span>&#160; <span class="keywordflow">if</span>(fSkipUnconfirmed &amp;&amp; !wtx.<a class="code" href="group__mapWallet.html#ga71efb0d5b5def8ae00a1d74b8741bfcb">IsTrusted</a>()) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02868"></a><span class="lineno"> 2868</span>&#160;</div><div class="line"><a name="l02869"></a><span class="lineno"> 2869</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; wtx.<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>.size(); i++) {</div><div class="line"><a name="l02870"></a><span class="lineno"> 2870</span>&#160; <a class="code" href="standard_8h.html#a50f712c3d9a0d2f85ae464497dd9cff8">CTxDestination</a> txdest;</div><div class="line"><a name="l02871"></a><span class="lineno"> 2871</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="standard_8cpp.html#a951f7e601746ae076afdf3169ecca2fc">ExtractDestination</a>(wtx.<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[i].scriptPubKey, txdest)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02872"></a><span class="lineno"> 2872</span>&#160;</div><div class="line"><a name="l02873"></a><span class="lineno"> 2873</span>&#160; <a class="code" href="wallet__ismine_8h.html#aaa5e1639d76aef50f70532acc3302c4b">isminefilter</a> mine = <a class="code" href="wallet__ismine_8cpp.html#adc59cf67d903c1ba1ef225561b85bfce">::IsMine</a>(*<span class="keyword">this</span>, txdest);</div><div class="line"><a name="l02874"></a><span class="lineno"> 2874</span>&#160; <span class="keywordflow">if</span>(!(mine &amp; filter)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02875"></a><span class="lineno"> 2875</span>&#160;</div><div class="line"><a name="l02876"></a><span class="lineno"> 2876</span>&#160; <span class="keywordflow">if</span>(IsSpent(outpoint.hash, i) || IsLockedCoin(outpoint.hash, i)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02877"></a><span class="lineno"> 2877</span>&#160;</div><div class="line"><a name="l02878"></a><span class="lineno"> 2878</span>&#160; <span class="keywordflow">if</span>(fSkipDenominated &amp;&amp; IsDenominatedAmount(wtx.<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[i].nValue)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02879"></a><span class="lineno"> 2879</span>&#160;</div><div class="line"><a name="l02880"></a><span class="lineno"> 2880</span>&#160; <span class="keywordflow">if</span>(fAnonymizable) {</div><div class="line"><a name="l02881"></a><span class="lineno"> 2881</span>&#160; <span class="comment">// ignore collaterals</span></div><div class="line"><a name="l02882"></a><span class="lineno"> 2882</span>&#160; <span class="keywordflow">if</span>(IsCollateralAmount(wtx.<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[i].nValue)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02883"></a><span class="lineno"> 2883</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="util_8cpp.html#af26e0e38b52f08409d399c04cde68c22">fMasterNode</a> &amp;&amp; wtx.<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[i].nValue == 1000*<a class="code" href="amount_8h.html#aed6bcb17bc73a5dcf33250e9c2c023cc">COIN</a>) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02884"></a><span class="lineno"> 2884</span>&#160; <span class="comment">// ignore outputs that are 10 times smaller then the smallest denomination</span></div><div class="line"><a name="l02885"></a><span class="lineno"> 2885</span>&#160; <span class="comment">// otherwise they will just lead to higher fee / lower priority</span></div><div class="line"><a name="l02886"></a><span class="lineno"> 2886</span>&#160; <span class="keywordflow">if</span>(wtx.<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[i].nValue &lt;= nSmallestDenom/10) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02887"></a><span class="lineno"> 2887</span>&#160; <span class="comment">// ignore anonymized</span></div><div class="line"><a name="l02888"></a><span class="lineno"> 2888</span>&#160; <span class="keywordflow">if</span>(GetOutpointPrivateSendRounds(<a class="code" href="classCOutPoint.html">COutPoint</a>(outpoint.hash, i)) &gt;= <a class="code" href="privatesend-client_8cpp.html#ae36d24fafeb216cd61fb55e3475154a3">privateSendClient</a>.<a class="code" href="classCPrivateSendClient.html#a9eaafa61ebf8cf727cdd2b4ffb69cad3">nPrivateSendRounds</a>) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02889"></a><span class="lineno"> 2889</span>&#160; }</div><div class="line"><a name="l02890"></a><span class="lineno"> 2890</span>&#160;</div><div class="line"><a name="l02891"></a><span class="lineno"> 2891</span>&#160; <a class="code" href="structCompactTallyItem.html">CompactTallyItem</a>&amp; item = mapTally[txdest];</div><div class="line"><a name="l02892"></a><span class="lineno"> 2892</span>&#160; item.<a class="code" href="structCompactTallyItem.html#a68a09f444683900e80c7e08b23f8fc56">txdest</a> = txdest;</div><div class="line"><a name="l02893"></a><span class="lineno"> 2893</span>&#160; item.<a class="code" href="structCompactTallyItem.html#a0efb39fdaacf62d56f5cb90261b71402">nAmount</a> += wtx.<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[i].nValue;</div><div class="line"><a name="l02894"></a><span class="lineno"> 2894</span>&#160; item.<a class="code" href="structCompactTallyItem.html#aaa4af089e3d784811ebadd4eb89eb54b">vecTxIn</a>.push_back(<a class="code" href="classCTxIn.html">CTxIn</a>(outpoint.hash, i));</div><div class="line"><a name="l02895"></a><span class="lineno"> 2895</span>&#160; }</div><div class="line"><a name="l02896"></a><span class="lineno"> 2896</span>&#160; }</div><div class="line"><a name="l02897"></a><span class="lineno"> 2897</span>&#160;</div><div class="line"><a name="l02898"></a><span class="lineno"> 2898</span>&#160; <span class="comment">// construct resulting vector</span></div><div class="line"><a name="l02899"></a><span class="lineno"> 2899</span>&#160; vecTallyRet.clear();</div><div class="line"><a name="l02900"></a><span class="lineno"> 2900</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="utilstrencodings_8h.html#aa3052ab82a2ba880ea3e30b3357c8820">PAIRTYPE</a>(<a class="code" href="standard_8h.html#a50f712c3d9a0d2f85ae464497dd9cff8">CTxDestination</a>, <a class="code" href="structCompactTallyItem.html">CompactTallyItem</a>)&amp; item, mapTally) {</div><div class="line"><a name="l02901"></a><span class="lineno"> 2901</span>&#160; <span class="keywordflow">if</span>(fAnonymizable &amp;&amp; item.second.<a class="code" href="structCompactTallyItem.html#a0efb39fdaacf62d56f5cb90261b71402">nAmount</a> &lt; nSmallestDenom) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02902"></a><span class="lineno"> 2902</span>&#160; vecTallyRet.push_back(item.second);</div><div class="line"><a name="l02903"></a><span class="lineno"> 2903</span>&#160; }</div><div class="line"><a name="l02904"></a><span class="lineno"> 2904</span>&#160;</div><div class="line"><a name="l02905"></a><span class="lineno"> 2905</span>&#160; <span class="comment">// order by amounts per address, from smallest to largest</span></div><div class="line"><a name="l02906"></a><span class="lineno"> 2906</span>&#160; sort(vecTallyRet.rbegin(), vecTallyRet.rend(), <a class="code" href="structCompareByAmount.html">CompareByAmount</a>());</div><div class="line"><a name="l02907"></a><span class="lineno"> 2907</span>&#160;</div><div class="line"><a name="l02908"></a><span class="lineno"> 2908</span>&#160; <span class="comment">// cache already confirmed anonymizable entries for later use</span></div><div class="line"><a name="l02909"></a><span class="lineno"> 2909</span>&#160; <span class="keywordflow">if</span>(fAnonymizable &amp;&amp; fSkipUnconfirmed) {</div><div class="line"><a name="l02910"></a><span class="lineno"> 2910</span>&#160; <span class="keywordflow">if</span>(fSkipDenominated) {</div><div class="line"><a name="l02911"></a><span class="lineno"> 2911</span>&#160; vecAnonymizableTallyCachedNonDenom = vecTallyRet;</div><div class="line"><a name="l02912"></a><span class="lineno"> 2912</span>&#160; fAnonymizableTallyCachedNonDenom = <span class="keyword">true</span>;</div><div class="line"><a name="l02913"></a><span class="lineno"> 2913</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l02914"></a><span class="lineno"> 2914</span>&#160; vecAnonymizableTallyCached = vecTallyRet;</div><div class="line"><a name="l02915"></a><span class="lineno"> 2915</span>&#160; fAnonymizableTallyCached = <span class="keyword">true</span>;</div><div class="line"><a name="l02916"></a><span class="lineno"> 2916</span>&#160; }</div><div class="line"><a name="l02917"></a><span class="lineno"> 2917</span>&#160; }</div><div class="line"><a name="l02918"></a><span class="lineno"> 2918</span>&#160;</div><div class="line"><a name="l02919"></a><span class="lineno"> 2919</span>&#160; <span class="comment">// debug</span></div><div class="line"><a name="l02920"></a><span class="lineno"> 2920</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="util_8cpp.html#a343d2a13efe00125f78d25dafb0a8d98">LogAcceptCategory</a>(<span class="stringliteral">&quot;selectcoins&quot;</span>)) {</div><div class="line"><a name="l02921"></a><span class="lineno"> 2921</span>&#160; std::string strMessage = <span class="stringliteral">&quot;SelectCoinsGrouppedByAddresses - vecTallyRet:\n&quot;</span>;</div><div class="line"><a name="l02922"></a><span class="lineno"> 2922</span>&#160; BOOST_FOREACH(<a class="code" href="structCompactTallyItem.html">CompactTallyItem</a>&amp; item, vecTallyRet)</div><div class="line"><a name="l02923"></a><span class="lineno"> 2923</span>&#160; strMessage += <a class="code" href="tinyformat_8h.html#a56c674871a61baaad36ad52238c08857">strprintf</a>(<span class="stringliteral">&quot; %s %f\n&quot;</span>, <a class="code" href="classCBitcoinAddress.html">CBitcoinAddress</a>(item.<a class="code" href="structCompactTallyItem.html#a68a09f444683900e80c7e08b23f8fc56">txdest</a>).<a class="code" href="classCBase58Data.html#a7dc91af403ca02694b3247b15604e220">ToString</a>().c_str(), float(item.<a class="code" href="structCompactTallyItem.html#a0efb39fdaacf62d56f5cb90261b71402">nAmount</a>)/<a class="code" href="amount_8h.html#aed6bcb17bc73a5dcf33250e9c2c023cc">COIN</a>);</div><div class="line"><a name="l02924"></a><span class="lineno"> 2924</span>&#160; <a class="code" href="util_8h.html#aab1f837a2366f424bdc996fdf6352171">LogPrint</a>(<span class="stringliteral">&quot;selectcoins&quot;</span>, <span class="stringliteral">&quot;%s&quot;</span>, strMessage);</div><div class="line"><a name="l02925"></a><span class="lineno"> 2925</span>&#160; }</div><div class="line"><a name="l02926"></a><span class="lineno"> 2926</span>&#160;</div><div class="line"><a name="l02927"></a><span class="lineno"> 2927</span>&#160; <span class="keywordflow">return</span> vecTallyRet.size() &gt; 0;</div><div class="line"><a name="l02928"></a><span class="lineno"> 2928</span>&#160;}</div><div class="line"><a name="l02929"></a><span class="lineno"> 2929</span>&#160;</div><div class="line"><a name="l02930"></a><span class="lineno"><a class="line" href="group__Actions.html#ga099c7618f04c56b4bf592eafd1362489"> 2930</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__Actions.html#ga099c7618f04c56b4bf592eafd1362489">CWallet::SelectCoinsDark</a>(<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nValueMin, <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nValueMax, std::vector&lt;CTxIn&gt;&amp; vecTxInRet, <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a>&amp; nValueRet, <span class="keywordtype">int</span> nPrivateSendRoundsMin, <span class="keywordtype">int</span> nPrivateSendRoundsMax)<span class="keyword"> const</span></div><div class="line"><a name="l02931"></a><span class="lineno"> 2931</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l02932"></a><span class="lineno"> 2932</span>&#160; <a class="code" href="classCCoinControl.html">CCoinControl</a> *coinControl=NULL;</div><div class="line"><a name="l02933"></a><span class="lineno"> 2933</span>&#160;</div><div class="line"><a name="l02934"></a><span class="lineno"> 2934</span>&#160; vecTxInRet.clear();</div><div class="line"><a name="l02935"></a><span class="lineno"> 2935</span>&#160; nValueRet = 0;</div><div class="line"><a name="l02936"></a><span class="lineno"> 2936</span>&#160;</div><div class="line"><a name="l02937"></a><span class="lineno"> 2937</span>&#160; vector&lt;COutput&gt; <a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>;</div><div class="line"><a name="l02938"></a><span class="lineno"> 2938</span>&#160; AvailableCoins(<a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>, <span class="keyword">true</span>, coinControl, <span class="keyword">false</span>, nPrivateSendRoundsMin &lt; 0 ? <a class="code" href="wallet_8h.html#a90b09b05f289ac32704a6446a94566cea35c9bedf196c5d09731928695c969b70">ONLY_NONDENOMINATED_NOT1000IFMN</a> : <a class="code" href="wallet_8h.html#a90b09b05f289ac32704a6446a94566ceaab4c4a7abab40ebdb2706c1708fff22e">ONLY_DENOMINATED</a>);</div><div class="line"><a name="l02939"></a><span class="lineno"> 2939</span>&#160;</div><div class="line"><a name="l02940"></a><span class="lineno"> 2940</span>&#160; <span class="comment">//order the array so largest nondenom are first, then denominations, then very small inputs.</span></div><div class="line"><a name="l02941"></a><span class="lineno"> 2941</span>&#160; sort(<a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>.rbegin(), <a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>.rend(), <a class="code" href="structCompareByPriority.html">CompareByPriority</a>());</div><div class="line"><a name="l02942"></a><span class="lineno"> 2942</span>&#160;</div><div class="line"><a name="l02943"></a><span class="lineno"> 2943</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="classCOutput.html">COutput</a>&amp; <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>, <a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>)</div><div class="line"><a name="l02944"></a><span class="lineno"> 2944</span>&#160; {</div><div class="line"><a name="l02945"></a><span class="lineno"> 2945</span>&#160; <span class="comment">//do not allow inputs less than 1/10th of minimum value</span></div><div class="line"><a name="l02946"></a><span class="lineno"> 2946</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.tx-&gt;vout[<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.i].nValue &lt; nValueMin/10) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02947"></a><span class="lineno"> 2947</span>&#160; <span class="comment">//do not allow collaterals to be selected</span></div><div class="line"><a name="l02948"></a><span class="lineno"> 2948</span>&#160; <span class="keywordflow">if</span>(IsCollateralAmount(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.tx-&gt;vout[<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.i].nValue)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02949"></a><span class="lineno"> 2949</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="util_8cpp.html#af26e0e38b52f08409d399c04cde68c22">fMasterNode</a> &amp;&amp; <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.tx-&gt;vout[<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.i].nValue == 1000*<a class="code" href="amount_8h.html#aed6bcb17bc73a5dcf33250e9c2c023cc">COIN</a>) <span class="keywordflow">continue</span>; <span class="comment">//masternode input</span></div><div class="line"><a name="l02950"></a><span class="lineno"> 2950</span>&#160;</div><div class="line"><a name="l02951"></a><span class="lineno"> 2951</span>&#160; <span class="keywordflow">if</span>(nValueRet + <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.tx-&gt;vout[<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.i].nValue &lt;= nValueMax){</div><div class="line"><a name="l02952"></a><span class="lineno"> 2952</span>&#160; <a class="code" href="classCTxIn.html">CTxIn</a> txin = <a class="code" href="classCTxIn.html">CTxIn</a>(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.tx-&gt;GetHash(),<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.i);</div><div class="line"><a name="l02953"></a><span class="lineno"> 2953</span>&#160;</div><div class="line"><a name="l02954"></a><span class="lineno"> 2954</span>&#160; <span class="keywordtype">int</span> nRounds = GetOutpointPrivateSendRounds(txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>);</div><div class="line"><a name="l02955"></a><span class="lineno"> 2955</span>&#160; <span class="keywordflow">if</span>(nRounds &gt;= nPrivateSendRoundsMax) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02956"></a><span class="lineno"> 2956</span>&#160; <span class="keywordflow">if</span>(nRounds &lt; nPrivateSendRoundsMin) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l02957"></a><span class="lineno"> 2957</span>&#160;</div><div class="line"><a name="l02958"></a><span class="lineno"> 2958</span>&#160; txin.<a class="code" href="classCTxIn.html#a91732c5ffb13520a6989b162ff6683fc">prevPubKey</a> = <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.tx-&gt;vout[<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.i].scriptPubKey; <span class="comment">// the inputs PubKey</span></div><div class="line"><a name="l02959"></a><span class="lineno"> 2959</span>&#160; nValueRet += <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.tx-&gt;vout[<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.i].nValue;</div><div class="line"><a name="l02960"></a><span class="lineno"> 2960</span>&#160; vecTxInRet.push_back(txin);</div><div class="line"><a name="l02961"></a><span class="lineno"> 2961</span>&#160; }</div><div class="line"><a name="l02962"></a><span class="lineno"> 2962</span>&#160; }</div><div class="line"><a name="l02963"></a><span class="lineno"> 2963</span>&#160;</div><div class="line"><a name="l02964"></a><span class="lineno"> 2964</span>&#160; <span class="keywordflow">return</span> nValueRet &gt;= nValueMin;</div><div class="line"><a name="l02965"></a><span class="lineno"> 2965</span>&#160;}</div><div class="line"><a name="l02966"></a><span class="lineno"> 2966</span>&#160;</div><div class="line"><a name="l02967"></a><span class="lineno"><a class="line" href="group__Actions.html#gadac94dbabce69ad9919f0c317223c889"> 2967</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__Actions.html#gadac94dbabce69ad9919f0c317223c889">CWallet::GetCollateralTxIn</a>(<a class="code" href="classCTxIn.html">CTxIn</a>&amp; txinRet, <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a>&amp; nValueRet)<span class="keyword"> const</span></div><div class="line"><a name="l02968"></a><span class="lineno"> 2968</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l02969"></a><span class="lineno"> 2969</span>&#160; vector&lt;COutput&gt; <a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>;</div><div class="line"><a name="l02970"></a><span class="lineno"> 2970</span>&#160;</div><div class="line"><a name="l02971"></a><span class="lineno"> 2971</span>&#160; AvailableCoins(<a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>);</div><div class="line"><a name="l02972"></a><span class="lineno"> 2972</span>&#160;</div><div class="line"><a name="l02973"></a><span class="lineno"> 2973</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="classCOutput.html">COutput</a>&amp; <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>, <a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>)</div><div class="line"><a name="l02974"></a><span class="lineno"> 2974</span>&#160; {</div><div class="line"><a name="l02975"></a><span class="lineno"> 2975</span>&#160; <span class="keywordflow">if</span>(IsCollateralAmount(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.tx-&gt;vout[<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.i].nValue))</div><div class="line"><a name="l02976"></a><span class="lineno"> 2976</span>&#160; {</div><div class="line"><a name="l02977"></a><span class="lineno"> 2977</span>&#160; txinRet = <a class="code" href="classCTxIn.html">CTxIn</a>(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.tx-&gt;GetHash(), <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.i);</div><div class="line"><a name="l02978"></a><span class="lineno"> 2978</span>&#160; txinRet.<a class="code" href="classCTxIn.html#a91732c5ffb13520a6989b162ff6683fc">prevPubKey</a> = <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.tx-&gt;vout[<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.i].scriptPubKey; <span class="comment">// the inputs PubKey</span></div><div class="line"><a name="l02979"></a><span class="lineno"> 2979</span>&#160; nValueRet = <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.tx-&gt;vout[<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.i].nValue;</div><div class="line"><a name="l02980"></a><span class="lineno"> 2980</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l02981"></a><span class="lineno"> 2981</span>&#160; }</div><div class="line"><a name="l02982"></a><span class="lineno"> 2982</span>&#160; }</div><div class="line"><a name="l02983"></a><span class="lineno"> 2983</span>&#160;</div><div class="line"><a name="l02984"></a><span class="lineno"> 2984</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02985"></a><span class="lineno"> 2985</span>&#160;}</div><div class="line"><a name="l02986"></a><span class="lineno"> 2986</span>&#160;</div><div class="line"><a name="l02987"></a><span class="lineno"><a class="line" href="group__Actions.html#ga7bed1181907af862735c853782b21e88"> 2987</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__Actions.html#ga7bed1181907af862735c853782b21e88">CWallet::GetMasternodeOutpointAndKeys</a>(<a class="code" href="classCOutPoint.html">COutPoint</a>&amp; outpointRet, <a class="code" href="classCPubKey.html">CPubKey</a>&amp; pubKeyRet, <a class="code" href="classCKey.html">CKey</a>&amp; keyRet, std::string strTxHash, std::string strOutputIndex)</div><div class="line"><a name="l02988"></a><span class="lineno"> 2988</span>&#160;{</div><div class="line"><a name="l02989"></a><span class="lineno"> 2989</span>&#160; <span class="comment">// wait for reindex and/or import to finish</span></div><div class="line"><a name="l02990"></a><span class="lineno"> 2990</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="validation_8cpp.html#aaf87d0dd26c4a7c9bcc5bdd1127e8637">fImporting</a> || <a class="code" href="validation_8cpp.html#a8e0eca589b2d4254a65f04c5d91888b2">fReindex</a>) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02991"></a><span class="lineno"> 2991</span>&#160;</div><div class="line"><a name="l02992"></a><span class="lineno"> 2992</span>&#160; <span class="comment">// Find possible candidates</span></div><div class="line"><a name="l02993"></a><span class="lineno"> 2993</span>&#160; std::vector&lt;COutput&gt; vPossibleCoins;</div><div class="line"><a name="l02994"></a><span class="lineno"> 2994</span>&#160; AvailableCoins(vPossibleCoins, <span class="keyword">true</span>, NULL, <span class="keyword">false</span>, <a class="code" href="wallet_8h.html#a90b09b05f289ac32704a6446a94566cea3eec6f6b31b59d32f5dc13c63bae582d">ONLY_1000</a>);</div><div class="line"><a name="l02995"></a><span class="lineno"> 2995</span>&#160; <span class="keywordflow">if</span>(vPossibleCoins.empty()) {</div><div class="line"><a name="l02996"></a><span class="lineno"> 2996</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;CWallet::GetMasternodeOutpointAndKeys -- Could not locate any valid masternode vin\n&quot;</span>);</div><div class="line"><a name="l02997"></a><span class="lineno"> 2997</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l02998"></a><span class="lineno"> 2998</span>&#160; }</div><div class="line"><a name="l02999"></a><span class="lineno"> 2999</span>&#160;</div><div class="line"><a name="l03000"></a><span class="lineno"> 3000</span>&#160; <span class="keywordflow">if</span>(strTxHash.empty()) <span class="comment">// No output specified, select the first one</span></div><div class="line"><a name="l03001"></a><span class="lineno"> 3001</span>&#160; <span class="keywordflow">return</span> GetOutpointAndKeysFromOutput(vPossibleCoins[0], outpointRet, pubKeyRet, keyRet);</div><div class="line"><a name="l03002"></a><span class="lineno"> 3002</span>&#160;</div><div class="line"><a name="l03003"></a><span class="lineno"> 3003</span>&#160; <span class="comment">// Find specific vin</span></div><div class="line"><a name="l03004"></a><span class="lineno"> 3004</span>&#160; <a class="code" href="classuint256.html">uint256</a> txHash = <a class="code" href="uint256_8h.html#a52e679560cc1ebf68f878ed69e38f259">uint256S</a>(strTxHash);</div><div class="line"><a name="l03005"></a><span class="lineno"> 3005</span>&#160; <span class="keywordtype">int</span> nOutputIndex = <a class="code" href="utilstrencodings_8cpp.html#aa5ce96ec36f4413f820cec9c1831c070">atoi</a>(strOutputIndex.c_str());</div><div class="line"><a name="l03006"></a><span class="lineno"> 3006</span>&#160;</div><div class="line"><a name="l03007"></a><span class="lineno"> 3007</span>&#160; BOOST_FOREACH(<a class="code" href="classCOutput.html">COutput</a>&amp; <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>, vPossibleCoins)</div><div class="line"><a name="l03008"></a><span class="lineno"> 3008</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.tx-&gt;GetHash() == txHash &amp;&amp; <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.i == nOutputIndex) <span class="comment">// found it!</span></div><div class="line"><a name="l03009"></a><span class="lineno"> 3009</span>&#160; <span class="keywordflow">return</span> GetOutpointAndKeysFromOutput(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>, outpointRet, pubKeyRet, keyRet);</div><div class="line"><a name="l03010"></a><span class="lineno"> 3010</span>&#160;</div><div class="line"><a name="l03011"></a><span class="lineno"> 3011</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;CWallet::GetMasternodeOutpointAndKeys -- Could not locate specified masternode vin\n&quot;</span>);</div><div class="line"><a name="l03012"></a><span class="lineno"> 3012</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l03013"></a><span class="lineno"> 3013</span>&#160;}</div><div class="line"><a name="l03014"></a><span class="lineno"> 3014</span>&#160;</div><div class="line"><a name="l03015"></a><span class="lineno"><a class="line" href="group__Actions.html#gae534f21212e6736c1390c73a0d4498e2"> 3015</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__Actions.html#gae534f21212e6736c1390c73a0d4498e2">CWallet::GetOutpointAndKeysFromOutput</a>(<span class="keyword">const</span> <a class="code" href="classCOutput.html">COutput</a>&amp; <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>, <a class="code" href="classCOutPoint.html">COutPoint</a>&amp; outpointRet, <a class="code" href="classCPubKey.html">CPubKey</a>&amp; pubKeyRet, <a class="code" href="classCKey.html">CKey</a>&amp; keyRet)</div><div class="line"><a name="l03016"></a><span class="lineno"> 3016</span>&#160;{</div><div class="line"><a name="l03017"></a><span class="lineno"> 3017</span>&#160; <span class="comment">// wait for reindex and/or import to finish</span></div><div class="line"><a name="l03018"></a><span class="lineno"> 3018</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="validation_8cpp.html#aaf87d0dd26c4a7c9bcc5bdd1127e8637">fImporting</a> || <a class="code" href="validation_8cpp.html#a8e0eca589b2d4254a65f04c5d91888b2">fReindex</a>) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l03019"></a><span class="lineno"> 3019</span>&#160;</div><div class="line"><a name="l03020"></a><span class="lineno"> 3020</span>&#160; <a class="code" href="classCScript.html">CScript</a> pubScript;</div><div class="line"><a name="l03021"></a><span class="lineno"> 3021</span>&#160;</div><div class="line"><a name="l03022"></a><span class="lineno"> 3022</span>&#160; outpointRet = <a class="code" href="classCOutPoint.html">COutPoint</a>(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.tx-&gt;GetHash(), <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.i);</div><div class="line"><a name="l03023"></a><span class="lineno"> 3023</span>&#160; pubScript = <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.tx-&gt;vout[<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.i].scriptPubKey; <span class="comment">// the inputs PubKey</span></div><div class="line"><a name="l03024"></a><span class="lineno"> 3024</span>&#160;</div><div class="line"><a name="l03025"></a><span class="lineno"> 3025</span>&#160; <a class="code" href="standard_8h.html#a50f712c3d9a0d2f85ae464497dd9cff8">CTxDestination</a> address1;</div><div class="line"><a name="l03026"></a><span class="lineno"> 3026</span>&#160; <a class="code" href="standard_8cpp.html#a951f7e601746ae076afdf3169ecca2fc">ExtractDestination</a>(pubScript, address1);</div><div class="line"><a name="l03027"></a><span class="lineno"> 3027</span>&#160; <a class="code" href="classCBitcoinAddress.html">CBitcoinAddress</a> address2(address1);</div><div class="line"><a name="l03028"></a><span class="lineno"> 3028</span>&#160;</div><div class="line"><a name="l03029"></a><span class="lineno"> 3029</span>&#160; <a class="code" href="classCKeyID.html">CKeyID</a> keyID;</div><div class="line"><a name="l03030"></a><span class="lineno"> 3030</span>&#160; <span class="keywordflow">if</span> (!address2.<a class="code" href="classCBitcoinAddress.html#af3d7c4547803b09144fc040320f687dd">GetKeyID</a>(keyID)) {</div><div class="line"><a name="l03031"></a><span class="lineno"> 3031</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;CWallet::GetOutpointAndKeysFromOutput -- Address does not refer to a key\n&quot;</span>);</div><div class="line"><a name="l03032"></a><span class="lineno"> 3032</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l03033"></a><span class="lineno"> 3033</span>&#160; }</div><div class="line"><a name="l03034"></a><span class="lineno"> 3034</span>&#160;</div><div class="line"><a name="l03035"></a><span class="lineno"> 3035</span>&#160; <span class="keywordflow">if</span> (!GetKey(keyID, keyRet)) {</div><div class="line"><a name="l03036"></a><span class="lineno"> 3036</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a> (<span class="stringliteral">&quot;CWallet::GetOutpointAndKeysFromOutput -- Private key for address is not known\n&quot;</span>);</div><div class="line"><a name="l03037"></a><span class="lineno"> 3037</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l03038"></a><span class="lineno"> 3038</span>&#160; }</div><div class="line"><a name="l03039"></a><span class="lineno"> 3039</span>&#160;</div><div class="line"><a name="l03040"></a><span class="lineno"> 3040</span>&#160; pubKeyRet = keyRet.<a class="code" href="classCKey.html#aa1085c59603a62db6ec776300f250337">GetPubKey</a>();</div><div class="line"><a name="l03041"></a><span class="lineno"> 3041</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l03042"></a><span class="lineno"> 3042</span>&#160;}</div><div class="line"><a name="l03043"></a><span class="lineno"> 3043</span>&#160;</div><div class="line"><a name="l03044"></a><span class="lineno"><a class="line" href="group__Actions.html#ga6ab79abf1aba845254fe5969731ba2ad"> 3044</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="group__Actions.html#ga6ab79abf1aba845254fe5969731ba2ad">CWallet::CountInputsWithAmount</a>(<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nInputAmount)</div><div class="line"><a name="l03045"></a><span class="lineno"> 3045</span>&#160;{</div><div class="line"><a name="l03046"></a><span class="lineno"> 3046</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nTotal = 0;</div><div class="line"><a name="l03047"></a><span class="lineno"> 3047</span>&#160; {</div><div class="line"><a name="l03048"></a><span class="lineno"> 3048</span>&#160; <a class="code" href="sync_8h.html#a35644e2b75a93da0cb0f6c768f34efa8">LOCK2</a>(<a class="code" href="validation_8cpp.html#a1ed8285f0fe3c6799c53265ce72552c8">cs_main</a>, cs_wallet);</div><div class="line"><a name="l03049"></a><span class="lineno"> 3049</span>&#160; <span class="keywordflow">for</span> (map&lt;uint256, CWalletTx&gt;::const_iterator it = mapWallet.begin(); it != mapWallet.end(); ++it)</div><div class="line"><a name="l03050"></a><span class="lineno"> 3050</span>&#160; {</div><div class="line"><a name="l03051"></a><span class="lineno"> 3051</span>&#160; <span class="keyword">const</span> <a class="code" href="classCWalletTx.html">CWalletTx</a>* pcoin = &amp;(*it).second;</div><div class="line"><a name="l03052"></a><span class="lineno"> 3052</span>&#160; <span class="keywordflow">if</span> (pcoin-&gt;<a class="code" href="group__mapWallet.html#ga71efb0d5b5def8ae00a1d74b8741bfcb">IsTrusted</a>()){</div><div class="line"><a name="l03053"></a><span class="lineno"> 3053</span>&#160; <span class="keywordtype">int</span> nDepth = pcoin-&gt;<a class="code" href="classCMerkleTx.html#a5bf3a355593ecce5799de92d013149b1">GetDepthInMainChain</a>(<span class="keyword">false</span>);</div><div class="line"><a name="l03054"></a><span class="lineno"> 3054</span>&#160;</div><div class="line"><a name="l03055"></a><span class="lineno"> 3055</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; pcoin-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>.size(); i++) {</div><div class="line"><a name="l03056"></a><span class="lineno"> 3056</span>&#160; <a class="code" href="classCOutput.html">COutput</a> <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a> = <a class="code" href="classCOutput.html">COutput</a>(pcoin, i, nDepth, <span class="keyword">true</span>, <span class="keyword">true</span>);</div><div class="line"><a name="l03057"></a><span class="lineno"> 3057</span>&#160; <a class="code" href="classCOutPoint.html">COutPoint</a> outpoint = <a class="code" href="classCOutPoint.html">COutPoint</a>(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.tx-&gt;GetHash(), <a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.i);</div><div class="line"><a name="l03058"></a><span class="lineno"> 3058</span>&#160;</div><div class="line"><a name="l03059"></a><span class="lineno"> 3059</span>&#160; <span class="keywordflow">if</span>(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.tx-&gt;vout[<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.i].nValue != nInputAmount) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l03060"></a><span class="lineno"> 3060</span>&#160; <span class="keywordflow">if</span>(!IsDenominatedAmount(pcoin-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[i].nValue)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l03061"></a><span class="lineno"> 3061</span>&#160; <span class="keywordflow">if</span>(IsSpent(<a class="code" href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">out</a>.tx-&gt;GetHash(), i) || <a class="code" href="wallet__ismine_8cpp.html#adc59cf67d903c1ba1ef225561b85bfce">IsMine</a>(pcoin-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[i]) != <a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20daaf93acf4732907100f55dc017b6daf58">ISMINE_SPENDABLE</a> || !IsDenominated(outpoint)) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l03062"></a><span class="lineno"> 3062</span>&#160;</div><div class="line"><a name="l03063"></a><span class="lineno"> 3063</span>&#160; nTotal++;</div><div class="line"><a name="l03064"></a><span class="lineno"> 3064</span>&#160; }</div><div class="line"><a name="l03065"></a><span class="lineno"> 3065</span>&#160; }</div><div class="line"><a name="l03066"></a><span class="lineno"> 3066</span>&#160; }</div><div class="line"><a name="l03067"></a><span class="lineno"> 3067</span>&#160; }</div><div class="line"><a name="l03068"></a><span class="lineno"> 3068</span>&#160;</div><div class="line"><a name="l03069"></a><span class="lineno"> 3069</span>&#160; <span class="keywordflow">return</span> nTotal;</div><div class="line"><a name="l03070"></a><span class="lineno"> 3070</span>&#160;}</div><div class="line"><a name="l03071"></a><span class="lineno"> 3071</span>&#160;</div><div class="line"><a name="l03072"></a><span class="lineno"><a class="line" href="group__Actions.html#ga059d185bded45fcf230a7a75e1be5f0e"> 3072</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__Actions.html#ga059d185bded45fcf230a7a75e1be5f0e">CWallet::HasCollateralInputs</a>(<span class="keywordtype">bool</span> fOnlyConfirmed)<span class="keyword"> const</span></div><div class="line"><a name="l03073"></a><span class="lineno"> 3073</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l03074"></a><span class="lineno"> 3074</span>&#160; vector&lt;COutput&gt; <a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>;</div><div class="line"><a name="l03075"></a><span class="lineno"> 3075</span>&#160; AvailableCoins(<a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>, fOnlyConfirmed, NULL, <span class="keyword">false</span>, <a class="code" href="wallet_8h.html#a90b09b05f289ac32704a6446a94566cea8454489afd757a138dd833cb00cf7aab">ONLY_PRIVATESEND_COLLATERAL</a>);</div><div class="line"><a name="l03076"></a><span class="lineno"> 3076</span>&#160;</div><div class="line"><a name="l03077"></a><span class="lineno"> 3077</span>&#160; <span class="keywordflow">return</span> !<a class="code" href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a>.empty();</div><div class="line"><a name="l03078"></a><span class="lineno"> 3078</span>&#160;}</div><div class="line"><a name="l03079"></a><span class="lineno"> 3079</span>&#160;</div><div class="line"><a name="l03080"></a><span class="lineno"><a class="line" href="group__Actions.html#gaea356cdf45e0ec83056ca5b0576add2b"> 3080</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__Actions.html#gaea356cdf45e0ec83056ca5b0576add2b">CWallet::IsCollateralAmount</a>(<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nInputAmount)<span class="keyword"> const</span></div><div class="line"><a name="l03081"></a><span class="lineno"> 3081</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l03082"></a><span class="lineno"> 3082</span>&#160; <span class="comment">// collateral inputs should always be a 2x..4x of mixing collateral</span></div><div class="line"><a name="l03083"></a><span class="lineno"> 3083</span>&#160; <span class="keywordflow">return</span> nInputAmount &gt; <a class="code" href="classCPrivateSend.html#ac699ad0d6b0b0621b2b6358b38703525">CPrivateSend::GetCollateralAmount</a>() &amp;&amp;</div><div class="line"><a name="l03084"></a><span class="lineno"> 3084</span>&#160; nInputAmount &lt;= <a class="code" href="classCPrivateSend.html#aa84712b7f8c56b84b5bcbcb8557d06db">CPrivateSend::GetMaxCollateralAmount</a>() &amp;&amp;</div><div class="line"><a name="l03085"></a><span class="lineno"> 3085</span>&#160; nInputAmount % <a class="code" href="classCPrivateSend.html#ac699ad0d6b0b0621b2b6358b38703525">CPrivateSend::GetCollateralAmount</a>() == 0;</div><div class="line"><a name="l03086"></a><span class="lineno"> 3086</span>&#160;}</div><div class="line"><a name="l03087"></a><span class="lineno"> 3087</span>&#160;</div><div class="line"><a name="l03088"></a><span class="lineno"><a class="line" href="group__Actions.html#ga94971f63a4a5ed96e2c5c6760a29bfa6"> 3088</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__Actions.html#ga94971f63a4a5ed96e2c5c6760a29bfa6">CWallet::CreateCollateralTransaction</a>(<a class="code" href="structCMutableTransaction.html">CMutableTransaction</a>&amp; txCollateral, std::string&amp; strReason)</div><div class="line"><a name="l03089"></a><span class="lineno"> 3089</span>&#160;{</div><div class="line"><a name="l03090"></a><span class="lineno"> 3090</span>&#160; txCollateral.<a class="code" href="structCMutableTransaction.html#ad6b1a0a773293fd153a1d384923631da">vin</a>.clear();</div><div class="line"><a name="l03091"></a><span class="lineno"> 3091</span>&#160; txCollateral.<a class="code" href="structCMutableTransaction.html#aca14a252c78e4af2dfe68d7ea67a77dc">vout</a>.clear();</div><div class="line"><a name="l03092"></a><span class="lineno"> 3092</span>&#160;</div><div class="line"><a name="l03093"></a><span class="lineno"> 3093</span>&#160; <a class="code" href="classCReserveKey.html">CReserveKey</a> reservekey(<span class="keyword">this</span>);</div><div class="line"><a name="l03094"></a><span class="lineno"> 3094</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nValue = 0;</div><div class="line"><a name="l03095"></a><span class="lineno"> 3095</span>&#160; <a class="code" href="classCTxIn.html">CTxIn</a> txinCollateral;</div><div class="line"><a name="l03096"></a><span class="lineno"> 3096</span>&#160;</div><div class="line"><a name="l03097"></a><span class="lineno"> 3097</span>&#160; <span class="keywordflow">if</span> (!GetCollateralTxIn(txinCollateral, nValue)) {</div><div class="line"><a name="l03098"></a><span class="lineno"> 3098</span>&#160; strReason = <span class="stringliteral">&quot;PrivateSend requires a collateral transaction and could not locate an acceptable input!&quot;</span>;</div><div class="line"><a name="l03099"></a><span class="lineno"> 3099</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l03100"></a><span class="lineno"> 3100</span>&#160; }</div><div class="line"><a name="l03101"></a><span class="lineno"> 3101</span>&#160;</div><div class="line"><a name="l03102"></a><span class="lineno"> 3102</span>&#160; <span class="comment">// make our change address</span></div><div class="line"><a name="l03103"></a><span class="lineno"> 3103</span>&#160; <a class="code" href="classCScript.html">CScript</a> scriptChange;</div><div class="line"><a name="l03104"></a><span class="lineno"> 3104</span>&#160; <a class="code" href="classCPubKey.html">CPubKey</a> vchPubKey;</div><div class="line"><a name="l03105"></a><span class="lineno"> 3105</span>&#160; assert(reservekey.<a class="code" href="group__Actions.html#gabe9bd095306b1320085b615885aaa250">GetReservedKey</a>(vchPubKey, <span class="keyword">true</span>)); <span class="comment">// should never fail, as we just unlocked</span></div><div class="line"><a name="l03106"></a><span class="lineno"> 3106</span>&#160; scriptChange = <a class="code" href="standard_8cpp.html#ae40f28d3b46c21033f6ee1f1200d0321">GetScriptForDestination</a>(vchPubKey.<a class="code" href="classCPubKey.html#a2675f7e6f72eff68e7a5227289feb021">GetID</a>());</div><div class="line"><a name="l03107"></a><span class="lineno"> 3107</span>&#160; reservekey.<a class="code" href="group__Actions.html#ga493d06f41ca9571f2a42c8581a3952d8">KeepKey</a>();</div><div class="line"><a name="l03108"></a><span class="lineno"> 3108</span>&#160;</div><div class="line"><a name="l03109"></a><span class="lineno"> 3109</span>&#160; txCollateral.<a class="code" href="structCMutableTransaction.html#ad6b1a0a773293fd153a1d384923631da">vin</a>.push_back(txinCollateral);</div><div class="line"><a name="l03110"></a><span class="lineno"> 3110</span>&#160;</div><div class="line"><a name="l03111"></a><span class="lineno"> 3111</span>&#160; <span class="comment">//pay collateral charge in fees</span></div><div class="line"><a name="l03112"></a><span class="lineno"> 3112</span>&#160; <a class="code" href="classCTxOut.html">CTxOut</a> txout = <a class="code" href="classCTxOut.html">CTxOut</a>(nValue - <a class="code" href="classCPrivateSend.html#ac699ad0d6b0b0621b2b6358b38703525">CPrivateSend::GetCollateralAmount</a>(), scriptChange);</div><div class="line"><a name="l03113"></a><span class="lineno"> 3113</span>&#160; txCollateral.<a class="code" href="structCMutableTransaction.html#aca14a252c78e4af2dfe68d7ea67a77dc">vout</a>.push_back(txout);</div><div class="line"><a name="l03114"></a><span class="lineno"> 3114</span>&#160;</div><div class="line"><a name="l03115"></a><span class="lineno"> 3115</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="sign_8cpp.html#adb49c071f85f19a8a8cb4e97d9fe8b93">SignSignature</a>(*<span class="keyword">this</span>, txinCollateral.<a class="code" href="classCTxIn.html#a91732c5ffb13520a6989b162ff6683fc">prevPubKey</a>, txCollateral, 0, <span class="keywordtype">int</span>(<a class="code" href="interpreter_8h.html#aaf8fd5f0e57d456151c951e0f3715fc4ac68c7df6528b3001624e56b2de3826de">SIGHASH_ALL</a>|<a class="code" href="interpreter_8h.html#aaf8fd5f0e57d456151c951e0f3715fc4a9412c721b741fe9be1e3247dc390a4d2">SIGHASH_ANYONECANPAY</a>))) {</div><div class="line"><a name="l03116"></a><span class="lineno"> 3116</span>&#160; strReason = <span class="stringliteral">&quot;Unable to sign collateral transaction!&quot;</span>;</div><div class="line"><a name="l03117"></a><span class="lineno"> 3117</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l03118"></a><span class="lineno"> 3118</span>&#160; }</div><div class="line"><a name="l03119"></a><span class="lineno"> 3119</span>&#160;</div><div class="line"><a name="l03120"></a><span class="lineno"> 3120</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l03121"></a><span class="lineno"> 3121</span>&#160;}</div><div class="line"><a name="l03122"></a><span class="lineno"> 3122</span>&#160;</div><div class="line"><a name="l03123"></a><span class="lineno"><a class="line" href="group__Actions.html#ga3b0c6540531740c1396802f14c77a9b5"> 3123</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__Actions.html#ga3b0c6540531740c1396802f14c77a9b5">CWallet::GetBudgetSystemCollateralTX</a>(<a class="code" href="classCTransaction.html">CTransaction</a>&amp; tx, <a class="code" href="classuint256.html">uint256</a> hash, <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> amount, <span class="keywordtype">bool</span> fUseInstantSend)</div><div class="line"><a name="l03124"></a><span class="lineno"> 3124</span>&#160;{</div><div class="line"><a name="l03125"></a><span class="lineno"> 3125</span>&#160; <a class="code" href="classCWalletTx.html">CWalletTx</a> wtx;</div><div class="line"><a name="l03126"></a><span class="lineno"> 3126</span>&#160; <span class="keywordflow">if</span>(GetBudgetSystemCollateralTX(wtx, hash, amount, fUseInstantSend)){</div><div class="line"><a name="l03127"></a><span class="lineno"> 3127</span>&#160; tx = (<a class="code" href="classCTransaction.html">CTransaction</a>)wtx;</div><div class="line"><a name="l03128"></a><span class="lineno"> 3128</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l03129"></a><span class="lineno"> 3129</span>&#160; }</div><div class="line"><a name="l03130"></a><span class="lineno"> 3130</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l03131"></a><span class="lineno"> 3131</span>&#160;}</div><div class="line"><a name="l03132"></a><span class="lineno"> 3132</span>&#160;</div><div class="line"><a name="l03133"></a><span class="lineno"><a class="line" href="group__Actions.html#gae27fa69f87bfb489bf4ed77b35cee1d1"> 3133</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__Actions.html#ga3b0c6540531740c1396802f14c77a9b5">CWallet::GetBudgetSystemCollateralTX</a>(<a class="code" href="classCWalletTx.html">CWalletTx</a>&amp; tx, <a class="code" href="classuint256.html">uint256</a> hash, <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> amount, <span class="keywordtype">bool</span> fUseInstantSend)</div><div class="line"><a name="l03134"></a><span class="lineno"> 3134</span>&#160;{</div><div class="line"><a name="l03135"></a><span class="lineno"> 3135</span>&#160; <span class="comment">// make our change address</span></div><div class="line"><a name="l03136"></a><span class="lineno"> 3136</span>&#160; <a class="code" href="classCReserveKey.html">CReserveKey</a> reservekey(<span class="keyword">this</span>);</div><div class="line"><a name="l03137"></a><span class="lineno"> 3137</span>&#160;</div><div class="line"><a name="l03138"></a><span class="lineno"> 3138</span>&#160; <a class="code" href="classCScript.html">CScript</a> scriptChange;</div><div class="line"><a name="l03139"></a><span class="lineno"> 3139</span>&#160; scriptChange &lt;&lt; <a class="code" href="script_8h.html#a63e349a6089a54da9fe09a3d858648bdad436c18b194473f5ec64c28b774e41b3">OP_RETURN</a> &lt;&lt; <a class="code" href="script_8h.html#a54e10bc63d490dd5d39d245102b81359">ToByteVector</a>(hash);</div><div class="line"><a name="l03140"></a><span class="lineno"> 3140</span>&#160;</div><div class="line"><a name="l03141"></a><span class="lineno"> 3141</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nFeeRet = 0;</div><div class="line"><a name="l03142"></a><span class="lineno"> 3142</span>&#160; <span class="keywordtype">int</span> nChangePosRet = -1;</div><div class="line"><a name="l03143"></a><span class="lineno"> 3143</span>&#160; std::string strFail = <span class="stringliteral">&quot;&quot;</span>;</div><div class="line"><a name="l03144"></a><span class="lineno"> 3144</span>&#160; vector&lt; CRecipient &gt; vecSend;</div><div class="line"><a name="l03145"></a><span class="lineno"> 3145</span>&#160; vecSend.push_back((<a class="code" href="structCRecipient.html">CRecipient</a>){scriptChange, amount, <span class="keyword">false</span>});</div><div class="line"><a name="l03146"></a><span class="lineno"> 3146</span>&#160;</div><div class="line"><a name="l03147"></a><span class="lineno"> 3147</span>&#160; <a class="code" href="classCCoinControl.html">CCoinControl</a> *coinControl=NULL;</div><div class="line"><a name="l03148"></a><span class="lineno"> 3148</span>&#160; <span class="keywordtype">bool</span> success = CreateTransaction(vecSend, tx, reservekey, nFeeRet, nChangePosRet, strFail, coinControl, <span class="keyword">true</span>, <a class="code" href="wallet_8h.html#a90b09b05f289ac32704a6446a94566cea94cc8a0e81d9490cdbdfc3d3f215e9e7">ALL_COINS</a>, fUseInstantSend);</div><div class="line"><a name="l03149"></a><span class="lineno"> 3149</span>&#160; <span class="keywordflow">if</span>(!success){</div><div class="line"><a name="l03150"></a><span class="lineno"> 3150</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;CWallet::GetBudgetSystemCollateralTX -- Error: %s\n&quot;</span>, strFail);</div><div class="line"><a name="l03151"></a><span class="lineno"> 3151</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l03152"></a><span class="lineno"> 3152</span>&#160; }</div><div class="line"><a name="l03153"></a><span class="lineno"> 3153</span>&#160;</div><div class="line"><a name="l03154"></a><span class="lineno"> 3154</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l03155"></a><span class="lineno"> 3155</span>&#160;}</div><div class="line"><a name="l03156"></a><span class="lineno"> 3156</span>&#160;</div><div class="line"><a name="l03157"></a><span class="lineno"> 3157</span>&#160;</div><div class="line"><a name="l03158"></a><span class="lineno"><a class="line" href="group__Actions.html#gae9f04ff3adc27b7fec2fd0a794af892d"> 3158</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__Actions.html#gae9f04ff3adc27b7fec2fd0a794af892d">CWallet::ConvertList</a>(std::vector&lt;CTxIn&gt; vecTxIn, std::vector&lt;CAmount&gt;&amp; vecAmounts)</div><div class="line"><a name="l03159"></a><span class="lineno"> 3159</span>&#160;{</div><div class="line"><a name="l03160"></a><span class="lineno"> 3160</span>&#160; BOOST_FOREACH(<a class="code" href="classCTxIn.html">CTxIn</a> txin, vecTxIn) {</div><div class="line"><a name="l03161"></a><span class="lineno"> 3161</span>&#160; <span class="keywordflow">if</span> (mapWallet.count(txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>.<a class="code" href="classCOutPoint.html#af131c7194a660558b0ff158f4efa7a28">hash</a>)) {</div><div class="line"><a name="l03162"></a><span class="lineno"> 3162</span>&#160; <a class="code" href="classCWalletTx.html">CWalletTx</a>&amp; wtx = mapWallet[txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>.<a class="code" href="classCOutPoint.html#af131c7194a660558b0ff158f4efa7a28">hash</a>];</div><div class="line"><a name="l03163"></a><span class="lineno"> 3163</span>&#160; <span class="keywordflow">if</span>(txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>.<a class="code" href="classCOutPoint.html#a1b857e3a0412ff741da2c9f8defe315c">n</a> &lt; wtx.<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>.size()){</div><div class="line"><a name="l03164"></a><span class="lineno"> 3164</span>&#160; vecAmounts.push_back(wtx.<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>.<a class="code" href="classCOutPoint.html#a1b857e3a0412ff741da2c9f8defe315c">n</a>].nValue);</div><div class="line"><a name="l03165"></a><span class="lineno"> 3165</span>&#160; }</div><div class="line"><a name="l03166"></a><span class="lineno"> 3166</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03167"></a><span class="lineno"> 3167</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;CWallet::ConvertList -- Couldn&#39;t find transaction\n&quot;</span>);</div><div class="line"><a name="l03168"></a><span class="lineno"> 3168</span>&#160; }</div><div class="line"><a name="l03169"></a><span class="lineno"> 3169</span>&#160; }</div><div class="line"><a name="l03170"></a><span class="lineno"> 3170</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l03171"></a><span class="lineno"> 3171</span>&#160;}</div><div class="line"><a name="l03172"></a><span class="lineno"> 3172</span>&#160;</div><div class="line"><a name="l03173"></a><span class="lineno"><a class="line" href="group__Actions.html#ga9476d8b40414f77f7f3bcd3ba28fa31f"> 3173</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__Actions.html#ga9476d8b40414f77f7f3bcd3ba28fa31f">CWallet::CreateTransaction</a>(<span class="keyword">const</span> vector&lt;CRecipient&gt;&amp; vecSend, <a class="code" href="classCWalletTx.html">CWalletTx</a>&amp; wtxNew, <a class="code" href="classCReserveKey.html">CReserveKey</a>&amp; reservekey, <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a>&amp; nFeeRet,</div><div class="line"><a name="l03174"></a><span class="lineno"> 3174</span>&#160; <span class="keywordtype">int</span>&amp; nChangePosRet, std::string&amp; strFailReason, <span class="keyword">const</span> <a class="code" href="classCCoinControl.html">CCoinControl</a>* coinControl, <span class="keywordtype">bool</span> sign, <a class="code" href="wallet_8h.html#a90b09b05f289ac32704a6446a94566ce">AvailableCoinsType</a> nCoinType, <span class="keywordtype">bool</span> fUseInstantSend)</div><div class="line"><a name="l03175"></a><span class="lineno"> 3175</span>&#160;{</div><div class="line"><a name="l03176"></a><span class="lineno"> 3176</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nFeePay = fUseInstantSend ? <a class="code" href="classCTxLockRequest.html">CTxLockRequest</a>().<a class="code" href="classCTxLockRequest.html#a322a9ad6b70cc14906084be0918c8b52">GetMinFee</a>() : 0;</div><div class="line"><a name="l03177"></a><span class="lineno"> 3177</span>&#160;</div><div class="line"><a name="l03178"></a><span class="lineno"> 3178</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nValue = 0;</div><div class="line"><a name="l03179"></a><span class="lineno"> 3179</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nSubtractFeeFromAmount = 0;</div><div class="line"><a name="l03180"></a><span class="lineno"> 3180</span>&#160; BOOST_FOREACH (<span class="keyword">const</span> <a class="code" href="structCRecipient.html">CRecipient</a>&amp; recipient, vecSend)</div><div class="line"><a name="l03181"></a><span class="lineno"> 3181</span>&#160; {</div><div class="line"><a name="l03182"></a><span class="lineno"> 3182</span>&#160; <span class="keywordflow">if</span> (nValue &lt; 0 || recipient.<a class="code" href="structCRecipient.html#a8b22af0f2653323bb3fbf19aface4c5c">nAmount</a> &lt; 0)</div><div class="line"><a name="l03183"></a><span class="lineno"> 3183</span>&#160; {</div><div class="line"><a name="l03184"></a><span class="lineno"> 3184</span>&#160; strFailReason = <a class="code" href="util_8h.html#aad133bb6103b53cebf03fd01e2f11ba1">_</a>(<span class="stringliteral">&quot;Transaction amounts must be positive&quot;</span>);</div><div class="line"><a name="l03185"></a><span class="lineno"> 3185</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l03186"></a><span class="lineno"> 3186</span>&#160; }</div><div class="line"><a name="l03187"></a><span class="lineno"> 3187</span>&#160; nValue += recipient.<a class="code" href="structCRecipient.html#a8b22af0f2653323bb3fbf19aface4c5c">nAmount</a>;</div><div class="line"><a name="l03188"></a><span class="lineno"> 3188</span>&#160;</div><div class="line"><a name="l03189"></a><span class="lineno"> 3189</span>&#160; <span class="keywordflow">if</span> (recipient.<a class="code" href="structCRecipient.html#ae8c65b7c42bcd6dfe50b34f4278e70c2">fSubtractFeeFromAmount</a>)</div><div class="line"><a name="l03190"></a><span class="lineno"> 3190</span>&#160; nSubtractFeeFromAmount++;</div><div class="line"><a name="l03191"></a><span class="lineno"> 3191</span>&#160; }</div><div class="line"><a name="l03192"></a><span class="lineno"> 3192</span>&#160; <span class="keywordflow">if</span> (vecSend.empty() || nValue &lt; 0)</div><div class="line"><a name="l03193"></a><span class="lineno"> 3193</span>&#160; {</div><div class="line"><a name="l03194"></a><span class="lineno"> 3194</span>&#160; strFailReason = <a class="code" href="util_8h.html#aad133bb6103b53cebf03fd01e2f11ba1">_</a>(<span class="stringliteral">&quot;Transaction amounts must be positive&quot;</span>);</div><div class="line"><a name="l03195"></a><span class="lineno"> 3195</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l03196"></a><span class="lineno"> 3196</span>&#160; }</div><div class="line"><a name="l03197"></a><span class="lineno"> 3197</span>&#160;</div><div class="line"><a name="l03198"></a><span class="lineno"> 3198</span>&#160; wtxNew.<a class="code" href="classCWalletTx.html#ac058c61be3a1c680a3ad384ff04d27eb">fTimeReceivedIsTxTime</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l03199"></a><span class="lineno"> 3199</span>&#160; wtxNew.<a class="code" href="classCWalletTx.html#ab0ee7347584bff886dc24b9f63ff023c">BindWallet</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l03200"></a><span class="lineno"> 3200</span>&#160; <a class="code" href="structCMutableTransaction.html">CMutableTransaction</a> txNew;</div><div class="line"><a name="l03201"></a><span class="lineno"> 3201</span>&#160;</div><div class="line"><a name="l03202"></a><span class="lineno"> 3202</span>&#160; <span class="comment">// Discourage fee sniping.</span></div><div class="line"><a name="l03203"></a><span class="lineno"> 3203</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l03204"></a><span class="lineno"> 3204</span>&#160; <span class="comment">// For a large miner the value of the transactions in the best block and</span></div><div class="line"><a name="l03205"></a><span class="lineno"> 3205</span>&#160; <span class="comment">// the mempool can exceed the cost of deliberately attempting to mine two</span></div><div class="line"><a name="l03206"></a><span class="lineno"> 3206</span>&#160; <span class="comment">// blocks to orphan the current best block. By setting nLockTime such that</span></div><div class="line"><a name="l03207"></a><span class="lineno"> 3207</span>&#160; <span class="comment">// only the next block can include the transaction, we discourage this</span></div><div class="line"><a name="l03208"></a><span class="lineno"> 3208</span>&#160; <span class="comment">// practice as the height restricted and limited blocksize gives miners</span></div><div class="line"><a name="l03209"></a><span class="lineno"> 3209</span>&#160; <span class="comment">// considering fee sniping fewer options for pulling off this attack.</span></div><div class="line"><a name="l03210"></a><span class="lineno"> 3210</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l03211"></a><span class="lineno"> 3211</span>&#160; <span class="comment">// A simple way to think about this is from the wallet&#39;s point of view we</span></div><div class="line"><a name="l03212"></a><span class="lineno"> 3212</span>&#160; <span class="comment">// always want the blockchain to move forward. By setting nLockTime this</span></div><div class="line"><a name="l03213"></a><span class="lineno"> 3213</span>&#160; <span class="comment">// way we&#39;re basically making the statement that we only want this</span></div><div class="line"><a name="l03214"></a><span class="lineno"> 3214</span>&#160; <span class="comment">// transaction to appear in the next block; we don&#39;t want to potentially</span></div><div class="line"><a name="l03215"></a><span class="lineno"> 3215</span>&#160; <span class="comment">// encourage reorgs by allowing transactions to appear at lower heights</span></div><div class="line"><a name="l03216"></a><span class="lineno"> 3216</span>&#160; <span class="comment">// than the next block in forks of the best chain.</span></div><div class="line"><a name="l03217"></a><span class="lineno"> 3217</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l03218"></a><span class="lineno"> 3218</span>&#160; <span class="comment">// Of course, the subsidy is high enough, and transaction volume low</span></div><div class="line"><a name="l03219"></a><span class="lineno"> 3219</span>&#160; <span class="comment">// enough, that fee sniping isn&#39;t a problem yet, but by implementing a fix</span></div><div class="line"><a name="l03220"></a><span class="lineno"> 3220</span>&#160; <span class="comment">// now we ensure code won&#39;t be written that makes assumptions about</span></div><div class="line"><a name="l03221"></a><span class="lineno"> 3221</span>&#160; <span class="comment">// nLockTime that preclude a fix later.</span></div><div class="line"><a name="l03222"></a><span class="lineno"> 3222</span>&#160;</div><div class="line"><a name="l03223"></a><span class="lineno"> 3223</span>&#160; txNew.<a class="code" href="structCMutableTransaction.html#ae9685a37d424cd00e3badda28260c848">nLockTime</a> = <a class="code" href="validation_8cpp.html#adb31995c443ae2aef1d2f1c350de0419">chainActive</a>.<a class="code" href="classCChain.html#ad4758bc8872ce065a9579f77c3171d40">Height</a>();</div><div class="line"><a name="l03224"></a><span class="lineno"> 3224</span>&#160;</div><div class="line"><a name="l03225"></a><span class="lineno"> 3225</span>&#160; <span class="comment">// Secondly occasionally randomly pick a nLockTime even further back, so</span></div><div class="line"><a name="l03226"></a><span class="lineno"> 3226</span>&#160; <span class="comment">// that transactions that are delayed after signing for whatever reason,</span></div><div class="line"><a name="l03227"></a><span class="lineno"> 3227</span>&#160; <span class="comment">// e.g. high-latency mix networks and some CoinJoin implementations, have</span></div><div class="line"><a name="l03228"></a><span class="lineno"> 3228</span>&#160; <span class="comment">// better privacy.</span></div><div class="line"><a name="l03229"></a><span class="lineno"> 3229</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="random_8cpp.html#a0e44e088732172da6662db2d5e37d4b2">GetRandInt</a>(10) == 0)</div><div class="line"><a name="l03230"></a><span class="lineno"> 3230</span>&#160; txNew.<a class="code" href="structCMutableTransaction.html#ae9685a37d424cd00e3badda28260c848">nLockTime</a> = std::max(0, (<span class="keywordtype">int</span>)txNew.<a class="code" href="structCMutableTransaction.html#ae9685a37d424cd00e3badda28260c848">nLockTime</a> - <a class="code" href="random_8cpp.html#a0e44e088732172da6662db2d5e37d4b2">GetRandInt</a>(100));</div><div class="line"><a name="l03231"></a><span class="lineno"> 3231</span>&#160;</div><div class="line"><a name="l03232"></a><span class="lineno"> 3232</span>&#160; assert(txNew.<a class="code" href="structCMutableTransaction.html#ae9685a37d424cd00e3badda28260c848">nLockTime</a> &lt;= (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)<a class="code" href="validation_8cpp.html#adb31995c443ae2aef1d2f1c350de0419">chainActive</a>.<a class="code" href="classCChain.html#ad4758bc8872ce065a9579f77c3171d40">Height</a>());</div><div class="line"><a name="l03233"></a><span class="lineno"> 3233</span>&#160; assert(txNew.<a class="code" href="structCMutableTransaction.html#ae9685a37d424cd00e3badda28260c848">nLockTime</a> &lt; <a class="code" href="script_8h.html#a18113899ca9e7ef7a1938b0209fd62b5">LOCKTIME_THRESHOLD</a>);</div><div class="line"><a name="l03234"></a><span class="lineno"> 3234</span>&#160;</div><div class="line"><a name="l03235"></a><span class="lineno"> 3235</span>&#160; {</div><div class="line"><a name="l03236"></a><span class="lineno"> 3236</span>&#160; <a class="code" href="sync_8h.html#a35644e2b75a93da0cb0f6c768f34efa8">LOCK2</a>(<a class="code" href="validation_8cpp.html#a1ed8285f0fe3c6799c53265ce72552c8">cs_main</a>, cs_wallet);</div><div class="line"><a name="l03237"></a><span class="lineno"> 3237</span>&#160; {</div><div class="line"><a name="l03238"></a><span class="lineno"> 3238</span>&#160; nFeeRet = 0;</div><div class="line"><a name="l03239"></a><span class="lineno"> 3239</span>&#160; <span class="keywordflow">if</span>(nFeePay &gt; 0) nFeeRet = nFeePay;</div><div class="line"><a name="l03240"></a><span class="lineno"> 3240</span>&#160; <span class="comment">// Start with no fee and loop until there is enough fee</span></div><div class="line"><a name="l03241"></a><span class="lineno"> 3241</span>&#160; <span class="keywordflow">while</span> (<span class="keyword">true</span>)</div><div class="line"><a name="l03242"></a><span class="lineno"> 3242</span>&#160; {</div><div class="line"><a name="l03243"></a><span class="lineno"> 3243</span>&#160; txNew.<a class="code" href="structCMutableTransaction.html#ad6b1a0a773293fd153a1d384923631da">vin</a>.clear();</div><div class="line"><a name="l03244"></a><span class="lineno"> 3244</span>&#160; txNew.<a class="code" href="structCMutableTransaction.html#aca14a252c78e4af2dfe68d7ea67a77dc">vout</a>.clear();</div><div class="line"><a name="l03245"></a><span class="lineno"> 3245</span>&#160; wtxNew.<a class="code" href="classCWalletTx.html#a1598bf4a18fd05ce5eaaa0c3eb58ff28">fFromMe</a> = <span class="keyword">true</span>;</div><div class="line"><a name="l03246"></a><span class="lineno"> 3246</span>&#160; nChangePosRet = -1;</div><div class="line"><a name="l03247"></a><span class="lineno"> 3247</span>&#160; <span class="keywordtype">bool</span> fFirst = <span class="keyword">true</span>;</div><div class="line"><a name="l03248"></a><span class="lineno"> 3248</span>&#160;</div><div class="line"><a name="l03249"></a><span class="lineno"> 3249</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nValueToSelect = nValue;</div><div class="line"><a name="l03250"></a><span class="lineno"> 3250</span>&#160; <span class="keywordflow">if</span> (nSubtractFeeFromAmount == 0)</div><div class="line"><a name="l03251"></a><span class="lineno"> 3251</span>&#160; nValueToSelect += nFeeRet;</div><div class="line"><a name="l03252"></a><span class="lineno"> 3252</span>&#160; <span class="keywordtype">double</span> dPriority = 0;</div><div class="line"><a name="l03253"></a><span class="lineno"> 3253</span>&#160; <span class="comment">// vouts to the payees</span></div><div class="line"><a name="l03254"></a><span class="lineno"> 3254</span>&#160; BOOST_FOREACH (<span class="keyword">const</span> <a class="code" href="structCRecipient.html">CRecipient</a>&amp; recipient, vecSend)</div><div class="line"><a name="l03255"></a><span class="lineno"> 3255</span>&#160; {</div><div class="line"><a name="l03256"></a><span class="lineno"> 3256</span>&#160; <a class="code" href="classCTxOut.html">CTxOut</a> txout(recipient.<a class="code" href="structCRecipient.html#a8b22af0f2653323bb3fbf19aface4c5c">nAmount</a>, recipient.<a class="code" href="structCRecipient.html#a603b6c53aacb54acf8bc60c1bc2a8530">scriptPubKey</a>);</div><div class="line"><a name="l03257"></a><span class="lineno"> 3257</span>&#160;</div><div class="line"><a name="l03258"></a><span class="lineno"> 3258</span>&#160; <span class="keywordflow">if</span> (recipient.<a class="code" href="structCRecipient.html#ae8c65b7c42bcd6dfe50b34f4278e70c2">fSubtractFeeFromAmount</a>)</div><div class="line"><a name="l03259"></a><span class="lineno"> 3259</span>&#160; {</div><div class="line"><a name="l03260"></a><span class="lineno"> 3260</span>&#160; txout.<a class="code" href="classCTxOut.html#ab278ecef3817a972cb6bc5360d13f197">nValue</a> -= nFeeRet / nSubtractFeeFromAmount; <span class="comment">// Subtract fee equally from each selected recipient</span></div><div class="line"><a name="l03261"></a><span class="lineno"> 3261</span>&#160;</div><div class="line"><a name="l03262"></a><span class="lineno"> 3262</span>&#160; <span class="keywordflow">if</span> (fFirst) <span class="comment">// first receiver pays the remainder not divisible by output count</span></div><div class="line"><a name="l03263"></a><span class="lineno"> 3263</span>&#160; {</div><div class="line"><a name="l03264"></a><span class="lineno"> 3264</span>&#160; fFirst = <span class="keyword">false</span>;</div><div class="line"><a name="l03265"></a><span class="lineno"> 3265</span>&#160; txout.<a class="code" href="classCTxOut.html#ab278ecef3817a972cb6bc5360d13f197">nValue</a> -= nFeeRet % nSubtractFeeFromAmount;</div><div class="line"><a name="l03266"></a><span class="lineno"> 3266</span>&#160; }</div><div class="line"><a name="l03267"></a><span class="lineno"> 3267</span>&#160; }</div><div class="line"><a name="l03268"></a><span class="lineno"> 3268</span>&#160;</div><div class="line"><a name="l03269"></a><span class="lineno"> 3269</span>&#160; <span class="keywordflow">if</span> (txout.<a class="code" href="classCTxOut.html#af56cdc9e253741eef4095582ea3cc841">IsDust</a>(::<a class="code" href="validation_8cpp.html#a5925a10baeee7d4bdce1982bdcbd3bd0">minRelayTxFee</a>))</div><div class="line"><a name="l03270"></a><span class="lineno"> 3270</span>&#160; {</div><div class="line"><a name="l03271"></a><span class="lineno"> 3271</span>&#160; <span class="keywordflow">if</span> (recipient.<a class="code" href="structCRecipient.html#ae8c65b7c42bcd6dfe50b34f4278e70c2">fSubtractFeeFromAmount</a> &amp;&amp; nFeeRet &gt; 0)</div><div class="line"><a name="l03272"></a><span class="lineno"> 3272</span>&#160; {</div><div class="line"><a name="l03273"></a><span class="lineno"> 3273</span>&#160; <span class="keywordflow">if</span> (txout.<a class="code" href="classCTxOut.html#ab278ecef3817a972cb6bc5360d13f197">nValue</a> &lt; 0)</div><div class="line"><a name="l03274"></a><span class="lineno"> 3274</span>&#160; strFailReason = <a class="code" href="util_8h.html#aad133bb6103b53cebf03fd01e2f11ba1">_</a>(<span class="stringliteral">&quot;The transaction amount is too small to pay the fee&quot;</span>);</div><div class="line"><a name="l03275"></a><span class="lineno"> 3275</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l03276"></a><span class="lineno"> 3276</span>&#160; strFailReason = <a class="code" href="util_8h.html#aad133bb6103b53cebf03fd01e2f11ba1">_</a>(<span class="stringliteral">&quot;The transaction amount is too small to send after the fee has been deducted&quot;</span>);</div><div class="line"><a name="l03277"></a><span class="lineno"> 3277</span>&#160; }</div><div class="line"><a name="l03278"></a><span class="lineno"> 3278</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l03279"></a><span class="lineno"> 3279</span>&#160; strFailReason = <a class="code" href="util_8h.html#aad133bb6103b53cebf03fd01e2f11ba1">_</a>(<span class="stringliteral">&quot;Transaction amount too small&quot;</span>);</div><div class="line"><a name="l03280"></a><span class="lineno"> 3280</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l03281"></a><span class="lineno"> 3281</span>&#160; }</div><div class="line"><a name="l03282"></a><span class="lineno"> 3282</span>&#160; txNew.<a class="code" href="structCMutableTransaction.html#aca14a252c78e4af2dfe68d7ea67a77dc">vout</a>.push_back(txout);</div><div class="line"><a name="l03283"></a><span class="lineno"> 3283</span>&#160; }</div><div class="line"><a name="l03284"></a><span class="lineno"> 3284</span>&#160;</div><div class="line"><a name="l03285"></a><span class="lineno"> 3285</span>&#160; <span class="comment">// Choose coins to use</span></div><div class="line"><a name="l03286"></a><span class="lineno"> 3286</span>&#160; set&lt;pair&lt;const CWalletTx*,unsigned int&gt; &gt; setCoins;</div><div class="line"><a name="l03287"></a><span class="lineno"> 3287</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nValueIn = 0;</div><div class="line"><a name="l03288"></a><span class="lineno"> 3288</span>&#160;</div><div class="line"><a name="l03289"></a><span class="lineno"> 3289</span>&#160; <span class="keywordflow">if</span> (!SelectCoins(nValueToSelect, setCoins, nValueIn, coinControl, nCoinType, fUseInstantSend))</div><div class="line"><a name="l03290"></a><span class="lineno"> 3290</span>&#160; {</div><div class="line"><a name="l03291"></a><span class="lineno"> 3291</span>&#160; <span class="keywordflow">if</span> (nCoinType == <a class="code" href="wallet_8h.html#a90b09b05f289ac32704a6446a94566ceab6264c785b1784dcb35ee9ddb84b8583">ONLY_NOT1000IFMN</a>) {</div><div class="line"><a name="l03292"></a><span class="lineno"> 3292</span>&#160; strFailReason = <a class="code" href="util_8h.html#aad133bb6103b53cebf03fd01e2f11ba1">_</a>(<span class="stringliteral">&quot;Unable to locate enough funds for this transaction that are not equal 1000 DASH.&quot;</span>);</div><div class="line"><a name="l03293"></a><span class="lineno"> 3293</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (nCoinType == <a class="code" href="wallet_8h.html#a90b09b05f289ac32704a6446a94566cea35c9bedf196c5d09731928695c969b70">ONLY_NONDENOMINATED_NOT1000IFMN</a>) {</div><div class="line"><a name="l03294"></a><span class="lineno"> 3294</span>&#160; strFailReason = <a class="code" href="util_8h.html#aad133bb6103b53cebf03fd01e2f11ba1">_</a>(<span class="stringliteral">&quot;Unable to locate enough PrivateSend non-denominated funds for this transaction that are not equal 1000 DASH.&quot;</span>);</div><div class="line"><a name="l03295"></a><span class="lineno"> 3295</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (nCoinType == <a class="code" href="wallet_8h.html#a90b09b05f289ac32704a6446a94566ceaab4c4a7abab40ebdb2706c1708fff22e">ONLY_DENOMINATED</a>) {</div><div class="line"><a name="l03296"></a><span class="lineno"> 3296</span>&#160; strFailReason = <a class="code" href="util_8h.html#aad133bb6103b53cebf03fd01e2f11ba1">_</a>(<span class="stringliteral">&quot;Unable to locate enough PrivateSend denominated funds for this transaction.&quot;</span>);</div><div class="line"><a name="l03297"></a><span class="lineno"> 3297</span>&#160; strFailReason += <span class="stringliteral">&quot; &quot;</span> + <a class="code" href="util_8h.html#aad133bb6103b53cebf03fd01e2f11ba1">_</a>(<span class="stringliteral">&quot;PrivateSend uses exact denominated amounts to send funds, you might simply need to anonymize some more coins.&quot;</span>);</div><div class="line"><a name="l03298"></a><span class="lineno"> 3298</span>&#160; } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (nValueIn &lt; nValueToSelect) {</div><div class="line"><a name="l03299"></a><span class="lineno"> 3299</span>&#160; strFailReason = <a class="code" href="util_8h.html#aad133bb6103b53cebf03fd01e2f11ba1">_</a>(<span class="stringliteral">&quot;Insufficient funds.&quot;</span>);</div><div class="line"><a name="l03300"></a><span class="lineno"> 3300</span>&#160; <span class="keywordflow">if</span> (fUseInstantSend) {</div><div class="line"><a name="l03301"></a><span class="lineno"> 3301</span>&#160; <span class="comment">// could be not true but most likely that&#39;s the reason</span></div><div class="line"><a name="l03302"></a><span class="lineno"> 3302</span>&#160; strFailReason += <span class="stringliteral">&quot; &quot;</span> + <a class="code" href="tinyformat_8h.html#a56c674871a61baaad36ad52238c08857">strprintf</a>(<a class="code" href="util_8h.html#aad133bb6103b53cebf03fd01e2f11ba1">_</a>(<span class="stringliteral">&quot;InstantSend requires inputs with at least %d confirmations, you might need to wait a few minutes and try again.&quot;</span>), <a class="code" href="instantx_8h.html#a8ad513b37763e4e94cf473adbfc9708e">INSTANTSEND_CONFIRMATIONS_REQUIRED</a>);</div><div class="line"><a name="l03303"></a><span class="lineno"> 3303</span>&#160; }</div><div class="line"><a name="l03304"></a><span class="lineno"> 3304</span>&#160; }</div><div class="line"><a name="l03305"></a><span class="lineno"> 3305</span>&#160;</div><div class="line"><a name="l03306"></a><span class="lineno"> 3306</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l03307"></a><span class="lineno"> 3307</span>&#160; }</div><div class="line"><a name="l03308"></a><span class="lineno"> 3308</span>&#160; <span class="keywordflow">if</span> (fUseInstantSend &amp;&amp; nValueIn &gt; <a class="code" href="spork_8cpp.html#af6873019c3095ea6b554795e4040395c">sporkManager</a>.<a class="code" href="classCSporkManager.html#ac02210f3ce7c779421aeed383c3f6e6c">GetSporkValue</a>(<a class="code" href="spork_8h.html#a6c8f34b96d65df9867e780ff0ca79c22">SPORK_5_INSTANTSEND_MAX_VALUE</a>)*<a class="code" href="amount_8h.html#aed6bcb17bc73a5dcf33250e9c2c023cc">COIN</a>) {</div><div class="line"><a name="l03309"></a><span class="lineno"> 3309</span>&#160; strFailReason += <span class="stringliteral">&quot; &quot;</span> + <a class="code" href="tinyformat_8h.html#a56c674871a61baaad36ad52238c08857">strprintf</a>(<a class="code" href="util_8h.html#aad133bb6103b53cebf03fd01e2f11ba1">_</a>(<span class="stringliteral">&quot;InstantSend doesn&#39;t support sending values that high yet. Transactions are currently limited to %1 DASH.&quot;</span>), <a class="code" href="spork_8cpp.html#af6873019c3095ea6b554795e4040395c">sporkManager</a>.<a class="code" href="classCSporkManager.html#ac02210f3ce7c779421aeed383c3f6e6c">GetSporkValue</a>(<a class="code" href="spork_8h.html#a6c8f34b96d65df9867e780ff0ca79c22">SPORK_5_INSTANTSEND_MAX_VALUE</a>));</div><div class="line"><a name="l03310"></a><span class="lineno"> 3310</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l03311"></a><span class="lineno"> 3311</span>&#160; }</div><div class="line"><a name="l03312"></a><span class="lineno"> 3312</span>&#160;</div><div class="line"><a name="l03313"></a><span class="lineno"> 3313</span>&#160; BOOST_FOREACH(<a class="code" href="utilstrencodings_8h.html#aa3052ab82a2ba880ea3e30b3357c8820">PAIRTYPE</a>(<span class="keyword">const</span> <a class="code" href="classCWalletTx.html">CWalletTx</a>*, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) pcoin, setCoins)</div><div class="line"><a name="l03314"></a><span class="lineno"> 3314</span>&#160; {</div><div class="line"><a name="l03315"></a><span class="lineno"> 3315</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nCredit = pcoin.first-&gt;vout[pcoin.second].nValue;</div><div class="line"><a name="l03316"></a><span class="lineno"> 3316</span>&#160; <span class="comment">//The coin age after the next block (depth+1) is used instead of the current,</span></div><div class="line"><a name="l03317"></a><span class="lineno"> 3317</span>&#160; <span class="comment">//reflecting an assumption the user would accept a bit more delay for</span></div><div class="line"><a name="l03318"></a><span class="lineno"> 3318</span>&#160; <span class="comment">//a chance at a free transaction.</span></div><div class="line"><a name="l03319"></a><span class="lineno"> 3319</span>&#160; <span class="comment">//But mempool inputs might still be in the mempool, so their age stays 0</span></div><div class="line"><a name="l03320"></a><span class="lineno"> 3320</span>&#160; <span class="keywordtype">int</span> age = pcoin.first-&gt;GetDepthInMainChain();</div><div class="line"><a name="l03321"></a><span class="lineno"> 3321</span>&#160; assert(age &gt;= 0);</div><div class="line"><a name="l03322"></a><span class="lineno"> 3322</span>&#160; <span class="keywordflow">if</span> (age != 0)</div><div class="line"><a name="l03323"></a><span class="lineno"> 3323</span>&#160; age += 1;</div><div class="line"><a name="l03324"></a><span class="lineno"> 3324</span>&#160; dPriority += (double)nCredit * age;</div><div class="line"><a name="l03325"></a><span class="lineno"> 3325</span>&#160; }</div><div class="line"><a name="l03326"></a><span class="lineno"> 3326</span>&#160;</div><div class="line"><a name="l03327"></a><span class="lineno"> 3327</span>&#160; <span class="keyword">const</span> <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nChange = nValueIn - nValueToSelect;</div><div class="line"><a name="l03328"></a><span class="lineno"> 3328</span>&#160; <a class="code" href="classCTxOut.html">CTxOut</a> newTxOut;</div><div class="line"><a name="l03329"></a><span class="lineno"> 3329</span>&#160;</div><div class="line"><a name="l03330"></a><span class="lineno"> 3330</span>&#160; <span class="keywordflow">if</span> (nChange &gt; 0)</div><div class="line"><a name="l03331"></a><span class="lineno"> 3331</span>&#160; {</div><div class="line"><a name="l03332"></a><span class="lineno"> 3332</span>&#160;</div><div class="line"><a name="l03333"></a><span class="lineno"> 3333</span>&#160; <span class="comment">//over pay for denominated transactions</span></div><div class="line"><a name="l03334"></a><span class="lineno"> 3334</span>&#160; <span class="keywordflow">if</span> (nCoinType == <a class="code" href="wallet_8h.html#a90b09b05f289ac32704a6446a94566ceaab4c4a7abab40ebdb2706c1708fff22e">ONLY_DENOMINATED</a>) {</div><div class="line"><a name="l03335"></a><span class="lineno"> 3335</span>&#160; nFeeRet += nChange;</div><div class="line"><a name="l03336"></a><span class="lineno"> 3336</span>&#160; wtxNew.<a class="code" href="classCWalletTx.html#a17229eca0c81245312115a9c333203d8">mapValue</a>[<span class="stringliteral">&quot;DS&quot;</span>] = <span class="stringliteral">&quot;1&quot;</span>;</div><div class="line"><a name="l03337"></a><span class="lineno"> 3337</span>&#160; <span class="comment">// recheck skipped denominations during next mixing</span></div><div class="line"><a name="l03338"></a><span class="lineno"> 3338</span>&#160; <a class="code" href="privatesend-client_8cpp.html#ae36d24fafeb216cd61fb55e3475154a3">privateSendClient</a>.<a class="code" href="classCPrivateSendClient.html#a42277d5f7e91e7952d3b6f031fcd8d18">ClearSkippedDenominations</a>();</div><div class="line"><a name="l03339"></a><span class="lineno"> 3339</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03340"></a><span class="lineno"> 3340</span>&#160;</div><div class="line"><a name="l03341"></a><span class="lineno"> 3341</span>&#160; <span class="comment">// Fill a vout to ourself</span></div><div class="line"><a name="l03342"></a><span class="lineno"> 3342</span>&#160; <span class="comment">// TODO: pass in scriptChange instead of reservekey so</span></div><div class="line"><a name="l03343"></a><span class="lineno"> 3343</span>&#160; <span class="comment">// change transaction isn&#39;t always pay-to-dash-address</span></div><div class="line"><a name="l03344"></a><span class="lineno"> 3344</span>&#160; <a class="code" href="classCScript.html">CScript</a> scriptChange;</div><div class="line"><a name="l03345"></a><span class="lineno"> 3345</span>&#160;</div><div class="line"><a name="l03346"></a><span class="lineno"> 3346</span>&#160; <span class="comment">// coin control: send change to custom address</span></div><div class="line"><a name="l03347"></a><span class="lineno"> 3347</span>&#160; <span class="keywordflow">if</span> (coinControl &amp;&amp; !boost::get&lt;CNoDestination&gt;(&amp;coinControl-&gt;<a class="code" href="classCCoinControl.html#aa991ffd830267f6c2103fa7e03213f41">destChange</a>))</div><div class="line"><a name="l03348"></a><span class="lineno"> 3348</span>&#160; scriptChange = <a class="code" href="standard_8cpp.html#ae40f28d3b46c21033f6ee1f1200d0321">GetScriptForDestination</a>(coinControl-&gt;<a class="code" href="classCCoinControl.html#aa991ffd830267f6c2103fa7e03213f41">destChange</a>);</div><div class="line"><a name="l03349"></a><span class="lineno"> 3349</span>&#160;</div><div class="line"><a name="l03350"></a><span class="lineno"> 3350</span>&#160; <span class="comment">// no coin control: send change to newly generated address</span></div><div class="line"><a name="l03351"></a><span class="lineno"> 3351</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l03352"></a><span class="lineno"> 3352</span>&#160; {</div><div class="line"><a name="l03353"></a><span class="lineno"> 3353</span>&#160; <span class="comment">// Note: We use a new key here to keep it from being obvious which side is the change.</span></div><div class="line"><a name="l03354"></a><span class="lineno"> 3354</span>&#160; <span class="comment">// The drawback is that by not reusing a previous key, the change may be lost if a</span></div><div class="line"><a name="l03355"></a><span class="lineno"> 3355</span>&#160; <span class="comment">// backup is restored, if the backup doesn&#39;t have the new private key for the change.</span></div><div class="line"><a name="l03356"></a><span class="lineno"> 3356</span>&#160; <span class="comment">// If we reused the old key, it would be possible to add code to look for and</span></div><div class="line"><a name="l03357"></a><span class="lineno"> 3357</span>&#160; <span class="comment">// rediscover unknown transactions that were written with keys of ours to recover</span></div><div class="line"><a name="l03358"></a><span class="lineno"> 3358</span>&#160; <span class="comment">// post-backup change.</span></div><div class="line"><a name="l03359"></a><span class="lineno"> 3359</span>&#160;</div><div class="line"><a name="l03360"></a><span class="lineno"> 3360</span>&#160; <span class="comment">// Reserve a new key pair from key pool</span></div><div class="line"><a name="l03361"></a><span class="lineno"> 3361</span>&#160; <a class="code" href="classCPubKey.html">CPubKey</a> vchPubKey;</div><div class="line"><a name="l03362"></a><span class="lineno"> 3362</span>&#160; <span class="keywordflow">if</span> (!reservekey.<a class="code" href="group__Actions.html#gabe9bd095306b1320085b615885aaa250">GetReservedKey</a>(vchPubKey, <span class="keyword">true</span>))</div><div class="line"><a name="l03363"></a><span class="lineno"> 3363</span>&#160; {</div><div class="line"><a name="l03364"></a><span class="lineno"> 3364</span>&#160; strFailReason = <a class="code" href="util_8h.html#aad133bb6103b53cebf03fd01e2f11ba1">_</a>(<span class="stringliteral">&quot;Keypool ran out, please call keypoolrefill first&quot;</span>);</div><div class="line"><a name="l03365"></a><span class="lineno"> 3365</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l03366"></a><span class="lineno"> 3366</span>&#160; }</div><div class="line"><a name="l03367"></a><span class="lineno"> 3367</span>&#160; scriptChange = <a class="code" href="standard_8cpp.html#ae40f28d3b46c21033f6ee1f1200d0321">GetScriptForDestination</a>(vchPubKey.<a class="code" href="classCPubKey.html#a2675f7e6f72eff68e7a5227289feb021">GetID</a>());</div><div class="line"><a name="l03368"></a><span class="lineno"> 3368</span>&#160; }</div><div class="line"><a name="l03369"></a><span class="lineno"> 3369</span>&#160;</div><div class="line"><a name="l03370"></a><span class="lineno"> 3370</span>&#160; newTxOut = <a class="code" href="classCTxOut.html">CTxOut</a>(nChange, scriptChange);</div><div class="line"><a name="l03371"></a><span class="lineno"> 3371</span>&#160;</div><div class="line"><a name="l03372"></a><span class="lineno"> 3372</span>&#160; <span class="comment">// We do not move dust-change to fees, because the sender would end up paying more than requested.</span></div><div class="line"><a name="l03373"></a><span class="lineno"> 3373</span>&#160; <span class="comment">// This would be against the purpose of the all-inclusive feature.</span></div><div class="line"><a name="l03374"></a><span class="lineno"> 3374</span>&#160; <span class="comment">// So instead we raise the change and deduct from the recipient.</span></div><div class="line"><a name="l03375"></a><span class="lineno"> 3375</span>&#160; <span class="keywordflow">if</span> (nSubtractFeeFromAmount &gt; 0 &amp;&amp; newTxOut.<a class="code" href="classCTxOut.html#af56cdc9e253741eef4095582ea3cc841">IsDust</a>(::<a class="code" href="validation_8cpp.html#a5925a10baeee7d4bdce1982bdcbd3bd0">minRelayTxFee</a>))</div><div class="line"><a name="l03376"></a><span class="lineno"> 3376</span>&#160; {</div><div class="line"><a name="l03377"></a><span class="lineno"> 3377</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nDust = newTxOut.<a class="code" href="classCTxOut.html#a103164c5d870fb02bca28fa5cf06b279">GetDustThreshold</a>(::<a class="code" href="validation_8cpp.html#a5925a10baeee7d4bdce1982bdcbd3bd0">minRelayTxFee</a>) - newTxOut.<a class="code" href="classCTxOut.html#ab278ecef3817a972cb6bc5360d13f197">nValue</a>;</div><div class="line"><a name="l03378"></a><span class="lineno"> 3378</span>&#160; newTxOut.<a class="code" href="classCTxOut.html#ab278ecef3817a972cb6bc5360d13f197">nValue</a> += nDust; <span class="comment">// raise change until no more dust</span></div><div class="line"><a name="l03379"></a><span class="lineno"> 3379</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; vecSend.size(); i++) <span class="comment">// subtract from first recipient</span></div><div class="line"><a name="l03380"></a><span class="lineno"> 3380</span>&#160; {</div><div class="line"><a name="l03381"></a><span class="lineno"> 3381</span>&#160; <span class="keywordflow">if</span> (vecSend[i].fSubtractFeeFromAmount)</div><div class="line"><a name="l03382"></a><span class="lineno"> 3382</span>&#160; {</div><div class="line"><a name="l03383"></a><span class="lineno"> 3383</span>&#160; txNew.<a class="code" href="structCMutableTransaction.html#aca14a252c78e4af2dfe68d7ea67a77dc">vout</a>[i].nValue -= nDust;</div><div class="line"><a name="l03384"></a><span class="lineno"> 3384</span>&#160; <span class="keywordflow">if</span> (txNew.<a class="code" href="structCMutableTransaction.html#aca14a252c78e4af2dfe68d7ea67a77dc">vout</a>[i].IsDust(::<a class="code" href="validation_8cpp.html#a5925a10baeee7d4bdce1982bdcbd3bd0">minRelayTxFee</a>))</div><div class="line"><a name="l03385"></a><span class="lineno"> 3385</span>&#160; {</div><div class="line"><a name="l03386"></a><span class="lineno"> 3386</span>&#160; strFailReason = <a class="code" href="util_8h.html#aad133bb6103b53cebf03fd01e2f11ba1">_</a>(<span class="stringliteral">&quot;The transaction amount is too small to send after the fee has been deducted&quot;</span>);</div><div class="line"><a name="l03387"></a><span class="lineno"> 3387</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l03388"></a><span class="lineno"> 3388</span>&#160; }</div><div class="line"><a name="l03389"></a><span class="lineno"> 3389</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l03390"></a><span class="lineno"> 3390</span>&#160; }</div><div class="line"><a name="l03391"></a><span class="lineno"> 3391</span>&#160; }</div><div class="line"><a name="l03392"></a><span class="lineno"> 3392</span>&#160; }</div><div class="line"><a name="l03393"></a><span class="lineno"> 3393</span>&#160;</div><div class="line"><a name="l03394"></a><span class="lineno"> 3394</span>&#160; <span class="comment">// Never create dust outputs; if we would, just</span></div><div class="line"><a name="l03395"></a><span class="lineno"> 3395</span>&#160; <span class="comment">// add the dust to the fee.</span></div><div class="line"><a name="l03396"></a><span class="lineno"> 3396</span>&#160; <span class="keywordflow">if</span> (newTxOut.<a class="code" href="classCTxOut.html#af56cdc9e253741eef4095582ea3cc841">IsDust</a>(::<a class="code" href="validation_8cpp.html#a5925a10baeee7d4bdce1982bdcbd3bd0">minRelayTxFee</a>))</div><div class="line"><a name="l03397"></a><span class="lineno"> 3397</span>&#160; {</div><div class="line"><a name="l03398"></a><span class="lineno"> 3398</span>&#160; nFeeRet += nChange;</div><div class="line"><a name="l03399"></a><span class="lineno"> 3399</span>&#160; reservekey.<a class="code" href="group__Actions.html#gaf7b0a61f8c70c8146e42e82b4e227204">ReturnKey</a>();</div><div class="line"><a name="l03400"></a><span class="lineno"> 3400</span>&#160; }</div><div class="line"><a name="l03401"></a><span class="lineno"> 3401</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l03402"></a><span class="lineno"> 3402</span>&#160; {</div><div class="line"><a name="l03403"></a><span class="lineno"> 3403</span>&#160; <span class="comment">// Insert change txn at random position:</span></div><div class="line"><a name="l03404"></a><span class="lineno"> 3404</span>&#160; nChangePosRet = <a class="code" href="random_8cpp.html#a0e44e088732172da6662db2d5e37d4b2">GetRandInt</a>(txNew.<a class="code" href="structCMutableTransaction.html#aca14a252c78e4af2dfe68d7ea67a77dc">vout</a>.size()+1);</div><div class="line"><a name="l03405"></a><span class="lineno"> 3405</span>&#160; vector&lt;CTxOut&gt;::iterator position = txNew.<a class="code" href="structCMutableTransaction.html#aca14a252c78e4af2dfe68d7ea67a77dc">vout</a>.begin()+nChangePosRet;</div><div class="line"><a name="l03406"></a><span class="lineno"> 3406</span>&#160; txNew.<a class="code" href="structCMutableTransaction.html#aca14a252c78e4af2dfe68d7ea67a77dc">vout</a>.insert(position, newTxOut);</div><div class="line"><a name="l03407"></a><span class="lineno"> 3407</span>&#160; }</div><div class="line"><a name="l03408"></a><span class="lineno"> 3408</span>&#160; }</div><div class="line"><a name="l03409"></a><span class="lineno"> 3409</span>&#160; }</div><div class="line"><a name="l03410"></a><span class="lineno"> 3410</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l03411"></a><span class="lineno"> 3411</span>&#160; reservekey.<a class="code" href="group__Actions.html#gaf7b0a61f8c70c8146e42e82b4e227204">ReturnKey</a>();</div><div class="line"><a name="l03412"></a><span class="lineno"> 3412</span>&#160;</div><div class="line"><a name="l03413"></a><span class="lineno"> 3413</span>&#160; <span class="comment">// Fill vin</span></div><div class="line"><a name="l03414"></a><span class="lineno"> 3414</span>&#160; <span class="comment">//</span></div><div class="line"><a name="l03415"></a><span class="lineno"> 3415</span>&#160; <span class="comment">// Note how the sequence number is set to max()-1 so that the</span></div><div class="line"><a name="l03416"></a><span class="lineno"> 3416</span>&#160; <span class="comment">// nLockTime set above actually works.</span></div><div class="line"><a name="l03417"></a><span class="lineno"> 3417</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="utilstrencodings_8h.html#aa3052ab82a2ba880ea3e30b3357c8820">PAIRTYPE</a>(<span class="keyword">const</span> <a class="code" href="classCWalletTx.html">CWalletTx</a>*,<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>)&amp; coin, setCoins){</div><div class="line"><a name="l03418"></a><span class="lineno"> 3418</span>&#160; <a class="code" href="classCTxIn.html">CTxIn</a> txin = <a class="code" href="classCTxIn.html">CTxIn</a>(coin.first-&gt;GetHash(),coin.second,<a class="code" href="classCScript.html">CScript</a>(),</div><div class="line"><a name="l03419"></a><span class="lineno"> 3419</span>&#160; std::numeric_limits&lt;unsigned int&gt;::max()-1);</div><div class="line"><a name="l03420"></a><span class="lineno"> 3420</span>&#160; txin.<a class="code" href="classCTxIn.html#a91732c5ffb13520a6989b162ff6683fc">prevPubKey</a> = coin.first-&gt;vout[coin.second].scriptPubKey;</div><div class="line"><a name="l03421"></a><span class="lineno"> 3421</span>&#160; txNew.<a class="code" href="structCMutableTransaction.html#ad6b1a0a773293fd153a1d384923631da">vin</a>.push_back(txin);</div><div class="line"><a name="l03422"></a><span class="lineno"> 3422</span>&#160; }</div><div class="line"><a name="l03423"></a><span class="lineno"> 3423</span>&#160;</div><div class="line"><a name="l03424"></a><span class="lineno"> 3424</span>&#160; sort(txNew.<a class="code" href="structCMutableTransaction.html#ad6b1a0a773293fd153a1d384923631da">vin</a>.begin(), txNew.<a class="code" href="structCMutableTransaction.html#ad6b1a0a773293fd153a1d384923631da">vin</a>.end(), <a class="code" href="structCompareInputBIP69.html">CompareInputBIP69</a>());</div><div class="line"><a name="l03425"></a><span class="lineno"> 3425</span>&#160; sort(txNew.<a class="code" href="structCMutableTransaction.html#aca14a252c78e4af2dfe68d7ea67a77dc">vout</a>.begin(), txNew.<a class="code" href="structCMutableTransaction.html#aca14a252c78e4af2dfe68d7ea67a77dc">vout</a>.end(), <a class="code" href="structCompareOutputBIP69.html">CompareOutputBIP69</a>());</div><div class="line"><a name="l03426"></a><span class="lineno"> 3426</span>&#160;</div><div class="line"><a name="l03427"></a><span class="lineno"> 3427</span>&#160; <span class="comment">// If there was change output added before, we must update its position now</span></div><div class="line"><a name="l03428"></a><span class="lineno"> 3428</span>&#160; <span class="keywordflow">if</span> (nChangePosRet != -1) {</div><div class="line"><a name="l03429"></a><span class="lineno"> 3429</span>&#160; <span class="keywordtype">int</span> i = 0;</div><div class="line"><a name="l03430"></a><span class="lineno"> 3430</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="classCTxOut.html">CTxOut</a>&amp; txOut, txNew.<a class="code" href="structCMutableTransaction.html#aca14a252c78e4af2dfe68d7ea67a77dc">vout</a>)</div><div class="line"><a name="l03431"></a><span class="lineno"> 3431</span>&#160; {</div><div class="line"><a name="l03432"></a><span class="lineno"> 3432</span>&#160; <span class="keywordflow">if</span> (txOut == newTxOut)</div><div class="line"><a name="l03433"></a><span class="lineno"> 3433</span>&#160; {</div><div class="line"><a name="l03434"></a><span class="lineno"> 3434</span>&#160; nChangePosRet = i;</div><div class="line"><a name="l03435"></a><span class="lineno"> 3435</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l03436"></a><span class="lineno"> 3436</span>&#160; }</div><div class="line"><a name="l03437"></a><span class="lineno"> 3437</span>&#160; i++;</div><div class="line"><a name="l03438"></a><span class="lineno"> 3438</span>&#160; }</div><div class="line"><a name="l03439"></a><span class="lineno"> 3439</span>&#160; }</div><div class="line"><a name="l03440"></a><span class="lineno"> 3440</span>&#160;</div><div class="line"><a name="l03441"></a><span class="lineno"> 3441</span>&#160; <span class="comment">// Sign</span></div><div class="line"><a name="l03442"></a><span class="lineno"> 3442</span>&#160; <span class="keywordtype">int</span> nIn = 0;</div><div class="line"><a name="l03443"></a><span class="lineno"> 3443</span>&#160; <a class="code" href="classCTransaction.html">CTransaction</a> txNewConst(txNew);</div><div class="line"><a name="l03444"></a><span class="lineno"> 3444</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="classCTxIn.html">CTxIn</a>&amp; txin, txNew.<a class="code" href="structCMutableTransaction.html#ad6b1a0a773293fd153a1d384923631da">vin</a>)</div><div class="line"><a name="l03445"></a><span class="lineno"> 3445</span>&#160; {</div><div class="line"><a name="l03446"></a><span class="lineno"> 3446</span>&#160; <span class="keywordtype">bool</span> signSuccess;</div><div class="line"><a name="l03447"></a><span class="lineno"> 3447</span>&#160; <span class="keyword">const</span> <a class="code" href="classCScript.html">CScript</a>&amp; scriptPubKey = txin.<a class="code" href="classCTxIn.html#a91732c5ffb13520a6989b162ff6683fc">prevPubKey</a>;</div><div class="line"><a name="l03448"></a><span class="lineno"> 3448</span>&#160; <a class="code" href="classCScript.html">CScript</a>&amp; scriptSigRes = txNew.<a class="code" href="structCMutableTransaction.html#ad6b1a0a773293fd153a1d384923631da">vin</a>[nIn].scriptSig;</div><div class="line"><a name="l03449"></a><span class="lineno"> 3449</span>&#160; <span class="keywordflow">if</span> (sign)</div><div class="line"><a name="l03450"></a><span class="lineno"> 3450</span>&#160; signSuccess = <a class="code" href="sign_8cpp.html#a2d3ff267d98886fbdd5bc536fccac520">ProduceSignature</a>(<a class="code" href="classTransactionSignatureCreator.html">TransactionSignatureCreator</a>(<span class="keyword">this</span>, &amp;txNewConst, nIn, <a class="code" href="interpreter_8h.html#aaf8fd5f0e57d456151c951e0f3715fc4ac68c7df6528b3001624e56b2de3826de">SIGHASH_ALL</a>), scriptPubKey, scriptSigRes);</div><div class="line"><a name="l03451"></a><span class="lineno"> 3451</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l03452"></a><span class="lineno"> 3452</span>&#160; signSuccess = <a class="code" href="sign_8cpp.html#a2d3ff267d98886fbdd5bc536fccac520">ProduceSignature</a>(<a class="code" href="classDummySignatureCreator.html">DummySignatureCreator</a>(<span class="keyword">this</span>), scriptPubKey, scriptSigRes);</div><div class="line"><a name="l03453"></a><span class="lineno"> 3453</span>&#160;</div><div class="line"><a name="l03454"></a><span class="lineno"> 3454</span>&#160; <span class="keywordflow">if</span> (!signSuccess)</div><div class="line"><a name="l03455"></a><span class="lineno"> 3455</span>&#160; {</div><div class="line"><a name="l03456"></a><span class="lineno"> 3456</span>&#160; strFailReason = <a class="code" href="util_8h.html#aad133bb6103b53cebf03fd01e2f11ba1">_</a>(<span class="stringliteral">&quot;Signing transaction failed&quot;</span>);</div><div class="line"><a name="l03457"></a><span class="lineno"> 3457</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l03458"></a><span class="lineno"> 3458</span>&#160; }</div><div class="line"><a name="l03459"></a><span class="lineno"> 3459</span>&#160; nIn++;</div><div class="line"><a name="l03460"></a><span class="lineno"> 3460</span>&#160; }</div><div class="line"><a name="l03461"></a><span class="lineno"> 3461</span>&#160;</div><div class="line"><a name="l03462"></a><span class="lineno"> 3462</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nBytes = <a class="code" href="serialize_8h.html#a48239e478ae730373d1984fe304ca025">::GetSerializeSize</a>(txNew, <a class="code" href="serialize_8h.html#ae4d5251432e1a9e6803c0240cc492e18a652754eeaf79fba4fcf4c18597a6961c">SER_NETWORK</a>, <a class="code" href="version_8h.html#a4e2497f7c9c4319adcaf945159ec63f4">PROTOCOL_VERSION</a>);</div><div class="line"><a name="l03463"></a><span class="lineno"> 3463</span>&#160;</div><div class="line"><a name="l03464"></a><span class="lineno"> 3464</span>&#160; <span class="comment">// Remove scriptSigs if we used dummy signatures for fee calculation</span></div><div class="line"><a name="l03465"></a><span class="lineno"> 3465</span>&#160; <span class="keywordflow">if</span> (!sign) {</div><div class="line"><a name="l03466"></a><span class="lineno"> 3466</span>&#160; BOOST_FOREACH (<a class="code" href="classCTxIn.html">CTxIn</a>&amp; txin, txNew.<a class="code" href="structCMutableTransaction.html#ad6b1a0a773293fd153a1d384923631da">vin</a>)</div><div class="line"><a name="l03467"></a><span class="lineno"> 3467</span>&#160; txin.<a class="code" href="classCTxIn.html#aba540fd902366210a6ad6cd9a18fe763">scriptSig</a> = <a class="code" href="classCScript.html">CScript</a>();</div><div class="line"><a name="l03468"></a><span class="lineno"> 3468</span>&#160; }</div><div class="line"><a name="l03469"></a><span class="lineno"> 3469</span>&#160;</div><div class="line"><a name="l03470"></a><span class="lineno"> 3470</span>&#160; <span class="comment">// Embed the constructed transaction data in wtxNew.</span></div><div class="line"><a name="l03471"></a><span class="lineno"> 3471</span>&#160; *<span class="keyword">static_cast&lt;</span><a class="code" href="classCTransaction.html">CTransaction</a>*<span class="keyword">&gt;</span>(&amp;wtxNew) = <a class="code" href="classCTransaction.html">CTransaction</a>(txNew);</div><div class="line"><a name="l03472"></a><span class="lineno"> 3472</span>&#160;</div><div class="line"><a name="l03473"></a><span class="lineno"> 3473</span>&#160; <span class="comment">// Limit size</span></div><div class="line"><a name="l03474"></a><span class="lineno"> 3474</span>&#160; <span class="keywordflow">if</span> (nBytes &gt;= <a class="code" href="policy_8h.html#aefbb84a1c575dfc90d140d06f8c8d1e9">MAX_STANDARD_TX_SIZE</a>)</div><div class="line"><a name="l03475"></a><span class="lineno"> 3475</span>&#160; {</div><div class="line"><a name="l03476"></a><span class="lineno"> 3476</span>&#160; strFailReason = <a class="code" href="util_8h.html#aad133bb6103b53cebf03fd01e2f11ba1">_</a>(<span class="stringliteral">&quot;Transaction too large&quot;</span>);</div><div class="line"><a name="l03477"></a><span class="lineno"> 3477</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l03478"></a><span class="lineno"> 3478</span>&#160; }</div><div class="line"><a name="l03479"></a><span class="lineno"> 3479</span>&#160;</div><div class="line"><a name="l03480"></a><span class="lineno"> 3480</span>&#160; dPriority = wtxNew.<a class="code" href="classCTransaction.html#adccb264c374e4ad57e699947540256f8">ComputePriority</a>(dPriority, nBytes);</div><div class="line"><a name="l03481"></a><span class="lineno"> 3481</span>&#160;</div><div class="line"><a name="l03482"></a><span class="lineno"> 3482</span>&#160; <span class="comment">// Can we complete this as a free transaction?</span></div><div class="line"><a name="l03483"></a><span class="lineno"> 3483</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="wallet_8cpp.html#acfb04198cec6dc995cbc6adf98e575d3">fSendFreeTransactions</a> &amp;&amp; nBytes &lt;= <a class="code" href="wallet_8h.html#a8d4974dada55a9a10284614c2110ac45">MAX_FREE_TRANSACTION_CREATE_SIZE</a>)</div><div class="line"><a name="l03484"></a><span class="lineno"> 3484</span>&#160; {</div><div class="line"><a name="l03485"></a><span class="lineno"> 3485</span>&#160; <span class="comment">// Not enough fee: enough priority?</span></div><div class="line"><a name="l03486"></a><span class="lineno"> 3486</span>&#160; <span class="keywordtype">double</span> dPriorityNeeded = <a class="code" href="instantx_8cpp.html#abc71256f703e47c9254093e32ed2994c">mempool</a>.<a class="code" href="classCTxMemPool.html#ab2913b51062eb4f4e8110fca4223f172">estimateSmartPriority</a>(<a class="code" href="wallet_8cpp.html#a98515175145feea7ec9776cbf202e446">nTxConfirmTarget</a>);</div><div class="line"><a name="l03487"></a><span class="lineno"> 3487</span>&#160; <span class="comment">// Require at least hard-coded AllowFree.</span></div><div class="line"><a name="l03488"></a><span class="lineno"> 3488</span>&#160; <span class="keywordflow">if</span> (dPriority &gt;= dPriorityNeeded &amp;&amp; <a class="code" href="txmempool_8h.html#ae6c67bac023a01f1ae29b7f2f4505bba">AllowFree</a>(dPriority))</div><div class="line"><a name="l03489"></a><span class="lineno"> 3489</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l03490"></a><span class="lineno"> 3490</span>&#160;</div><div class="line"><a name="l03491"></a><span class="lineno"> 3491</span>&#160; <span class="comment">// Small enough, and priority high enough, to send for free</span></div><div class="line"><a name="l03492"></a><span class="lineno"> 3492</span>&#160;<span class="comment">// if (dPriorityNeeded &gt; 0 &amp;&amp; dPriority &gt;= dPriorityNeeded)</span></div><div class="line"><a name="l03493"></a><span class="lineno"> 3493</span>&#160;<span class="comment">// break;</span></div><div class="line"><a name="l03494"></a><span class="lineno"> 3494</span>&#160; }</div><div class="line"><a name="l03495"></a><span class="lineno"> 3495</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nFeeNeeded = max(nFeePay, GetMinimumFee(nBytes, <a class="code" href="wallet_8cpp.html#a98515175145feea7ec9776cbf202e446">nTxConfirmTarget</a>, <a class="code" href="instantx_8cpp.html#abc71256f703e47c9254093e32ed2994c">mempool</a>));</div><div class="line"><a name="l03496"></a><span class="lineno"> 3496</span>&#160; <span class="keywordflow">if</span> (coinControl &amp;&amp; nFeeNeeded &gt; 0 &amp;&amp; coinControl-&gt;<a class="code" href="classCCoinControl.html#ae33d88969604e91eea3167f5626a5c82">nMinimumTotalFee</a> &gt; nFeeNeeded) {</div><div class="line"><a name="l03497"></a><span class="lineno"> 3497</span>&#160; nFeeNeeded = coinControl-&gt;<a class="code" href="classCCoinControl.html#ae33d88969604e91eea3167f5626a5c82">nMinimumTotalFee</a>;</div><div class="line"><a name="l03498"></a><span class="lineno"> 3498</span>&#160; }</div><div class="line"><a name="l03499"></a><span class="lineno"> 3499</span>&#160; <span class="keywordflow">if</span>(fUseInstantSend) {</div><div class="line"><a name="l03500"></a><span class="lineno"> 3500</span>&#160; nFeeNeeded = std::max(nFeeNeeded, <a class="code" href="classCTxLockRequest.html">CTxLockRequest</a>(txNew).GetMinFee());</div><div class="line"><a name="l03501"></a><span class="lineno"> 3501</span>&#160; }</div><div class="line"><a name="l03502"></a><span class="lineno"> 3502</span>&#160;</div><div class="line"><a name="l03503"></a><span class="lineno"> 3503</span>&#160; <span class="comment">// If we made it here and we aren&#39;t even able to meet the relay fee on the next pass, give up</span></div><div class="line"><a name="l03504"></a><span class="lineno"> 3504</span>&#160; <span class="comment">// because we must be at the maximum allowed fee.</span></div><div class="line"><a name="l03505"></a><span class="lineno"> 3505</span>&#160; <span class="keywordflow">if</span> (nFeeNeeded &lt; ::<a class="code" href="validation_8cpp.html#a5925a10baeee7d4bdce1982bdcbd3bd0">minRelayTxFee</a>.<a class="code" href="classCFeeRate.html#a6a3aef64120ef51ac921318282404b0e">GetFee</a>(nBytes))</div><div class="line"><a name="l03506"></a><span class="lineno"> 3506</span>&#160; {</div><div class="line"><a name="l03507"></a><span class="lineno"> 3507</span>&#160; strFailReason = <a class="code" href="util_8h.html#aad133bb6103b53cebf03fd01e2f11ba1">_</a>(<span class="stringliteral">&quot;Transaction too large for fee policy&quot;</span>);</div><div class="line"><a name="l03508"></a><span class="lineno"> 3508</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l03509"></a><span class="lineno"> 3509</span>&#160; }</div><div class="line"><a name="l03510"></a><span class="lineno"> 3510</span>&#160;</div><div class="line"><a name="l03511"></a><span class="lineno"> 3511</span>&#160; <span class="keywordflow">if</span> (nFeeRet &gt;= nFeeNeeded)</div><div class="line"><a name="l03512"></a><span class="lineno"> 3512</span>&#160; <span class="keywordflow">break</span>; <span class="comment">// Done, enough fee included.</span></div><div class="line"><a name="l03513"></a><span class="lineno"> 3513</span>&#160;</div><div class="line"><a name="l03514"></a><span class="lineno"> 3514</span>&#160; <span class="comment">// Include more fee and try again.</span></div><div class="line"><a name="l03515"></a><span class="lineno"> 3515</span>&#160; nFeeRet = nFeeNeeded;</div><div class="line"><a name="l03516"></a><span class="lineno"> 3516</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l03517"></a><span class="lineno"> 3517</span>&#160; }</div><div class="line"><a name="l03518"></a><span class="lineno"> 3518</span>&#160; }</div><div class="line"><a name="l03519"></a><span class="lineno"> 3519</span>&#160; }</div><div class="line"><a name="l03520"></a><span class="lineno"> 3520</span>&#160;</div><div class="line"><a name="l03521"></a><span class="lineno"> 3521</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l03522"></a><span class="lineno"> 3522</span>&#160;}</div><div class="line"><a name="l03523"></a><span class="lineno"> 3523</span>&#160;</div><div class="line"><a name="l03527"></a><span class="lineno"><a class="line" href="group__Actions.html#gad95b72403a23ad9f9079a08b0ed1646a"> 3527</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__Actions.html#gad95b72403a23ad9f9079a08b0ed1646a">CWallet::CommitTransaction</a>(<a class="code" href="classCWalletTx.html">CWalletTx</a>&amp; wtxNew, <a class="code" href="classCReserveKey.html">CReserveKey</a>&amp; reservekey, <a class="code" href="classCConnman.html">CConnman</a>* connman, std::string strCommand)</div><div class="line"><a name="l03528"></a><span class="lineno"> 3528</span>&#160;{</div><div class="line"><a name="l03529"></a><span class="lineno"> 3529</span>&#160; {</div><div class="line"><a name="l03530"></a><span class="lineno"> 3530</span>&#160; <a class="code" href="sync_8h.html#a35644e2b75a93da0cb0f6c768f34efa8">LOCK2</a>(<a class="code" href="validation_8cpp.html#a1ed8285f0fe3c6799c53265ce72552c8">cs_main</a>, cs_wallet);</div><div class="line"><a name="l03531"></a><span class="lineno"> 3531</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;CommitTransaction:\n%s&quot;</span>, wtxNew.<a class="code" href="classCTransaction.html#a80370923c3ac828de68919295d5d0659">ToString</a>());</div><div class="line"><a name="l03532"></a><span class="lineno"> 3532</span>&#160; {</div><div class="line"><a name="l03533"></a><span class="lineno"> 3533</span>&#160; <span class="comment">// This is only to keep the database open to defeat the auto-flush for the</span></div><div class="line"><a name="l03534"></a><span class="lineno"> 3534</span>&#160; <span class="comment">// duration of this scope. This is the only place where this optimization</span></div><div class="line"><a name="l03535"></a><span class="lineno"> 3535</span>&#160; <span class="comment">// maybe makes sense; please don&#39;t do it anywhere else.</span></div><div class="line"><a name="l03536"></a><span class="lineno"> 3536</span>&#160; <a class="code" href="classCWalletDB.html">CWalletDB</a>* pwalletdb = fFileBacked ? <span class="keyword">new</span> <a class="code" href="classCWalletDB.html">CWalletDB</a>(strWalletFile,<span class="stringliteral">&quot;r+&quot;</span>) : NULL;</div><div class="line"><a name="l03537"></a><span class="lineno"> 3537</span>&#160;</div><div class="line"><a name="l03538"></a><span class="lineno"> 3538</span>&#160; <span class="comment">// Take key pair from key pool so it won&#39;t be used again</span></div><div class="line"><a name="l03539"></a><span class="lineno"> 3539</span>&#160; reservekey.<a class="code" href="group__Actions.html#ga493d06f41ca9571f2a42c8581a3952d8">KeepKey</a>();</div><div class="line"><a name="l03540"></a><span class="lineno"> 3540</span>&#160;</div><div class="line"><a name="l03541"></a><span class="lineno"> 3541</span>&#160; <span class="comment">// Add tx to wallet, because if it has change it&#39;s also ours,</span></div><div class="line"><a name="l03542"></a><span class="lineno"> 3542</span>&#160; <span class="comment">// otherwise just for transaction history.</span></div><div class="line"><a name="l03543"></a><span class="lineno"> 3543</span>&#160; AddToWallet(wtxNew, <span class="keyword">false</span>, pwalletdb);</div><div class="line"><a name="l03544"></a><span class="lineno"> 3544</span>&#160;</div><div class="line"><a name="l03545"></a><span class="lineno"> 3545</span>&#160; <span class="comment">// Notify that old coins are spent</span></div><div class="line"><a name="l03546"></a><span class="lineno"> 3546</span>&#160; set&lt;uint256&gt; updated_hahes;</div><div class="line"><a name="l03547"></a><span class="lineno"> 3547</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="classCTxIn.html">CTxIn</a>&amp; txin, wtxNew.<a class="code" href="classCTransaction.html#ad64447ea044ec850313696fc99412d95">vin</a>)</div><div class="line"><a name="l03548"></a><span class="lineno"> 3548</span>&#160; {</div><div class="line"><a name="l03549"></a><span class="lineno"> 3549</span>&#160; <span class="comment">// notify only once</span></div><div class="line"><a name="l03550"></a><span class="lineno"> 3550</span>&#160; <span class="keywordflow">if</span>(updated_hahes.find(txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>.<a class="code" href="classCOutPoint.html#af131c7194a660558b0ff158f4efa7a28">hash</a>) != updated_hahes.end()) <span class="keywordflow">continue</span>;</div><div class="line"><a name="l03551"></a><span class="lineno"> 3551</span>&#160;</div><div class="line"><a name="l03552"></a><span class="lineno"> 3552</span>&#160; <a class="code" href="classCWalletTx.html">CWalletTx</a> &amp;coin = mapWallet[txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>.<a class="code" href="classCOutPoint.html#af131c7194a660558b0ff158f4efa7a28">hash</a>];</div><div class="line"><a name="l03553"></a><span class="lineno"> 3553</span>&#160; coin.<a class="code" href="classCWalletTx.html#ab0ee7347584bff886dc24b9f63ff023c">BindWallet</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l03554"></a><span class="lineno"> 3554</span>&#160; <a class="code" href="transactiontablemodel_8cpp.html#a07e9dfe08b758569cb80c2558979c164">NotifyTransactionChanged</a>(<span class="keyword">this</span>, txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>.<a class="code" href="classCOutPoint.html#af131c7194a660558b0ff158f4efa7a28">hash</a>, <a class="code" href="ui__interface_8h.html#a293ba931937e469a6327b8d6b4872969a5ab4035117df6ed11f4f5cd2f2d732e5">CT_UPDATED</a>);</div><div class="line"><a name="l03555"></a><span class="lineno"> 3555</span>&#160; updated_hahes.insert(txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>.<a class="code" href="classCOutPoint.html#af131c7194a660558b0ff158f4efa7a28">hash</a>);</div><div class="line"><a name="l03556"></a><span class="lineno"> 3556</span>&#160; }</div><div class="line"><a name="l03557"></a><span class="lineno"> 3557</span>&#160; <span class="keywordflow">if</span> (fFileBacked)</div><div class="line"><a name="l03558"></a><span class="lineno"> 3558</span>&#160; <span class="keyword">delete</span> pwalletdb;</div><div class="line"><a name="l03559"></a><span class="lineno"> 3559</span>&#160; }</div><div class="line"><a name="l03560"></a><span class="lineno"> 3560</span>&#160;</div><div class="line"><a name="l03561"></a><span class="lineno"> 3561</span>&#160; <span class="comment">// Track how many getdata requests our transaction gets</span></div><div class="line"><a name="l03562"></a><span class="lineno"> 3562</span>&#160; mapRequestCount[wtxNew.<a class="code" href="classCTransaction.html#a7efd1379de830341417c0bfa23a149aa">GetHash</a>()] = 0;</div><div class="line"><a name="l03563"></a><span class="lineno"> 3563</span>&#160;</div><div class="line"><a name="l03564"></a><span class="lineno"> 3564</span>&#160; <span class="keywordflow">if</span> (fBroadcastTransactions)</div><div class="line"><a name="l03565"></a><span class="lineno"> 3565</span>&#160; {</div><div class="line"><a name="l03566"></a><span class="lineno"> 3566</span>&#160; <span class="comment">// Broadcast</span></div><div class="line"><a name="l03567"></a><span class="lineno"> 3567</span>&#160; <span class="keywordflow">if</span> (!wtxNew.<a class="code" href="classCMerkleTx.html#a6618a127f7e5597c686cec94c16d0bd8">AcceptToMemoryPool</a>(<span class="keyword">false</span>))</div><div class="line"><a name="l03568"></a><span class="lineno"> 3568</span>&#160; {</div><div class="line"><a name="l03569"></a><span class="lineno"> 3569</span>&#160; <span class="comment">// This must not fail. The transaction has already been signed and recorded.</span></div><div class="line"><a name="l03570"></a><span class="lineno"> 3570</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;CommitTransaction(): Error: Transaction not valid\n&quot;</span>);</div><div class="line"><a name="l03571"></a><span class="lineno"> 3571</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l03572"></a><span class="lineno"> 3572</span>&#160; }</div><div class="line"><a name="l03573"></a><span class="lineno"> 3573</span>&#160; wtxNew.<a class="code" href="group__mapWallet.html#ga8467a8a31cc4dded33cc6cdb0cdabb38">RelayWalletTransaction</a>(connman, strCommand);</div><div class="line"><a name="l03574"></a><span class="lineno"> 3574</span>&#160; }</div><div class="line"><a name="l03575"></a><span class="lineno"> 3575</span>&#160; }</div><div class="line"><a name="l03576"></a><span class="lineno"> 3576</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l03577"></a><span class="lineno"> 3577</span>&#160;}</div><div class="line"><a name="l03578"></a><span class="lineno"> 3578</span>&#160;</div><div class="line"><a name="l03579"></a><span class="lineno"><a class="line" href="group__Actions.html#ga95e868e708b79ac46229aca24d557702"> 3579</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__Actions.html#ga95e868e708b79ac46229aca24d557702">CWallet::AddAccountingEntry</a>(<span class="keyword">const</span> <a class="code" href="classCAccountingEntry.html">CAccountingEntry</a>&amp; acentry, <a class="code" href="classCWalletDB.html">CWalletDB</a> &amp; pwalletdb)</div><div class="line"><a name="l03580"></a><span class="lineno"> 3580</span>&#160;{</div><div class="line"><a name="l03581"></a><span class="lineno"> 3581</span>&#160; <span class="keywordflow">if</span> (!pwalletdb.<a class="code" href="classCWalletDB.html#a23d147eadf4ce7623d9bfb54abffa01e">WriteAccountingEntry_Backend</a>(acentry))</div><div class="line"><a name="l03582"></a><span class="lineno"> 3582</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l03583"></a><span class="lineno"> 3583</span>&#160;</div><div class="line"><a name="l03584"></a><span class="lineno"> 3584</span>&#160; laccentries.push_back(acentry);</div><div class="line"><a name="l03585"></a><span class="lineno"> 3585</span>&#160; <a class="code" href="classCAccountingEntry.html">CAccountingEntry</a> &amp; entry = laccentries.back();</div><div class="line"><a name="l03586"></a><span class="lineno"> 3586</span>&#160; wtxOrdered.insert(make_pair(entry.<a class="code" href="classCAccountingEntry.html#a9c5f78f13a657c1f1fc860a70ef072d5">nOrderPos</a>, <a class="code" href="classCWallet.html#ad1557a7d200f70bc97319376a24c98a7">TxPair</a>((<a class="code" href="classCWalletTx.html">CWalletTx</a>*)0, &amp;entry)));</div><div class="line"><a name="l03587"></a><span class="lineno"> 3587</span>&#160;</div><div class="line"><a name="l03588"></a><span class="lineno"> 3588</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l03589"></a><span class="lineno"> 3589</span>&#160;}</div><div class="line"><a name="l03590"></a><span class="lineno"> 3590</span>&#160;</div><div class="line"><a name="l03591"></a><span class="lineno"><a class="line" href="group__Actions.html#gaa1a63edc3566c05e6b5c9b77aba79b02"> 3591</a></span>&#160;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="group__Actions.html#gaa1a63edc3566c05e6b5c9b77aba79b02">CWallet::GetRequiredFee</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nTxBytes)</div><div class="line"><a name="l03592"></a><span class="lineno"> 3592</span>&#160;{</div><div class="line"><a name="l03593"></a><span class="lineno"> 3593</span>&#160; <span class="keywordflow">return</span> std::max(minTxFee.GetFee(nTxBytes), <a class="code" href="validation_8cpp.html#a5925a10baeee7d4bdce1982bdcbd3bd0">::minRelayTxFee</a>.<a class="code" href="classCFeeRate.html#a6a3aef64120ef51ac921318282404b0e">GetFee</a>(nTxBytes));</div><div class="line"><a name="l03594"></a><span class="lineno"> 3594</span>&#160;}</div><div class="line"><a name="l03595"></a><span class="lineno"> 3595</span>&#160;</div><div class="line"><a name="l03596"></a><span class="lineno"><a class="line" href="group__Actions.html#ga64a76474added26d9fbf904b5dd978a8"> 3596</a></span>&#160;<a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="group__Actions.html#ga64a76474added26d9fbf904b5dd978a8">CWallet::GetMinimumFee</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nTxBytes, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nConfirmTarget, <span class="keyword">const</span> <a class="code" href="classCTxMemPool.html">CTxMemPool</a>&amp; pool)</div><div class="line"><a name="l03597"></a><span class="lineno"> 3597</span>&#160;{</div><div class="line"><a name="l03598"></a><span class="lineno"> 3598</span>&#160; <span class="comment">// payTxFee is user-set &quot;I want to pay this much&quot;</span></div><div class="line"><a name="l03599"></a><span class="lineno"> 3599</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> nFeeNeeded = <a class="code" href="wallet_8cpp.html#a306d99326ae3a32749287b1812ac5ea7">payTxFee</a>.<a class="code" href="classCFeeRate.html#a6a3aef64120ef51ac921318282404b0e">GetFee</a>(nTxBytes);</div><div class="line"><a name="l03600"></a><span class="lineno"> 3600</span>&#160; <span class="comment">// User didn&#39;t set: use -txconfirmtarget to estimate...</span></div><div class="line"><a name="l03601"></a><span class="lineno"> 3601</span>&#160; <span class="keywordflow">if</span> (nFeeNeeded == 0) {</div><div class="line"><a name="l03602"></a><span class="lineno"> 3602</span>&#160; <span class="keywordtype">int</span> estimateFoundTarget = nConfirmTarget;</div><div class="line"><a name="l03603"></a><span class="lineno"> 3603</span>&#160; nFeeNeeded = pool.<a class="code" href="classCTxMemPool.html#a2b8d1adf0207a6464ef16319c53e00b1">estimateSmartFee</a>(nConfirmTarget, &amp;estimateFoundTarget).<a class="code" href="classCFeeRate.html#a6a3aef64120ef51ac921318282404b0e">GetFee</a>(nTxBytes);</div><div class="line"><a name="l03604"></a><span class="lineno"> 3604</span>&#160; <span class="comment">// ... unless we don&#39;t have enough mempool data for estimatefee, then use fallbackFee</span></div><div class="line"><a name="l03605"></a><span class="lineno"> 3605</span>&#160; <span class="keywordflow">if</span> (nFeeNeeded == 0)</div><div class="line"><a name="l03606"></a><span class="lineno"> 3606</span>&#160; nFeeNeeded = fallbackFee.GetFee(nTxBytes);</div><div class="line"><a name="l03607"></a><span class="lineno"> 3607</span>&#160; }</div><div class="line"><a name="l03608"></a><span class="lineno"> 3608</span>&#160; <span class="comment">// prevent user from paying a fee below minRelayTxFee or minTxFee</span></div><div class="line"><a name="l03609"></a><span class="lineno"> 3609</span>&#160; nFeeNeeded = std::max(nFeeNeeded, GetRequiredFee(nTxBytes));</div><div class="line"><a name="l03610"></a><span class="lineno"> 3610</span>&#160; <span class="comment">// But always obey the maximum</span></div><div class="line"><a name="l03611"></a><span class="lineno"> 3611</span>&#160; <span class="keywordflow">if</span> (nFeeNeeded &gt; <a class="code" href="wallet_8cpp.html#a77a17dcfb43cece2a434c0a9bfe9e441">maxTxFee</a>)</div><div class="line"><a name="l03612"></a><span class="lineno"> 3612</span>&#160; nFeeNeeded = <a class="code" href="wallet_8cpp.html#a77a17dcfb43cece2a434c0a9bfe9e441">maxTxFee</a>;</div><div class="line"><a name="l03613"></a><span class="lineno"> 3613</span>&#160; <span class="keywordflow">return</span> nFeeNeeded;</div><div class="line"><a name="l03614"></a><span class="lineno"> 3614</span>&#160;}</div><div class="line"><a name="l03615"></a><span class="lineno"> 3615</span>&#160;</div><div class="line"><a name="l03616"></a><span class="lineno"><a class="line" href="group__Actions.html#ga5d7b244b8ed0cbe24233ee0b6ca3cae0"> 3616</a></span>&#160;<a class="code" href="walletdb_8h.html#a7558d92e9ea1d446075da1b514c4a944">DBErrors</a> <a class="code" href="group__Actions.html#ga5d7b244b8ed0cbe24233ee0b6ca3cae0">CWallet::LoadWallet</a>(<span class="keywordtype">bool</span>&amp; fFirstRunRet)</div><div class="line"><a name="l03617"></a><span class="lineno"> 3617</span>&#160;{</div><div class="line"><a name="l03618"></a><span class="lineno"> 3618</span>&#160; <span class="keywordflow">if</span> (!fFileBacked)</div><div class="line"><a name="l03619"></a><span class="lineno"> 3619</span>&#160; <span class="keywordflow">return</span> <a class="code" href="walletdb_8h.html#a7558d92e9ea1d446075da1b514c4a944aa2367ec374804930406cea446fbb3fd2">DB_LOAD_OK</a>;</div><div class="line"><a name="l03620"></a><span class="lineno"> 3620</span>&#160; fFirstRunRet = <span class="keyword">false</span>;</div><div class="line"><a name="l03621"></a><span class="lineno"> 3621</span>&#160; <a class="code" href="walletdb_8h.html#a7558d92e9ea1d446075da1b514c4a944">DBErrors</a> nLoadWalletRet = <a class="code" href="classCWalletDB.html">CWalletDB</a>(strWalletFile,<span class="stringliteral">&quot;cr+&quot;</span>).<a class="code" href="classCWalletDB.html#a14f26e53502d1a60dd2b034f830acf03">LoadWallet</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l03622"></a><span class="lineno"> 3622</span>&#160; <span class="keywordflow">if</span> (nLoadWalletRet == <a class="code" href="walletdb_8h.html#a7558d92e9ea1d446075da1b514c4a944aef89bee2c244fcd980d6cf7edc5bf2d6">DB_NEED_REWRITE</a>)</div><div class="line"><a name="l03623"></a><span class="lineno"> 3623</span>&#160; {</div><div class="line"><a name="l03624"></a><span class="lineno"> 3624</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classCDB.html#acfb8a373edb9c4cfab780fb7578b277e">CDB::Rewrite</a>(strWalletFile, <span class="stringliteral">&quot;\x04pool&quot;</span>))</div><div class="line"><a name="l03625"></a><span class="lineno"> 3625</span>&#160; {</div><div class="line"><a name="l03626"></a><span class="lineno"> 3626</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet);</div><div class="line"><a name="l03627"></a><span class="lineno"> 3627</span>&#160; setInternalKeyPool.clear();</div><div class="line"><a name="l03628"></a><span class="lineno"> 3628</span>&#160; setExternalKeyPool.clear();</div><div class="line"><a name="l03629"></a><span class="lineno"> 3629</span>&#160; nKeysLeftSinceAutoBackup = 0;</div><div class="line"><a name="l03630"></a><span class="lineno"> 3630</span>&#160; <span class="comment">// Note: can&#39;t top-up keypool here, because wallet is locked.</span></div><div class="line"><a name="l03631"></a><span class="lineno"> 3631</span>&#160; <span class="comment">// User will be prompted to unlock wallet the next operation</span></div><div class="line"><a name="l03632"></a><span class="lineno"> 3632</span>&#160; <span class="comment">// that requires a new key.</span></div><div class="line"><a name="l03633"></a><span class="lineno"> 3633</span>&#160; }</div><div class="line"><a name="l03634"></a><span class="lineno"> 3634</span>&#160; }</div><div class="line"><a name="l03635"></a><span class="lineno"> 3635</span>&#160;</div><div class="line"><a name="l03636"></a><span class="lineno"> 3636</span>&#160; {</div><div class="line"><a name="l03637"></a><span class="lineno"> 3637</span>&#160; <a class="code" href="sync_8h.html#a35644e2b75a93da0cb0f6c768f34efa8">LOCK2</a>(<a class="code" href="validation_8cpp.html#a1ed8285f0fe3c6799c53265ce72552c8">cs_main</a>, cs_wallet);</div><div class="line"><a name="l03638"></a><span class="lineno"> 3638</span>&#160; <span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; pair : mapWallet) {</div><div class="line"><a name="l03639"></a><span class="lineno"> 3639</span>&#160; <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i = 0; i &lt; pair.second.vout.size(); ++i) {</div><div class="line"><a name="l03640"></a><span class="lineno"> 3640</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="wallet__ismine_8cpp.html#adc59cf67d903c1ba1ef225561b85bfce">IsMine</a>(pair.second.vout[i]) &amp;&amp; !IsSpent(pair.first, i)) {</div><div class="line"><a name="l03641"></a><span class="lineno"> 3641</span>&#160; setWalletUTXO.insert(<a class="code" href="classCOutPoint.html">COutPoint</a>(pair.first, i));</div><div class="line"><a name="l03642"></a><span class="lineno"> 3642</span>&#160; }</div><div class="line"><a name="l03643"></a><span class="lineno"> 3643</span>&#160; }</div><div class="line"><a name="l03644"></a><span class="lineno"> 3644</span>&#160; }</div><div class="line"><a name="l03645"></a><span class="lineno"> 3645</span>&#160; }</div><div class="line"><a name="l03646"></a><span class="lineno"> 3646</span>&#160;</div><div class="line"><a name="l03647"></a><span class="lineno"> 3647</span>&#160; <span class="keywordflow">if</span> (nLoadWalletRet != <a class="code" href="walletdb_8h.html#a7558d92e9ea1d446075da1b514c4a944aa2367ec374804930406cea446fbb3fd2">DB_LOAD_OK</a>)</div><div class="line"><a name="l03648"></a><span class="lineno"> 3648</span>&#160; <span class="keywordflow">return</span> nLoadWalletRet;</div><div class="line"><a name="l03649"></a><span class="lineno"> 3649</span>&#160; fFirstRunRet = !vchDefaultKey.IsValid();</div><div class="line"><a name="l03650"></a><span class="lineno"> 3650</span>&#160;</div><div class="line"><a name="l03651"></a><span class="lineno"> 3651</span>&#160; <a class="code" href="init_8cpp.html#a4fe31b510fc1c2b95321cedb9f89e8de">uiInterface</a>.<a class="code" href="classCClientUIInterface.html#a32a8930a5b69dd92e25fa474bd6e5420">LoadWallet</a>(<span class="keyword">this</span>);</div><div class="line"><a name="l03652"></a><span class="lineno"> 3652</span>&#160;</div><div class="line"><a name="l03653"></a><span class="lineno"> 3653</span>&#160; <span class="keywordflow">return</span> <a class="code" href="walletdb_8h.html#a7558d92e9ea1d446075da1b514c4a944aa2367ec374804930406cea446fbb3fd2">DB_LOAD_OK</a>;</div><div class="line"><a name="l03654"></a><span class="lineno"> 3654</span>&#160;}</div><div class="line"><a name="l03655"></a><span class="lineno"> 3655</span>&#160;</div><div class="line"><a name="l03656"></a><span class="lineno"> 3656</span>&#160;</div><div class="line"><a name="l03657"></a><span class="lineno"><a class="line" href="group__Actions.html#ga71d4b810d6fce19efd455ded3e450a1b"> 3657</a></span>&#160;<a class="code" href="walletdb_8h.html#a7558d92e9ea1d446075da1b514c4a944">DBErrors</a> <a class="code" href="group__Actions.html#ga71d4b810d6fce19efd455ded3e450a1b">CWallet::ZapWalletTx</a>(std::vector&lt;CWalletTx&gt;&amp; vWtx)</div><div class="line"><a name="l03658"></a><span class="lineno"> 3658</span>&#160;{</div><div class="line"><a name="l03659"></a><span class="lineno"> 3659</span>&#160; <span class="keywordflow">if</span> (!fFileBacked)</div><div class="line"><a name="l03660"></a><span class="lineno"> 3660</span>&#160; <span class="keywordflow">return</span> <a class="code" href="walletdb_8h.html#a7558d92e9ea1d446075da1b514c4a944aa2367ec374804930406cea446fbb3fd2">DB_LOAD_OK</a>;</div><div class="line"><a name="l03661"></a><span class="lineno"> 3661</span>&#160; <a class="code" href="walletdb_8h.html#a7558d92e9ea1d446075da1b514c4a944">DBErrors</a> nZapWalletTxRet = <a class="code" href="classCWalletDB.html">CWalletDB</a>(strWalletFile,<span class="stringliteral">&quot;cr+&quot;</span>).<a class="code" href="classCWalletDB.html#a3d6458600538f741a0b05b9788036b56">ZapWalletTx</a>(<span class="keyword">this</span>, vWtx);</div><div class="line"><a name="l03662"></a><span class="lineno"> 3662</span>&#160; <span class="keywordflow">if</span> (nZapWalletTxRet == <a class="code" href="walletdb_8h.html#a7558d92e9ea1d446075da1b514c4a944aef89bee2c244fcd980d6cf7edc5bf2d6">DB_NEED_REWRITE</a>)</div><div class="line"><a name="l03663"></a><span class="lineno"> 3663</span>&#160; {</div><div class="line"><a name="l03664"></a><span class="lineno"> 3664</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classCDB.html#acfb8a373edb9c4cfab780fb7578b277e">CDB::Rewrite</a>(strWalletFile, <span class="stringliteral">&quot;\x04pool&quot;</span>))</div><div class="line"><a name="l03665"></a><span class="lineno"> 3665</span>&#160; {</div><div class="line"><a name="l03666"></a><span class="lineno"> 3666</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet);</div><div class="line"><a name="l03667"></a><span class="lineno"> 3667</span>&#160; setInternalKeyPool.clear();</div><div class="line"><a name="l03668"></a><span class="lineno"> 3668</span>&#160; setExternalKeyPool.clear();</div><div class="line"><a name="l03669"></a><span class="lineno"> 3669</span>&#160; nKeysLeftSinceAutoBackup = 0;</div><div class="line"><a name="l03670"></a><span class="lineno"> 3670</span>&#160; <span class="comment">// Note: can&#39;t top-up keypool here, because wallet is locked.</span></div><div class="line"><a name="l03671"></a><span class="lineno"> 3671</span>&#160; <span class="comment">// User will be prompted to unlock wallet the next operation</span></div><div class="line"><a name="l03672"></a><span class="lineno"> 3672</span>&#160; <span class="comment">// that requires a new key.</span></div><div class="line"><a name="l03673"></a><span class="lineno"> 3673</span>&#160; }</div><div class="line"><a name="l03674"></a><span class="lineno"> 3674</span>&#160; }</div><div class="line"><a name="l03675"></a><span class="lineno"> 3675</span>&#160;</div><div class="line"><a name="l03676"></a><span class="lineno"> 3676</span>&#160; <span class="keywordflow">if</span> (nZapWalletTxRet != <a class="code" href="walletdb_8h.html#a7558d92e9ea1d446075da1b514c4a944aa2367ec374804930406cea446fbb3fd2">DB_LOAD_OK</a>)</div><div class="line"><a name="l03677"></a><span class="lineno"> 3677</span>&#160; <span class="keywordflow">return</span> nZapWalletTxRet;</div><div class="line"><a name="l03678"></a><span class="lineno"> 3678</span>&#160;</div><div class="line"><a name="l03679"></a><span class="lineno"> 3679</span>&#160; <span class="keywordflow">return</span> <a class="code" href="walletdb_8h.html#a7558d92e9ea1d446075da1b514c4a944aa2367ec374804930406cea446fbb3fd2">DB_LOAD_OK</a>;</div><div class="line"><a name="l03680"></a><span class="lineno"> 3680</span>&#160;}</div><div class="line"><a name="l03681"></a><span class="lineno"> 3681</span>&#160;</div><div class="line"><a name="l03682"></a><span class="lineno"> 3682</span>&#160;</div><div class="line"><a name="l03683"></a><span class="lineno"><a class="line" href="group__Actions.html#ga53e5528d7005608594e73f500bc5bb8f"> 3683</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__Actions.html#ga53e5528d7005608594e73f500bc5bb8f">CWallet::SetAddressBook</a>(<span class="keyword">const</span> <a class="code" href="standard_8h.html#a50f712c3d9a0d2f85ae464497dd9cff8">CTxDestination</a>&amp; address, <span class="keyword">const</span> <span class="keywordtype">string</span>&amp; strName, <span class="keyword">const</span> <span class="keywordtype">string</span>&amp; strPurpose)</div><div class="line"><a name="l03684"></a><span class="lineno"> 3684</span>&#160;{</div><div class="line"><a name="l03685"></a><span class="lineno"> 3685</span>&#160; <span class="keywordtype">bool</span> fUpdated = <span class="keyword">false</span>;</div><div class="line"><a name="l03686"></a><span class="lineno"> 3686</span>&#160; {</div><div class="line"><a name="l03687"></a><span class="lineno"> 3687</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet); <span class="comment">// mapAddressBook</span></div><div class="line"><a name="l03688"></a><span class="lineno"> 3688</span>&#160; std::map&lt;CTxDestination, CAddressBookData&gt;::iterator mi = mapAddressBook.find(address);</div><div class="line"><a name="l03689"></a><span class="lineno"> 3689</span>&#160; fUpdated = mi != mapAddressBook.end();</div><div class="line"><a name="l03690"></a><span class="lineno"> 3690</span>&#160; mapAddressBook[address].name = strName;</div><div class="line"><a name="l03691"></a><span class="lineno"> 3691</span>&#160; <span class="keywordflow">if</span> (!strPurpose.empty()) <span class="comment">/* update purpose only if requested */</span></div><div class="line"><a name="l03692"></a><span class="lineno"> 3692</span>&#160; mapAddressBook[address].purpose = strPurpose;</div><div class="line"><a name="l03693"></a><span class="lineno"> 3693</span>&#160; }</div><div class="line"><a name="l03694"></a><span class="lineno"> 3694</span>&#160; <a class="code" href="walletmodel_8cpp.html#a3bb83e84ffdc22a5e9ea4e5b26697805">NotifyAddressBookChanged</a>(<span class="keyword">this</span>, address, strName, ::<a class="code" href="wallet__ismine_8cpp.html#adc59cf67d903c1ba1ef225561b85bfce">IsMine</a>(*<span class="keyword">this</span>, address) != <a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20dabd6dd5ba8963fe559dda755950f29baf">ISMINE_NO</a>,</div><div class="line"><a name="l03695"></a><span class="lineno"> 3695</span>&#160; strPurpose, (fUpdated ? <a class="code" href="ui__interface_8h.html#a293ba931937e469a6327b8d6b4872969a5ab4035117df6ed11f4f5cd2f2d732e5">CT_UPDATED</a> : <a class="code" href="ui__interface_8h.html#a293ba931937e469a6327b8d6b4872969ae975c67c7f3a5386de0bbde38221b32f">CT_NEW</a>) );</div><div class="line"><a name="l03696"></a><span class="lineno"> 3696</span>&#160; <span class="keywordflow">if</span> (!fFileBacked)</div><div class="line"><a name="l03697"></a><span class="lineno"> 3697</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l03698"></a><span class="lineno"> 3698</span>&#160; <span class="keywordflow">if</span> (!strPurpose.empty() &amp;&amp; !<a class="code" href="classCWalletDB.html">CWalletDB</a>(strWalletFile).<a class="code" href="classCWalletDB.html#a8d4e8d73b977dc62c137bd3543c278bf">WritePurpose</a>(<a class="code" href="classCBitcoinAddress.html">CBitcoinAddress</a>(address).ToString(), strPurpose))</div><div class="line"><a name="l03699"></a><span class="lineno"> 3699</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l03700"></a><span class="lineno"> 3700</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classCWalletDB.html">CWalletDB</a>(strWalletFile).<a class="code" href="classCWalletDB.html#ad1b3bce77e9dd6ddd8c668a469c38f0a">WriteName</a>(<a class="code" href="classCBitcoinAddress.html">CBitcoinAddress</a>(address).ToString(), strName);</div><div class="line"><a name="l03701"></a><span class="lineno"> 3701</span>&#160;}</div><div class="line"><a name="l03702"></a><span class="lineno"> 3702</span>&#160;</div><div class="line"><a name="l03703"></a><span class="lineno"><a class="line" href="group__Actions.html#gac6542da8493cbb958068b7a01c05b631"> 3703</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__Actions.html#gac6542da8493cbb958068b7a01c05b631">CWallet::DelAddressBook</a>(<span class="keyword">const</span> <a class="code" href="standard_8h.html#a50f712c3d9a0d2f85ae464497dd9cff8">CTxDestination</a>&amp; address)</div><div class="line"><a name="l03704"></a><span class="lineno"> 3704</span>&#160;{</div><div class="line"><a name="l03705"></a><span class="lineno"> 3705</span>&#160; {</div><div class="line"><a name="l03706"></a><span class="lineno"> 3706</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet); <span class="comment">// mapAddressBook</span></div><div class="line"><a name="l03707"></a><span class="lineno"> 3707</span>&#160;</div><div class="line"><a name="l03708"></a><span class="lineno"> 3708</span>&#160; <span class="keywordflow">if</span>(fFileBacked)</div><div class="line"><a name="l03709"></a><span class="lineno"> 3709</span>&#160; {</div><div class="line"><a name="l03710"></a><span class="lineno"> 3710</span>&#160; <span class="comment">// Delete destdata tuples associated with address</span></div><div class="line"><a name="l03711"></a><span class="lineno"> 3711</span>&#160; std::string strAddress = <a class="code" href="classCBitcoinAddress.html">CBitcoinAddress</a>(address).<a class="code" href="classCBase58Data.html#a7dc91af403ca02694b3247b15604e220">ToString</a>();</div><div class="line"><a name="l03712"></a><span class="lineno"> 3712</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="utilstrencodings_8h.html#aa3052ab82a2ba880ea3e30b3357c8820">PAIRTYPE</a>(<span class="keywordtype">string</span>, <span class="keywordtype">string</span>) &amp;item, mapAddressBook[address].destdata)</div><div class="line"><a name="l03713"></a><span class="lineno"> 3713</span>&#160; {</div><div class="line"><a name="l03714"></a><span class="lineno"> 3714</span>&#160; <a class="code" href="classCWalletDB.html">CWalletDB</a>(strWalletFile).<a class="code" href="classCWalletDB.html#a0403a98efe565020f8804eefbc808d90">EraseDestData</a>(strAddress, item.first);</div><div class="line"><a name="l03715"></a><span class="lineno"> 3715</span>&#160; }</div><div class="line"><a name="l03716"></a><span class="lineno"> 3716</span>&#160; }</div><div class="line"><a name="l03717"></a><span class="lineno"> 3717</span>&#160; mapAddressBook.erase(address);</div><div class="line"><a name="l03718"></a><span class="lineno"> 3718</span>&#160; }</div><div class="line"><a name="l03719"></a><span class="lineno"> 3719</span>&#160;</div><div class="line"><a name="l03720"></a><span class="lineno"> 3720</span>&#160; <a class="code" href="walletmodel_8cpp.html#a3bb83e84ffdc22a5e9ea4e5b26697805">NotifyAddressBookChanged</a>(<span class="keyword">this</span>, address, <span class="stringliteral">&quot;&quot;</span>, ::<a class="code" href="wallet__ismine_8cpp.html#adc59cf67d903c1ba1ef225561b85bfce">IsMine</a>(*<span class="keyword">this</span>, address) != <a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20dabd6dd5ba8963fe559dda755950f29baf">ISMINE_NO</a>, <span class="stringliteral">&quot;&quot;</span>, <a class="code" href="ui__interface_8h.html#a293ba931937e469a6327b8d6b4872969a6aa8d1cd0da86fe8886e3a5c47f194ef">CT_DELETED</a>);</div><div class="line"><a name="l03721"></a><span class="lineno"> 3721</span>&#160;</div><div class="line"><a name="l03722"></a><span class="lineno"> 3722</span>&#160; <span class="keywordflow">if</span> (!fFileBacked)</div><div class="line"><a name="l03723"></a><span class="lineno"> 3723</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l03724"></a><span class="lineno"> 3724</span>&#160; <a class="code" href="classCWalletDB.html">CWalletDB</a>(strWalletFile).<a class="code" href="classCWalletDB.html#adaba27cee112077ade5b2e795382cec6">ErasePurpose</a>(<a class="code" href="classCBitcoinAddress.html">CBitcoinAddress</a>(address).ToString());</div><div class="line"><a name="l03725"></a><span class="lineno"> 3725</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classCWalletDB.html">CWalletDB</a>(strWalletFile).<a class="code" href="classCWalletDB.html#a319209fcf90ea860b668b92c44a3fa7a">EraseName</a>(<a class="code" href="classCBitcoinAddress.html">CBitcoinAddress</a>(address).ToString());</div><div class="line"><a name="l03726"></a><span class="lineno"> 3726</span>&#160;}</div><div class="line"><a name="l03727"></a><span class="lineno"> 3727</span>&#160;</div><div class="line"><a name="l03728"></a><span class="lineno"><a class="line" href="group__Actions.html#gad54cca8f6e5e1d5535860f43ddb0246f"> 3728</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__Actions.html#gad54cca8f6e5e1d5535860f43ddb0246f">CWallet::SetDefaultKey</a>(<span class="keyword">const</span> <a class="code" href="classCPubKey.html">CPubKey</a> &amp;vchPubKey)</div><div class="line"><a name="l03729"></a><span class="lineno"> 3729</span>&#160;{</div><div class="line"><a name="l03730"></a><span class="lineno"> 3730</span>&#160; <span class="keywordflow">if</span> (fFileBacked)</div><div class="line"><a name="l03731"></a><span class="lineno"> 3731</span>&#160; {</div><div class="line"><a name="l03732"></a><span class="lineno"> 3732</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classCWalletDB.html">CWalletDB</a>(strWalletFile).WriteDefaultKey(vchPubKey))</div><div class="line"><a name="l03733"></a><span class="lineno"> 3733</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l03734"></a><span class="lineno"> 3734</span>&#160; }</div><div class="line"><a name="l03735"></a><span class="lineno"> 3735</span>&#160; vchDefaultKey = vchPubKey;</div><div class="line"><a name="l03736"></a><span class="lineno"> 3736</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l03737"></a><span class="lineno"> 3737</span>&#160;}</div><div class="line"><a name="l03738"></a><span class="lineno"> 3738</span>&#160;</div><div class="line"><a name="l03743"></a><span class="lineno"><a class="line" href="group__Actions.html#ga7353ba1e79fc4167fbfbe79b41698fa7"> 3743</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__Actions.html#ga7353ba1e79fc4167fbfbe79b41698fa7">CWallet::NewKeyPool</a>()</div><div class="line"><a name="l03744"></a><span class="lineno"> 3744</span>&#160;{</div><div class="line"><a name="l03745"></a><span class="lineno"> 3745</span>&#160; {</div><div class="line"><a name="l03746"></a><span class="lineno"> 3746</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet);</div><div class="line"><a name="l03747"></a><span class="lineno"> 3747</span>&#160; <a class="code" href="classCWalletDB.html">CWalletDB</a> walletdb(strWalletFile);</div><div class="line"><a name="l03748"></a><span class="lineno"> 3748</span>&#160; BOOST_FOREACH(int64_t nIndex, setInternalKeyPool) {</div><div class="line"><a name="l03749"></a><span class="lineno"> 3749</span>&#160; walletdb.<a class="code" href="classCWalletDB.html#ac78d839fbda5164c4134ab67911139ca">ErasePool</a>(nIndex);</div><div class="line"><a name="l03750"></a><span class="lineno"> 3750</span>&#160; }</div><div class="line"><a name="l03751"></a><span class="lineno"> 3751</span>&#160; setInternalKeyPool.clear();</div><div class="line"><a name="l03752"></a><span class="lineno"> 3752</span>&#160; BOOST_FOREACH(int64_t nIndex, setExternalKeyPool) {</div><div class="line"><a name="l03753"></a><span class="lineno"> 3753</span>&#160; walletdb.<a class="code" href="classCWalletDB.html#ac78d839fbda5164c4134ab67911139ca">ErasePool</a>(nIndex);</div><div class="line"><a name="l03754"></a><span class="lineno"> 3754</span>&#160; }</div><div class="line"><a name="l03755"></a><span class="lineno"> 3755</span>&#160; setExternalKeyPool.clear();</div><div class="line"><a name="l03756"></a><span class="lineno"> 3756</span>&#160; <a class="code" href="privatesend-client_8cpp.html#ae36d24fafeb216cd61fb55e3475154a3">privateSendClient</a>.<a class="code" href="classCPrivateSendClient.html#a75799095593d6171c667e9892f2723d0">fEnablePrivateSend</a> = <span class="keyword">false</span>;</div><div class="line"><a name="l03757"></a><span class="lineno"> 3757</span>&#160; nKeysLeftSinceAutoBackup = 0;</div><div class="line"><a name="l03758"></a><span class="lineno"> 3758</span>&#160;</div><div class="line"><a name="l03759"></a><span class="lineno"> 3759</span>&#160; <span class="keywordflow">if</span> (!TopUpKeyPool())</div><div class="line"><a name="l03760"></a><span class="lineno"> 3760</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l03761"></a><span class="lineno"> 3761</span>&#160;</div><div class="line"><a name="l03762"></a><span class="lineno"> 3762</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;CWallet::NewKeyPool rewrote keypool\n&quot;</span>);</div><div class="line"><a name="l03763"></a><span class="lineno"> 3763</span>&#160; }</div><div class="line"><a name="l03764"></a><span class="lineno"> 3764</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l03765"></a><span class="lineno"> 3765</span>&#160;}</div><div class="line"><a name="l03766"></a><span class="lineno"> 3766</span>&#160;</div><div class="line"><a name="l03767"></a><span class="lineno"><a class="line" href="group__Actions.html#ga548e31853748ca588c65758e5c594ca3"> 3767</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="group__Actions.html#ga548e31853748ca588c65758e5c594ca3">CWallet::KeypoolCountExternalKeys</a>()</div><div class="line"><a name="l03768"></a><span class="lineno"> 3768</span>&#160;{</div><div class="line"><a name="l03769"></a><span class="lineno"> 3769</span>&#160; <a class="code" href="sync_8h.html#acd61d0cb3b49f367728193720014aed0">AssertLockHeld</a>(cs_wallet); <span class="comment">// setExternalKeyPool</span></div><div class="line"><a name="l03770"></a><span class="lineno"> 3770</span>&#160; <span class="keywordflow">return</span> setExternalKeyPool.size();</div><div class="line"><a name="l03771"></a><span class="lineno"> 3771</span>&#160;}</div><div class="line"><a name="l03772"></a><span class="lineno"> 3772</span>&#160;</div><div class="line"><a name="l03773"></a><span class="lineno"><a class="line" href="group__Actions.html#gacb3e4a3acf71120849b4386669ba61ec"> 3773</a></span>&#160;<span class="keywordtype">size_t</span> <a class="code" href="group__Actions.html#gacb3e4a3acf71120849b4386669ba61ec">CWallet::KeypoolCountInternalKeys</a>()</div><div class="line"><a name="l03774"></a><span class="lineno"> 3774</span>&#160;{</div><div class="line"><a name="l03775"></a><span class="lineno"> 3775</span>&#160; <a class="code" href="sync_8h.html#acd61d0cb3b49f367728193720014aed0">AssertLockHeld</a>(cs_wallet); <span class="comment">// setInternalKeyPool</span></div><div class="line"><a name="l03776"></a><span class="lineno"> 3776</span>&#160; <span class="keywordflow">return</span> setInternalKeyPool.size();</div><div class="line"><a name="l03777"></a><span class="lineno"> 3777</span>&#160;}</div><div class="line"><a name="l03778"></a><span class="lineno"> 3778</span>&#160;</div><div class="line"><a name="l03779"></a><span class="lineno"><a class="line" href="group__Actions.html#ga9730278506e0a4f1c65239b951525b55"> 3779</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__Actions.html#ga9730278506e0a4f1c65239b951525b55">CWallet::TopUpKeyPool</a>(<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> kpSize)</div><div class="line"><a name="l03780"></a><span class="lineno"> 3780</span>&#160;{</div><div class="line"><a name="l03781"></a><span class="lineno"> 3781</span>&#160; {</div><div class="line"><a name="l03782"></a><span class="lineno"> 3782</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet);</div><div class="line"><a name="l03783"></a><span class="lineno"> 3783</span>&#160;</div><div class="line"><a name="l03784"></a><span class="lineno"> 3784</span>&#160; <span class="keywordflow">if</span> (IsLocked(<span class="keyword">true</span>))</div><div class="line"><a name="l03785"></a><span class="lineno"> 3785</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l03786"></a><span class="lineno"> 3786</span>&#160;</div><div class="line"><a name="l03787"></a><span class="lineno"> 3787</span>&#160; <span class="comment">// Top up key pool</span></div><div class="line"><a name="l03788"></a><span class="lineno"> 3788</span>&#160; <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nTargetSize;</div><div class="line"><a name="l03789"></a><span class="lineno"> 3789</span>&#160; <span class="keywordflow">if</span> (kpSize &gt; 0)</div><div class="line"><a name="l03790"></a><span class="lineno"> 3790</span>&#160; nTargetSize = kpSize;</div><div class="line"><a name="l03791"></a><span class="lineno"> 3791</span>&#160; <span class="keywordflow">else</span></div><div class="line"><a name="l03792"></a><span class="lineno"> 3792</span>&#160; nTargetSize = max(<a class="code" href="util_8cpp.html#a24f685720bf40370e5bd2a192ad50cd8">GetArg</a>(<span class="stringliteral">&quot;-keypool&quot;</span>, <a class="code" href="wallet_8h.html#a63da8d3877972e02968c9d7f7156cf44">DEFAULT_KEYPOOL_SIZE</a>), (int64_t) 0);</div><div class="line"><a name="l03793"></a><span class="lineno"> 3793</span>&#160;</div><div class="line"><a name="l03794"></a><span class="lineno"> 3794</span>&#160; <span class="comment">// count amount of available keys (internal, external)</span></div><div class="line"><a name="l03795"></a><span class="lineno"> 3795</span>&#160; <span class="comment">// make sure the keypool of external and internal keys fits the user selected target (-keypool)</span></div><div class="line"><a name="l03796"></a><span class="lineno"> 3796</span>&#160; int64_t amountExternal = setExternalKeyPool.size();</div><div class="line"><a name="l03797"></a><span class="lineno"> 3797</span>&#160; int64_t amountInternal = setInternalKeyPool.size();</div><div class="line"><a name="l03798"></a><span class="lineno"> 3798</span>&#160; int64_t missingExternal = std::max(std::max((int64_t) nTargetSize, (int64_t) 1) - amountExternal, (int64_t) 0);</div><div class="line"><a name="l03799"></a><span class="lineno"> 3799</span>&#160; int64_t missingInternal = std::max(std::max((int64_t) nTargetSize, (int64_t) 1) - amountInternal, (int64_t) 0);</div><div class="line"><a name="l03800"></a><span class="lineno"> 3800</span>&#160;</div><div class="line"><a name="l03801"></a><span class="lineno"> 3801</span>&#160; <span class="keywordflow">if</span> (!IsHDEnabled())</div><div class="line"><a name="l03802"></a><span class="lineno"> 3802</span>&#160; {</div><div class="line"><a name="l03803"></a><span class="lineno"> 3803</span>&#160; <span class="comment">// don&#39;t create extra internal keys</span></div><div class="line"><a name="l03804"></a><span class="lineno"> 3804</span>&#160; missingInternal = 0;</div><div class="line"><a name="l03805"></a><span class="lineno"> 3805</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03806"></a><span class="lineno"> 3806</span>&#160; nTargetSize *= 2;</div><div class="line"><a name="l03807"></a><span class="lineno"> 3807</span>&#160; }</div><div class="line"><a name="l03808"></a><span class="lineno"> 3808</span>&#160; <span class="keywordtype">bool</span> fInternal = <span class="keyword">false</span>;</div><div class="line"><a name="l03809"></a><span class="lineno"> 3809</span>&#160; <a class="code" href="classCWalletDB.html">CWalletDB</a> walletdb(strWalletFile);</div><div class="line"><a name="l03810"></a><span class="lineno"> 3810</span>&#160; <span class="keywordflow">for</span> (int64_t i = missingInternal + missingExternal; i--;)</div><div class="line"><a name="l03811"></a><span class="lineno"> 3811</span>&#160; {</div><div class="line"><a name="l03812"></a><span class="lineno"> 3812</span>&#160; int64_t nEnd = 1;</div><div class="line"><a name="l03813"></a><span class="lineno"> 3813</span>&#160; <span class="keywordflow">if</span> (i &lt; missingInternal) {</div><div class="line"><a name="l03814"></a><span class="lineno"> 3814</span>&#160; fInternal = <span class="keyword">true</span>;</div><div class="line"><a name="l03815"></a><span class="lineno"> 3815</span>&#160; }</div><div class="line"><a name="l03816"></a><span class="lineno"> 3816</span>&#160; <span class="keywordflow">if</span> (!setInternalKeyPool.empty()) {</div><div class="line"><a name="l03817"></a><span class="lineno"> 3817</span>&#160; nEnd = *(--setInternalKeyPool.end()) + 1;</div><div class="line"><a name="l03818"></a><span class="lineno"> 3818</span>&#160; }</div><div class="line"><a name="l03819"></a><span class="lineno"> 3819</span>&#160; <span class="keywordflow">if</span> (!setExternalKeyPool.empty()) {</div><div class="line"><a name="l03820"></a><span class="lineno"> 3820</span>&#160; nEnd = std::max(nEnd, *(--setExternalKeyPool.end()) + 1);</div><div class="line"><a name="l03821"></a><span class="lineno"> 3821</span>&#160; }</div><div class="line"><a name="l03822"></a><span class="lineno"> 3822</span>&#160; <span class="comment">// TODO: implement keypools for all accounts?</span></div><div class="line"><a name="l03823"></a><span class="lineno"> 3823</span>&#160; <span class="keywordflow">if</span> (!walletdb.<a class="code" href="classCWalletDB.html#ad43630ad28a68c3e8b1a633f09aa0964">WritePool</a>(nEnd, <a class="code" href="classCKeyPool.html">CKeyPool</a>(GenerateNewKey(0, fInternal), fInternal)))</div><div class="line"><a name="l03824"></a><span class="lineno"> 3824</span>&#160; <span class="keywordflow">throw</span> runtime_error(<span class="stringliteral">&quot;TopUpKeyPool(): writing generated key failed&quot;</span>);</div><div class="line"><a name="l03825"></a><span class="lineno"> 3825</span>&#160;</div><div class="line"><a name="l03826"></a><span class="lineno"> 3826</span>&#160; <span class="keywordflow">if</span> (fInternal) {</div><div class="line"><a name="l03827"></a><span class="lineno"> 3827</span>&#160; setInternalKeyPool.insert(nEnd);</div><div class="line"><a name="l03828"></a><span class="lineno"> 3828</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03829"></a><span class="lineno"> 3829</span>&#160; setExternalKeyPool.insert(nEnd);</div><div class="line"><a name="l03830"></a><span class="lineno"> 3830</span>&#160; }</div><div class="line"><a name="l03831"></a><span class="lineno"> 3831</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;keypool added key %d, size=%u, internal=%d\n&quot;</span>, nEnd, setInternalKeyPool.size() + setExternalKeyPool.size(), fInternal);</div><div class="line"><a name="l03832"></a><span class="lineno"> 3832</span>&#160;</div><div class="line"><a name="l03833"></a><span class="lineno"> 3833</span>&#160; <span class="keywordtype">double</span> dProgress = 100.f * nEnd / (nTargetSize + 1);</div><div class="line"><a name="l03834"></a><span class="lineno"> 3834</span>&#160; std::string strMsg = <a class="code" href="tinyformat_8h.html#a56c674871a61baaad36ad52238c08857">strprintf</a>(<a class="code" href="util_8h.html#aad133bb6103b53cebf03fd01e2f11ba1">_</a>(<span class="stringliteral">&quot;Loading wallet... (%3.2f %%)&quot;</span>), dProgress);</div><div class="line"><a name="l03835"></a><span class="lineno"> 3835</span>&#160; <a class="code" href="init_8cpp.html#a4fe31b510fc1c2b95321cedb9f89e8de">uiInterface</a>.<a class="code" href="classCClientUIInterface.html#abc63cc3f3e5e15632f713d859dbc6bc2">InitMessage</a>(strMsg);</div><div class="line"><a name="l03836"></a><span class="lineno"> 3836</span>&#160; }</div><div class="line"><a name="l03837"></a><span class="lineno"> 3837</span>&#160; }</div><div class="line"><a name="l03838"></a><span class="lineno"> 3838</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l03839"></a><span class="lineno"> 3839</span>&#160;}</div><div class="line"><a name="l03840"></a><span class="lineno"> 3840</span>&#160;</div><div class="line"><a name="l03841"></a><span class="lineno"><a class="line" href="group__Actions.html#ga7eb46509d48033fcf84bc396f88b076e"> 3841</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__Actions.html#ga7eb46509d48033fcf84bc396f88b076e">CWallet::ReserveKeyFromKeyPool</a>(int64_t&amp; nIndex, <a class="code" href="classCKeyPool.html">CKeyPool</a>&amp; <a class="code" href="namespacekeypool.html">keypool</a>, <span class="keywordtype">bool</span> fInternal)</div><div class="line"><a name="l03842"></a><span class="lineno"> 3842</span>&#160;{</div><div class="line"><a name="l03843"></a><span class="lineno"> 3843</span>&#160; nIndex = -1;</div><div class="line"><a name="l03844"></a><span class="lineno"> 3844</span>&#160; <a class="code" href="namespacekeypool.html">keypool</a>.vchPubKey = <a class="code" href="classCPubKey.html">CPubKey</a>();</div><div class="line"><a name="l03845"></a><span class="lineno"> 3845</span>&#160; {</div><div class="line"><a name="l03846"></a><span class="lineno"> 3846</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet);</div><div class="line"><a name="l03847"></a><span class="lineno"> 3847</span>&#160;</div><div class="line"><a name="l03848"></a><span class="lineno"> 3848</span>&#160; <span class="keywordflow">if</span> (!IsLocked(<span class="keyword">true</span>))</div><div class="line"><a name="l03849"></a><span class="lineno"> 3849</span>&#160; TopUpKeyPool();</div><div class="line"><a name="l03850"></a><span class="lineno"> 3850</span>&#160;</div><div class="line"><a name="l03851"></a><span class="lineno"> 3851</span>&#160; fInternal = fInternal &amp;&amp; IsHDEnabled();</div><div class="line"><a name="l03852"></a><span class="lineno"> 3852</span>&#160; std::set&lt;int64_t&gt;&amp; setKeyPool = fInternal ? setInternalKeyPool : setExternalKeyPool;</div><div class="line"><a name="l03853"></a><span class="lineno"> 3853</span>&#160;</div><div class="line"><a name="l03854"></a><span class="lineno"> 3854</span>&#160; <span class="comment">// Get the oldest key</span></div><div class="line"><a name="l03855"></a><span class="lineno"> 3855</span>&#160; <span class="keywordflow">if</span>(setKeyPool.empty())</div><div class="line"><a name="l03856"></a><span class="lineno"> 3856</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l03857"></a><span class="lineno"> 3857</span>&#160;</div><div class="line"><a name="l03858"></a><span class="lineno"> 3858</span>&#160; <a class="code" href="classCWalletDB.html">CWalletDB</a> walletdb(strWalletFile);</div><div class="line"><a name="l03859"></a><span class="lineno"> 3859</span>&#160;</div><div class="line"><a name="l03860"></a><span class="lineno"> 3860</span>&#160; nIndex = *setKeyPool.begin();</div><div class="line"><a name="l03861"></a><span class="lineno"> 3861</span>&#160; setKeyPool.erase(nIndex);</div><div class="line"><a name="l03862"></a><span class="lineno"> 3862</span>&#160; <span class="keywordflow">if</span> (!walletdb.<a class="code" href="classCWalletDB.html#a6a03927cf247314ccd9b285139de0bd1">ReadPool</a>(nIndex, <a class="code" href="namespacekeypool.html">keypool</a>)) {</div><div class="line"><a name="l03863"></a><span class="lineno"> 3863</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(std::string(__func__) + <span class="stringliteral">&quot;: read failed&quot;</span>);</div><div class="line"><a name="l03864"></a><span class="lineno"> 3864</span>&#160; }</div><div class="line"><a name="l03865"></a><span class="lineno"> 3865</span>&#160; <span class="keywordflow">if</span> (!HaveKey(<a class="code" href="namespacekeypool.html">keypool</a>.vchPubKey.GetID())) {</div><div class="line"><a name="l03866"></a><span class="lineno"> 3866</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(std::string(__func__) + <span class="stringliteral">&quot;: unknown key in key pool&quot;</span>);</div><div class="line"><a name="l03867"></a><span class="lineno"> 3867</span>&#160; }</div><div class="line"><a name="l03868"></a><span class="lineno"> 3868</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespacekeypool.html">keypool</a>.fInternal != fInternal) {</div><div class="line"><a name="l03869"></a><span class="lineno"> 3869</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(std::string(__func__) + <span class="stringliteral">&quot;: keypool entry misclassified&quot;</span>);</div><div class="line"><a name="l03870"></a><span class="lineno"> 3870</span>&#160; }</div><div class="line"><a name="l03871"></a><span class="lineno"> 3871</span>&#160;</div><div class="line"><a name="l03872"></a><span class="lineno"> 3872</span>&#160; assert(<a class="code" href="namespacekeypool.html">keypool</a>.vchPubKey.IsValid());</div><div class="line"><a name="l03873"></a><span class="lineno"> 3873</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;keypool reserve %d\n&quot;</span>, nIndex);</div><div class="line"><a name="l03874"></a><span class="lineno"> 3874</span>&#160; }</div><div class="line"><a name="l03875"></a><span class="lineno"> 3875</span>&#160;}</div><div class="line"><a name="l03876"></a><span class="lineno"> 3876</span>&#160;</div><div class="line"><a name="l03877"></a><span class="lineno"><a class="line" href="group__Actions.html#gae460b8c824a1a6633615f95373e533f2"> 3877</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__Actions.html#gae460b8c824a1a6633615f95373e533f2">CWallet::KeepKey</a>(int64_t nIndex)</div><div class="line"><a name="l03878"></a><span class="lineno"> 3878</span>&#160;{</div><div class="line"><a name="l03879"></a><span class="lineno"> 3879</span>&#160; <span class="comment">// Remove from key pool</span></div><div class="line"><a name="l03880"></a><span class="lineno"> 3880</span>&#160; <span class="keywordflow">if</span> (fFileBacked)</div><div class="line"><a name="l03881"></a><span class="lineno"> 3881</span>&#160; {</div><div class="line"><a name="l03882"></a><span class="lineno"> 3882</span>&#160; <a class="code" href="classCWalletDB.html">CWalletDB</a> walletdb(strWalletFile);</div><div class="line"><a name="l03883"></a><span class="lineno"> 3883</span>&#160; walletdb.<a class="code" href="classCWalletDB.html#ac78d839fbda5164c4134ab67911139ca">ErasePool</a>(nIndex);</div><div class="line"><a name="l03884"></a><span class="lineno"> 3884</span>&#160; nKeysLeftSinceAutoBackup = <a class="code" href="util_8cpp.html#a5e34214b56ce780359081f030cd9dcba">nWalletBackups</a> ? nKeysLeftSinceAutoBackup - 1 : 0;</div><div class="line"><a name="l03885"></a><span class="lineno"> 3885</span>&#160; }</div><div class="line"><a name="l03886"></a><span class="lineno"> 3886</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;keypool keep %d\n&quot;</span>, nIndex);</div><div class="line"><a name="l03887"></a><span class="lineno"> 3887</span>&#160;}</div><div class="line"><a name="l03888"></a><span class="lineno"> 3888</span>&#160;</div><div class="line"><a name="l03889"></a><span class="lineno"><a class="line" href="group__Actions.html#ga47afcc47fc4fa53605670f3bc29a7bcc"> 3889</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__Actions.html#ga47afcc47fc4fa53605670f3bc29a7bcc">CWallet::ReturnKey</a>(int64_t nIndex, <span class="keywordtype">bool</span> fInternal)</div><div class="line"><a name="l03890"></a><span class="lineno"> 3890</span>&#160;{</div><div class="line"><a name="l03891"></a><span class="lineno"> 3891</span>&#160; <span class="comment">// Return to key pool</span></div><div class="line"><a name="l03892"></a><span class="lineno"> 3892</span>&#160; {</div><div class="line"><a name="l03893"></a><span class="lineno"> 3893</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet);</div><div class="line"><a name="l03894"></a><span class="lineno"> 3894</span>&#160; <span class="keywordflow">if</span> (fInternal) {</div><div class="line"><a name="l03895"></a><span class="lineno"> 3895</span>&#160; setInternalKeyPool.insert(nIndex);</div><div class="line"><a name="l03896"></a><span class="lineno"> 3896</span>&#160; } <span class="keywordflow">else</span> {</div><div class="line"><a name="l03897"></a><span class="lineno"> 3897</span>&#160; setExternalKeyPool.insert(nIndex);</div><div class="line"><a name="l03898"></a><span class="lineno"> 3898</span>&#160; }</div><div class="line"><a name="l03899"></a><span class="lineno"> 3899</span>&#160; }</div><div class="line"><a name="l03900"></a><span class="lineno"> 3900</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;keypool return %d\n&quot;</span>, nIndex);</div><div class="line"><a name="l03901"></a><span class="lineno"> 3901</span>&#160;}</div><div class="line"><a name="l03902"></a><span class="lineno"> 3902</span>&#160;</div><div class="line"><a name="l03903"></a><span class="lineno"><a class="line" href="group__Actions.html#gaf06799dcbf34d484db36fc6a84a2ff40"> 3903</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__Actions.html#gaf06799dcbf34d484db36fc6a84a2ff40">CWallet::GetKeyFromPool</a>(<a class="code" href="classCPubKey.html">CPubKey</a>&amp; <a class="code" href="namespacerpcuser.html#a637791b4450c02d511291cd297ce12df">result</a>, <span class="keywordtype">bool</span> fInternal)</div><div class="line"><a name="l03904"></a><span class="lineno"> 3904</span>&#160;{</div><div class="line"><a name="l03905"></a><span class="lineno"> 3905</span>&#160; int64_t nIndex = 0;</div><div class="line"><a name="l03906"></a><span class="lineno"> 3906</span>&#160; <a class="code" href="classCKeyPool.html">CKeyPool</a> <a class="code" href="namespacekeypool.html">keypool</a>;</div><div class="line"><a name="l03907"></a><span class="lineno"> 3907</span>&#160; {</div><div class="line"><a name="l03908"></a><span class="lineno"> 3908</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet);</div><div class="line"><a name="l03909"></a><span class="lineno"> 3909</span>&#160; ReserveKeyFromKeyPool(nIndex, <a class="code" href="namespacekeypool.html">keypool</a>, fInternal);</div><div class="line"><a name="l03910"></a><span class="lineno"> 3910</span>&#160; <span class="keywordflow">if</span> (nIndex == -1)</div><div class="line"><a name="l03911"></a><span class="lineno"> 3911</span>&#160; {</div><div class="line"><a name="l03912"></a><span class="lineno"> 3912</span>&#160; <span class="keywordflow">if</span> (IsLocked(<span class="keyword">true</span>)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l03913"></a><span class="lineno"> 3913</span>&#160; <span class="comment">// TODO: implement keypool for all accouts?</span></div><div class="line"><a name="l03914"></a><span class="lineno"> 3914</span>&#160; <a class="code" href="namespacerpcuser.html#a637791b4450c02d511291cd297ce12df">result</a> = GenerateNewKey(0, fInternal);</div><div class="line"><a name="l03915"></a><span class="lineno"> 3915</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l03916"></a><span class="lineno"> 3916</span>&#160; }</div><div class="line"><a name="l03917"></a><span class="lineno"> 3917</span>&#160; KeepKey(nIndex);</div><div class="line"><a name="l03918"></a><span class="lineno"> 3918</span>&#160; <a class="code" href="namespacerpcuser.html#a637791b4450c02d511291cd297ce12df">result</a> = <a class="code" href="namespacekeypool.html">keypool</a>.vchPubKey;</div><div class="line"><a name="l03919"></a><span class="lineno"> 3919</span>&#160; }</div><div class="line"><a name="l03920"></a><span class="lineno"> 3920</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l03921"></a><span class="lineno"> 3921</span>&#160;}</div><div class="line"><a name="l03922"></a><span class="lineno"> 3922</span>&#160;</div><div class="line"><a name="l03923"></a><span class="lineno"><a class="line" href="group__Actions.html#ga854d83cbc2f4a5b993631507ed32aa3a"> 3923</a></span>&#160;<span class="keyword">static</span> int64_t <a class="code" href="group__Actions.html#ga854d83cbc2f4a5b993631507ed32aa3a">GetOldestKeyInPool</a>(<span class="keyword">const</span> std::set&lt;int64_t&gt;&amp; setKeyPool, <a class="code" href="classCWalletDB.html">CWalletDB</a>&amp; walletdb) {</div><div class="line"><a name="l03924"></a><span class="lineno"> 3924</span>&#160; <a class="code" href="classCKeyPool.html">CKeyPool</a> <a class="code" href="namespacekeypool.html">keypool</a>;</div><div class="line"><a name="l03925"></a><span class="lineno"> 3925</span>&#160; int64_t nIndex = *(setKeyPool.begin());</div><div class="line"><a name="l03926"></a><span class="lineno"> 3926</span>&#160; <span class="keywordflow">if</span> (!walletdb.<a class="code" href="classCWalletDB.html#a6a03927cf247314ccd9b285139de0bd1">ReadPool</a>(nIndex, <a class="code" href="namespacekeypool.html">keypool</a>)) {</div><div class="line"><a name="l03927"></a><span class="lineno"> 3927</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(std::string(__func__) + <span class="stringliteral">&quot;: read oldest key in keypool failed&quot;</span>);</div><div class="line"><a name="l03928"></a><span class="lineno"> 3928</span>&#160; }</div><div class="line"><a name="l03929"></a><span class="lineno"> 3929</span>&#160; assert(<a class="code" href="namespacekeypool.html">keypool</a>.vchPubKey.IsValid());</div><div class="line"><a name="l03930"></a><span class="lineno"> 3930</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacekeypool.html">keypool</a>.nTime;</div><div class="line"><a name="l03931"></a><span class="lineno"> 3931</span>&#160;}</div><div class="line"><a name="l03932"></a><span class="lineno"> 3932</span>&#160;</div><div class="line"><a name="l03933"></a><span class="lineno"><a class="line" href="group__Actions.html#ga2555a9442e58b3c5593fef21f1b39d2d"> 3933</a></span>&#160;int64_t <a class="code" href="group__Actions.html#ga2555a9442e58b3c5593fef21f1b39d2d">CWallet::GetOldestKeyPoolTime</a>()</div><div class="line"><a name="l03934"></a><span class="lineno"> 3934</span>&#160;{</div><div class="line"><a name="l03935"></a><span class="lineno"> 3935</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet);</div><div class="line"><a name="l03936"></a><span class="lineno"> 3936</span>&#160;</div><div class="line"><a name="l03937"></a><span class="lineno"> 3937</span>&#160; <span class="comment">// if the keypool is empty, return &lt;NOW&gt;</span></div><div class="line"><a name="l03938"></a><span class="lineno"> 3938</span>&#160; <span class="keywordflow">if</span> (setExternalKeyPool.empty() &amp;&amp; setInternalKeyPool.empty())</div><div class="line"><a name="l03939"></a><span class="lineno"> 3939</span>&#160; <span class="keywordflow">return</span> <a class="code" href="utiltime_8cpp.html#a46fac5fba8ba905b5f9acb364f5d8c6f">GetTime</a>();</div><div class="line"><a name="l03940"></a><span class="lineno"> 3940</span>&#160;</div><div class="line"><a name="l03941"></a><span class="lineno"> 3941</span>&#160; <a class="code" href="classCWalletDB.html">CWalletDB</a> walletdb(strWalletFile);</div><div class="line"><a name="l03942"></a><span class="lineno"> 3942</span>&#160; int64_t oldestKey = -1;</div><div class="line"><a name="l03943"></a><span class="lineno"> 3943</span>&#160;</div><div class="line"><a name="l03944"></a><span class="lineno"> 3944</span>&#160; <span class="comment">// load oldest key from keypool, get time and return</span></div><div class="line"><a name="l03945"></a><span class="lineno"> 3945</span>&#160; <span class="keywordflow">if</span> (!setInternalKeyPool.empty()) {</div><div class="line"><a name="l03946"></a><span class="lineno"> 3946</span>&#160; oldestKey = std::max(<a class="code" href="group__Actions.html#ga854d83cbc2f4a5b993631507ed32aa3a">GetOldestKeyInPool</a>(setInternalKeyPool, walletdb), oldestKey);</div><div class="line"><a name="l03947"></a><span class="lineno"> 3947</span>&#160; }</div><div class="line"><a name="l03948"></a><span class="lineno"> 3948</span>&#160; <span class="keywordflow">if</span> (!setExternalKeyPool.empty()) {</div><div class="line"><a name="l03949"></a><span class="lineno"> 3949</span>&#160; oldestKey = std::max(<a class="code" href="group__Actions.html#ga854d83cbc2f4a5b993631507ed32aa3a">GetOldestKeyInPool</a>(setExternalKeyPool, walletdb), oldestKey);</div><div class="line"><a name="l03950"></a><span class="lineno"> 3950</span>&#160; }</div><div class="line"><a name="l03951"></a><span class="lineno"> 3951</span>&#160; <span class="keywordflow">return</span> oldestKey;</div><div class="line"><a name="l03952"></a><span class="lineno"> 3952</span>&#160;}</div><div class="line"><a name="l03953"></a><span class="lineno"> 3953</span>&#160;</div><div class="line"><a name="l03954"></a><span class="lineno"><a class="line" href="group__Actions.html#gadf2b4ac337ddb271555985cec82e43e6"> 3954</a></span>&#160;std::map&lt;CTxDestination, CAmount&gt; <a class="code" href="group__Actions.html#gadf2b4ac337ddb271555985cec82e43e6">CWallet::GetAddressBalances</a>()</div><div class="line"><a name="l03955"></a><span class="lineno"> 3955</span>&#160;{</div><div class="line"><a name="l03956"></a><span class="lineno"> 3956</span>&#160; map&lt;CTxDestination, CAmount&gt; balances;</div><div class="line"><a name="l03957"></a><span class="lineno"> 3957</span>&#160;</div><div class="line"><a name="l03958"></a><span class="lineno"> 3958</span>&#160; {</div><div class="line"><a name="l03959"></a><span class="lineno"> 3959</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet);</div><div class="line"><a name="l03960"></a><span class="lineno"> 3960</span>&#160; BOOST_FOREACH(<a class="code" href="utilstrencodings_8h.html#aa3052ab82a2ba880ea3e30b3357c8820">PAIRTYPE</a>(<a class="code" href="classuint256.html">uint256</a>, <a class="code" href="classCWalletTx.html">CWalletTx</a>) walletEntry, mapWallet)</div><div class="line"><a name="l03961"></a><span class="lineno"> 3961</span>&#160; {</div><div class="line"><a name="l03962"></a><span class="lineno"> 3962</span>&#160; <a class="code" href="classCWalletTx.html">CWalletTx</a> *pcoin = &amp;walletEntry.second;</div><div class="line"><a name="l03963"></a><span class="lineno"> 3963</span>&#160;</div><div class="line"><a name="l03964"></a><span class="lineno"> 3964</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="validation_8cpp.html#a7e254ea66e047c3d3ed0bedc5997fc4f">CheckFinalTx</a>(*pcoin) || !pcoin-&gt;<a class="code" href="group__mapWallet.html#ga71efb0d5b5def8ae00a1d74b8741bfcb">IsTrusted</a>())</div><div class="line"><a name="l03965"></a><span class="lineno"> 3965</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l03966"></a><span class="lineno"> 3966</span>&#160;</div><div class="line"><a name="l03967"></a><span class="lineno"> 3967</span>&#160; <span class="keywordflow">if</span> (pcoin-&gt;<a class="code" href="classCTransaction.html#a96256e8ac1bf79ad9c057e48c41132dd">IsCoinBase</a>() &amp;&amp; pcoin-&gt;<a class="code" href="classCMerkleTx.html#a69ebd437f7b44169659c3527fe73b6ab">GetBlocksToMaturity</a>() &gt; 0)</div><div class="line"><a name="l03968"></a><span class="lineno"> 3968</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l03969"></a><span class="lineno"> 3969</span>&#160;</div><div class="line"><a name="l03970"></a><span class="lineno"> 3970</span>&#160; <span class="keywordtype">int</span> nDepth = pcoin-&gt;<a class="code" href="classCMerkleTx.html#a5bf3a355593ecce5799de92d013149b1">GetDepthInMainChain</a>();</div><div class="line"><a name="l03971"></a><span class="lineno"> 3971</span>&#160; <span class="keywordflow">if</span> (nDepth &lt; (pcoin-&gt;<a class="code" href="classCWalletTx.html#a4b4fdec025af8171852c3eece1c2508f">IsFromMe</a>(<a class="code" href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20da1fe9e47b4c162fd9a1779e59a11dd067">ISMINE_ALL</a>) ? 0 : 1))</div><div class="line"><a name="l03972"></a><span class="lineno"> 3972</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l03973"></a><span class="lineno"> 3973</span>&#160;</div><div class="line"><a name="l03974"></a><span class="lineno"> 3974</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; pcoin-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>.size(); i++)</div><div class="line"><a name="l03975"></a><span class="lineno"> 3975</span>&#160; {</div><div class="line"><a name="l03976"></a><span class="lineno"> 3976</span>&#160; <a class="code" href="standard_8h.html#a50f712c3d9a0d2f85ae464497dd9cff8">CTxDestination</a> addr;</div><div class="line"><a name="l03977"></a><span class="lineno"> 3977</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="wallet__ismine_8cpp.html#adc59cf67d903c1ba1ef225561b85bfce">IsMine</a>(pcoin-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[i]))</div><div class="line"><a name="l03978"></a><span class="lineno"> 3978</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l03979"></a><span class="lineno"> 3979</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="standard_8cpp.html#a951f7e601746ae076afdf3169ecca2fc">ExtractDestination</a>(pcoin-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[i].scriptPubKey, addr))</div><div class="line"><a name="l03980"></a><span class="lineno"> 3980</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l03981"></a><span class="lineno"> 3981</span>&#160;</div><div class="line"><a name="l03982"></a><span class="lineno"> 3982</span>&#160; <a class="code" href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a> <a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a> = IsSpent(walletEntry.first, i) ? 0 : pcoin-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[i].nValue;</div><div class="line"><a name="l03983"></a><span class="lineno"> 3983</span>&#160;</div><div class="line"><a name="l03984"></a><span class="lineno"> 3984</span>&#160; <span class="keywordflow">if</span> (!balances.count(addr))</div><div class="line"><a name="l03985"></a><span class="lineno"> 3985</span>&#160; balances[addr] = 0;</div><div class="line"><a name="l03986"></a><span class="lineno"> 3986</span>&#160; balances[addr] += <a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a>;</div><div class="line"><a name="l03987"></a><span class="lineno"> 3987</span>&#160; }</div><div class="line"><a name="l03988"></a><span class="lineno"> 3988</span>&#160; }</div><div class="line"><a name="l03989"></a><span class="lineno"> 3989</span>&#160; }</div><div class="line"><a name="l03990"></a><span class="lineno"> 3990</span>&#160;</div><div class="line"><a name="l03991"></a><span class="lineno"> 3991</span>&#160; <span class="keywordflow">return</span> balances;</div><div class="line"><a name="l03992"></a><span class="lineno"> 3992</span>&#160;}</div><div class="line"><a name="l03993"></a><span class="lineno"> 3993</span>&#160;</div><div class="line"><a name="l03994"></a><span class="lineno"><a class="line" href="group__Actions.html#ga8eacbac6ad3697d90b98dfe02632f8ef"> 3994</a></span>&#160;set&lt; set&lt;CTxDestination&gt; &gt; <a class="code" href="group__Actions.html#ga8eacbac6ad3697d90b98dfe02632f8ef">CWallet::GetAddressGroupings</a>()</div><div class="line"><a name="l03995"></a><span class="lineno"> 3995</span>&#160;{</div><div class="line"><a name="l03996"></a><span class="lineno"> 3996</span>&#160; <a class="code" href="sync_8h.html#acd61d0cb3b49f367728193720014aed0">AssertLockHeld</a>(cs_wallet); <span class="comment">// mapWallet</span></div><div class="line"><a name="l03997"></a><span class="lineno"> 3997</span>&#160; set&lt; set&lt;CTxDestination&gt; &gt; groupings;</div><div class="line"><a name="l03998"></a><span class="lineno"> 3998</span>&#160; set&lt;CTxDestination&gt; grouping;</div><div class="line"><a name="l03999"></a><span class="lineno"> 3999</span>&#160;</div><div class="line"><a name="l04000"></a><span class="lineno"> 4000</span>&#160; BOOST_FOREACH(<a class="code" href="utilstrencodings_8h.html#aa3052ab82a2ba880ea3e30b3357c8820">PAIRTYPE</a>(<a class="code" href="classuint256.html">uint256</a>, <a class="code" href="classCWalletTx.html">CWalletTx</a>) walletEntry, mapWallet)</div><div class="line"><a name="l04001"></a><span class="lineno"> 4001</span>&#160; {</div><div class="line"><a name="l04002"></a><span class="lineno"> 4002</span>&#160; <a class="code" href="classCWalletTx.html">CWalletTx</a> *pcoin = &amp;walletEntry.second;</div><div class="line"><a name="l04003"></a><span class="lineno"> 4003</span>&#160;</div><div class="line"><a name="l04004"></a><span class="lineno"> 4004</span>&#160; <span class="keywordflow">if</span> (pcoin-&gt;<a class="code" href="classCTransaction.html#ad64447ea044ec850313696fc99412d95">vin</a>.size() &gt; 0)</div><div class="line"><a name="l04005"></a><span class="lineno"> 4005</span>&#160; {</div><div class="line"><a name="l04006"></a><span class="lineno"> 4006</span>&#160; <span class="keywordtype">bool</span> any_mine = <span class="keyword">false</span>;</div><div class="line"><a name="l04007"></a><span class="lineno"> 4007</span>&#160; <span class="comment">// group all input addresses with each other</span></div><div class="line"><a name="l04008"></a><span class="lineno"> 4008</span>&#160; BOOST_FOREACH(<a class="code" href="classCTxIn.html">CTxIn</a> txin, pcoin-&gt;<a class="code" href="classCTransaction.html#ad64447ea044ec850313696fc99412d95">vin</a>)</div><div class="line"><a name="l04009"></a><span class="lineno"> 4009</span>&#160; {</div><div class="line"><a name="l04010"></a><span class="lineno"> 4010</span>&#160; <a class="code" href="standard_8h.html#a50f712c3d9a0d2f85ae464497dd9cff8">CTxDestination</a> address;</div><div class="line"><a name="l04011"></a><span class="lineno"> 4011</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="wallet__ismine_8cpp.html#adc59cf67d903c1ba1ef225561b85bfce">IsMine</a>(txin)) <span class="comment">/* If this input isn&#39;t mine, ignore it */</span></div><div class="line"><a name="l04012"></a><span class="lineno"> 4012</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l04013"></a><span class="lineno"> 4013</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="standard_8cpp.html#a951f7e601746ae076afdf3169ecca2fc">ExtractDestination</a>(mapWallet[txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>.<a class="code" href="classCOutPoint.html#af131c7194a660558b0ff158f4efa7a28">hash</a>].vout[txin.<a class="code" href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">prevout</a>.<a class="code" href="classCOutPoint.html#a1b857e3a0412ff741da2c9f8defe315c">n</a>].scriptPubKey, address))</div><div class="line"><a name="l04014"></a><span class="lineno"> 4014</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l04015"></a><span class="lineno"> 4015</span>&#160; grouping.insert(address);</div><div class="line"><a name="l04016"></a><span class="lineno"> 4016</span>&#160; any_mine = <span class="keyword">true</span>;</div><div class="line"><a name="l04017"></a><span class="lineno"> 4017</span>&#160; }</div><div class="line"><a name="l04018"></a><span class="lineno"> 4018</span>&#160;</div><div class="line"><a name="l04019"></a><span class="lineno"> 4019</span>&#160; <span class="comment">// group change with input addresses</span></div><div class="line"><a name="l04020"></a><span class="lineno"> 4020</span>&#160; <span class="keywordflow">if</span> (any_mine)</div><div class="line"><a name="l04021"></a><span class="lineno"> 4021</span>&#160; {</div><div class="line"><a name="l04022"></a><span class="lineno"> 4022</span>&#160; BOOST_FOREACH(<a class="code" href="classCTxOut.html">CTxOut</a> txout, pcoin-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>)</div><div class="line"><a name="l04023"></a><span class="lineno"> 4023</span>&#160; <span class="keywordflow">if</span> (IsChange(txout))</div><div class="line"><a name="l04024"></a><span class="lineno"> 4024</span>&#160; {</div><div class="line"><a name="l04025"></a><span class="lineno"> 4025</span>&#160; <a class="code" href="standard_8h.html#a50f712c3d9a0d2f85ae464497dd9cff8">CTxDestination</a> txoutAddr;</div><div class="line"><a name="l04026"></a><span class="lineno"> 4026</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="standard_8cpp.html#a951f7e601746ae076afdf3169ecca2fc">ExtractDestination</a>(txout.<a class="code" href="classCTxOut.html#a25bf3f2f4befb22a6a0be45784fe57e2">scriptPubKey</a>, txoutAddr))</div><div class="line"><a name="l04027"></a><span class="lineno"> 4027</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l04028"></a><span class="lineno"> 4028</span>&#160; grouping.insert(txoutAddr);</div><div class="line"><a name="l04029"></a><span class="lineno"> 4029</span>&#160; }</div><div class="line"><a name="l04030"></a><span class="lineno"> 4030</span>&#160; }</div><div class="line"><a name="l04031"></a><span class="lineno"> 4031</span>&#160; <span class="keywordflow">if</span> (grouping.size() &gt; 0)</div><div class="line"><a name="l04032"></a><span class="lineno"> 4032</span>&#160; {</div><div class="line"><a name="l04033"></a><span class="lineno"> 4033</span>&#160; groupings.insert(grouping);</div><div class="line"><a name="l04034"></a><span class="lineno"> 4034</span>&#160; grouping.clear();</div><div class="line"><a name="l04035"></a><span class="lineno"> 4035</span>&#160; }</div><div class="line"><a name="l04036"></a><span class="lineno"> 4036</span>&#160; }</div><div class="line"><a name="l04037"></a><span class="lineno"> 4037</span>&#160;</div><div class="line"><a name="l04038"></a><span class="lineno"> 4038</span>&#160; <span class="comment">// group lone addrs by themselves</span></div><div class="line"><a name="l04039"></a><span class="lineno"> 4039</span>&#160; <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = 0; i &lt; pcoin-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>.size(); i++)</div><div class="line"><a name="l04040"></a><span class="lineno"> 4040</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="wallet__ismine_8cpp.html#adc59cf67d903c1ba1ef225561b85bfce">IsMine</a>(pcoin-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[i]))</div><div class="line"><a name="l04041"></a><span class="lineno"> 4041</span>&#160; {</div><div class="line"><a name="l04042"></a><span class="lineno"> 4042</span>&#160; <a class="code" href="standard_8h.html#a50f712c3d9a0d2f85ae464497dd9cff8">CTxDestination</a> address;</div><div class="line"><a name="l04043"></a><span class="lineno"> 4043</span>&#160; <span class="keywordflow">if</span>(!<a class="code" href="standard_8cpp.html#a951f7e601746ae076afdf3169ecca2fc">ExtractDestination</a>(pcoin-&gt;<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>[i].scriptPubKey, address))</div><div class="line"><a name="l04044"></a><span class="lineno"> 4044</span>&#160; <span class="keywordflow">continue</span>;</div><div class="line"><a name="l04045"></a><span class="lineno"> 4045</span>&#160; grouping.insert(address);</div><div class="line"><a name="l04046"></a><span class="lineno"> 4046</span>&#160; groupings.insert(grouping);</div><div class="line"><a name="l04047"></a><span class="lineno"> 4047</span>&#160; grouping.clear();</div><div class="line"><a name="l04048"></a><span class="lineno"> 4048</span>&#160; }</div><div class="line"><a name="l04049"></a><span class="lineno"> 4049</span>&#160; }</div><div class="line"><a name="l04050"></a><span class="lineno"> 4050</span>&#160;</div><div class="line"><a name="l04051"></a><span class="lineno"> 4051</span>&#160; set&lt; set&lt;CTxDestination&gt;* &gt; uniqueGroupings; <span class="comment">// a set of pointers to groups of addresses</span></div><div class="line"><a name="l04052"></a><span class="lineno"> 4052</span>&#160; map&lt; CTxDestination, set&lt;CTxDestination&gt;* &gt; setmap; <span class="comment">// map addresses to the unique group containing it</span></div><div class="line"><a name="l04053"></a><span class="lineno"> 4053</span>&#160; BOOST_FOREACH(set&lt;CTxDestination&gt; grouping, groupings)</div><div class="line"><a name="l04054"></a><span class="lineno"> 4054</span>&#160; {</div><div class="line"><a name="l04055"></a><span class="lineno"> 4055</span>&#160; <span class="comment">// make a set of all the groups hit by this new group</span></div><div class="line"><a name="l04056"></a><span class="lineno"> 4056</span>&#160; set&lt; set&lt;CTxDestination&gt;* &gt; hits;</div><div class="line"><a name="l04057"></a><span class="lineno"> 4057</span>&#160; map&lt; CTxDestination, set&lt;CTxDestination&gt;* &gt;::iterator it;</div><div class="line"><a name="l04058"></a><span class="lineno"> 4058</span>&#160; BOOST_FOREACH(<a class="code" href="standard_8h.html#a50f712c3d9a0d2f85ae464497dd9cff8">CTxDestination</a> address, grouping)</div><div class="line"><a name="l04059"></a><span class="lineno"> 4059</span>&#160; <span class="keywordflow">if</span> ((it = setmap.find(address)) != setmap.end())</div><div class="line"><a name="l04060"></a><span class="lineno"> 4060</span>&#160; hits.insert((*it).second);</div><div class="line"><a name="l04061"></a><span class="lineno"> 4061</span>&#160;</div><div class="line"><a name="l04062"></a><span class="lineno"> 4062</span>&#160; <span class="comment">// merge all hit groups into a new single group and delete old groups</span></div><div class="line"><a name="l04063"></a><span class="lineno"> 4063</span>&#160; set&lt;CTxDestination&gt;* merged = <span class="keyword">new</span> set&lt;CTxDestination&gt;(grouping);</div><div class="line"><a name="l04064"></a><span class="lineno"> 4064</span>&#160; BOOST_FOREACH(set&lt;CTxDestination&gt;* hit, hits)</div><div class="line"><a name="l04065"></a><span class="lineno"> 4065</span>&#160; {</div><div class="line"><a name="l04066"></a><span class="lineno"> 4066</span>&#160; merged-&gt;insert(hit-&gt;begin(), hit-&gt;end());</div><div class="line"><a name="l04067"></a><span class="lineno"> 4067</span>&#160; uniqueGroupings.erase(hit);</div><div class="line"><a name="l04068"></a><span class="lineno"> 4068</span>&#160; <span class="keyword">delete</span> hit;</div><div class="line"><a name="l04069"></a><span class="lineno"> 4069</span>&#160; }</div><div class="line"><a name="l04070"></a><span class="lineno"> 4070</span>&#160; uniqueGroupings.insert(merged);</div><div class="line"><a name="l04071"></a><span class="lineno"> 4071</span>&#160;</div><div class="line"><a name="l04072"></a><span class="lineno"> 4072</span>&#160; <span class="comment">// update setmap</span></div><div class="line"><a name="l04073"></a><span class="lineno"> 4073</span>&#160; BOOST_FOREACH(<a class="code" href="standard_8h.html#a50f712c3d9a0d2f85ae464497dd9cff8">CTxDestination</a> element, *merged)</div><div class="line"><a name="l04074"></a><span class="lineno"> 4074</span>&#160; setmap[element] = merged;</div><div class="line"><a name="l04075"></a><span class="lineno"> 4075</span>&#160; }</div><div class="line"><a name="l04076"></a><span class="lineno"> 4076</span>&#160;</div><div class="line"><a name="l04077"></a><span class="lineno"> 4077</span>&#160; set&lt; set&lt;CTxDestination&gt; &gt; ret;</div><div class="line"><a name="l04078"></a><span class="lineno"> 4078</span>&#160; BOOST_FOREACH(set&lt;CTxDestination&gt;* uniqueGrouping, uniqueGroupings)</div><div class="line"><a name="l04079"></a><span class="lineno"> 4079</span>&#160; {</div><div class="line"><a name="l04080"></a><span class="lineno"> 4080</span>&#160; ret.insert(*uniqueGrouping);</div><div class="line"><a name="l04081"></a><span class="lineno"> 4081</span>&#160; <span class="keyword">delete</span> uniqueGrouping;</div><div class="line"><a name="l04082"></a><span class="lineno"> 4082</span>&#160; }</div><div class="line"><a name="l04083"></a><span class="lineno"> 4083</span>&#160;</div><div class="line"><a name="l04084"></a><span class="lineno"> 4084</span>&#160; <span class="keywordflow">return</span> ret;</div><div class="line"><a name="l04085"></a><span class="lineno"> 4085</span>&#160;}</div><div class="line"><a name="l04086"></a><span class="lineno"> 4086</span>&#160;</div><div class="line"><a name="l04087"></a><span class="lineno"><a class="line" href="group__Actions.html#ga9bb7c978c4d3b0aba8b94dcbdf868bca"> 4087</a></span>&#160;std::set&lt;CTxDestination&gt; <a class="code" href="group__Actions.html#ga9bb7c978c4d3b0aba8b94dcbdf868bca">CWallet::GetAccountAddresses</a>(<span class="keyword">const</span> std::string&amp; strAccount)<span class="keyword"> const</span></div><div class="line"><a name="l04088"></a><span class="lineno"> 4088</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l04089"></a><span class="lineno"> 4089</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet);</div><div class="line"><a name="l04090"></a><span class="lineno"> 4090</span>&#160; set&lt;CTxDestination&gt; <a class="code" href="namespacerpcuser.html#a637791b4450c02d511291cd297ce12df">result</a>;</div><div class="line"><a name="l04091"></a><span class="lineno"> 4091</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="utilstrencodings_8h.html#aa3052ab82a2ba880ea3e30b3357c8820">PAIRTYPE</a>(<a class="code" href="standard_8h.html#a50f712c3d9a0d2f85ae464497dd9cff8">CTxDestination</a>, <a class="code" href="classCAddressBookData.html">CAddressBookData</a>)&amp; item, mapAddressBook)</div><div class="line"><a name="l04092"></a><span class="lineno"> 4092</span>&#160; {</div><div class="line"><a name="l04093"></a><span class="lineno"> 4093</span>&#160; <span class="keyword">const</span> <a class="code" href="standard_8h.html#a50f712c3d9a0d2f85ae464497dd9cff8">CTxDestination</a>&amp; address = item.first;</div><div class="line"><a name="l04094"></a><span class="lineno"> 4094</span>&#160; <span class="keyword">const</span> <span class="keywordtype">string</span>&amp; strName = item.second.<a class="code" href="classCAddressBookData.html#a64dc6918c154b7ce75e92100804e490a">name</a>;</div><div class="line"><a name="l04095"></a><span class="lineno"> 4095</span>&#160; <span class="keywordflow">if</span> (strName == strAccount)</div><div class="line"><a name="l04096"></a><span class="lineno"> 4096</span>&#160; <a class="code" href="namespacerpcuser.html#a637791b4450c02d511291cd297ce12df">result</a>.insert(address);</div><div class="line"><a name="l04097"></a><span class="lineno"> 4097</span>&#160; }</div><div class="line"><a name="l04098"></a><span class="lineno"> 4098</span>&#160; <span class="keywordflow">return</span> <a class="code" href="namespacerpcuser.html#a637791b4450c02d511291cd297ce12df">result</a>;</div><div class="line"><a name="l04099"></a><span class="lineno"> 4099</span>&#160;}</div><div class="line"><a name="l04100"></a><span class="lineno"> 4100</span>&#160;</div><div class="line"><a name="l04101"></a><span class="lineno"><a class="line" href="group__Actions.html#gabe9bd095306b1320085b615885aaa250"> 4101</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__Actions.html#gabe9bd095306b1320085b615885aaa250">CReserveKey::GetReservedKey</a>(<a class="code" href="classCPubKey.html">CPubKey</a>&amp; pubkey, <span class="keywordtype">bool</span> fInternalIn)</div><div class="line"><a name="l04102"></a><span class="lineno"> 4102</span>&#160;{</div><div class="line"><a name="l04103"></a><span class="lineno"> 4103</span>&#160; <span class="keywordflow">if</span> (nIndex == -1)</div><div class="line"><a name="l04104"></a><span class="lineno"> 4104</span>&#160; {</div><div class="line"><a name="l04105"></a><span class="lineno"> 4105</span>&#160; <a class="code" href="classCKeyPool.html">CKeyPool</a> <a class="code" href="namespacekeypool.html">keypool</a>;</div><div class="line"><a name="l04106"></a><span class="lineno"> 4106</span>&#160; pwallet-&gt;ReserveKeyFromKeyPool(nIndex, <a class="code" href="namespacekeypool.html">keypool</a>, fInternalIn);</div><div class="line"><a name="l04107"></a><span class="lineno"> 4107</span>&#160; <span class="keywordflow">if</span> (nIndex != -1) {</div><div class="line"><a name="l04108"></a><span class="lineno"> 4108</span>&#160; vchPubKey = <a class="code" href="namespacekeypool.html">keypool</a>.vchPubKey;</div><div class="line"><a name="l04109"></a><span class="lineno"> 4109</span>&#160; }</div><div class="line"><a name="l04110"></a><span class="lineno"> 4110</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l04111"></a><span class="lineno"> 4111</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l04112"></a><span class="lineno"> 4112</span>&#160; }</div><div class="line"><a name="l04113"></a><span class="lineno"> 4113</span>&#160; fInternal = <a class="code" href="namespacekeypool.html">keypool</a>.fInternal;</div><div class="line"><a name="l04114"></a><span class="lineno"> 4114</span>&#160; }</div><div class="line"><a name="l04115"></a><span class="lineno"> 4115</span>&#160; assert(vchPubKey.IsValid());</div><div class="line"><a name="l04116"></a><span class="lineno"> 4116</span>&#160; pubkey = vchPubKey;</div><div class="line"><a name="l04117"></a><span class="lineno"> 4117</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l04118"></a><span class="lineno"> 4118</span>&#160;}</div><div class="line"><a name="l04119"></a><span class="lineno"> 4119</span>&#160;</div><div class="line"><a name="l04120"></a><span class="lineno"><a class="line" href="group__Actions.html#ga493d06f41ca9571f2a42c8581a3952d8"> 4120</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__Actions.html#ga493d06f41ca9571f2a42c8581a3952d8">CReserveKey::KeepKey</a>()</div><div class="line"><a name="l04121"></a><span class="lineno"> 4121</span>&#160;{</div><div class="line"><a name="l04122"></a><span class="lineno"> 4122</span>&#160; <span class="keywordflow">if</span> (nIndex != -1) {</div><div class="line"><a name="l04123"></a><span class="lineno"> 4123</span>&#160; pwallet-&gt;KeepKey(nIndex);</div><div class="line"><a name="l04124"></a><span class="lineno"> 4124</span>&#160; }</div><div class="line"><a name="l04125"></a><span class="lineno"> 4125</span>&#160; nIndex = -1;</div><div class="line"><a name="l04126"></a><span class="lineno"> 4126</span>&#160; vchPubKey = <a class="code" href="classCPubKey.html">CPubKey</a>();</div><div class="line"><a name="l04127"></a><span class="lineno"> 4127</span>&#160;}</div><div class="line"><a name="l04128"></a><span class="lineno"> 4128</span>&#160;</div><div class="line"><a name="l04129"></a><span class="lineno"><a class="line" href="group__Actions.html#gaf7b0a61f8c70c8146e42e82b4e227204"> 4129</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__Actions.html#gaf7b0a61f8c70c8146e42e82b4e227204">CReserveKey::ReturnKey</a>()</div><div class="line"><a name="l04130"></a><span class="lineno"> 4130</span>&#160;{</div><div class="line"><a name="l04131"></a><span class="lineno"> 4131</span>&#160; <span class="keywordflow">if</span> (nIndex != -1) {</div><div class="line"><a name="l04132"></a><span class="lineno"> 4132</span>&#160; pwallet-&gt;ReturnKey(nIndex, fInternal);</div><div class="line"><a name="l04133"></a><span class="lineno"> 4133</span>&#160; }</div><div class="line"><a name="l04134"></a><span class="lineno"> 4134</span>&#160; nIndex = -1;</div><div class="line"><a name="l04135"></a><span class="lineno"> 4135</span>&#160; vchPubKey = <a class="code" href="classCPubKey.html">CPubKey</a>();</div><div class="line"><a name="l04136"></a><span class="lineno"> 4136</span>&#160;}</div><div class="line"><a name="l04137"></a><span class="lineno"> 4137</span>&#160;</div><div class="line"><a name="l04138"></a><span class="lineno"><a class="line" href="group__Actions.html#ga97f8f562396b32b8e6ee78476087e1b2"> 4138</a></span>&#160;<span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="group__Actions.html#ga97f8f562396b32b8e6ee78476087e1b2">LoadReserveKeysToSet</a>(std::set&lt;CKeyID&gt;&amp; setAddress, <span class="keyword">const</span> std::set&lt;int64_t&gt;&amp; setKeyPool, <a class="code" href="classCWalletDB.html">CWalletDB</a>&amp; walletdb)</div><div class="line"><a name="l04139"></a><span class="lineno"> 4139</span>&#160;{</div><div class="line"><a name="l04140"></a><span class="lineno"> 4140</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> int64_t&amp; <span class="keywordtype">id</span>, setKeyPool)</div><div class="line"><a name="l04141"></a><span class="lineno"> 4141</span>&#160; {</div><div class="line"><a name="l04142"></a><span class="lineno"> 4142</span>&#160; <a class="code" href="classCKeyPool.html">CKeyPool</a> <a class="code" href="namespacekeypool.html">keypool</a>;</div><div class="line"><a name="l04143"></a><span class="lineno"> 4143</span>&#160; <span class="keywordflow">if</span> (!walletdb.<a class="code" href="classCWalletDB.html#a6a03927cf247314ccd9b285139de0bd1">ReadPool</a>(<span class="keywordtype">id</span>, <a class="code" href="namespacekeypool.html">keypool</a>))</div><div class="line"><a name="l04144"></a><span class="lineno"> 4144</span>&#160; <span class="keywordflow">throw</span> runtime_error(<span class="stringliteral">&quot;GetAllReserveKeyHashes(): read failed&quot;</span>);</div><div class="line"><a name="l04145"></a><span class="lineno"> 4145</span>&#160; assert(<a class="code" href="namespacekeypool.html">keypool</a>.vchPubKey.IsValid());</div><div class="line"><a name="l04146"></a><span class="lineno"> 4146</span>&#160; <a class="code" href="classCKeyID.html">CKeyID</a> keyID = <a class="code" href="namespacekeypool.html">keypool</a>.vchPubKey.GetID();</div><div class="line"><a name="l04147"></a><span class="lineno"> 4147</span>&#160; setAddress.insert(keyID);</div><div class="line"><a name="l04148"></a><span class="lineno"> 4148</span>&#160; }</div><div class="line"><a name="l04149"></a><span class="lineno"> 4149</span>&#160;}</div><div class="line"><a name="l04150"></a><span class="lineno"> 4150</span>&#160;</div><div class="line"><a name="l04151"></a><span class="lineno"><a class="line" href="group__Actions.html#gaa182f6de943295062748ab42e64c9203"> 4151</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__Actions.html#gaa182f6de943295062748ab42e64c9203">CWallet::GetAllReserveKeys</a>(std::set&lt;CKeyID&gt;&amp; setAddress)<span class="keyword"> const</span></div><div class="line"><a name="l04152"></a><span class="lineno"> 4152</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l04153"></a><span class="lineno"> 4153</span>&#160; setAddress.clear();</div><div class="line"><a name="l04154"></a><span class="lineno"> 4154</span>&#160;</div><div class="line"><a name="l04155"></a><span class="lineno"> 4155</span>&#160; <a class="code" href="classCWalletDB.html">CWalletDB</a> walletdb(strWalletFile);</div><div class="line"><a name="l04156"></a><span class="lineno"> 4156</span>&#160;</div><div class="line"><a name="l04157"></a><span class="lineno"> 4157</span>&#160; <a class="code" href="sync_8h.html#a35644e2b75a93da0cb0f6c768f34efa8">LOCK2</a>(<a class="code" href="validation_8cpp.html#a1ed8285f0fe3c6799c53265ce72552c8">cs_main</a>, cs_wallet);</div><div class="line"><a name="l04158"></a><span class="lineno"> 4158</span>&#160; <a class="code" href="group__Actions.html#ga97f8f562396b32b8e6ee78476087e1b2">LoadReserveKeysToSet</a>(setAddress, setInternalKeyPool, walletdb);</div><div class="line"><a name="l04159"></a><span class="lineno"> 4159</span>&#160; <a class="code" href="group__Actions.html#ga97f8f562396b32b8e6ee78476087e1b2">LoadReserveKeysToSet</a>(setAddress, setExternalKeyPool, walletdb);</div><div class="line"><a name="l04160"></a><span class="lineno"> 4160</span>&#160;</div><div class="line"><a name="l04161"></a><span class="lineno"> 4161</span>&#160; BOOST_FOREACH (<span class="keyword">const</span> <a class="code" href="classCKeyID.html">CKeyID</a>&amp; keyID, setAddress) {</div><div class="line"><a name="l04162"></a><span class="lineno"> 4162</span>&#160; <span class="keywordflow">if</span> (!HaveKey(keyID)) {</div><div class="line"><a name="l04163"></a><span class="lineno"> 4163</span>&#160; <span class="keywordflow">throw</span> std::runtime_error(std::string(__func__) + <span class="stringliteral">&quot;: unknown key in key pool&quot;</span>);</div><div class="line"><a name="l04164"></a><span class="lineno"> 4164</span>&#160; }</div><div class="line"><a name="l04165"></a><span class="lineno"> 4165</span>&#160; }</div><div class="line"><a name="l04166"></a><span class="lineno"> 4166</span>&#160;}</div><div class="line"><a name="l04167"></a><span class="lineno"> 4167</span>&#160;</div><div class="line"><a name="l04168"></a><span class="lineno"><a class="line" href="group__Actions.html#ga96a5b2321f27270c5959bc697cca9c9a"> 4168</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__Actions.html#ga96a5b2321f27270c5959bc697cca9c9a">CWallet::UpdatedTransaction</a>(<span class="keyword">const</span> <a class="code" href="classuint256.html">uint256</a> &amp;hashTx)</div><div class="line"><a name="l04169"></a><span class="lineno"> 4169</span>&#160;{</div><div class="line"><a name="l04170"></a><span class="lineno"> 4170</span>&#160; {</div><div class="line"><a name="l04171"></a><span class="lineno"> 4171</span>&#160; <a class="code" href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a>(cs_wallet);</div><div class="line"><a name="l04172"></a><span class="lineno"> 4172</span>&#160; <span class="comment">// Only notify UI if this transaction is in this wallet</span></div><div class="line"><a name="l04173"></a><span class="lineno"> 4173</span>&#160; map&lt;uint256, CWalletTx&gt;::const_iterator mi = mapWallet.find(hashTx);</div><div class="line"><a name="l04174"></a><span class="lineno"> 4174</span>&#160; <span class="keywordflow">if</span> (mi != mapWallet.end()){</div><div class="line"><a name="l04175"></a><span class="lineno"> 4175</span>&#160; <a class="code" href="transactiontablemodel_8cpp.html#a07e9dfe08b758569cb80c2558979c164">NotifyTransactionChanged</a>(<span class="keyword">this</span>, hashTx, <a class="code" href="ui__interface_8h.html#a293ba931937e469a6327b8d6b4872969a5ab4035117df6ed11f4f5cd2f2d732e5">CT_UPDATED</a>);</div><div class="line"><a name="l04176"></a><span class="lineno"> 4176</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l04177"></a><span class="lineno"> 4177</span>&#160; }</div><div class="line"><a name="l04178"></a><span class="lineno"> 4178</span>&#160; }</div><div class="line"><a name="l04179"></a><span class="lineno"> 4179</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l04180"></a><span class="lineno"> 4180</span>&#160;}</div><div class="line"><a name="l04181"></a><span class="lineno"> 4181</span>&#160;</div><div class="line"><a name="l04182"></a><span class="lineno"><a class="line" href="group__Actions.html#ga8852ef2cc66e3bde80ec026058023a50"> 4182</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__Actions.html#ga8852ef2cc66e3bde80ec026058023a50">CWallet::GetScriptForMining</a>(boost::shared_ptr&lt;CReserveScript&gt; &amp;script)</div><div class="line"><a name="l04183"></a><span class="lineno"> 4183</span>&#160;{</div><div class="line"><a name="l04184"></a><span class="lineno"> 4184</span>&#160; boost::shared_ptr&lt;CReserveKey&gt; rKey(<span class="keyword">new</span> <a class="code" href="classCReserveKey.html">CReserveKey</a>(<span class="keyword">this</span>));</div><div class="line"><a name="l04185"></a><span class="lineno"> 4185</span>&#160; <a class="code" href="classCPubKey.html">CPubKey</a> pubkey;</div><div class="line"><a name="l04186"></a><span class="lineno"> 4186</span>&#160; <span class="keywordflow">if</span> (!rKey-&gt;GetReservedKey(pubkey, <span class="keyword">false</span>))</div><div class="line"><a name="l04187"></a><span class="lineno"> 4187</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l04188"></a><span class="lineno"> 4188</span>&#160;</div><div class="line"><a name="l04189"></a><span class="lineno"> 4189</span>&#160; script = rKey;</div><div class="line"><a name="l04190"></a><span class="lineno"> 4190</span>&#160; script-&gt;reserveScript = <a class="code" href="classCScript.html">CScript</a>() &lt;&lt; <a class="code" href="script_8h.html#a54e10bc63d490dd5d39d245102b81359">ToByteVector</a>(pubkey) &lt;&lt; <a class="code" href="script_8h.html#a63e349a6089a54da9fe09a3d858648bda2c190c5caf052f92d3d9ac31a0d96151">OP_CHECKSIG</a>;</div><div class="line"><a name="l04191"></a><span class="lineno"> 4191</span>&#160;}</div><div class="line"><a name="l04192"></a><span class="lineno"> 4192</span>&#160;</div><div class="line"><a name="l04193"></a><span class="lineno"><a class="line" href="group__Actions.html#ga2be3aa26d84c79bdcabb41c6b3fe0e0f"> 4193</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__Actions.html#ga2be3aa26d84c79bdcabb41c6b3fe0e0f">CWallet::LockCoin</a>(<a class="code" href="classCOutPoint.html">COutPoint</a>&amp; output)</div><div class="line"><a name="l04194"></a><span class="lineno"> 4194</span>&#160;{</div><div class="line"><a name="l04195"></a><span class="lineno"> 4195</span>&#160; <a class="code" href="sync_8h.html#acd61d0cb3b49f367728193720014aed0">AssertLockHeld</a>(cs_wallet); <span class="comment">// setLockedCoins</span></div><div class="line"><a name="l04196"></a><span class="lineno"> 4196</span>&#160; setLockedCoins.insert(output);</div><div class="line"><a name="l04197"></a><span class="lineno"> 4197</span>&#160; std::map&lt;uint256, CWalletTx&gt;::iterator it = mapWallet.find(output.<a class="code" href="classCOutPoint.html#af131c7194a660558b0ff158f4efa7a28">hash</a>);</div><div class="line"><a name="l04198"></a><span class="lineno"> 4198</span>&#160; <span class="keywordflow">if</span> (it != mapWallet.end()) it-&gt;second.MarkDirty(); <span class="comment">// recalculate all credits for this tx</span></div><div class="line"><a name="l04199"></a><span class="lineno"> 4199</span>&#160;</div><div class="line"><a name="l04200"></a><span class="lineno"> 4200</span>&#160; fAnonymizableTallyCached = <span class="keyword">false</span>;</div><div class="line"><a name="l04201"></a><span class="lineno"> 4201</span>&#160; fAnonymizableTallyCachedNonDenom = <span class="keyword">false</span>;</div><div class="line"><a name="l04202"></a><span class="lineno"> 4202</span>&#160;}</div><div class="line"><a name="l04203"></a><span class="lineno"> 4203</span>&#160;</div><div class="line"><a name="l04204"></a><span class="lineno"><a class="line" href="group__Actions.html#gabd60f5b890e2c62c05c6a2de6322197f"> 4204</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__Actions.html#gabd60f5b890e2c62c05c6a2de6322197f">CWallet::UnlockCoin</a>(<a class="code" href="classCOutPoint.html">COutPoint</a>&amp; output)</div><div class="line"><a name="l04205"></a><span class="lineno"> 4205</span>&#160;{</div><div class="line"><a name="l04206"></a><span class="lineno"> 4206</span>&#160; <a class="code" href="sync_8h.html#acd61d0cb3b49f367728193720014aed0">AssertLockHeld</a>(cs_wallet); <span class="comment">// setLockedCoins</span></div><div class="line"><a name="l04207"></a><span class="lineno"> 4207</span>&#160; setLockedCoins.erase(output);</div><div class="line"><a name="l04208"></a><span class="lineno"> 4208</span>&#160; std::map&lt;uint256, CWalletTx&gt;::iterator it = mapWallet.find(output.<a class="code" href="classCOutPoint.html#af131c7194a660558b0ff158f4efa7a28">hash</a>);</div><div class="line"><a name="l04209"></a><span class="lineno"> 4209</span>&#160; <span class="keywordflow">if</span> (it != mapWallet.end()) it-&gt;second.MarkDirty(); <span class="comment">// recalculate all credits for this tx</span></div><div class="line"><a name="l04210"></a><span class="lineno"> 4210</span>&#160;</div><div class="line"><a name="l04211"></a><span class="lineno"> 4211</span>&#160; fAnonymizableTallyCached = <span class="keyword">false</span>;</div><div class="line"><a name="l04212"></a><span class="lineno"> 4212</span>&#160; fAnonymizableTallyCachedNonDenom = <span class="keyword">false</span>;</div><div class="line"><a name="l04213"></a><span class="lineno"> 4213</span>&#160;}</div><div class="line"><a name="l04214"></a><span class="lineno"> 4214</span>&#160;</div><div class="line"><a name="l04215"></a><span class="lineno"><a class="line" href="group__Actions.html#gab51d80d53bc30799dd6888868a553963"> 4215</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__Actions.html#gab51d80d53bc30799dd6888868a553963">CWallet::UnlockAllCoins</a>()</div><div class="line"><a name="l04216"></a><span class="lineno"> 4216</span>&#160;{</div><div class="line"><a name="l04217"></a><span class="lineno"> 4217</span>&#160; <a class="code" href="sync_8h.html#acd61d0cb3b49f367728193720014aed0">AssertLockHeld</a>(cs_wallet); <span class="comment">// setLockedCoins</span></div><div class="line"><a name="l04218"></a><span class="lineno"> 4218</span>&#160; setLockedCoins.clear();</div><div class="line"><a name="l04219"></a><span class="lineno"> 4219</span>&#160;}</div><div class="line"><a name="l04220"></a><span class="lineno"> 4220</span>&#160;</div><div class="line"><a name="l04221"></a><span class="lineno"><a class="line" href="group__Actions.html#ga58abc6e61537f10bfb9429587ed29074"> 4221</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="group__Actions.html#ga58abc6e61537f10bfb9429587ed29074">CWallet::IsLockedCoin</a>(<a class="code" href="classuint256.html">uint256</a> hash, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a>)<span class="keyword"> const</span></div><div class="line"><a name="l04222"></a><span class="lineno"> 4222</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l04223"></a><span class="lineno"> 4223</span>&#160; <a class="code" href="sync_8h.html#acd61d0cb3b49f367728193720014aed0">AssertLockHeld</a>(cs_wallet); <span class="comment">// setLockedCoins</span></div><div class="line"><a name="l04224"></a><span class="lineno"> 4224</span>&#160; <a class="code" href="classCOutPoint.html">COutPoint</a> outpt(hash, <a class="code" href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">n</a>);</div><div class="line"><a name="l04225"></a><span class="lineno"> 4225</span>&#160;</div><div class="line"><a name="l04226"></a><span class="lineno"> 4226</span>&#160; <span class="keywordflow">return</span> (setLockedCoins.count(outpt) &gt; 0);</div><div class="line"><a name="l04227"></a><span class="lineno"> 4227</span>&#160;}</div><div class="line"><a name="l04228"></a><span class="lineno"> 4228</span>&#160;</div><div class="line"><a name="l04229"></a><span class="lineno"><a class="line" href="group__Actions.html#ga41f4c77a0843692388f8b11d5fb88042"> 4229</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="group__Actions.html#ga41f4c77a0843692388f8b11d5fb88042">CWallet::ListLockedCoins</a>(std::vector&lt;COutPoint&gt;&amp; vOutpts)</div><div class="line"><a name="l04230"></a><span class="lineno"> 4230</span>&#160;{</div><div class="line"><a name="l04231"></a><span class="lineno"> 4231</span>&#160; <a class="code" href="sync_8h.html#acd61d0cb3b49f367728193720014aed0">AssertLockHeld</a>(cs_wallet); <span class="comment">// setLockedCoins</span></div><div class="line"><a name="l04232"></a><span class="lineno"> 4232</span>&#160; <span class="keywordflow">for</span> (std::set&lt;COutPoint&gt;::iterator it = setLockedCoins.begin();</div><div class="line"><a name="l04233"></a><span class="lineno"> 4233</span>&#160; it != setLockedCoins.end(); it++) {</div><div class="line"><a name="l04234"></a><span class="lineno"> 4234</span>&#160; <a class="code" href="classCOutPoint.html">COutPoint</a> outpt = (*it);</div><div class="line"><a name="l04235"></a><span class="lineno"> 4235</span>&#160; vOutpts.push_back(outpt);</div><div class="line"><a name="l04236"></a><span class="lineno"> 4236</span>&#160; }</div><div class="line"><a name="l04237"></a><span class="lineno"> 4237</span>&#160;}</div><div class="line"><a name="l04238"></a><span class="lineno"> 4238</span>&#160; <span class="comment">// end of Actions</span></div><div class="line"><a name="l04240"></a><span class="lineno"> 4240</span>&#160;</div><div class="line"><a name="l04241"></a><span class="lineno"><a class="line" href="classCAffectedKeysVisitor.html"> 4241</a></span>&#160;<span class="keyword">class </span><a class="code" href="classCAffectedKeysVisitor.html">CAffectedKeysVisitor</a> : <span class="keyword">public</span> boost::static_visitor&lt;void&gt; {</div><div class="line"><a name="l04242"></a><span class="lineno"> 4242</span>&#160;<span class="keyword">private</span>:</div><div class="line"><a name="l04243"></a><span class="lineno"><a class="line" href="classCAffectedKeysVisitor.html#abb0976a06c3d2333836afad67aaf5053"> 4243</a></span>&#160; <span class="keyword">const</span> <a class="code" href="classCKeyStore.html">CKeyStore</a> &amp;<a class="code" href="classCAffectedKeysVisitor.html#abb0976a06c3d2333836afad67aaf5053">keystore</a>;</div><div class="line"><a name="l04244"></a><span class="lineno"><a class="line" href="classCAffectedKeysVisitor.html#ab4064a4624c9aa2ed604cad1b2b29031"> 4244</a></span>&#160; std::vector&lt;CKeyID&gt; &amp;<a class="code" href="classCAffectedKeysVisitor.html#ab4064a4624c9aa2ed604cad1b2b29031">vKeys</a>;</div><div class="line"><a name="l04245"></a><span class="lineno"> 4245</span>&#160;</div><div class="line"><a name="l04246"></a><span class="lineno"> 4246</span>&#160;<span class="keyword">public</span>:</div><div class="line"><a name="l04247"></a><span class="lineno"><a class="line" href="classCAffectedKeysVisitor.html#a97f7f932abb21ae791993a284183ab89"> 4247</a></span>&#160; <a class="code" href="classCAffectedKeysVisitor.html#a97f7f932abb21ae791993a284183ab89">CAffectedKeysVisitor</a>(<span class="keyword">const</span> <a class="code" href="classCKeyStore.html">CKeyStore</a> &amp;keystoreIn, std::vector&lt;CKeyID&gt; &amp;vKeysIn) : keystore(keystoreIn), vKeys(vKeysIn) {}</div><div class="line"><a name="l04248"></a><span class="lineno"> 4248</span>&#160;</div><div class="line"><a name="l04249"></a><span class="lineno"><a class="line" href="classCAffectedKeysVisitor.html#a749859ce2a826e2d60c8fe31685efae3"> 4249</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classCAffectedKeysVisitor.html#a749859ce2a826e2d60c8fe31685efae3">Process</a>(<span class="keyword">const</span> <a class="code" href="classCScript.html">CScript</a> &amp;script) {</div><div class="line"><a name="l04250"></a><span class="lineno"> 4250</span>&#160; <a class="code" href="standard_8h.html#a750f89f617f934820d5371be790e09ad">txnouttype</a> type;</div><div class="line"><a name="l04251"></a><span class="lineno"> 4251</span>&#160; std::vector&lt;CTxDestination&gt; vDest;</div><div class="line"><a name="l04252"></a><span class="lineno"> 4252</span>&#160; <span class="keywordtype">int</span> nRequired;</div><div class="line"><a name="l04253"></a><span class="lineno"> 4253</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="standard_8cpp.html#a6948ee6aa422ed8a5ffe06ddc77a55d8">ExtractDestinations</a>(script, type, vDest, nRequired)) {</div><div class="line"><a name="l04254"></a><span class="lineno"> 4254</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="standard_8h.html#a50f712c3d9a0d2f85ae464497dd9cff8">CTxDestination</a> &amp;dest, vDest)</div><div class="line"><a name="l04255"></a><span class="lineno"> 4255</span>&#160; boost::apply_visitor(*<span class="keyword">this</span>, dest);</div><div class="line"><a name="l04256"></a><span class="lineno"> 4256</span>&#160; }</div><div class="line"><a name="l04257"></a><span class="lineno"> 4257</span>&#160; }</div><div class="line"><a name="l04258"></a><span class="lineno"> 4258</span>&#160;</div><div class="line"><a name="l04259"></a><span class="lineno"><a class="line" href="classCAffectedKeysVisitor.html#abc13269c85eb964555cfe23c60b8c9b1"> 4259</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classCAffectedKeysVisitor.html#abc13269c85eb964555cfe23c60b8c9b1">operator()</a>(<span class="keyword">const</span> <a class="code" href="classCKeyID.html">CKeyID</a> &amp;keyId) {</div><div class="line"><a name="l04260"></a><span class="lineno"> 4260</span>&#160; <span class="keywordflow">if</span> (keystore.<a class="code" href="classCKeyStore.html#a9398451d4270fae27b29f686a9d43a65">HaveKey</a>(keyId))</div><div class="line"><a name="l04261"></a><span class="lineno"> 4261</span>&#160; vKeys.push_back(keyId);</div><div class="line"><a name="l04262"></a><span class="lineno"> 4262</span>&#160; }</div><div class="line"><a name="l04263"></a><span class="lineno"> 4263</span>&#160;</div><div class="line"><a name="l04264"></a><span class="lineno"><a class="line" href="classCAffectedKeysVisitor.html#a01b52c5a4311ae3985d1e5753e033215"> 4264</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classCAffectedKeysVisitor.html#a01b52c5a4311ae3985d1e5753e033215">operator()</a>(<span class="keyword">const</span> <a class="code" href="classCScriptID.html">CScriptID</a> &amp;scriptId) {</div><div class="line"><a name="l04265"></a><span class="lineno"> 4265</span>&#160; <a class="code" href="classCScript.html">CScript</a> script;</div><div class="line"><a name="l04266"></a><span class="lineno"> 4266</span>&#160; <span class="keywordflow">if</span> (keystore.<a class="code" href="classCKeyStore.html#ae6bf4dbeb0705e199250e48aa5d34264">GetCScript</a>(scriptId, script))</div><div class="line"><a name="l04267"></a><span class="lineno"> 4267</span>&#160; Process(script);</div><div class="line"><a name="l04268"></a><span class="lineno"> 4268</span>&#160; }</div><div class="line"><a name="l04269"></a><span class="lineno"> 4269</span>&#160;</div><div class="line"><a name="l04270"></a><span class="lineno"><a class="line" href="classCAffectedKeysVisitor.html#abeff400fed1ba87283930538f9164640"> 4270</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classCAffectedKeysVisitor.html#abeff400fed1ba87283930538f9164640">operator()</a>(<span class="keyword">const</span> <a class="code" href="classCNoDestination.html">CNoDestination</a> &amp;none) {}</div><div class="line"><a name="l04271"></a><span class="lineno"> 4271</span>&#160;};</div><div class="line"><a name="l04272"></a><span class="lineno"> 4272</span>&#160;</div><div class="line"><a name="l04273"></a><span class="lineno"><a class="line" href="classCWallet.html#acb2fdaf647fa2d812d58e998848e681d"> 4273</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="classCWallet.html#acb2fdaf647fa2d812d58e998848e681d">CWallet::GetKeyBirthTimes</a>(std::map&lt;CKeyID, int64_t&gt; &amp;mapKeyBirth)<span class="keyword"> const </span>{</div><div class="line"><a name="l04274"></a><span class="lineno"> 4274</span>&#160; <a class="code" href="sync_8h.html#acd61d0cb3b49f367728193720014aed0">AssertLockHeld</a>(cs_wallet); <span class="comment">// mapKeyMetadata</span></div><div class="line"><a name="l04275"></a><span class="lineno"> 4275</span>&#160; mapKeyBirth.clear();</div><div class="line"><a name="l04276"></a><span class="lineno"> 4276</span>&#160;</div><div class="line"><a name="l04277"></a><span class="lineno"> 4277</span>&#160; <span class="comment">// get birth times for keys with metadata</span></div><div class="line"><a name="l04278"></a><span class="lineno"> 4278</span>&#160; <span class="keywordflow">for</span> (std::map&lt;CKeyID, CKeyMetadata&gt;::const_iterator it = mapKeyMetadata.begin(); it != mapKeyMetadata.end(); it++)</div><div class="line"><a name="l04279"></a><span class="lineno"> 4279</span>&#160; <span class="keywordflow">if</span> (it-&gt;second.nCreateTime)</div><div class="line"><a name="l04280"></a><span class="lineno"> 4280</span>&#160; mapKeyBirth[it-&gt;first] = it-&gt;second.nCreateTime;</div><div class="line"><a name="l04281"></a><span class="lineno"> 4281</span>&#160;</div><div class="line"><a name="l04282"></a><span class="lineno"> 4282</span>&#160; <span class="comment">// map in which we&#39;ll infer heights of other keys</span></div><div class="line"><a name="l04283"></a><span class="lineno"> 4283</span>&#160; <a class="code" href="classCBlockIndex.html">CBlockIndex</a> *pindexMax = <a class="code" href="validation_8cpp.html#adb31995c443ae2aef1d2f1c350de0419">chainActive</a>[std::max(0, <a class="code" href="validation_8cpp.html#adb31995c443ae2aef1d2f1c350de0419">chainActive</a>.<a class="code" href="classCChain.html#ad4758bc8872ce065a9579f77c3171d40">Height</a>() - 144)]; <span class="comment">// the tip can be reorganised; use a 144-block safety margin</span></div><div class="line"><a name="l04284"></a><span class="lineno"> 4284</span>&#160; std::map&lt;CKeyID, CBlockIndex*&gt; mapKeyFirstBlock;</div><div class="line"><a name="l04285"></a><span class="lineno"> 4285</span>&#160; std::set&lt;CKeyID&gt; setKeys;</div><div class="line"><a name="l04286"></a><span class="lineno"> 4286</span>&#160; GetKeys(setKeys);</div><div class="line"><a name="l04287"></a><span class="lineno"> 4287</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="classCKeyID.html">CKeyID</a> &amp;keyid, setKeys) {</div><div class="line"><a name="l04288"></a><span class="lineno"> 4288</span>&#160; <span class="keywordflow">if</span> (mapKeyBirth.count(keyid) == 0)</div><div class="line"><a name="l04289"></a><span class="lineno"> 4289</span>&#160; mapKeyFirstBlock[keyid] = pindexMax;</div><div class="line"><a name="l04290"></a><span class="lineno"> 4290</span>&#160; }</div><div class="line"><a name="l04291"></a><span class="lineno"> 4291</span>&#160; setKeys.clear();</div><div class="line"><a name="l04292"></a><span class="lineno"> 4292</span>&#160;</div><div class="line"><a name="l04293"></a><span class="lineno"> 4293</span>&#160; <span class="comment">// if there are no such keys, we&#39;re done</span></div><div class="line"><a name="l04294"></a><span class="lineno"> 4294</span>&#160; <span class="keywordflow">if</span> (mapKeyFirstBlock.empty())</div><div class="line"><a name="l04295"></a><span class="lineno"> 4295</span>&#160; <span class="keywordflow">return</span>;</div><div class="line"><a name="l04296"></a><span class="lineno"> 4296</span>&#160;</div><div class="line"><a name="l04297"></a><span class="lineno"> 4297</span>&#160; <span class="comment">// find first block that affects those keys, if there are any left</span></div><div class="line"><a name="l04298"></a><span class="lineno"> 4298</span>&#160; std::vector&lt;CKeyID&gt; vAffected;</div><div class="line"><a name="l04299"></a><span class="lineno"> 4299</span>&#160; <span class="keywordflow">for</span> (std::map&lt;uint256, CWalletTx&gt;::const_iterator it = mapWallet.begin(); it != mapWallet.end(); it++) {</div><div class="line"><a name="l04300"></a><span class="lineno"> 4300</span>&#160; <span class="comment">// iterate over all wallet transactions...</span></div><div class="line"><a name="l04301"></a><span class="lineno"> 4301</span>&#160; <span class="keyword">const</span> <a class="code" href="classCWalletTx.html">CWalletTx</a> &amp;wtx = (*it).second;</div><div class="line"><a name="l04302"></a><span class="lineno"> 4302</span>&#160; BlockMap::const_iterator blit = <a class="code" href="validation_8cpp.html#a887b8e9f9fea0ea870c6987f1fd52eb6">mapBlockIndex</a>.find(wtx.<a class="code" href="classCMerkleTx.html#a788ee54c14b6d9706eb3737404663238">hashBlock</a>);</div><div class="line"><a name="l04303"></a><span class="lineno"> 4303</span>&#160; <span class="keywordflow">if</span> (blit != <a class="code" href="validation_8cpp.html#a887b8e9f9fea0ea870c6987f1fd52eb6">mapBlockIndex</a>.end() &amp;&amp; <a class="code" href="validation_8cpp.html#adb31995c443ae2aef1d2f1c350de0419">chainActive</a>.<a class="code" href="classCChain.html#af1786dc229c215dea7f727c11df2c8dc">Contains</a>(blit-&gt;second)) {</div><div class="line"><a name="l04304"></a><span class="lineno"> 4304</span>&#160; <span class="comment">// ... which are already in a block</span></div><div class="line"><a name="l04305"></a><span class="lineno"> 4305</span>&#160; <span class="keywordtype">int</span> nHeight = blit-&gt;second-&gt;nHeight;</div><div class="line"><a name="l04306"></a><span class="lineno"> 4306</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="classCTxOut.html">CTxOut</a> &amp;txout, wtx.<a class="code" href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">vout</a>) {</div><div class="line"><a name="l04307"></a><span class="lineno"> 4307</span>&#160; <span class="comment">// iterate over all their outputs</span></div><div class="line"><a name="l04308"></a><span class="lineno"> 4308</span>&#160; <a class="code" href="classCAffectedKeysVisitor.html">CAffectedKeysVisitor</a>(*<span class="keyword">this</span>, vAffected).<a class="code" href="classCAffectedKeysVisitor.html#a749859ce2a826e2d60c8fe31685efae3">Process</a>(txout.<a class="code" href="classCTxOut.html#a25bf3f2f4befb22a6a0be45784fe57e2">scriptPubKey</a>);</div><div class="line"><a name="l04309"></a><span class="lineno"> 4309</span>&#160; BOOST_FOREACH(<span class="keyword">const</span> <a class="code" href="classCKeyID.html">CKeyID</a> &amp;keyid, vAffected) {</div><div class="line"><a name="l04310"></a><span class="lineno"> 4310</span>&#160; <span class="comment">// ... and all their affected keys</span></div><div class="line"><a name="l04311"></a><span class="lineno"> 4311</span>&#160; std::map&lt;CKeyID, CBlockIndex*&gt;::iterator rit = mapKeyFirstBlock.find(keyid);</div><div class="line"><a name="l04312"></a><span class="lineno"> 4312</span>&#160; <span class="keywordflow">if</span> (rit != mapKeyFirstBlock.end() &amp;&amp; nHeight &lt; rit-&gt;second-&gt;nHeight)</div><div class="line"><a name="l04313"></a><span class="lineno"> 4313</span>&#160; rit-&gt;second = blit-&gt;second;</div><div class="line"><a name="l04314"></a><span class="lineno"> 4314</span>&#160; }</div><div class="line"><a name="l04315"></a><span class="lineno"> 4315</span>&#160; vAffected.clear();</div><div class="line"><a name="l04316"></a><span class="lineno"> 4316</span>&#160; }</div><div class="line"><a name="l04317"></a><span class="lineno"> 4317</span>&#160; }</div><div class="line"><a name="l04318"></a><span class="lineno"> 4318</span>&#160; }</div><div class="line"><a name="l04319"></a><span class="lineno"> 4319</span>&#160;</div><div class="line"><a name="l04320"></a><span class="lineno"> 4320</span>&#160; <span class="comment">// Extract block timestamps for those keys</span></div><div class="line"><a name="l04321"></a><span class="lineno"> 4321</span>&#160; <span class="keywordflow">for</span> (std::map&lt;CKeyID, CBlockIndex*&gt;::const_iterator it = mapKeyFirstBlock.begin(); it != mapKeyFirstBlock.end(); it++)</div><div class="line"><a name="l04322"></a><span class="lineno"> 4322</span>&#160; mapKeyBirth[it-&gt;first] = it-&gt;second-&gt;GetBlockTime() - 7200; <span class="comment">// block times can be 2h off</span></div><div class="line"><a name="l04323"></a><span class="lineno"> 4323</span>&#160;}</div><div class="line"><a name="l04324"></a><span class="lineno"> 4324</span>&#160;</div><div class="line"><a name="l04325"></a><span class="lineno"><a class="line" href="classCWallet.html#acbeae89a10e129930e5059d9167697e5"> 4325</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classCWallet.html#acbeae89a10e129930e5059d9167697e5">CWallet::AddDestData</a>(<span class="keyword">const</span> <a class="code" href="standard_8h.html#a50f712c3d9a0d2f85ae464497dd9cff8">CTxDestination</a> &amp;dest, <span class="keyword">const</span> std::string &amp;<a class="code" href="namespaceextract__strings__qt.html#a1b7a78cde0039f63310f11692b713dca">key</a>, <span class="keyword">const</span> std::string &amp;value)</div><div class="line"><a name="l04326"></a><span class="lineno"> 4326</span>&#160;{</div><div class="line"><a name="l04327"></a><span class="lineno"> 4327</span>&#160; <span class="keywordflow">if</span> (boost::get&lt;CNoDestination&gt;(&amp;dest))</div><div class="line"><a name="l04328"></a><span class="lineno"> 4328</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l04329"></a><span class="lineno"> 4329</span>&#160;</div><div class="line"><a name="l04330"></a><span class="lineno"> 4330</span>&#160; mapAddressBook[dest].destdata.insert(std::make_pair(<a class="code" href="namespaceextract__strings__qt.html#a1b7a78cde0039f63310f11692b713dca">key</a>, value));</div><div class="line"><a name="l04331"></a><span class="lineno"> 4331</span>&#160; <span class="keywordflow">if</span> (!fFileBacked)</div><div class="line"><a name="l04332"></a><span class="lineno"> 4332</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l04333"></a><span class="lineno"> 4333</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classCWalletDB.html">CWalletDB</a>(strWalletFile).<a class="code" href="classCWalletDB.html#af0de4949373dc3f0063db673fd8b24aa">WriteDestData</a>(<a class="code" href="classCBitcoinAddress.html">CBitcoinAddress</a>(dest).ToString(), <a class="code" href="namespaceextract__strings__qt.html#a1b7a78cde0039f63310f11692b713dca">key</a>, value);</div><div class="line"><a name="l04334"></a><span class="lineno"> 4334</span>&#160;}</div><div class="line"><a name="l04335"></a><span class="lineno"> 4335</span>&#160;</div><div class="line"><a name="l04336"></a><span class="lineno"><a class="line" href="classCWallet.html#a9a03cf9972842588178387839f0ded3c"> 4336</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classCWallet.html#a9a03cf9972842588178387839f0ded3c">CWallet::EraseDestData</a>(<span class="keyword">const</span> <a class="code" href="standard_8h.html#a50f712c3d9a0d2f85ae464497dd9cff8">CTxDestination</a> &amp;dest, <span class="keyword">const</span> std::string &amp;<a class="code" href="namespaceextract__strings__qt.html#a1b7a78cde0039f63310f11692b713dca">key</a>)</div><div class="line"><a name="l04337"></a><span class="lineno"> 4337</span>&#160;{</div><div class="line"><a name="l04338"></a><span class="lineno"> 4338</span>&#160; <span class="keywordflow">if</span> (!mapAddressBook[dest].destdata.erase(<a class="code" href="namespaceextract__strings__qt.html#a1b7a78cde0039f63310f11692b713dca">key</a>))</div><div class="line"><a name="l04339"></a><span class="lineno"> 4339</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l04340"></a><span class="lineno"> 4340</span>&#160; <span class="keywordflow">if</span> (!fFileBacked)</div><div class="line"><a name="l04341"></a><span class="lineno"> 4341</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l04342"></a><span class="lineno"> 4342</span>&#160; <span class="keywordflow">return</span> <a class="code" href="classCWalletDB.html">CWalletDB</a>(strWalletFile).<a class="code" href="classCWalletDB.html#a0403a98efe565020f8804eefbc808d90">EraseDestData</a>(<a class="code" href="classCBitcoinAddress.html">CBitcoinAddress</a>(dest).ToString(), <a class="code" href="namespaceextract__strings__qt.html#a1b7a78cde0039f63310f11692b713dca">key</a>);</div><div class="line"><a name="l04343"></a><span class="lineno"> 4343</span>&#160;}</div><div class="line"><a name="l04344"></a><span class="lineno"> 4344</span>&#160;</div><div class="line"><a name="l04345"></a><span class="lineno"><a class="line" href="classCWallet.html#a0d78de06c0b02f773b7ecbb21d42aada"> 4345</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classCWallet.html#a0d78de06c0b02f773b7ecbb21d42aada">CWallet::LoadDestData</a>(<span class="keyword">const</span> <a class="code" href="standard_8h.html#a50f712c3d9a0d2f85ae464497dd9cff8">CTxDestination</a> &amp;dest, <span class="keyword">const</span> std::string &amp;<a class="code" href="namespaceextract__strings__qt.html#a1b7a78cde0039f63310f11692b713dca">key</a>, <span class="keyword">const</span> std::string &amp;value)</div><div class="line"><a name="l04346"></a><span class="lineno"> 4346</span>&#160;{</div><div class="line"><a name="l04347"></a><span class="lineno"> 4347</span>&#160; mapAddressBook[dest].destdata.insert(std::make_pair(<a class="code" href="namespaceextract__strings__qt.html#a1b7a78cde0039f63310f11692b713dca">key</a>, value));</div><div class="line"><a name="l04348"></a><span class="lineno"> 4348</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l04349"></a><span class="lineno"> 4349</span>&#160;}</div><div class="line"><a name="l04350"></a><span class="lineno"> 4350</span>&#160;</div><div class="line"><a name="l04351"></a><span class="lineno"><a class="line" href="classCWallet.html#a8f82359f767da6eadeebd3f5efeed9d0"> 4351</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classCWallet.html#a8f82359f767da6eadeebd3f5efeed9d0">CWallet::GetDestData</a>(<span class="keyword">const</span> <a class="code" href="standard_8h.html#a50f712c3d9a0d2f85ae464497dd9cff8">CTxDestination</a> &amp;dest, <span class="keyword">const</span> std::string &amp;<a class="code" href="namespaceextract__strings__qt.html#a1b7a78cde0039f63310f11692b713dca">key</a>, std::string *value)<span class="keyword"> const</span></div><div class="line"><a name="l04352"></a><span class="lineno"> 4352</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l04353"></a><span class="lineno"> 4353</span>&#160; std::map&lt;CTxDestination, CAddressBookData&gt;::const_iterator i = mapAddressBook.find(dest);</div><div class="line"><a name="l04354"></a><span class="lineno"> 4354</span>&#160; <span class="keywordflow">if</span>(i != mapAddressBook.end())</div><div class="line"><a name="l04355"></a><span class="lineno"> 4355</span>&#160; {</div><div class="line"><a name="l04356"></a><span class="lineno"> 4356</span>&#160; CAddressBookData::StringMap::const_iterator j = i-&gt;second.destdata.find(<a class="code" href="namespaceextract__strings__qt.html#a1b7a78cde0039f63310f11692b713dca">key</a>);</div><div class="line"><a name="l04357"></a><span class="lineno"> 4357</span>&#160; <span class="keywordflow">if</span>(j != i-&gt;second.destdata.end())</div><div class="line"><a name="l04358"></a><span class="lineno"> 4358</span>&#160; {</div><div class="line"><a name="l04359"></a><span class="lineno"> 4359</span>&#160; <span class="keywordflow">if</span>(value)</div><div class="line"><a name="l04360"></a><span class="lineno"> 4360</span>&#160; *value = j-&gt;second;</div><div class="line"><a name="l04361"></a><span class="lineno"> 4361</span>&#160; <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l04362"></a><span class="lineno"> 4362</span>&#160; }</div><div class="line"><a name="l04363"></a><span class="lineno"> 4363</span>&#160; }</div><div class="line"><a name="l04364"></a><span class="lineno"> 4364</span>&#160; <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l04365"></a><span class="lineno"> 4365</span>&#160;}</div><div class="line"><a name="l04366"></a><span class="lineno"> 4366</span>&#160;</div><div class="line"><a name="l04367"></a><span class="lineno"><a class="line" href="classCKeyPool.html#ab1f33489faff7a7e1edbd61a5a18f604"> 4367</a></span>&#160;<a class="code" href="classCKeyPool.html#ab1f33489faff7a7e1edbd61a5a18f604">CKeyPool::CKeyPool</a>()</div><div class="line"><a name="l04368"></a><span class="lineno"> 4368</span>&#160;{</div><div class="line"><a name="l04369"></a><span class="lineno"> 4369</span>&#160; nTime = <a class="code" href="utiltime_8cpp.html#a46fac5fba8ba905b5f9acb364f5d8c6f">GetTime</a>();</div><div class="line"><a name="l04370"></a><span class="lineno"> 4370</span>&#160; fInternal = <span class="keyword">false</span>;</div><div class="line"><a name="l04371"></a><span class="lineno"> 4371</span>&#160;}</div><div class="line"><a name="l04372"></a><span class="lineno"> 4372</span>&#160;</div><div class="line"><a name="l04373"></a><span class="lineno"><a class="line" href="classCKeyPool.html#a1eb528975397329d6bdc7d5f3dbd9548"> 4373</a></span>&#160;<a class="code" href="classCKeyPool.html#ab1f33489faff7a7e1edbd61a5a18f604">CKeyPool::CKeyPool</a>(<span class="keyword">const</span> <a class="code" href="classCPubKey.html">CPubKey</a>&amp; vchPubKeyIn, <span class="keywordtype">bool</span> fInternalIn)</div><div class="line"><a name="l04374"></a><span class="lineno"> 4374</span>&#160;{</div><div class="line"><a name="l04375"></a><span class="lineno"> 4375</span>&#160; nTime = <a class="code" href="utiltime_8cpp.html#a46fac5fba8ba905b5f9acb364f5d8c6f">GetTime</a>();</div><div class="line"><a name="l04376"></a><span class="lineno"> 4376</span>&#160; vchPubKey = vchPubKeyIn;</div><div class="line"><a name="l04377"></a><span class="lineno"> 4377</span>&#160; fInternal = fInternalIn;</div><div class="line"><a name="l04378"></a><span class="lineno"> 4378</span>&#160;}</div><div class="line"><a name="l04379"></a><span class="lineno"> 4379</span>&#160;</div><div class="line"><a name="l04380"></a><span class="lineno"><a class="line" href="classCWalletKey.html#aa2603825b543b1d5153f31482139a6b2"> 4380</a></span>&#160;<a class="code" href="classCWalletKey.html#aa2603825b543b1d5153f31482139a6b2">CWalletKey::CWalletKey</a>(int64_t nExpires)</div><div class="line"><a name="l04381"></a><span class="lineno"> 4381</span>&#160;{</div><div class="line"><a name="l04382"></a><span class="lineno"> 4382</span>&#160; nTimeCreated = (nExpires ? <a class="code" href="utiltime_8cpp.html#a46fac5fba8ba905b5f9acb364f5d8c6f">GetTime</a>() : 0);</div><div class="line"><a name="l04383"></a><span class="lineno"> 4383</span>&#160; nTimeExpires = nExpires;</div><div class="line"><a name="l04384"></a><span class="lineno"> 4384</span>&#160;}</div><div class="line"><a name="l04385"></a><span class="lineno"> 4385</span>&#160;</div><div class="line"><a name="l04386"></a><span class="lineno"><a class="line" href="classCMerkleTx.html#a538ba1b6faedbb447cb45ac7019b6f47"> 4386</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classCMerkleTx.html#a538ba1b6faedbb447cb45ac7019b6f47">CMerkleTx::SetMerkleBranch</a>(<span class="keyword">const</span> <a class="code" href="classCBlock.html">CBlock</a>&amp; block)</div><div class="line"><a name="l04387"></a><span class="lineno"> 4387</span>&#160;{</div><div class="line"><a name="l04388"></a><span class="lineno"> 4388</span>&#160; <a class="code" href="sync_8h.html#acd61d0cb3b49f367728193720014aed0">AssertLockHeld</a>(<a class="code" href="validation_8cpp.html#a1ed8285f0fe3c6799c53265ce72552c8">cs_main</a>);</div><div class="line"><a name="l04389"></a><span class="lineno"> 4389</span>&#160; <a class="code" href="classCBlock.html">CBlock</a> blockTmp;</div><div class="line"><a name="l04390"></a><span class="lineno"> 4390</span>&#160;</div><div class="line"><a name="l04391"></a><span class="lineno"> 4391</span>&#160; <span class="comment">// Update the tx&#39;s hashBlock</span></div><div class="line"><a name="l04392"></a><span class="lineno"> 4392</span>&#160; hashBlock = block.<a class="code" href="classCBlockHeader.html#af0239f86a13f622a826e9eea66b2d7f3">GetHash</a>();</div><div class="line"><a name="l04393"></a><span class="lineno"> 4393</span>&#160;</div><div class="line"><a name="l04394"></a><span class="lineno"> 4394</span>&#160; <span class="comment">// Locate the transaction</span></div><div class="line"><a name="l04395"></a><span class="lineno"> 4395</span>&#160; <span class="keywordflow">for</span> (nIndex = 0; nIndex &lt; (int)block.<a class="code" href="classCBlock.html#a9b6508d662722775f3029b980b382b66">vtx</a>.size(); nIndex++)</div><div class="line"><a name="l04396"></a><span class="lineno"> 4396</span>&#160; <span class="keywordflow">if</span> (block.<a class="code" href="classCBlock.html#a9b6508d662722775f3029b980b382b66">vtx</a>[nIndex] == *(<a class="code" href="classCTransaction.html">CTransaction</a>*)<span class="keyword">this</span>)</div><div class="line"><a name="l04397"></a><span class="lineno"> 4397</span>&#160; <span class="keywordflow">break</span>;</div><div class="line"><a name="l04398"></a><span class="lineno"> 4398</span>&#160; <span class="keywordflow">if</span> (nIndex == (<span class="keywordtype">int</span>)block.<a class="code" href="classCBlock.html#a9b6508d662722775f3029b980b382b66">vtx</a>.size())</div><div class="line"><a name="l04399"></a><span class="lineno"> 4399</span>&#160; {</div><div class="line"><a name="l04400"></a><span class="lineno"> 4400</span>&#160; nIndex = -1;</div><div class="line"><a name="l04401"></a><span class="lineno"> 4401</span>&#160; <a class="code" href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a>(<span class="stringliteral">&quot;ERROR: SetMerkleBranch(): couldn&#39;t find tx in block\n&quot;</span>);</div><div class="line"><a name="l04402"></a><span class="lineno"> 4402</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l04403"></a><span class="lineno"> 4403</span>&#160; }</div><div class="line"><a name="l04404"></a><span class="lineno"> 4404</span>&#160;</div><div class="line"><a name="l04405"></a><span class="lineno"> 4405</span>&#160; <span class="comment">// Is the tx in a block that&#39;s in the main chain</span></div><div class="line"><a name="l04406"></a><span class="lineno"> 4406</span>&#160; BlockMap::iterator mi = <a class="code" href="validation_8cpp.html#a887b8e9f9fea0ea870c6987f1fd52eb6">mapBlockIndex</a>.find(hashBlock);</div><div class="line"><a name="l04407"></a><span class="lineno"> 4407</span>&#160; <span class="keywordflow">if</span> (mi == <a class="code" href="validation_8cpp.html#a887b8e9f9fea0ea870c6987f1fd52eb6">mapBlockIndex</a>.end())</div><div class="line"><a name="l04408"></a><span class="lineno"> 4408</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l04409"></a><span class="lineno"> 4409</span>&#160; <span class="keyword">const</span> <a class="code" href="classCBlockIndex.html">CBlockIndex</a>* pindex = (*mi).second;</div><div class="line"><a name="l04410"></a><span class="lineno"> 4410</span>&#160; <span class="keywordflow">if</span> (!pindex || !<a class="code" href="validation_8cpp.html#adb31995c443ae2aef1d2f1c350de0419">chainActive</a>.<a class="code" href="classCChain.html#af1786dc229c215dea7f727c11df2c8dc">Contains</a>(pindex))</div><div class="line"><a name="l04411"></a><span class="lineno"> 4411</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l04412"></a><span class="lineno"> 4412</span>&#160;</div><div class="line"><a name="l04413"></a><span class="lineno"> 4413</span>&#160; <span class="keywordflow">return</span> <a class="code" href="validation_8cpp.html#adb31995c443ae2aef1d2f1c350de0419">chainActive</a>.<a class="code" href="classCChain.html#ad4758bc8872ce065a9579f77c3171d40">Height</a>() - pindex-&gt;<a class="code" href="classCBlockIndex.html#aebfc8d6b95852546760e742553d7bfd5">nHeight</a> + 1;</div><div class="line"><a name="l04414"></a><span class="lineno"> 4414</span>&#160;}</div><div class="line"><a name="l04415"></a><span class="lineno"> 4415</span>&#160;</div><div class="line"><a name="l04416"></a><span class="lineno"><a class="line" href="classCMerkleTx.html#a5bf3a355593ecce5799de92d013149b1"> 4416</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classCMerkleTx.html#a5bf3a355593ecce5799de92d013149b1">CMerkleTx::GetDepthInMainChain</a>(<span class="keyword">const</span> <a class="code" href="classCBlockIndex.html">CBlockIndex</a>* &amp;pindexRet, <span class="keywordtype">bool</span> enableIX)<span class="keyword"> const</span></div><div class="line"><a name="l04417"></a><span class="lineno"> 4417</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l04418"></a><span class="lineno"> 4418</span>&#160; <span class="keywordtype">int</span> nResult;</div><div class="line"><a name="l04419"></a><span class="lineno"> 4419</span>&#160;</div><div class="line"><a name="l04420"></a><span class="lineno"> 4420</span>&#160; <span class="keywordflow">if</span> (hashUnset())</div><div class="line"><a name="l04421"></a><span class="lineno"> 4421</span>&#160; nResult = 0;</div><div class="line"><a name="l04422"></a><span class="lineno"> 4422</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l04423"></a><span class="lineno"> 4423</span>&#160; <a class="code" href="sync_8h.html#acd61d0cb3b49f367728193720014aed0">AssertLockHeld</a>(<a class="code" href="validation_8cpp.html#a1ed8285f0fe3c6799c53265ce72552c8">cs_main</a>);</div><div class="line"><a name="l04424"></a><span class="lineno"> 4424</span>&#160;</div><div class="line"><a name="l04425"></a><span class="lineno"> 4425</span>&#160; <span class="comment">// Find the block it claims to be in</span></div><div class="line"><a name="l04426"></a><span class="lineno"> 4426</span>&#160; BlockMap::iterator mi = <a class="code" href="validation_8cpp.html#a887b8e9f9fea0ea870c6987f1fd52eb6">mapBlockIndex</a>.find(hashBlock);</div><div class="line"><a name="l04427"></a><span class="lineno"> 4427</span>&#160; <span class="keywordflow">if</span> (mi == <a class="code" href="validation_8cpp.html#a887b8e9f9fea0ea870c6987f1fd52eb6">mapBlockIndex</a>.end())</div><div class="line"><a name="l04428"></a><span class="lineno"> 4428</span>&#160; nResult = 0;</div><div class="line"><a name="l04429"></a><span class="lineno"> 4429</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l04430"></a><span class="lineno"> 4430</span>&#160; <a class="code" href="classCBlockIndex.html">CBlockIndex</a>* pindex = (*mi).second;</div><div class="line"><a name="l04431"></a><span class="lineno"> 4431</span>&#160; <span class="keywordflow">if</span> (!pindex || !<a class="code" href="validation_8cpp.html#adb31995c443ae2aef1d2f1c350de0419">chainActive</a>.<a class="code" href="classCChain.html#af1786dc229c215dea7f727c11df2c8dc">Contains</a>(pindex))</div><div class="line"><a name="l04432"></a><span class="lineno"> 4432</span>&#160; nResult = 0;</div><div class="line"><a name="l04433"></a><span class="lineno"> 4433</span>&#160; <span class="keywordflow">else</span> {</div><div class="line"><a name="l04434"></a><span class="lineno"> 4434</span>&#160; pindexRet = pindex;</div><div class="line"><a name="l04435"></a><span class="lineno"> 4435</span>&#160; nResult = ((nIndex == -1) ? (-1) : 1) * (<a class="code" href="validation_8cpp.html#adb31995c443ae2aef1d2f1c350de0419">chainActive</a>.<a class="code" href="classCChain.html#ad4758bc8872ce065a9579f77c3171d40">Height</a>() - pindex-&gt;<a class="code" href="classCBlockIndex.html#aebfc8d6b95852546760e742553d7bfd5">nHeight</a> + 1);</div><div class="line"><a name="l04436"></a><span class="lineno"> 4436</span>&#160;</div><div class="line"><a name="l04437"></a><span class="lineno"> 4437</span>&#160; <span class="keywordflow">if</span> (nResult == 0 &amp;&amp; !<a class="code" href="instantx_8cpp.html#abc71256f703e47c9254093e32ed2994c">mempool</a>.<a class="code" href="classCTxMemPool.html#a8b7a13b5289ab839d4460f41a7da9789">exists</a>(GetHash()))</div><div class="line"><a name="l04438"></a><span class="lineno"> 4438</span>&#160; <span class="keywordflow">return</span> -1; <span class="comment">// Not in chain, not in mempool</span></div><div class="line"><a name="l04439"></a><span class="lineno"> 4439</span>&#160; }</div><div class="line"><a name="l04440"></a><span class="lineno"> 4440</span>&#160; }</div><div class="line"><a name="l04441"></a><span class="lineno"> 4441</span>&#160; }</div><div class="line"><a name="l04442"></a><span class="lineno"> 4442</span>&#160;</div><div class="line"><a name="l04443"></a><span class="lineno"> 4443</span>&#160; <span class="keywordflow">if</span>(enableIX &amp;&amp; nResult &lt; 6 &amp;&amp; <a class="code" href="instantx_8cpp.html#a6ed4b104bfd9f775e0c0a3524a6b4955">instantsend</a>.<a class="code" href="classCInstantSend.html#a2b5bebbef6c466ee34706eeb9f53d4a7">IsLockedInstantSendTransaction</a>(GetHash()))</div><div class="line"><a name="l04444"></a><span class="lineno"> 4444</span>&#160; <span class="keywordflow">return</span> <a class="code" href="instantx_8cpp.html#a4c2d7f12c40dc0049df471597e124dbe">nInstantSendDepth</a> + nResult;</div><div class="line"><a name="l04445"></a><span class="lineno"> 4445</span>&#160;</div><div class="line"><a name="l04446"></a><span class="lineno"> 4446</span>&#160; <span class="keywordflow">return</span> nResult;</div><div class="line"><a name="l04447"></a><span class="lineno"> 4447</span>&#160;}</div><div class="line"><a name="l04448"></a><span class="lineno"> 4448</span>&#160;</div><div class="line"><a name="l04449"></a><span class="lineno"><a class="line" href="classCMerkleTx.html#a69ebd437f7b44169659c3527fe73b6ab"> 4449</a></span>&#160;<span class="keywordtype">int</span> <a class="code" href="classCMerkleTx.html#a69ebd437f7b44169659c3527fe73b6ab">CMerkleTx::GetBlocksToMaturity</a>()<span class="keyword"> const</span></div><div class="line"><a name="l04450"></a><span class="lineno"> 4450</span>&#160;<span class="keyword"></span>{</div><div class="line"><a name="l04451"></a><span class="lineno"> 4451</span>&#160; <span class="keywordflow">if</span> (!IsCoinBase())</div><div class="line"><a name="l04452"></a><span class="lineno"> 4452</span>&#160; <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l04453"></a><span class="lineno"> 4453</span>&#160; <span class="keywordflow">return</span> max(0, (<a class="code" href="consensus_8h.html#adeaaac740ae92deabb436ab75c835701">COINBASE_MATURITY</a>+1) - GetDepthInMainChain());</div><div class="line"><a name="l04454"></a><span class="lineno"> 4454</span>&#160;}</div><div class="line"><a name="l04455"></a><span class="lineno"> 4455</span>&#160;</div><div class="line"><a name="l04456"></a><span class="lineno"> 4456</span>&#160;</div><div class="line"><a name="l04457"></a><span class="lineno"><a class="line" href="classCMerkleTx.html#a6618a127f7e5597c686cec94c16d0bd8"> 4457</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="classCMerkleTx.html#a6618a127f7e5597c686cec94c16d0bd8">CMerkleTx::AcceptToMemoryPool</a>(<span class="keywordtype">bool</span> fLimitFree, <span class="keywordtype">bool</span> fRejectAbsurdFee)</div><div class="line"><a name="l04458"></a><span class="lineno"> 4458</span>&#160;{</div><div class="line"><a name="l04459"></a><span class="lineno"> 4459</span>&#160; <a class="code" href="classCValidationState.html">CValidationState</a> state;</div><div class="line"><a name="l04460"></a><span class="lineno"> 4460</span>&#160; <a class="code" href="validation_8cpp.html#a9f00dd573bea95cab88337424573f7b2">return ::AcceptToMemoryPool</a>(<a class="code" href="instantx_8cpp.html#abc71256f703e47c9254093e32ed2994c">mempool</a>, state, *<span class="keyword">this</span>, fLimitFree, NULL, <span class="keyword">false</span>, fRejectAbsurdFee);</div><div class="line"><a name="l04461"></a><span class="lineno"> 4461</span>&#160;}</div><div class="ttc" id="classCDBEnv_html_a3b051e81f5cb7d5ba71e2742bb6e47fa"><div class="ttname"><a href="classCDBEnv.html#a3b051e81f5cb7d5ba71e2742bb6e47fa">CDBEnv::Verify</a></div><div class="ttdeci">VerifyResult Verify(const std::string &amp;strFile, bool(*recoverFunc)(CDBEnv &amp;dbenv, const std::string &amp;strFile))</div><div class="ttdef"><b>Definition:</b> <a href="db_8cpp_source.html#l00151">db.cpp:151</a></div></div>
<div class="ttc" id="util_8cpp_html_ab83866a054745d4b30a3948a1b44beba"><div class="ttname"><a href="util_8cpp.html#ab83866a054745d4b30a3948a1b44beba">GetDataDir</a></div><div class="ttdeci">const boost::filesystem::path &amp; GetDataDir(bool fNetSpecific)</div><div class="ttdef"><b>Definition:</b> <a href="util_8cpp_source.html#l00547">util.cpp:547</a></div></div>
<div class="ttc" id="classCWalletDB_html_adaba27cee112077ade5b2e795382cec6"><div class="ttname"><a href="classCWalletDB.html#adaba27cee112077ade5b2e795382cec6">CWalletDB::ErasePurpose</a></div><div class="ttdeci">bool ErasePurpose(const std::string &amp;strAddress)</div><div class="ttdef"><b>Definition:</b> <a href="walletdb_8cpp_source.html#l00052">walletdb.cpp:52</a></div></div>
<div class="ttc" id="classCPrivateSend_html_aa84712b7f8c56b84b5bcbcb8557d06db"><div class="ttname"><a href="classCPrivateSend.html#aa84712b7f8c56b84b5bcbcb8557d06db">CPrivateSend::GetMaxCollateralAmount</a></div><div class="ttdeci">static CAmount GetMaxCollateralAmount()</div><div class="ttdef"><b>Definition:</b> <a href="privatesend_8h_source.html#l00350">privatesend.h:350</a></div></div>
<div class="ttc" id="classCPrivateSendClient_html_a27a53a3758ea1df3533ec1c1ba2a0c5c"><div class="ttname"><a href="classCPrivateSendClient.html#a27a53a3758ea1df3533ec1c1ba2a0c5c">CPrivateSendClient::nPrivateSendAmount</a></div><div class="ttdeci">int nPrivateSendAmount</div><div class="ttdef"><b>Definition:</b> <a href="privatesend-client_8h_source.html#l00105">privatesend-client.h:105</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga176e9ecbafbee27d604acbab9804885d"><div class="ttname"><a href="group__mapWallet.html#ga176e9ecbafbee27d604acbab9804885d">CWalletTx::GetCredit</a></div><div class="ttdeci">CAmount GetCredit(const isminefilter &amp;filter) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01824">wallet.cpp:1824</a></div></div>
<div class="ttc" id="classCOutPoint_html_a1b857e3a0412ff741da2c9f8defe315c"><div class="ttname"><a href="classCOutPoint.html#a1b857e3a0412ff741da2c9f8defe315c">COutPoint::n</a></div><div class="ttdeci">uint32_t n</div><div class="ttdef"><b>Definition:</b> <a href="transaction_8h_source.html#l00019">transaction.h:19</a></div></div>
<div class="ttc" id="classCPrivateSendClient_html_a42277d5f7e91e7952d3b6f031fcd8d18"><div class="ttname"><a href="classCPrivateSendClient.html#a42277d5f7e91e7952d3b6f031fcd8d18">CPrivateSendClient::ClearSkippedDenominations</a></div><div class="ttdeci">void ClearSkippedDenominations()</div><div class="ttdef"><b>Definition:</b> <a href="privatesend-client_8h_source.html#l00128">privatesend-client.h:128</a></div></div>
<div class="ttc" id="privatesend-client_8h_html"><div class="ttname"><a href="privatesend-client_8h.html">privatesend-client.h</a></div></div>
<div class="ttc" id="classCMasterKey_html_a00009f4b4feaa2ebe630a0d7cc854d3a"><div class="ttname"><a href="classCMasterKey.html#a00009f4b4feaa2ebe630a0d7cc854d3a">CMasterKey::vchSalt</a></div><div class="ttdeci">std::vector&lt; unsigned char &gt; vchSalt</div><div class="ttdef"><b>Definition:</b> <a href="crypter_8h_source.html#l00037">crypter.h:37</a></div></div>
<div class="ttc" id="structCExtPubKey_html_af816bc2798e9d9aaa94f56af4775d9bf"><div class="ttname"><a href="structCExtPubKey.html#af816bc2798e9d9aaa94f56af4775d9bf">CExtPubKey::nChild</a></div><div class="ttdeci">unsigned int nChild</div><div class="ttdef"><b>Definition:</b> <a href="pubkey_8h_source.html#l00198">pubkey.h:198</a></div></div>
<div class="ttc" id="classCCoinControl_html_aa991ffd830267f6c2103fa7e03213f41"><div class="ttname"><a href="classCCoinControl.html#aa991ffd830267f6c2103fa7e03213f41">CCoinControl::destChange</a></div><div class="ttdeci">CTxDestination destChange</div><div class="ttdef"><b>Definition:</b> <a href="coincontrol_8h_source.html#l00014">coincontrol.h:14</a></div></div>
<div class="ttc" id="serialize_8h_html_ae4d5251432e1a9e6803c0240cc492e18a652754eeaf79fba4fcf4c18597a6961c"><div class="ttname"><a href="serialize_8h.html#ae4d5251432e1a9e6803c0240cc492e18a652754eeaf79fba4fcf4c18597a6961c">SER_NETWORK</a></div><div class="ttdef"><b>Definition:</b> <a href="serialize_8h_source.html#l00170">serialize.h:170</a></div></div>
<div class="ttc" id="instantx_8h_html_a8ad513b37763e4e94cf473adbfc9708e"><div class="ttname"><a href="instantx_8h.html#a8ad513b37763e4e94cf473adbfc9708e">INSTANTSEND_CONFIRMATIONS_REQUIRED</a></div><div class="ttdeci">static const int INSTANTSEND_CONFIRMATIONS_REQUIRED</div><div class="ttdef"><b>Definition:</b> <a href="instantx_8h_source.html#l00028">instantx.h:28</a></div></div>
<div class="ttc" id="wallet_8h_html_a90b09b05f289ac32704a6446a94566cea3eec6f6b31b59d32f5dc13c63bae582d"><div class="ttname"><a href="wallet_8h.html#a90b09b05f289ac32704a6446a94566cea3eec6f6b31b59d32f5dc13c63bae582d">ONLY_1000</a></div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00107">wallet.h:107</a></div></div>
<div class="ttc" id="group__Actions_html_ga6ab79abf1aba845254fe5969731ba2ad"><div class="ttname"><a href="group__Actions.html#ga6ab79abf1aba845254fe5969731ba2ad">CWallet::CountInputsWithAmount</a></div><div class="ttdeci">int CountInputsWithAmount(CAmount nInputAmount)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l03044">wallet.cpp:3044</a></div></div>
<div class="ttc" id="group__Actions_html_gae460b8c824a1a6633615f95373e533f2"><div class="ttname"><a href="group__Actions.html#gae460b8c824a1a6633615f95373e533f2">CWallet::KeepKey</a></div><div class="ttdeci">void KeepKey(int64_t nIndex)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l03877">wallet.cpp:3877</a></div></div>
<div class="ttc" id="wallet_8h_html_a7f01c5239c67e07b5bd29405b65ee46a"><div class="ttname"><a href="wallet_8h.html#a7f01c5239c67e07b5bd29405b65ee46a">DEFAULT_SPEND_ZEROCONF_CHANGE</a></div><div class="ttdeci">static const bool DEFAULT_SPEND_ZEROCONF_CHANGE</div><div class="ttdoc">Default for -spendzeroconfchange. </div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00066">wallet.h:66</a></div></div>
<div class="ttc" id="structCMutableTransaction_html"><div class="ttname"><a href="structCMutableTransaction.html">CMutableTransaction</a></div><div class="ttdef"><b>Definition:</b> <a href="transaction_8h_source.html#l00303">transaction.h:303</a></div></div>
<div class="ttc" id="classCMerkleTx_html_a0a2c5cd56d31bbe9b5b870ef6ebb441d"><div class="ttname"><a href="classCMerkleTx.html#a0a2c5cd56d31bbe9b5b870ef6ebb441d">CMerkleTx::isAbandoned</a></div><div class="ttdeci">bool isAbandoned() const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00267">wallet.h:267</a></div></div>
<div class="ttc" id="classCWalletDB_html_a8c69e48e2305775898658e0a4f4616c9"><div class="ttname"><a href="classCWalletDB.html#a8c69e48e2305775898658e0a4f4616c9">CWalletDB::WriteCScript</a></div><div class="ttdeci">bool WriteCScript(const uint160 &amp;hash, const CScript &amp;redeemScript)</div><div class="ttdef"><b>Definition:</b> <a href="walletdb_8cpp_source.html#l00114">walletdb.cpp:114</a></div></div>
<div class="ttc" id="wallet_8h_html_a39a6b71da3eb95cddc0836d3b27ac7c9a9b917e6922fd5de60c0b9fc95a3bf0e4"><div class="ttname"><a href="wallet_8h.html#a39a6b71da3eb95cddc0836d3b27ac7c9a9b917e6922fd5de60c0b9fc95a3bf0e4">FEATURE_COMPRPUBKEY</a></div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00094">wallet.h:94</a></div></div>
<div class="ttc" id="classCCoinControl_html_a83d3144efcfdd0e87467f0b2d98b4302"><div class="ttname"><a href="classCCoinControl.html#a83d3144efcfdd0e87467f0b2d98b4302">CCoinControl::fAllowWatchOnly</a></div><div class="ttdeci">bool fAllowWatchOnly</div><div class="ttdoc">Includes watch only addresses which match the ISMINE_WATCH_SOLVABLE criteria. </div><div class="ttdef"><b>Definition:</b> <a href="coincontrol_8h_source.html#l00020">coincontrol.h:20</a></div></div>
<div class="ttc" id="classTransactionSignatureCreator_html"><div class="ttname"><a href="classTransactionSignatureCreator.html">TransactionSignatureCreator</a></div><div class="ttdef"><b>Definition:</b> <a href="sign_8h_source.html#l00034">sign.h:34</a></div></div>
<div class="ttc" id="classCOutput_html_ad5c15e7a2dc48258127b8fd5db421ad5"><div class="ttname"><a href="classCOutput.html#ad5c15e7a2dc48258127b8fd5db421ad5">COutput::tx</a></div><div class="ttdeci">const CWalletTx * tx</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00485">wallet.h:485</a></div></div>
<div class="ttc" id="standard_8h_html_a50f712c3d9a0d2f85ae464497dd9cff8"><div class="ttname"><a href="standard_8h.html#a50f712c3d9a0d2f85ae464497dd9cff8">CTxDestination</a></div><div class="ttdeci">boost::variant&lt; CNoDestination, CKeyID, CScriptID &gt; CTxDestination</div><div class="ttdef"><b>Definition:</b> <a href="standard_8h_source.html#l00069">standard.h:69</a></div></div>
<div class="ttc" id="group__Actions_html_ga47afcc47fc4fa53605670f3bc29a7bcc"><div class="ttname"><a href="group__Actions.html#ga47afcc47fc4fa53605670f3bc29a7bcc">CWallet::ReturnKey</a></div><div class="ttdeci">void ReturnKey(int64_t nIndex, bool fInternal)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l03889">wallet.cpp:3889</a></div></div>
<div class="ttc" id="group__Actions_html_gad71e805ab9614962a57cb931e91b4297"><div class="ttname"><a href="group__Actions.html#gad71e805ab9614962a57cb931e91b4297">CWallet::GetAnonymizedBalance</a></div><div class="ttdeci">CAmount GetAnonymizedBalance() const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02177">wallet.cpp:2177</a></div></div>
<div class="ttc" id="wallet_8h_html_a31d13bcc9bac14a52ca62a93088f115d"><div class="ttname"><a href="wallet_8h.html#a31d13bcc9bac14a52ca62a93088f115d">DEFAULT_TX_CONFIRM_TARGET</a></div><div class="ttdeci">static const unsigned int DEFAULT_TX_CONFIRM_TARGET</div><div class="ttdoc">-txconfirmtarget default </div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00070">wallet.h:70</a></div></div>
<div class="ttc" id="classCCryptoKeyStore_html_a6c115cf1fc4129b43c8846b3d51d8ff5"><div class="ttname"><a href="classCCryptoKeyStore.html#a6c115cf1fc4129b43c8846b3d51d8ff5">CCryptoKeyStore::HaveKey</a></div><div class="ttdeci">bool HaveKey(const CKeyID &amp;address) const</div><div class="ttdoc">Check whether a key corresponding to a given address is present in the store. </div><div class="ttdef"><b>Definition:</b> <a href="crypter_8h_source.html#l00191">crypter.h:191</a></div></div>
<div class="ttc" id="structCRecipient_html_a8b22af0f2653323bb3fbf19aface4c5c"><div class="ttname"><a href="structCRecipient.html#a8b22af0f2653323bb3fbf19aface4c5c">CRecipient::nAmount</a></div><div class="ttdeci">CAmount nAmount</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00176">wallet.h:176</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga553ae4c21d71d887c392ae7b147f9dd0"><div class="ttname"><a href="group__mapWallet.html#ga553ae4c21d71d887c392ae7b147f9dd0">CWallet::IsFromMe</a></div><div class="ttdeci">bool IsFromMe(const CTransaction &amp;tx) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01499">wallet.cpp:1499</a></div></div>
<div class="ttc" id="classCTxIn_html"><div class="ttname"><a href="classCTxIn.html">CTxIn</a></div><div class="ttdef"><b>Definition:</b> <a href="transaction_8h_source.html#l00058">transaction.h:58</a></div></div>
<div class="ttc" id="standard_8cpp_html_a951f7e601746ae076afdf3169ecca2fc"><div class="ttname"><a href="standard_8cpp.html#a951f7e601746ae076afdf3169ecca2fc">ExtractDestination</a></div><div class="ttdeci">bool ExtractDestination(const CScript &amp;scriptPubKey, CTxDestination &amp;addressRet)</div><div class="ttdef"><b>Definition:</b> <a href="standard_8cpp_source.html#l00164">standard.cpp:164</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga1697a92171b4359f49b38aed643cf92b"><div class="ttname"><a href="group__mapWallet.html#ga1697a92171b4359f49b38aed643cf92b">CWallet::SetBestChain</a></div><div class="ttdeci">void SetBestChain(const CBlockLocator &amp;loc)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00521">wallet.cpp:521</a></div></div>
<div class="ttc" id="classCOutput_html"><div class="ttname"><a href="classCOutput.html">COutput</a></div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00482">wallet.h:482</a></div></div>
<div class="ttc" id="group__Actions_html_ga9bb7c978c4d3b0aba8b94dcbdf868bca"><div class="ttname"><a href="group__Actions.html#ga9bb7c978c4d3b0aba8b94dcbdf868bca">CWallet::GetAccountAddresses</a></div><div class="ttdeci">std::set&lt; CTxDestination &gt; GetAccountAddresses(const std::string &amp;strAccount) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04087">wallet.cpp:4087</a></div></div>
<div class="ttc" id="classCClientUIInterface_html_abc63cc3f3e5e15632f713d859dbc6bc2"><div class="ttname"><a href="classCClientUIInterface.html#abc63cc3f3e5e15632f713d859dbc6bc2">CClientUIInterface::InitMessage</a></div><div class="ttdeci">boost::signals2::signal&lt; void(const std::string &amp;message)&gt; InitMessage</div><div class="ttdef"><b>Definition:</b> <a href="ui__interface_8h_source.html#l00083">ui_interface.h:83</a></div></div>
<div class="ttc" id="classCHDPubKey_html_ac3ddb59612ca1bab618d7bb0b0c38ba9"><div class="ttname"><a href="classCHDPubKey.html#ac3ddb59612ca1bab618d7bb0b0c38ba9">CHDPubKey::extPubKey</a></div><div class="ttdeci">CExtPubKey extPubKey</div><div class="ttdef"><b>Definition:</b> <a href="hdchain_8h_source.html#l00130">hdchain.h:130</a></div></div>
<div class="ttc" id="wallet__ismine_8h_html_a66f67ca6dd4cabac4eea13042b18e20daaf93acf4732907100f55dc017b6daf58"><div class="ttname"><a href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20daaf93acf4732907100f55dc017b6daf58">ISMINE_SPENDABLE</a></div><div class="ttdef"><b>Definition:</b> <a href="wallet__ismine_8h_source.html#l00025">wallet_ismine.h:25</a></div></div>
<div class="ttc" id="group__Actions_html_ga95e868e708b79ac46229aca24d557702"><div class="ttname"><a href="group__Actions.html#ga95e868e708b79ac46229aca24d557702">CWallet::AddAccountingEntry</a></div><div class="ttdeci">bool AddAccountingEntry(const CAccountingEntry &amp;, CWalletDB &amp;pwalletdb)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l03579">wallet.cpp:3579</a></div></div>
<div class="ttc" id="classCConnman_html_a5fdad96946aa2bc67961ad973bf65fa5"><div class="ttname"><a href="classCConnman.html#a5fdad96946aa2bc67961ad973bf65fa5">CConnman::RelayTransaction</a></div><div class="ttdeci">void RelayTransaction(const CTransaction &amp;tx)</div><div class="ttdef"><b>Definition:</b> <a href="net_8cpp_source.html#l02477">net.cpp:2477</a></div></div>
<div class="ttc" id="classCOutput_html_ab8fa647313fbc2cda12f8b064031dd11"><div class="ttname"><a href="classCOutput.html#ab8fa647313fbc2cda12f8b064031dd11">COutput::fSpendable</a></div><div class="ttdeci">bool fSpendable</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00488">wallet.h:488</a></div></div>
<div class="ttc" id="structCompareOutputBIP69_html"><div class="ttname"><a href="structCompareOutputBIP69.html">CompareOutputBIP69</a></div><div class="ttdef"><b>Definition:</b> <a href="transaction_8h_source.html#l00363">transaction.h:363</a></div></div>
<div class="ttc" id="crypter_8h_html_abf8d5f4eb0b3c828d9fbedb9b2e10b2a"><div class="ttname"><a href="crypter_8h.html#abf8d5f4eb0b3c828d9fbedb9b2e10b2a">WALLET_CRYPTO_KEY_SIZE</a></div><div class="ttdeci">const unsigned int WALLET_CRYPTO_KEY_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="crypter_8h_source.html#l00014">crypter.h:14</a></div></div>
<div class="ttc" id="classCAffectedKeysVisitor_html_abc13269c85eb964555cfe23c60b8c9b1"><div class="ttname"><a href="classCAffectedKeysVisitor.html#abc13269c85eb964555cfe23c60b8c9b1">CAffectedKeysVisitor::operator()</a></div><div class="ttdeci">void operator()(const CKeyID &amp;keyId)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04259">wallet.cpp:4259</a></div></div>
<div class="ttc" id="group__Actions_html_ga53e5528d7005608594e73f500bc5bb8f"><div class="ttname"><a href="group__Actions.html#ga53e5528d7005608594e73f500bc5bb8f">CWallet::SetAddressBook</a></div><div class="ttdeci">bool SetAddressBook(const CTxDestination &amp;address, const std::string &amp;strName, const std::string &amp;purpose)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l03683">wallet.cpp:3683</a></div></div>
<div class="ttc" id="classCWalletTx_html_a1598bf4a18fd05ce5eaaa0c3eb58ff28"><div class="ttname"><a href="classCWalletTx.html#a1598bf4a18fd05ce5eaaa0c3eb58ff28">CWalletTx::fFromMe</a></div><div class="ttdeci">char fFromMe</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00286">wallet.h:286</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga63ace949094f4f52d7ef1f9f321a24e7"><div class="ttname"><a href="group__mapWallet.html#ga63ace949094f4f52d7ef1f9f321a24e7">CWallet::GetConflicts</a></div><div class="ttdeci">std::set&lt; uint256 &gt; GetConflicts(const uint256 &amp;txid) const</div><div class="ttdoc">Get wallet transactions that conflict with given transaction (spend same outputs) ...</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00566">wallet.cpp:566</a></div></div>
<div class="ttc" id="structCompactTallyItem_html_aaa4af089e3d784811ebadd4eb89eb54b"><div class="ttname"><a href="structCompactTallyItem.html#aaa4af089e3d784811ebadd4eb89eb54b">CompactTallyItem::vecTxIn</a></div><div class="ttdeci">std::vector&lt; CTxIn &gt; vecTxIn</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00115">wallet.h:115</a></div></div>
<div class="ttc" id="random_8cpp_html_a0e44e088732172da6662db2d5e37d4b2"><div class="ttname"><a href="random_8cpp.html#a0e44e088732172da6662db2d5e37d4b2">GetRandInt</a></div><div class="ttdeci">int GetRandInt(int nMax)</div><div class="ttdef"><b>Definition:</b> <a href="random_8cpp_source.html#l00109">random.cpp:109</a></div></div>
<div class="ttc" id="structCRecipient_html_ae8c65b7c42bcd6dfe50b34f4278e70c2"><div class="ttname"><a href="structCRecipient.html#ae8c65b7c42bcd6dfe50b34f4278e70c2">CRecipient::fSubtractFeeFromAmount</a></div><div class="ttdeci">bool fSubtractFeeFromAmount</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00177">wallet.h:177</a></div></div>
<div class="ttc" id="classDummySignatureCreator_html"><div class="ttname"><a href="classDummySignatureCreator.html">DummySignatureCreator</a></div><div class="ttdef"><b>Definition:</b> <a href="sign_8h_source.html#l00047">sign.h:47</a></div></div>
<div class="ttc" id="structCBlockLocator_html"><div class="ttname"><a href="structCBlockLocator.html">CBlockLocator</a></div><div class="ttdef"><b>Definition:</b> <a href="block_8h_source.html#l00132">block.h:132</a></div></div>
<div class="ttc" id="net_8h_html"><div class="ttname"><a href="net_8h.html">net.h</a></div></div>
<div class="ttc" id="classCAffectedKeysVisitor_html_a01b52c5a4311ae3985d1e5753e033215"><div class="ttname"><a href="classCAffectedKeysVisitor.html#a01b52c5a4311ae3985d1e5753e033215">CAffectedKeysVisitor::operator()</a></div><div class="ttdeci">void operator()(const CScriptID &amp;scriptId)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04264">wallet.cpp:4264</a></div></div>
<div class="ttc" id="classCHDPubKey_html_a9039ae18e4af321889cbb260e2605222"><div class="ttname"><a href="classCHDPubKey.html#a9039ae18e4af321889cbb260e2605222">CHDPubKey::nChangeIndex</a></div><div class="ttdeci">uint32_t nChangeIndex</div><div class="ttdef"><b>Definition:</b> <a href="hdchain_8h_source.html#l00133">hdchain.h:133</a></div></div>
<div class="ttc" id="classCWalletKey_html_aa2603825b543b1d5153f31482139a6b2"><div class="ttname"><a href="classCWalletKey.html#aa2603825b543b1d5153f31482139a6b2">CWalletKey::CWalletKey</a></div><div class="ttdeci">CWalletKey(int64_t nExpires=0)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04380">wallet.cpp:4380</a></div></div>
<div class="ttc" id="classCCoinControl_html_a6b419aa41fd3a9d037856d8814d594e1"><div class="ttname"><a href="classCCoinControl.html#a6b419aa41fd3a9d037856d8814d594e1">CCoinControl::IsSelected</a></div><div class="ttdeci">bool IsSelected(const COutPoint &amp;output) const</div><div class="ttdef"><b>Definition:</b> <a href="coincontrol_8h_source.html#l00045">coincontrol.h:45</a></div></div>
<div class="ttc" id="group__Actions_html_ga099c7618f04c56b4bf592eafd1362489"><div class="ttname"><a href="group__Actions.html#ga099c7618f04c56b4bf592eafd1362489">CWallet::SelectCoinsDark</a></div><div class="ttdeci">bool SelectCoinsDark(CAmount nValueMin, CAmount nValueMax, std::vector&lt; CTxIn &gt; &amp;vecTxInRet, CAmount &amp;nValueRet, int nPrivateSendRoundsMin, int nPrivateSendRoundsMax) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02930">wallet.cpp:2930</a></div></div>
<div class="ttc" id="group__Actions_html_gadac94dbabce69ad9919f0c317223c889"><div class="ttname"><a href="group__Actions.html#gadac94dbabce69ad9919f0c317223c889">CWallet::GetCollateralTxIn</a></div><div class="ttdeci">bool GetCollateralTxIn(CTxIn &amp;txinRet, CAmount &amp;nValueRet) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02967">wallet.cpp:2967</a></div></div>
<div class="ttc" id="group__Actions_html_gac75c09aea2670e5d144161f285f41156"><div class="ttname"><a href="group__Actions.html#gac75c09aea2670e5d144161f285f41156">CWallet::SelectCoinsMinConf</a></div><div class="ttdeci">bool SelectCoinsMinConf(const CAmount &amp;nTargetValue, int nConfMine, int nConfTheirs, std::vector&lt; COutput &gt; vCoins, std::set&lt; std::pair&lt; const CWalletTx *, unsigned int &gt; &gt; &amp;setCoinsRet, CAmount &amp;nValueRet, bool fUseInstantSend=false) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02498">wallet.cpp:2498</a></div></div>
<div class="ttc" id="group__Actions_html_ga7eb46509d48033fcf84bc396f88b076e"><div class="ttname"><a href="group__Actions.html#ga7eb46509d48033fcf84bc396f88b076e">CWallet::ReserveKeyFromKeyPool</a></div><div class="ttdeci">void ReserveKeyFromKeyPool(int64_t &amp;nIndex, CKeyPool &amp;keypool, bool fInternal)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l03841">wallet.cpp:3841</a></div></div>
<div class="ttc" id="classCCrypter_html_a124fcd3021569a660ce2daa3391c8ea4"><div class="ttname"><a href="classCCrypter.html#a124fcd3021569a660ce2daa3391c8ea4">CCrypter::Encrypt</a></div><div class="ttdeci">bool Encrypt(const CKeyingMaterial &amp;vchPlaintext, std::vector&lt; unsigned char &gt; &amp;vchCiphertext)</div><div class="ttdef"><b>Definition:</b> <a href="crypter_8cpp_source.html#l00050">crypter.cpp:50</a></div></div>
<div class="ttc" id="group__mapWallet_html_gab357b83eabbf66ccfbccb9e658b47c72"><div class="ttname"><a href="group__mapWallet.html#gab357b83eabbf66ccfbccb9e658b47c72">CWallet::IsHDEnabled</a></div><div class="ttdeci">bool IsHDEnabled()</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01485">wallet.cpp:1485</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga0a4476be9fde3845394c1514e69e5ff7"><div class="ttname"><a href="group__mapWallet.html#ga0a4476be9fde3845394c1514e69e5ff7">CWallet::GenerateNewHDChain</a></div><div class="ttdeci">void GenerateNewHDChain()</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01392">wallet.cpp:1392</a></div></div>
<div class="ttc" id="tinyformat_8h_html_a56c674871a61baaad36ad52238c08857"><div class="ttname"><a href="tinyformat_8h.html#a56c674871a61baaad36ad52238c08857">strprintf</a></div><div class="ttdeci">#define strprintf</div><div class="ttdef"><b>Definition:</b> <a href="tinyformat_8h_source.html#l01011">tinyformat.h:1011</a></div></div>
<div class="ttc" id="sign_8h_html"><div class="ttname"><a href="sign_8h.html">sign.h</a></div></div>
<div class="ttc" id="classCWalletDB_html_af0de4949373dc3f0063db673fd8b24aa"><div class="ttname"><a href="classCWalletDB.html#af0de4949373dc3f0063db673fd8b24aa">CWalletDB::WriteDestData</a></div><div class="ttdeci">bool WriteDestData(const std::string &amp;address, const std::string &amp;key, const std::string &amp;value)</div><div class="ttdoc">Write destination data key,value tuple to database. </div><div class="ttdef"><b>Definition:</b> <a href="walletdb_8cpp_source.html#l01152">walletdb.cpp:1152</a></div></div>
<div class="ttc" id="transactiontablemodel_8cpp_html_a07e9dfe08b758569cb80c2558979c164"><div class="ttname"><a href="transactiontablemodel_8cpp.html#a07e9dfe08b758569cb80c2558979c164">NotifyTransactionChanged</a></div><div class="ttdeci">static void NotifyTransactionChanged(TransactionTableModel *ttm, CWallet *wallet, const uint256 &amp;hash, ChangeType status)</div><div class="ttdef"><b>Definition:</b> <a href="transactiontablemodel_8cpp_source.html#l00762">transactiontablemodel.cpp:762</a></div></div>
<div class="ttc" id="spork_8h_html_a6c8f34b96d65df9867e780ff0ca79c22"><div class="ttname"><a href="spork_8h.html#a6c8f34b96d65df9867e780ff0ca79c22">SPORK_5_INSTANTSEND_MAX_VALUE</a></div><div class="ttdeci">static const int SPORK_5_INSTANTSEND_MAX_VALUE</div><div class="ttdef"><b>Definition:</b> <a href="spork_8h_source.html#l00024">spork.h:24</a></div></div>
<div class="ttc" id="structCompareValueOnly_html_a423bf5200199a41849aabb4b6ae46d94"><div class="ttname"><a href="structCompareValueOnly.html#a423bf5200199a41849aabb4b6ae46d94">CompareValueOnly::operator()</a></div><div class="ttdeci">bool operator()(const pair&lt; CAmount, pair&lt; const CWalletTx *, unsigned int &gt; &gt; &amp;t1, const pair&lt; CAmount, pair&lt; const CWalletTx *, unsigned int &gt; &gt; &amp;t2) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00072">wallet.cpp:72</a></div></div>
<div class="ttc" id="classCTransaction_html_adccb264c374e4ad57e699947540256f8"><div class="ttname"><a href="classCTransaction.html#adccb264c374e4ad57e699947540256f8">CTransaction::ComputePriority</a></div><div class="ttdeci">double ComputePriority(double dPriorityInputs, unsigned int nTxSize=0) const</div><div class="ttdef"><b>Definition:</b> <a href="transaction_8cpp_source.html#l00124">transaction.cpp:124</a></div></div>
<div class="ttc" id="classCHDChain_html_a72b48b299ab3d24d46e487d4bc1603b2"><div class="ttname"><a href="classCHDChain.html#a72b48b299ab3d24d46e487d4bc1603b2">CHDChain::IsNull</a></div><div class="ttdeci">bool IsNull() const</div><div class="ttdef"><b>Definition:</b> <a href="hdchain_8cpp_source.html#l00027">hdchain.cpp:27</a></div></div>
<div class="ttc" id="script_8h_html_a63e349a6089a54da9fe09a3d858648bda2c190c5caf052f92d3d9ac31a0d96151"><div class="ttname"><a href="script_8h.html#a63e349a6089a54da9fe09a3d858648bda2c190c5caf052f92d3d9ac31a0d96151">OP_CHECKSIG</a></div><div class="ttdef"><b>Definition:</b> <a href="script_8h_source.html#l00158">script.h:158</a></div></div>
<div class="ttc" id="classCWalletTx_html_a4b4fdec025af8171852c3eece1c2508f"><div class="ttname"><a href="classCWalletTx.html#a4b4fdec025af8171852c3eece1c2508f">CWalletTx::IsFromMe</a></div><div class="ttdeci">bool IsFromMe(const isminefilter &amp;filter) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00458">wallet.h:458</a></div></div>
<div class="ttc" id="classCMerkleTx_html_a829655e70702fdf97b6e534dd3227b0b"><div class="ttname"><a href="classCMerkleTx.html#a829655e70702fdf97b6e534dd3227b0b">CMerkleTx::nIndex</a></div><div class="ttdeci">int nIndex</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00223">wallet.h:223</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga19bb617269ab1ce42f5d18e1f1f8db09"><div class="ttname"><a href="group__mapWallet.html#ga19bb617269ab1ce42f5d18e1f1f8db09">CWalletTx::GetImmatureCredit</a></div><div class="ttdeci">CAmount GetImmatureCredit(bool fUseCache=true) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01857">wallet.cpp:1857</a></div></div>
<div class="ttc" id="wallet_8cpp_html_a755a19591df8d2f5079c1f7132c65642"><div class="ttname"><a href="wallet_8cpp.html#a755a19591df8d2f5079c1f7132c65642">bSpendZeroConfChange</a></div><div class="ttdeci">bool bSpendZeroConfChange</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00048">wallet.cpp:48</a></div></div>
<div class="ttc" id="random_8cpp_html_a786af12a87491f8dc24351d93b9833b6"><div class="ttname"><a href="random_8cpp.html#a786af12a87491f8dc24351d93b9833b6">RandAddSeedPerfmon</a></div><div class="ttdeci">void RandAddSeedPerfmon()</div><div class="ttdef"><b>Definition:</b> <a href="random_8cpp_source.html#l00046">random.cpp:46</a></div></div>
<div class="ttc" id="governance_8h_html"><div class="ttname"><a href="governance_8h.html">governance.h</a></div></div>
<div class="ttc" id="wallet_8h_html_a39a6b71da3eb95cddc0836d3b27ac7c9"><div class="ttname"><a href="wallet_8h.html#a39a6b71da3eb95cddc0836d3b27ac7c9">WalletFeature</a></div><div class="ttdeci">WalletFeature</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00089">wallet.h:89</a></div></div>
<div class="ttc" id="classCTxMemPool_html_a2b8d1adf0207a6464ef16319c53e00b1"><div class="ttname"><a href="classCTxMemPool.html#a2b8d1adf0207a6464ef16319c53e00b1">CTxMemPool::estimateSmartFee</a></div><div class="ttdeci">CFeeRate estimateSmartFee(int nBlocks, int *answerFoundAtBlocks=NULL) const</div><div class="ttdef"><b>Definition:</b> <a href="txmempool_8cpp_source.html#l00883">txmempool.cpp:883</a></div></div>
<div class="ttc" id="amount_8h_html_aed6bcb17bc73a5dcf33250e9c2c023cc"><div class="ttname"><a href="amount_8h.html#aed6bcb17bc73a5dcf33250e9c2c023cc">COIN</a></div><div class="ttdeci">static const CAmount COIN</div><div class="ttdef"><b>Definition:</b> <a href="amount_8h_source.html#l00016">amount.h:16</a></div></div>
<div class="ttc" id="classCWallet_html_acbeae89a10e129930e5059d9167697e5"><div class="ttname"><a href="classCWallet.html#acbeae89a10e129930e5059d9167697e5">CWallet::AddDestData</a></div><div class="ttdeci">bool AddDestData(const CTxDestination &amp;dest, const std::string &amp;key, const std::string &amp;value)</div><div class="ttdoc">Adds a destination data tuple to the store, and saves it to disk. </div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04325">wallet.cpp:4325</a></div></div>
<div class="ttc" id="classCBitcoinAddress_html"><div class="ttname"><a href="classCBitcoinAddress.html">CBitcoinAddress</a></div><div class="ttdef"><b>Definition:</b> <a href="base58_8h_source.html#l00104">base58.h:104</a></div></div>
<div class="ttc" id="util_8h_html_a32adf79142f0a426b5e782fb7cd4cad3"><div class="ttname"><a href="util_8h.html#a32adf79142f0a426b5e782fb7cd4cad3">DBG</a></div><div class="ttdeci">#define DBG(x)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00041">util.h:41</a></div></div>
<div class="ttc" id="structCompactTallyItem_html_a0efb39fdaacf62d56f5cb90261b71402"><div class="ttname"><a href="structCompactTallyItem.html#a0efb39fdaacf62d56f5cb90261b71402">CompactTallyItem::nAmount</a></div><div class="ttdeci">CAmount nAmount</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00114">wallet.h:114</a></div></div>
<div class="ttc" id="wallet_8cpp_html_a77a17dcfb43cece2a434c0a9bfe9e441"><div class="ttname"><a href="wallet_8cpp.html#a77a17dcfb43cece2a434c0a9bfe9e441">maxTxFee</a></div><div class="ttdeci">CAmount maxTxFee</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00046">wallet.cpp:46</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga5dd4c302f7ead99d078a113077eac045"><div class="ttname"><a href="group__mapWallet.html#ga5dd4c302f7ead99d078a113077eac045">CWallet::AddToWallet</a></div><div class="ttdeci">bool AddToWallet(const CWalletTx &amp;wtxIn, bool fFromLoadWallet, CWalletDB *pwalletdb)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00880">wallet.cpp:880</a></div></div>
<div class="ttc" id="group__Actions_html_ga6e6e1497535d499242c2f2a76d1cbe63"><div class="ttname"><a href="group__Actions.html#ga6e6e1497535d499242c2f2a76d1cbe63">CWallet::GetUnconfirmedBalance</a></div><div class="ttdeci">CAmount GetUnconfirmedBalance() const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02286">wallet.cpp:2286</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga7a76d68661e6879651ac0b11f2893e58"><div class="ttname"><a href="group__mapWallet.html#ga7a76d68661e6879651ac0b11f2893e58">CWallet::IncOrderPosNext</a></div><div class="ttdeci">int64_t IncOrderPosNext(CWalletDB *pwalletdb=NULL)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00856">wallet.cpp:856</a></div></div>
<div class="ttc" id="group__Actions_html_gae534f21212e6736c1390c73a0d4498e2"><div class="ttname"><a href="group__Actions.html#gae534f21212e6736c1390c73a0d4498e2">CWallet::GetOutpointAndKeysFromOutput</a></div><div class="ttdeci">bool GetOutpointAndKeysFromOutput(const COutput &amp;out, COutPoint &amp;outpointRet, CPubKey &amp;pubKeyRet, CKey &amp;keyRet)</div><div class="ttdoc">Extract txin information and keys from output. </div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l03015">wallet.cpp:3015</a></div></div>
<div class="ttc" id="classCWallet_html_ac35fb148c0967ad24db292435b54ad85"><div class="ttname"><a href="classCWallet.html#ac35fb148c0967ad24db292435b54ad85">CWallet::TxItems</a></div><div class="ttdeci">std::multimap&lt; int64_t, TxPair &gt; TxItems</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00742">wallet.h:742</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga9a4633bfb89da7a4afa04356a74b7970"><div class="ttname"><a href="group__mapWallet.html#ga9a4633bfb89da7a4afa04356a74b7970">CWallet::AbandonTransaction</a></div><div class="ttdeci">bool AbandonTransaction(const uint256 &amp;hashTx)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01066">wallet.cpp:1066</a></div></div>
<div class="ttc" id="amount_8h_html_a12db56a9a1c931941f0943ecbb278aae"><div class="ttname"><a href="amount_8h.html#a12db56a9a1c931941f0943ecbb278aae">MoneyRange</a></div><div class="ttdeci">bool MoneyRange(const CAmount &amp;nValue)</div><div class="ttdef"><b>Definition:</b> <a href="amount_8h_source.html#l00031">amount.h:31</a></div></div>
<div class="ttc" id="clientmodel_8cpp_html_a2a0f0b996679bcf94acb2c877ee2e497"><div class="ttname"><a href="clientmodel_8cpp.html#a2a0f0b996679bcf94acb2c877ee2e497">ShowProgress</a></div><div class="ttdeci">static void ShowProgress(ClientModel *clientmodel, const std::string &amp;title, int nProgress)</div><div class="ttdef"><b>Definition:</b> <a href="clientmodel_8cpp_source.html#l00306">clientmodel.cpp:306</a></div></div>
<div class="ttc" id="classCCryptoKeyStore_html_a340109b8673267676a34664a76ed3274"><div class="ttname"><a href="classCCryptoKeyStore.html#a340109b8673267676a34664a76ed3274">CCryptoKeyStore::AddKeyPubKey</a></div><div class="ttdeci">bool AddKeyPubKey(const CKey &amp;key, const CPubKey &amp;pubkey)</div><div class="ttdoc">Add a key to the store. </div><div class="ttdef"><b>Definition:</b> <a href="crypter_8cpp_source.html#l00302">crypter.cpp:302</a></div></div>
<div class="ttc" id="classCCoinControl_html_a20b259681a7c62b2119256a4862091ac"><div class="ttname"><a href="classCCoinControl.html#a20b259681a7c62b2119256a4862091ac">CCoinControl::HasSelected</a></div><div class="ttdeci">bool HasSelected() const</div><div class="ttdef"><b>Definition:</b> <a href="coincontrol_8h_source.html#l00040">coincontrol.h:40</a></div></div>
<div class="ttc" id="classCTxMemPool_html_ab2913b51062eb4f4e8110fca4223f172"><div class="ttname"><a href="classCTxMemPool.html#ab2913b51062eb4f4e8110fca4223f172">CTxMemPool::estimateSmartPriority</a></div><div class="ttdeci">double estimateSmartPriority(int nBlocks, int *answerFoundAtBlocks=NULL) const</div><div class="ttdef"><b>Definition:</b> <a href="txmempool_8cpp_source.html#l00893">txmempool.cpp:893</a></div></div>
<div class="ttc" id="validation_8cpp_html_a1ed8285f0fe3c6799c53265ce72552c8"><div class="ttname"><a href="validation_8cpp.html#a1ed8285f0fe3c6799c53265ce72552c8">cs_main</a></div><div class="ttdeci">CCriticalSection cs_main</div><div class="ttdef"><b>Definition:</b> <a href="validation_8cpp_source.html#l00062">validation.cpp:62</a></div></div>
<div class="ttc" id="group__Actions_html_ga416c2796c5ecb9836d4f6407fcdbb42c"><div class="ttname"><a href="group__Actions.html#ga416c2796c5ecb9836d4f6407fcdbb42c">CWallet::SelectCoinsByDenominations</a></div><div class="ttdeci">bool SelectCoinsByDenominations(int nDenom, CAmount nValueMin, CAmount nValueMax, std::vector&lt; CTxIn &gt; &amp;vecTxInRet, std::vector&lt; COutput &gt; &amp;vCoinsRet, CAmount &amp;nValueRet, int nPrivateSendRoundsMin, int nPrivateSendRoundsMax)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02762">wallet.cpp:2762</a></div></div>
<div class="ttc" id="wallet__ismine_8cpp_html_adc59cf67d903c1ba1ef225561b85bfce"><div class="ttname"><a href="wallet__ismine_8cpp.html#adc59cf67d903c1ba1ef225561b85bfce">IsMine</a></div><div class="ttdeci">isminetype IsMine(const CKeyStore &amp;keystore, const CTxDestination &amp;dest)</div><div class="ttdef"><b>Definition:</b> <a href="wallet__ismine_8cpp_source.html#l00032">wallet_ismine.cpp:32</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga01fbd78238d4ef833d059f12a7e8ac9f"><div class="ttname"><a href="group__mapWallet.html#ga01fbd78238d4ef833d059f12a7e8ac9f">CWallet::LoadCryptedKey</a></div><div class="ttdeci">bool LoadCryptedKey(const CPubKey &amp;vchPubKey, const std::vector&lt; unsigned char &gt; &amp;vchCryptedSecret)</div><div class="ttdoc">Adds an encrypted key to the store, without saving it to disk (used by LoadWallet) ...</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00344">wallet.cpp:344</a></div></div>
<div class="ttc" id="validation_8cpp_html_a8e0eca589b2d4254a65f04c5d91888b2"><div class="ttname"><a href="validation_8cpp.html#a8e0eca589b2d4254a65f04c5d91888b2">fReindex</a></div><div class="ttdeci">bool fReindex</div><div class="ttdef"><b>Definition:</b> <a href="validation_8cpp_source.html#l00071">validation.cpp:71</a></div></div>
<div class="ttc" id="wallet_8h_html_a39a6b71da3eb95cddc0836d3b27ac7c9a867e17547f858859f558244dc96ac2f3"><div class="ttname"><a href="wallet_8h.html#a39a6b71da3eb95cddc0836d3b27ac7c9a867e17547f858859f558244dc96ac2f3">FEATURE_LATEST</a></div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00098">wallet.h:98</a></div></div>
<div class="ttc" id="classCWalletDB_html_a3daf44ceb0cf8ef74d4e60e1859d8f1d"><div class="ttname"><a href="classCWalletDB.html#a3daf44ceb0cf8ef74d4e60e1859d8f1d">CWalletDB::WriteHDPubKey</a></div><div class="ttdeci">bool WriteHDPubKey(const CHDPubKey &amp;hdPubKey, const CKeyMetadata &amp;keyMeta)</div><div class="ttdef"><b>Definition:</b> <a href="walletdb_8cpp_source.html#l01182">walletdb.cpp:1182</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga6adcf1c224ed3c3fe4b0b19f6fca75d8"><div class="ttname"><a href="group__mapWallet.html#ga6adcf1c224ed3c3fe4b0b19f6fca75d8">CWallet::IsSpent</a></div><div class="ttdeci">bool IsSpent(const uint256 &amp;hash, unsigned int n) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00682">wallet.cpp:682</a></div></div>
<div class="ttc" id="structCompareByPriority_html_a880b81d741c9616f12799ff73becf4e3"><div class="ttname"><a href="structCompareByPriority.html#a880b81d741c9616f12799ff73becf4e3">CompareByPriority::operator()</a></div><div class="ttdeci">bool operator()(const COutput &amp;t1, const COutput &amp;t2) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02720">wallet.cpp:2720</a></div></div>
<div class="ttc" id="utilstrencodings_8h_html_ace13a819ca4e98c22847d26b3b357e75"><div class="ttname"><a href="utilstrencodings_8h.html#ace13a819ca4e98c22847d26b3b357e75">HexStr</a></div><div class="ttdeci">std::string HexStr(const T itbegin, const T itend, bool fSpaces=false)</div><div class="ttdef"><b>Definition:</b> <a href="utilstrencodings_8h_source.html#l00081">utilstrencodings.h:81</a></div></div>
<div class="ttc" id="classCTxOut_html_ab278ecef3817a972cb6bc5360d13f197"><div class="ttname"><a href="classCTxOut.html#ab278ecef3817a972cb6bc5360d13f197">CTxOut::nValue</a></div><div class="ttdeci">CAmount nValue</div><div class="ttdef"><b>Definition:</b> <a href="transaction_8h_source.html#l00136">transaction.h:136</a></div></div>
<div class="ttc" id="classCKey_html_ac53425b8d0f89067bce781c485101b20"><div class="ttname"><a href="classCKey.html#ac53425b8d0f89067bce781c485101b20">CKey::VerifyPubKey</a></div><div class="ttdeci">bool VerifyPubKey(const CPubKey &amp;vchPubKey) const</div><div class="ttdef"><b>Definition:</b> <a href="key_8cpp_source.html#l00184">key.cpp:184</a></div></div>
<div class="ttc" id="secure_8h_html_a396ed773a5ac24aec28c8f7dc413c7ac"><div class="ttname"><a href="secure_8h.html#a396ed773a5ac24aec28c8f7dc413c7ac">SecureString</a></div><div class="ttdeci">std::basic_string&lt; char, std::char_traits&lt; char &gt;, secure_allocator&lt; char &gt; &gt; SecureString</div><div class="ttdef"><b>Definition:</b> <a href="secure_8h_source.html#l00061">secure.h:61</a></div></div>
<div class="ttc" id="classCHDChain_html_a3606bfc2be2e89278b11440528141978"><div class="ttname"><a href="classCHDChain.html#a3606bfc2be2e89278b11440528141978">CHDChain::GetSeed</a></div><div class="ttdeci">SecureVector GetSeed() const</div><div class="ttdef"><b>Definition:</b> <a href="hdchain_8cpp_source.html#l00141">hdchain.cpp:141</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga72f8eabb937fe06b415316c2ef4ea510"><div class="ttname"><a href="group__mapWallet.html#ga72f8eabb937fe06b415316c2ef4ea510">CWalletTx::GetImmatureWatchOnlyCredit</a></div><div class="ttdeci">CAmount GetImmatureWatchOnlyCredit(const bool &amp;fUseCache=true) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01901">wallet.cpp:1901</a></div></div>
<div class="ttc" id="standard_8cpp_html_aa376c6e2bc4848cfd4f777f8dd239469"><div class="ttname"><a href="standard_8cpp.html#aa376c6e2bc4848cfd4f777f8dd239469">GetScriptForRawPubKey</a></div><div class="ttdeci">CScript GetScriptForRawPubKey(const CPubKey &amp;pubKey)</div><div class="ttdef"><b>Definition:</b> <a href="standard_8cpp_source.html#l00270">standard.cpp:270</a></div></div>
<div class="ttc" id="keystore_8h_html_a64709c9a3acc8f5694515789a183ad7b"><div class="ttname"><a href="keystore_8h.html#a64709c9a3acc8f5694515789a183ad7b">CKeyingMaterial</a></div><div class="ttdeci">std::vector&lt; unsigned char, secure_allocator&lt; unsigned char &gt; &gt; CKeyingMaterial</div><div class="ttdef"><b>Definition:</b> <a href="keystore_8h_source.html#l00116">keystore.h:116</a></div></div>
<div class="ttc" id="consensus_8h_html_adeaaac740ae92deabb436ab75c835701"><div class="ttname"><a href="consensus_8h.html#adeaaac740ae92deabb436ab75c835701">COINBASE_MATURITY</a></div><div class="ttdeci">static const int COINBASE_MATURITY</div><div class="ttdef"><b>Definition:</b> <a href="consensus_8h_source.html#l00023">consensus.h:23</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga7d19286b74feeb6219af749a1fa5330b"><div class="ttname"><a href="group__mapWallet.html#ga7d19286b74feeb6219af749a1fa5330b">CWallet::Unlock</a></div><div class="ttdeci">bool Unlock(const SecureString &amp;strWalletPassphrase, bool fForMixingOnly=false)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00404">wallet.cpp:404</a></div></div>
<div class="ttc" id="classCKeyID_html"><div class="ttname"><a href="classCKeyID.html">CKeyID</a></div><div class="ttdef"><b>Definition:</b> <a href="pubkey_8h_source.html#l00027">pubkey.h:27</a></div></div>
<div class="ttc" id="classCWalletTx_html_a17229eca0c81245312115a9c333203d8"><div class="ttname"><a href="classCWalletTx.html#a17229eca0c81245312115a9c333203d8">CWalletTx::mapValue</a></div><div class="ttdeci">mapValue_t mapValue</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00281">wallet.h:281</a></div></div>
<div class="ttc" id="group__Actions_html_ga1372ba886aaeda65bf28758c9ccb65b4"><div class="ttname"><a href="group__Actions.html#ga1372ba886aaeda65bf28758c9ccb65b4">CWallet::GetImmatureWatchOnlyBalance</a></div><div class="ttdeci">CAmount GetImmatureWatchOnlyBalance() const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02346">wallet.cpp:2346</a></div></div>
<div class="ttc" id="group__mapWallet_html_gad80664c1a4a4cc36e8bd52077b1bd4db"><div class="ttname"><a href="group__mapWallet.html#gad80664c1a4a4cc36e8bd52077b1bd4db">COutput::ToString</a></div><div class="ttdeci">std::string ToString() const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00079">wallet.cpp:79</a></div></div>
<div class="ttc" id="classCWalletDB_html_a3d6458600538f741a0b05b9788036b56"><div class="ttname"><a href="classCWalletDB.html#a3d6458600538f741a0b05b9788036b56">CWalletDB::ZapWalletTx</a></div><div class="ttdeci">DBErrors ZapWalletTx(CWallet *pwallet, std::vector&lt; CWalletTx &gt; &amp;vWtx)</div><div class="ttdef"><b>Definition:</b> <a href="walletdb_8cpp_source.html#l00825">walletdb.cpp:825</a></div></div>
<div class="ttc" id="classCMerkleTx_html_a5c2a9ab2b46a2cfba58e315fd3c16a17"><div class="ttname"><a href="classCMerkleTx.html#a5c2a9ab2b46a2cfba58e315fd3c16a17">CMerkleTx::ABANDON_HASH</a></div><div class="ttdeci">static const uint256 ABANDON_HASH</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00213">wallet.h:213</a></div></div>
<div class="ttc" id="classCCrypter_html_a5368279e4a1549d3c1d15d8aa2179708"><div class="ttname"><a href="classCCrypter.html#a5368279e4a1549d3c1d15d8aa2179708">CCrypter::SetKeyFromPassphrase</a></div><div class="ttdeci">bool SetKeyFromPassphrase(const SecureString &amp;strKeyData, const std::vector&lt; unsigned char &gt; &amp;chSalt, const unsigned int nRounds, const unsigned int nDerivationMethod)</div><div class="ttdef"><b>Definition:</b> <a href="crypter_8cpp_source.html#l00017">crypter.cpp:17</a></div></div>
<div class="ttc" id="classCConnman_html"><div class="ttname"><a href="classCConnman.html">CConnman</a></div><div class="ttdef"><b>Definition:</b> <a href="net_8h_source.html#l00108">net.h:108</a></div></div>
<div class="ttc" id="classCKeyMetadata_html_accfd31222aefcbdcba1fb0214e546e6d"><div class="ttname"><a href="classCKeyMetadata.html#accfd31222aefcbdcba1fb0214e546e6d">CKeyMetadata::nCreateTime</a></div><div class="ttdeci">int64_t nCreateTime</div><div class="ttdef"><b>Definition:</b> <a href="walletdb_8h_source.html#l00049">walletdb.h:49</a></div></div>
<div class="ttc" id="classCPrivateSend_html_ac699ad0d6b0b0621b2b6358b38703525"><div class="ttname"><a href="classCPrivateSend.html#ac699ad0d6b0b0621b2b6358b38703525">CPrivateSend::GetCollateralAmount</a></div><div class="ttdeci">static CAmount GetCollateralAmount()</div><div class="ttdef"><b>Definition:</b> <a href="privatesend_8h_source.html#l00349">privatesend.h:349</a></div></div>
<div class="ttc" id="group__Actions_html_gab51d80d53bc30799dd6888868a553963"><div class="ttname"><a href="group__Actions.html#gab51d80d53bc30799dd6888868a553963">CWallet::UnlockAllCoins</a></div><div class="ttdeci">void UnlockAllCoins()</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04215">wallet.cpp:4215</a></div></div>
<div class="ttc" id="classCCoinControl_html_a7903e85623ba9b21583bd4018d17546c"><div class="ttname"><a href="classCCoinControl.html#a7903e85623ba9b21583bd4018d17546c">CCoinControl::Select</a></div><div class="ttdeci">void Select(const COutPoint &amp;output)</div><div class="ttdef"><b>Definition:</b> <a href="coincontrol_8h_source.html#l00050">coincontrol.h:50</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga2e1bee3d382fc3553be7525b80ed7c99"><div class="ttname"><a href="group__mapWallet.html#ga2e1bee3d382fc3553be7525b80ed7c99">CWallet::GetDecryptedHDChain</a></div><div class="ttdeci">bool GetDecryptedHDChain(CHDChain &amp;hdChainRet)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01464">wallet.cpp:1464</a></div></div>
<div class="ttc" id="spork_8h_html"><div class="ttname"><a href="spork_8h.html">spork.h</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga50bbe9588d1d53acb5e85240de353708"><div class="ttname"><a href="group__mapWallet.html#ga50bbe9588d1d53acb5e85240de353708">CWallet::GetRealOutpointPrivateSendRounds</a></div><div class="ttdeci">int GetRealOutpointPrivateSendRounds(const COutPoint &amp;outpoint, int nRounds) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01242">wallet.cpp:1242</a></div></div>
<div class="ttc" id="group__Actions_html_ga059d185bded45fcf230a7a75e1be5f0e"><div class="ttname"><a href="group__Actions.html#ga059d185bded45fcf230a7a75e1be5f0e">CWallet::HasCollateralInputs</a></div><div class="ttdeci">bool HasCollateralInputs(bool fOnlyConfirmed=true) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l03072">wallet.cpp:3072</a></div></div>
<div class="ttc" id="group__mapWallet_html_gaf3c82ba365c720dd3d929b86bf432ef6"><div class="ttname"><a href="group__mapWallet.html#gaf3c82ba365c720dd3d929b86bf432ef6">CWalletTx::GetAvailableCredit</a></div><div class="ttdeci">CAmount GetAvailableCredit(bool fUseCache=true) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01871">wallet.cpp:1871</a></div></div>
<div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div></div>
<div class="ttc" id="classCMerkleTx_html_a6618a127f7e5597c686cec94c16d0bd8"><div class="ttname"><a href="classCMerkleTx.html#a6618a127f7e5597c686cec94c16d0bd8">CMerkleTx::AcceptToMemoryPool</a></div><div class="ttdeci">bool AcceptToMemoryPool(bool fLimitFree=true, bool fRejectAbsurdFee=true)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04457">wallet.cpp:4457</a></div></div>
<div class="ttc" id="classCBasicKeyStore_html_a2417d0ae4e654c88cf47a1ba5f71b5a3"><div class="ttname"><a href="classCBasicKeyStore.html#a2417d0ae4e654c88cf47a1ba5f71b5a3">CBasicKeyStore::AddWatchOnly</a></div><div class="ttdeci">virtual bool AddWatchOnly(const CScript &amp;dest)</div><div class="ttdoc">Support for Watch-only addresses. </div><div class="ttdef"><b>Definition:</b> <a href="keystore_8cpp_source.html#l00085">keystore.cpp:85</a></div></div>
<div class="ttc" id="classCHDPubKey_html_aac974fd41af0f5d2375ba4544d302a90"><div class="ttname"><a href="classCHDPubKey.html#aac974fd41af0f5d2375ba4544d302a90">CHDPubKey::hdchainID</a></div><div class="ttdeci">uint256 hdchainID</div><div class="ttdef"><b>Definition:</b> <a href="hdchain_8h_source.html#l00131">hdchain.h:131</a></div></div>
<div class="ttc" id="classCPrivateSend_html_aaea73bfde40e837eb2eee68413139359"><div class="ttname"><a href="classCPrivateSend.html#aaea73bfde40e837eb2eee68413139359">CPrivateSend::GetSmallestDenomination</a></div><div class="ttdeci">static CAmount GetSmallestDenomination()</div><div class="ttdef"><b>Definition:</b> <a href="privatesend_8h_source.html#l00329">privatesend.h:329</a></div></div>
<div class="ttc" id="classCNoDestination_html"><div class="ttname"><a href="classCNoDestination.html">CNoDestination</a></div><div class="ttdef"><b>Definition:</b> <a href="standard_8h_source.html#l00056">standard.h:56</a></div></div>
<div class="ttc" id="standard_8cpp_html_a6948ee6aa422ed8a5ffe06ddc77a55d8"><div class="ttname"><a href="standard_8cpp.html#a6948ee6aa422ed8a5ffe06ddc77a55d8">ExtractDestinations</a></div><div class="ttdeci">bool ExtractDestinations(const CScript &amp;scriptPubKey, txnouttype &amp;typeRet, vector&lt; CTxDestination &gt; &amp;addressRet, int &amp;nRequiredRet)</div><div class="ttdef"><b>Definition:</b> <a href="standard_8cpp_source.html#l00194">standard.cpp:194</a></div></div>
<div class="ttc" id="classCHDAccount_html_a7d5630dac573978f9eb98c451fbb1c4b"><div class="ttname"><a href="classCHDAccount.html#a7d5630dac573978f9eb98c451fbb1c4b">CHDAccount::nInternalChainCounter</a></div><div class="ttdeci">uint32_t nInternalChainCounter</div><div class="ttdef"><b>Definition:</b> <a href="hdchain_8h_source.html#l00014">hdchain.h:14</a></div></div>
<div class="ttc" id="group__mapWallet_html_gac496716bb889a5934fa27398aeb2330a"><div class="ttname"><a href="group__mapWallet.html#gac496716bb889a5934fa27398aeb2330a">CWallet::GetWalletTx</a></div><div class="ttdeci">const CWalletTx * GetWalletTx(const uint256 &amp;hash) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00094">wallet.cpp:94</a></div></div>
<div class="ttc" id="structCMutableTransaction_html_ad6b1a0a773293fd153a1d384923631da"><div class="ttname"><a href="structCMutableTransaction.html#ad6b1a0a773293fd153a1d384923631da">CMutableTransaction::vin</a></div><div class="ttdeci">std::vector&lt; CTxIn &gt; vin</div><div class="ttdef"><b>Definition:</b> <a href="transaction_8h_source.html#l00306">transaction.h:306</a></div></div>
<div class="ttc" id="validation_8cpp_html_a9f00dd573bea95cab88337424573f7b2"><div class="ttname"><a href="validation_8cpp.html#a9f00dd573bea95cab88337424573f7b2">AcceptToMemoryPool</a></div><div class="ttdeci">bool AcceptToMemoryPool(CTxMemPool &amp;pool, CValidationState &amp;state, const CTransaction &amp;tx, bool fLimitFree, bool *pfMissingInputs, bool fOverrideMempoolLimit, bool fRejectAbsurdFee, bool fDryRun)</div><div class="ttdef"><b>Definition:</b> <a href="validation_8cpp_source.html#l01014">validation.cpp:1014</a></div></div>
<div class="ttc" id="utilstrencodings_8cpp_html_aa4e3553d2b2fe693c106f4296685f75c"><div class="ttname"><a href="utilstrencodings_8cpp.html#aa4e3553d2b2fe693c106f4296685f75c">IsHex</a></div><div class="ttdeci">bool IsHex(const string &amp;str)</div><div class="ttdef"><b>Definition:</b> <a href="utilstrencodings_8cpp_source.html#l00059">utilstrencodings.cpp:59</a></div></div>
<div class="ttc" id="group__Actions_html_ga58abc6e61537f10bfb9429587ed29074"><div class="ttname"><a href="group__Actions.html#ga58abc6e61537f10bfb9429587ed29074">CWallet::IsLockedCoin</a></div><div class="ttdeci">bool IsLockedCoin(uint256 hash, unsigned int n) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04221">wallet.cpp:4221</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga127b064ab044a96158117ec8162188a7"><div class="ttname"><a href="group__mapWallet.html#ga127b064ab044a96158117ec8162188a7">CWalletTx::GetConflicts</a></div><div class="ttdeci">std::set&lt; uint256 &gt; GetConflicts() const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01781">wallet.cpp:1781</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga1933d34612a6a438d6c45bad608ce87c"><div class="ttname"><a href="group__mapWallet.html#ga1933d34612a6a438d6c45bad608ce87c">CWallet::Flush</a></div><div class="ttdeci">void Flush(bool shutdown=false)</div><div class="ttdoc">Flush wallet (bitdb flush) </div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00589">wallet.cpp:589</a></div></div>
<div class="ttc" id="interpreter_8h_html_aaf8fd5f0e57d456151c951e0f3715fc4ac68c7df6528b3001624e56b2de3826de"><div class="ttname"><a href="interpreter_8h.html#aaf8fd5f0e57d456151c951e0f3715fc4ac68c7df6528b3001624e56b2de3826de">SIGHASH_ALL</a></div><div class="ttdef"><b>Definition:</b> <a href="interpreter_8h_source.html#l00024">interpreter.h:24</a></div></div>
<div class="ttc" id="group__mapWallet_html_gac1abe6ee00d6a8f20e92e164c423a6d5"><div class="ttname"><a href="group__mapWallet.html#gac1abe6ee00d6a8f20e92e164c423a6d5">CWallet::GetChange</a></div><div class="ttdeci">CAmount GetChange(const CTxOut &amp;txout) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01385">wallet.cpp:1385</a></div></div>
<div class="ttc" id="classCFeeRate_html_a6a3aef64120ef51ac921318282404b0e"><div class="ttname"><a href="classCFeeRate.html#a6a3aef64120ef51ac921318282404b0e">CFeeRate::GetFee</a></div><div class="ttdeci">CAmount GetFee(size_t size) const</div><div class="ttdef"><b>Definition:</b> <a href="amount_8cpp_source.html#l00020">amount.cpp:20</a></div></div>
<div class="ttc" id="classCAddressBookData_html_a64dc6918c154b7ce75e92100804e490a"><div class="ttname"><a href="classCAddressBookData.html#a64dc6918c154b7ce75e92100804e490a">CAddressBookData::name</a></div><div class="ttdeci">std::string name</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00161">wallet.h:161</a></div></div>
<div class="ttc" id="classCCryptoKeyStore_html_af46ec271fffb65a113702ba40a3738c8"><div class="ttname"><a href="classCCryptoKeyStore.html#af46ec271fffb65a113702ba40a3738c8">CCryptoKeyStore::GetKey</a></div><div class="ttdeci">bool GetKey(const CKeyID &amp;address, CKey &amp;keyOut) const</div><div class="ttdef"><b>Definition:</b> <a href="crypter_8cpp_source.html#l00336">crypter.cpp:336</a></div></div>
<div class="ttc" id="utilmoneystr_8h_html"><div class="ttname"><a href="utilmoneystr_8h.html">utilmoneystr.h</a></div></div>
<div class="ttc" id="classCHDChain_html"><div class="ttname"><a href="classCHDChain.html">CHDChain</a></div><div class="ttdef"><b>Definition:</b> <a href="hdchain_8h_source.html#l00028">hdchain.h:28</a></div></div>
<div class="ttc" id="hash_8h_html_a4490f70ddae16e9e48460a0416a48a6b"><div class="ttname"><a href="hash_8h.html#a4490f70ddae16e9e48460a0416a48a6b">Hash160</a></div><div class="ttdeci">uint160 Hash160(const T1 pbegin, const T1 pend)</div><div class="ttdef"><b>Definition:</b> <a href="hash_8h_source.html#l00214">hash.h:214</a></div></div>
<div class="ttc" id="classCWallet_html_ad1557a7d200f70bc97319376a24c98a7"><div class="ttname"><a href="classCWallet.html#ad1557a7d200f70bc97319376a24c98a7">CWallet::TxPair</a></div><div class="ttdeci">std::pair&lt; CWalletTx *, CAccountingEntry * &gt; TxPair</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00741">wallet.h:741</a></div></div>
<div class="ttc" id="classCValidationState_html"><div class="ttname"><a href="classCValidationState.html">CValidationState</a></div><div class="ttdef"><b>Definition:</b> <a href="consensus_2validation_8h_source.html#l00022">validation.h:22</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga487f7cba517d37d24e5fa422711574d9"><div class="ttname"><a href="group__mapWallet.html#ga487f7cba517d37d24e5fa422711574d9">CWallet::AddToWalletIfInvolvingMe</a></div><div class="ttdeci">bool AddToWalletIfInvolvingMe(const CTransaction &amp;tx, const CBlock *pblock, bool fUpdate)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01028">wallet.cpp:1028</a></div></div>
<div class="ttc" id="group__Actions_html_gad95b72403a23ad9f9079a08b0ed1646a"><div class="ttname"><a href="group__Actions.html#gad95b72403a23ad9f9079a08b0ed1646a">CWallet::CommitTransaction</a></div><div class="ttdeci">bool CommitTransaction(CWalletTx &amp;wtxNew, CReserveKey &amp;reservekey, CConnman *connman, std::string strCommand=&quot;tx&quot;)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l03527">wallet.cpp:3527</a></div></div>
<div class="ttc" id="group__Actions_html_ga7c01f732dbde5dc71880203c435196b2"><div class="ttname"><a href="group__Actions.html#ga7c01f732dbde5dc71880203c435196b2">CWallet::GetNeedsToBeAnonymizedBalance</a></div><div class="ttdeci">CAmount GetNeedsToBeAnonymizedBalance(CAmount nMinBalance=0) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02244">wallet.cpp:2244</a></div></div>
<div class="ttc" id="script_8h_html_a4e2e7158597de76ecbb03d866ec4c693"><div class="ttname"><a href="script_8h.html#a4e2e7158597de76ecbb03d866ec4c693">MAX_SCRIPT_ELEMENT_SIZE</a></div><div class="ttdeci">static const unsigned int MAX_SCRIPT_ELEMENT_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="script_8h_source.html#l00022">script.h:22</a></div></div>
<div class="ttc" id="classCMasterKey_html"><div class="ttname"><a href="classCMasterKey.html">CMasterKey</a></div><div class="ttdef"><b>Definition:</b> <a href="crypter_8h_source.html#l00033">crypter.h:33</a></div></div>
<div class="ttc" id="wallet_8h_html"><div class="ttname"><a href="wallet_8h.html">wallet.h</a></div></div>
<div class="ttc" id="walletdb_8h_html_a7558d92e9ea1d446075da1b514c4a944"><div class="ttname"><a href="walletdb_8h.html#a7558d92e9ea1d446075da1b514c4a944">DBErrors</a></div><div class="ttdeci">DBErrors</div><div class="ttdef"><b>Definition:</b> <a href="walletdb_8h_source.html#l00034">walletdb.h:34</a></div></div>
<div class="ttc" id="classCWalletDB_html_a914fb53d1731daf9b486f164dd325210"><div class="ttname"><a href="classCWalletDB.html#a914fb53d1731daf9b486f164dd325210">CWalletDB::WriteCryptedKey</a></div><div class="ttdeci">bool WriteCryptedKey(const CPubKey &amp;vchPubKey, const std::vector&lt; unsigned char &gt; &amp;vchCryptedSecret, const CKeyMetadata &amp;keyMeta)</div><div class="ttdef"><b>Definition:</b> <a href="walletdb_8cpp_source.html#l00087">walletdb.cpp:87</a></div></div>
<div class="ttc" id="script_8h_html"><div class="ttname"><a href="script_8h.html">script.h</a></div></div>
<div class="ttc" id="group__Actions_html_ga9730278506e0a4f1c65239b951525b55"><div class="ttname"><a href="group__Actions.html#ga9730278506e0a4f1c65239b951525b55">CWallet::TopUpKeyPool</a></div><div class="ttdeci">bool TopUpKeyPool(unsigned int kpSize=0)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l03779">wallet.cpp:3779</a></div></div>
<div class="ttc" id="classbase__blob_html_aeee68e00ceeacf49086e98b661e017ff"><div class="ttname"><a href="classbase__blob.html#aeee68e00ceeacf49086e98b661e017ff">base_blob::begin</a></div><div class="ttdeci">unsigned char * begin()</div><div class="ttdef"><b>Definition:</b> <a href="uint256_8h_source.html#l00055">uint256.h:55</a></div></div>
<div class="ttc" id="wallet_8h_html_a63da8d3877972e02968c9d7f7156cf44"><div class="ttname"><a href="wallet_8h.html#a63da8d3877972e02968c9d7f7156cf44">DEFAULT_KEYPOOL_SIZE</a></div><div class="ttdeci">static const unsigned int DEFAULT_KEYPOOL_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00045">wallet.h:45</a></div></div>
<div class="ttc" id="group__Actions_html_ga69512d5afdbc440763fec4719475a055"><div class="ttname"><a href="group__Actions.html#ga69512d5afdbc440763fec4719475a055">CWallet::GetAnonymizableBalance</a></div><div class="ttdeci">CAmount GetAnonymizableBalance(bool fSkipDenominated=false, bool fSkipUnconfirmed=true) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02155">wallet.cpp:2155</a></div></div>
<div class="ttc" id="random_8h_html_ae8f7a2f188545bbbf746160adc42038e"><div class="ttname"><a href="random_8h.html#ae8f7a2f188545bbbf746160adc42038e">insecure_rand</a></div><div class="ttdeci">static uint32_t insecure_rand(void)</div><div class="ttdef"><b>Definition:</b> <a href="random_8h_source.html#l00042">random.h:42</a></div></div>
<div class="ttc" id="classCKeyStore_html_ae6bf4dbeb0705e199250e48aa5d34264"><div class="ttname"><a href="classCKeyStore.html#ae6bf4dbeb0705e199250e48aa5d34264">CKeyStore::GetCScript</a></div><div class="ttdeci">virtual bool GetCScript(const CScriptID &amp;hash, CScript &amp;redeemScriptOut) const =0</div></div>
<div class="ttc" id="group__mapWallet_html_ga156417283f7cb4e283ee97720ab07d43"><div class="ttname"><a href="group__mapWallet.html#ga156417283f7cb4e283ee97720ab07d43">CWallet::GetPubKey</a></div><div class="ttdeci">bool GetPubKey(const CKeyID &amp;address, CPubKey &amp;vchPubKeyOut) const</div><div class="ttdoc">GetPubKey implementation that also checks the mapHdPubKeys. </div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00202">wallet.cpp:202</a></div></div>
<div class="ttc" id="classCCryptoKeyStore_html_aa83082b7cdde407247666d9fd73dd492"><div class="ttname"><a href="classCCryptoKeyStore.html#aa83082b7cdde407247666d9fd73dd492">CCryptoKeyStore::SetHDChain</a></div><div class="ttdeci">bool SetHDChain(const CHDChain &amp;chain)</div><div class="ttdef"><b>Definition:</b> <a href="crypter_8cpp_source.html#l00501">crypter.cpp:501</a></div></div>
<div class="ttc" id="classCWalletDB_html_a6a1f671e6376b38a1f73c8a023abdd38"><div class="ttname"><a href="classCWalletDB.html#a6a1f671e6376b38a1f73c8a023abdd38">CWalletDB::WriteOrderPosNext</a></div><div class="ttdeci">bool WriteOrderPosNext(int64_t nOrderPosNext)</div><div class="ttdef"><b>Definition:</b> <a href="walletdb_8cpp_source.html#l00145">walletdb.cpp:145</a></div></div>
<div class="ttc" id="classCMerkleTx_html_a538ba1b6faedbb447cb45ac7019b6f47"><div class="ttname"><a href="classCMerkleTx.html#a538ba1b6faedbb447cb45ac7019b6f47">CMerkleTx::SetMerkleBranch</a></div><div class="ttdeci">int SetMerkleBranch(const CBlock &amp;block)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04386">wallet.cpp:4386</a></div></div>
<div class="ttc" id="classCPubKey_html_a2675f7e6f72eff68e7a5227289feb021"><div class="ttname"><a href="classCPubKey.html#a2675f7e6f72eff68e7a5227289feb021">CPubKey::GetID</a></div><div class="ttdeci">CKeyID GetID() const</div><div class="ttdoc">Get the KeyID of this public key (hash of its serialization) </div><div class="ttdef"><b>Definition:</b> <a href="pubkey_8h_source.html#l00144">pubkey.h:144</a></div></div>
<div class="ttc" id="classbase__blob_html_aba89c6722866a5850882a509d27d7bbd"><div class="ttname"><a href="classbase__blob.html#aba89c6722866a5850882a509d27d7bbd">base_blob::IsNull</a></div><div class="ttdeci">bool IsNull() const</div><div class="ttdef"><b>Definition:</b> <a href="uint256_8h_source.html#l00033">uint256.h:33</a></div></div>
<div class="ttc" id="group__mapWallet_html_gadbf0abef9da8102f000d4afd5cec5bbc"><div class="ttname"><a href="group__mapWallet.html#gadbf0abef9da8102f000d4afd5cec5bbc">CWallet::LoadCScript</a></div><div class="ttdeci">bool LoadCScript(const CScript &amp;redeemScript)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00358">wallet.cpp:358</a></div></div>
<div class="ttc" id="group__Actions_html_ga854d83cbc2f4a5b993631507ed32aa3a"><div class="ttname"><a href="group__Actions.html#ga854d83cbc2f4a5b993631507ed32aa3a">GetOldestKeyInPool</a></div><div class="ttdeci">static int64_t GetOldestKeyInPool(const std::set&lt; int64_t &gt; &amp;setKeyPool, CWalletDB &amp;walletdb)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l03923">wallet.cpp:3923</a></div></div>
<div class="ttc" id="group__Actions_html_gac6542da8493cbb958068b7a01c05b631"><div class="ttname"><a href="group__Actions.html#gac6542da8493cbb958068b7a01c05b631">CWallet::DelAddressBook</a></div><div class="ttdeci">bool DelAddressBook(const CTxDestination &amp;address)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l03703">wallet.cpp:3703</a></div></div>
<div class="ttc" id="classCCryptoKeyStore_html_a20b474adfe6900bb36cd4fd6f9c31380"><div class="ttname"><a href="classCCryptoKeyStore.html#a20b474adfe6900bb36cd4fd6f9c31380">CCryptoKeyStore::GetPubKey</a></div><div class="ttdeci">bool GetPubKey(const CKeyID &amp;address, CPubKey &amp;vchPubKeyOut) const</div><div class="ttdef"><b>Definition:</b> <a href="crypter_8cpp_source.html#l00354">crypter.cpp:354</a></div></div>
<div class="ttc" id="group__Actions_html_ga97f8f562396b32b8e6ee78476087e1b2"><div class="ttname"><a href="group__Actions.html#ga97f8f562396b32b8e6ee78476087e1b2">LoadReserveKeysToSet</a></div><div class="ttdeci">static void LoadReserveKeysToSet(std::set&lt; CKeyID &gt; &amp;setAddress, const std::set&lt; int64_t &gt; &amp;setKeyPool, CWalletDB &amp;walletdb)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04138">wallet.cpp:4138</a></div></div>
<div class="ttc" id="classCBasicKeyStore_html_a20c0eccf943d6d16e24c6e2fb63fb527"><div class="ttname"><a href="classCBasicKeyStore.html#a20c0eccf943d6d16e24c6e2fb63fb527">CBasicKeyStore::RemoveWatchOnly</a></div><div class="ttdeci">virtual bool RemoveWatchOnly(const CScript &amp;dest)</div><div class="ttdef"><b>Definition:</b> <a href="keystore_8cpp_source.html#l00095">keystore.cpp:95</a></div></div>
<div class="ttc" id="classCAccountingEntry_html"><div class="ttname"><a href="classCAccountingEntry.html">CAccountingEntry</a></div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00535">wallet.h:535</a></div></div>
<div class="ttc" id="classCKey_html_a91b6ecf71cc16e0b05ce79ec9276e729"><div class="ttname"><a href="classCKey.html#a91b6ecf71cc16e0b05ce79ec9276e729">CKey::GetPrivKey</a></div><div class="ttdeci">CPrivKey GetPrivKey() const</div><div class="ttdef"><b>Definition:</b> <a href="key_8cpp_source.html#l00143">key.cpp:143</a></div></div>
<div class="ttc" id="group__Actions_html_ga5120281db2d155cd8254c692267c9d37"><div class="ttname"><a href="group__Actions.html#ga5120281db2d155cd8254c692267c9d37">ApproximateBestSubset</a></div><div class="ttdeci">static void ApproximateBestSubset(vector&lt; pair&lt; CAmount, pair&lt; const CWalletTx *, unsigned int &gt; &gt; &gt;vValue, const CAmount &amp;nTotalLower, const CAmount &amp;nTargetValue, vector&lt; char &gt; &amp;vfBest, CAmount &amp;nBest, int iterations=1000, bool fUseInstantSend=false)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02423">wallet.cpp:2423</a></div></div>
<div class="ttc" id="classCWalletTx_html_af4f4b58875061467026da7b259532b69"><div class="ttname"><a href="classCWalletTx.html#af4f4b58875061467026da7b259532b69">CWalletTx::nTimeReceived</a></div><div class="ttdeci">unsigned int nTimeReceived</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00284">wallet.h:284</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga714fe72284e4cc436d84f751a9a7aa60"><div class="ttname"><a href="group__mapWallet.html#ga714fe72284e4cc436d84f751a9a7aa60">CWalletTx::GetChange</a></div><div class="ttdeci">CAmount GetChange() const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02023">wallet.cpp:2023</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga76beb4aa57afa52c8fca1f84784f29f0"><div class="ttname"><a href="group__mapWallet.html#ga76beb4aa57afa52c8fca1f84784f29f0">CWallet::DeriveNewChildKey</a></div><div class="ttdeci">void DeriveNewChildKey(const CKeyMetadata &amp;metadata, CKey &amp;secretRet, uint32_t nAccountIndex, bool fInternal)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00140">wallet.cpp:140</a></div></div>
<div class="ttc" id="classCCoinControl_html"><div class="ttname"><a href="classCCoinControl.html">CCoinControl</a></div><div class="ttdef"><b>Definition:</b> <a href="coincontrol_8h_source.html#l00011">coincontrol.h:11</a></div></div>
<div class="ttc" id="classCHDChain_html_aef1b10fffd41285366d594ace3a97d69"><div class="ttname"><a href="classCHDChain.html#aef1b10fffd41285366d594ace3a97d69">CHDChain::DeriveChildExtKey</a></div><div class="ttdeci">void DeriveChildExtKey(uint32_t nAccountIndex, bool fInternal, uint32_t nChildIndex, CExtKey &amp;extKeyRet)</div><div class="ttdef"><b>Definition:</b> <a href="hdchain_8cpp_source.html#l00151">hdchain.cpp:151</a></div></div>
<div class="ttc" id="classCBlock_html_a9b6508d662722775f3029b980b382b66"><div class="ttname"><a href="classCBlock.html#a9b6508d662722775f3029b980b382b66">CBlock::vtx</a></div><div class="ttdeci">std::vector&lt; CTransaction &gt; vtx</div><div class="ttdef"><b>Definition:</b> <a href="block_8h_source.html#l00077">block.h:77</a></div></div>
<div class="ttc" id="group__Actions_html_ga92a58ebac7d7d398597657600db56611"><div class="ttname"><a href="group__Actions.html#ga92a58ebac7d7d398597657600db56611">CWallet::GetWatchOnlyBalance</a></div><div class="ttdeci">CAmount GetWatchOnlyBalance() const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02315">wallet.cpp:2315</a></div></div>
<div class="ttc" id="classCBase58Data_html_a7dc91af403ca02694b3247b15604e220"><div class="ttname"><a href="classCBase58Data.html#a7dc91af403ca02694b3247b15604e220">CBase58Data::ToString</a></div><div class="ttdeci">std::string ToString() const</div><div class="ttdef"><b>Definition:</b> <a href="base58_8cpp_source.html#l00193">base58.cpp:193</a></div></div>
<div class="ttc" id="classCCoinControl_html_ad2022117a10ff787973af3d7aa62df6f"><div class="ttname"><a href="classCCoinControl.html#ad2022117a10ff787973af3d7aa62df6f">CCoinControl::ListSelected</a></div><div class="ttdeci">void ListSelected(std::vector&lt; COutPoint &gt; &amp;vOutpoints) const</div><div class="ttdef"><b>Definition:</b> <a href="coincontrol_8h_source.html#l00065">coincontrol.h:65</a></div></div>
<div class="ttc" id="wallet_8h_html_a90b09b05f289ac32704a6446a94566ce"><div class="ttname"><a href="wallet_8h.html#a90b09b05f289ac32704a6446a94566ce">AvailableCoinsType</a></div><div class="ttdeci">AvailableCoinsType</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00101">wallet.h:101</a></div></div>
<div class="ttc" id="group__mapWallet_html_gadd56840ebbe56702eeddbfda1870d628"><div class="ttname"><a href="group__mapWallet.html#gadd56840ebbe56702eeddbfda1870d628">CWalletTx::GetDenominatedCredit</a></div><div class="ttdeci">CAmount GetDenominatedCredit(bool unconfirmed, bool fUseCache=true) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01978">wallet.cpp:1978</a></div></div>
<div class="ttc" id="group__mapWallet_html_gad7edacad1c926bc4b7fe0dc1be95ce31"><div class="ttname"><a href="group__mapWallet.html#gad7edacad1c926bc4b7fe0dc1be95ce31">CWallet::AddCScript</a></div><div class="ttdeci">bool AddCScript(const CScript &amp;redeemScript)</div><div class="ttdoc">Support for BIP 0013 : see https://github.com/bitcoin/bips/blob/master/bip-0013.mediawiki. </div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00349">wallet.cpp:349</a></div></div>
<div class="ttc" id="db_8cpp_html_a0e3d95be19da4a302447fa44703b1979"><div class="ttname"><a href="db_8cpp.html#a0e3d95be19da4a302447fa44703b1979">bitdb</a></div><div class="ttdeci">CDBEnv bitdb</div><div class="ttdef"><b>Definition:</b> <a href="db_8cpp_source.html#l00034">db.cpp:34</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga81b8985d9f44cfbbf71c12f0857a4c54"><div class="ttname"><a href="group__mapWallet.html#ga81b8985d9f44cfbbf71c12f0857a4c54">CWallet::GetKey</a></div><div class="ttdeci">bool GetKey(const CKeyID &amp;address, CKey &amp;keyOut) const</div><div class="ttdoc">GetKey implementation that can derive a HD private key on the fly. </div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00216">wallet.cpp:216</a></div></div>
<div class="ttc" id="util_8cpp_html_af26e0e38b52f08409d399c04cde68c22"><div class="ttname"><a href="util_8cpp.html#af26e0e38b52f08409d399c04cde68c22">fMasterNode</a></div><div class="ttdeci">bool fMasterNode</div><div class="ttdef"><b>Definition:</b> <a href="util_8cpp_source.html#l00108">util.cpp:108</a></div></div>
<div class="ttc" id="classCHDChain_html_a2a0c671986223564036fedb8b8102f6b"><div class="ttname"><a href="classCHDChain.html#a2a0c671986223564036fedb8b8102f6b">CHDChain::GetAccount</a></div><div class="ttdeci">bool GetAccount(uint32_t nAccountIndex, CHDAccount &amp;hdAccountRet)</div><div class="ttdef"><b>Definition:</b> <a href="hdchain_8cpp_source.html#l00184">hdchain.cpp:184</a></div></div>
<div class="ttc" id="structCRecipient_html"><div class="ttname"><a href="structCRecipient.html">CRecipient</a></div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00173">wallet.h:173</a></div></div>
<div class="ttc" id="classCChain_html_af1786dc229c215dea7f727c11df2c8dc"><div class="ttname"><a href="classCChain.html#af1786dc229c215dea7f727c11df2c8dc">CChain::Contains</a></div><div class="ttdeci">bool Contains(const CBlockIndex *pindex) const</div><div class="ttdef"><b>Definition:</b> <a href="chain_8h_source.html#l00384">chain.h:384</a></div></div>
<div class="ttc" id="group__Actions_html_ga7dfe1a401b486f3a36fd3b3b94a803d3"><div class="ttname"><a href="group__Actions.html#ga7dfe1a401b486f3a36fd3b3b94a803d3">CWallet::SelectCoins</a></div><div class="ttdeci">bool SelectCoins(const CAmount &amp;nTargetValue, std::set&lt; std::pair&lt; const CWalletTx *, unsigned int &gt; &gt; &amp;setCoinsRet, CAmount &amp;nValueRet, const CCoinControl *coinControl=NULL, AvailableCoinsType nCoinType=ALL_COINS, bool fUseInstantSend=true) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02623">wallet.cpp:2623</a></div></div>
<div class="ttc" id="classCTxIn_html_aba540fd902366210a6ad6cd9a18fe763"><div class="ttname"><a href="classCTxIn.html#aba540fd902366210a6ad6cd9a18fe763">CTxIn::scriptSig</a></div><div class="ttdeci">CScript scriptSig</div><div class="ttdef"><b>Definition:</b> <a href="transaction_8h_source.html#l00062">transaction.h:62</a></div></div>
<div class="ttc" id="wallet_8h_html_a49f9ebdfbdb1dbabf084277c4d0f88d2"><div class="ttname"><a href="wallet_8h.html#a49f9ebdfbdb1dbabf084277c4d0f88d2">MIN_CHANGE</a></div><div class="ttdeci">static const CAmount MIN_CHANGE</div><div class="ttdoc">minimum change amount </div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00064">wallet.h:64</a></div></div>
<div class="ttc" id="group__Actions_html_ga96a5b2321f27270c5959bc697cca9c9a"><div class="ttname"><a href="group__Actions.html#ga96a5b2321f27270c5959bc697cca9c9a">CWallet::UpdatedTransaction</a></div><div class="ttdeci">bool UpdatedTransaction(const uint256 &amp;hashTx)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04168">wallet.cpp:4168</a></div></div>
<div class="ttc" id="amount_8h_html_a4eaf3a5239714d8c45b851527f7cb564"><div class="ttname"><a href="amount_8h.html#a4eaf3a5239714d8c45b851527f7cb564">CAmount</a></div><div class="ttdeci">int64_t CAmount</div><div class="ttdef"><b>Definition:</b> <a href="amount_8h_source.html#l00014">amount.h:14</a></div></div>
<div class="ttc" id="group__mapWallet_html_gafa48a3ee3096681650c8b9589579e9cb"><div class="ttname"><a href="group__mapWallet.html#gafa48a3ee3096681650c8b9589579e9cb">CWallet::SetMinVersion</a></div><div class="ttdeci">bool SetMinVersion(enum WalletFeature, CWalletDB *pwalletdbIn=NULL, bool fExplicit=false)</div><div class="ttdoc">signify that a particular wallet feature is now used. this may change nWalletVersion and nWalletMaxVe...</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00527">wallet.cpp:527</a></div></div>
<div class="ttc" id="classCDB_html_acfb8a373edb9c4cfab780fb7578b277e"><div class="ttname"><a href="classCDB.html#acfb8a373edb9c4cfab780fb7578b277e">CDB::Rewrite</a></div><div class="ttdeci">static bool Rewrite(const std::string &amp;strFile, const char *pszSkip=NULL)</div><div class="ttdef"><b>Definition:</b> <a href="db_8cpp_source.html#l00340">db.cpp:340</a></div></div>
<div class="ttc" id="classCFeeRate_html"><div class="ttname"><a href="classCFeeRate.html">CFeeRate</a></div><div class="ttdef"><b>Definition:</b> <a href="amount_8h_source.html#l00036">amount.h:36</a></div></div>
<div class="ttc" id="classCHDAccount_html"><div class="ttname"><a href="classCHDAccount.html">CHDAccount</a></div><div class="ttdef"><b>Definition:</b> <a href="hdchain_8h_source.html#l00010">hdchain.h:10</a></div></div>
<div class="ttc" id="classCTxMemPool_html_a8b7a13b5289ab839d4460f41a7da9789"><div class="ttname"><a href="classCTxMemPool.html#a8b7a13b5289ab839d4460f41a7da9789">CTxMemPool::exists</a></div><div class="ttdeci">bool exists(uint256 hash) const</div><div class="ttdef"><b>Definition:</b> <a href="txmempool_8h_source.html#l00563">txmempool.h:563</a></div></div>
<div class="ttc" id="structCOutputEntry_html"><div class="ttname"><a href="structCOutputEntry.html">COutputEntry</a></div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00201">wallet.h:201</a></div></div>
<div class="ttc" id="group__mapWallet_html_gaba1c6108b7d2d3800dd487bab4c4c82e"><div class="ttname"><a href="group__mapWallet.html#gaba1c6108b7d2d3800dd487bab4c4c82e">CWallet::IsChange</a></div><div class="ttdeci">bool IsChange(const CTxOut &amp;txout) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01363">wallet.cpp:1363</a></div></div>
<div class="ttc" id="classCHDPubKey_html_a50ea1ddefc7c812f4224a28f8ae57617"><div class="ttname"><a href="classCHDPubKey.html#a50ea1ddefc7c812f4224a28f8ae57617">CHDPubKey::nAccountIndex</a></div><div class="ttdeci">uint32_t nAccountIndex</div><div class="ttdef"><b>Definition:</b> <a href="hdchain_8h_source.html#l00132">hdchain.h:132</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga8495da27a11e957d31d7cf6e60c7422d"><div class="ttname"><a href="group__mapWallet.html#ga8495da27a11e957d31d7cf6e60c7422d">CWallet::GenerateNewKey</a></div><div class="ttdeci">CPubKey GenerateNewKey(uint32_t nAccountIndex, bool fInternal)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00103">wallet.cpp:103</a></div></div>
<div class="ttc" id="sync_8h_html_acd61d0cb3b49f367728193720014aed0"><div class="ttname"><a href="sync_8h.html#acd61d0cb3b49f367728193720014aed0">AssertLockHeld</a></div><div class="ttdeci">#define AssertLockHeld(cs)</div><div class="ttdef"><b>Definition:</b> <a href="sync_8h_source.html#l00096">sync.h:96</a></div></div>
<div class="ttc" id="classCKeyMetadata_html"><div class="ttname"><a href="classCKeyMetadata.html">CKeyMetadata</a></div><div class="ttdef"><b>Definition:</b> <a href="walletdb_8h_source.html#l00044">walletdb.h:44</a></div></div>
<div class="ttc" id="classCScript_html_a11c26ad1d03fa2d60a733337c21b6719"><div class="ttname"><a href="classCScript.html#a11c26ad1d03fa2d60a733337c21b6719">CScript::IsUnspendable</a></div><div class="ttdeci">bool IsUnspendable() const</div><div class="ttdef"><b>Definition:</b> <a href="script_8h_source.html#l00634">script.h:634</a></div></div>
<div class="ttc" id="classCWalletDB_html"><div class="ttname"><a href="classCWalletDB.html">CWalletDB</a></div><div class="ttdef"><b>Definition:</b> <a href="walletdb_8h_source.html#l00078">walletdb.h:78</a></div></div>
<div class="ttc" id="base58_8h_html"><div class="ttname"><a href="base58_8h.html">base58.h</a></div></div>
<div class="ttc" id="util_8cpp_html_aa2216c761101b28e38757c5cffea3dc5"><div class="ttname"><a href="util_8cpp.html#aa2216c761101b28e38757c5cffea3dc5">fLiteMode</a></div><div class="ttdeci">bool fLiteMode</div><div class="ttdef"><b>Definition:</b> <a href="util_8cpp_source.html#l00109">util.cpp:109</a></div></div>
<div class="ttc" id="classCWalletDB_html_a14f26e53502d1a60dd2b034f830acf03"><div class="ttname"><a href="classCWalletDB.html#a14f26e53502d1a60dd2b034f830acf03">CWalletDB::LoadWallet</a></div><div class="ttdeci">DBErrors LoadWallet(CWallet *pwallet)</div><div class="ttdef"><b>Definition:</b> <a href="walletdb_8cpp_source.html#l00648">walletdb.cpp:648</a></div></div>
<div class="ttc" id="sync_8h_html_a35644e2b75a93da0cb0f6c768f34efa8"><div class="ttname"><a href="sync_8h.html#a35644e2b75a93da0cb0f6c768f34efa8">LOCK2</a></div><div class="ttdeci">#define LOCK2(cs1, cs2)</div><div class="ttdef"><b>Definition:</b> <a href="sync_8h_source.html#l00169">sync.h:169</a></div></div>
<div class="ttc" id="classCWallet_html_ab60ceb8041d1f9cecc70b19d2317c686"><div class="ttname"><a href="classCWallet.html#ab60ceb8041d1f9cecc70b19d2317c686">CWallet::minTxFee</a></div><div class="ttdeci">static CFeeRate minTxFee</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00909">wallet.h:909</a></div></div>
<div class="ttc" id="group__Actions_html_ga71d4b810d6fce19efd455ded3e450a1b"><div class="ttname"><a href="group__Actions.html#ga71d4b810d6fce19efd455ded3e450a1b">CWallet::ZapWalletTx</a></div><div class="ttdeci">DBErrors ZapWalletTx(std::vector&lt; CWalletTx &gt; &amp;vWtx)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l03657">wallet.cpp:3657</a></div></div>
<div class="ttc" id="group__Actions_html_gaa6522c2833bc0a84d216cf102b51ba05"><div class="ttname"><a href="group__Actions.html#gaa6522c2833bc0a84d216cf102b51ba05">CWallet::GetBalance</a></div><div class="ttdeci">CAmount GetBalance() const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02139">wallet.cpp:2139</a></div></div>
<div class="ttc" id="structCExtKey_html_a93cd93ef3311d9dbcf475282a5f80fb2"><div class="ttname"><a href="structCExtKey.html#a93cd93ef3311d9dbcf475282a5f80fb2">CExtKey::key</a></div><div class="ttdeci">CKey key</div><div class="ttdef"><b>Definition:</b> <a href="key_8h_source.html#l00159">key.h:159</a></div></div>
<div class="ttc" id="keystore_8h_html"><div class="ttname"><a href="keystore_8h.html">keystore.h</a></div></div>
<div class="ttc" id="namespacefix-copyright-headers_html_aed10e06fbf20b2e50f73ff2d61f59e45"><div class="ttname"><a href="namespacefix-copyright-headers.html#aed10e06fbf20b2e50f73ff2d61f59e45">fix-copyright-headers.n</a></div><div class="ttdeci">int n</div><div class="ttdef"><b>Definition:</b> <a href="fix-copyright-headers_8py_source.html#l00046">fix-copyright-headers.py:46</a></div></div>
<div class="ttc" id="script_8h_html_a63e349a6089a54da9fe09a3d858648bdad436c18b194473f5ec64c28b774e41b3"><div class="ttname"><a href="script_8h.html#a63e349a6089a54da9fe09a3d858648bdad436c18b194473f5ec64c28b774e41b3">OP_RETURN</a></div><div class="ttdef"><b>Definition:</b> <a href="script_8h_source.html#l00079">script.h:79</a></div></div>
<div class="ttc" id="wallet_8cpp_html_a98515175145feea7ec9776cbf202e446"><div class="ttname"><a href="wallet_8cpp.html#a98515175145feea7ec9776cbf202e446">nTxConfirmTarget</a></div><div class="ttdeci">unsigned int nTxConfirmTarget</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00047">wallet.cpp:47</a></div></div>
<div class="ttc" id="wallet_8cpp_html_acfb04198cec6dc995cbc6adf98e575d3"><div class="ttname"><a href="wallet_8cpp.html#acfb04198cec6dc995cbc6adf98e575d3">fSendFreeTransactions</a></div><div class="ttdeci">bool fSendFreeTransactions</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00049">wallet.cpp:49</a></div></div>
<div class="ttc" id="classCOutput_html_a2eb24fc73c35fcc551b736d68bd1c64a"><div class="ttname"><a href="classCOutput.html#a2eb24fc73c35fcc551b736d68bd1c64a">COutput::nDepth</a></div><div class="ttdeci">int nDepth</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00487">wallet.h:487</a></div></div>
<div class="ttc" id="util_8cpp_html_a5e34214b56ce780359081f030cd9dcba"><div class="ttname"><a href="util_8cpp.html#a5e34214b56ce780359081f030cd9dcba">nWalletBackups</a></div><div class="ttdeci">int nWalletBackups</div><div class="ttdef"><b>Definition:</b> <a href="util_8cpp_source.html#l00117">util.cpp:117</a></div></div>
<div class="ttc" id="classCChainParams_html"><div class="ttname"><a href="classCChainParams.html">CChainParams</a></div><div class="ttdef"><b>Definition:</b> <a href="chainparams_8h_source.html#l00042">chainparams.h:42</a></div></div>
<div class="ttc" id="group__Actions_html_gacb3e4a3acf71120849b4386669ba61ec"><div class="ttname"><a href="group__Actions.html#gacb3e4a3acf71120849b4386669ba61ec">CWallet::KeypoolCountInternalKeys</a></div><div class="ttdeci">size_t KeypoolCountInternalKeys()</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l03773">wallet.cpp:3773</a></div></div>
<div class="ttc" id="group__Actions_html_gaf06799dcbf34d484db36fc6a84a2ff40"><div class="ttname"><a href="group__Actions.html#gaf06799dcbf34d484db36fc6a84a2ff40">CWallet::GetKeyFromPool</a></div><div class="ttdeci">bool GetKeyFromPool(CPubKey &amp;key, bool fInternal)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l03903">wallet.cpp:3903</a></div></div>
<div class="ttc" id="coincontrol_8h_html"><div class="ttname"><a href="coincontrol_8h.html">coincontrol.h</a></div></div>
<div class="ttc" id="classCTxMemPool_html_ac7ee8c06837c7d2688e2d7e3d071bdbb"><div class="ttname"><a href="classCTxMemPool.html#ac7ee8c06837c7d2688e2d7e3d071bdbb">CTxMemPool::cs</a></div><div class="ttdeci">CCriticalSection cs</div><div class="ttdef"><b>Definition:</b> <a href="txmempool_8h_source.html#l00402">txmempool.h:402</a></div></div>
<div class="ttc" id="util_8cpp_html_a64d956f1dda7f9a80ab5d594532b906d"><div class="ttname"><a href="util_8cpp.html#a64d956f1dda7f9a80ab5d594532b906d">GetBoolArg</a></div><div class="ttdeci">bool GetBoolArg(const std::string &amp;strArg, bool fDefault)</div><div class="ttdef"><b>Definition:</b> <a href="util_8cpp_source.html#l00455">util.cpp:455</a></div></div>
<div class="ttc" id="classCCrypter_html"><div class="ttname"><a href="classCCrypter.html">CCrypter</a></div><div class="ttdef"><b>Definition:</b> <a href="crypter_8h_source.html#l00070">crypter.h:70</a></div></div>
<div class="ttc" id="util_8h_html_afc02c0a4258fedfb316be612bb659ba8"><div class="ttname"><a href="util_8h.html#afc02c0a4258fedfb316be612bb659ba8">LogPrintf</a></div><div class="ttdeci">#define LogPrintf(...)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00098">util.h:98</a></div></div>
<div class="ttc" id="txmempool_8h_html"><div class="ttname"><a href="txmempool_8h.html">txmempool.h</a></div></div>
<div class="ttc" id="group__Actions_html_ga9476d8b40414f77f7f3bcd3ba28fa31f"><div class="ttname"><a href="group__Actions.html#ga9476d8b40414f77f7f3bcd3ba28fa31f">CWallet::CreateTransaction</a></div><div class="ttdeci">bool CreateTransaction(const std::vector&lt; CRecipient &gt; &amp;vecSend, CWalletTx &amp;wtxNew, CReserveKey &amp;reservekey, CAmount &amp;nFeeRet, int &amp;nChangePosRet, std::string &amp;strFailReason, const CCoinControl *coinControl=NULL, bool sign=true, AvailableCoinsType nCoinType=ALL_COINS, bool fUseInstantSend=false)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l03173">wallet.cpp:3173</a></div></div>
<div class="ttc" id="validation_8cpp_html_a7e254ea66e047c3d3ed0bedc5997fc4f"><div class="ttname"><a href="validation_8cpp.html#a7e254ea66e047c3d3ed0bedc5997fc4f">CheckFinalTx</a></div><div class="ttdeci">bool CheckFinalTx(const CTransaction &amp;tx, int flags)</div><div class="ttdef"><b>Definition:</b> <a href="validation_8cpp_source.html#l00213">validation.cpp:213</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga21e6580474514f838dfe1446890085a4"><div class="ttname"><a href="group__mapWallet.html#ga21e6580474514f838dfe1446890085a4">CWallet::LoadKeyMetadata</a></div><div class="ttdeci">bool LoadKeyMetadata(const CPubKey &amp;pubkey, const CKeyMetadata &amp;metadata)</div><div class="ttdoc">Load metadata (used by LoadWallet) </div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00334">wallet.cpp:334</a></div></div>
<div class="ttc" id="group__Actions_html_ga2555a9442e58b3c5593fef21f1b39d2d"><div class="ttname"><a href="group__Actions.html#ga2555a9442e58b3c5593fef21f1b39d2d">CWallet::GetOldestKeyPoolTime</a></div><div class="ttdeci">int64_t GetOldestKeyPoolTime()</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l03933">wallet.cpp:3933</a></div></div>
<div class="ttc" id="classCClientUIInterface_html_a32a8930a5b69dd92e25fa474bd6e5420"><div class="ttname"><a href="classCClientUIInterface.html#a32a8930a5b69dd92e25fa474bd6e5420">CClientUIInterface::LoadWallet</a></div><div class="ttdeci">boost::signals2::signal&lt; void(CWallet *wallet)&gt; LoadWallet</div><div class="ttdef"><b>Definition:</b> <a href="ui__interface_8h_source.html#l00101">ui_interface.h:101</a></div></div>
<div class="ttc" id="classCTxIn_html_aed9312051a25380cbd7f123408ab7c20"><div class="ttname"><a href="classCTxIn.html#aed9312051a25380cbd7f123408ab7c20">CTxIn::prevout</a></div><div class="ttdeci">COutPoint prevout</div><div class="ttdef"><b>Definition:</b> <a href="transaction_8h_source.html#l00061">transaction.h:61</a></div></div>
<div class="ttc" id="classCWalletDB_html_ad43630ad28a68c3e8b1a633f09aa0964"><div class="ttname"><a href="classCWalletDB.html#ad43630ad28a68c3e8b1a633f09aa0964">CWalletDB::WritePool</a></div><div class="ttdeci">bool WritePool(int64_t nPool, const CKeyPool &amp;keypool)</div><div class="ttdef"><b>Definition:</b> <a href="walletdb_8cpp_source.html#l00162">walletdb.cpp:162</a></div></div>
<div class="ttc" id="structCompactTallyItem_html"><div class="ttname"><a href="structCompactTallyItem.html">CompactTallyItem</a></div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00111">wallet.h:111</a></div></div>
<div class="ttc" id="classCMerkleTx_html_aff66148b06d22c7ee555b79058211493"><div class="ttname"><a href="classCMerkleTx.html#aff66148b06d22c7ee555b79058211493">CMerkleTx::hashUnset</a></div><div class="ttdeci">bool hashUnset() const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00266">wallet.h:266</a></div></div>
<div class="ttc" id="structCExtKey_html_a4ea6bbc6c9bda4f8d77cade114155569"><div class="ttname"><a href="structCExtKey.html#a4ea6bbc6c9bda4f8d77cade114155569">CExtKey::Neuter</a></div><div class="ttdeci">CExtPubKey Neuter() const</div><div class="ttdef"><b>Definition:</b> <a href="key_8cpp_source.html#l00268">key.cpp:268</a></div></div>
<div class="ttc" id="classCWalletDB_html_a2d07148c367682758ec8fd8f0e8e9ef5"><div class="ttname"><a href="classCWalletDB.html#a2d07148c367682758ec8fd8f0e8e9ef5">CWalletDB::WriteCryptedHDChain</a></div><div class="ttdeci">bool WriteCryptedHDChain(const CHDChain &amp;chain)</div><div class="ttdef"><b>Definition:</b> <a href="walletdb_8cpp_source.html#l01170">walletdb.cpp:1170</a></div></div>
<div class="ttc" id="serialize_8h_html_a48239e478ae730373d1984fe304ca025"><div class="ttname"><a href="serialize_8h.html#a48239e478ae730373d1984fe304ca025">GetSerializeSize</a></div><div class="ttdeci">unsigned int GetSerializeSize(char a, int, int=0)</div><div class="ttdef"><b>Definition:</b> <a href="serialize_8h_source.html#l00202">serialize.h:202</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga022f12d5f56bbe831136388e2ac19969"><div class="ttname"><a href="group__mapWallet.html#ga022f12d5f56bbe831136388e2ac19969">CWallet::AddWatchOnly</a></div><div class="ttdeci">bool AddWatchOnly(const CScript &amp;dest)</div><div class="ttdoc">Adds a watch-only address to the store, and saves it to disk. </div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00374">wallet.cpp:374</a></div></div>
<div class="ttc" id="group__mapWallet_html_gac129c3bbc19abfc6986fefab1ce35aa0"><div class="ttname"><a href="group__mapWallet.html#gac129c3bbc19abfc6986fefab1ce35aa0">CWallet::SetHDChain</a></div><div class="ttdeci">bool SetHDChain(const CHDChain &amp;chain, bool memonly)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01429">wallet.cpp:1429</a></div></div>
<div class="ttc" id="validation_8cpp_html_a5925a10baeee7d4bdce1982bdcbd3bd0"><div class="ttname"><a href="validation_8cpp.html#a5925a10baeee7d4bdce1982bdcbd3bd0">minRelayTxFee</a></div><div class="ttdeci">CFeeRate minRelayTxFee</div><div class="ttdef"><b>Definition:</b> <a href="validation_8cpp_source.html#l00094">validation.cpp:94</a></div></div>
<div class="ttc" id="group__Actions_html_gabd60f5b890e2c62c05c6a2de6322197f"><div class="ttname"><a href="group__Actions.html#gabd60f5b890e2c62c05c6a2de6322197f">CWallet::UnlockCoin</a></div><div class="ttdeci">void UnlockCoin(COutPoint &amp;output)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04204">wallet.cpp:4204</a></div></div>
<div class="ttc" id="checkpoints_8h_html"><div class="ttname"><a href="checkpoints_8h.html">checkpoints.h</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga5be12b9afcf63079b8c009038843b5a2"><div class="ttname"><a href="group__mapWallet.html#ga5be12b9afcf63079b8c009038843b5a2">CWallet::RemoveWatchOnly</a></div><div class="ttdeci">bool RemoveWatchOnly(const CScript &amp;dest)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00385">wallet.cpp:385</a></div></div>
<div class="ttc" id="util_8h_html_aab1f837a2366f424bdc996fdf6352171"><div class="ttname"><a href="util_8h.html#aab1f837a2366f424bdc996fdf6352171">LogPrint</a></div><div class="ttdeci">static int LogPrint(const char *category, const char *format)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00126">util.h:126</a></div></div>
<div class="ttc" id="classCTransaction_html"><div class="ttname"><a href="classCTransaction.html">CTransaction</a></div><div class="ttdef"><b>Definition:</b> <a href="transaction_8h_source.html#l00210">transaction.h:210</a></div></div>
<div class="ttc" id="classCOutPoint_html"><div class="ttname"><a href="classCOutPoint.html">COutPoint</a></div><div class="ttdef"><b>Definition:</b> <a href="transaction_8h_source.html#l00015">transaction.h:15</a></div></div>
<div class="ttc" id="group__Actions_html_gab0c110f14f0429f9de594b2293837621"><div class="ttname"><a href="group__Actions.html#gab0c110f14f0429f9de594b2293837621">CWallet::GetUnconfirmedWatchOnlyBalance</a></div><div class="ttdeci">CAmount GetUnconfirmedWatchOnlyBalance() const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02331">wallet.cpp:2331</a></div></div>
<div class="ttc" id="sync_8h_html_a911fe23f057c2fe5aad629162d6c99d0"><div class="ttname"><a href="sync_8h.html#a911fe23f057c2fe5aad629162d6c99d0">LOCK</a></div><div class="ttdeci">#define LOCK(cs)</div><div class="ttdef"><b>Definition:</b> <a href="sync_8h_source.html#l00168">sync.h:168</a></div></div>
<div class="ttc" id="classCWalletDB_html_a5660d366fee16ab81f3e7d3a97892486"><div class="ttname"><a href="classCWalletDB.html#a5660d366fee16ab81f3e7d3a97892486">CWalletDB::WriteBestBlock</a></div><div class="ttdeci">bool WriteBestBlock(const CBlockLocator &amp;locator)</div><div class="ttdef"><b>Definition:</b> <a href="walletdb_8cpp_source.html#l00132">walletdb.cpp:132</a></div></div>
<div class="ttc" id="classCWalletDB_html_af9fa539659473e1484dc280ec01c0b70"><div class="ttname"><a href="classCWalletDB.html#af9fa539659473e1484dc280ec01c0b70">CWalletDB::Recover</a></div><div class="ttdeci">static bool Recover(CDBEnv &amp;dbenv, const std::string &amp;filename, bool fOnlyKeys)</div><div class="ttdef"><b>Definition:</b> <a href="walletdb_8cpp_source.html#l01066">walletdb.cpp:1066</a></div></div>
<div class="ttc" id="wallet_8h_html_a8d4974dada55a9a10284614c2110ac45"><div class="ttname"><a href="wallet_8h.html#a8d4974dada55a9a10284614c2110ac45">MAX_FREE_TRANSACTION_CREATE_SIZE</a></div><div class="ttdeci">static const unsigned int MAX_FREE_TRANSACTION_CREATE_SIZE</div><div class="ttdoc">Largest (in bytes) free transaction we&amp;#39;re willing to create. </div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00074">wallet.h:74</a></div></div>
<div class="ttc" id="classCWalletDB_html_a76d2ca02898221ab66df5d5f7491164e"><div class="ttname"><a href="classCWalletDB.html#a76d2ca02898221ab66df5d5f7491164e">CWalletDB::WriteTx</a></div><div class="ttdeci">bool WriteTx(uint256 hash, const CWalletTx &amp;wtx)</div><div class="ttdef"><b>Definition:</b> <a href="walletdb_8cpp_source.html#l00058">walletdb.cpp:58</a></div></div>
<div class="ttc" id="namespacekeypool_html"><div class="ttname"><a href="namespacekeypool.html">keypool</a></div><div class="ttdef"><b>Definition:</b> <a href="keypool_8py_source.html#l00001">keypool.py:1</a></div></div>
<div class="ttc" id="classCKeyStore_html"><div class="ttname"><a href="classCKeyStore.html">CKeyStore</a></div><div class="ttdef"><b>Definition:</b> <a href="keystore_8h_source.html#l00020">keystore.h:20</a></div></div>
<div class="ttc" id="group__mapWallet_html_gab94368cf0553687d8f1fec5d2aaa1457"><div class="ttname"><a href="group__mapWallet.html#gab94368cf0553687d8f1fec5d2aaa1457">CWalletTx::GetTxTime</a></div><div class="ttdeci">int64_t GetTxTime() const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01540">wallet.cpp:1540</a></div></div>
<div class="ttc" id="classCCoinControl_html_acd3e8686c8d78535153ed9fd734ef029"><div class="ttname"><a href="classCCoinControl.html#acd3e8686c8d78535153ed9fd734ef029">CCoinControl::fAllowOtherInputs</a></div><div class="ttdeci">bool fAllowOtherInputs</div><div class="ttdoc">If false, allows unselected inputs, but requires all selected inputs be used. </div><div class="ttdef"><b>Definition:</b> <a href="coincontrol_8h_source.html#l00018">coincontrol.h:18</a></div></div>
<div class="ttc" id="instantx_8h_html"><div class="ttname"><a href="instantx_8h.html">instantx.h</a></div></div>
<div class="ttc" id="classCCoinControl_html_ae33d88969604e91eea3167f5626a5c82"><div class="ttname"><a href="classCCoinControl.html#ae33d88969604e91eea3167f5626a5c82">CCoinControl::nMinimumTotalFee</a></div><div class="ttdeci">CAmount nMinimumTotalFee</div><div class="ttdoc">Minimum absolute fee (not per kilobyte) </div><div class="ttdef"><b>Definition:</b> <a href="coincontrol_8h_source.html#l00022">coincontrol.h:22</a></div></div>
<div class="ttc" id="group__mapWallet_html_gaa60b69c7d4ea6063ed83b13d7c6fe695"><div class="ttname"><a href="group__mapWallet.html#gaa60b69c7d4ea6063ed83b13d7c6fe695">CWallet::GetCredit</a></div><div class="ttdeci">CAmount GetCredit(const CTxOut &amp;txout, const isminefilter &amp;filter) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01356">wallet.cpp:1356</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga1bb7c19e7dd483f231f8077fb7fb942b"><div class="ttname"><a href="group__mapWallet.html#ga1bb7c19e7dd483f231f8077fb7fb942b">CWallet::SetMaxVersion</a></div><div class="ttdeci">bool SetMaxVersion(int nVersion)</div><div class="ttdoc">change which version we&amp;#39;re allowed to upgrade to (note that this does not immediately imply upgrading...</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00554">wallet.cpp:554</a></div></div>
<div class="ttc" id="classCWalletDB_html_a507690da431ef61244941ad39c308aeb"><div class="ttname"><a href="classCWalletDB.html#a507690da431ef61244941ad39c308aeb">CWalletDB::WriteMasterKey</a></div><div class="ttdeci">bool WriteMasterKey(unsigned int nID, const CMasterKey &amp;kMasterKey)</div><div class="ttdef"><b>Definition:</b> <a href="walletdb_8cpp_source.html#l00108">walletdb.cpp:108</a></div></div>
<div class="ttc" id="classCMasterKey_html_aec53e0be82d1053cf5a70a67fd4cc25d"><div class="ttname"><a href="classCMasterKey.html#aec53e0be82d1053cf5a70a67fd4cc25d">CMasterKey::nDeriveIterations</a></div><div class="ttdeci">unsigned int nDeriveIterations</div><div class="ttdef"><b>Definition:</b> <a href="crypter_8h_source.html#l00041">crypter.h:41</a></div></div>
<div class="ttc" id="group__mapWallet_html_gae290e7a17f18e54ee3352430b745b474"><div class="ttname"><a href="group__mapWallet.html#gae290e7a17f18e54ee3352430b745b474">CWallet::HaveKey</a></div><div class="ttdeci">bool HaveKey(const CKeyID &amp;address) const</div><div class="ttdoc">HaveKey implementation that also checks the mapHdPubKeys. </div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00244">wallet.cpp:244</a></div></div>
<div class="ttc" id="policy_8h_html"><div class="ttname"><a href="policy_8h.html">policy.h</a></div></div>
<div class="ttc" id="keepass_8h_html"><div class="ttname"><a href="keepass_8h.html">keepass.h</a></div></div>
<div class="ttc" id="consensus_2validation_8h_html"><div class="ttname"><a href="consensus_2validation_8h.html">validation.h</a></div></div>
<div class="ttc" id="classCAddressBookData_html"><div class="ttname"><a href="classCAddressBookData.html">CAddressBookData</a></div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00158">wallet.h:158</a></div></div>
<div class="ttc" id="secure_8h_html_a74df98445c5299c9e987447c7b123e55"><div class="ttname"><a href="secure_8h.html#a74df98445c5299c9e987447c7b123e55">SecureVector</a></div><div class="ttdeci">std::vector&lt; unsigned char, secure_allocator&lt; unsigned char &gt; &gt; SecureVector</div><div class="ttdef"><b>Definition:</b> <a href="secure_8h_source.html#l00063">secure.h:63</a></div></div>
<div class="ttc" id="uint256_8h_html_a52e679560cc1ebf68f878ed69e38f259"><div class="ttname"><a href="uint256_8h.html#a52e679560cc1ebf68f878ed69e38f259">uint256S</a></div><div class="ttdeci">uint256 uint256S(const char *str)</div><div class="ttdef"><b>Definition:</b> <a href="uint256_8h_source.html#l00140">uint256.h:140</a></div></div>
<div class="ttc" id="classCDBEnv_html_aaaef61cd032e25144c06e405fb7f93cf"><div class="ttname"><a href="classCDBEnv.html#aaaef61cd032e25144c06e405fb7f93cf">CDBEnv::Open</a></div><div class="ttdeci">bool Open(const boost::filesystem::path &amp;path)</div><div class="ttdef"><b>Definition:</b> <a href="db_8cpp_source.html#l00074">db.cpp:74</a></div></div>
<div class="ttc" id="classCHDAccount_html_a1ff7dbe6c3d28c85d2111368cdd2ab6f"><div class="ttname"><a href="classCHDAccount.html#a1ff7dbe6c3d28c85d2111368cdd2ab6f">CHDAccount::nExternalChainCounter</a></div><div class="ttdeci">uint32_t nExternalChainCounter</div><div class="ttdef"><b>Definition:</b> <a href="hdchain_8h_source.html#l00013">hdchain.h:13</a></div></div>
<div class="ttc" id="ui__interface_8h_html_a293ba931937e469a6327b8d6b4872969a5ab4035117df6ed11f4f5cd2f2d732e5"><div class="ttname"><a href="ui__interface_8h.html#a293ba931937e469a6327b8d6b4872969a5ab4035117df6ed11f4f5cd2f2d732e5">CT_UPDATED</a></div><div class="ttdef"><b>Definition:</b> <a href="ui__interface_8h_source.html#l00024">ui_interface.h:24</a></div></div>
<div class="ttc" id="init_8cpp_html_a4fe31b510fc1c2b95321cedb9f89e8de"><div class="ttname"><a href="init_8cpp.html#a4fe31b510fc1c2b95321cedb9f89e8de">uiInterface</a></div><div class="ttdeci">CClientUIInterface uiInterface</div><div class="ttdef"><b>Definition:</b> <a href="init_8cpp_source.html#l00130">init.cpp:130</a></div></div>
<div class="ttc" id="group__Actions_html_ga2a8edfdfa5b1474b2b047daa89037278"><div class="ttname"><a href="group__Actions.html#ga2a8edfdfa5b1474b2b047daa89037278">CWallet::GetAverageAnonymizedRounds</a></div><div class="ttdeci">float GetAverageAnonymizedRounds() const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02202">wallet.cpp:2202</a></div></div>
<div class="ttc" id="classCWallet_html_a097ee5497796e133776030c27e6661f8"><div class="ttname"><a href="classCWallet.html#a097ee5497796e133776030c27e6661f8">CWallet::fallbackFee</a></div><div class="ttdeci">static CFeeRate fallbackFee</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00910">wallet.h:910</a></div></div>
<div class="ttc" id="classCBasicKeyStore_html_a56249ce3540398999cd397eeb662e836"><div class="ttname"><a href="classCBasicKeyStore.html#a56249ce3540398999cd397eeb662e836">CBasicKeyStore::AddCScript</a></div><div class="ttdeci">virtual bool AddCScript(const CScript &amp;redeemScript)</div><div class="ttdoc">Support for BIP 0013 : see https://github.com/bitcoin/bips/blob/master/bip-0013.mediawiki. </div><div class="ttdef"><b>Definition:</b> <a href="keystore_8cpp_source.html#l00041">keystore.cpp:41</a></div></div>
<div class="ttc" id="classCChain_html_ad4758bc8872ce065a9579f77c3171d40"><div class="ttname"><a href="classCChain.html#ad4758bc8872ce065a9579f77c3171d40">CChain::Height</a></div><div class="ttdeci">int Height() const</div><div class="ttdef"><b>Definition:</b> <a href="chain_8h_source.html#l00397">chain.h:397</a></div></div>
<div class="ttc" id="classCAffectedKeysVisitor_html_a749859ce2a826e2d60c8fe31685efae3"><div class="ttname"><a href="classCAffectedKeysVisitor.html#a749859ce2a826e2d60c8fe31685efae3">CAffectedKeysVisitor::Process</a></div><div class="ttdeci">void Process(const CScript &amp;script)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04249">wallet.cpp:4249</a></div></div>
<div class="ttc" id="classCWalletTx_html_a3c9ba52ce7203b9f16235785a09c383c"><div class="ttname"><a href="classCWalletTx.html#a3c9ba52ce7203b9f16235785a09c383c">CWalletTx::nTimeSmart</a></div><div class="ttdeci">unsigned int nTimeSmart</div><div class="ttdoc">time received by this node </div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00285">wallet.h:285</a></div></div>
<div class="ttc" id="classCWallet_html_a8f82359f767da6eadeebd3f5efeed9d0"><div class="ttname"><a href="classCWallet.html#a8f82359f767da6eadeebd3f5efeed9d0">CWallet::GetDestData</a></div><div class="ttdeci">bool GetDestData(const CTxDestination &amp;dest, const std::string &amp;key, std::string *value) const</div><div class="ttdoc">Look up a destination data tuple in the store, return true if found false otherwise. </div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04351">wallet.cpp:4351</a></div></div>
<div class="ttc" id="classCWalletDB_html_ad1b3bce77e9dd6ddd8c668a469c38f0a"><div class="ttname"><a href="classCWalletDB.html#ad1b3bce77e9dd6ddd8c668a469c38f0a">CWalletDB::WriteName</a></div><div class="ttdeci">bool WriteName(const std::string &amp;strAddress, const std::string &amp;strName)</div><div class="ttdef"><b>Definition:</b> <a href="walletdb_8cpp_source.html#l00032">walletdb.cpp:32</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga5660023a09ecf8107cb2b3df8d3d0e40"><div class="ttname"><a href="group__mapWallet.html#ga5660023a09ecf8107cb2b3df8d3d0e40">CWallet::ResendWalletTransactionsBefore</a></div><div class="ttdeci">std::vector&lt; uint256 &gt; ResendWalletTransactionsBefore(int64_t nTime, CConnman *connman)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02081">wallet.cpp:2081</a></div></div>
<div class="ttc" id="group__Actions_html_gae9f04ff3adc27b7fec2fd0a794af892d"><div class="ttname"><a href="group__Actions.html#gae9f04ff3adc27b7fec2fd0a794af892d">CWallet::ConvertList</a></div><div class="ttdeci">bool ConvertList(std::vector&lt; CTxIn &gt; vecTxIn, std::vector&lt; CAmount &gt; &amp;vecAmounts)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l03158">wallet.cpp:3158</a></div></div>
<div class="ttc" id="group__Actions_html_ga64a76474added26d9fbf904b5dd978a8"><div class="ttname"><a href="group__Actions.html#ga64a76474added26d9fbf904b5dd978a8">CWallet::GetMinimumFee</a></div><div class="ttdeci">static CAmount GetMinimumFee(unsigned int nTxBytes, unsigned int nConfirmTarget, const CTxMemPool &amp;pool)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l03596">wallet.cpp:3596</a></div></div>
<div class="ttc" id="instantx_8cpp_html_a6ed4b104bfd9f775e0c0a3524a6b4955"><div class="ttname"><a href="instantx_8cpp.html#a6ed4b104bfd9f775e0c0a3524a6b4955">instantsend</a></div><div class="ttdeci">CInstantSend instantsend</div><div class="ttdef"><b>Definition:</b> <a href="instantx_8cpp_source.html#l00030">instantx.cpp:30</a></div></div>
<div class="ttc" id="wallet_8h_html_a08e44dbb6db8502639f09f72737afd19"><div class="ttname"><a href="wallet_8h.html#a08e44dbb6db8502639f09f72737afd19">DEFAULT_TRANSACTION_MAXFEE</a></div><div class="ttdeci">static const CAmount DEFAULT_TRANSACTION_MAXFEE</div><div class="ttdoc">-maxtxfee default </div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00062">wallet.h:62</a></div></div>
<div class="ttc" id="utilstrencodings_8cpp_html_abea395175fbc4a788ed0f0a41710b8a7"><div class="ttname"><a href="utilstrencodings_8cpp.html#abea395175fbc4a788ed0f0a41710b8a7">ParseHex</a></div><div class="ttdeci">vector&lt; unsigned char &gt; ParseHex(const char *psz)</div><div class="ttdef"><b>Definition:</b> <a href="utilstrencodings_8cpp_source.html#l00069">utilstrencodings.cpp:69</a></div></div>
<div class="ttc" id="group__Actions_html_gaa182f6de943295062748ab42e64c9203"><div class="ttname"><a href="group__Actions.html#gaa182f6de943295062748ab42e64c9203">CWallet::GetAllReserveKeys</a></div><div class="ttdeci">void GetAllReserveKeys(std::set&lt; CKeyID &gt; &amp;setAddress) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04151">wallet.cpp:4151</a></div></div>
<div class="ttc" id="txmempool_8h_html_ae6c67bac023a01f1ae29b7f2f4505bba"><div class="ttname"><a href="txmempool_8h.html#ae6c67bac023a01f1ae29b7f2f4505bba">AllowFree</a></div><div class="ttdeci">bool AllowFree(double dPriority)</div><div class="ttdef"><b>Definition:</b> <a href="txmempool_8h_source.html#l00031">txmempool.h:31</a></div></div>
<div class="ttc" id="classCWalletDB_html_a7ebef5e0c7f604aa2159ba96d527e3a2"><div class="ttname"><a href="classCWalletDB.html#a7ebef5e0c7f604aa2159ba96d527e3a2">CWalletDB::WriteKey</a></div><div class="ttdeci">bool WriteKey(const CPubKey &amp;vchPubKey, const CPrivKey &amp;vchPrivKey, const CKeyMetadata &amp;keyMeta)</div><div class="ttdef"><b>Definition:</b> <a href="walletdb_8cpp_source.html#l00070">walletdb.cpp:70</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga7757c17a323e5f6f75c92acb398d3568"><div class="ttname"><a href="group__mapWallet.html#ga7757c17a323e5f6f75c92acb398d3568">CWalletTx::GetDebit</a></div><div class="ttdeci">CAmount GetDebit(const isminefilter &amp;filter) const</div><div class="ttdoc">filter decides which addresses will count towards the debit </div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01793">wallet.cpp:1793</a></div></div>
<div class="ttc" id="group__Actions_html_ga7353ba1e79fc4167fbfbe79b41698fa7"><div class="ttname"><a href="group__Actions.html#ga7353ba1e79fc4167fbfbe79b41698fa7">CWallet::NewKeyPool</a></div><div class="ttdeci">bool NewKeyPool()</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l03743">wallet.cpp:3743</a></div></div>
<div class="ttc" id="classCTxLockRequest_html"><div class="ttname"><a href="classCTxLockRequest.html">CTxLockRequest</a></div><div class="ttdef"><b>Definition:</b> <a href="instantx_8h_source.html#l00121">instantx.h:121</a></div></div>
<div class="ttc" id="classCWalletTx_html_a923dbbba343b8f4d1c3d89ae73bdcea0"><div class="ttname"><a href="classCWalletTx.html#a923dbbba343b8f4d1c3d89ae73bdcea0">CWalletTx::vOrderForm</a></div><div class="ttdeci">std::vector&lt; std::pair&lt; std::string, std::string &gt; &gt; vOrderForm</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00282">wallet.h:282</a></div></div>
<div class="ttc" id="classCInstantSend_html_a2b5bebbef6c466ee34706eeb9f53d4a7"><div class="ttname"><a href="classCInstantSend.html#a2b5bebbef6c466ee34706eeb9f53d4a7">CInstantSend::IsLockedInstantSendTransaction</a></div><div class="ttdeci">bool IsLockedInstantSendTransaction(const uint256 &amp;txHash)</div><div class="ttdef"><b>Definition:</b> <a href="instantx_8cpp_source.html#l00770">instantx.cpp:770</a></div></div>
<div class="ttc" id="wallet_8h_html_a91574d7e11957e02e07206d769a4e829"><div class="ttname"><a href="wallet_8h.html#a91574d7e11957e02e07206d769a4e829">DEFAULT_LEGACY_TRANSACTION_MINFEE</a></div><div class="ttdeci">static const CAmount DEFAULT_LEGACY_TRANSACTION_MINFEE</div><div class="ttdoc">-mintxfee default </div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00059">wallet.h:59</a></div></div>
<div class="ttc" id="validation_8cpp_html_adb31995c443ae2aef1d2f1c350de0419"><div class="ttname"><a href="validation_8cpp.html#adb31995c443ae2aef1d2f1c350de0419">chainActive</a></div><div class="ttdeci">CChain chainActive</div><div class="ttdef"><b>Definition:</b> <a href="validation_8cpp_source.html#l00065">validation.cpp:65</a></div></div>
<div class="ttc" id="wallet_8h_html_aa805d0c9ae7328aa3e88dca182c186f5"><div class="ttname"><a href="wallet_8h.html#aa805d0c9ae7328aa3e88dca182c186f5">DEFAULT_SEND_FREE_TRANSACTIONS</a></div><div class="ttdeci">static const bool DEFAULT_SEND_FREE_TRANSACTIONS</div><div class="ttdoc">Default for -sendfreetransactions. </div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00068">wallet.h:68</a></div></div>
<div class="ttc" id="classbase__blob_html_a7a0d25782830d8b087c4da839f3ccdeb"><div class="ttname"><a href="classbase__blob.html#a7a0d25782830d8b087c4da839f3ccdeb">base_blob::ToString</a></div><div class="ttdeci">std::string ToString() const</div><div class="ttdef"><b>Definition:</b> <a href="uint256_8cpp_source.html#l00065">uint256.cpp:65</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga60b3bce6e7e2c091287085b2facb08d0"><div class="ttname"><a href="group__mapWallet.html#ga60b3bce6e7e2c091287085b2facb08d0">CWallet::SetCryptedHDChain</a></div><div class="ttdeci">bool SetCryptedHDChain(const CHDChain &amp;chain, bool memonly)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01442">wallet.cpp:1442</a></div></div>
<div class="ttc" id="classCPrivateSend_html_a39fc81255d44c5901513a0c57e3b525f"><div class="ttname"><a href="classCPrivateSend.html#a39fc81255d44c5901513a0c57e3b525f">CPrivateSend::GetDenominationsBits</a></div><div class="ttdeci">static bool GetDenominationsBits(int nDenom, std::vector&lt; int &gt; &amp;vecBitsRet)</div><div class="ttdef"><b>Definition:</b> <a href="privatesend_8cpp_source.html#l00303">privatesend.cpp:303</a></div></div>
<div class="ttc" id="standard_8cpp_html_ae40f28d3b46c21033f6ee1f1200d0321"><div class="ttname"><a href="standard_8cpp.html#ae40f28d3b46c21033f6ee1f1200d0321">GetScriptForDestination</a></div><div class="ttdeci">CScript GetScriptForDestination(const CTxDestination &amp;dest)</div><div class="ttdef"><b>Definition:</b> <a href="standard_8cpp_source.html#l00262">standard.cpp:262</a></div></div>
<div class="ttc" id="wallet_8h_html_a2e1ad8571f6e40aa90375ad63fe47a92"><div class="ttname"><a href="wallet_8h.html#a2e1ad8571f6e40aa90375ad63fe47a92">DEFAULT_LEGACY_FALLBACK_FEE</a></div><div class="ttdeci">static const CAmount DEFAULT_LEGACY_FALLBACK_FEE</div><div class="ttdoc">-fallbackfee default </div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00051">wallet.h:51</a></div></div>
<div class="ttc" id="classCAffectedKeysVisitor_html_a97f7f932abb21ae791993a284183ab89"><div class="ttname"><a href="classCAffectedKeysVisitor.html#a97f7f932abb21ae791993a284183ab89">CAffectedKeysVisitor::CAffectedKeysVisitor</a></div><div class="ttdeci">CAffectedKeysVisitor(const CKeyStore &amp;keystoreIn, std::vector&lt; CKeyID &gt; &amp;vKeysIn)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04247">wallet.cpp:4247</a></div></div>
<div class="ttc" id="classCDBEnv_html_a6fbf26da5d7f8f64a77a3ba15e4df244a0c9f58677b786e700258e8ad29579d75"><div class="ttname"><a href="classCDBEnv.html#a6fbf26da5d7f8f64a77a3ba15e4df244a0c9f58677b786e700258e8ad29579d75">CDBEnv::RECOVER_FAIL</a></div><div class="ttdef"><b>Definition:</b> <a href="db_8h_source.html#l00060">db.h:60</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga75c673700a9d5fa2b0ab63bfd094b045"><div class="ttname"><a href="group__mapWallet.html#ga75c673700a9d5fa2b0ab63bfd094b045">CWalletTx::GetAmounts</a></div><div class="ttdeci">void GetAmounts(std::list&lt; COutputEntry &gt; &amp;listReceived, std::list&lt; COutputEntry &gt; &amp;listSent, CAmount &amp;nFee, std::string &amp;strSentAccount, const isminefilter &amp;filter) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01585">wallet.cpp:1585</a></div></div>
<div class="ttc" id="group__Actions_html_ga493d06f41ca9571f2a42c8581a3952d8"><div class="ttname"><a href="group__Actions.html#ga493d06f41ca9571f2a42c8581a3952d8">CReserveKey::KeepKey</a></div><div class="ttdeci">void KeepKey()</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04120">wallet.cpp:4120</a></div></div>
<div class="ttc" id="wallet__ismine_8h_html_aaa5e1639d76aef50f70532acc3302c4b"><div class="ttname"><a href="wallet__ismine_8h.html#aaa5e1639d76aef50f70532acc3302c4b">isminefilter</a></div><div class="ttdeci">uint8_t isminefilter</div><div class="ttdef"><b>Definition:</b> <a href="wallet__ismine_8h_source.html#l00029">wallet_ismine.h:29</a></div></div>
<div class="ttc" id="timedata_8h_html"><div class="ttname"><a href="timedata_8h.html">timedata.h</a></div></div>
<div class="ttc" id="classCWalletTx_html"><div class="ttname"><a href="classCWalletTx.html">CWalletTx</a></div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00275">wallet.h:275</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga5ab4855aac6f4b335421944403e44d6d"><div class="ttname"><a href="group__mapWallet.html#ga5ab4855aac6f4b335421944403e44d6d">CWallet::GetDebit</a></div><div class="ttdeci">CAmount GetDebit(const CTxIn &amp;txin, const isminefilter &amp;filter) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01225">wallet.cpp:1225</a></div></div>
<div class="ttc" id="classCWallet_html_a0d78de06c0b02f773b7ecbb21d42aada"><div class="ttname"><a href="classCWallet.html#a0d78de06c0b02f773b7ecbb21d42aada">CWallet::LoadDestData</a></div><div class="ttdeci">bool LoadDestData(const CTxDestination &amp;dest, const std::string &amp;key, const std::string &amp;value)</div><div class="ttdoc">Adds a destination data tuple to the store, without saving it to disk. </div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04345">wallet.cpp:4345</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga663593382cf8b0fb993e2515261bb017"><div class="ttname"><a href="group__mapWallet.html#ga663593382cf8b0fb993e2515261bb017">CWalletTx::IsEquivalentTo</a></div><div class="ttdeci">bool IsEquivalentTo(const CWalletTx &amp;tx) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02072">wallet.cpp:2072</a></div></div>
<div class="ttc" id="utilmoneystr_8cpp_html_a0043c9abedcbce2d7d1d2cacaf595c9e"><div class="ttname"><a href="utilmoneystr_8cpp.html#a0043c9abedcbce2d7d1d2cacaf595c9e">FormatMoney</a></div><div class="ttdeci">std::string FormatMoney(const CAmount &amp;n)</div><div class="ttdef"><b>Definition:</b> <a href="utilmoneystr_8cpp_source.html#l00014">utilmoneystr.cpp:14</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga070aa9135ca31d630fa798a868c0b59c"><div class="ttname"><a href="group__mapWallet.html#ga070aa9135ca31d630fa798a868c0b59c">CWallet::IsDenominatedAmount</a></div><div class="ttdeci">bool IsDenominatedAmount(CAmount nInputAmount) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01343">wallet.cpp:1343</a></div></div>
<div class="ttc" id="classCMasterKey_html_ab52e0eaabb0eb3af78fc4879c192e163"><div class="ttname"><a href="classCMasterKey.html#ab52e0eaabb0eb3af78fc4879c192e163">CMasterKey::vchCryptedKey</a></div><div class="ttdeci">std::vector&lt; unsigned char &gt; vchCryptedKey</div><div class="ttdef"><b>Definition:</b> <a href="crypter_8h_source.html#l00036">crypter.h:36</a></div></div>
<div class="ttc" id="classCTxOut_html_a25bf3f2f4befb22a6a0be45784fe57e2"><div class="ttname"><a href="classCTxOut.html#a25bf3f2f4befb22a6a0be45784fe57e2">CTxOut::scriptPubKey</a></div><div class="ttdeci">CScript scriptPubKey</div><div class="ttdef"><b>Definition:</b> <a href="transaction_8h_source.html#l00137">transaction.h:137</a></div></div>
<div class="ttc" id="classCWalletDB_html_ac78d839fbda5164c4134ab67911139ca"><div class="ttname"><a href="classCWalletDB.html#ac78d839fbda5164c4134ab67911139ca">CWalletDB::ErasePool</a></div><div class="ttdeci">bool ErasePool(int64_t nPool)</div><div class="ttdef"><b>Definition:</b> <a href="walletdb_8cpp_source.html#l00168">walletdb.cpp:168</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga73b98163dac6f2e45bf3e75e0dc3c94f"><div class="ttname"><a href="group__mapWallet.html#ga73b98163dac6f2e45bf3e75e0dc3c94f">CWallet::AddToSpends</a></div><div class="ttdeci">void AddToSpends(const COutPoint &amp;outpoint, const uint256 &amp;wtxid)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00701">wallet.cpp:701</a></div></div>
<div class="ttc" id="classCWalletDB_html_ab008b6c6e09a60a988cac6e1a9e11886"><div class="ttname"><a href="classCWalletDB.html#ab008b6c6e09a60a988cac6e1a9e11886">CWalletDB::WriteMinVersion</a></div><div class="ttdeci">bool WriteMinVersion(int nVersion)</div><div class="ttdef"><b>Definition:</b> <a href="walletdb_8cpp_source.html#l00174">walletdb.cpp:174</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga26fd9a9f48230daf346500d2afb6115e"><div class="ttname"><a href="group__mapWallet.html#ga26fd9a9f48230daf346500d2afb6115e">CWallet::MarkDirty</a></div><div class="ttdeci">void MarkDirty()</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00868">wallet.cpp:868</a></div></div>
<div class="ttc" id="namespaceCheckpoints_html_aa2e60b5114a431ccaff32a6e1f418af1"><div class="ttname"><a href="namespaceCheckpoints.html#aa2e60b5114a431ccaff32a6e1f418af1">Checkpoints::GuessVerificationProgress</a></div><div class="ttdeci">double GuessVerificationProgress(const CCheckpointData &amp;data, CBlockIndex *pindex, bool fSigchecks)</div><div class="ttdoc">Guess how far we are in the verification process at the given block index. </div><div class="ttdef"><b>Definition:</b> <a href="checkpoints_8cpp_source.html#l00030">checkpoints.cpp:30</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga009ea6afd94f2c5d560ae063883628b5"><div class="ttname"><a href="group__mapWallet.html#ga009ea6afd94f2c5d560ae063883628b5">CWallet::MarkConflicted</a></div><div class="ttdeci">void MarkConflicted(const uint256 &amp;hashBlock, const uint256 &amp;hashTx)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01127">wallet.cpp:1127</a></div></div>
<div class="ttc" id="group__Actions_html_ga5d7b244b8ed0cbe24233ee0b6ca3cae0"><div class="ttname"><a href="group__Actions.html#ga5d7b244b8ed0cbe24233ee0b6ca3cae0">CWallet::LoadWallet</a></div><div class="ttdeci">DBErrors LoadWallet(bool &amp;fFirstRunRet)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l03616">wallet.cpp:3616</a></div></div>
<div class="ttc" id="group__Actions_html_ga94971f63a4a5ed96e2c5c6760a29bfa6"><div class="ttname"><a href="group__Actions.html#ga94971f63a4a5ed96e2c5c6760a29bfa6">CWallet::CreateCollateralTransaction</a></div><div class="ttdeci">bool CreateCollateralTransaction(CMutableTransaction &amp;txCollateral, std::string &amp;strReason)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l03088">wallet.cpp:3088</a></div></div>
<div class="ttc" id="classCChainParams_html_a55760ebfb6727f84d98295fa40f08940"><div class="ttname"><a href="classCChainParams.html#a55760ebfb6727f84d98295fa40f08940">CChainParams::Checkpoints</a></div><div class="ttdeci">const CCheckpointData &amp; Checkpoints() const</div><div class="ttdef"><b>Definition:</b> <a href="chainparams_8h_source.html#l00080">chainparams.h:80</a></div></div>
<div class="ttc" id="walletdb_8h_html_a7558d92e9ea1d446075da1b514c4a944aef89bee2c244fcd980d6cf7edc5bf2d6"><div class="ttname"><a href="walletdb_8h.html#a7558d92e9ea1d446075da1b514c4a944aef89bee2c244fcd980d6cf7edc5bf2d6">DB_NEED_REWRITE</a></div><div class="ttdef"><b>Definition:</b> <a href="walletdb_8h_source.html#l00041">walletdb.h:41</a></div></div>
<div class="ttc" id="classCHDPubKey_html"><div class="ttname"><a href="classCHDPubKey.html">CHDPubKey</a></div><div class="ttdef"><b>Definition:</b> <a href="hdchain_8h_source.html#l00123">hdchain.h:123</a></div></div>
<div class="ttc" id="classCCrypter_html_a4dbabed4975d4435d22c76deac43df7f"><div class="ttname"><a href="classCCrypter.html#a4dbabed4975d4435d22c76deac43df7f">CCrypter::Decrypt</a></div><div class="ttdeci">bool Decrypt(const std::vector&lt; unsigned char &gt; &amp;vchCiphertext, CKeyingMaterial &amp;vchPlaintext)</div><div class="ttdef"><b>Definition:</b> <a href="crypter_8cpp_source.html#l00081">crypter.cpp:81</a></div></div>
<div class="ttc" id="structCMutableTransaction_html_aca14a252c78e4af2dfe68d7ea67a77dc"><div class="ttname"><a href="structCMutableTransaction.html#aca14a252c78e4af2dfe68d7ea67a77dc">CMutableTransaction::vout</a></div><div class="ttdeci">std::vector&lt; CTxOut &gt; vout</div><div class="ttdef"><b>Definition:</b> <a href="transaction_8h_source.html#l00307">transaction.h:307</a></div></div>
<div class="ttc" id="chain_8h_html"><div class="ttname"><a href="chain_8h.html">chain.h</a></div></div>
<div class="ttc" id="namespacezmq__sub_html_ab82b53c595929ff5ab2d30ec91fd539a"><div class="ttname"><a href="namespacezmq__sub.html#ab82b53c595929ff5ab2d30ec91fd539a">zmq_sub.msg</a></div><div class="ttdeci">msg</div><div class="ttdef"><b>Definition:</b> <a href="zmq__sub_8py_source.html#l00022">zmq_sub.py:22</a></div></div>
<div class="ttc" id="classCWalletTx_html_af51e160ff1d9d78986e9f239c7ac7a35"><div class="ttname"><a href="classCWalletTx.html#af51e160ff1d9d78986e9f239c7ac7a35">CWalletTx::nOrderPos</a></div><div class="ttdeci">int64_t nOrderPos</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00288">wallet.h:288</a></div></div>
<div class="ttc" id="classCWallet_html_a9a03cf9972842588178387839f0ded3c"><div class="ttname"><a href="classCWallet.html#a9a03cf9972842588178387839f0ded3c">CWallet::EraseDestData</a></div><div class="ttdeci">bool EraseDestData(const CTxDestination &amp;dest, const std::string &amp;key)</div><div class="ttdoc">Erases a destination data tuple in the store and on disk. </div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04336">wallet.cpp:4336</a></div></div>
<div class="ttc" id="group__Actions_html_ga5444fca647f090a8d55f20fe8ca3f4d1"><div class="ttname"><a href="group__Actions.html#ga5444fca647f090a8d55f20fe8ca3f4d1">CWallet::SelectCoinsGrouppedByAddresses</a></div><div class="ttdeci">bool SelectCoinsGrouppedByAddresses(std::vector&lt; CompactTallyItem &gt; &amp;vecTallyRet, bool fSkipDenominated=true, bool fAnonymizable=true, bool fSkipUnconfirmed=true) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02831">wallet.cpp:2831</a></div></div>
<div class="ttc" id="instantx_8cpp_html_a4c2d7f12c40dc0049df471597e124dbe"><div class="ttname"><a href="instantx_8cpp.html#a4c2d7f12c40dc0049df471597e124dbe">nInstantSendDepth</a></div><div class="ttdeci">int nInstantSendDepth</div><div class="ttdef"><b>Definition:</b> <a href="instantx_8cpp_source.html#l00027">instantx.cpp:27</a></div></div>
<div class="ttc" id="walletmodel_8cpp_html_a3bb83e84ffdc22a5e9ea4e5b26697805"><div class="ttname"><a href="walletmodel_8cpp.html#a3bb83e84ffdc22a5e9ea4e5b26697805">NotifyAddressBookChanged</a></div><div class="ttdeci">static void NotifyAddressBookChanged(WalletModel *walletmodel, CWallet *wallet, const CTxDestination &amp;address, const std::string &amp;label, bool isMine, const std::string &amp;purpose, ChangeType status)</div><div class="ttdef"><b>Definition:</b> <a href="walletmodel_8cpp_source.html#l00518">walletmodel.cpp:518</a></div></div>
<div class="ttc" id="spork_8cpp_html_af6873019c3095ea6b554795e4040395c"><div class="ttname"><a href="spork_8cpp.html#af6873019c3095ea6b554795e4040395c">sporkManager</a></div><div class="ttdeci">CSporkManager sporkManager</div><div class="ttdef"><b>Definition:</b> <a href="spork_8cpp_source.html#l00014">spork.cpp:14</a></div></div>
<div class="ttc" id="structCMutableTransaction_html_ae9685a37d424cd00e3badda28260c848"><div class="ttname"><a href="structCMutableTransaction.html#ae9685a37d424cd00e3badda28260c848">CMutableTransaction::nLockTime</a></div><div class="ttdeci">uint32_t nLockTime</div><div class="ttdef"><b>Definition:</b> <a href="transaction_8h_source.html#l00308">transaction.h:308</a></div></div>
<div class="ttc" id="classCWalletTx_html_a099b5ca562f8a8378124b345b9123f25"><div class="ttname"><a href="classCWalletTx.html#a099b5ca562f8a8378124b345b9123f25">CWalletTx::strFromAccount</a></div><div class="ttdeci">std::string strFromAccount</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00287">wallet.h:287</a></div></div>
<div class="ttc" id="group__Actions_html_ga548e31853748ca588c65758e5c594ca3"><div class="ttname"><a href="group__Actions.html#ga548e31853748ca588c65758e5c594ca3">CWallet::KeypoolCountExternalKeys</a></div><div class="ttdeci">size_t KeypoolCountExternalKeys()</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l03767">wallet.cpp:3767</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga263869feb1fedcaf74341eae533d1e24"><div class="ttname"><a href="group__mapWallet.html#ga263869feb1fedcaf74341eae533d1e24">CWallet::AddHDPubKey</a></div><div class="ttdeci">bool AddHDPubKey(const CExtPubKey &amp;extPubKey, bool fInternal)</div><div class="ttdoc">Adds a HDPubKey into the wallet(database) </div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00260">wallet.cpp:260</a></div></div>
<div class="ttc" id="group__Actions_html_gaf7b0a61f8c70c8146e42e82b4e227204"><div class="ttname"><a href="group__Actions.html#gaf7b0a61f8c70c8146e42e82b4e227204">CReserveKey::ReturnKey</a></div><div class="ttdeci">void ReturnKey()</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04129">wallet.cpp:4129</a></div></div>
<div class="ttc" id="random_8cpp_html_aacea702dc3d4d2bcbbd5eb96d410417c"><div class="ttname"><a href="random_8cpp.html#aacea702dc3d4d2bcbbd5eb96d410417c">seed_insecure_rand</a></div><div class="ttdeci">void seed_insecure_rand(bool fDeterministic)</div><div class="ttdef"><b>Definition:</b> <a href="random_8cpp_source.html#l00123">random.cpp:123</a></div></div>
<div class="ttc" id="standard_8h_html_a750f89f617f934820d5371be790e09ad"><div class="ttname"><a href="standard_8h.html#a750f89f617f934820d5371be790e09ad">txnouttype</a></div><div class="ttdeci">txnouttype</div><div class="ttdef"><b>Definition:</b> <a href="standard_8h_source.html#l00045">standard.h:45</a></div></div>
<div class="ttc" id="privatesend-client_8cpp_html_ae36d24fafeb216cd61fb55e3475154a3"><div class="ttname"><a href="privatesend-client_8cpp.html#ae36d24fafeb216cd61fb55e3475154a3">privateSendClient</a></div><div class="ttdeci">CPrivateSendClient privateSendClient</div><div class="ttdef"><b>Definition:</b> <a href="privatesend-client_8cpp_source.html#l00019">privatesend-client.cpp:19</a></div></div>
<div class="ttc" id="classuint256_html"><div class="ttname"><a href="classuint256.html">uint256</a></div><div class="ttdef"><b>Definition:</b> <a href="uint256_8h_source.html#l00114">uint256.h:114</a></div></div>
<div class="ttc" id="crypter_8h_html_aa42a9547c4738b8f92fd88016c5184a0"><div class="ttname"><a href="crypter_8h.html#aa42a9547c4738b8f92fd88016c5184a0">WALLET_CRYPTO_SALT_SIZE</a></div><div class="ttdeci">const unsigned int WALLET_CRYPTO_SALT_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="crypter_8h_source.html#l00015">crypter.h:15</a></div></div>
<div class="ttc" id="ui__interface_8h_html_a293ba931937e469a6327b8d6b4872969a6aa8d1cd0da86fe8886e3a5c47f194ef"><div class="ttname"><a href="ui__interface_8h.html#a293ba931937e469a6327b8d6b4872969a6aa8d1cd0da86fe8886e3a5c47f194ef">CT_DELETED</a></div><div class="ttdef"><b>Definition:</b> <a href="ui__interface_8h_source.html#l00025">ui_interface.h:25</a></div></div>
<div class="ttc" id="group__Actions_html_gabe9bd095306b1320085b615885aaa250"><div class="ttname"><a href="group__Actions.html#gabe9bd095306b1320085b615885aaa250">CReserveKey::GetReservedKey</a></div><div class="ttdeci">bool GetReservedKey(CPubKey &amp;pubkey, bool fInternalIn)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04101">wallet.cpp:4101</a></div></div>
<div class="ttc" id="wallet_8h_html_a90b09b05f289ac32704a6446a94566ceaab4c4a7abab40ebdb2706c1708fff22e"><div class="ttname"><a href="wallet_8h.html#a90b09b05f289ac32704a6446a94566ceaab4c4a7abab40ebdb2706c1708fff22e">ONLY_DENOMINATED</a></div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00104">wallet.h:104</a></div></div>
<div class="ttc" id="classCMasterKey_html_a7a4b1e432a30011297f496441769957f"><div class="ttname"><a href="classCMasterKey.html#a7a4b1e432a30011297f496441769957f">CMasterKey::nDerivationMethod</a></div><div class="ttdeci">unsigned int nDerivationMethod</div><div class="ttdef"><b>Definition:</b> <a href="crypter_8h_source.html#l00040">crypter.h:40</a></div></div>
<div class="ttc" id="classCTransaction_html_ad64447ea044ec850313696fc99412d95"><div class="ttname"><a href="classCTransaction.html#ad64447ea044ec850313696fc99412d95">CTransaction::vin</a></div><div class="ttdeci">const std::vector&lt; CTxIn &gt; vin</div><div class="ttdef"><b>Definition:</b> <a href="transaction_8h_source.html#l00233">transaction.h:233</a></div></div>
<div class="ttc" id="namespaceNetMsgType_html_a13eac32e61d992756b94e714fa24e182"><div class="ttname"><a href="namespaceNetMsgType.html#a13eac32e61d992756b94e714fa24e182">NetMsgType::TXLOCKREQUEST</a></div><div class="ttdeci">const char * TXLOCKREQUEST</div><div class="ttdef"><b>Definition:</b> <a href="protocol_8cpp_source.html#l00039">protocol.cpp:39</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga979a17e80e4897ed1f4ae9a4be7c493c"><div class="ttname"><a href="group__mapWallet.html#ga979a17e80e4897ed1f4ae9a4be7c493c">CWallet::ScanForWalletTransactions</a></div><div class="ttdeci">int ScanForWalletTransactions(CBlockIndex *pindexStart, bool fUpdate=false)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01687">wallet.cpp:1687</a></div></div>
<div class="ttc" id="structCExtPubKey_html_ab18c8520919d20bbfd068565ae566ea8"><div class="ttname"><a href="structCExtPubKey.html#ab18c8520919d20bbfd068565ae566ea8">CExtPubKey::pubkey</a></div><div class="ttdeci">CPubKey pubkey</div><div class="ttdef"><b>Definition:</b> <a href="pubkey_8h_source.html#l00200">pubkey.h:200</a></div></div>
<div class="ttc" id="wallet__tests_8cpp_html_a4882ee1f29d9049f31ff980bddeb253d"><div class="ttname"><a href="wallet__tests_8cpp.html#a4882ee1f29d9049f31ff980bddeb253d">vCoins</a></div><div class="ttdeci">static vector&lt; COutput &gt; vCoins</div><div class="ttdef"><b>Definition:</b> <a href="wallet__tests_8cpp_source.html#l00031">wallet_tests.cpp:31</a></div></div>
<div class="ttc" id="group__Actions_html_gaea356cdf45e0ec83056ca5b0576add2b"><div class="ttname"><a href="group__Actions.html#gaea356cdf45e0ec83056ca5b0576add2b">CWallet::IsCollateralAmount</a></div><div class="ttdeci">bool IsCollateralAmount(CAmount nInputAmount) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l03080">wallet.cpp:3080</a></div></div>
<div class="ttc" id="classCTxOut_html_af56cdc9e253741eef4095582ea3cc841"><div class="ttname"><a href="classCTxOut.html#af56cdc9e253741eef4095582ea3cc841">CTxOut::IsDust</a></div><div class="ttdeci">bool IsDust(const CFeeRate &amp;minRelayTxFee) const</div><div class="ttdef"><b>Definition:</b> <a href="transaction_8h_source.html#l00185">transaction.h:185</a></div></div>
<div class="ttc" id="classCDBEnv_html_a09c5850b88919553a8db416ce288ff1a"><div class="ttname"><a href="classCDBEnv.html#a09c5850b88919553a8db416ce288ff1a">CDBEnv::Flush</a></div><div class="ttdeci">void Flush(bool fShutdown)</div><div class="ttdef"><b>Definition:</b> <a href="db_8cpp_source.html#l00424">db.cpp:424</a></div></div>
<div class="ttc" id="instantx_8cpp_html_abc71256f703e47c9254093e32ed2994c"><div class="ttname"><a href="instantx_8cpp.html#abc71256f703e47c9254093e32ed2994c">mempool</a></div><div class="ttdeci">CTxMemPool mempool</div></div>
<div class="ttc" id="group__mapWallet_html_gaa149287cc5463b561e55c24f91353649"><div class="ttname"><a href="group__mapWallet.html#gaa149287cc5463b561e55c24f91353649">CWallet::GetOutpointPrivateSendRounds</a></div><div class="ttdeci">int GetOutpointPrivateSendRounds(const COutPoint &amp;outpoint) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01321">wallet.cpp:1321</a></div></div>
<div class="ttc" id="classCAffectedKeysVisitor_html_ab4064a4624c9aa2ed604cad1b2b29031"><div class="ttname"><a href="classCAffectedKeysVisitor.html#ab4064a4624c9aa2ed604cad1b2b29031">CAffectedKeysVisitor::vKeys</a></div><div class="ttdeci">std::vector&lt; CKeyID &gt; &amp; vKeys</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04244">wallet.cpp:4244</a></div></div>
<div class="ttc" id="group__Actions_html_ga3b0c6540531740c1396802f14c77a9b5"><div class="ttname"><a href="group__Actions.html#ga3b0c6540531740c1396802f14c77a9b5">CWallet::GetBudgetSystemCollateralTX</a></div><div class="ttdeci">bool GetBudgetSystemCollateralTX(CTransaction &amp;tx, uint256 hash, CAmount amount, bool fUseInstantSend)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l03123">wallet.cpp:3123</a></div></div>
<div class="ttc" id="classCTxMemPool_html"><div class="ttname"><a href="classCTxMemPool.html">CTxMemPool</a></div><div class="ttdef"><b>Definition:</b> <a href="txmempool_8h_source.html#l00357">txmempool.h:357</a></div></div>
<div class="ttc" id="classCWalletDB_html_a23d147eadf4ce7623d9bfb54abffa01e"><div class="ttname"><a href="classCWalletDB.html#a23d147eadf4ce7623d9bfb54abffa01e">CWalletDB::WriteAccountingEntry_Backend</a></div><div class="ttdeci">bool WriteAccountingEntry_Backend(const CAccountingEntry &amp;acentry)</div><div class="ttdef"><b>Definition:</b> <a href="walletdb_8cpp_source.html#l00195">walletdb.cpp:195</a></div></div>
<div class="ttc" id="wallet_8h_html_a90b09b05f289ac32704a6446a94566cea35c9bedf196c5d09731928695c969b70"><div class="ttname"><a href="wallet_8h.html#a90b09b05f289ac32704a6446a94566cea35c9bedf196c5d09731928695c969b70">ONLY_NONDENOMINATED_NOT1000IFMN</a></div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00106">wallet.h:106</a></div></div>
<div class="ttc" id="classCDBEnv_html_a6fbf26da5d7f8f64a77a3ba15e4df244a25eebe1e7f52e4e07a4c9b1e6abc4274"><div class="ttname"><a href="classCDBEnv.html#a6fbf26da5d7f8f64a77a3ba15e4df244a25eebe1e7f52e4e07a4c9b1e6abc4274">CDBEnv::RECOVER_OK</a></div><div class="ttdef"><b>Definition:</b> <a href="db_8h_source.html#l00059">db.h:59</a></div></div>
<div class="ttc" id="group__mapWallet_html_gab34fe5bf771619dcbe22a65f013e5469"><div class="ttname"><a href="group__mapWallet.html#gab34fe5bf771619dcbe22a65f013e5469">CWallet::EncryptWallet</a></div><div class="ttdeci">bool EncryptWallet(const SecureString &amp;strWalletPassphrase)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00723">wallet.cpp:723</a></div></div>
<div class="ttc" id="interpreter_8h_html_aaf8fd5f0e57d456151c951e0f3715fc4a9412c721b741fe9be1e3247dc390a4d2"><div class="ttname"><a href="interpreter_8h.html#aaf8fd5f0e57d456151c951e0f3715fc4a9412c721b741fe9be1e3247dc390a4d2">SIGHASH_ANYONECANPAY</a></div><div class="ttdef"><b>Definition:</b> <a href="interpreter_8h_source.html#l00027">interpreter.h:27</a></div></div>
<div class="ttc" id="classCHDChain_html_a37c75884a3ef7c7ff435aae648c3c6de"><div class="ttname"><a href="classCHDChain.html#a37c75884a3ef7c7ff435aae648c3c6de">CHDChain::GetID</a></div><div class="ttdeci">uint256 GetID() const</div><div class="ttdef"><b>Definition:</b> <a href="hdchain_8h_source.html#l00111">hdchain.h:111</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga4eada57edc1c443564b8cc9b853d955c"><div class="ttname"><a href="group__mapWallet.html#ga4eada57edc1c443564b8cc9b853d955c">CWallet::IsMine</a></div><div class="ttdeci">isminetype IsMine(const CTxIn &amp;txin) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01210">wallet.cpp:1210</a></div></div>
<div class="ttc" id="classCWalletTx_html_ac8a376bcb955e437489504dc596b43cf"><div class="ttname"><a href="classCWalletTx.html#ac8a376bcb955e437489504dc596b43cf">CWalletTx::MarkDirty</a></div><div class="ttdeci">void MarkDirty()</div><div class="ttdoc">make sure balances are recalculated </div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00418">wallet.h:418</a></div></div>
<div class="ttc" id="group__Actions_html_ga8852ef2cc66e3bde80ec026058023a50"><div class="ttname"><a href="group__Actions.html#ga8852ef2cc66e3bde80ec026058023a50">CWallet::GetScriptForMining</a></div><div class="ttdeci">void GetScriptForMining(boost::shared_ptr&lt; CReserveScript &gt; &amp;script)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04182">wallet.cpp:4182</a></div></div>
<div class="ttc" id="ui__interface_8h_html_a293ba931937e469a6327b8d6b4872969ae975c67c7f3a5386de0bbde38221b32f"><div class="ttname"><a href="ui__interface_8h.html#a293ba931937e469a6327b8d6b4872969ae975c67c7f3a5386de0bbde38221b32f">CT_NEW</a></div><div class="ttdef"><b>Definition:</b> <a href="ui__interface_8h_source.html#l00023">ui_interface.h:23</a></div></div>
<div class="ttc" id="structCompareInputBIP69_html"><div class="ttname"><a href="structCompareInputBIP69.html">CompareInputBIP69</a></div><div class="ttdef"><b>Definition:</b> <a href="transaction_8h_source.html#l00346">transaction.h:346</a></div></div>
<div class="ttc" id="walletdb_8h_html_a7558d92e9ea1d446075da1b514c4a944aa2367ec374804930406cea446fbb3fd2"><div class="ttname"><a href="walletdb_8h.html#a7558d92e9ea1d446075da1b514c4a944aa2367ec374804930406cea446fbb3fd2">DB_LOAD_OK</a></div><div class="ttdef"><b>Definition:</b> <a href="walletdb_8h_source.html#l00036">walletdb.h:36</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga2ed6fec1e8e0076d380351d5a469e4c8"><div class="ttname"><a href="group__mapWallet.html#ga2ed6fec1e8e0076d380351d5a469e4c8">CWallet::Verify</a></div><div class="ttdeci">static bool Verify(const std::string &amp;walletFile, std::string &amp;warningString, std::string &amp;errorString)</div><div class="ttdoc">Verify the wallet database and perform salvage if required. </div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00594">wallet.cpp:594</a></div></div>
<div class="ttc" id="classCPrivateSend_html_a43229314704738ac10f7daacb34ee3c1"><div class="ttname"><a href="classCPrivateSend.html#a43229314704738ac10f7daacb34ee3c1">CPrivateSend::GetStandardDenominations</a></div><div class="ttdeci">static std::vector&lt; CAmount &gt; GetStandardDenominations()</div><div class="ttdef"><b>Definition:</b> <a href="privatesend_8h_source.html#l00328">privatesend.h:328</a></div></div>
<div class="ttc" id="classCChain_html_a3077e83c87e8a974765fa76a57fd040b"><div class="ttname"><a href="classCChain.html#a3077e83c87e8a974765fa76a57fd040b">CChain::Next</a></div><div class="ttdeci">CBlockIndex * Next(const CBlockIndex *pindex) const</div><div class="ttdef"><b>Definition:</b> <a href="chain_8h_source.html#l00389">chain.h:389</a></div></div>
<div class="ttc" id="chainparams_8cpp_html_ace5c5b706d71a324a417dd2db394fd4a"><div class="ttname"><a href="chainparams_8cpp.html#ace5c5b706d71a324a417dd2db394fd4a">Params</a></div><div class="ttdeci">const CChainParams &amp; Params()</div><div class="ttdef"><b>Definition:</b> <a href="chainparams_8cpp_source.html#l00424">chainparams.cpp:424</a></div></div>
<div class="ttc" id="classCKeePassIntegrator_html_a8f0f9765dfaaf14fc9b2b780b5332c24"><div class="ttname"><a href="classCKeePassIntegrator.html#a8f0f9765dfaaf14fc9b2b780b5332c24">CKeePassIntegrator::updatePassphrase</a></div><div class="ttdeci">void updatePassphrase(const SecureString &amp;sWalletPassphrase)</div><div class="ttdef"><b>Definition:</b> <a href="keepass_8cpp_source.html#l00613">keepass.cpp:613</a></div></div>
<div class="ttc" id="keepass_8cpp_html_a33e391e23935d229d815a1523acc9454"><div class="ttname"><a href="keepass_8cpp.html#a33e391e23935d229d815a1523acc9454">keePassInt</a></div><div class="ttdeci">CKeePassIntegrator keePassInt</div><div class="ttdef"><b>Definition:</b> <a href="keepass_8cpp_source.html#l00035">keepass.cpp:35</a></div></div>
<div class="ttc" id="group__mapWallet_html_gac56b1e181b831dc6173a458861007b15"><div class="ttname"><a href="group__mapWallet.html#gac56b1e181b831dc6173a458861007b15">CWallet::ResendWalletTransactions</a></div><div class="ttdeci">void ResendWalletTransactions(int64_t nBestBlockTime, CConnman *connman)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02105">wallet.cpp:2105</a></div></div>
<div class="ttc" id="classCPrivateSend_html_a453e99da580c62dab5b25eff3a600578"><div class="ttname"><a href="classCPrivateSend.html#a453e99da580c62dab5b25eff3a600578">CPrivateSend::GetMaxPoolAmount</a></div><div class="ttdeci">static CAmount GetMaxPoolAmount()</div><div class="ttdef"><b>Definition:</b> <a href="privatesend_8h_source.html#l00345">privatesend.h:345</a></div></div>
<div class="ttc" id="classCReserveKey_html"><div class="ttname"><a href="classCReserveKey.html">CReserveKey</a></div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l01049">wallet.h:1049</a></div></div>
<div class="ttc" id="classCCryptoKeyStore_html_a0717bc91b52f267df77e61870211ca62"><div class="ttname"><a href="classCCryptoKeyStore.html#a0717bc91b52f267df77e61870211ca62">CCryptoKeyStore::Unlock</a></div><div class="ttdeci">bool Unlock(const CKeyingMaterial &amp;vMasterKeyIn, bool fForMixingOnly=false)</div><div class="ttdef"><b>Definition:</b> <a href="crypter_8cpp_source.html#l00248">crypter.cpp:248</a></div></div>
<div class="ttc" id="classCWalletDB_html_a319209fcf90ea860b668b92c44a3fa7a"><div class="ttname"><a href="classCWalletDB.html#a319209fcf90ea860b668b92c44a3fa7a">CWalletDB::EraseName</a></div><div class="ttdeci">bool EraseName(const std::string &amp;strAddress)</div><div class="ttdef"><b>Definition:</b> <a href="walletdb_8cpp_source.html#l00038">walletdb.cpp:38</a></div></div>
<div class="ttc" id="group__Actions_html_ga3d9f78bd52a2bd03a9e79c1a84e76cd7"><div class="ttname"><a href="group__Actions.html#ga3d9f78bd52a2bd03a9e79c1a84e76cd7">CWallet::GetDenominatedBalance</a></div><div class="ttdeci">CAmount GetDenominatedBalance(bool unconfirmed=false) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02268">wallet.cpp:2268</a></div></div>
<div class="ttc" id="structCompactTallyItem_html_a68a09f444683900e80c7e08b23f8fc56"><div class="ttname"><a href="structCompactTallyItem.html#a68a09f444683900e80c7e08b23f8fc56">CompactTallyItem::txdest</a></div><div class="ttdeci">CTxDestination txdest</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00113">wallet.h:113</a></div></div>
<div class="ttc" id="version_8h_html_a4e2497f7c9c4319adcaf945159ec63f4"><div class="ttname"><a href="version_8h.html#a4e2497f7c9c4319adcaf945159ec63f4">PROTOCOL_VERSION</a></div><div class="ttdeci">static const int PROTOCOL_VERSION</div><div class="ttdef"><b>Definition:</b> <a href="version_8h_source.html#l00013">version.h:13</a></div></div>
<div class="ttc" id="utiltime_8cpp_html_a139d0fe6387b9e230a9b8bb12d9b43b9"><div class="ttname"><a href="utiltime_8cpp.html#a139d0fe6387b9e230a9b8bb12d9b43b9">GetTimeMillis</a></div><div class="ttdeci">int64_t GetTimeMillis()</div><div class="ttdef"><b>Definition:</b> <a href="utiltime_8cpp_source.html#l00034">utiltime.cpp:34</a></div></div>
<div class="ttc" id="classInsecureRand_html"><div class="ttname"><a href="classInsecureRand.html">InsecureRand</a></div><div class="ttdef"><b>Definition:</b> <a href="random_8h_source.html#l00052">random.h:52</a></div></div>
<div class="ttc" id="classCTransaction_html_a7efd1379de830341417c0bfa23a149aa"><div class="ttname"><a href="classCTransaction.html#a7efd1379de830341417c0bfa23a149aa">CTransaction::GetHash</a></div><div class="ttdeci">const uint256 &amp; GetHash() const</div><div class="ttdef"><b>Definition:</b> <a href="transaction_8h_source.html#l00262">transaction.h:262</a></div></div>
<div class="ttc" id="classCTxLockRequest_html_a322a9ad6b70cc14906084be0918c8b52"><div class="ttname"><a href="classCTxLockRequest.html#a322a9ad6b70cc14906084be0918c8b52">CTxLockRequest::GetMinFee</a></div><div class="ttdeci">CAmount GetMinFee() const</div><div class="ttdef"><b>Definition:</b> <a href="instantx_8cpp_source.html#l00984">instantx.cpp:984</a></div></div>
<div class="ttc" id="classCScript_html"><div class="ttname"><a href="classCScript.html">CScript</a></div><div class="ttdef"><b>Definition:</b> <a href="script_8h_source.html#l00373">script.h:373</a></div></div>
<div class="ttc" id="classCAffectedKeysVisitor_html_abb0976a06c3d2333836afad67aaf5053"><div class="ttname"><a href="classCAffectedKeysVisitor.html#abb0976a06c3d2333836afad67aaf5053">CAffectedKeysVisitor::keystore</a></div><div class="ttdeci">const CKeyStore &amp; keystore</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04243">wallet.cpp:4243</a></div></div>
<div class="ttc" id="classCInstantSend_html_a418ce98b1e4d61b38bd11d02ff36a47d"><div class="ttname"><a href="classCInstantSend.html#a418ce98b1e4d61b38bd11d02ff36a47d">CInstantSend::ProcessTxLockRequest</a></div><div class="ttdeci">bool ProcessTxLockRequest(const CTxLockRequest &amp;txLockRequest, CConnman &amp;connman)</div><div class="ttdef"><b>Definition:</b> <a href="instantx_8cpp_source.html#l00080">instantx.cpp:80</a></div></div>
<div class="ttc" id="structCExtPubKey_html"><div class="ttname"><a href="structCExtPubKey.html">CExtPubKey</a></div><div class="ttdef"><b>Definition:</b> <a href="pubkey_8h_source.html#l00195">pubkey.h:195</a></div></div>
<div class="ttc" id="timedata_8cpp_html_a09f81b9c7650f898cf3cf305b87547e6"><div class="ttname"><a href="timedata_8cpp.html#a09f81b9c7650f898cf3cf305b87547e6">GetAdjustedTime</a></div><div class="ttdeci">int64_t GetAdjustedTime()</div><div class="ttdef"><b>Definition:</b> <a href="timedata_8cpp_source.html#l00033">timedata.cpp:33</a></div></div>
<div class="ttc" id="util_8cpp_html_aa803aa631ab8b4bd79fa9d7b2172bf9a"><div class="ttname"><a href="util_8cpp.html#aa803aa631ab8b4bd79fa9d7b2172bf9a">runCommand</a></div><div class="ttdeci">void runCommand(const std::string &amp;strCommand)</div><div class="ttdef"><b>Definition:</b> <a href="util_8cpp_source.html#l00866">util.cpp:866</a></div></div>
<div class="ttc" id="group__mapWallet_html_gad74c232cc8983a1c032f2163751695ed"><div class="ttname"><a href="group__mapWallet.html#gad74c232cc8983a1c032f2163751695ed">CWalletTx::GetAccountAmounts</a></div><div class="ttdeci">void GetAccountAmounts(const std::string &amp;strAccount, CAmount &amp;nReceived, CAmount &amp;nSent, CAmount &amp;nFee, const isminefilter &amp;filter) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01641">wallet.cpp:1641</a></div></div>
<div class="ttc" id="wallet_8h_html_a39a6b71da3eb95cddc0836d3b27ac7c9a16fc17e025bfd90749cb594e8fc664b0"><div class="ttname"><a href="wallet_8h.html#a39a6b71da3eb95cddc0836d3b27ac7c9a16fc17e025bfd90749cb594e8fc664b0">FEATURE_WALLETCRYPT</a></div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00093">wallet.h:93</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga71efb0d5b5def8ae00a1d74b8741bfcb"><div class="ttname"><a href="group__mapWallet.html#ga71efb0d5b5def8ae00a1d74b8741bfcb">CWalletTx::IsTrusted</a></div><div class="ttdeci">bool IsTrusted() const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02041">wallet.cpp:2041</a></div></div>
<div class="ttc" id="validation_8cpp_html_aaf87d0dd26c4a7c9bcc5bdd1127e8637"><div class="ttname"><a href="validation_8cpp.html#aaf87d0dd26c4a7c9bcc5bdd1127e8637">fImporting</a></div><div class="ttdeci">bool fImporting</div><div class="ttdef"><b>Definition:</b> <a href="validation_8cpp_source.html#l00070">validation.cpp:70</a></div></div>
<div class="ttc" id="classCTransaction_html_a80370923c3ac828de68919295d5d0659"><div class="ttname"><a href="classCTransaction.html#a80370923c3ac828de68919295d5d0659">CTransaction::ToString</a></div><div class="ttdeci">std::string ToString() const</div><div class="ttdef"><b>Definition:</b> <a href="transaction_8cpp_source.html#l00155">transaction.cpp:155</a></div></div>
<div class="ttc" id="structCompareByAmount_html_ab4cca75816bb9085792472eeed7c9505"><div class="ttname"><a href="structCompareByAmount.html#ab4cca75816bb9085792472eeed7c9505">CompareByAmount::operator()</a></div><div class="ttdeci">bool operator()(const CompactTallyItem &amp;t1, const CompactTallyItem &amp;t2) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02824">wallet.cpp:2824</a></div></div>
<div class="ttc" id="classCScriptID_html"><div class="ttname"><a href="classCScriptID.html">CScriptID</a></div><div class="ttdef"><b>Definition:</b> <a href="standard_8h_source.html#l00022">standard.h:22</a></div></div>
<div class="ttc" id="classCTransaction_html_a96256e8ac1bf79ad9c057e48c41132dd"><div class="ttname"><a href="classCTransaction.html#a96256e8ac1bf79ad9c057e48c41132dd">CTransaction::IsCoinBase</a></div><div class="ttdeci">bool IsCoinBase() const</div><div class="ttdef"><b>Definition:</b> <a href="transaction_8h_source.html#l00284">transaction.h:284</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga796c23450c8482e10e0c75ae5c1fa8ed"><div class="ttname"><a href="group__mapWallet.html#ga796c23450c8482e10e0c75ae5c1fa8ed">CWallet::ReacceptWalletTransactions</a></div><div class="ttdeci">void ReacceptWalletTransactions()</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01728">wallet.cpp:1728</a></div></div>
<div class="ttc" id="classCKeyStore_html_a9398451d4270fae27b29f686a9d43a65"><div class="ttname"><a href="classCKeyStore.html#a9398451d4270fae27b29f686a9d43a65">CKeyStore::HaveKey</a></div><div class="ttdeci">virtual bool HaveKey(const CKeyID &amp;address) const =0</div><div class="ttdoc">Check whether a key corresponding to a given address is present in the store. </div></div>
<div class="ttc" id="classCOutput_html_ae1b3534a41afb09bb04a499017f2821e"><div class="ttname"><a href="classCOutput.html#ae1b3534a41afb09bb04a499017f2821e">COutput::i</a></div><div class="ttdeci">int i</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00486">wallet.h:486</a></div></div>
<div class="ttc" id="classbase__blob_html_ad7263503f949fb3c6c520ebb1f28e378"><div class="ttname"><a href="classbase__blob.html#ad7263503f949fb3c6c520ebb1f28e378">base_blob::GetHex</a></div><div class="ttdeci">std::string GetHex() const</div><div class="ttdef"><b>Definition:</b> <a href="uint256_8cpp_source.html#l00021">uint256.cpp:21</a></div></div>
<div class="ttc" id="classCWalletDB_html_a6a03927cf247314ccd9b285139de0bd1"><div class="ttname"><a href="classCWalletDB.html#a6a03927cf247314ccd9b285139de0bd1">CWalletDB::ReadPool</a></div><div class="ttdeci">bool ReadPool(int64_t nPool, CKeyPool &amp;keypool)</div><div class="ttdef"><b>Definition:</b> <a href="walletdb_8cpp_source.html#l00157">walletdb.cpp:157</a></div></div>
<div class="ttc" id="util_8cpp_html_a343d2a13efe00125f78d25dafb0a8d98"><div class="ttname"><a href="util_8cpp.html#a343d2a13efe00125f78d25dafb0a8d98">LogAcceptCategory</a></div><div class="ttdeci">bool LogAcceptCategory(const char *category)</div><div class="ttdef"><b>Definition:</b> <a href="util_8cpp_source.html#l00247">util.cpp:247</a></div></div>
<div class="ttc" id="group__Actions_html_gadf2b4ac337ddb271555985cec82e43e6"><div class="ttname"><a href="group__Actions.html#gadf2b4ac337ddb271555985cec82e43e6">CWallet::GetAddressBalances</a></div><div class="ttdeci">std::map&lt; CTxDestination, CAmount &gt; GetAddressBalances()</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l03954">wallet.cpp:3954</a></div></div>
<div class="ttc" id="wallet__ismine_8h_html_a66f67ca6dd4cabac4eea13042b18e20da973114cfd473ca92166b83740527e0f1"><div class="ttname"><a href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20da973114cfd473ca92166b83740527e0f1">ISMINE_WATCH_SOLVABLE</a></div><div class="ttdoc">Indicates that we know how to create a scriptSig that would solve this if we were given the appropria...</div><div class="ttdef"><b>Definition:</b> <a href="wallet__ismine_8h_source.html#l00023">wallet_ismine.h:23</a></div></div>
<div class="ttc" id="consensus_8h_html"><div class="ttname"><a href="consensus_8h.html">consensus.h</a></div></div>
<div class="ttc" id="classCKey_html_aa1085c59603a62db6ec776300f250337"><div class="ttname"><a href="classCKey.html#aa1085c59603a62db6ec776300f250337">CKey::GetPubKey</a></div><div class="ttdeci">CPubKey GetPubKey() const</div><div class="ttdef"><b>Definition:</b> <a href="key_8cpp_source.html#l00156">key.cpp:156</a></div></div>
<div class="ttc" id="classCWalletTx_html_ac058c61be3a1c680a3ad384ff04d27eb"><div class="ttname"><a href="classCWalletTx.html#ac058c61be3a1c680a3ad384ff04d27eb">CWalletTx::fTimeReceivedIsTxTime</a></div><div class="ttdeci">unsigned int fTimeReceivedIsTxTime</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00283">wallet.h:283</a></div></div>
<div class="ttc" id="classCAffectedKeysVisitor_html_abeff400fed1ba87283930538f9164640"><div class="ttname"><a href="classCAffectedKeysVisitor.html#abeff400fed1ba87283930538f9164640">CAffectedKeysVisitor::operator()</a></div><div class="ttdeci">void operator()(const CNoDestination &amp;none)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04270">wallet.cpp:4270</a></div></div>
<div class="ttc" id="classCTransaction_html_a708645274ddfd83829315ffe5c7c5c3e"><div class="ttname"><a href="classCTransaction.html#a708645274ddfd83829315ffe5c7c5c3e">CTransaction::vout</a></div><div class="ttdeci">const std::vector&lt; CTxOut &gt; vout</div><div class="ttdef"><b>Definition:</b> <a href="transaction_8h_source.html#l00234">transaction.h:234</a></div></div>
<div class="ttc" id="random_8cpp_html_ada0c29949c4d1ac0cc027d93c4771423"><div class="ttname"><a href="random_8cpp.html#ada0c29949c4d1ac0cc027d93c4771423">GetRandBytes</a></div><div class="ttdeci">void GetRandBytes(unsigned char *buf, int num)</div><div class="ttdef"><b>Definition:</b> <a href="random_8cpp_source.html#l00086">random.cpp:86</a></div></div>
<div class="ttc" id="wallet__ismine_8h_html_a66f67ca6dd4cabac4eea13042b18e20dac8c855baf258588de5f5d7508d243e29"><div class="ttname"><a href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20dac8c855baf258588de5f5d7508d243e29">ISMINE_WATCH_ONLY</a></div><div class="ttdef"><b>Definition:</b> <a href="wallet__ismine_8h_source.html#l00024">wallet_ismine.h:24</a></div></div>
<div class="ttc" id="wallet_8cpp_html_a306d99326ae3a32749287b1812ac5ea7"><div class="ttname"><a href="wallet_8cpp.html#a306d99326ae3a32749287b1812ac5ea7">payTxFee</a></div><div class="ttdeci">CFeeRate payTxFee(DEFAULT_TRANSACTION_FEE)</div></div>
<div class="ttc" id="structCRecipient_html_a603b6c53aacb54acf8bc60c1bc2a8530"><div class="ttname"><a href="structCRecipient.html#a603b6c53aacb54acf8bc60c1bc2a8530">CRecipient::scriptPubKey</a></div><div class="ttdeci">CScript scriptPubKey</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00175">wallet.h:175</a></div></div>
<div class="ttc" id="structCompareByAmount_html"><div class="ttname"><a href="structCompareByAmount.html">CompareByAmount</a></div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02822">wallet.cpp:2822</a></div></div>
<div class="ttc" id="classCCryptoKeyStore_html_a9f4d2df95008205b2b9784c5f0e8e12b"><div class="ttname"><a href="classCCryptoKeyStore.html#a9f4d2df95008205b2b9784c5f0e8e12b">CCryptoKeyStore::AddCryptedKey</a></div><div class="ttdeci">virtual bool AddCryptedKey(const CPubKey &amp;vchPubKey, const std::vector&lt; unsigned char &gt; &amp;vchCryptedSecret)</div><div class="ttdef"><b>Definition:</b> <a href="crypter_8cpp_source.html#l00324">crypter.cpp:324</a></div></div>
<div class="ttc" id="classCBitcoinAddress_html_af3d7c4547803b09144fc040320f687dd"><div class="ttname"><a href="classCBitcoinAddress.html#af3d7c4547803b09144fc040320f687dd">CBitcoinAddress::GetKeyID</a></div><div class="ttdeci">bool GetKeyID(CKeyID &amp;keyID) const</div><div class="ttdef"><b>Definition:</b> <a href="base58_8cpp_source.html#l00291">base58.cpp:291</a></div></div>
<div class="ttc" id="group__Actions_html_gaf35620af7b11607c2594f413bf9914ef"><div class="ttname"><a href="group__Actions.html#gaf35620af7b11607c2594f413bf9914ef">CWallet::FundTransaction</a></div><div class="ttdeci">bool FundTransaction(CMutableTransaction &amp;tx, CAmount &amp;nFeeRet, int &amp;nChangePosRet, std::string &amp;strFailReason, bool includeWatching)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02727">wallet.cpp:2727</a></div></div>
<div class="ttc" id="sign_8cpp_html_a2d3ff267d98886fbdd5bc536fccac520"><div class="ttname"><a href="sign_8cpp.html#a2d3ff267d98886fbdd5bc536fccac520">ProduceSignature</a></div><div class="ttdeci">bool ProduceSignature(const BaseSignatureCreator &amp;creator, const CScript &amp;fromPubKey, CScript &amp;scriptSig)</div><div class="ttdef"><b>Definition:</b> <a href="sign_8cpp_source.html#l00104">sign.cpp:104</a></div></div>
<div class="ttc" id="classCChain_html_a578545bde95163bee37b1be28e7b2755"><div class="ttname"><a href="classCChain.html#a578545bde95163bee37b1be28e7b2755">CChain::Tip</a></div><div class="ttdeci">CBlockIndex * Tip() const</div><div class="ttdef"><b>Definition:</b> <a href="chain_8h_source.html#l00366">chain.h:366</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga4abcec3066e7c462f4564c159fc15031"><div class="ttname"><a href="group__mapWallet.html#ga4abcec3066e7c462f4564c159fc15031">CWallet::ChangeWalletPassphrase</a></div><div class="ttdeci">bool ChangeWalletPassphrase(const SecureString &amp;strOldWalletPassphrase, const SecureString &amp;strNewWalletPassphrase)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00447">wallet.cpp:447</a></div></div>
<div class="ttc" id="classCBlockIndex_html"><div class="ttname"><a href="classCBlockIndex.html">CBlockIndex</a></div><div class="ttdef"><b>Definition:</b> <a href="chain_8h_source.html#l00100">chain.h:100</a></div></div>
<div class="ttc" id="group__mapWallet_html_gaa19d4251c40cfd00f55c0895891d5028"><div class="ttname"><a href="group__mapWallet.html#gaa19d4251c40cfd00f55c0895891d5028">CWallet::IsDenominated</a></div><div class="ttdeci">bool IsDenominated(const COutPoint &amp;outpoint) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01328">wallet.cpp:1328</a></div></div>
<div class="ttc" id="classCWalletDB_html_a05e5a277f66010d12071a5d72cb4dfb0"><div class="ttname"><a href="classCWalletDB.html#a05e5a277f66010d12071a5d72cb4dfb0">CWalletDB::WriteWatchOnly</a></div><div class="ttdeci">bool WriteWatchOnly(const CScript &amp;script)</div><div class="ttdef"><b>Definition:</b> <a href="walletdb_8cpp_source.html#l00120">walletdb.cpp:120</a></div></div>
<div class="ttc" id="group__Actions_html_ga7bed1181907af862735c853782b21e88"><div class="ttname"><a href="group__Actions.html#ga7bed1181907af862735c853782b21e88">CWallet::GetMasternodeOutpointAndKeys</a></div><div class="ttdeci">bool GetMasternodeOutpointAndKeys(COutPoint &amp;outpointRet, CPubKey &amp;pubKeyRet, CKey &amp;keyRet, std::string strTxHash=&quot;&quot;, std::string strOutputIndex=&quot;&quot;)</div><div class="ttdoc">Get 1000DASH output and keys which can be used for the Masternode. </div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02987">wallet.cpp:2987</a></div></div>
<div class="ttc" id="classCPubKey_html"><div class="ttname"><a href="classCPubKey.html">CPubKey</a></div><div class="ttdef"><b>Definition:</b> <a href="pubkey_8h_source.html#l00037">pubkey.h:37</a></div></div>
<div class="ttc" id="classCKeePassIntegrator_html_ae985d304459dde24548acaff08e75a42"><div class="ttname"><a href="classCKeePassIntegrator.html#ae985d304459dde24548acaff08e75a42">CKeePassIntegrator::retrievePassphrase</a></div><div class="ttdeci">SecureString retrievePassphrase()</div><div class="ttdef"><b>Definition:</b> <a href="keepass_8cpp_source.html#l00579">keepass.cpp:579</a></div></div>
<div class="ttc" id="classprevector_html_a626f7d206dbc24e5610631809762758b"><div class="ttname"><a href="classprevector.html#a626f7d206dbc24e5610631809762758b">prevector::size</a></div><div class="ttdeci">size_type size() const</div><div class="ttdef"><b>Definition:</b> <a href="prevector_8h_source.html#l00262">prevector.h:262</a></div></div>
<div class="ttc" id="structCOutputEntry_html_af5961d67591eb98aefe95bf60f2a13e6"><div class="ttname"><a href="structCOutputEntry.html#af5961d67591eb98aefe95bf60f2a13e6">COutputEntry::destination</a></div><div class="ttdeci">CTxDestination destination</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00203">wallet.h:203</a></div></div>
<div class="ttc" id="group__Actions_html_gaa1a63edc3566c05e6b5c9b77aba79b02"><div class="ttname"><a href="group__Actions.html#gaa1a63edc3566c05e6b5c9b77aba79b02">CWallet::GetRequiredFee</a></div><div class="ttdeci">static CAmount GetRequiredFee(unsigned int nTxBytes)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l03591">wallet.cpp:3591</a></div></div>
<div class="ttc" id="group__mapWallet_html_gad6580f1844fc639389e1c6a1e2787ee6"><div class="ttname"><a href="group__mapWallet.html#gad6580f1844fc639389e1c6a1e2787ee6">CWallet::LoadWatchOnly</a></div><div class="ttdeci">bool LoadWatchOnly(const CScript &amp;dest)</div><div class="ttdoc">Adds a watch-only address to the store, without saving it to disk (used by LoadWallet) ...</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00399">wallet.cpp:399</a></div></div>
<div class="ttc" id="walletmodel_8cpp_html_a6c9555da4fe0c7643b7ea96f8bc2475b"><div class="ttname"><a href="walletmodel_8cpp.html#a6c9555da4fe0c7643b7ea96f8bc2475b">NotifyWatchonlyChanged</a></div><div class="ttdeci">static void NotifyWatchonlyChanged(WalletModel *walletmodel, bool fHaveWatchonly)</div><div class="ttdef"><b>Definition:</b> <a href="walletmodel_8cpp_source.html#l00551">walletmodel.cpp:551</a></div></div>
<div class="ttc" id="classCBlockIndex_html_a9fe0d4463c07c466f66252e8eec25f5c"><div class="ttname"><a href="classCBlockIndex.html#a9fe0d4463c07c466f66252e8eec25f5c">CBlockIndex::GetBlockTime</a></div><div class="ttdeci">int64_t GetBlockTime() const</div><div class="ttdef"><b>Definition:</b> <a href="chain_8h_source.html#l00223">chain.h:223</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga83fbd462d5c070f1ad041def675007d2"><div class="ttname"><a href="group__mapWallet.html#ga83fbd462d5c070f1ad041def675007d2">CWalletTx::WriteToDisk</a></div><div class="ttdeci">bool WriteToDisk(CWalletDB *pwalletdb)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01677">wallet.cpp:1677</a></div></div>
<div class="ttc" id="util_8cpp_html_a24f685720bf40370e5bd2a192ad50cd8"><div class="ttname"><a href="util_8cpp.html#a24f685720bf40370e5bd2a192ad50cd8">GetArg</a></div><div class="ttdeci">std::string GetArg(const std::string &amp;strArg, const std::string &amp;strDefault)</div><div class="ttdef"><b>Definition:</b> <a href="util_8cpp_source.html#l00441">util.cpp:441</a></div></div>
<div class="ttc" id="wallet_8h_html_a552380bab1040b682ab9d4a1fca48f2f"><div class="ttname"><a href="wallet_8h.html#a552380bab1040b682ab9d4a1fca48f2f">DEFAULT_TRANSACTION_FEE</a></div><div class="ttdeci">static const CAmount DEFAULT_TRANSACTION_FEE</div><div class="ttdoc">-paytxfee default </div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00047">wallet.h:47</a></div></div>
<div class="ttc" id="classCWalletDB_html_a0403a98efe565020f8804eefbc808d90"><div class="ttname"><a href="classCWalletDB.html#a0403a98efe565020f8804eefbc808d90">CWalletDB::EraseDestData</a></div><div class="ttdeci">bool EraseDestData(const std::string &amp;address, const std::string &amp;key)</div><div class="ttdoc">Erase destination data tuple from wallet database. </div><div class="ttdef"><b>Definition:</b> <a href="walletdb_8cpp_source.html#l01158">walletdb.cpp:1158</a></div></div>
<div class="ttc" id="structCompareByPriority_html"><div class="ttname"><a href="structCompareByPriority.html">CompareByPriority</a></div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02718">wallet.cpp:2718</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga1e98c1005aec356c68c4f56ff9a02944"><div class="ttname"><a href="group__mapWallet.html#ga1e98c1005aec356c68c4f56ff9a02944">COutput::Priority</a></div><div class="ttdeci">int Priority() const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00084">wallet.cpp:84</a></div></div>
<div class="ttc" id="structCOutputEntry_html_acb32c29f06f4b66d1de6bcec47f8f704"><div class="ttname"><a href="structCOutputEntry.html#acb32c29f06f4b66d1de6bcec47f8f704">COutputEntry::amount</a></div><div class="ttdeci">CAmount amount</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00204">wallet.h:204</a></div></div>
<div class="ttc" id="classCKeyPool_html_ab1f33489faff7a7e1edbd61a5a18f604"><div class="ttname"><a href="classCKeyPool.html#ab1f33489faff7a7e1edbd61a5a18f604">CKeyPool::CKeyPool</a></div><div class="ttdeci">CKeyPool()</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04367">wallet.cpp:4367</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga9772c25246d1058eccd2063bb40c44dc"><div class="ttname"><a href="group__mapWallet.html#ga9772c25246d1058eccd2063bb40c44dc">CWallet::LoadHDPubKey</a></div><div class="ttdeci">bool LoadHDPubKey(const CHDPubKey &amp;hdPubKey)</div><div class="ttdoc">loads a HDPubKey into the wallets memory </div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00252">wallet.cpp:252</a></div></div>
<div class="ttc" id="utiltime_8cpp_html_a46fac5fba8ba905b5f9acb364f5d8c6f"><div class="ttname"><a href="utiltime_8cpp.html#a46fac5fba8ba905b5f9acb364f5d8c6f">GetTime</a></div><div class="ttdeci">int64_t GetTime()</div><div class="ttdoc">For unit testing. </div><div class="ttdef"><b>Definition:</b> <a href="utiltime_8cpp_source.html#l00020">utiltime.cpp:20</a></div></div>
<div class="ttc" id="script_8h_html_a18113899ca9e7ef7a1938b0209fd62b5"><div class="ttname"><a href="script_8h.html#a18113899ca9e7ef7a1938b0209fd62b5">LOCKTIME_THRESHOLD</a></div><div class="ttdeci">static const unsigned int LOCKTIME_THRESHOLD</div><div class="ttdef"><b>Definition:</b> <a href="script_8h_source.html#l00032">script.h:32</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga3e90096a903d49cd751f05fcdb7692ce"><div class="ttname"><a href="group__mapWallet.html#ga3e90096a903d49cd751f05fcdb7692ce">CWallet::AddCryptedKey</a></div><div class="ttdeci">bool AddCryptedKey(const CPubKey &amp;vchPubKey, const std::vector&lt; unsigned char &gt; &amp;vchCryptedSecret)</div><div class="ttdoc">Adds an encrypted key to the store, and saves it to disk. </div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00313">wallet.cpp:313</a></div></div>
<div class="ttc" id="classCPrivateSendClient_html_a75799095593d6171c667e9892f2723d0"><div class="ttname"><a href="classCPrivateSendClient.html#a75799095593d6171c667e9892f2723d0">CPrivateSendClient::fEnablePrivateSend</a></div><div class="ttdeci">bool fEnablePrivateSend</div><div class="ttdef"><b>Definition:</b> <a href="privatesend-client_8h_source.html#l00107">privatesend-client.h:107</a></div></div>
<div class="ttc" id="wallet__ismine_8h_html_a66f67ca6dd4cabac4eea13042b18e20d"><div class="ttname"><a href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20d">isminetype</a></div><div class="ttdeci">isminetype</div><div class="ttdef"><b>Definition:</b> <a href="wallet__ismine_8h_source.html#l00017">wallet_ismine.h:17</a></div></div>
<div class="ttc" id="classCDBEnv_html_a6fbf26da5d7f8f64a77a3ba15e4df244"><div class="ttname"><a href="classCDBEnv.html#a6fbf26da5d7f8f64a77a3ba15e4df244">CDBEnv::VerifyResult</a></div><div class="ttdeci">VerifyResult</div><div class="ttdef"><b>Definition:</b> <a href="db_8h_source.html#l00058">db.h:58</a></div></div>
<div class="ttc" id="namespaceextract__strings__qt_html_ab8166b91ad54a98ce8450593d2a3d827"><div class="ttname"><a href="namespaceextract__strings__qt.html#ab8166b91ad54a98ce8450593d2a3d827">extract_strings_qt.out</a></div><div class="ttdeci">out</div><div class="ttdef"><b>Definition:</b> <a href="extract__strings__qt_8py_source.html#l00056">extract_strings_qt.py:56</a></div></div>
<div class="ttc" id="wallet__ismine_8h_html_a66f67ca6dd4cabac4eea13042b18e20da1fe9e47b4c162fd9a1779e59a11dd067"><div class="ttname"><a href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20da1fe9e47b4c162fd9a1779e59a11dd067">ISMINE_ALL</a></div><div class="ttdef"><b>Definition:</b> <a href="wallet__ismine_8h_source.html#l00026">wallet_ismine.h:26</a></div></div>
<div class="ttc" id="validation_8cpp_html_a578c1df234b05798180f0235d469a5ba"><div class="ttname"><a href="validation_8cpp.html#a578c1df234b05798180f0235d469a5ba">ReadBlockFromDisk</a></div><div class="ttdeci">bool ReadBlockFromDisk(CBlock &amp;block, const CDiskBlockPos &amp;pos, const Consensus::Params &amp;consensusParams)</div><div class="ttdef"><b>Definition:</b> <a href="validation_8cpp_source.html#l01171">validation.cpp:1171</a></div></div>
<div class="ttc" id="group__Actions_html_ga2be3aa26d84c79bdcabb41c6b3fe0e0f"><div class="ttname"><a href="group__Actions.html#ga2be3aa26d84c79bdcabb41c6b3fe0e0f">CWallet::LockCoin</a></div><div class="ttdeci">void LockCoin(COutPoint &amp;output)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04193">wallet.cpp:4193</a></div></div>
<div class="ttc" id="classCWalletTx_html_ab0ee7347584bff886dc24b9f63ff023c"><div class="ttname"><a href="classCWalletTx.html#ab0ee7347584bff886dc24b9f63ff023c">CWalletTx::BindWallet</a></div><div class="ttdeci">void BindWallet(CWallet *pwalletIn)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00434">wallet.h:434</a></div></div>
<div class="ttc" id="key_8h_html"><div class="ttname"><a href="key_8h.html">key.h</a></div></div>
<div class="ttc" id="classCHDChain_html_a94873f2f4a63b5cdaf4d22f9714f2fe4"><div class="ttname"><a href="classCHDChain.html#a94873f2f4a63b5cdaf4d22f9714f2fe4">CHDChain::SetMnemonic</a></div><div class="ttdeci">bool SetMnemonic(const SecureVector &amp;vchMnemonic, const SecureVector &amp;vchMnemonicPassphrase, bool fUpdateID)</div><div class="ttdef"><b>Definition:</b> <a href="hdchain_8cpp_source.html#l00072">hdchain.cpp:72</a></div></div>
<div class="ttc" id="classCPrivateSendClient_html_a9eaafa61ebf8cf727cdd2b4ffb69cad3"><div class="ttname"><a href="classCPrivateSendClient.html#a9eaafa61ebf8cf727cdd2b4ffb69cad3">CPrivateSendClient::nPrivateSendRounds</a></div><div class="ttdeci">int nPrivateSendRounds</div><div class="ttdef"><b>Definition:</b> <a href="privatesend-client_8h_source.html#l00104">privatesend-client.h:104</a></div></div>
<div class="ttc" id="classCSporkManager_html_ac02210f3ce7c779421aeed383c3f6e6c"><div class="ttname"><a href="classCSporkManager.html#ac02210f3ce7c779421aeed383c3f6e6c">CSporkManager::GetSporkValue</a></div><div class="ttdeci">int64_t GetSporkValue(int nSporkID)</div><div class="ttdef"><b>Definition:</b> <a href="spork_8cpp_source.html#l00148">spork.cpp:148</a></div></div>
<div class="ttc" id="classCHDChain_html_a9e79f152d459a87a4603c054e0d9a03e"><div class="ttname"><a href="classCHDChain.html#a9e79f152d459a87a4603c054e0d9a03e">CHDChain::SetAccount</a></div><div class="ttdeci">bool SetAccount(uint32_t nAccountIndex, const CHDAccount &amp;hdAccount)</div><div class="ttdef"><b>Definition:</b> <a href="hdchain_8cpp_source.html#l00193">hdchain.cpp:193</a></div></div>
<div class="ttc" id="classCAccountingEntry_html_a416a4eb8d47e4c4cfdfc366d9d777ae6"><div class="ttname"><a href="classCAccountingEntry.html#a416a4eb8d47e4c4cfdfc366d9d777ae6">CAccountingEntry::nTime</a></div><div class="ttdeci">int64_t nTime</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00540">wallet.h:540</a></div></div>
<div class="ttc" id="classCHDChain_html_a5674417d85794b38fd7ee42911dcce77"><div class="ttname"><a href="classCHDChain.html#a5674417d85794b38fd7ee42911dcce77">CHDChain::SetSeed</a></div><div class="ttdeci">bool SetSeed(const SecureVector &amp;vchSeedIn, bool fUpdateID)</div><div class="ttdef"><b>Definition:</b> <a href="hdchain_8cpp_source.html#l00130">hdchain.cpp:130</a></div></div>
<div class="ttc" id="classCBlock_html"><div class="ttname"><a href="classCBlock.html">CBlock</a></div><div class="ttdef"><b>Definition:</b> <a href="block_8h_source.html#l00073">block.h:73</a></div></div>
<div class="ttc" id="classCCryptoKeyStore_html_a289f2c42d460d338b632ec63aeb06e47"><div class="ttname"><a href="classCCryptoKeyStore.html#a289f2c42d460d338b632ec63aeb06e47">CCryptoKeyStore::SetCryptedHDChain</a></div><div class="ttdeci">bool SetCryptedHDChain(const CHDChain &amp;chain)</div><div class="ttdef"><b>Definition:</b> <a href="crypter_8cpp_source.html#l00513">crypter.cpp:513</a></div></div>
<div class="ttc" id="group__Actions_html_ga41f4c77a0843692388f8b11d5fb88042"><div class="ttname"><a href="group__Actions.html#ga41f4c77a0843692388f8b11d5fb88042">CWallet::ListLockedCoins</a></div><div class="ttdeci">void ListLockedCoins(std::vector&lt; COutPoint &gt; &amp;vOutpts)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04229">wallet.cpp:4229</a></div></div>
<div class="ttc" id="classCAccountingEntry_html_a9c5f78f13a657c1f1fc860a70ef072d5"><div class="ttname"><a href="classCAccountingEntry.html#a9c5f78f13a657c1f1fc860a70ef072d5">CAccountingEntry::nOrderPos</a></div><div class="ttdeci">int64_t nOrderPos</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00544">wallet.h:544</a></div></div>
<div class="ttc" id="classCBlockHeader_html_af0239f86a13f622a826e9eea66b2d7f3"><div class="ttname"><a href="classCBlockHeader.html#af0239f86a13f622a826e9eea66b2d7f3">CBlockHeader::GetHash</a></div><div class="ttdeci">uint256 GetHash() const</div><div class="ttdef"><b>Definition:</b> <a href="block_8cpp_source.html#l00013">block.cpp:13</a></div></div>
<div class="ttc" id="wallet__ismine_8h_html_a66f67ca6dd4cabac4eea13042b18e20dabd6dd5ba8963fe559dda755950f29baf"><div class="ttname"><a href="wallet__ismine_8h.html#a66f67ca6dd4cabac4eea13042b18e20dabd6dd5ba8963fe559dda755950f29baf">ISMINE_NO</a></div><div class="ttdef"><b>Definition:</b> <a href="wallet__ismine_8h_source.html#l00019">wallet_ismine.h:19</a></div></div>
<div class="ttc" id="wallet_8h_html_a90b09b05f289ac32704a6446a94566cea8454489afd757a138dd833cb00cf7aab"><div class="ttname"><a href="wallet_8h.html#a90b09b05f289ac32704a6446a94566cea8454489afd757a138dd833cb00cf7aab">ONLY_PRIVATESEND_COLLATERAL</a></div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00108">wallet.h:108</a></div></div>
<div class="ttc" id="classCKey_html"><div class="ttname"><a href="classCKey.html">CKey</a></div><div class="ttdef"><b>Definition:</b> <a href="key_8h_source.html#l00035">key.h:35</a></div></div>
<div class="ttc" id="classCBlockIndex_html_aebfc8d6b95852546760e742553d7bfd5"><div class="ttname"><a href="classCBlockIndex.html#aebfc8d6b95852546760e742553d7bfd5">CBlockIndex::nHeight</a></div><div class="ttdeci">int nHeight</div><div class="ttdoc">height of the entry in the chain. The genesis block has height 0 </div><div class="ttdef"><b>Definition:</b> <a href="chain_8h_source.html#l00113">chain.h:113</a></div></div>
<div class="ttc" id="transaction_8h_html"><div class="ttname"><a href="transaction_8h.html">transaction.h</a></div></div>
<div class="ttc" id="group__Actions_html_ga6ab8dfa75c5c8d5539325f3981697964"><div class="ttname"><a href="group__Actions.html#ga6ab8dfa75c5c8d5539325f3981697964">CWallet::GetImmatureBalance</a></div><div class="ttdeci">CAmount GetImmatureBalance() const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02301">wallet.cpp:2301</a></div></div>
<div class="ttc" id="utilstrencodings_8h_html_aa3052ab82a2ba880ea3e30b3357c8820"><div class="ttname"><a href="utilstrencodings_8h.html#aa3052ab82a2ba880ea3e30b3357c8820">PAIRTYPE</a></div><div class="ttdeci">#define PAIRTYPE(t1, t2)</div><div class="ttdef"><b>Definition:</b> <a href="utilstrencodings_8h_source.html#l00023">utilstrencodings.h:23</a></div></div>
<div class="ttc" id="sign_8cpp_html_adb49c071f85f19a8a8cb4e97d9fe8b93"><div class="ttname"><a href="sign_8cpp.html#adb49c071f85f19a8a8cb4e97d9fe8b93">SignSignature</a></div><div class="ttdeci">bool SignSignature(const CKeyStore &amp;keystore, const CScript &amp;fromPubKey, CMutableTransaction &amp;txTo, unsigned int nIn, int nHashType)</div><div class="ttdef"><b>Definition:</b> <a href="sign_8cpp_source.html#l00129">sign.cpp:129</a></div></div>
<div class="ttc" id="classCOutPoint_html_af131c7194a660558b0ff158f4efa7a28"><div class="ttname"><a href="classCOutPoint.html#af131c7194a660558b0ff158f4efa7a28">COutPoint::hash</a></div><div class="ttdeci">uint256 hash</div><div class="ttdef"><b>Definition:</b> <a href="transaction_8h_source.html#l00018">transaction.h:18</a></div></div>
<div class="ttc" id="group__mapWallet_html_gac555c90c12f8141f809df7113e8f225f"><div class="ttname"><a href="group__mapWallet.html#gac555c90c12f8141f809df7113e8f225f">CWallet::SyncMetaData</a></div><div class="ttdeci">void SyncMetaData(std::pair&lt; TxSpends::iterator, TxSpends::iterator &gt;)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00641">wallet.cpp:641</a></div></div>
<div class="ttc" id="wallet_8h_html_a90b09b05f289ac32704a6446a94566cea94cc8a0e81d9490cdbdfc3d3f215e9e7"><div class="ttname"><a href="wallet_8h.html#a90b09b05f289ac32704a6446a94566cea94cc8a0e81d9490cdbdfc3d3f215e9e7">ALL_COINS</a></div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00103">wallet.h:103</a></div></div>
<div class="ttc" id="classCMerkleTx_html_a69ebd437f7b44169659c3527fe73b6ab"><div class="ttname"><a href="classCMerkleTx.html#a69ebd437f7b44169659c3527fe73b6ab">CMerkleTx::GetBlocksToMaturity</a></div><div class="ttdeci">int GetBlocksToMaturity() const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04449">wallet.cpp:4449</a></div></div>
<div class="ttc" id="classCWalletDB_html_a8d4e8d73b977dc62c137bd3543c278bf"><div class="ttname"><a href="classCWalletDB.html#a8d4e8d73b977dc62c137bd3543c278bf">CWalletDB::WritePurpose</a></div><div class="ttdeci">bool WritePurpose(const std::string &amp;strAddress, const std::string &amp;purpose)</div><div class="ttdef"><b>Definition:</b> <a href="walletdb_8cpp_source.html#l00046">walletdb.cpp:46</a></div></div>
<div class="ttc" id="classCMerkleTx_html_a5bf3a355593ecce5799de92d013149b1"><div class="ttname"><a href="classCMerkleTx.html#a5bf3a355593ecce5799de92d013149b1">CMerkleTx::GetDepthInMainChain</a></div><div class="ttdeci">int GetDepthInMainChain(const CBlockIndex *&amp;pindexRet, bool enableIX=true) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04416">wallet.cpp:4416</a></div></div>
<div class="ttc" id="classCKeyPool_html"><div class="ttname"><a href="classCKeyPool.html">CKeyPool</a></div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00123">wallet.h:123</a></div></div>
<div class="ttc" id="validation_8cpp_html_a887b8e9f9fea0ea870c6987f1fd52eb6"><div class="ttname"><a href="validation_8cpp.html#a887b8e9f9fea0ea870c6987f1fd52eb6">mapBlockIndex</a></div><div class="ttdeci">BlockMap mapBlockIndex</div><div class="ttdef"><b>Definition:</b> <a href="validation_8cpp_source.html#l00064">validation.cpp:64</a></div></div>
<div class="ttc" id="classCKey_html_a9d12ed9d297e4286250fd7ea6b59e1a5"><div class="ttname"><a href="classCKey.html#a9d12ed9d297e4286250fd7ea6b59e1a5">CKey::MakeNewKey</a></div><div class="ttdeci">void MakeNewKey(bool fCompressed)</div><div class="ttdoc">Generate a new private key using a cryptographic PRNG. </div><div class="ttdef"><b>Definition:</b> <a href="key_8cpp_source.html#l00126">key.cpp:126</a></div></div>
<div class="ttc" id="wallet_8h_html_a90b09b05f289ac32704a6446a94566ceab6264c785b1784dcb35ee9ddb84b8583"><div class="ttname"><a href="wallet_8h.html#a90b09b05f289ac32704a6446a94566ceab6264c785b1784dcb35ee9ddb84b8583">ONLY_NOT1000IFMN</a></div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00105">wallet.h:105</a></div></div>
<div class="ttc" id="structCompareValueOnly_html"><div class="ttname"><a href="structCompareValueOnly.html">CompareValueOnly</a></div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00070">wallet.cpp:70</a></div></div>
<div class="ttc" id="group__Actions_html_ga502a73c6cf145be4a420a8bc75c6a69e"><div class="ttname"><a href="group__Actions.html#ga502a73c6cf145be4a420a8bc75c6a69e">less_then_denom</a></div><div class="ttdeci">bool less_then_denom(const COutput &amp;out1, const COutput &amp;out2)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02483">wallet.cpp:2483</a></div></div>
<div class="ttc" id="classCMerkleTx_html_a788ee54c14b6d9706eb3737404663238"><div class="ttname"><a href="classCMerkleTx.html#a788ee54c14b6d9706eb3737404663238">CMerkleTx::hashBlock</a></div><div class="ttdeci">uint256 hashBlock</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8h_source.html#l00216">wallet.h:216</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga8467a8a31cc4dded33cc6cdb0cdabb38"><div class="ttname"><a href="group__mapWallet.html#ga8467a8a31cc4dded33cc6cdb0cdabb38">CWalletTx::RelayWalletTransaction</a></div><div class="ttdeci">bool RelayWalletTransaction(CConnman *connman, std::string strCommand=&quot;tx&quot;)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01760">wallet.cpp:1760</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga49cae757845e1bf0cb3c8e17bd96d4a1"><div class="ttname"><a href="group__mapWallet.html#ga49cae757845e1bf0cb3c8e17bd96d4a1">CWalletTx::GetAnonymizedCredit</a></div><div class="ttdeci">CAmount GetAnonymizedCredit(bool fUseCache=true) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01944">wallet.cpp:1944</a></div></div>
<div class="ttc" id="classCWallet_html_acb2fdaf647fa2d812d58e998848e681d"><div class="ttname"><a href="classCWallet.html#acb2fdaf647fa2d812d58e998848e681d">CWallet::GetKeyBirthTimes</a></div><div class="ttdeci">void GetKeyBirthTimes(std::map&lt; CKeyID, int64_t &gt; &amp;mapKeyBirth) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04273">wallet.cpp:4273</a></div></div>
<div class="ttc" id="structCExtKey_html"><div class="ttname"><a href="structCExtKey.html">CExtKey</a></div><div class="ttdef"><b>Definition:</b> <a href="key_8h_source.html#l00154">key.h:154</a></div></div>
<div class="ttc" id="group__Actions_html_gad54cca8f6e5e1d5535860f43ddb0246f"><div class="ttname"><a href="group__Actions.html#gad54cca8f6e5e1d5535860f43ddb0246f">CWallet::SetDefaultKey</a></div><div class="ttdeci">bool SetDefaultKey(const CPubKey &amp;vchPubKey)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l03728">wallet.cpp:3728</a></div></div>
<div class="ttc" id="group__mapWallet_html_gae4af382e1eeba62ee7e84100c7234f23"><div class="ttname"><a href="group__mapWallet.html#gae4af382e1eeba62ee7e84100c7234f23">CWalletTx::InMempool</a></div><div class="ttdeci">bool InMempool() const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02032">wallet.cpp:2032</a></div></div>
<div class="ttc" id="util_8h_html_aad133bb6103b53cebf03fd01e2f11ba1"><div class="ttname"><a href="util_8h.html#aad133bb6103b53cebf03fd01e2f11ba1">_</a></div><div class="ttdeci">std::string _(const char *psz)</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00084">util.h:84</a></div></div>
<div class="ttc" id="block_8h_html"><div class="ttname"><a href="block_8h.html">block.h</a></div></div>
<div class="ttc" id="group__Actions_html_ga24e9c793a438c84b48811bd5b7d4edc6"><div class="ttname"><a href="group__Actions.html#ga24e9c793a438c84b48811bd5b7d4edc6">CWallet::GetNormalizedAnonymizedBalance</a></div><div class="ttdeci">CAmount GetNormalizedAnonymizedBalance() const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02224">wallet.cpp:2224</a></div></div>
<div class="ttc" id="namespaceextract__strings__qt_html_a1b7a78cde0039f63310f11692b713dca"><div class="ttname"><a href="namespaceextract__strings__qt.html#a1b7a78cde0039f63310f11692b713dca">extract_strings_qt.key</a></div><div class="ttdeci">key</div><div class="ttdef"><b>Definition:</b> <a href="extract__strings__qt_8py_source.html#l00073">extract_strings_qt.py:73</a></div></div>
<div class="ttc" id="classCTxIn_html_a91732c5ffb13520a6989b162ff6683fc"><div class="ttname"><a href="classCTxIn.html#a91732c5ffb13520a6989b162ff6683fc">CTxIn::prevPubKey</a></div><div class="ttdeci">CScript prevPubKey</div><div class="ttdef"><b>Definition:</b> <a href="transaction_8h_source.html#l00064">transaction.h:64</a></div></div>
<div class="ttc" id="utilstrencodings_8cpp_html_aa5ce96ec36f4413f820cec9c1831c070"><div class="ttname"><a href="utilstrencodings_8cpp.html#aa5ce96ec36f4413f820cec9c1831c070">atoi</a></div><div class="ttdeci">int atoi(const std::string &amp;str)</div><div class="ttdef"><b>Definition:</b> <a href="utilstrencodings_8cpp_source.html#l00541">utilstrencodings.cpp:541</a></div></div>
<div class="ttc" id="classCTxOut_html_a103164c5d870fb02bca28fa5cf06b279"><div class="ttname"><a href="classCTxOut.html#a103164c5d870fb02bca28fa5cf06b279">CTxOut::GetDustThreshold</a></div><div class="ttdeci">CAmount GetDustThreshold(const CFeeRate &amp;minRelayTxFee) const</div><div class="ttdef"><b>Definition:</b> <a href="transaction_8h_source.html#l00169">transaction.h:169</a></div></div>
<div class="ttc" id="util_8cpp_html_a0502b74b88db99500ee21dcb446311e5"><div class="ttname"><a href="util_8cpp.html#a0502b74b88db99500ee21dcb446311e5">mapArgs</a></div><div class="ttdeci">map&lt; string, string &gt; mapArgs</div><div class="ttdef"><b>Definition:</b> <a href="util_8cpp_source.html#l00122">util.cpp:122</a></div></div>
<div class="ttc" id="group__mapWallet_html_ga3240da36cd717146296969227a3e0bd5"><div class="ttname"><a href="group__mapWallet.html#ga3240da36cd717146296969227a3e0bd5">CWallet::AddKeyPubKey</a></div><div class="ttdeci">bool AddKeyPubKey(const CKey &amp;key, const CPubKey &amp;pubkey)</div><div class="ttdoc">Adds a key to the store, and saves it to disk. </div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l00288">wallet.cpp:288</a></div></div>
<div class="ttc" id="group__mapWallet_html_gac78c4da3c420b2b28370cba7044dd68d"><div class="ttname"><a href="group__mapWallet.html#gac78c4da3c420b2b28370cba7044dd68d">CWalletTx::GetAvailableWatchOnlyCredit</a></div><div class="ttdeci">CAmount GetAvailableWatchOnlyCredit(const bool &amp;fUseCache=true) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01915">wallet.cpp:1915</a></div></div>
<div class="ttc" id="random_8cpp_html_a27d9149d522b1fa87d84e5e9ca902aef"><div class="ttname"><a href="random_8cpp.html#a27d9149d522b1fa87d84e5e9ca902aef">GetRand</a></div><div class="ttdeci">uint64_t GetRand(uint64_t nMax)</div><div class="ttdef"><b>Definition:</b> <a href="random_8cpp_source.html#l00094">random.cpp:94</a></div></div>
<div class="ttc" id="group__Actions_html_ga8eacbac6ad3697d90b98dfe02632f8ef"><div class="ttname"><a href="group__Actions.html#ga8eacbac6ad3697d90b98dfe02632f8ef">CWallet::GetAddressGroupings</a></div><div class="ttdeci">std::set&lt; std::set&lt; CTxDestination &gt; &gt; GetAddressGroupings()</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l03994">wallet.cpp:3994</a></div></div>
<div class="ttc" id="namespacerpcuser_html_a637791b4450c02d511291cd297ce12df"><div class="ttname"><a href="namespacerpcuser.html#a637791b4450c02d511291cd297ce12df">rpcuser.result</a></div><div class="ttdeci">result</div><div class="ttdef"><b>Definition:</b> <a href="rpcuser_8py_source.html#l00037">rpcuser.py:37</a></div></div>
<div class="ttc" id="group__mapWallet_html_gafd3ca5b54d33038a06189f3f27a97910"><div class="ttname"><a href="group__mapWallet.html#gafd3ca5b54d33038a06189f3f27a97910">CWalletTx::GetRequestCount</a></div><div class="ttdeci">int GetRequestCount() const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01546">wallet.cpp:1546</a></div></div>
<div class="ttc" id="group__mapWallet_html_gaac999a0c557887b371bd8d9efaa6ea93"><div class="ttname"><a href="group__mapWallet.html#gaac999a0c557887b371bd8d9efaa6ea93">CWallet::SyncTransaction</a></div><div class="ttdeci">void SyncTransaction(const CTransaction &amp;tx, const CBlock *pblock)</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l01189">wallet.cpp:1189</a></div></div>
<div class="ttc" id="script_8h_html_a54e10bc63d490dd5d39d245102b81359"><div class="ttname"><a href="script_8h.html#a54e10bc63d490dd5d39d245102b81359">ToByteVector</a></div><div class="ttdeci">std::vector&lt; unsigned char &gt; ToByteVector(const T &amp;in)</div><div class="ttdef"><b>Definition:</b> <a href="script_8h_source.html#l00035">script.h:35</a></div></div>
<div class="ttc" id="classCHDChain_html_ada5366bcf86ad715b0e0fed80733e35b"><div class="ttname"><a href="classCHDChain.html#ada5366bcf86ad715b0e0fed80733e35b">CHDChain::Debug</a></div><div class="ttdeci">void Debug(std::string strName) const</div><div class="ttdef"><b>Definition:</b> <a href="hdchain_8cpp_source.html#l00042">hdchain.cpp:42</a></div></div>
<div class="ttc" id="classCHDChain_html_a4593a3c0b9eb1918f0c3820f1a54b5f4"><div class="ttname"><a href="classCHDChain.html#a4593a3c0b9eb1918f0c3820f1a54b5f4">CHDChain::GetSeedHash</a></div><div class="ttdeci">uint256 GetSeedHash()</div><div class="ttdef"><b>Definition:</b> <a href="hdchain_8cpp_source.html#l00146">hdchain.cpp:146</a></div></div>
<div class="ttc" id="group__Actions_html_ga1cc229323a238a59d4eb592286c8bf2a"><div class="ttname"><a href="group__Actions.html#ga1cc229323a238a59d4eb592286c8bf2a">CWallet::AvailableCoins</a></div><div class="ttdeci">void AvailableCoins(std::vector&lt; COutput &gt; &amp;vCoins, bool fOnlyConfirmed=true, const CCoinControl *coinControl=NULL, bool fIncludeZeroValue=false, AvailableCoinsType nCoinType=ALL_COINS, bool fUseInstantSend=false) const</div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l02360">wallet.cpp:2360</a></div></div>
<div class="ttc" id="classCTxOut_html"><div class="ttname"><a href="classCTxOut.html">CTxOut</a></div><div class="ttdef"><b>Definition:</b> <a href="transaction_8h_source.html#l00133">transaction.h:133</a></div></div>
<div class="ttc" id="policy_8h_html_aefbb84a1c575dfc90d140d06f8c8d1e9"><div class="ttname"><a href="policy_8h.html#aefbb84a1c575dfc90d140d06f8c8d1e9">MAX_STANDARD_TX_SIZE</a></div><div class="ttdeci">static const unsigned int MAX_STANDARD_TX_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="policy_8h_source.html#l00023">policy.h:23</a></div></div>
<div class="ttc" id="classCAffectedKeysVisitor_html"><div class="ttname"><a href="classCAffectedKeysVisitor.html">CAffectedKeysVisitor</a></div><div class="ttdef"><b>Definition:</b> <a href="wallet_8cpp_source.html#l04241">wallet.cpp:4241</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_e91c81f9be83f649fcd1d8691438a113.html">wallet</a></li><li class="navelem"><a class="el" href="wallet_8cpp.html">wallet.cpp</a></li>
<li class="footer">Generated on Thu Dec 14 2017 13:15:10 for Dash Core by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li>
</ul>
</div>
</body>
</html>