update to monero core v0.16.0.0 nitrogen nebula

remove is_rct on submit tx result
only incoming transfers have num_suggested_confirmations
update docs
add to readme: git checkout tags/v0.16.0.0 for monero-core
This commit is contained in:
woodser
2020-05-28 14:05:15 -04:00
parent 94cf7dc869
commit 9342a67dde
21 changed files with 209 additions and 221 deletions
+2 -1
View File
@@ -11,7 +11,7 @@
## Overview
This project is a C++ library for using Monero wallets with native bindings to [Monero Core v0.15.0.5 Carbon Chameleon](https://web.getmonero.org/downloads/).
This project is a C++ library for using Monero wallets with native bindings to [Monero Core v0.16.0.0 'Nitrogen Nebula'](https://web.getmonero.org/downloads/).
In addition, this project conforms to an [API specification](http://moneroecosystem.org/monero-java/monero-spec.pdf) intended to be intuitive, robust, and for long-term use in the Monero project.
@@ -189,6 +189,7 @@ The following dependencies must be set up before running this project.
5. Set up Monero Core
1. Initialize submodules: `git submodule update --init --recursive`
2. cd ./external/monero-core
3. git checkout tags/v0.16.0.0
3. Modify CMakeLists.txt: `option(BUILD_GUI_DEPS "Build GUI dependencies." ON)`.
4. Build twice to create libwallet_merged.a in addition to other .a libraries: `make release-static -j8`.
6. Build this project as a shared library in `./build/`: `./bin/build_libmonero_cpp.sh`.
+1 -1
View File
@@ -205,7 +205,7 @@ $(function() {
<div class="ttc" id="classmonero_1_1monero__wallet_html_aa99175937b6c342597c28e4a9a31e8c8"><div class="ttname"><a href="classmonero_1_1monero__wallet.html#aa99175937b6c342597c28e4a9a31e8c8">monero::monero_wallet::get_listeners</a></div><div class="ttdeci">virtual std::set&lt; monero_wallet_listener * &gt; get_listeners()</div><div class="ttdef"><b>Definition:</b> monero_wallet.h:398</div></div>
<div class="ttc" id="structmonero_1_1monero__tx__config_html"><div class="ttname"><a href="structmonero_1_1monero__tx__config.html">monero::monero_tx_config</a></div><div class="ttdef"><b>Definition:</b> monero_wallet_model.h:343</div></div>
<div class="ttc" id="classmonero_1_1monero__wallet_html_a93058114cff787076edf9440d1087baf"><div class="ttname"><a href="classmonero_1_1monero__wallet.html#a93058114cff787076edf9440d1087baf">monero::monero_wallet::create_txs</a></div><div class="ttdeci">virtual std::vector&lt; std::shared_ptr&lt; monero_tx_wallet &gt; &gt; create_txs(const monero_tx_config &amp;config)</div><div class="ttdef"><b>Definition:</b> monero_wallet.h:785</div></div>
<div class="ttc" id="structmonero_1_1wallet2__listener_html"><div class="ttname"><a href="structmonero_1_1wallet2__listener.html">monero::wallet2_listener</a></div><div class="ttdef"><b>Definition:</b> monero_wallet_core.cpp:688</div></div>
<div class="ttc" id="structmonero_1_1wallet2__listener_html"><div class="ttname"><a href="structmonero_1_1wallet2__listener.html">monero::wallet2_listener</a></div><div class="ttdef"><b>Definition:</b> monero_wallet_core.cpp:679</div></div>
<div class="ttc" id="classmonero_1_1monero__wallet_html_adc414619a0d246a014331f4a9d54d914"><div class="ttname"><a href="classmonero_1_1monero__wallet.html#adc414619a0d246a014331f4a9d54d914">monero::monero_wallet::verify_message</a></div><div class="ttdeci">virtual bool verify_message(const std::string &amp;msg, const std::string &amp;address, const std::string &amp;signature) const</div><div class="ttdef"><b>Definition:</b> monero_wallet.h:911</div></div>
<div class="ttc" id="classmonero_1_1monero__wallet_html_a2892affa378f7a465ca045172ba2c270"><div class="ttname"><a href="classmonero_1_1monero__wallet.html#a2892affa378f7a465ca045172ba2c270">monero::monero_wallet::get_account</a></div><div class="ttdeci">virtual monero_account get_account(uint32_t account_idx) const</div><div class="ttdef"><b>Definition:</b> monero_wallet.h:586</div></div>
</div><!-- fragment --></div><!-- contents -->
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+3 -3
View File
@@ -203,10 +203,10 @@ std::string&#160;</td><td class="memItemRight" valign="bottom"><b>get_default_ri
<tr class="separator:aab39fad177c2dd5acb39537280278043"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11ef2da5190ff16e820b26ada8cfd943"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemonero.html#a11ef2da5190ff16e820b26ada8cfd943">validate_transfer</a> (wallet2 *m_w2, const std::list&lt; wallet_rpc::transfer_destination &gt; &amp;destinations, const std::string &amp;payment_id, std::vector&lt; cryptonote::tx_destination_entry &gt; &amp;dsts, std::vector&lt; uint8_t &gt; &amp;extra, bool at_least_one_destination, epee::json_rpc::error &amp;er)</td></tr>
<tr class="separator:a11ef2da5190ff16e820b26ada8cfd943"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a85ad4bc6a98437b114bc85e57c12a567"><td class="memTemplParams" colspan="2"><a id="a85ad4bc6a98437b114bc85e57c12a567"></a>
<tr class="memitem:ae743b032b8f40c2d4cf67c1ddc6e0d8b"><td class="memTemplParams" colspan="2"><a id="ae743b032b8f40c2d4cf67c1ddc6e0d8b"></a>
template&lt;typename Ts , typename Tu &gt; </td></tr>
<tr class="memitem:a85ad4bc6a98437b114bc85e57c12a567"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>fill_response</b> (wallet2 *m_w2, std::vector&lt; tools::wallet2::pending_tx &gt; &amp;ptx_vector, bool get_tx_key, Ts &amp;tx_key, Tu &amp;amount, Tu &amp;fee, std::string &amp;multisig_txset, std::string &amp;unsigned_txset, bool do_not_relay, Ts &amp;tx_hash, bool get_tx_hex, Ts &amp;tx_blob, bool get_tx_metadata, Ts &amp;tx_metadata, epee::json_rpc::error &amp;er)</td></tr>
<tr class="separator:a85ad4bc6a98437b114bc85e57c12a567"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae743b032b8f40c2d4cf67c1ddc6e0d8b"><td class="memTemplItemLeft" align="right" valign="top">bool&#160;</td><td class="memTemplItemRight" valign="bottom"><b>fill_response</b> (wallet2 *m_w2, std::vector&lt; tools::wallet2::pending_tx &gt; &amp;ptx_vector, bool get_tx_key, Ts &amp;tx_key, Tu &amp;amount, Tu &amp;fee, Tu &amp;weight, std::string &amp;multisig_txset, std::string &amp;unsigned_txset, bool do_not_relay, Ts &amp;tx_hash, bool get_tx_hex, Ts &amp;tx_blob, bool get_tx_metadata, Ts &amp;tx_metadata, epee::json_rpc::error &amp;er)</td></tr>
<tr class="separator:ae743b032b8f40c2d4cf67c1ddc6e0d8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad28462ef279a5dddc5369e6a9dbc7d4b"><td class="memItemLeft" align="right" valign="top"><a id="ad28462ef279a5dddc5369e6a9dbc7d4b"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>merge_incoming_transfer</b> (std::vector&lt; std::shared_ptr&lt; <a class="el" href="structmonero_1_1monero__incoming__transfer.html">monero_incoming_transfer</a> &gt;&gt; &amp;transfers, const std::shared_ptr&lt; <a class="el" href="structmonero_1_1monero__incoming__transfer.html">monero_incoming_transfer</a> &gt; &amp;transfer)</td></tr>
<tr class="separator:ad28462ef279a5dddc5369e6a9dbc7d4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -77,9 +77,10 @@ $(function() {
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_index</b> (defined in <a class="el" href="structmonero_1_1monero__address__book__entry.html">monero::monero_address_book_entry</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__address__book__entry.html">monero::monero_address_book_entry</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>m_payment_id</b> (defined in <a class="el" href="structmonero_1_1monero__address__book__entry.html">monero::monero_address_book_entry</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__address__book__entry.html">monero::monero_address_book_entry</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>monero_address_book_entry</b>() (defined in <a class="el" href="structmonero_1_1monero__address__book__entry.html">monero::monero_address_book_entry</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__address__book__entry.html">monero::monero_address_book_entry</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>monero_address_book_entry</b>(uint64_t index, const std::string &amp;address, const std::string &amp;description, const std::string &amp;payment_id) (defined in <a class="el" href="structmonero_1_1monero__address__book__entry.html">monero::monero_address_book_entry</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__address__book__entry.html">monero::monero_address_book_entry</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr class="even"><td class="entry"><a class="el" href="structmonero_1_1serializable__struct.html#a723e44b22962d02d3f78bc7c2043dc1e">serialize</a>() const</td><td class="entry"><a class="el" href="structmonero_1_1serializable__struct.html">monero::serializable_struct</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="structmonero_1_1monero__address__book__entry.html#a581c7ca994d40a7518b8b2aee9f7fd19">to_rapidjson_val</a>(rapidjson::Document::AllocatorType &amp;allocator) const</td><td class="entry"><a class="el" href="structmonero_1_1monero__address__book__entry.html">monero::monero_address_book_entry</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>monero_address_book_entry</b>(uint64_t index, const std::string &amp;address, const std::string &amp;description) (defined in <a class="el" href="structmonero_1_1monero__address__book__entry.html">monero::monero_address_book_entry</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__address__book__entry.html">monero::monero_address_book_entry</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>monero_address_book_entry</b>(uint64_t index, const std::string &amp;address, const std::string &amp;description, const std::string &amp;payment_id) (defined in <a class="el" href="structmonero_1_1monero__address__book__entry.html">monero::monero_address_book_entry</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__address__book__entry.html">monero::monero_address_book_entry</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="structmonero_1_1serializable__struct.html#a723e44b22962d02d3f78bc7c2043dc1e">serialize</a>() const</td><td class="entry"><a class="el" href="structmonero_1_1serializable__struct.html">monero::serializable_struct</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="structmonero_1_1monero__address__book__entry.html#a581c7ca994d40a7518b8b2aee9f7fd19">to_rapidjson_val</a>(rapidjson::Document::AllocatorType &amp;allocator) const</td><td class="entry"><a class="el" href="structmonero_1_1monero__address__book__entry.html">monero::monero_address_book_entry</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
@@ -87,6 +87,9 @@ Inheritance diagram for monero::monero_address_book_entry:</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a965a60cb6c1e61b095e0ddf269b9c6af"><td class="memItemLeft" align="right" valign="top"><a id="a965a60cb6c1e61b095e0ddf269b9c6af"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>monero_address_book_entry</b> (uint64_t index, const std::string &amp;address, const std::string &amp;description)</td></tr>
<tr class="separator:a965a60cb6c1e61b095e0ddf269b9c6af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a927d72a12a04e91300f5faf298925e63"><td class="memItemLeft" align="right" valign="top"><a id="a927d72a12a04e91300f5faf298925e63"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>monero_address_book_entry</b> (uint64_t index, const std::string &amp;address, const std::string &amp;description, const std::string &amp;payment_id)</td></tr>
<tr class="separator:a927d72a12a04e91300f5faf298925e63"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -80,7 +80,7 @@ $(function() {
<tr bgcolor="#f0f0f0"><td class="entry"><b>m_account_index</b> (defined in <a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_address</b> (defined in <a class="el" href="structmonero_1_1monero__incoming__transfer.html">monero::monero_incoming_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__incoming__transfer.html">monero::monero_incoming_transfer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>m_amount</b> (defined in <a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_num_suggested_confirmations</b> (defined in <a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_num_suggested_confirmations</b> (defined in <a class="el" href="structmonero_1_1monero__incoming__transfer.html">monero::monero_incoming_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__incoming__transfer.html">monero::monero_incoming_transfer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>m_subaddress_index</b> (defined in <a class="el" href="structmonero_1_1monero__incoming__transfer.html">monero::monero_incoming_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__incoming__transfer.html">monero::monero_incoming_transfer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_tx</b> (defined in <a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>merge</b>(const std::shared_ptr&lt; monero_transfer &gt; &amp;self, const std::shared_ptr&lt; monero_transfer &gt; &amp;other) (defined in <a class="el" href="structmonero_1_1monero__incoming__transfer.html">monero::monero_incoming_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__incoming__transfer.html">monero::monero_incoming_transfer</a></td><td class="entry"></td></tr>
@@ -127,6 +127,9 @@ boost::optional&lt; uint32_t &gt;&#160;</td><td class="memItemRight" valign="bot
<tr class="memitem:a79316a691ffb09e7ca2a293815a02e70"><td class="memItemLeft" align="right" valign="top"><a id="a79316a691ffb09e7ca2a293815a02e70"></a>
boost::optional&lt; std::string &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>m_address</b></td></tr>
<tr class="separator:a79316a691ffb09e7ca2a293815a02e70"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac3f2bc8be9e05b812f549af81cc340e4"><td class="memItemLeft" align="right" valign="top"><a id="ac3f2bc8be9e05b812f549af81cc340e4"></a>
boost::optional&lt; uint64_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>m_num_suggested_confirmations</b></td></tr>
<tr class="separator:ac3f2bc8be9e05b812f549af81cc340e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_attribs_structmonero_1_1monero__transfer"><td colspan="2" onclick="javascript:toggleInherit('pub_attribs_structmonero_1_1monero__transfer')"><img src="closed.png" alt="-"/>&#160;Public Attributes inherited from <a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a></td></tr>
<tr class="memitem:ad8805f58288f529e5a28426ea8a97e79 inherit pub_attribs_structmonero_1_1monero__transfer"><td class="memItemLeft" align="right" valign="top"><a id="ad8805f58288f529e5a28426ea8a97e79"></a>
std::shared_ptr&lt; <a class="el" href="structmonero_1_1monero__tx__wallet.html">monero_tx_wallet</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>m_tx</b></td></tr>
@@ -137,9 +140,6 @@ boost::optional&lt; uint64_t &gt;&#160;</td><td class="memItemRight" valign="bot
<tr class="memitem:a121fc549ccc450ae81c0e8626fa81565 inherit pub_attribs_structmonero_1_1monero__transfer"><td class="memItemLeft" align="right" valign="top"><a id="a121fc549ccc450ae81c0e8626fa81565"></a>
boost::optional&lt; uint32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>m_account_index</b></td></tr>
<tr class="separator:a121fc549ccc450ae81c0e8626fa81565 inherit pub_attribs_structmonero_1_1monero__transfer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a33b70ec4ef38105a1c5667bffee872d6 inherit pub_attribs_structmonero_1_1monero__transfer"><td class="memItemLeft" align="right" valign="top"><a id="a33b70ec4ef38105a1c5667bffee872d6"></a>
boost::optional&lt; uint64_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>m_num_suggested_confirmations</b></td></tr>
<tr class="separator:a33b70ec4ef38105a1c5667bffee872d6 inherit pub_attribs_structmonero_1_1monero__transfer"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
@@ -81,13 +81,12 @@ $(function() {
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_addresses</b> (defined in <a class="el" href="structmonero_1_1monero__outgoing__transfer.html">monero::monero_outgoing_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__outgoing__transfer.html">monero::monero_outgoing_transfer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>m_amount</b> (defined in <a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_destinations</b> (defined in <a class="el" href="structmonero_1_1monero__outgoing__transfer.html">monero::monero_outgoing_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__outgoing__transfer.html">monero::monero_outgoing_transfer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>m_num_suggested_confirmations</b> (defined in <a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_subaddress_indices</b> (defined in <a class="el" href="structmonero_1_1monero__outgoing__transfer.html">monero::monero_outgoing_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__outgoing__transfer.html">monero::monero_outgoing_transfer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>m_tx</b> (defined in <a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>merge</b>(const std::shared_ptr&lt; monero_transfer &gt; &amp;self, const std::shared_ptr&lt; monero_transfer &gt; &amp;other) (defined in <a class="el" href="structmonero_1_1monero__outgoing__transfer.html">monero::monero_outgoing_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__outgoing__transfer.html">monero::monero_outgoing_transfer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>merge</b>(const std::shared_ptr&lt; monero_outgoing_transfer &gt; &amp;self, const std::shared_ptr&lt; monero_outgoing_transfer &gt; &amp;other) (defined in <a class="el" href="structmonero_1_1monero__outgoing__transfer.html">monero::monero_outgoing_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__outgoing__transfer.html">monero::monero_outgoing_transfer</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="structmonero_1_1serializable__struct.html#a723e44b22962d02d3f78bc7c2043dc1e">serialize</a>() const</td><td class="entry"><a class="el" href="structmonero_1_1serializable__struct.html">monero::serializable_struct</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="structmonero_1_1monero__outgoing__transfer.html#ae2252aa8350174cb8a365ba8fd617c68">to_rapidjson_val</a>(rapidjson::Document::AllocatorType &amp;allocator) const</td><td class="entry"><a class="el" href="structmonero_1_1monero__outgoing__transfer.html">monero::monero_outgoing_transfer</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>m_subaddress_indices</b> (defined in <a class="el" href="structmonero_1_1monero__outgoing__transfer.html">monero::monero_outgoing_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__outgoing__transfer.html">monero::monero_outgoing_transfer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_tx</b> (defined in <a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>merge</b>(const std::shared_ptr&lt; monero_transfer &gt; &amp;self, const std::shared_ptr&lt; monero_transfer &gt; &amp;other) (defined in <a class="el" href="structmonero_1_1monero__outgoing__transfer.html">monero::monero_outgoing_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__outgoing__transfer.html">monero::monero_outgoing_transfer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>merge</b>(const std::shared_ptr&lt; monero_outgoing_transfer &gt; &amp;self, const std::shared_ptr&lt; monero_outgoing_transfer &gt; &amp;other) (defined in <a class="el" href="structmonero_1_1monero__outgoing__transfer.html">monero::monero_outgoing_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__outgoing__transfer.html">monero::monero_outgoing_transfer</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="structmonero_1_1serializable__struct.html#a723e44b22962d02d3f78bc7c2043dc1e">serialize</a>() const</td><td class="entry"><a class="el" href="structmonero_1_1serializable__struct.html">monero::serializable_struct</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="structmonero_1_1monero__outgoing__transfer.html#ae2252aa8350174cb8a365ba8fd617c68">to_rapidjson_val</a>(rapidjson::Document::AllocatorType &amp;allocator) const</td><td class="entry"><a class="el" href="structmonero_1_1monero__outgoing__transfer.html">monero::monero_outgoing_transfer</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
@@ -140,9 +140,6 @@ boost::optional&lt; uint64_t &gt;&#160;</td><td class="memItemRight" valign="bot
<tr class="memitem:a121fc549ccc450ae81c0e8626fa81565 inherit pub_attribs_structmonero_1_1monero__transfer"><td class="memItemLeft" align="right" valign="top"><a id="a121fc549ccc450ae81c0e8626fa81565"></a>
boost::optional&lt; uint32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>m_account_index</b></td></tr>
<tr class="separator:a121fc549ccc450ae81c0e8626fa81565 inherit pub_attribs_structmonero_1_1monero__transfer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a33b70ec4ef38105a1c5667bffee872d6 inherit pub_attribs_structmonero_1_1monero__transfer"><td class="memItemLeft" align="right" valign="top"><a id="a33b70ec4ef38105a1c5667bffee872d6"></a>
boost::optional&lt; uint64_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>m_num_suggested_confirmations</b></td></tr>
<tr class="separator:a33b70ec4ef38105a1c5667bffee872d6 inherit pub_attribs_structmonero_1_1monero__transfer"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
@@ -78,11 +78,10 @@ $(function() {
<tr bgcolor="#f0f0f0"><td class="entry"><b>is_outgoing</b>() const (defined in <a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_account_index</b> (defined in <a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>m_amount</b> (defined in <a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_num_suggested_confirmations</b> (defined in <a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>m_tx</b> (defined in <a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>merge</b>(const std::shared_ptr&lt; monero_transfer &gt; &amp;self, const std::shared_ptr&lt; monero_transfer &gt; &amp;other) (defined in <a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="structmonero_1_1serializable__struct.html#a723e44b22962d02d3f78bc7c2043dc1e">serialize</a>() const</td><td class="entry"><a class="el" href="structmonero_1_1serializable__struct.html">monero::serializable_struct</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="structmonero_1_1monero__transfer.html#ae34c855d2139c06df65ee46be86df9e6">to_rapidjson_val</a>(rapidjson::Document::AllocatorType &amp;allocator) const</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_tx</b> (defined in <a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>merge</b>(const std::shared_ptr&lt; monero_transfer &gt; &amp;self, const std::shared_ptr&lt; monero_transfer &gt; &amp;other) (defined in <a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="structmonero_1_1serializable__struct.html#a723e44b22962d02d3f78bc7c2043dc1e">serialize</a>() const</td><td class="entry"><a class="el" href="structmonero_1_1serializable__struct.html">monero::serializable_struct</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="structmonero_1_1monero__transfer.html#ae34c855d2139c06df65ee46be86df9e6">to_rapidjson_val</a>(rapidjson::Document::AllocatorType &amp;allocator) const</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
@@ -126,9 +126,6 @@ boost::optional&lt; uint64_t &gt;&#160;</td><td class="memItemRight" valign="bot
<tr class="memitem:a121fc549ccc450ae81c0e8626fa81565"><td class="memItemLeft" align="right" valign="top"><a id="a121fc549ccc450ae81c0e8626fa81565"></a>
boost::optional&lt; uint32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>m_account_index</b></td></tr>
<tr class="separator:a121fc549ccc450ae81c0e8626fa81565"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a33b70ec4ef38105a1c5667bffee872d6"><td class="memItemLeft" align="right" valign="top"><a id="a33b70ec4ef38105a1c5667bffee872d6"></a>
boost::optional&lt; uint64_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>m_num_suggested_confirmations</b></td></tr>
<tr class="separator:a33b70ec4ef38105a1c5667bffee872d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Models a base transfer of funds to or from the wallet.</p>
@@ -86,15 +86,14 @@ $(function() {
<tr bgcolor="#f0f0f0"><td class="entry"><b>m_destinations</b> (defined in <a class="el" href="structmonero_1_1monero__transfer__query.html">monero::monero_transfer_query</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer__query.html">monero::monero_transfer_query</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_has_destinations</b> (defined in <a class="el" href="structmonero_1_1monero__transfer__query.html">monero::monero_transfer_query</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer__query.html">monero::monero_transfer_query</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>m_is_incoming</b> (defined in <a class="el" href="structmonero_1_1monero__transfer__query.html">monero::monero_transfer_query</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer__query.html">monero::monero_transfer_query</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_num_suggested_confirmations</b> (defined in <a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>m_subaddress_index</b> (defined in <a class="el" href="structmonero_1_1monero__transfer__query.html">monero::monero_transfer_query</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer__query.html">monero::monero_transfer_query</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_subaddress_indices</b> (defined in <a class="el" href="structmonero_1_1monero__transfer__query.html">monero::monero_transfer_query</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer__query.html">monero::monero_transfer_query</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>m_tx</b> (defined in <a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_tx_query</b> (defined in <a class="el" href="structmonero_1_1monero__transfer__query.html">monero::monero_transfer_query</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer__query.html">monero::monero_transfer_query</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>meets_criteria</b>(monero_transfer *transfer, bool query_parent=true) const (defined in <a class="el" href="structmonero_1_1monero__transfer__query.html">monero::monero_transfer_query</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer__query.html">monero::monero_transfer_query</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>merge</b>(const std::shared_ptr&lt; monero_transfer &gt; &amp;self, const std::shared_ptr&lt; monero_transfer &gt; &amp;other) (defined in <a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="structmonero_1_1serializable__struct.html#a723e44b22962d02d3f78bc7c2043dc1e">serialize</a>() const</td><td class="entry"><a class="el" href="structmonero_1_1serializable__struct.html">monero::serializable_struct</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="structmonero_1_1monero__transfer__query.html#a04694bb70b70a24b2eb347f127c2aed8">to_rapidjson_val</a>(rapidjson::Document::AllocatorType &amp;allocator) const</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer__query.html">monero::monero_transfer_query</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_subaddress_index</b> (defined in <a class="el" href="structmonero_1_1monero__transfer__query.html">monero::monero_transfer_query</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer__query.html">monero::monero_transfer_query</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>m_subaddress_indices</b> (defined in <a class="el" href="structmonero_1_1monero__transfer__query.html">monero::monero_transfer_query</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer__query.html">monero::monero_transfer_query</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>m_tx</b> (defined in <a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>m_tx_query</b> (defined in <a class="el" href="structmonero_1_1monero__transfer__query.html">monero::monero_transfer_query</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer__query.html">monero::monero_transfer_query</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>meets_criteria</b>(monero_transfer *transfer, bool query_parent=true) const (defined in <a class="el" href="structmonero_1_1monero__transfer__query.html">monero::monero_transfer_query</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer__query.html">monero::monero_transfer_query</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>merge</b>(const std::shared_ptr&lt; monero_transfer &gt; &amp;self, const std::shared_ptr&lt; monero_transfer &gt; &amp;other) (defined in <a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a>)</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer.html">monero::monero_transfer</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="structmonero_1_1serializable__struct.html#a723e44b22962d02d3f78bc7c2043dc1e">serialize</a>() const</td><td class="entry"><a class="el" href="structmonero_1_1serializable__struct.html">monero::serializable_struct</a></td><td class="entry"></td></tr>
<tr><td class="entry"><a class="el" href="structmonero_1_1monero__transfer__query.html#a04694bb70b70a24b2eb347f127c2aed8">to_rapidjson_val</a>(rapidjson::Document::AllocatorType &amp;allocator) const</td><td class="entry"><a class="el" href="structmonero_1_1monero__transfer__query.html">monero::monero_transfer_query</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
@@ -166,9 +166,6 @@ boost::optional&lt; uint64_t &gt;&#160;</td><td class="memItemRight" valign="bot
<tr class="memitem:a121fc549ccc450ae81c0e8626fa81565 inherit pub_attribs_structmonero_1_1monero__transfer"><td class="memItemLeft" align="right" valign="top"><a id="a121fc549ccc450ae81c0e8626fa81565"></a>
boost::optional&lt; uint32_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>m_account_index</b></td></tr>
<tr class="separator:a121fc549ccc450ae81c0e8626fa81565 inherit pub_attribs_structmonero_1_1monero__transfer"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a33b70ec4ef38105a1c5667bffee872d6 inherit pub_attribs_structmonero_1_1monero__transfer"><td class="memItemLeft" align="right" valign="top"><a id="a33b70ec4ef38105a1c5667bffee872d6"></a>
boost::optional&lt; uint64_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>m_num_suggested_confirmations</b></td></tr>
<tr class="separator:a33b70ec4ef38105a1c5667bffee872d6 inherit pub_attribs_structmonero_1_1monero__transfer"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Configures a query to retrieve transfers.</p>
@@ -72,12 +72,12 @@ $(function() {
<p>This is the complete list of members for <a class="el" href="structmonero_1_1wallet2__listener.html">monero::wallet2_listener</a>, including all inherited members.</p>
<table class="directory">
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>on_money_received</b>(uint64_t height, const crypto::hash &amp;txid, const cryptonote::transaction &amp;cn_tx, uint64_t amount, const cryptonote::subaddress_index &amp;subaddr_index, uint64_t unlock_time) (defined in <a class="el" href="structmonero_1_1wallet2__listener.html">monero::wallet2_listener</a>)</td><td class="entry"><a class="el" href="structmonero_1_1wallet2__listener.html">monero::wallet2_listener</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>on_money_spent</b>(uint64_t height, const crypto::hash &amp;txid, const cryptonote::transaction &amp;cn_tx_in, uint64_t amount, const cryptonote::transaction &amp;cn_tx_out, const cryptonote::subaddress_index &amp;subaddr_index) (defined in <a class="el" href="structmonero_1_1wallet2__listener.html">monero::wallet2_listener</a>)</td><td class="entry"><a class="el" href="structmonero_1_1wallet2__listener.html">monero::wallet2_listener</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>on_new_block</b>(uint64_t height, const cryptonote::block &amp;cn_block) (defined in <a class="el" href="structmonero_1_1wallet2__listener.html">monero::wallet2_listener</a>)</td><td class="entry"><a class="el" href="structmonero_1_1wallet2__listener.html">monero::wallet2_listener</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>on_money_received</b>(uint64_t height, const crypto::hash &amp;txid, const cryptonote::transaction &amp;cn_tx, uint64_t amount, const cryptonote::subaddress_index &amp;subaddr_index, bool is_change, uint64_t unlock_time) override (defined in <a class="el" href="structmonero_1_1wallet2__listener.html">monero::wallet2_listener</a>)</td><td class="entry"><a class="el" href="structmonero_1_1wallet2__listener.html">monero::wallet2_listener</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>on_money_spent</b>(uint64_t height, const crypto::hash &amp;txid, const cryptonote::transaction &amp;cn_tx_in, uint64_t amount, const cryptonote::transaction &amp;cn_tx_out, const cryptonote::subaddress_index &amp;subaddr_index) override (defined in <a class="el" href="structmonero_1_1wallet2__listener.html">monero::wallet2_listener</a>)</td><td class="entry"><a class="el" href="structmonero_1_1wallet2__listener.html">monero::wallet2_listener</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>on_new_block</b>(uint64_t height, const cryptonote::block &amp;cn_block) override (defined in <a class="el" href="structmonero_1_1wallet2__listener.html">monero::wallet2_listener</a>)</td><td class="entry"><a class="el" href="structmonero_1_1wallet2__listener.html">monero::wallet2_listener</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>on_sync_end</b>() (defined in <a class="el" href="structmonero_1_1wallet2__listener.html">monero::wallet2_listener</a>)</td><td class="entry"><a class="el" href="structmonero_1_1wallet2__listener.html">monero::wallet2_listener</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>on_sync_start</b>(uint64_t start_height) (defined in <a class="el" href="structmonero_1_1wallet2__listener.html">monero::wallet2_listener</a>)</td><td class="entry"><a class="el" href="structmonero_1_1wallet2__listener.html">monero::wallet2_listener</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>on_unconfirmed_money_received</b>(uint64_t height, const crypto::hash &amp;txid, const cryptonote::transaction &amp;cn_tx, uint64_t amount, const cryptonote::subaddress_index &amp;subaddr_index) (defined in <a class="el" href="structmonero_1_1wallet2__listener.html">monero::wallet2_listener</a>)</td><td class="entry"><a class="el" href="structmonero_1_1wallet2__listener.html">monero::wallet2_listener</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0"><td class="entry"><b>on_unconfirmed_money_received</b>(uint64_t height, const crypto::hash &amp;txid, const cryptonote::transaction &amp;cn_tx, uint64_t amount, const cryptonote::subaddress_index &amp;subaddr_index) override (defined in <a class="el" href="structmonero_1_1wallet2__listener.html">monero::wallet2_listener</a>)</td><td class="entry"><a class="el" href="structmonero_1_1wallet2__listener.html">monero::wallet2_listener</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>update_listening</b>() (defined in <a class="el" href="structmonero_1_1wallet2__listener.html">monero::wallet2_listener</a>)</td><td class="entry"><a class="el" href="structmonero_1_1wallet2__listener.html">monero::wallet2_listener</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr><td class="entry"><a class="el" href="structmonero_1_1wallet2__listener.html#a1d6ed61247228a3ff7f676e3f58f6c89">wallet2_listener</a>(monero_wallet_core &amp;wallet, tools::wallet2 &amp;m_w2)</td><td class="entry"><a class="el" href="structmonero_1_1wallet2__listener.html">monero::wallet2_listener</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~wallet2_listener</b>() (defined in <a class="el" href="structmonero_1_1wallet2__listener.html">monero::wallet2_listener</a>)</td><td class="entry"><a class="el" href="structmonero_1_1wallet2__listener.html">monero::wallet2_listener</a></td><td class="entry"><span class="mlabel">inline</span></td></tr>
+12 -12
View File
@@ -92,18 +92,18 @@ void&#160;</td><td class="memItemRight" valign="bottom"><b>on_sync_start</b> (ui
<tr class="memitem:aad9ba433b530ad165ad8d5f7e3569883"><td class="memItemLeft" align="right" valign="top"><a id="aad9ba433b530ad165ad8d5f7e3569883"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>on_sync_end</b> ()</td></tr>
<tr class="separator:aad9ba433b530ad165ad8d5f7e3569883"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b8d563e2f1695df2f799a671c69a95a"><td class="memItemLeft" align="right" valign="top"><a id="a2b8d563e2f1695df2f799a671c69a95a"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>on_new_block</b> (uint64_t height, const cryptonote::block &amp;cn_block)</td></tr>
<tr class="separator:a2b8d563e2f1695df2f799a671c69a95a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a710359e5882a806b1b6642340e68d614"><td class="memItemLeft" align="right" valign="top"><a id="a710359e5882a806b1b6642340e68d614"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>on_unconfirmed_money_received</b> (uint64_t height, const crypto::hash &amp;txid, const cryptonote::transaction &amp;cn_tx, uint64_t amount, const cryptonote::subaddress_index &amp;subaddr_index)</td></tr>
<tr class="separator:a710359e5882a806b1b6642340e68d614"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a956e4b003e0872bf4ffeaa7800d520f3"><td class="memItemLeft" align="right" valign="top"><a id="a956e4b003e0872bf4ffeaa7800d520f3"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>on_money_received</b> (uint64_t height, const crypto::hash &amp;txid, const cryptonote::transaction &amp;cn_tx, uint64_t amount, const cryptonote::subaddress_index &amp;subaddr_index, uint64_t unlock_time)</td></tr>
<tr class="separator:a956e4b003e0872bf4ffeaa7800d520f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ead16a5f407ea9bd60802a3c423e858"><td class="memItemLeft" align="right" valign="top"><a id="a3ead16a5f407ea9bd60802a3c423e858"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>on_money_spent</b> (uint64_t height, const crypto::hash &amp;txid, const cryptonote::transaction &amp;cn_tx_in, uint64_t amount, const cryptonote::transaction &amp;cn_tx_out, const cryptonote::subaddress_index &amp;subaddr_index)</td></tr>
<tr class="separator:a3ead16a5f407ea9bd60802a3c423e858"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8a488e675685c55fa91b8408225ae741"><td class="memItemLeft" align="right" valign="top"><a id="a8a488e675685c55fa91b8408225ae741"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>on_new_block</b> (uint64_t height, const cryptonote::block &amp;cn_block) override</td></tr>
<tr class="separator:a8a488e675685c55fa91b8408225ae741"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa32a65c7d452ca0e740dbaa8262ac06"><td class="memItemLeft" align="right" valign="top"><a id="afa32a65c7d452ca0e740dbaa8262ac06"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>on_unconfirmed_money_received</b> (uint64_t height, const crypto::hash &amp;txid, const cryptonote::transaction &amp;cn_tx, uint64_t amount, const cryptonote::subaddress_index &amp;subaddr_index) override</td></tr>
<tr class="separator:afa32a65c7d452ca0e740dbaa8262ac06"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a29448e44406249c38d53b9ae182ae81a"><td class="memItemLeft" align="right" valign="top"><a id="a29448e44406249c38d53b9ae182ae81a"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>on_money_received</b> (uint64_t height, const crypto::hash &amp;txid, const cryptonote::transaction &amp;cn_tx, uint64_t amount, const cryptonote::subaddress_index &amp;subaddr_index, bool is_change, uint64_t unlock_time) override</td></tr>
<tr class="separator:a29448e44406249c38d53b9ae182ae81a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adb44155c73587a7dd6c6c04fee44bae3"><td class="memItemLeft" align="right" valign="top"><a id="adb44155c73587a7dd6c6c04fee44bae3"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>on_money_spent</b> (uint64_t height, const crypto::hash &amp;txid, const cryptonote::transaction &amp;cn_tx_in, uint64_t amount, const cryptonote::transaction &amp;cn_tx_out, const cryptonote::subaddress_index &amp;subaddr_index) override</td></tr>
<tr class="separator:adb44155c73587a7dd6c6c04fee44bae3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Listens to wallet2 notifications in order to notify external wallet listeners. </p>
+2 -2
View File
@@ -319,8 +319,8 @@ namespace monero {
else if (key == std::string("prunedHex")) tx->m_pruned_hex = it->second.data();
else if (key == std::string("prunableHex")) tx->m_prunable_hex = it->second.data();
else if (key == std::string("prunableHash")) tx->m_prunable_hash = it->second.data();
else if (key == std::string("size")) throw std::runtime_error("size deserialization not implemented");
else if (key == std::string("weight")) throw std::runtime_error("weight deserialization not implemented");
else if (key == std::string("size")) tx->m_size = it->second.get_value<uint64_t>();
else if (key == std::string("weight")) tx->m_weight = it->second.get_value<uint64_t>();
else if (key == std::string("inputs")) throw std::runtime_error("inputs deserializationn not implemented");
else if (key == std::string("outputs")) throw std::runtime_error("outputs deserializationn not implemented");
else if (key == std::string("outputIndices")) throw std::runtime_error("m_output_indices deserialization not implemented");
+32 -35
View File
@@ -234,11 +234,6 @@ namespace monero {
outgoing_transfer->m_amount = amount;
}
// compute m_num_suggested_confirmations TODO monero core: this logic is based on wallet_rpc_server.cpp:87 but it should be encapsulated in wallet2
uint64_t block_reward = m_w2.get_last_block_reward();
if (block_reward == 0) outgoing_transfer->m_num_suggested_confirmations = 0;
else outgoing_transfer->m_num_suggested_confirmations = (*outgoing_transfer->m_amount + block_reward - 1) / block_reward;
// return pointer to new tx
return tx;
}
@@ -339,11 +334,6 @@ namespace monero {
outgoing_transfer->m_amount = amount;
}
// compute num_suggested_confirmations TODO monero core: this logic is based on wallet_rpc_server.cpp:87 but it should be encapsulated in wallet2
uint64_t block_reward = m_w2.get_last_block_reward();
if (block_reward == 0) outgoing_transfer->m_num_suggested_confirmations = 0;
else outgoing_transfer->m_num_suggested_confirmations = (*outgoing_transfer->m_amount + block_reward - 1) / block_reward;
// return pointer to new tx
return tx;
}
@@ -622,7 +612,7 @@ namespace monero {
//------------------------------------------------------------------------------------------------------------------------------
template<typename Ts, typename Tu>
bool fill_response(wallet2* m_w2, std::vector<tools::wallet2::pending_tx> &ptx_vector,
bool get_tx_key, Ts& tx_key, Tu &amount, Tu &fee, std::string &multisig_txset, std::string &unsigned_txset, bool do_not_relay,
bool get_tx_key, Ts& tx_key, Tu &amount, Tu &fee, Tu &weight, std::string &multisig_txset, std::string &unsigned_txset, bool do_not_relay,
Ts &tx_hash, bool get_tx_hex, Ts &tx_blob, bool get_tx_metadata, Ts &tx_metadata, epee::json_rpc::error &er)
{
for (const auto & ptx : ptx_vector)
@@ -637,6 +627,7 @@ namespace monero {
// Compute amount leaving wallet in tx. By convention dests does not include change outputs
fill(amount, total_amount(ptx));
fill(fee, ptx.fee);
fill(weight, cryptonote::get_transaction_weight(ptx.tx));
}
if (m_w2->multisig())
@@ -720,7 +711,7 @@ namespace monero {
m_sync_end_height = boost::none;
}
void on_new_block(uint64_t height, const cryptonote::block& cn_block) {
void on_new_block(uint64_t height, const cryptonote::block& cn_block) override {
if (m_wallet.get_listeners().empty()) return;
// ignore notifications before sync start height, irrelevant to clients
@@ -740,7 +731,7 @@ namespace monero {
}
}
void on_unconfirmed_money_received(uint64_t height, const crypto::hash &txid, const cryptonote::transaction& cn_tx, uint64_t amount, const cryptonote::subaddress_index& subaddr_index) {
void on_unconfirmed_money_received(uint64_t height, const crypto::hash &txid, const cryptonote::transaction& cn_tx, uint64_t amount, const cryptonote::subaddress_index& subaddr_index) override {
if (m_wallet.get_listeners().empty()) return;
// create library tx
@@ -763,7 +754,7 @@ namespace monero {
tx.reset();
}
void on_money_received(uint64_t height, const crypto::hash &txid, const cryptonote::transaction& cn_tx, uint64_t amount, const cryptonote::subaddress_index& subaddr_index, uint64_t unlock_time) {
void on_money_received(uint64_t height, const crypto::hash &txid, const cryptonote::transaction& cn_tx, uint64_t amount, const cryptonote::subaddress_index& subaddr_index, bool is_change, uint64_t unlock_time) override {
if (m_wallet.get_listeners().empty()) return;
// create native library tx
@@ -792,7 +783,7 @@ namespace monero {
tx.reset();
}
void on_money_spent(uint64_t height, const crypto::hash &txid, const cryptonote::transaction& cn_tx_in, uint64_t amount, const cryptonote::transaction& cn_tx_out, const cryptonote::subaddress_index& subaddr_index) {
void on_money_spent(uint64_t height, const crypto::hash &txid, const cryptonote::transaction& cn_tx_in, uint64_t amount, const cryptonote::transaction& cn_tx_out, const cryptonote::subaddress_index& subaddr_index) override {
if (m_wallet.get_listeners().empty()) return;
if (&cn_tx_in != &cn_tx_out) throw std::runtime_error("on_money_spent() in tx is different than out tx");
@@ -819,23 +810,11 @@ namespace monero {
monero_utils::free(block);
output.reset();
tx.reset();
// TODO **: to notify or not to notify?
// std::string tx_hash = epee::string_tools::pod_to_hex(txid);
// LOG_PRINT_L3(__FUNCTION__ << ": money spent. height: " << height
// << ", tx: " << tx_hash
// << ", amount: " << print_money(amount)
// << ", idx: " << subaddr_index);
// // do not signal on sent tx if wallet is not syncronized completely
// if (m_listener && m_wallet->synchronized()) {
// m_listener->moneySpent(tx_hash, amount);
// m_listener->updated();
// }
}
private:
monero_wallet_core& m_wallet; // wallet to provide context for notifications
tools::wallet2& m_w2; // internal wallet implementation to listen to
monero_wallet_core& m_wallet; // wallet to provide context for notifications
tools::wallet2& m_w2; // internal wallet implementation to listen to
boost::optional<uint64_t> m_sync_start_height;
boost::optional<uint64_t> m_sync_end_height;
};
@@ -1664,12 +1643,13 @@ namespace monero {
std::list<std::string> tx_keys;
std::list<uint64_t> tx_amounts;
std::list<uint64_t> tx_fees;
std::list<uint64_t> tx_weights;
std::string multisig_tx_hex;
std::string unsigned_tx_hex;
std::list<std::string> tx_hashes;
std::list<std::string> tx_blobs;
std::list<std::string> tx_metadatas;
if (!fill_response(m_w2.get(), ptx_vector, get_tx_keys, tx_keys, tx_amounts, tx_fees, multisig_tx_hex, unsigned_tx_hex, !relay, tx_hashes, get_tx_hex, tx_blobs, get_tx_metadata, tx_metadatas, err)) {
if (!fill_response(m_w2.get(), ptx_vector, get_tx_keys, tx_keys, tx_amounts, tx_fees, tx_weights, multisig_tx_hex, unsigned_tx_hex, !relay, tx_hashes, get_tx_hex, tx_blobs, get_tx_metadata, tx_metadatas, err)) {
throw std::runtime_error("need to handle error filling response!"); // TODO
}
@@ -1679,6 +1659,7 @@ namespace monero {
auto tx_keys_iter = tx_keys.begin();
auto tx_amounts_iter = tx_amounts.begin();
auto tx_fees_iter = tx_fees.begin();
auto tx_weights_iter = tx_weights.begin();
auto tx_blobs_iter = tx_blobs.begin();
auto tx_metadatas_iter = tx_metadatas.begin();
while (tx_fees_iter != tx_fees.end()) {
@@ -1689,6 +1670,7 @@ namespace monero {
tx->m_hash = *tx_hashes_iter;
tx->m_key = *tx_keys_iter;
tx->m_fee = *tx_fees_iter;
tx->m_weight = *tx_weights_iter;
tx->m_full_hex = *tx_blobs_iter;
tx->m_metadata = *tx_metadatas_iter;
std::shared_ptr<monero_outgoing_transfer> out_transfer = std::make_shared<monero_outgoing_transfer>();
@@ -1846,12 +1828,13 @@ namespace monero {
std::list<std::string> tx_keys;
std::list<uint64_t> tx_amounts;
std::list<uint64_t> tx_fees;
std::list<uint64_t> tx_weights;
std::string multisig_tx_hex;
std::string unsigned_tx_hex;
std::list<std::string> tx_hashes;
std::list<std::string> tx_blobs;
std::list<std::string> tx_metadatas;
if (!fill_response(m_w2.get(), ptx_vector, get_tx_keys, tx_keys, tx_amounts, tx_fees, multisig_tx_hex, unsigned_tx_hex, !relay, tx_hashes, get_tx_hex, tx_blobs, get_tx_metadata, tx_metadatas, err)) {
if (!fill_response(m_w2.get(), ptx_vector, get_tx_keys, tx_keys, tx_amounts, tx_fees, tx_weights, multisig_tx_hex, unsigned_tx_hex, !relay, tx_hashes, get_tx_hex, tx_blobs, get_tx_metadata, tx_metadatas, err)) {
throw std::runtime_error("need to handle error filling response!"); // TODO
}
@@ -1861,6 +1844,7 @@ namespace monero {
auto tx_keys_iter = tx_keys.begin();
auto tx_amounts_iter = tx_amounts.begin();
auto tx_fees_iter = tx_fees.begin();
auto tx_weights_iter = tx_weights.begin();
auto tx_blobs_iter = tx_blobs.begin();
auto tx_metadatas_iter = tx_metadatas.begin();
while (tx_fees_iter != tx_fees.end()) {
@@ -1873,6 +1857,7 @@ namespace monero {
tx->m_is_outgoing = true;
tx->m_key = *tx_keys_iter;
tx->m_fee = *tx_fees_iter;
tx->m_weight = *tx_weights_iter;
tx->m_full_hex = *tx_blobs_iter;
tx->m_metadata = *tx_metadatas_iter;
std::shared_ptr<monero_outgoing_transfer> out_transfer = std::make_shared<monero_outgoing_transfer>();
@@ -1966,12 +1951,13 @@ namespace monero {
std::list<std::string> tx_keys;
std::list<uint64_t> tx_amounts;
std::list<uint64_t> tx_fees;
std::list<uint64_t> tx_weights;
std::string multisig_tx_hex;
std::string unsigned_tx_hex;
std::list<std::string> tx_hashes;
std::list<std::string> tx_blobs;
std::list<std::string> tx_metadatas;
if (!fill_response(m_w2.get(), ptx_vector, get_tx_keys, tx_keys, tx_amounts, tx_fees, multisig_tx_hex, unsigned_tx_hex, !relay, tx_hashes, get_tx_hex, tx_blobs, get_tx_metadata, tx_metadatas, err)) {
if (!fill_response(m_w2.get(), ptx_vector, get_tx_keys, tx_keys, tx_amounts, tx_fees, tx_weights, multisig_tx_hex, unsigned_tx_hex, !relay, tx_hashes, get_tx_hex, tx_blobs, get_tx_metadata, tx_metadatas, err)) {
throw std::runtime_error("need to handle error filling response!"); // TODO: return err message
}
@@ -1981,6 +1967,7 @@ namespace monero {
auto tx_keys_iter = tx_keys.begin();
auto tx_amounts_iter = tx_amounts.begin();
auto tx_fees_iter = tx_fees.begin();
auto tx_weights_iter = tx_weights.begin();
auto tx_blobs_iter = tx_blobs.begin();
auto tx_metadatas_iter = tx_metadatas.begin();
while (tx_fees_iter != tx_fees.end()) {
@@ -1992,6 +1979,7 @@ namespace monero {
tx->m_is_outgoing = true;
tx->m_key = *tx_keys_iter;
tx->m_fee = *tx_fees_iter;
tx->m_weight = *tx_weights_iter;
tx->m_full_hex = *tx_blobs_iter;
tx->m_metadata = *tx_metadatas_iter;
std::shared_ptr<monero_outgoing_transfer> out_transfer = std::make_shared<monero_outgoing_transfer>();
@@ -2053,13 +2041,14 @@ namespace monero {
std::list<std::string> tx_keys;
std::list<uint64_t> tx_amounts;
std::list<uint64_t> tx_fees;
std::list<uint64_t> tx_weights;
std::string multisig_tx_hex;
std::string unsigned_tx_hex;
std::list<std::string> tx_hashes;
std::list<std::string> tx_blobs;
std::list<std::string> tx_metadatas;
epee::json_rpc::error er;
if (!fill_response(m_w2.get(), ptx_vector, get_tx_keys, tx_keys, tx_amounts, tx_fees, multisig_tx_hex, unsigned_tx_hex, !relay, tx_hashes, get_tx_hex, tx_blobs, get_tx_metadata, tx_metadatas, er)) {
if (!fill_response(m_w2.get(), ptx_vector, get_tx_keys, tx_keys, tx_amounts, tx_fees, tx_weights, multisig_tx_hex, unsigned_tx_hex, !relay, tx_hashes, get_tx_hex, tx_blobs, get_tx_metadata, tx_metadatas, er)) {
throw std::runtime_error("need to handle error filling response!"); // TODO: return err message
}
@@ -2069,6 +2058,7 @@ namespace monero {
auto tx_keys_iter = tx_keys.begin();
auto tx_amounts_iter = tx_amounts.begin();
auto tx_fees_iter = tx_fees.begin();
auto tx_weights_iter = tx_weights.begin();
auto tx_blobs_iter = tx_blobs.begin();
auto tx_metadatas_iter = tx_metadatas.begin();
while (tx_fees_iter != tx_fees.end()) {
@@ -2080,6 +2070,7 @@ namespace monero {
tx->m_is_outgoing = true;
tx->m_key = *tx_keys_iter;
tx->m_fee = *tx_fees_iter;
tx->m_weight = *tx_weights_iter;
tx->m_full_hex = *tx_blobs_iter;
tx->m_metadata = *tx_metadatas_iter;
std::shared_ptr<monero_outgoing_transfer> out_transfer = std::make_shared<monero_outgoing_transfer>();
@@ -2622,14 +2613,20 @@ namespace monero {
if (indices.empty()) {
uint64_t idx = 0;
for (const auto &w2_entry: w2_entries) {
monero_address_book_entry entry(idx++, cryptonote::get_account_address_as_str(m_w2->nettype(), w2_entry.m_is_subaddress, w2_entry.m_address), w2_entry.m_description, epee::string_tools::pod_to_hex(w2_entry.m_payment_id));
std::string address;
if (w2_entry.m_has_payment_id) address = cryptonote::get_account_integrated_address_as_str(m_w2->nettype(), w2_entry.m_address, w2_entry.m_payment_id);
else address = get_account_address_as_str(m_w2->nettype(), w2_entry.m_is_subaddress, w2_entry.m_address);
monero_address_book_entry entry(idx++, address, w2_entry.m_description);
entries.push_back(entry);
}
} else {
for (uint64_t idx : indices) {
if (idx >= w2_entries.size()) throw std::runtime_error("Index out of range: " + std::to_string(idx));
const auto &w2_entry = w2_entries[idx];
monero_address_book_entry entry(idx++, cryptonote::get_account_address_as_str(m_w2->nettype(), w2_entry.m_is_subaddress, w2_entry.m_address), w2_entry.m_description, epee::string_tools::pod_to_hex(w2_entry.m_payment_id));
std::string address;
if (w2_entry.m_has_payment_id) address = cryptonote::get_account_integrated_address_as_str(m_w2->nettype(), w2_entry.m_address, w2_entry.m_payment_id);
else address = get_account_address_as_str(m_w2->nettype(), w2_entry.m_is_subaddress, w2_entry.m_address);
monero_address_book_entry entry(idx++, address, w2_entry.m_description);
entries.push_back(entry);
}
}
+4 -7
View File
@@ -621,7 +621,6 @@ namespace monero {
rapidjson::Value value_num(rapidjson::kNumberType);
if (m_amount != boost::none) monero_utils::addJsonMember("amount", m_amount.get(), allocator, root, value_num);
if (m_account_index != boost::none) monero_utils::addJsonMember("accountIndex", m_account_index.get(), allocator, root, value_num);
if (m_num_suggested_confirmations != boost::none) monero_utils::addJsonMember("numSuggestedConfirmations", m_num_suggested_confirmations.get(), allocator, root, value_num);
// return root
return root;
@@ -641,7 +640,6 @@ namespace monero {
tgt->m_tx = src->m_tx; // reference parent tx by default
tgt->m_amount = src->m_amount;
tgt->m_account_index = src->m_account_index;
tgt->m_num_suggested_confirmations = src->m_num_suggested_confirmations;
return tgt;
}
@@ -658,14 +656,11 @@ namespace monero {
// otherwise merge transfer fields
m_account_index = gen_utils::reconcile(m_account_index, other->m_account_index, "acountIndex");
// TODO monero core: failed m_tx in pool (after testUpdateLockedDifferentAccounts()) causes non-originating saved wallets to return duplicate incoming transfers but one has amount/m_num_suggested_confirmations of 0
// TODO monero core: failed m_tx in pool (after testUpdateLockedDifferentAccounts()) causes non-originating saved wallets to return duplicate incoming transfers but one has amount of 0
if (m_amount != boost::none && other->m_amount != boost::none && *m_amount != *other->m_amount && (*m_amount == 0 || *other->m_amount == 0)) {
m_account_index = gen_utils::reconcile(m_account_index, other->m_account_index, boost::none, boost::none, true, "acountIndex");
m_num_suggested_confirmations = gen_utils::reconcile(m_num_suggested_confirmations, other->m_num_suggested_confirmations, boost::none, boost::none, true, "m_num_suggested_confirmations");
MWARNING("WARNING: failed tx in pool causes non-originating wallets to return duplicate incoming transfers but with one amount/m_num_suggested_confirmations of 0");
throw std::runtime_error("failed tx in pool causes non-originating wallets to return duplicate incoming transfers but with one amount/m_num_suggested_confirmations of 0");
} else {
m_amount = gen_utils::reconcile(m_amount, other->m_amount, "transfer amount");
m_num_suggested_confirmations = gen_utils::reconcile(m_num_suggested_confirmations, other->m_num_suggested_confirmations, boost::none, boost::none, false, "m_num_suggested_confirmations");
}
}
@@ -679,6 +674,7 @@ namespace monero {
// set num values
rapidjson::Value value_num(rapidjson::kNumberType);
if (m_subaddress_index != boost::none) monero_utils::addJsonMember("subaddressIndex", m_subaddress_index.get(), allocator, root, value_num);
if (m_num_suggested_confirmations != boost::none) monero_utils::addJsonMember("numSuggestedConfirmations", m_num_suggested_confirmations.get(), allocator, root, value_num);
// set std::string values
rapidjson::Value value_str(rapidjson::kStringType);
@@ -708,6 +704,7 @@ namespace monero {
monero_transfer::merge(self, other);
m_subaddress_index = gen_utils::reconcile(m_subaddress_index, other->m_subaddress_index, "incoming transfer m_subaddress_index");
m_address = gen_utils::reconcile(m_address, other->m_address);
m_num_suggested_confirmations = gen_utils::reconcile(m_num_suggested_confirmations, other->m_num_suggested_confirmations, boost::none, boost::none, false, "m_num_suggested_confirmations");
}
// ----------------------- MONERO OUTGOING TRANSFER -------------------------
+2 -1
View File
@@ -131,7 +131,6 @@ namespace monero {
std::shared_ptr<monero_tx_wallet> m_tx;
boost::optional<uint64_t> m_amount;
boost::optional<uint32_t> m_account_index;
boost::optional<uint64_t> m_num_suggested_confirmations;
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const;
static void from_property_tree(const boost::property_tree::ptree& node, const std::shared_ptr<monero_transfer>& transfer);
@@ -150,6 +149,7 @@ namespace monero {
struct monero_incoming_transfer : public monero_transfer {
boost::optional<uint32_t> m_subaddress_index;
boost::optional<std::string> m_address;
boost::optional<uint64_t> m_num_suggested_confirmations;
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const;
std::shared_ptr<monero_incoming_transfer> copy(const std::shared_ptr<monero_transfer>& src, const std::shared_ptr<monero_transfer>& tgt) const;
@@ -452,6 +452,7 @@ namespace monero {
boost::optional<std::string> m_payment_id;
monero_address_book_entry() {}
monero_address_book_entry(uint64_t index, const std::string& address, const std::string& description) : m_index(index), m_address(address), m_description(description) {}
monero_address_book_entry(uint64_t index, const std::string& address, const std::string& description, const std::string& payment_id) : m_index(index), m_address(address), m_description(description), m_payment_id(payment_id) {}
rapidjson::Value to_rapidjson_val(rapidjson::Document::AllocatorType& allocator) const;
};