From af08c83e2569a4ad81184373dfb87ddbbf106f45 Mon Sep 17 00:00:00 2001 From: selsta Date: Sat, 7 May 2022 21:49:02 +0200 Subject: [PATCH 01/35] utils: delete outdated windows build script --- utils/build_scripts/windows.bat | 45 --------------------------------- 1 file changed, 45 deletions(-) delete mode 100644 utils/build_scripts/windows.bat diff --git a/utils/build_scripts/windows.bat b/utils/build_scripts/windows.bat deleted file mode 100644 index 77ffd1c96f1..00000000000 --- a/utils/build_scripts/windows.bat +++ /dev/null @@ -1,45 +0,0 @@ -:: Copyright (c) 2014-2022, The Monero Project -:: -:: All rights reserved. -:: -:: Redistribution and use in source and binary forms, with or without modification, are -:: permitted provided that the following conditions are met: -:: -:: 1. Redistributions of source code must retain the above copyright notice, this list of -:: conditions and the following disclaimer. -:: -:: 2. Redistributions in binary form must reproduce the above copyright notice, this list -:: of conditions and the following disclaimer in the documentation and/or other -:: materials provided with the distribution. -:: -:: 3. Neither the name of the copyright holder nor the names of its contributors may be -:: used to endorse or promote products derived from this software without specific -:: prior written permission. -:: -:: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY -:: EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -:: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL -:: THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -:: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -:: PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -:: INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -:: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF -:: THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -:: Set the following variables according to your environment -set BuildProcessorArchitecture=64 -set LocationDependencyBoostRoot=D:\Development\boost_1_55_0 -set LocationEnvironmentVariableSetterMsbuild=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat - -call "%LocationEnvironmentVariableSetterMsbuild%" -set LocationDependencyBoostLibrary=%LocationDependencyBoostRoot%\lib%BuildProcessorArchitecture%-msvc-%VisualStudioVersion% - -cd ..\.. -set LocationBuildSource=%CD% -mkdir build\win%BuildProcessorArchitecture% -cd build\win%BuildProcessorArchitecture% - -cmake -G "Visual Studio %VisualStudioVersion:.0=% Win%BuildProcessorArchitecture%" -DBOOST_ROOT="%LocationDependencyBoostRoot%" -DBOOST_LIBRARYDIR="%LocationDependencyBoostLibrary%" "%LocationBuildSource%" -msbuild Project.sln /p:Configuration=Release - -pause From bae4a1ad8f35af12fa1c4a45302c19c14c99c0b4 Mon Sep 17 00:00:00 2001 From: j-berman Date: Wed, 11 May 2022 18:41:24 -0700 Subject: [PATCH 02/35] Don't send peerlist larger than max allowed --- src/p2p/net_node.inl | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/p2p/net_node.inl b/src/p2p/net_node.inl index a3bc3bf24de..cabd82de84d 100644 --- a/src/p2p/net_node.inl +++ b/src/p2p/net_node.inl @@ -2462,8 +2462,12 @@ namespace nodetool const epee::net_utils::zone zone_type = context.m_remote_address.get_zone(); network_zone& zone = m_network_zones.at(zone_type); + //will add self to peerlist if in same zone as outgoing later in this function + const bool outgoing_to_same_zone = !context.m_is_income && zone.m_our_address.get_zone() == zone_type; + const uint32_t max_peerlist_size = P2P_DEFAULT_PEERS_IN_HANDSHAKE - (outgoing_to_same_zone ? 1 : 0); + std::vector local_peerlist_new; - zone.m_peerlist.get_peerlist_head(local_peerlist_new, true, P2P_DEFAULT_PEERS_IN_HANDSHAKE); + zone.m_peerlist.get_peerlist_head(local_peerlist_new, true, max_peerlist_size); //only include out peers we did not already send rsp.local_peerlist_new.reserve(local_peerlist_new.size()); @@ -2483,7 +2487,7 @@ namespace nodetool etc., because someone could give faulty addresses over Tor/I2P to get the real peer with that identity banned/blacklisted. */ - if(!context.m_is_income && zone.m_our_address.get_zone() == zone_type) + if(outgoing_to_same_zone) rsp.local_peerlist_new.push_back(peerlist_entry{zone.m_our_address, zone.m_config.m_peer_id, std::time(nullptr)}); LOG_DEBUG_CC(context, "COMMAND_TIMED_SYNC"); From b9d2c788bc51364ccd8728345aeef64f5cbd3a15 Mon Sep 17 00:00:00 2001 From: j-berman Date: Thu, 12 May 2022 08:39:51 -0700 Subject: [PATCH 03/35] fix backoff delay logic when re-relaying txs --- src/cryptonote_core/tx_pool.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/cryptonote_core/tx_pool.cpp b/src/cryptonote_core/tx_pool.cpp index c27261860e3..a68da0e62ca 100644 --- a/src/cryptonote_core/tx_pool.cpp +++ b/src/cryptonote_core/tx_pool.cpp @@ -97,9 +97,9 @@ namespace cryptonote constexpr const std::chrono::seconds forward_delay_average{CRYPTONOTE_FORWARD_DELAY_AVERAGE}; // a kind of increasing backoff within min/max bounds - uint64_t get_relay_delay(time_t now, time_t received) + uint64_t get_relay_delay(time_t last_relay, time_t received) { - time_t d = (now - received + MIN_RELAY_TIME) / MIN_RELAY_TIME * MIN_RELAY_TIME; + time_t d = (last_relay - received + MIN_RELAY_TIME) / MIN_RELAY_TIME * MIN_RELAY_TIME; if (d > MAX_RELAY_TIME) d = MAX_RELAY_TIME; return d; @@ -779,7 +779,7 @@ namespace cryptonote case relay_method::local: case relay_method::fluff: case relay_method::block: - if (now - meta.last_relayed_time <= get_relay_delay(now, meta.receive_time)) + if (now - meta.last_relayed_time <= get_relay_delay(meta.last_relayed_time, meta.receive_time)) return true; // continue to next tx break; } @@ -812,7 +812,7 @@ namespace cryptonote function is only called every ~2 minutes, so this resetting should be unnecessary, but is primarily a precaution against potential changes to the callback routines. */ - elem.second.last_relayed_time = now + get_relay_delay(now, elem.second.receive_time); + elem.second.last_relayed_time = now + get_relay_delay(elem.second.last_relayed_time, elem.second.receive_time); m_blockchain.update_txpool_tx(elem.first, elem.second); } From 62914e7e3d75884473bfd84f93afd4ffa034916b Mon Sep 17 00:00:00 2001 From: Jeffrey Ryan Date: Thu, 12 May 2022 10:38:29 -0500 Subject: [PATCH 04/35] Ignore gitian build files --- .gitignore | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.gitignore b/.gitignore index a39168ac563..9f62575e5ab 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,12 @@ external/miniupnpc/Makefile miniupnpcstrings.h version/ ClangBuildAnalyzerSession.txt + +# gitian +contrib/gitian/builder/ +contrib/gitian/docker/ +contrib/gitian/sigs/ + # Created by https://www.gitignore.io ### C++ ### From fde7c96b5cd44962fe08cdb8d23115ed51b30915 Mon Sep 17 00:00:00 2001 From: moneromooo-monero Date: Sun, 15 May 2022 11:50:28 +0000 Subject: [PATCH 05/35] wallet2: fix spurious reorg detection with untrusted nodes When forced to deal with an untrusted node, a wallet will quantize its current height to disguise the real height to the adversary, to try and minimize the daemon's ability to distinguish returning wallets. Daemons will thus return more blocks than the wallet needs, starting from earlier in the chain. These extra blocks will be disregarded by the wallet, which had already scanned them. However, for the purposes of reorg size detection, the wallet assumes all blocks the daemon sends are different, which is only correct if the wallet hasn't been coy, which is only the case for trusted daemons (which you should use). This causes an issue when the size of this "fake reorg" is above the sanity check threshold at which the wallet refuses a reorg. To fix this, the reorg size check is moved later on, when the reorg is about to actually happen, after the wallet has checked which blocks are actually different from the ones it expects. --- src/wallet/wallet2.cpp | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index f4a5a585539..6885db953bf 100644 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -2882,6 +2882,11 @@ void wallet2::process_parsed_blocks(uint64_t start_height, const std::vector m_max_reorg_depth, error::reorg_depth_error, + tr("reorg exceeds maximum allowed depth, use 'set max-reorg-depth N' to allow it, reorg depth: ") + + std::to_string(reorg_depth)); + detach_blockchain(current_index, output_tracker_cache); process_new_blockchain_entry(bl, blocks[i], parsed_blocks[i], bl_id, current_index, tx_cache_data, tx_cache_data_offset, output_tracker_cache); } @@ -3532,15 +3537,6 @@ void wallet2::refresh(bool trusted_daemon, uint64_t start_height, uint64_t & blo first = false; - if (!next_blocks.empty()) - { - const uint64_t expected_start_height = std::max(static_cast(m_blockchain.size()), uint64_t(1)) - 1; - const uint64_t reorg_depth = expected_start_height - std::min(expected_start_height, next_blocks_start_height); - THROW_WALLET_EXCEPTION_IF(reorg_depth > m_max_reorg_depth, error::reorg_depth_error, - tr("reorg exceeds maximum allowed depth, use 'set max-reorg-depth N' to allow it, reorg depth: ") + - std::to_string(reorg_depth)); - } - // if we've got at least 10 blocks to refresh, assume we're starting // a long refresh, and setup a tracking output cache if we need to if (m_track_uses && (!output_tracker_cache || output_tracker_cache->empty()) && next_blocks.size() >= 10) From 1164874afc29212155de615531266c91cfdb7e4e Mon Sep 17 00:00:00 2001 From: selsta Date: Tue, 17 May 2022 00:33:10 +0200 Subject: [PATCH 06/35] src, epee: fix a couple compiler warnings --- contrib/epee/include/storages/portable_storage_from_json.h | 1 - src/cryptonote_basic/account.h | 2 -- src/simplewallet/simplewallet.cpp | 2 -- 3 files changed, 5 deletions(-) diff --git a/contrib/epee/include/storages/portable_storage_from_json.h b/contrib/epee/include/storages/portable_storage_from_json.h index 3021598f5f9..69192ca6bd7 100644 --- a/contrib/epee/include/storages/portable_storage_from_json.h +++ b/contrib/epee/include/storages/portable_storage_from_json.h @@ -51,7 +51,6 @@ namespace epee { CHECK_AND_ASSERT_THROW_MES(recursion < EPEE_JSON_RECURSION_LIMIT_INTERNAL, "Wrong JSON data: recursion limitation (" << EPEE_JSON_RECURSION_LIMIT_INTERNAL << ") exceeded"); - std::string::const_iterator sub_element_start; std::string name; typename t_storage::harray h_array = nullptr; enum match_state diff --git a/src/cryptonote_basic/account.h b/src/cryptonote_basic/account.h index 6e887db6d5e..2ee9545d4c1 100644 --- a/src/cryptonote_basic/account.h +++ b/src/cryptonote_basic/account.h @@ -55,8 +55,6 @@ namespace cryptonote KV_SERIALIZE_VAL_POD_AS_BLOB_OPT(m_encryption_iv, default_iv) END_KV_SERIALIZE_MAP() - account_keys& operator=(account_keys const&) = default; - void encrypt(const crypto::chacha_key &key); void decrypt(const crypto::chacha_key &key); void encrypt_viewkey(const crypto::chacha_key &key); diff --git a/src/simplewallet/simplewallet.cpp b/src/simplewallet/simplewallet.cpp index d3e40ab747a..a013036f108 100644 --- a/src/simplewallet/simplewallet.cpp +++ b/src/simplewallet/simplewallet.cpp @@ -6560,7 +6560,6 @@ bool simple_wallet::transfer_main(int transfer_type, const std::vector dsts_info; vector dsts; - size_t num_subaddresses = 0; for (size_t i = 0; i < local_args.size(); ) { dsts_info.emplace_back(); @@ -6619,7 +6618,6 @@ bool simple_wallet::transfer_main(int transfer_type, const std::vector Date: Mon, 16 May 2022 19:13:02 -0500 Subject: [PATCH 07/35] GCC: Fix -Wstringop-overflow= warnings Resolves #8320 --- external/boost/archive/portable_binary_archive.hpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/external/boost/archive/portable_binary_archive.hpp b/external/boost/archive/portable_binary_archive.hpp index 7ae01a225fa..cdbd38aad5d 100644 --- a/external/boost/archive/portable_binary_archive.hpp +++ b/external/boost/archive/portable_binary_archive.hpp @@ -44,9 +44,12 @@ reverse_bytes(signed char size, char *address){ char * first = address; char * last = first + size - 1; for(;first < last;++first, --last){ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wstringop-overflow=" char x = *last; *last = *first; *first = x; +#pragma GCC diagnostic pop } } From 29794742211b7fbd35b1c7b0b707cb495001b3e8 Mon Sep 17 00:00:00 2001 From: moneromooo-monero Date: Sat, 14 May 2022 19:49:48 +0000 Subject: [PATCH 08/35] disable multisig by default There are vulnerabilities in multisig protocol if the parties do not trust each other, and while there is a patch for it, it has not been throroughly reviewed yet, so it is felt safer to disable multisig by default for now. If all parties in a multisig setup trust each other, then it is safe to enable multisig. --- src/simplewallet/simplewallet.cpp | 55 ++++++++++++++++++++ src/simplewallet/simplewallet.h | 1 + src/wallet/wallet2.cpp | 9 +++- src/wallet/wallet2.h | 3 ++ src/wallet/wallet_rpc_server.cpp | 33 ++++++++++++ src/wallet/wallet_rpc_server_commands_defs.h | 3 ++ src/wallet/wallet_rpc_server_error_codes.h | 1 + tests/functional_tests/multisig.py | 10 ++-- utils/python-rpc/framework/wallet.py | 3 +- 9 files changed, 111 insertions(+), 7 deletions(-) diff --git a/src/simplewallet/simplewallet.cpp b/src/simplewallet/simplewallet.cpp index d3e40ab747a..05d10b7345a 100644 --- a/src/simplewallet/simplewallet.cpp +++ b/src/simplewallet/simplewallet.cpp @@ -142,6 +142,19 @@ typedef cryptonote::simple_wallet sw; #define MIN_PAYMENT_RATE 0.01f // per hash #define MAX_MNEW_ADDRESSES 1000 +#define CHECK_MULTISIG_ENABLED() \ + do \ + { \ + if (!m_wallet->is_multisig_enabled()) \ + { \ + fail_msg_writer() << tr("Multisig is disabled."); \ + fail_msg_writer() << tr("Multisig is an experimental feature and may have bugs. Things that could go wrong include: funds sent to a multisig wallet can't be spent at all, can only be spent with the participation of a malicious group member, or can be stolen by a malicious group member."); \ + fail_msg_writer() << tr("You can enable it with:"); \ + fail_msg_writer() << tr(" set enable-multisig-experimental 1"); \ + return false; \ + } \ + } while(0) + enum TransferType { Transfer, TransferLocked, @@ -986,12 +999,14 @@ bool simple_wallet::print_fee_info(const std::vector &args/* = std: bool simple_wallet::prepare_multisig(const std::vector &args) { + CHECK_MULTISIG_ENABLED(); prepare_multisig_main(args, false); return true; } bool simple_wallet::prepare_multisig_main(const std::vector &args, bool called_by_mms) { + CHECK_MULTISIG_ENABLED(); if (m_wallet->key_on_device()) { fail_msg_writer() << tr("command not supported by HW wallet"); @@ -1031,12 +1046,14 @@ bool simple_wallet::prepare_multisig_main(const std::vector &args, bool simple_wallet::make_multisig(const std::vector &args) { + CHECK_MULTISIG_ENABLED(); make_multisig_main(args, false); return true; } bool simple_wallet::make_multisig_main(const std::vector &args, bool called_by_mms) { + CHECK_MULTISIG_ENABLED(); if (m_wallet->key_on_device()) { fail_msg_writer() << tr("command not supported by HW wallet"); @@ -1121,11 +1138,13 @@ bool simple_wallet::make_multisig_main(const std::vector &args, boo bool simple_wallet::exchange_multisig_keys(const std::vector &args) { + CHECK_MULTISIG_ENABLED(); exchange_multisig_keys_main(args, false); return true; } bool simple_wallet::exchange_multisig_keys_main(const std::vector &args, bool called_by_mms) { + CHECK_MULTISIG_ENABLED(); bool ready; if (m_wallet->key_on_device()) { @@ -1189,12 +1208,14 @@ bool simple_wallet::exchange_multisig_keys_main(const std::vector & bool simple_wallet::export_multisig(const std::vector &args) { + CHECK_MULTISIG_ENABLED(); export_multisig_main(args, false); return true; } bool simple_wallet::export_multisig_main(const std::vector &args, bool called_by_mms) { + CHECK_MULTISIG_ENABLED(); bool ready; if (m_wallet->key_on_device()) { @@ -1254,12 +1275,14 @@ bool simple_wallet::export_multisig_main(const std::vector &args, b bool simple_wallet::import_multisig(const std::vector &args) { + CHECK_MULTISIG_ENABLED(); import_multisig_main(args, false); return true; } bool simple_wallet::import_multisig_main(const std::vector &args, bool called_by_mms) { + CHECK_MULTISIG_ENABLED(); bool ready; uint32_t threshold, total; if (m_wallet->key_on_device()) @@ -1349,12 +1372,14 @@ bool simple_wallet::accept_loaded_tx(const tools::wallet2::multisig_tx_set &txs) bool simple_wallet::sign_multisig(const std::vector &args) { + CHECK_MULTISIG_ENABLED(); sign_multisig_main(args, false); return true; } bool simple_wallet::sign_multisig_main(const std::vector &args, bool called_by_mms) { + CHECK_MULTISIG_ENABLED(); bool ready; if (m_wallet->key_on_device()) { @@ -1464,12 +1489,14 @@ bool simple_wallet::sign_multisig_main(const std::vector &args, boo bool simple_wallet::submit_multisig(const std::vector &args) { + CHECK_MULTISIG_ENABLED(); submit_multisig_main(args, false); return true; } bool simple_wallet::submit_multisig_main(const std::vector &args, bool called_by_mms) { + CHECK_MULTISIG_ENABLED(); bool ready; uint32_t threshold; if (m_wallet->key_on_device()) @@ -1551,6 +1578,7 @@ bool simple_wallet::submit_multisig_main(const std::vector &args, b bool simple_wallet::export_raw_multisig(const std::vector &args) { + CHECK_MULTISIG_ENABLED(); bool ready; uint32_t threshold; if (m_wallet->key_on_device()) @@ -3074,6 +3102,25 @@ bool simple_wallet::set_load_deprecated_formats(const std::vector & return true; } +bool simple_wallet::set_enable_multisig(const std::vector &args/* = std::vector()*/) +{ + if (args.size() < 2) + { + fail_msg_writer() << tr("Value not specified"); + return true; + } + + const auto pwd_container = get_and_verify_password(); + if (pwd_container) + { + parse_bool_and_use(args[1], [&](bool r) { + m_wallet->enable_multisig(r); + m_wallet->rewrite(m_wallet_file, pwd_container->password()); + }); + } + return true; +} + bool simple_wallet::help(const std::vector &args/* = std::vector()*/) { if(args.empty()) @@ -3391,6 +3438,8 @@ simple_wallet::simple_wallet() " The RPC payment credits balance to target (0 for default).\n " "show-wallet-name-when-locked <1|0>\n " " Set this if you would like to display the wallet name when locked.\n " + "enable-multisig-experimental <1|0>\n " + " Set this to allow multisig commands. Multisig may currently be exploitable if parties do not trust each other.\n " "inactivity-lock-timeout \n " " How many seconds to wait before locking the wallet (0 to disable).")); m_cmd_binder.set_handler("encrypted_seed", @@ -3806,6 +3855,7 @@ bool simple_wallet::set_variable(const std::vector &args) success_msg_writer() << "auto-mine-for-rpc-payment-threshold = " << m_wallet->auto_mine_for_rpc_payment_threshold(); success_msg_writer() << "credits-target = " << m_wallet->credits_target(); success_msg_writer() << "load-deprecated-formats = " << m_wallet->load_deprecated_formats(); + success_msg_writer() << "enable-multisig-experimental = " << m_wallet->is_multisig_enabled(); return true; } else @@ -3872,6 +3922,7 @@ bool simple_wallet::set_variable(const std::vector &args) CHECK_SIMPLE_VARIABLE("persistent-rpc-client-id", set_persistent_rpc_client_id, tr("0 or 1")); CHECK_SIMPLE_VARIABLE("auto-mine-for-rpc-payment-threshold", set_auto_mine_for_rpc_payment_threshold, tr("floating point >= 0")); CHECK_SIMPLE_VARIABLE("credits-target", set_credits_target, tr("unsigned integer")); + CHECK_SIMPLE_VARIABLE("enable-multisig-experimental", set_enable_multisig, tr("0 or 1")); } fail_msg_writer() << tr("set: unrecognized argument(s)"); return true; @@ -6980,6 +7031,7 @@ bool simple_wallet::sweep_unmixable(const std::vector &args_) // actually commit the transactions if (m_wallet->multisig()) { + CHECK_MULTISIG_ENABLED(); bool r = m_wallet->save_multisig_tx(ptx_vector, "multisig_monero_tx"); if (!r) { @@ -7284,6 +7336,7 @@ bool simple_wallet::sweep_main(uint32_t account, uint64_t below, bool locked, co // actually commit the transactions if (m_wallet->multisig()) { + CHECK_MULTISIG_ENABLED(); bool r = m_wallet->save_multisig_tx(ptx_vector, "multisig_monero_tx"); if (!r) { @@ -7518,6 +7571,7 @@ bool simple_wallet::sweep_single(const std::vector &args_) // actually commit the transactions if (m_wallet->multisig()) { + CHECK_MULTISIG_ENABLED(); bool r = m_wallet->save_multisig_tx(ptx_vector, "multisig_monero_tx"); if (!r) { @@ -11549,6 +11603,7 @@ void simple_wallet::mms_auto_config(const std::vector &args) bool simple_wallet::mms(const std::vector &args) { + CHECK_MULTISIG_ENABLED(); try { m_wallet->get_multisig_wallet_state(); diff --git a/src/simplewallet/simplewallet.h b/src/simplewallet/simplewallet.h index 4c005c53a0c..6c4ddd4e75b 100644 --- a/src/simplewallet/simplewallet.h +++ b/src/simplewallet/simplewallet.h @@ -153,6 +153,7 @@ namespace cryptonote bool set_device_name(const std::vector &args = std::vector()); bool set_export_format(const std::vector &args = std::vector()); bool set_load_deprecated_formats(const std::vector &args = std::vector()); + bool set_enable_multisig(const std::vector &args = std::vector()); bool set_persistent_rpc_client_id(const std::vector &args = std::vector()); bool set_auto_mine_for_rpc_payment_threshold(const std::vector &args = std::vector()); bool set_credits_target(const std::vector &args = std::vector()); diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index f4a5a585539..5076286c406 100644 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -1216,7 +1216,8 @@ wallet2::wallet2(network_type nettype, uint64_t kdf_rounds, bool unattended, std m_rpc_version(0), m_export_format(ExportFormat::Binary), m_load_deprecated_formats(false), - m_credits_target(0) + m_credits_target(0), + m_enable_multisig(false) { set_rpc_client_secret_key(rct::rct2sk(rct::skGen())); } @@ -4051,6 +4052,9 @@ boost::optional wallet2::get_keys_file_data(const epee: value2.SetUint64(m_credits_target); json.AddMember("credits_target", value2, json.GetAllocator()); + value2.SetInt(m_enable_multisig ? 1 : 0); + json.AddMember("enable_multisig", value2, json.GetAllocator()); + // Serialize the JSON object rapidjson::StringBuffer buffer; rapidjson::Writer writer(buffer); @@ -4199,6 +4203,7 @@ bool wallet2::load_keys_buf(const std::string& keys_buf, const epee::wipeable_st m_persistent_rpc_client_id = false; m_auto_mine_for_rpc_payment_threshold = -1.0f; m_credits_target = 0; + m_enable_multisig = false; } else if(json.IsObject()) { @@ -4431,6 +4436,8 @@ bool wallet2::load_keys_buf(const std::string& keys_buf, const epee::wipeable_st m_auto_mine_for_rpc_payment_threshold = field_auto_mine_for_rpc_payment; GET_FIELD_FROM_JSON_RETURN_ON_ERROR(json, credits_target, uint64_t, Uint64, false, 0); m_credits_target = field_credits_target; + GET_FIELD_FROM_JSON_RETURN_ON_ERROR(json, enable_multisig, int, Int, false, false); + m_enable_multisig = field_enable_multisig; } else { diff --git a/src/wallet/wallet2.h b/src/wallet/wallet2.h index 660e6a14baf..8a9a2e519a1 100644 --- a/src/wallet/wallet2.h +++ b/src/wallet/wallet2.h @@ -1297,6 +1297,8 @@ namespace tools void set_rpc_client_secret_key(const crypto::secret_key &key) { m_rpc_client_secret_key = key; m_node_rpc_proxy.set_client_secret_key(key); } uint64_t credits_target() const { return m_credits_target; } void credits_target(uint64_t threshold) { m_credits_target = threshold; } + bool is_multisig_enabled() const { return m_enable_multisig; } + void enable_multisig(bool enable) { m_enable_multisig = enable; } bool get_tx_key_cached(const crypto::hash &txid, crypto::secret_key &tx_key, std::vector &additional_tx_keys) const; void set_tx_key(const crypto::hash &txid, const crypto::secret_key &tx_key, const std::vector &additional_tx_keys, const boost::optional &single_destination_subaddress = boost::none); @@ -1811,6 +1813,7 @@ namespace tools crypto::secret_key m_rpc_client_secret_key; rpc_payment_state_t m_rpc_payment_state; uint64_t m_credits_target; + bool m_enable_multisig; // Aux transaction data from device serializable_unordered_map m_tx_device; diff --git a/src/wallet/wallet_rpc_server.cpp b/src/wallet/wallet_rpc_server.cpp index 57baf428fac..7ec5fc7a1fd 100644 --- a/src/wallet/wallet_rpc_server.cpp +++ b/src/wallet/wallet_rpc_server.cpp @@ -61,6 +61,17 @@ using namespace epee; #define DEFAULT_AUTO_REFRESH_PERIOD 20 // seconds +#define CHECK_MULTISIG_ENABLED() \ + do \ + { \ + if (m_wallet->multisig() && !m_wallet->is_multisig_enabled()) \ + { \ + er.code = WALLET_RPC_ERROR_CODE_DISABLED; \ + er.message = "This wallet is multisig, and multisig is disabled. Multisig is an experimental feature and may have bugs. Things that could go wrong include: funds sent to a multisig wallet can't be spent at all, can only be spent with the participation of a malicious group member, or can be stolen by a malicious group member. You can enable it by running this once in monero-wallet-cli: set enable-multisig-experimental 1"; \ + return false; \ + } \ + } while(0) + namespace { const command_line::arg_descriptor arg_rpc_bind_port = {"rpc-bind-port", "Sets bind port for server"}; @@ -1057,6 +1068,8 @@ namespace tools return false; } + CHECK_MULTISIG_ENABLED(); + // validate the transfer requested and populate dsts & extra if (!validate_transfer(req.destinations, req.payment_id, dsts, extra, true, er)) { @@ -1109,6 +1122,8 @@ namespace tools return false; } + CHECK_MULTISIG_ENABLED(); + // validate the transfer requested and populate dsts & extra; RPC_TRANSFER::request and RPC_TRANSFER_SPLIT::request are identical types. if (!validate_transfer(req.destinations, req.payment_id, dsts, extra, true, er)) { @@ -1163,6 +1178,8 @@ namespace tools return false; } + CHECK_MULTISIG_ENABLED(); + cryptonote::blobdata blob; if (!epee::string_tools::parse_hexstr_to_binbuff(req.unsigned_txset, blob)) { @@ -1511,6 +1528,8 @@ namespace tools return false; } + CHECK_MULTISIG_ENABLED(); + try { std::vector ptx_vector = m_wallet->create_unmixable_sweep_transactions(); @@ -1539,6 +1558,8 @@ namespace tools return false; } + CHECK_MULTISIG_ENABLED(); + // validate the transfer requested and populate dsts & extra std::list destination; destination.push_back(wallet_rpc::transfer_destination()); @@ -1604,6 +1625,8 @@ namespace tools return false; } + CHECK_MULTISIG_ENABLED(); + // validate the transfer requested and populate dsts & extra std::list destination; destination.push_back(wallet_rpc::transfer_destination()); @@ -3933,6 +3956,9 @@ namespace tools er.message = "This wallet is already multisig"; return false; } + if (req.enable_multisig_experimental) + m_wallet->enable_multisig(true); + CHECK_MULTISIG_ENABLED(); if (m_wallet->watch_only()) { er.code = WALLET_RPC_ERROR_CODE_WATCH_ONLY; @@ -3959,6 +3985,7 @@ namespace tools er.message = "This wallet is already multisig"; return false; } + CHECK_MULTISIG_ENABLED(); if (m_wallet->watch_only()) { er.code = WALLET_RPC_ERROR_CODE_WATCH_ONLY; @@ -4003,6 +4030,7 @@ namespace tools er.message = "This wallet is multisig, but not yet finalized"; return false; } + CHECK_MULTISIG_ENABLED(); cryptonote::blobdata info; try @@ -4044,6 +4072,7 @@ namespace tools er.message = "This wallet is multisig, but not yet finalized"; return false; } + CHECK_MULTISIG_ENABLED(); if (req.info.size() < threshold - 1) { @@ -4096,6 +4125,7 @@ namespace tools //------------------------------------------------------------------------------------------------------------------------------ bool wallet_rpc_server::on_finalize_multisig(const wallet_rpc::COMMAND_RPC_FINALIZE_MULTISIG::request& req, wallet_rpc::COMMAND_RPC_FINALIZE_MULTISIG::response& res, epee::json_rpc::error& er, const connection_context *ctx) { + CHECK_MULTISIG_ENABLED(); return false; } //------------------------------------------------------------------------------------------------------------------------------ @@ -4123,6 +4153,7 @@ namespace tools er.message = "This wallet is multisig, and already finalized"; return false; } + CHECK_MULTISIG_ENABLED(); if (req.multisig_info.size() + 1 < total) { @@ -4172,6 +4203,7 @@ namespace tools er.message = "This wallet is multisig, but not yet finalized"; return false; } + CHECK_MULTISIG_ENABLED(); cryptonote::blobdata blob; if (!epee::string_tools::parse_hexstr_to_binbuff(req.tx_data_hex, blob)) @@ -4241,6 +4273,7 @@ namespace tools er.message = "This wallet is multisig, but not yet finalized"; return false; } + CHECK_MULTISIG_ENABLED(); cryptonote::blobdata blob; if (!epee::string_tools::parse_hexstr_to_binbuff(req.tx_data_hex, blob)) diff --git a/src/wallet/wallet_rpc_server_commands_defs.h b/src/wallet/wallet_rpc_server_commands_defs.h index fe53e293f5c..ecfc8e673a7 100644 --- a/src/wallet/wallet_rpc_server_commands_defs.h +++ b/src/wallet/wallet_rpc_server_commands_defs.h @@ -2416,7 +2416,10 @@ namespace wallet_rpc { struct request_t { + bool enable_multisig_experimental; + BEGIN_KV_SERIALIZE_MAP() + KV_SERIALIZE_OPT(enable_multisig_experimental, false) END_KV_SERIALIZE_MAP() }; typedef epee::misc_utils::struct_init request; diff --git a/src/wallet/wallet_rpc_server_error_codes.h b/src/wallet/wallet_rpc_server_error_codes.h index 91493957364..73422938024 100644 --- a/src/wallet/wallet_rpc_server_error_codes.h +++ b/src/wallet/wallet_rpc_server_error_codes.h @@ -78,3 +78,4 @@ #define WALLET_RPC_ERROR_CODE_ATTRIBUTE_NOT_FOUND -45 #define WALLET_RPC_ERROR_CODE_ZERO_AMOUNT -46 #define WALLET_RPC_ERROR_CODE_INVALID_SIGNATURE_TYPE -47 +#define WALLET_RPC_ERROR_CODE_DISABLED -48 diff --git a/tests/functional_tests/multisig.py b/tests/functional_tests/multisig.py index 89cb2fdc7c3..1c5894f4712 100755 --- a/tests/functional_tests/multisig.py +++ b/tests/functional_tests/multisig.py @@ -107,7 +107,7 @@ def create_multisig_wallets(self, M_threshold, N_total, expected_address): try: self.wallet[i].close_wallet() except: pass res = self.wallet[i].restore_deterministic_wallet(seed = seeds[i]) - res = self.wallet[i].prepare_multisig() + res = self.wallet[i].prepare_multisig(enable_multisig_experimental = True) assert len(res.multisig_info) > 0 info.append(res.multisig_info) @@ -172,7 +172,7 @@ def test_states(self): res = wallet2of2[i].restore_deterministic_wallet(seed = seeds[i]) res = wallet2of2[i].is_multisig() assert not res.multisig - res = wallet2of2[i].prepare_multisig() + res = wallet2of2[i].prepare_multisig(enable_multisig_experimental = True) assert len(res.multisig_info) > 0 info2of2.append(res.multisig_info) @@ -187,7 +187,7 @@ def test_states(self): assert res.ready ok = False - try: res = wallet2of2[0].prepare_multisig() + try: res = wallet2of2[0].prepare_multisig(enable_multisig_experimental = True) except: ok = True assert ok @@ -205,7 +205,7 @@ def test_states(self): res = wallet2of3[i].restore_deterministic_wallet(seed = seeds[i]) res = wallet2of3[i].is_multisig() assert not res.multisig - res = wallet2of3[i].prepare_multisig() + res = wallet2of3[i].prepare_multisig(enable_multisig_experimental = True) assert len(res.multisig_info) > 0 info2of3.append(res.multisig_info) @@ -223,7 +223,7 @@ def test_states(self): assert not res.ready ok = False - try: res = wallet2of3[1].prepare_multisig() + try: res = wallet2of3[1].prepare_multisig(enable_multisig_experimental = True) except: ok = True assert ok diff --git a/utils/python-rpc/framework/wallet.py b/utils/python-rpc/framework/wallet.py index 037beee84fa..01e9376274a 100644 --- a/utils/python-rpc/framework/wallet.py +++ b/utils/python-rpc/framework/wallet.py @@ -490,10 +490,11 @@ def is_multisig(self): } return self.rpc.send_json_rpc_request(is_multisig) - def prepare_multisig(self): + def prepare_multisig(self, enable_multisig_experimental = False): prepare_multisig = { 'method': 'prepare_multisig', 'params' : { + 'enable_multisig_experimental': enable_multisig_experimental, }, 'jsonrpc': '2.0', 'id': '0' From a66a52d14497c3295274e54fb9e0d2d0980004bb Mon Sep 17 00:00:00 2001 From: Jeffrey Ryan Date: Tue, 17 May 2022 22:40:36 +0200 Subject: [PATCH 09/35] common: update sha256sum to use OpenSSL 3.0 API As of OpenSSL 3.0, `SHA256_Init`, `SHA256_Update`, and `SHA256_Final` are deprectaed in favor of the higher-level `EVP_*` class of functions. This causes compiler warnings, and sooner or later, will cause build errors as these functions are excluded from distro headers. Also add some documentation. --- src/common/util.cpp | 19 ++++++------------- src/common/util.h | 20 ++++++++++++++++++++ 2 files changed, 26 insertions(+), 13 deletions(-) diff --git a/src/common/util.cpp b/src/common/util.cpp index 89dcf4feffa..f0de73a0668 100644 --- a/src/common/util.cpp +++ b/src/common/util.cpp @@ -85,7 +85,7 @@ using namespace epee; #include #include #include -#include +#include #undef MONERO_DEFAULT_LOG_CATEGORY #define MONERO_DEFAULT_LOG_CATEGORY "util" @@ -941,14 +941,7 @@ std::string get_nix_version_display_string() bool sha256sum(const uint8_t *data, size_t len, crypto::hash &hash) { - SHA256_CTX ctx; - if (!SHA256_Init(&ctx)) - return false; - if (!SHA256_Update(&ctx, data, len)) - return false; - if (!SHA256_Final((unsigned char*)hash.data, &ctx)) - return false; - return true; + return EVP_Digest(data, len, (unsigned char*) hash.data, NULL, EVP_sha256(), NULL) != 0; } bool sha256sum(const std::string &filename, crypto::hash &hash) @@ -961,8 +954,8 @@ std::string get_nix_version_display_string() if (!f) return false; std::ifstream::pos_type file_size = f.tellg(); - SHA256_CTX ctx; - if (!SHA256_Init(&ctx)) + std::unique_ptr ctx(EVP_MD_CTX_new(), &EVP_MD_CTX_free); + if (!EVP_DigestInit_ex(ctx.get(), EVP_sha256(), nullptr)) return false; size_t size_left = file_size; f.seekg(0, std::ios::beg); @@ -973,12 +966,12 @@ std::string get_nix_version_display_string() f.read(buf, read_size); if (!f || !f.good()) return false; - if (!SHA256_Update(&ctx, buf, read_size)) + if (!EVP_DigestUpdate(ctx.get(), buf, read_size)) return false; size_left -= read_size; } f.close(); - if (!SHA256_Final((unsigned char*)hash.data, &ctx)) + if (!EVP_DigestFinal_ex(ctx.get(), (unsigned char*)hash.data, nullptr)) return false; return true; } diff --git a/src/common/util.h b/src/common/util.h index 25f5ceb479a..f489594e890 100644 --- a/src/common/util.h +++ b/src/common/util.h @@ -231,7 +231,27 @@ namespace tools bool is_privacy_preserving_network(const std::string &address); int vercmp(const char *v0, const char *v1); // returns < 0, 0, > 0, similar to strcmp, but more human friendly than lexical - does not attempt to validate + /** + * \brief Creates a SHA-256 digest of a data buffer + * + * \param[in] data pointer to the buffer + * \param[in] len size of the buffer in bytes + * \param[out] hash where message digest will be written to + * + * \returns true if successful, false otherwise + */ bool sha256sum(const uint8_t *data, size_t len, crypto::hash &hash); + + /** + * \brief Creates a SHA-256 digest of a file's contents, equivalent to the sha256sum command in Linux + * + * \param[in] filename path to target file + * \param[out] hash where message digest will be written to + * + * \returns true if successful, false if the file can not be opened or there is an OpenSSL failure + * + * \throws ios_base::failure if after the file is successfully opened, an error occurs during reading + */ bool sha256sum(const std::string &filename, crypto::hash &hash); boost::optional is_hdd(const char *path); From 08080df2d9de877ae79028f20960b6b2417d4f20 Mon Sep 17 00:00:00 2001 From: Jeffrey Ryan Date: Tue, 17 May 2022 22:41:22 +0200 Subject: [PATCH 10/35] unit_tests: add more sha256sum test cases --- tests/CMakeLists.txt | 1 + tests/data/sha256sum/CLSAG.pdf | Bin 0 -> 374754 bytes tests/data/sha256sum/empty.txt | 0 tests/data/sha256sum/small_file.txt | 19 +++++++++++++++++++ tests/unit_tests/sha256.cpp | 22 ++++++++++++++++++++++ 5 files changed, 42 insertions(+) create mode 100644 tests/data/sha256sum/CLSAG.pdf create mode 100644 tests/data/sha256sum/empty.txt create mode 100644 tests/data/sha256sum/small_file.txt diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 5a3c4956083..2cabb1ba5bc 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -78,6 +78,7 @@ file(COPY data/outputs data/unsigned_monero_tx data/signed_monero_tx + data/sha256sum DESTINATION data) if (CMAKE_BUILD_TYPE STREQUAL "fuzz" OR OSSFUZZ) diff --git a/tests/data/sha256sum/CLSAG.pdf b/tests/data/sha256sum/CLSAG.pdf new file mode 100644 index 0000000000000000000000000000000000000000..6d7bb79aedee3fbef5feffa9627bc79923e55f02 GIT binary patch literal 374754 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

HX@ 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

F@jE<_jXvDpjOvA%-=fqCixO3jW&E+ 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⁢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%0A=n-@%LX{qB-(U($%8{KgaDRp<+a6>V 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�`9)SQq6WG_4u1?2K4_U7k5&%>>2R2XX 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 yhg!0kN@%0j0sd70 literal 0 HcmV?d00001 diff --git a/tests/data/sha256sum/empty.txt b/tests/data/sha256sum/empty.txt new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/data/sha256sum/small_file.txt b/tests/data/sha256sum/small_file.txt new file mode 100644 index 00000000000..74ca63e8d35 --- /dev/null +++ b/tests/data/sha256sum/small_file.txt @@ -0,0 +1,19 @@ +From: https://localmonero.co/knowledge/monero-circular-economies + +How does Monero uniquely enable these circular economies? + +While Monero shares some of the core attributes of Bitcoin that enable circular economies in a new way (censorship-resistant payments, p2p transactions, etc.), it brings an absolutely unique empowerment to those wishing to build and engage in circular economies. + +1. Monero enables global p2p transactions without fear of surveillance or censorship +Monero users do not need to worry about mass surveillance or even targeted censorship of their transactions, enabling unique peace of mind and preventing any burdens on commerce. You can transact with anyone in the world, at any time, without any surveillance using the Monero wallet of your choice. + +2. Fungibility removes the risk of tainted coins and ensures trust +As Monero is fungible (1 XMR equals 1 XMR, no matter what), participants in the circular economy don’t need to worry about the funds they are sending or receiving. Any Monero they send cannot be traced back to their other transactions and has no history and thus cannot be censored based on history, and Monero received will always be able to be spent freely at full market value. This fungibility adds to the peace of mind of participants, ensures that chain analysis firms cannot force their way into circular economies, and prevents a breakdown of trust in Monero as a method of exchange. +The current breakdown of trust in Bitcoin as a method of exchange is leading to it rapidly losing traction in circular economies where Monero is present. People don’t want to have to check funds for taint, worry about if they will be able to spend them freely, or feel the need to use any chain analysis tools to protect themselves from legal or regulatory issues. + +3. Monero’s low fees ensure a free flow of commerce +One of the simplest points to grasp about Monero transactions is that transaction fees are incredibly low and will remain reasonable in the long-term thanks to the tail emission and dynamic block size. +These low fees make sure that commerce can flow freely no matter the amount of blockchain congestion, further reducing the mental burden and stress on participants to try and time their transactions or wait hours/days to confirm low-fee transactions. With fees around 1c today, you can transact freely with any size of transaction without worry about fees down the line. + +Conclusion +Ultimately, Monero is digital cash as it should be. The peace of mind, fungibility, and privacy of transacting in cash but with all of the advantages of digital, global, and p2p transactions detached from the states control or surveillance. This ability to act as digital cash is uniquely enabling circular economies today and helping them to grow and prosper over time in ways that other cryptocurrencies like Bitcoin simply can’t. diff --git a/tests/unit_tests/sha256.cpp b/tests/unit_tests/sha256.cpp index 486f31c5bce..7a96a783bb1 100644 --- a/tests/unit_tests/sha256.cpp +++ b/tests/unit_tests/sha256.cpp @@ -26,10 +26,13 @@ // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +#include + #include "gtest/gtest.h" #include "common/util.h" #include "string_tools.h" +#include "unit_tests_utils.h" static bool check(const std::string &data, const char *expected_hash_hex) { @@ -39,7 +42,26 @@ static bool check(const std::string &data, const char *expected_hash_hex) return tools::sha256sum((const uint8_t*)data.data(), data.size(), hash) && hash == expected_hash; } +static std::string file_to_hex_hash(const std::string& filename) + { + const boost::filesystem::path full_path = unit_test::data_dir / "sha256sum" / filename; + + crypto::hash hash; + if (!tools::sha256sum(full_path.string(), hash)) { + throw std::runtime_error("sha256sum failed"); + } + + const std::string data_cstr(hash.data, sizeof(hash.data)); + const std::string hex_hash = epee::string_tools::buff_to_hex_nodelimer(data_cstr); + + return hex_hash; + } + TEST(sha256, empty) { ASSERT_TRUE(check(std::string(), "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")); } TEST(sha256, small) { ASSERT_TRUE(check("0123456789", "84d89877f0d4041efb6bf91a16f0248f2fd573e6af05c19f96bedb9f882f7882")); } TEST(sha256, large) { ASSERT_TRUE(check(std::string(65536*256, 0), "080acf35a507ac9849cfcba47dc2ad83e01b75663a516279c8b9d243b719643e")); } +TEST(sha256, emptyfile) { EXPECT_EQ(file_to_hex_hash("empty.txt"), "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"); } +TEST(sha256, smallfile) { EXPECT_EQ(file_to_hex_hash("small_file.txt"), "91c60f6d9ad0235306115913febccb93a5014bf4cea1ecd1fa33f3cf07ad9e8d"); } +TEST(sha256, largefile) { EXPECT_EQ(file_to_hex_hash("CLSAG.pdf"), "c38699c9a235a70285165ff8cce0bf3e48989de8092c15514116ca4c95d41e3f"); } +TEST(sha256, noexist) { crypto::hash hash; EXPECT_FALSE(tools::sha256sum("this_file_does_not_exist.exe", hash)); } From 2dab31f62f3e7aff14afd7897848143456b0c47d Mon Sep 17 00:00:00 2001 From: j-berman Date: Sat, 14 May 2022 20:11:53 -0700 Subject: [PATCH 11/35] Don't exclusively drop tor/i2p outgoing cxns in idle loop --- .../cryptonote_protocol_handler.h | 18 +++++- .../cryptonote_protocol_handler.inl | 62 ++++++++++++------- src/p2p/net_node.inl | 10 ++- tests/unit_tests/node_server.cpp | 4 +- 4 files changed, 65 insertions(+), 29 deletions(-) diff --git a/src/cryptonote_protocol/cryptonote_protocol_handler.h b/src/cryptonote_protocol/cryptonote_protocol_handler.h index a1e4df56306..515b78c9459 100644 --- a/src/cryptonote_protocol/cryptonote_protocol_handler.h +++ b/src/cryptonote_protocol/cryptonote_protocol_handler.h @@ -113,12 +113,23 @@ namespace cryptonote const block_queue &get_block_queue() const { return m_block_queue; } void stop(); void on_connection_close(cryptonote_connection_context &context); - void set_max_out_peers(unsigned int max) { m_max_out_peers = max; } + void set_max_out_peers(epee::net_utils::zone zone, unsigned int max) { CRITICAL_REGION_LOCAL(m_max_out_peers_lock); m_max_out_peers[zone] = max; } + unsigned int get_max_out_peers(epee::net_utils::zone zone) const + { + CRITICAL_REGION_LOCAL(m_max_out_peers_lock); + const auto it = m_max_out_peers.find(zone); + if (it == m_max_out_peers.end()) + { + MWARNING(epee::net_utils::zone_to_string(zone) << " max out peers not set, using default"); + return P2P_DEFAULT_CONNECTIONS_COUNT; + } + return it->second; + } bool no_sync() const { return m_no_sync; } void set_no_sync(bool value) { m_no_sync = value; } std::string get_peers_overview() const; std::pair get_next_needed_pruning_stripe() const; - bool needs_new_sync_connections() const; + bool needs_new_sync_connections(epee::net_utils::zone zone) const; bool is_busy_syncing(); private: @@ -171,7 +182,8 @@ namespace cryptonote epee::math_helper::once_a_time_milliseconds<100> m_standby_checker; epee::math_helper::once_a_time_seconds<101> m_sync_search_checker; epee::math_helper::once_a_time_seconds<43> m_bad_peer_checker; - std::atomic m_max_out_peers; + std::unordered_map m_max_out_peers; + mutable epee::critical_section m_max_out_peers_lock; tools::PerformanceTimer m_sync_timer, m_add_timer; uint64_t m_last_add_end_time; uint64_t m_sync_spans_downloaded, m_sync_old_spans_downloaded, m_sync_bad_spans_downloaded; diff --git a/src/cryptonote_protocol/cryptonote_protocol_handler.inl b/src/cryptonote_protocol/cryptonote_protocol_handler.inl index 891ee109d2e..af3031263a1 100644 --- a/src/cryptonote_protocol/cryptonote_protocol_handler.inl +++ b/src/cryptonote_protocol/cryptonote_protocol_handler.inl @@ -1776,33 +1776,49 @@ skip: return true; MTRACE("Checking for outgoing syncing peers..."); - unsigned n_syncing = 0, n_synced = 0; - boost::uuids::uuid last_synced_peer_id(boost::uuids::nil_uuid()); + std::unordered_map n_syncing, n_synced; + std::unordered_map last_synced_peer_id; + std::vector zones; m_p2p->for_each_connection([&](cryptonote_connection_context& context, nodetool::peerid_type peer_id, uint32_t support_flags)->bool { if (!peer_id || context.m_is_income) // only consider connected outgoing peers return true; + + const epee::net_utils::zone zone = context.m_remote_address.get_zone(); + if (n_syncing.find(zone) == n_syncing.end()) + { + n_syncing[zone] = 0; + n_synced[zone] = 0; + last_synced_peer_id[zone] = boost::uuids::nil_uuid(); + zones.push_back(zone); + } + if (context.m_state == cryptonote_connection_context::state_synchronizing) - ++n_syncing; + ++n_syncing[zone]; if (context.m_state == cryptonote_connection_context::state_normal) { - ++n_synced; + ++n_synced[zone]; if (!context.m_anchor) - last_synced_peer_id = context.m_connection_id; + last_synced_peer_id[zone] = context.m_connection_id; } return true; }); - MTRACE(n_syncing << " syncing, " << n_synced << " synced"); - // if we're at max out peers, and not enough are syncing - if (n_synced + n_syncing >= m_max_out_peers && n_syncing < P2P_DEFAULT_SYNC_SEARCH_CONNECTIONS_COUNT && last_synced_peer_id != boost::uuids::nil_uuid()) + for (const auto& zone : zones) { - if (!m_p2p->for_connection(last_synced_peer_id, [&](cryptonote_connection_context& ctx, nodetool::peerid_type peer_id, uint32_t f)->bool{ - MINFO(ctx << "dropping synced peer, " << n_syncing << " syncing, " << n_synced << " synced"); - drop_connection(ctx, false, false); - return true; - })) - MDEBUG("Failed to find peer we wanted to drop"); + const unsigned int max_out_peers = get_max_out_peers(zone); + MTRACE("[" << epee::net_utils::zone_to_string(zone) << "] " << n_syncing[zone] << " syncing, " << n_synced[zone] << " synced, " << max_out_peers << " max out peers"); + + // if we're at max out peers, and not enough are syncing, drop the last sync'd non-anchor + if (n_synced[zone] + n_syncing[zone] >= max_out_peers && n_syncing[zone] < P2P_DEFAULT_SYNC_SEARCH_CONNECTIONS_COUNT && last_synced_peer_id[zone] != boost::uuids::nil_uuid()) + { + if (!m_p2p->for_connection(last_synced_peer_id[zone], [&](cryptonote_connection_context& ctx, nodetool::peerid_type peer_id, uint32_t f)->bool{ + MINFO(ctx << "dropping synced peer, " << n_syncing[zone] << " syncing, " << n_synced[zone] << " synced, " << max_out_peers << " max out peers"); + drop_connection(ctx, false, false); + return true; + })) + MDEBUG("Failed to find peer we wanted to drop"); + } } return true; @@ -1987,11 +2003,13 @@ skip: ++n_peers_on_next_stripe; return true; }); + // TODO: investigate tallying by zone and comparing to max out peers by zone + const unsigned int max_out_peers = get_max_out_peers(epee::net_utils::zone::public_); const uint32_t distance = (peer_stripe + (1<= m_max_out_peers && n_peers_on_next_stripe == 0) || (distance > 1 && n_peers_on_next_stripe <= 2) || distance > 2) + if ((n_out_peers >= max_out_peers && n_peers_on_next_stripe == 0) || (distance > 1 && n_peers_on_next_stripe <= 2) || distance > 2) { MDEBUG(context << "we want seed " << next_stripe << ", and either " << n_out_peers << " is at max out peers (" - << m_max_out_peers << ") or distance " << distance << " from " << next_stripe << " to " << peer_stripe << + << max_out_peers << ") or distance " << distance << " from " << next_stripe << " to " << peer_stripe << " is too large and we have only " << n_peers_on_next_stripe << " peers on next seed, dropping connection to make space"); return true; } @@ -2812,11 +2830,13 @@ skip: } return true; }); - const bool use_next = (n_next > m_max_out_peers / 2 && n_subsequent <= 1) || (n_next > 2 && n_subsequent == 0); + // TODO: investigate tallying by zone and comparing to max out peers by zone + const unsigned int max_out_peers = get_max_out_peers(epee::net_utils::zone::public_); + const bool use_next = (n_next > max_out_peers / 2 && n_subsequent <= 1) || (n_next > 2 && n_subsequent == 0); const uint32_t ret_stripe = use_next ? subsequent_pruning_stripe: next_pruning_stripe; MIDEBUG(const std::string po = get_peers_overview(), "get_next_needed_pruning_stripe: want height " << want_height << " (" << want_height_from_blockchain << " from blockchain, " << want_height_from_block_queue << " from block queue), stripe " << - next_pruning_stripe << " (" << n_next << "/" << m_max_out_peers << " on it and " << n_subsequent << " on " << + next_pruning_stripe << " (" << n_next << "/" << max_out_peers << " on it and " << n_subsequent << " on " << subsequent_pruning_stripe << ", " << n_others << " others) -> " << ret_stripe << " (+" << (ret_stripe - next_pruning_stripe + (1 << CRYPTONOTE_PRUNING_LOG_STRIPES)) % (1 << CRYPTONOTE_PRUNING_LOG_STRIPES) << "), current peers " << po); @@ -2824,7 +2844,7 @@ skip: } //------------------------------------------------------------------------------------------------------------------------ template - bool t_cryptonote_protocol_handler::needs_new_sync_connections() const + bool t_cryptonote_protocol_handler::needs_new_sync_connections(epee::net_utils::zone zone) const { const uint64_t target = m_core.get_target_blockchain_height(); const uint64_t height = m_core.get_current_blockchain_height(); @@ -2832,11 +2852,11 @@ skip: return false; size_t n_out_peers = 0; m_p2p->for_each_connection([&](cryptonote_connection_context& ctx, nodetool::peerid_type peer_id, uint32_t support_flags)->bool{ - if (!ctx.m_is_income) + if (!ctx.m_is_income && ctx.m_remote_address.get_zone() == zone) ++n_out_peers; return true; }); - if (n_out_peers >= m_max_out_peers) + if (n_out_peers >= get_max_out_peers(zone)) return false; return true; } diff --git a/src/p2p/net_node.inl b/src/p2p/net_node.inl index a3bc3bf24de..872c1a6330f 100644 --- a/src/p2p/net_node.inl +++ b/src/p2p/net_node.inl @@ -538,7 +538,7 @@ namespace nodetool if ( !set_max_out_peers(public_zone, command_line::get_arg(vm, arg_out_peers) ) ) return false; else - m_payload_handler.set_max_out_peers(public_zone.m_config.m_net_config.max_out_connection_count); + m_payload_handler.set_max_out_peers(epee::net_utils::zone::public_, public_zone.m_config.m_net_config.max_out_connection_count); if ( !set_max_in_peers(public_zone, command_line::get_arg(vm, arg_in_peers) ) ) @@ -575,6 +575,8 @@ namespace nodetool if (!set_max_out_peers(zone, proxy.max_connections)) return false; + else + m_payload_handler.set_max_out_peers(proxy.zone, proxy.max_connections); epee::byte_slice this_noise = nullptr; if (proxy.noise) @@ -2758,7 +2760,7 @@ namespace nodetool public_zone->second.m_config.m_net_config.max_out_connection_count = count; if(current > count) public_zone->second.m_net_server.get_config_object().del_out_connections(current - count); - m_payload_handler.set_max_out_peers(count); + m_payload_handler.set_max_out_peers(epee::net_utils::zone::public_, count); } } @@ -2887,10 +2889,12 @@ namespace nodetool { if (m_offline) return true; if (!m_exclusive_peers.empty()) return true; - if (m_payload_handler.needs_new_sync_connections()) return true; for (auto& zone : m_network_zones) { + if (m_payload_handler.needs_new_sync_connections(zone.first)) + continue; + if (zone.second.m_net_server.is_stop_signal_sent()) return false; diff --git a/tests/unit_tests/node_server.cpp b/tests/unit_tests/node_server.cpp index 134fa6ece0f..6c8cd9f8d1f 100644 --- a/tests/unit_tests/node_server.cpp +++ b/tests/unit_tests/node_server.cpp @@ -1026,12 +1026,12 @@ TEST(node_server, race_condition) } void stop() {} void on_connection_close(context_t &context) {} - void set_max_out_peers(unsigned int max) {} + void set_max_out_peers(epee::net_utils::zone zone, unsigned int max) {} bool no_sync() const { return {}; } void set_no_sync(bool value) {} string_t get_peers_overview() const { return {}; } stripes_t get_next_needed_pruning_stripe() const { return {}; } - bool needs_new_sync_connections() const { return {}; } + bool needs_new_sync_connections(epee::net_utils::zone zone) const { return {}; } bool is_busy_syncing() { return {}; } }; using node_server_t = nodetool::node_server; From de2f0d010252ad1abf0f0c8ca9e32d81817c80ab Mon Sep 17 00:00:00 2001 From: selsta Date: Thu, 26 May 2022 03:43:54 +0200 Subject: [PATCH 12/35] wallet_api: add scanTransactions function --- src/wallet/api/wallet.cpp | 36 ++++++++++++++++++++++++++++++++++++ src/wallet/api/wallet.h | 1 + src/wallet/api/wallet2_api.h | 7 +++++++ 3 files changed, 44 insertions(+) diff --git a/src/wallet/api/wallet.cpp b/src/wallet/api/wallet.cpp index 7cd8656e11a..260caa551a8 100644 --- a/src/wallet/api/wallet.cpp +++ b/src/wallet/api/wallet.cpp @@ -1280,6 +1280,42 @@ bool WalletImpl::importOutputs(const string &filename) return true; } +bool WalletImpl::scanTransactions(const std::vector &txids) +{ + if (txids.empty()) + { + setStatusError(string(tr("Failed to scan transactions: no transaction ids provided."))); + return false; + } + + // Parse and dedup args + std::unordered_set txids_u; + for (const auto &s : txids) + { + crypto::hash txid; + if (!epee::string_tools::hex_to_pod(s, txid)) + { + setStatusError(string(tr("Invalid txid specified: ")) + s); + return false; + } + txids_u.insert(txid); + } + std::vector txids_v(txids_u.begin(), txids_u.end()); + + try + { + m_wallet->scan_tx(txids_v); + } + catch (const std::exception &e) + { + LOG_ERROR("Failed to scan transaction: " << e.what()); + setStatusError(string(tr("Failed to scan transaction: ")) + e.what()); + return false; + } + + return true; +} + void WalletImpl::addSubaddressAccount(const std::string& label) { m_wallet->add_subaddress_account(label); diff --git a/src/wallet/api/wallet.h b/src/wallet/api/wallet.h index 0e61ee330ac..018b2a0ed9a 100644 --- a/src/wallet/api/wallet.h +++ b/src/wallet/api/wallet.h @@ -169,6 +169,7 @@ class WalletImpl : public Wallet bool importKeyImages(const std::string &filename) override; bool exportOutputs(const std::string &filename, bool all = false) override; bool importOutputs(const std::string &filename) override; + bool scanTransactions(const std::vector &txids) override; virtual void disposeTransaction(PendingTransaction * t) override; virtual uint64_t estimateTransactionFee(const std::vector> &destinations, diff --git a/src/wallet/api/wallet2_api.h b/src/wallet/api/wallet2_api.h index c6f81f0e4a1..b67bce60cf6 100644 --- a/src/wallet/api/wallet2_api.h +++ b/src/wallet/api/wallet2_api.h @@ -927,6 +927,13 @@ struct Wallet */ virtual bool importOutputs(const std::string &filename) = 0; + /*! + * \brief scanTransactions - scan a list of transaction ids, this operation may reveal the txids to the remote node and affect your privacy + * \param txids - list of transaction ids + * \return - true on success + */ + virtual bool scanTransactions(const std::vector &txids) = 0; + virtual TransactionHistory * history() = 0; virtual AddressBook * addressBook() = 0; virtual Subaddress * subaddress() = 0; From bc05d2dfa8ea68fbcb99ce62150154c63aa1a018 Mon Sep 17 00:00:00 2001 From: garth-xmr <87672640+garth-xmr@users.noreply.github.com> Date: Thu, 26 May 2022 19:20:51 +0000 Subject: [PATCH 13/35] README.md: Add v15/v16 network upgrade Remade #8270 (includes edits from UkoeHB) --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index b3422280d61..a2c2788734a 100644 --- a/README.md +++ b/README.md @@ -138,6 +138,8 @@ Dates are provided in the format YYYY-MM-DD. | 1978433 | 2019-11-30 | v12 | v0.15.0.0 | v0.16.0.0 | New PoW based on RandomX, only allow >= 2 outputs, change to the block median used to calculate penalty, v1 coinbases are forbidden, rct sigs in coinbase forbidden, 10 block lock time for incoming outputs | 2210000 | 2020-10-17 | v13 | v0.17.0.0 | v0.17.3.2 | New CLSAG transaction format | 2210720 | 2020-10-18 | v14 | v0.17.1.1 | v0.17.3.2 | forbid old MLSAG transaction format +| 2668888 | 2022-07-16 | v15 | v0.18.0.0 | v0.18.0.0 | ringsize = 16, bulletproofs+, view tags, adjusted dynamic block weight algorithm +| 2669608 | 2022-07-17 | v16 | v0.18.0.0 | v0.18.0.0 | forbid old v14 transaction format | XXXXXXX | XXX-XX-XX | XXX | vX.XX.X.X | vX.XX.X.X | XXX | X's indicate that these details have not been determined as of commit date. From fb3f7cebbfc3d41a4186d5f7560dd7f7769517bb Mon Sep 17 00:00:00 2001 From: Jeffrey Ryan Date: Fri, 27 May 2022 19:48:59 -0500 Subject: [PATCH 14/35] clang warning fix for #8338 Unlike some other warnings, clang does not have a `stringop-overflow` group so it doesn't recognize the `#pragma GCC ...` directive in #8338 --- external/boost/archive/portable_binary_archive.hpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/external/boost/archive/portable_binary_archive.hpp b/external/boost/archive/portable_binary_archive.hpp index cdbd38aad5d..b1d6ae73e6d 100644 --- a/external/boost/archive/portable_binary_archive.hpp +++ b/external/boost/archive/portable_binary_archive.hpp @@ -44,12 +44,16 @@ reverse_bytes(signed char size, char *address){ char * first = address; char * last = first + size - 1; for(;first < last;++first, --last){ +#if defined(__GNUC__) && !defined(__clang__) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wstringop-overflow=" +#endif char x = *last; *last = *first; *first = x; +#if defined(__GNUC__) && !defined(__clang__) #pragma GCC diagnostic pop +#endif } } From da0715e503f5a5a5f9c8fcf4f81c01a423aab6ab Mon Sep 17 00:00:00 2001 From: Luke Parker Date: Wed, 1 Jun 2022 18:20:11 -0400 Subject: [PATCH 15/35] Improve consistency between on_money_received and on_money_received_unconfirmed unconfirmed solely uses a - b, and received now accepts b so it can provide more detailed logs on what occurred (printing a - b, yet with a and b). --- src/simplewallet/simplewallet.cpp | 8 ++++++-- src/simplewallet/simplewallet.h | 2 +- src/wallet/api/wallet.cpp | 8 +++++--- src/wallet/wallet2.cpp | 7 ++++--- src/wallet/wallet2.h | 2 +- 5 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/simplewallet/simplewallet.cpp b/src/simplewallet/simplewallet.cpp index f6e313089e7..41a11b53c43 100644 --- a/src/simplewallet/simplewallet.cpp +++ b/src/simplewallet/simplewallet.cpp @@ -5673,14 +5673,18 @@ void simple_wallet::on_new_block(uint64_t height, const cryptonote::block& block m_refresh_progress_reporter.update(height, false); } //---------------------------------------------------------------------------------------------------- -void simple_wallet::on_money_received(uint64_t height, const crypto::hash &txid, const cryptonote::transaction& tx, uint64_t amount, const cryptonote::subaddress_index& subaddr_index, bool is_change, uint64_t unlock_time) +void simple_wallet::on_money_received(uint64_t height, const crypto::hash &txid, const cryptonote::transaction& tx, uint64_t amount, uint64_t burnt, const cryptonote::subaddress_index& subaddr_index, bool is_change, uint64_t unlock_time) { if (m_locked) return; + std::stringstream burn; + if (burnt != 0) { + burn << " (" << print_money(amount) << " yet " << print_money(burnt) << " was burnt)"; + } message_writer(console_color_green, false) << "\r" << tr("Height ") << height << ", " << tr("txid ") << txid << ", " << - print_money(amount) << ", " << + print_money(amount - burnt) << burn.str() << ", " << tr("idx ") << subaddr_index; const uint64_t warn_height = m_wallet->nettype() == TESTNET ? 1000000 : m_wallet->nettype() == STAGENET ? 50000 : 1650000; diff --git a/src/simplewallet/simplewallet.h b/src/simplewallet/simplewallet.h index 6c4ddd4e75b..6a9fa149d7a 100644 --- a/src/simplewallet/simplewallet.h +++ b/src/simplewallet/simplewallet.h @@ -346,7 +346,7 @@ namespace cryptonote //----------------- i_wallet2_callback --------------------- virtual void on_new_block(uint64_t height, const cryptonote::block& block); - virtual void on_money_received(uint64_t height, const crypto::hash &txid, const cryptonote::transaction& tx, uint64_t amount, const cryptonote::subaddress_index& subaddr_index, bool is_change, uint64_t unlock_time); + virtual void on_money_received(uint64_t height, const crypto::hash &txid, const cryptonote::transaction& tx, uint64_t amount, uint64_t burnt, const cryptonote::subaddress_index& subaddr_index, bool is_change, uint64_t unlock_time); virtual void on_unconfirmed_money_received(uint64_t height, const crypto::hash &txid, const cryptonote::transaction& tx, uint64_t amount, const cryptonote::subaddress_index& subaddr_index); virtual void on_money_spent(uint64_t height, const crypto::hash &txid, const cryptonote::transaction& in_tx, uint64_t amount, const cryptonote::transaction& spend_tx, const cryptonote::subaddress_index& subaddr_index); virtual void on_skip_transaction(uint64_t height, const crypto::hash &txid, const cryptonote::transaction& tx); diff --git a/src/wallet/api/wallet.cpp b/src/wallet/api/wallet.cpp index 7cd8656e11a..fdf55ae2183 100644 --- a/src/wallet/api/wallet.cpp +++ b/src/wallet/api/wallet.cpp @@ -154,18 +154,20 @@ struct Wallet2CallbackImpl : public tools::i_wallet2_callback } } - virtual void on_money_received(uint64_t height, const crypto::hash &txid, const cryptonote::transaction& tx, uint64_t amount, const cryptonote::subaddress_index& subaddr_index, bool is_change, uint64_t unlock_time) + virtual void on_money_received(uint64_t height, const crypto::hash &txid, const cryptonote::transaction& tx, uint64_t amount, uint64_t burnt, const cryptonote::subaddress_index& subaddr_index, bool is_change, uint64_t unlock_time) { std::string tx_hash = epee::string_tools::pod_to_hex(txid); LOG_PRINT_L3(__FUNCTION__ << ": money received. height: " << height << ", tx: " << tx_hash - << ", amount: " << print_money(amount) + << ", amount: " << print_money(amount - burnt), + << ", burnt: " << print_money(burnt), + << ", raw_output_value: " << print_money(amount), << ", idx: " << subaddr_index); // do not signal on received tx if wallet is not syncronized completely if (m_listener && m_wallet->synchronized()) { - m_listener->moneyReceived(tx_hash, amount); + m_listener->moneyReceived(tx_hash, amount - burnt); m_listener->updated(); } } diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index 0b2a6c0f5a2..37f7e29c50b 100644 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -2208,7 +2208,7 @@ void wallet2::process_new_transaction(const crypto::hash &txid, const cryptonote } LOG_PRINT_L0("Received money: " << print_money(td.amount()) << ", with tx: " << txid); if (0 != m_callback) - m_callback->on_money_received(height, txid, tx, td.m_amount, td.m_subaddr_index, spends_one_of_ours(tx), td.m_tx.unlock_time); + m_callback->on_money_received(height, txid, tx, td.m_amount, 0, td.m_subaddr_index, spends_one_of_ours(tx), td.m_tx.unlock_time); } total_received_1 += amount; notify = true; @@ -2242,7 +2242,8 @@ void wallet2::process_new_transaction(const crypto::hash &txid, const cryptonote tx_money_got_in_outs[tx_scan_info[o].received->index] -= m_transfers[kit->second].amount(); uint64_t amount = tx.vout[o].amount ? tx.vout[o].amount : tx_scan_info[o].amount; - uint64_t extra_amount = amount - m_transfers[kit->second].amount(); + uint64_t burnt = m_transfers[kit->second].amount(); + uint64_t extra_amount = amount - burnt; if (!pool) { transfer_details &td = m_transfers[kit->second]; @@ -2285,7 +2286,7 @@ void wallet2::process_new_transaction(const crypto::hash &txid, const cryptonote LOG_PRINT_L0("Received money: " << print_money(td.amount()) << ", with tx: " << txid); if (0 != m_callback) - m_callback->on_money_received(height, txid, tx, td.m_amount, td.m_subaddr_index, spends_one_of_ours(tx), td.m_tx.unlock_time); + m_callback->on_money_received(height, txid, tx, td.m_amount, burnt, td.m_subaddr_index, spends_one_of_ours(tx), td.m_tx.unlock_time); } total_received_1 += extra_amount; notify = true; diff --git a/src/wallet/wallet2.h b/src/wallet/wallet2.h index e051946add2..fbea1b46f27 100644 --- a/src/wallet/wallet2.h +++ b/src/wallet/wallet2.h @@ -137,7 +137,7 @@ namespace tools public: // Full wallet callbacks virtual void on_new_block(uint64_t height, const cryptonote::block& block) {} - virtual void on_money_received(uint64_t height, const crypto::hash &txid, const cryptonote::transaction& tx, uint64_t amount, const cryptonote::subaddress_index& subaddr_index, bool is_change, uint64_t unlock_time) {} + virtual void on_money_received(uint64_t height, const crypto::hash &txid, const cryptonote::transaction& tx, uint64_t amount, uint64_t burnt, const cryptonote::subaddress_index& subaddr_index, bool is_change, uint64_t unlock_time) {} virtual void on_unconfirmed_money_received(uint64_t height, const crypto::hash &txid, const cryptonote::transaction& tx, uint64_t amount, const cryptonote::subaddress_index& subaddr_index) {} virtual void on_money_spent(uint64_t height, const crypto::hash &txid, const cryptonote::transaction& in_tx, uint64_t amount, const cryptonote::transaction& spend_tx, const cryptonote::subaddress_index& subaddr_index) {} virtual void on_skip_transaction(uint64_t height, const crypto::hash &txid, const cryptonote::transaction& tx) {} From 16f8e042b5af06bc5ef194eaabaf4df0f27fbe1c Mon Sep 17 00:00:00 2001 From: Luke Parker Date: Wed, 1 Jun 2022 19:38:42 -0400 Subject: [PATCH 16/35] Remove erraneous commas --- src/wallet/api/wallet.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/wallet/api/wallet.cpp b/src/wallet/api/wallet.cpp index fdf55ae2183..f8ab2438399 100644 --- a/src/wallet/api/wallet.cpp +++ b/src/wallet/api/wallet.cpp @@ -161,9 +161,9 @@ struct Wallet2CallbackImpl : public tools::i_wallet2_callback LOG_PRINT_L3(__FUNCTION__ << ": money received. height: " << height << ", tx: " << tx_hash - << ", amount: " << print_money(amount - burnt), - << ", burnt: " << print_money(burnt), - << ", raw_output_value: " << print_money(amount), + << ", amount: " << print_money(amount - burnt) + << ", burnt: " << print_money(burnt) + << ", raw_output_value: " << print_money(amount) << ", idx: " << subaddr_index); // do not signal on received tx if wallet is not syncronized completely if (m_listener && m_wallet->synchronized()) { From 747f5d3594566e4a9f56595cfd0feef7004e3485 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Sun, 21 Feb 2016 18:29:40 +0000 Subject: [PATCH 17/35] Preliminary raw partition support Autodetects that a block device is being used. --- external/db_drivers/liblmdb/mdb.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/external/db_drivers/liblmdb/mdb.c b/external/db_drivers/liblmdb/mdb.c index 6314d577546..0d01d295978 100644 --- a/external/db_drivers/liblmdb/mdb.c +++ b/external/db_drivers/liblmdb/mdb.c @@ -1473,6 +1473,8 @@ struct MDB_env { #define MDB_ENV_TXKEY 0x10000000U /** fdatasync is unreliable */ #define MDB_FSYNCONLY 0x08000000U + /** using a raw block device */ +#define MDB_RAWPART 0x04000000U uint32_t me_flags; /**< @ref mdb_env */ unsigned int me_psize; /**< DB page size, inited from me_os_psize */ unsigned int me_os_psize; /**< OS page size, from #GET_PAGESIZE */ @@ -4081,6 +4083,8 @@ mdb_env_read_header(MDB_env *env, int prev, MDB_meta *meta) p = (MDB_page *)&pbuf; if (!F_ISSET(p->mp_flags, P_META)) { + if (env->me_flags & MDB_RAWPART) + return ENOENT; DPRINTF(("page %"Yu" not a meta page", p->mp_pgno)); return MDB_INVALID; } @@ -4410,7 +4414,7 @@ mdb_env_map(MDB_env *env, void *addr) int prot = PROT_READ; if (flags & MDB_WRITEMAP) { prot |= PROT_WRITE; - if (ftruncate(env->me_fd, env->me_mapsize) < 0) + if (!(flags & MDB_RAWPART) && ftruncate(env->me_fd, env->me_mapsize) < 0) return ErrCode(); } env->me_map = mmap(addr, env->me_mapsize, prot, MAP_SHARED, @@ -5448,6 +5452,17 @@ mdb_env_open(MDB_env *env, const char *path, unsigned int flags, mdb_mode_t mode if (rc) goto leave; #endif +#endif +#ifndef _WIN32 + { + struct stat st; + rc = stat(path, &st); + if (rc) + return ErrCode(); + flags &= ~MDB_RAWPART; + if (S_ISBLK(st.st_mode)) + flags |= MDB_RAWPART | MDB_NOSUBDIR; + } #endif flags |= MDB_ENV_ACTIVE; /* tell mdb_env_close0() to clean up */ From 4e7586c9e41689b116108b806ab322b30f771082 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Mon, 11 Jun 2018 10:12:03 +0100 Subject: [PATCH 18/35] More RAWPART support Use mmap to read and initialize the meta pages, raw device may not support read/write syscalls. --- external/db_drivers/liblmdb/mdb.c | 44 ++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/external/db_drivers/liblmdb/mdb.c b/external/db_drivers/liblmdb/mdb.c index 0d01d295978..52ad844e9eb 100644 --- a/external/db_drivers/liblmdb/mdb.c +++ b/external/db_drivers/liblmdb/mdb.c @@ -4040,6 +4040,8 @@ mdb_txn_commit(MDB_txn *txn) return rc; } +static int ESECT mdb_env_map(MDB_env *env, void *addr); + /** Read the environment parameters of a DB environment before * mapping it into memory. * @param[in] env the environment handle @@ -4056,6 +4058,31 @@ mdb_env_read_header(MDB_env *env, int prev, MDB_meta *meta) int i, rc, off; enum { Size = sizeof(pbuf) }; + if (env->me_flags & MDB_RAWPART) { +#define VM_ALIGN 0x200000 + env->me_mapsize += VM_ALIGN-1; + env->me_mapsize &= ~(VM_ALIGN-1); + env->me_psize = env->me_os_psize; + rc = mdb_env_map(env, NULL); + if (rc) { + DPRINTF(("mdb_env_map: %s", mdb_strerror(rc))); + return rc; + } + p = (MDB_page *)env->me_map; + for (i=0; imp_flags, P_META)) + return ENOENT; + if (env->me_metas[i]->mm_magic != MDB_MAGIC) + return MDB_INVALID; + if (env->me_metas[i]->mm_version != MDB_DATA_VERSION) + return MDB_VERSION_MISMATCH; + if (i == 0 || env->me_metas[i]->mm_txnid > meta->mm_txnid) + *meta = *env->me_metas[i]; + p = (MDB_page *)((char *)p + env->me_psize); + } + return 0; + } + /* We don't know the page size yet, so use a minimum value. * Read both meta pages so we can use the latest one. */ @@ -4152,6 +4179,18 @@ mdb_env_init_meta(MDB_env *env, MDB_meta *meta) psize = env->me_psize; + if ((env->me_flags & (MDB_RAWPART|MDB_WRITEMAP)) == (MDB_RAWPART|MDB_WRITEMAP)) { + p = (MDB_page *)env->me_map; + p->mp_pgno = 0; + p->mp_flags = P_META; + *(MDB_meta *)METADATA(p) = *meta; + q = (MDB_page *)((char *)p + psize); + q->mp_pgno = 1; + q->mp_flags = P_META; + *(MDB_meta *)METADATA(q) = *meta; + return 0; + } + p = calloc(NUM_METAS, psize); if (!p) return ENOMEM; @@ -5460,8 +5499,11 @@ mdb_env_open(MDB_env *env, const char *path, unsigned int flags, mdb_mode_t mode if (rc) return ErrCode(); flags &= ~MDB_RAWPART; - if (S_ISBLK(st.st_mode)) + if (S_ISBLK(st.st_mode)) { flags |= MDB_RAWPART | MDB_NOSUBDIR; + if (!env->me_mapsize) + env->me_mapsize = DEFAULT_MAPSIZE; + } } #endif flags |= MDB_ENV_ACTIVE; /* tell mdb_env_close0() to clean up */ From b46a60e3907c597b8b4b272eca357d38534f5e40 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Sun, 11 Oct 2020 01:32:30 +0100 Subject: [PATCH 19/35] Fix rawpart flag collision --- external/db_drivers/liblmdb/mdb.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/external/db_drivers/liblmdb/mdb.c b/external/db_drivers/liblmdb/mdb.c index 52ad844e9eb..c30a8e52a72 100644 --- a/external/db_drivers/liblmdb/mdb.c +++ b/external/db_drivers/liblmdb/mdb.c @@ -1467,14 +1467,14 @@ struct MDB_env { #endif /** Failed to update the meta page. Probably an I/O error. */ #define MDB_FATAL_ERROR 0x80000000U + /** using a raw block device */ +#define MDB_RAWPART 0x40000000U /** Some fields are initialized. */ #define MDB_ENV_ACTIVE 0x20000000U /** me_txkey is set */ #define MDB_ENV_TXKEY 0x10000000U /** fdatasync is unreliable */ #define MDB_FSYNCONLY 0x08000000U - /** using a raw block device */ -#define MDB_RAWPART 0x04000000U uint32_t me_flags; /**< @ref mdb_env */ unsigned int me_psize; /**< DB page size, inited from me_os_psize */ unsigned int me_os_psize; /**< OS page size, from #GET_PAGESIZE */ From 493577a6cd016ee56465f5adb8e1dc8f10f2daa5 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Wed, 7 Jul 2021 12:26:18 +0100 Subject: [PATCH 20/35] Silence spurious fallthru warning --- external/db_drivers/liblmdb/mdb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/db_drivers/liblmdb/mdb.c b/external/db_drivers/liblmdb/mdb.c index c30a8e52a72..f29a75de801 100644 --- a/external/db_drivers/liblmdb/mdb.c +++ b/external/db_drivers/liblmdb/mdb.c @@ -7725,7 +7725,7 @@ mdb_cursor_put(MDB_cursor *mc, MDB_val *key, MDB_val *data, offset *= 4; /* space for 4 more */ break; } - /* FALLTHRU: Big enough MDB_DUPFIXED sub-page */ + /* FALLTHRU *//* Big enough MDB_DUPFIXED sub-page */ case MDB_CURRENT: fp->mp_flags |= P_DIRTY; COPY_PGNO(fp->mp_pgno, mp->mp_pgno); From b096e16699a189d619dad8a7319c6eb4dc5d46c5 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Wed, 7 Jul 2021 16:26:35 +0100 Subject: [PATCH 21/35] Revert "db_lmdb: test for mmap support at init time" This reverts commit bd96536637724413173271e8d5df1777f7879c29. The check interferes with raw device/partition support. --- src/blockchain_db/lmdb/db_lmdb.cpp | 30 ------------------------------ src/blockchain_db/lmdb/db_lmdb.h | 1 - 2 files changed, 31 deletions(-) diff --git a/src/blockchain_db/lmdb/db_lmdb.cpp b/src/blockchain_db/lmdb/db_lmdb.cpp index e2ac9df0b48..01f91209d83 100644 --- a/src/blockchain_db/lmdb/db_lmdb.cpp +++ b/src/blockchain_db/lmdb/db_lmdb.cpp @@ -25,13 +25,6 @@ // STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -#ifndef _WIN32 -#include -#include -#include -#include -#endif - #include "db_lmdb.h" #include @@ -1303,26 +1296,6 @@ BlockchainLMDB::BlockchainLMDB(bool batch_transactions): BlockchainDB() m_hardfork = nullptr; } -void BlockchainLMDB::check_mmap_support() -{ -#ifndef _WIN32 - const boost::filesystem::path mmap_test_file = m_folder / boost::filesystem::unique_path(); - int mmap_test_fd = ::open(mmap_test_file.string().c_str(), O_RDWR | O_CREAT, 0600); - if (mmap_test_fd < 0) - throw0(DB_ERROR((std::string("Failed to check for mmap support: open failed: ") + strerror(errno)).c_str())); - epee::misc_utils::auto_scope_leave_caller scope_exit_handler = epee::misc_utils::create_scope_leave_handler([mmap_test_fd, &mmap_test_file]() { - ::close(mmap_test_fd); - boost::filesystem::remove(mmap_test_file.string()); - }); - if (write(mmap_test_fd, "mmaptest", 8) != 8) - throw0(DB_ERROR((std::string("Failed to check for mmap support: write failed: ") + strerror(errno)).c_str())); - void *mmap_res = mmap(NULL, 8, PROT_READ, MAP_SHARED, mmap_test_fd, 0); - if (mmap_res == MAP_FAILED) - throw0(DB_ERROR("This filesystem does not support mmap: use --data-dir to place the blockchain on a filesystem which does")); - munmap(mmap_res, 8); -#endif -} - void BlockchainLMDB::open(const std::string& filename, const int db_flags) { int result; @@ -1364,9 +1337,6 @@ void BlockchainLMDB::open(const std::string& filename, const int db_flags) m_folder = filename; - try { check_mmap_support(); } - catch(...) { MERROR("Failed to check for mmap support, proceeding"); } - #ifdef __OpenBSD__ if ((mdb_flags & MDB_WRITEMAP) == 0) { MCLOG_RED(el::Level::Info, "global", "Running on OpenBSD: forcing WRITEMAP"); diff --git a/src/blockchain_db/lmdb/db_lmdb.h b/src/blockchain_db/lmdb/db_lmdb.h index 20edab2e9a0..bdae44948d3 100644 --- a/src/blockchain_db/lmdb/db_lmdb.h +++ b/src/blockchain_db/lmdb/db_lmdb.h @@ -359,7 +359,6 @@ class BlockchainLMDB : public BlockchainDB static int compare_string(const MDB_val *a, const MDB_val *b); private: - void check_mmap_support(); void do_resize(uint64_t size_increase=0); bool need_resize(uint64_t threshold_size=0) const; From 033a32a20b100d8159a95da832e695e7b953de24 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Wed, 7 Jul 2021 16:28:27 +0100 Subject: [PATCH 22/35] Remove check is_directory check on lmdb path The check interferes with raw device/partition support. --- src/blockchain_db/lmdb/db_lmdb.cpp | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/blockchain_db/lmdb/db_lmdb.cpp b/src/blockchain_db/lmdb/db_lmdb.cpp index 01f91209d83..db7fa6c7c61 100644 --- a/src/blockchain_db/lmdb/db_lmdb.cpp +++ b/src/blockchain_db/lmdb/db_lmdb.cpp @@ -1307,14 +1307,8 @@ void BlockchainLMDB::open(const std::string& filename, const int db_flags) throw0(DB_OPEN_FAILURE("Attempted to open db, but it's already open")); boost::filesystem::path direc(filename); - if (boost::filesystem::exists(direc)) - { - if (!boost::filesystem::is_directory(direc)) - throw0(DB_OPEN_FAILURE("LMDB needs a directory path, but a file was passed")); - } - else - { - if (!boost::filesystem::create_directories(direc)) + if (!boost::filesystem::exists(direc) && + !boost::filesystem::create_directories(direc)) { throw0(DB_OPEN_FAILURE(std::string("Failed to create directory ").append(filename).c_str())); } From ade464a5a0adaa166171f803078e9ac31b99bb06 Mon Sep 17 00:00:00 2001 From: Kris Zyp Date: Mon, 2 Nov 2020 20:33:09 +0000 Subject: [PATCH 23/35] ITS#9385 fix using MDB_NOSUBDIR with nonexistent file --- external/db_drivers/liblmdb/mdb.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/external/db_drivers/liblmdb/mdb.c b/external/db_drivers/liblmdb/mdb.c index f29a75de801..bf60c70133c 100644 --- a/external/db_drivers/liblmdb/mdb.c +++ b/external/db_drivers/liblmdb/mdb.c @@ -5495,11 +5495,8 @@ mdb_env_open(MDB_env *env, const char *path, unsigned int flags, mdb_mode_t mode #ifndef _WIN32 { struct stat st; - rc = stat(path, &st); - if (rc) - return ErrCode(); flags &= ~MDB_RAWPART; - if (S_ISBLK(st.st_mode)) { + if (!stat(path, &st) && (S_ISBLK(st.st_mode) || S_ISCHR(st.st_mode))) { flags |= MDB_RAWPART | MDB_NOSUBDIR; if (!env->me_mapsize) env->me_mapsize = DEFAULT_MAPSIZE; From 61d0712ed508127edf5216a215f81affaec37ea8 Mon Sep 17 00:00:00 2001 From: mj-xmr <63722585+mj-xmr@users.noreply.github.com> Date: Wed, 27 Apr 2022 06:41:15 +0200 Subject: [PATCH 24/35] Gitian: refresh the stale Monero dir via --setup switch --- contrib/gitian/README.md | 3 ++- contrib/gitian/gitian-build.py | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/contrib/gitian/README.md b/contrib/gitian/README.md index 9852b07ba35..24cf26fa37a 100644 --- a/contrib/gitian/README.md +++ b/contrib/gitian/README.md @@ -133,10 +133,11 @@ Common setup part: su - gitianuser GH_USER=YOUR_GITHUB_USER_NAME -VERSION=v0.17.2.0 +VERSION=v0.17.3.2 ``` Where `GH_USER` is your GitHub user name and `VERSION` is the version tag you want to build. +The `gitian-build.py`'s `--setup` switch will also refresh the environment of any stale files and submodules. Setup for LXC: diff --git a/contrib/gitian/gitian-build.py b/contrib/gitian/gitian-build.py index 859c2c645a0..859f460a78b 100755 --- a/contrib/gitian/gitian-build.py +++ b/contrib/gitian/gitian-build.py @@ -31,8 +31,10 @@ def setup(): subprocess.check_call(['git', 'checkout', 'c0f77ca018cb5332bfd595e0aff0468f77542c23']) os.makedirs('inputs', exist_ok=True) os.chdir('inputs') - if not os.path.isdir('monero'): - subprocess.check_call(['git', 'clone', args.url, 'monero']) + if os.path.isdir('monero'): + # Remove the potentially stale monero dir. Otherwise you might face submodule mismatches. + subprocess.check_call(['rm', 'monero', '-fR']) + subprocess.check_call(['git', 'clone', args.url, 'monero']) os.chdir('..') make_image_prog = ['bin/make-base-vm', '--suite', 'bionic', '--arch', 'amd64'] if args.docker: From 8460fcc32bfb381aa47dfe5293c5ad7dcc539361 Mon Sep 17 00:00:00 2001 From: j-berman Date: Mon, 13 Jun 2022 18:44:09 +0100 Subject: [PATCH 25/35] Revert "Merge pull request #7937" This reverts commit 50410d1f7d04bf60053f2263410c39e81d3ddad1, reversing changes made to d054def63f9b8950fe20b2d8e841f5a9ae09418f. --- src/rpc/core_rpc_server.cpp | 50 +++++++++++-------------------------- 1 file changed, 14 insertions(+), 36 deletions(-) diff --git a/src/rpc/core_rpc_server.cpp b/src/rpc/core_rpc_server.cpp index 0fe28465f8b..5304333ffa6 100644 --- a/src/rpc/core_rpc_server.cpp +++ b/src/rpc/core_rpc_server.cpp @@ -492,7 +492,6 @@ namespace cryptonote } CHECK_PAYMENT_MIN1(req, res, COST_PER_GET_INFO, false); - db_rtxn_guard rtxn_guard(&m_core.get_blockchain_storage().get_db()); const bool restricted = m_restricted && ctx; @@ -598,7 +597,6 @@ namespace cryptonote } CHECK_PAYMENT(req, res, 1); - db_rtxn_guard rtxn_guard(&m_core.get_blockchain_storage().get_db()); // quick check for noop if (!req.block_ids.empty()) @@ -609,7 +607,7 @@ namespace cryptonote if (last_block_hash == req.block_ids.front()) { res.start_height = 0; - res.current_height = last_block_height + 1; + res.current_height = m_core.get_current_blockchain_height(); res.status = CORE_RPC_STATUS_OK; return true; } @@ -730,7 +728,6 @@ namespace cryptonote res.blocks.clear(); res.blocks.reserve(req.heights.size()); CHECK_PAYMENT_MIN1(req, res, req.heights.size() * COST_PER_BLOCK, false); - db_rtxn_guard rtxn_guard(&m_core.get_blockchain_storage().get_db()); for (uint64_t height : req.heights) { block blk; @@ -1592,7 +1589,6 @@ namespace cryptonote return r; CHECK_PAYMENT(req, res, 1); - db_rtxn_guard rtxn_guard(&m_core.get_blockchain_storage().get_db()); const bool restricted = m_restricted && ctx; const bool request_has_rpc_origin = ctx != NULL; @@ -1617,7 +1613,6 @@ namespace cryptonote return r; CHECK_PAYMENT(req, res, 1); - db_rtxn_guard rtxn_guard(&m_core.get_blockchain_storage().get_db()); const bool restricted = m_restricted && ctx; const bool request_has_rpc_origin = ctx != NULL; @@ -1720,14 +1715,11 @@ namespace cryptonote error_resp.message = "Wrong parameters, expected height"; return false; } - db_rtxn_guard rtxn_guard(&m_core.get_blockchain_storage().get_db()); uint64_t h = req[0]; - uint64_t blockchain_height = m_core.get_current_blockchain_height(); - if(blockchain_height <= h) + if(m_core.get_current_blockchain_height() <= h) { error_resp.code = CORE_RPC_ERROR_CODE_TOO_BIG_HEIGHT; - error_resp.message = std::string("Requested block height: ") + std::to_string(h) + " greater than current top block height: " + std::to_string(blockchain_height - 1); - return false; + error_resp.message = std::string("Requested block height: ") + std::to_string(h) + " greater than current top block height: " + std::to_string(m_core.get_current_blockchain_height() - 1); } res = string_tools::pod_to_hex(m_core.get_block_id_by_height(h)); return true; @@ -1877,7 +1869,6 @@ namespace cryptonote return false; } } - db_rtxn_guard rtxn_guard(&m_core.get_blockchain_storage().get_db()); crypto::hash seed_hash, next_seed_hash; if (!get_block_template(info.address, req.prev_block.empty() ? NULL : &prev_block, blob_reserve, reserved_offset, wdiff, res.height, res.expected_reward, b, res.seed_height, seed_hash, next_seed_hash, error_resp)) return false; @@ -2351,7 +2342,6 @@ namespace cryptonote CHECK_CORE_READY(); CHECK_PAYMENT_MIN1(req, res, COST_PER_BLOCK_HEADER, false); - db_rtxn_guard rtxn_guard(&m_core.get_blockchain_storage().get_db()); uint64_t last_block_height; crypto::hash last_block_hash; m_core.get_blockchain_top(last_block_height, last_block_hash); @@ -2392,8 +2382,6 @@ namespace cryptonote return false; } - db_rtxn_guard rtxn_guard(&m_core.get_blockchain_storage().get_db()); - auto get = [this](const std::string &hash, bool fill_pow_hash, block_header_response &block_header, bool restricted, epee::json_rpc::error& error_resp) -> bool { crypto::hash block_hash; bool hash_parsed = parse_hash256(hash, block_hash); @@ -2453,6 +2441,13 @@ namespace cryptonote if (use_bootstrap_daemon_if_necessary(invoke_http_mode::JON_RPC, "getblockheadersrange", req, res, r)) return r; + const uint64_t bc_height = m_core.get_current_blockchain_height(); + if (req.start_height >= bc_height || req.end_height >= bc_height || req.start_height > req.end_height) + { + error_resp.code = CORE_RPC_ERROR_CODE_TOO_BIG_HEIGHT; + error_resp.message = "Invalid start/end heights."; + return false; + } const bool restricted = m_restricted && ctx; if (restricted && req.end_height - req.start_height > RESTRICTED_BLOCK_HEADER_RANGE) { @@ -2462,16 +2457,6 @@ namespace cryptonote } CHECK_PAYMENT_MIN1(req, res, (req.end_height - req.start_height + 1) * COST_PER_BLOCK_HEADER, false); - db_rtxn_guard rtxn_guard(&m_core.get_blockchain_storage().get_db()); - - const uint64_t bc_height = m_core.get_current_blockchain_height(); - if (req.start_height >= bc_height || req.end_height >= bc_height || req.start_height > req.end_height) - { - error_resp.code = CORE_RPC_ERROR_CODE_TOO_BIG_HEIGHT; - error_resp.message = "Invalid start/end heights."; - return false; - } - for (uint64_t h = req.start_height; h <= req.end_height; ++h) { crypto::hash block_hash = m_core.get_block_id_by_height(h); @@ -2516,12 +2501,10 @@ namespace cryptonote if (use_bootstrap_daemon_if_necessary(invoke_http_mode::JON_RPC, "getblockheaderbyheight", req, res, r)) return r; - db_rtxn_guard rtxn_guard(&m_core.get_blockchain_storage().get_db()); - uint64_t blockchain_height = m_core.get_current_blockchain_height(); - if(blockchain_height <= req.height) + if(m_core.get_current_blockchain_height() <= req.height) { error_resp.code = CORE_RPC_ERROR_CODE_TOO_BIG_HEIGHT; - error_resp.message = std::string("Requested block height: ") + std::to_string(req.height) + " greater than current top block height: " + std::to_string(blockchain_height - 1); + error_resp.message = std::string("Requested block height: ") + std::to_string(req.height) + " greater than current top block height: " + std::to_string(m_core.get_current_blockchain_height() - 1); return false; } CHECK_PAYMENT_MIN1(req, res, COST_PER_BLOCK_HEADER, false); @@ -2554,7 +2537,6 @@ namespace cryptonote return r; CHECK_PAYMENT_MIN1(req, res, COST_PER_BLOCK, false); - db_rtxn_guard rtxn_guard(&m_core.get_blockchain_storage().get_db()); crypto::hash block_hash; if (!req.hash.empty()) @@ -2569,11 +2551,10 @@ namespace cryptonote } else { - uint64_t blockchain_height = m_core.get_current_blockchain_height(); - if(blockchain_height <= req.height) + if(m_core.get_current_blockchain_height() <= req.height) { error_resp.code = CORE_RPC_ERROR_CODE_TOO_BIG_HEIGHT; - error_resp.message = std::string("Requested block height: ") + std::to_string(req.height) + " greater than current top block height: " + std::to_string(blockchain_height - 1); + error_resp.message = std::string("Requested block height: ") + std::to_string(req.height) + " greater than current top block height: " + std::to_string(m_core.get_current_blockchain_height() - 1); return false; } block_hash = m_core.get_block_id_by_height(req.height); @@ -2881,7 +2862,6 @@ namespace cryptonote bool core_rpc_server::on_get_coinbase_tx_sum(const COMMAND_RPC_GET_COINBASE_TX_SUM::request& req, COMMAND_RPC_GET_COINBASE_TX_SUM::response& res, epee::json_rpc::error& error_resp, const connection_context *ctx) { RPC_TRACKER(get_coinbase_tx_sum); - db_rtxn_guard rtxn_guard(&m_core.get_blockchain_storage().get_db()); const uint64_t bc_height = m_core.get_current_blockchain_height(); if (req.height >= bc_height || req.count > bc_height) { @@ -2923,7 +2903,6 @@ namespace cryptonote bool core_rpc_server::on_get_alternate_chains(const COMMAND_RPC_GET_ALTERNATE_CHAINS::request& req, COMMAND_RPC_GET_ALTERNATE_CHAINS::response& res, epee::json_rpc::error& error_resp, const connection_context *ctx) { RPC_TRACKER(get_alternate_chains); - db_rtxn_guard rtxn_guard(&m_core.get_blockchain_storage().get_db()); try { std::vector>> chains = m_core.get_blockchain_storage().get_alternative_chains(); @@ -3226,7 +3205,6 @@ namespace cryptonote bool r; if (use_bootstrap_daemon_if_necessary(invoke_http_mode::JON_RPC, "get_txpool_backlog", req, res, r)) return r; - db_rtxn_guard rtxn_guard(&m_core.get_blockchain_storage().get_db()); size_t n_txes = m_core.get_pool_transactions_count(); CHECK_PAYMENT_MIN1(req, res, COST_PER_TX_POOL_STATS * n_txes, false); From 41b1a6b0dd3386a8d70095ab811bc31c03c05d58 Mon Sep 17 00:00:00 2001 From: "hinto.janaiyo" Date: Sat, 18 Jun 2022 10:13:02 -0400 Subject: [PATCH 26/35] simplewallet: print usage when given no args --- src/simplewallet/simplewallet.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/simplewallet/simplewallet.cpp b/src/simplewallet/simplewallet.cpp index f6e313089e7..c1ecf1af9e6 100644 --- a/src/simplewallet/simplewallet.cpp +++ b/src/simplewallet/simplewallet.cpp @@ -6960,18 +6960,33 @@ bool simple_wallet::transfer_main(int transfer_type, const std::vector &args_) { + if (args_.size() < 1) + { + PRINT_USAGE(USAGE_TRANSFER); + return true; + } transfer_main(Transfer, args_, false); return true; } //---------------------------------------------------------------------------------------------------- bool simple_wallet::locked_transfer(const std::vector &args_) { + if (args_.size() < 1) + { + PRINT_USAGE(USAGE_LOCKED_TRANSFER); + return true; + } transfer_main(TransferLocked, args_, false); return true; } //---------------------------------------------------------------------------------------------------- bool simple_wallet::locked_sweep_all(const std::vector &args_) { + if (args_.size() < 1) + { + PRINT_USAGE(USAGE_LOCKED_SWEEP_ALL); + return true; + } sweep_main(m_current_subaddress_account, 0, true, args_); return true; } @@ -7670,6 +7685,7 @@ bool simple_wallet::sweep_below(const std::vector &args_) if (args_.size() < 1) { fail_msg_writer() << tr("missing threshold amount"); + PRINT_USAGE(USAGE_SWEEP_BELOW); return true; } if (!cryptonote::parse_amount(below, args_[0])) From 4278a3a7e32ced988474260e0ed6ad21228a41e5 Mon Sep 17 00:00:00 2001 From: moneromooo-monero Date: Mon, 20 Jun 2022 18:45:10 +0000 Subject: [PATCH 27/35] cryptonote_basic: catch crypto api errors --- src/cryptonote_basic/cryptonote_format_utils.cpp | 4 ++-- src/device/device_ledger.cpp | 12 ++++++++---- src/wallet/wallet2.cpp | 3 ++- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/cryptonote_basic/cryptonote_format_utils.cpp b/src/cryptonote_basic/cryptonote_format_utils.cpp index f101f10c532..388013f96d1 100644 --- a/src/cryptonote_basic/cryptonote_format_utils.cpp +++ b/src/cryptonote_basic/cryptonote_format_utils.cpp @@ -1042,7 +1042,7 @@ namespace cryptonote crypto::public_key subaddress_spendkey; if (out_can_be_to_acc(view_tag_opt, derivation, output_index)) { - hwdev.derive_subaddress_public_key(out_key, derivation, output_index, subaddress_spendkey); + CHECK_AND_ASSERT_MES(hwdev.derive_subaddress_public_key(out_key, derivation, output_index, subaddress_spendkey), boost::none, "Failed to derive subaddress public key"); auto found = subaddresses.find(subaddress_spendkey); if (found != subaddresses.end()) return subaddress_receive_info{ found->second, derivation }; @@ -1054,7 +1054,7 @@ namespace cryptonote CHECK_AND_ASSERT_MES(output_index < additional_derivations.size(), boost::none, "wrong number of additional derivations"); if (out_can_be_to_acc(view_tag_opt, additional_derivations[output_index], output_index)) { - hwdev.derive_subaddress_public_key(out_key, additional_derivations[output_index], output_index, subaddress_spendkey); + CHECK_AND_ASSERT_MES(hwdev.derive_subaddress_public_key(out_key, additional_derivations[output_index], output_index, subaddress_spendkey), boost::none, "Failed to derive subaddress public key"); auto found = subaddresses.find(subaddress_spendkey); if (found != subaddresses.end()) return subaddress_receive_info{ found->second, additional_derivations[output_index] }; diff --git a/src/device/device_ledger.cpp b/src/device/device_ledger.cpp index 51e65dfa53a..aa73e998c78 100644 --- a/src/device/device_ledger.cpp +++ b/src/device/device_ledger.cpp @@ -694,7 +694,8 @@ namespace hw { log_hexbuffer("derive_subaddress_public_key: [[IN]] pub ", pub_x.data, 32); log_hexbuffer("derive_subaddress_public_key: [[IN]] derivation", derivation_x.data, 32); log_message ("derive_subaddress_public_key: [[IN]] index ", std::to_string((int)output_index_x)); - this->controle_device->derive_subaddress_public_key(pub_x, derivation_x,output_index_x,derived_pub_x); + if (!this->controle_device->derive_subaddress_public_key(pub_x, derivation_x,output_index_x,derived_pub_x)) + return false; log_hexbuffer("derive_subaddress_public_key: [[OUT]] derived_pub", derived_pub_x.data, 32); #endif @@ -702,7 +703,8 @@ namespace hw { //If we are in TRANSACTION_PARSE, the given derivation has been retrieved uncrypted (wihtout the help //of the device), so continue that way. MDEBUG( "derive_subaddress_public_key : PARSE mode with known viewkey"); - crypto::derive_subaddress_public_key(pub, derivation, output_index,derived_pub); + if (!crypto::derive_subaddress_public_key(pub, derivation, output_index,derived_pub)) + return false; } else { AUTO_LOCK_CMD(); int offset = set_command_header_noopt(INS_DERIVE_SUBADDRESS_PUBLIC_KEY); @@ -1052,7 +1054,8 @@ namespace hw { crypto::key_derivation derivation_x; log_hexbuffer("generate_key_derivation: [[IN]] pub ", pub_x.data, 32); log_hexbuffer("generate_key_derivation: [[IN]] sec ", sec_x.data, 32); - this->controle_device->generate_key_derivation(pub_x, sec_x, derivation_x); + if (!this->controle_device->generate_key_derivation(pub_x, sec_x, derivation_x)) + return false; log_hexbuffer("generate_key_derivation: [[OUT]] derivation", derivation_x.data, 32); #endif @@ -1207,7 +1210,8 @@ namespace hw { log_hexbuffer("derive_public_key: [[IN]] derivation ", derivation_x.data, 32); log_message ("derive_public_key: [[IN]] output_index", std::to_string(output_index_x)); log_hexbuffer("derive_public_key: [[IN]] pub ", pub_x.data, 32); - this->controle_device->derive_public_key(derivation_x, output_index_x, pub_x, derived_pub_x); + if (!this->controle_device->derive_public_key(derivation_x, output_index_x, pub_x, derived_pub_x)) + return false; log_hexbuffer("derive_public_key: [[OUT]] derived_pub ", derived_pub_x.data, 32); #endif diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index 0b2a6c0f5a2..0c9032947fc 100644 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -12090,7 +12090,8 @@ bool wallet2::check_reserve_proof(const cryptonote::account_public_address &addr crypto::key_derivation derivation; THROW_WALLET_EXCEPTION_IF(!crypto::generate_key_derivation(proof.shared_secret, rct::rct2sk(rct::I), derivation), error::wallet_internal_error, "Failed to generate key derivation"); crypto::public_key subaddr_spendkey; - crypto::derive_subaddress_public_key(output_public_key, derivation, proof.index_in_tx, subaddr_spendkey); + THROW_WALLET_EXCEPTION_IF(!crypto::derive_subaddress_public_key(output_public_key, derivation, proof.index_in_tx, subaddr_spendkey), + error::wallet_internal_error, "Failed to derive subaddress public key"); THROW_WALLET_EXCEPTION_IF(subaddr_spendkeys.count(subaddr_spendkey) == 0, error::wallet_internal_error, "The address doesn't seem to have received the fund"); From 6f3abbead534650377aa8362f8c37623831ee5af Mon Sep 17 00:00:00 2001 From: TheCharlatan Date: Wed, 22 Jun 2022 22:50:55 +0200 Subject: [PATCH 28/35] Depends: Unbound disable getentropy()/reallocarray() (glibc < 2.26) --- contrib/depends/packages/unbound.mk | 9 ++++++++- .../unbound/disable-glibc-reallocarray.patch | 14 ++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 contrib/depends/patches/unbound/disable-glibc-reallocarray.patch diff --git a/contrib/depends/packages/unbound.mk b/contrib/depends/packages/unbound.mk index a85c47e4e28..9336524f385 100644 --- a/contrib/depends/packages/unbound.mk +++ b/contrib/depends/packages/unbound.mk @@ -4,6 +4,8 @@ $(package)_download_path=https://www.nlnetlabs.nl/downloads/$(package)/ $(package)_file_name=$(package)-$($(package)_version).tar.gz $(package)_sha256_hash=a480dc6c8937447b98d161fe911ffc76cfaffa2da18788781314e81339f1126f $(package)_dependencies=openssl expat ldns +$(package)_patches=disable-glibc-reallocarray.patch + define $(package)_set_vars $(package)_config_opts=--disable-shared --enable-static --without-pyunbound --prefix=$(host_prefix) --with-libexpat=$(host_prefix) --with-ssl=$(host_prefix) --with-libevent=no --without-pythonmodule --disable-flto --with-pthreads --with-libunbound-only @@ -12,8 +14,13 @@ define $(package)_set_vars $(package)_build_opts_mingw32=LDFLAGS="$($(package)_ldflags) -lpthread" endef +define $(package)_preprocess_cmds + patch -p1 < $($(package)_patch_dir)/disable-glibc-reallocarray.patch &&\ + autoconf +endef + define $(package)_config_cmds - $($(package)_autoconf) + $($(package)_autoconf) ac_cv_func_getentropy=no endef define $(package)_build_cmds diff --git a/contrib/depends/patches/unbound/disable-glibc-reallocarray.patch b/contrib/depends/patches/unbound/disable-glibc-reallocarray.patch new file mode 100644 index 00000000000..d66a821ad59 --- /dev/null +++ b/contrib/depends/patches/unbound/disable-glibc-reallocarray.patch @@ -0,0 +1,14 @@ +diff --git a/configure.ac b/configure.ac +index 5c7da197..e2b25288 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1702,6 +1702,9 @@ AC_LINK_IFELSE([AC_LANG_SOURCE(AC_INCLUDES_DEFAULT + #ifndef _OPENBSD_SOURCE + #define _OPENBSD_SOURCE 1 + #endif ++#ifdef __linux__ ++# error reallocarray() is currently disabled on Linux to support glibc < 2.26 ++#endif + #include + int main(void) { + void* p = reallocarray(NULL, 10, 100); From 50ccc7e72646f2ef2d502d0115fdeb84b17b7ad0 Mon Sep 17 00:00:00 2001 From: tobtoht Date: Fri, 24 Jun 2022 21:58:07 +0200 Subject: [PATCH 29/35] wallet2: remove obsolete rpc version check --- src/wallet/wallet2.cpp | 27 +-------------------------- 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index 0b2a6c0f5a2..5800217fa6e 100644 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -3622,32 +3622,7 @@ bool wallet2::refresh(bool trusted_daemon, uint64_t & blocks_fetched, bool& rece //---------------------------------------------------------------------------------------------------- bool wallet2::get_rct_distribution(uint64_t &start_height, std::vector &distribution) { - uint32_t rpc_version; - boost::optional result = m_node_rpc_proxy.get_rpc_version(rpc_version); - // no error - if (!!result) - { - // empty string -> not connection - THROW_WALLET_EXCEPTION_IF(result->empty(), tools::error::no_connection_to_daemon, "getversion"); - THROW_WALLET_EXCEPTION_IF(*result == CORE_RPC_STATUS_BUSY, tools::error::daemon_busy, "getversion"); - if (*result != CORE_RPC_STATUS_OK) - { - MDEBUG("Cannot determine daemon RPC version, not requesting rct distribution"); - return false; - } - } - else - { - if (rpc_version >= MAKE_CORE_RPC_VERSION(1, 19)) - { - MDEBUG("Daemon is recent enough, requesting rct distribution"); - } - else - { - MDEBUG("Daemon is too old, not requesting rct distribution"); - return false; - } - } + MDEBUG("Requesting rct distribution"); cryptonote::COMMAND_RPC_GET_OUTPUT_DISTRIBUTION::request req = AUTO_VAL_INIT(req); cryptonote::COMMAND_RPC_GET_OUTPUT_DISTRIBUTION::response res = AUTO_VAL_INIT(res); From 04c0da29869ceccbc51d3237404fcf9639a5444a Mon Sep 17 00:00:00 2001 From: tobtoht Date: Mon, 27 Jun 2022 21:23:12 +0200 Subject: [PATCH 30/35] Chunk /gettransactions to avoid hitting restricted RPC limit --- src/wallet/wallet2.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index 0b2a6c0f5a2..186f8d260cc 100644 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -3159,14 +3159,18 @@ void wallet2::update_pool_state(std::vector(SLICE_SIZE, txids.size() - offset); + for (size_t n = offset; n < (offset + n_txids); ++n) { + req.txs_hashes.push_back(epee::string_tools::pod_to_hex(txids.at(n).first)); + } + MDEBUG("asking for " << req.txs_hashes.size() << " transactions"); req.decode_as_json = false; req.prune = true; @@ -3183,7 +3187,7 @@ void wallet2::update_pool_state(std::vector Date: Tue, 28 Jun 2022 23:12:03 +0200 Subject: [PATCH 31/35] wallet2: don't use DNS to obtain segregation heights --- src/wallet/wallet2.cpp | 37 ------------------------------------- 1 file changed, 37 deletions(-) diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index 0b2a6c0f5a2..b127c75c0fd 100644 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -14022,43 +14022,6 @@ uint64_t wallet2::get_segregation_fork_height() const if (m_segregation_height > 0) return m_segregation_height; - if (m_use_dns && !m_offline) - { - // All four MoneroPulse domains have DNSSEC on and valid - static const std::vector dns_urls = { - "segheights.moneropulse.org", - "segheights.moneropulse.net", - "segheights.moneropulse.co", - "segheights.moneropulse.se" - }; - - const uint64_t current_height = get_blockchain_current_height(); - uint64_t best_diff = std::numeric_limits::max(), best_height = 0; - std::vector records; - if (tools::dns_utils::load_txt_records_from_dns(records, dns_urls)) - { - for (const auto& record : records) - { - std::vector fields; - boost::split(fields, record, boost::is_any_of(":")); - if (fields.size() != 2) - continue; - uint64_t height; - if (!string_tools::get_xtype_from_string(height, fields[1])) - continue; - - MINFO("Found segregation height via DNS: " << fields[0] << " fork height at " << height); - uint64_t diff = height > current_height ? height - current_height : current_height - height; - if (diff < best_diff) - { - best_diff = diff; - best_height = height; - } - } - if (best_height) - return best_height; - } - } return SEGREGATION_FORK_HEIGHT; } //---------------------------------------------------------------------------------------------------- From 83aa817b63cf6ba8f8bfa692fbedaa8109c51b81 Mon Sep 17 00:00:00 2001 From: Klaus Frank Date: Wed, 29 Jun 2022 04:51:43 +0200 Subject: [PATCH 32/35] (fix): Confusingly named CI-Job Rename the "build-macos" job within "depends", as it is not building on macOS as the similarly named job within build.yml does. Also, both names overlap which is confusing when looking for step-by-step build instruction examples or when looking at the logfile. --- .github/workflows/depends.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/depends.yml b/.github/workflows/depends.yml index f20bf949fd5..32df7dc4211 100644 --- a/.github/workflows/depends.yml +++ b/.github/workflows/depends.yml @@ -17,7 +17,7 @@ env: ccache --set-config=compression=true jobs: - build-macos: + build-cross: runs-on: ubuntu-18.04 env: CCACHE_TEMPDIR: /tmp/.ccache-temp From 8e9c60a682a7d6229a0f765f9bc3c22ed6711a0c Mon Sep 17 00:00:00 2001 From: selsta Date: Wed, 29 Jun 2022 05:19:04 +0200 Subject: [PATCH 33/35] README: depends has only been tested on ubuntu 18.04 and 20.04 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b3422280d61..54827c23a5b 100644 --- a/README.md +++ b/README.md @@ -579,7 +579,7 @@ You can also cross-compile static binaries on Linux for Windows and macOS with t * ```make depends target=aarch64-linux-android``` for 64bit android binaries -The required packages are the names for each toolchain on apt. Depending on your distro, they may have different names. +The required packages are the names for each toolchain on apt. Depending on your distro, they may have different names. The `depends` system has been tested on Ubuntu 18.04 and 20.04. Using `depends` might also be easier to compile Monero on Windows than using MSYS. Activate Windows Subsystem for Linux (WSL) with a distro (for example Ubuntu), install the apt build-essentials and follow the `depends` steps as depicted above. From d486c0322fc524c6a85442bf05c336254dfa5327 Mon Sep 17 00:00:00 2001 From: Leo Nerone Date: Fri, 17 Jun 2022 18:49:39 -0300 Subject: [PATCH 34/35] utils: add fish shell completions Fish shell completions for monerod, monero-wallet-cli, and monero-wallet-rpc. --- utils/fish/README.md | 2 + utils/fish/monero-wallet-cli.fish | 61 ++++++++++++++++ utils/fish/monero-wallet-rpc.fish | 65 +++++++++++++++++ utils/fish/monerod.fish | 113 ++++++++++++++++++++++++++++++ 4 files changed, 241 insertions(+) create mode 100644 utils/fish/README.md create mode 100644 utils/fish/monero-wallet-cli.fish create mode 100644 utils/fish/monero-wallet-rpc.fish create mode 100644 utils/fish/monerod.fish diff --git a/utils/fish/README.md b/utils/fish/README.md new file mode 100644 index 00000000000..7d7c58c2832 --- /dev/null +++ b/utils/fish/README.md @@ -0,0 +1,2 @@ +## Fish shell completions for Monero +This folder has basic Fish completions for `monerod`, `monero-wallet-cli`, and `monero-wallet-rpc`. To use them, put those files (or symlink them) inside `~/.config/fish/completions/` or wherever your Fish completion files are (see [https://fishshell.com/docs/current/completions.html#where-to-put-completions](https://fishshell.com/docs/current/completions.html#where-to-put-completions)) diff --git a/utils/fish/monero-wallet-cli.fish b/utils/fish/monero-wallet-cli.fish new file mode 100644 index 00000000000..c9c878dba67 --- /dev/null +++ b/utils/fish/monero-wallet-cli.fish @@ -0,0 +1,61 @@ +complete -c monero-wallet-cli -f + +complete -c monero-wallet-cli -l help -d "Produce help message" +complete -c monero-wallet-cli -l version -d "Output version information" +complete -c monero-wallet-cli -l daemon-address -r -d "Use daemon instance at :" +complete -c monero-wallet-cli -l daemon-host -r -d "Use daemon instance at host instead of localhost" +complete -c monero-wallet-cli -l proxy -r -d "[:] socks proxy to use for daemon connections" +complete -c monero-wallet-cli -l trusted-daemon -d "Enable commands which rely on a trusted" +complete -c monero-wallet-cli -l untrusted-daemon -d "Disable⋅commands⋅which⋅rely⋅on⋅a trusted daemon" +complete -c monero-wallet-cli -l password -r -d "Wallet⋅password⋅(escape/quote⋅as needed)" +complete -c monero-wallet-cli -l password-file -r -F -d "Wallet⋅password⋅file" +complete -c monero-wallet-cli -l daemon-port -r -d "Use daemon instance at port instead of 18081" +complete -c monero-wallet-cli -l daemon-login -r -d "Specify username[:password] for daemon RPC client" +complete -c monero-wallet-cli -l daemon-ssl -x -a "enabled disabled autodetect" -d "Enable SSL on daemon RPC connections. Default: autodetect" +complete -c monero-wallet-cli -l daemon-ssl-private-key -r -k -a "(__fish_complete_suffix .pem)" -d "Path to a PEM format private key" +complete -c monero-wallet-cli -l daemon-ssl-certificate -r -k -a "(__fish_complete_suffix .pem)" -d "Path to a PEM format certificate" +complete -c monero-wallet-cli -l daemon-ssl-ca-certificates -r -F -d "Path to file containing concatenated PEM format certificate(s) to replace system CA(s)." +complete -c monero-wallet-cli -l daemon-ssl-allowed-fingerprints -r -d "List of valid fingerprints of allowed RPC servers" +complete -c monero-wallet-cli -l daemon-ssl-allow-any-cert -d "Allow any SSL certificate from the daemon" +complete -c monero-wallet-cli -l daemon-ssl-allow-chained -d "Allow user (via --daemon-ssl-ca-certifi cates) chain certificates" +complete -c monero-wallet-cli -l testnet -d "For testnet. Daemon must also be launched with --testnet flag" +complete -c monero-wallet-cli -l stagenet -d "For stagenet. Daemon must also be launched with --stagenet flag" +complete -c monero-wallet-cli -l shared-ringdb-dir -r -F -d "Set shared ring database path" +complete -c monero-wallet-cli -l kdf-rounds -r -d "Number of rounds for the key derivation function. Default: 1" +complete -c monero-wallet-cli -l bitmessage-address -r -d "Use PyBitmessage instance at URL . Default: http://localhost:8442/" +complete -c monero-wallet-cli -l bitmessage-login -r -d "Specify as username:password for PyBitmessage API. Default: username:password" +complete -c monero-wallet-cli -l hw-device -r -d "HW device to use" +complete -c monero-wallet-cli -l hw-device-deriv-path -r -d "HW device wallet derivation path (e.g., SLIP-10)" +complete -c monero-wallet-cli -l tx-notify -r -d "Run a program for each new incoming transaction, '%s' will be replaced by the transaction hash" +complete -c monero-wallet-cli -l no-dns -d "Do not use DNS" +complete -c monero-wallet-cli -l offline -d "Do not connect to a daemon, nor use DNS" +complete -c monero-wallet-cli -l extra-entropy -r -F -d "File containing extra entropy to initialize the PRNG (any data, aim for 256 bits of entropy to be useful, which typically means more than 256 bits of data)" +complete -c monero-wallet-cli -l wallet-file -r -F -d "Use wallet " +complete -c monero-wallet-cli -l generate-new-wallet -r -F -d "Generate new wallet and save it to " +complete -c monero-wallet-cli -l generate-from-device -r -F -d "Generate new wallet from device and save it to " +complete -c monero-wallet-cli -l generate-from-view-key -r -d "Generate incoming-only wallet from view key" +complete -c monero-wallet-cli -l generate-from-spend-key -r -d "Generate deterministic wallet from spend key" +complete -c monero-wallet-cli -l generate-from-keys -r -d "Generate wallet from private keys" +complete -c monero-wallet-cli -l generate-from-multisig-keys -r -d "Generate a master wallet from multisig wallet keys" +complete -c monero-wallet-cli -l generate-from-json -r -k -a "(__fish_complete_suffix .json)" -d "Generate wallet from JSON format file" +complete -c monero-wallet-cli -l mnemonic-language -r -d "Language for mnemonic" +complete -c monero-wallet-cli -l command -d "" +complete -c monero-wallet-cli -l restore-deterministic-wallet -d "Recover wallet using Electrum-style mnemonic seed" +complete -c monero-wallet-cli -l restore-from-seed -d "alias for --restore-deterministic-wallet" +complete -c monero-wallet-cli -l restore-multisig-wallet -d "Recover multisig wallet using Electrum-style mnemonic seed" +complete -c monero-wallet-cli -l non-deterministic -d "Generate non-deterministic view and spend keys" +complete -c monero-wallet-cli -l electrum-seed -r -d "Specify Electrum seed for wallet recovery/creation" +complete -c monero-wallet-cli -l allow-mismatched-daemon-version -d "Allow communicating with a daemon that uses a different RPC version" +complete -c monero-wallet-cli -l restore-height -r -d "Restore from specific blockchain height. Default: 0" +complete -c monero-wallet-cli -l restore-date -r -d "Restore from estimated blockchain height on specified date" +complete -c monero-wallet-cli -l do-not-relay -d "The newly created transaction will not be relayed to the monero network" +complete -c monero-wallet-cli -l create-address-file -d "Create an address file for new wallets" +complete -c monero-wallet-cli -l subaddress-lookahead -r -d "Set subaddress lookahead sizes to :" +complete -c monero-wallet-cli -l use-english-language-names -d "Display English language names" +complete -c monero-wallet-cli -l rpc-client-secret-key -r -d "Set RPC client secret key for RPC payments" +complete -c monero-wallet-cli -l log-file -r -F -d "Specify log file" +complete -c monero-wallet-cli -l log-level -r -a "0 1 2 3 4" -d "0-4 or categories" +complete -c monero-wallet-cli -l max-log-file-size -r -d "Specify maximum log file size [B]. Default: 104850000" +complete -c monero-wallet-cli -l max-log-files -r -d "Specify maximum number of rotated log files to be saved (no limit by setting to 0). Default: 50" +complete -c monero-wallet-cli -l max-concurrency -d "Max number of threads to use for a parallel job. Default: 1" +complete -c monero-wallet-cli -l config-file -r -F -d "Config file" diff --git a/utils/fish/monero-wallet-rpc.fish b/utils/fish/monero-wallet-rpc.fish new file mode 100644 index 00000000000..a64e112ef07 --- /dev/null +++ b/utils/fish/monero-wallet-rpc.fish @@ -0,0 +1,65 @@ +complete -c monero-wallet-rpc -f + +complete -c monero-wallet-rpc -l help -d "Produce help message" +complete -c monero-wallet-rpc -l version -d "Output version information " +complete -c monero-wallet-rpc -l daemon-address -r -d "Use daemon instance at :" +complete -c monero-wallet-rpc -l daemon-host -r -d "Use daemon instance at host instead of localhost" +complete -c monero-wallet-rpc -l proxy -r -d "[:] socks proxy to use for daemon connections" +complete -c monero-wallet-rpc -l trusted-daemon -d "Enable commands which rely on a trusted daemon" +complete -c monero-wallet-rpc -l untrusted-daemon -d "Disable commands which rely on a trusted daemon" +complete -c monero-wallet-rpc -l password -r -d "Wallet password (escape/quote as needed)" +complete -c monero-wallet-rpc -l password-file -r -F -d "Wallet password file" +complete -c monero-wallet-rpc -l daemon-port -r -d "Use daemon instance at port instead of 18081. Default: 0" +complete -c monero-wallet-rpc -l daemon-login -r -d "Specify username[:password] for daemon RPC client" +complete -c monero-wallet-rpc -l daemon-ssl -x -a "enabled disabled autodetect" -d "Enable SSL on daemon RPC connections. Default: autodetect" +complete -c monero-wallet-rpc -l daemon-ssl-private-key -r -k -a "(__fish_complete_suffix .pem)" -d "Path to a PEM format private key" +complete -c monero-wallet-rpc -l daemon-ssl-certificate -r -k -a "(__fish_complete_suffix .pem)" -d "Path to a PEM format certificate" +complete -c monero-wallet-rpc -l daemon-ssl-ca-certificates -r -F -d "Path to file containing concatenated PEM format certificate(s) to replace system CA(s)." +complete -c monero-wallet-rpc -l daemon-ssl-allowed-fingerprints -r -d "List of valid fingerprints of allowed RPC servers" +complete -c monero-wallet-rpc -l daemon-ssl-allow-any-cert -d "Allow any SSL certificate from the daemon" +complete -c monero-wallet-rpc -l daemon-ssl-allow-chained -d "Allow user (via --daemon-ssl-ca-certifi cates) chain certificates" +complete -c monero-wallet-rpc -l testnet -d "For testnet. Daemon must also be launched with --testnet flag" +complete -c monero-wallet-rpc -l stagenet -d "For stagenet. Daemon must also be launched with --stagenet flag" +complete -c monero-wallet-rpc -l shared-ringdb-dir -r -F -d "Set shared ring database path" +complete -c monero-wallet-rpc -l kdf-rounds -r -d "Number of rounds for the key derivation function. Default: 1" +complete -c monero-wallet-rpc -l bitmessage-address -r -d "Use PyBitmessage instance at URL . Default: http://localhost:8442/" +complete -c monero-wallet-rpc -l bitmessage-login -r -d "Specify as username:password for PyBitmessage API. Default: username:password" +complete -c monero-wallet-rpc -l hw-device -r -d "HW device to use" +complete -c monero-wallet-rpc -l hw-device-deriv-path -r -d "HW device wallet derivation path (e.g., SLIP-10)" +complete -c monero-wallet-rpc -l tx-notify -r -d "Run a program for each new incoming transaction, '%s' will be replaced by the transaction hash" +complete -c monero-wallet-rpc -l no-dns -d "Do not use DNS" +complete -c monero-wallet-rpc -l offline -d "Do not connect to a daemon, nor use DNS" +complete -c monero-wallet-rpc -l extra-entropy -r -F -d "File containing extra entropy to initialize the PRNG (any data, aim for 256 bits of entropy to be useful, which typically means more than 256 bits of data)" +complete -c monero-wallet-rpc -l rpc-bind-port -r -d "Sets bind port for server" +complete -c monero-wallet-rpc -l disable-rpc-login -d "Disable HTTP authentication for RPC connections served by this process" +complete -c monero-wallet-rpc -l restricted-rpc -d "Restricts to view-only commands" +complete -c monero-wallet-rpc -l rpc-bind-ip -r -d "Specify IP to bind RPC server. Default: 127.0.0.1" +complete -c monero-wallet-rpc -l rpc-bind-ipv6-address -r -d "Specify IPv6 address to bind RPC server. Default: ::1" +complete -c monero-wallet-rpc -l rpc-restricted-bind-ip -r -d "Specify IP to bind restricted RPC server. Default: 127.0.0.1" +complete -c monero-wallet-rpc -l rpc-restricted-bind-ipv6-address -r -d "Specify IPv6 address to bind restricted RPC server. Default: ::1" +complete -c monero-wallet-rpc -l rpc-use-ipv6 -d "Allow IPv6 for RPC" +complete -c monero-wallet-rpc -l rpc-ignore-ipv4 -d "Ignore unsuccessful IPv4 bind for RPC" +complete -c monero-wallet-rpc -l rpc-login -r -d "Specify username[:password] required for RPC server" +complete -c monero-wallet-rpc -l confirm-external-bind -d "Confirm rpc-bind-ip value is NOT a loopback (local) IP" +complete -c monero-wallet-rpc -l rpc-access-control-origins -r -d "Specify a comma separated list of origins to allow cross origin resource sharing" +complete -c monero-wallet-rpc -l rpc-ssl -x -a "enabled disabled autodetect" -d "Enable SSL on RPC connections. Default: autodetect" +complete -c monero-wallet-rpc -l rpc-ssl-private-key -r -k -a "(__fish_complete_suffix .pem)" -d "Path to a PEM format private key" +complete -c monero-wallet-rpc -l rpc-ssl-certificate -r -k -a "(__fish_complete_suffix .pem)" -d "Path to a PEM format certificate" +complete -c monero-wallet-rpc -l rpc-ssl-ca-certificates -r -F -d "Path to file containing concatenated PEM format certificate(s) to replace system CA(s)." +complete -c monero-wallet-rpc -l rpc-ssl-allowed-fingerprints -r -d "List of certificate fingerprints to allow" +complete -c monero-wallet-rpc -l rpc-ssl-allow-chained -d "Allow user (via --rpc-ssl-certificates) chain certificates" +complete -c monero-wallet-rpc -l disable-rpc-ban -d "Do not ban hosts on RPC errors" +complete -c monero-wallet-rpc -l wallet-file -r -F -d "Use wallet " +complete -c monero-wallet-rpc -l generate-from-json -r -k -a "(__fish_complete_suffix .json)" -d "Generate wallet from JSON format file" +complete -c monero-wallet-rpc -l wallet-dir -r -F -d "Directory for newly created wallets" +complete -c monero-wallet-rpc -l prompt-for-password -d "Prompts for password when not provided" +complete -c monero-wallet-rpc -l rpc-client-secret-key -r -d "Set RPC client secret key for RPC payments" +complete -c monero-wallet-rpc -l detach -d "Run as daemon" +complete -c monero-wallet-rpc -l pidfile -r -F -d "File path to write the daemon's PID to (optional, requires --detach)" +complete -c monero-wallet-rpc -l non-interactive -d "Run non-interactive" +complete -c monero-wallet-rpc -l log-file -r -F -d "Specify log file" +complete -c monero-wallet-rpc -l log-level -r -a "0 1 2 3 4" -d "0-4 or categories" +complete -c monero-wallet-rpc -l max-log-file-size -r -d "Specify maximum log file size [B]. Default: 104850000" +complete -c monero-wallet-rpc -l max-log-files -r -d "Specify maximum number of rotated log files to be saved (no limit by setting to 0). Default: 50" +complete -c monero-wallet-rpc -l max-concurrency -d "Max number of threads to use for a parallel job. Default: 1" +complete -c monero-wallet-rpc -l config-file -r -F -d "Config file" diff --git a/utils/fish/monerod.fish b/utils/fish/monerod.fish new file mode 100644 index 00000000000..d2836a6b2a4 --- /dev/null +++ b/utils/fish/monerod.fish @@ -0,0 +1,113 @@ +complete -c monerod -f + +complete -c monerod -l help -d "Produce help message" +complete -c monerod -l version -d "Output version information" +complete -c monerod -l os-version -d "OS for which this executable was compiled" +complete -c monerod -l config-file -r -d "Specify configuration file" +complete -c monerod -l detach -d "Run as daemon" +complete -c monerod -l pidfile -r -F -d "File path to write the daemon's PID to (optional, requires --detach)" +complete -c monerod -l non-interactive -d "Run non-interactive" +complete -c monerod -l log-file -r -F -d "Specify log file" +complete -c monerod -l log-level -r -d "" +complete -c monerod -l max-log-file-size -r -d "Specify maximum log file size [B]. Default: 104850000" +complete -c monerod -l max-log-files -r -d "Specify maximum number of rotated log files to be saved (no limit by setting to 0). Default: 50" +complete -c monerod -l max-concurrency -r -d "Max number of threads to use for a parallel job. Default: 0" +complete -c monerod -l proxy -r -d "Network communication through proxy: i.e. \"127.0.0.1:9050\"" +complete -c monerod -l proxy-allow-dns-leaks -d "Allow DNS leaks outside of proxy" +complete -c monerod -l public-node -d "Allow other users to use the node as a remote (restricted RPC mode, view-only commands) and advertise it over P2P" +complete -c monerod -l zmq-rpc-bind-ip -r -d "IP for ZMQ RPC server to listen on. Default: 127.0.0.1" +complete -c monerod -l zmq-rpc-bind-port -r -d "Port for ZMQ RPC server to listen on. Default: 18082, 28082 if 'testnet', 38082 if 'stagenet'" +complete -c monerod -l zmq-pub -r -d "Address for ZMQ pub - tcp://ip:port or ipc://path " +complete -c monerod -l no-zmq -d "Disable ZMQ RPC server [114/349]" +complete -c monerod -l data-dir -x -a "(__fish_complete_directories)" -d "Specify data directory" +complete -c monerod -l test-drop-download -d "For net tests: in download, discard ALL blocks instead checking/saving them (very fast)" +complete -c monerod -l test-drop-download-height -r -d "Like test-drop-download but discards only after around certain height. Default: 0" +complete -c monerod -l testnet -d "Run on testnet. The wallet must be launched with --testnet flag." +complete -c monerod -l stagenet -d "Run on stagenet. The wallet must be launched with --stagenet flag." +complete -c monerod -l regtest -d "Run in a regression testing mode." +complete -c monerod -l keep-fakechain -d "Don't delete any existing database when in fakechain mode." +complete -c monerod -l fixed-difficulty -r -d "Fixed difficulty used for testing. Default: 0" +complete -c monerod -l enforce-dns-checkpointing -d "checkpoints from DNS server will be enforced" +complete -c monerod -l prep-blocks-threads -r -d "Max number of threads to use when preparing block hashes in groups. Default: 4" +complete -c monerod -l fast-block-sync -r -d "Sync up most of the way by using embedded, known block hashes. Default: 1" +complete -c monerod -l show-time-stats -r -d "(=0) Show time-stats when processing blocks/txs and disk synchronization. Default: 0" +complete -c monerod -l block-sync-size -r -d "(=0) How many blocks to sync at once during chain synchronization (0 = adaptive). Default: 0" +complete -c monerod -l check-updates -x -a "disabled notify download update" -d "Check for new versions of monero. Default: notify" +complete -c monerod -l fluffy-blocks -d "Relay blocks as fluffy blocks (obsolete, now default)" +complete -c monerod -l no-fluffy-blocks -d "Relay blocks as normal blocks" +complete -c monerod -l test-dbg-lock-sleep -r -d "Sleep time in ms, defaults to 0 (off), used to debug before/after locking mutex. Values 100 to 1000 are good for tests." +complete -c monerod -l offline -d "Do not listen for peers, nor connect to any" +complete -c monerod -l disable-dns-checkpoints -d "Do not retrieve checkpoints from DNS" +complete -c monerod -l block-download-max-size -r -d "Set maximum size of block download queue in bytes (0 for default)" +complete -c monerod -l sync-pruned-blocks -d "Allow syncing from nodes with only pruned blocks" +complete -c monerod -l max-txpool-weight -r -d "Set maximum txpool weight in bytes. Default: 648000000" +complete -c monerod -l block-notify -r -d "Run a program for each new block, '%s' will be replaced by the block hash" +complete -c monerod -l prune-blockchain -d "Prune blockchain" +complete -c monerod -l reorg-notify -r -d "Run a program for each reorg, '%s' will be replaced by the split height, '%h' will be replaced by the new blockchain height, '%n' will be replaced by the number of new blocks in the new chain, and '%d' will be replaced by the number of blocks discarded from the old chain" +complete -c monerod -l block-rate-notify -r -d "Run a program when the block rate undergoes large fluctuations. This might be a sign of large amounts of hash rate going on and off the Monero network, and thus be of potential interest in predicting attacks. %t will be replaced by the number of minutes for the observation window, %b by the number of blocks observed within that window, and %e by the number of blocks that was expected in that window. It is suggested that this notification is used to automatically increase the number of confirmations required before a payment is acted upon." +complete -c monerod -l keep-alt-blocks -d "Keep alternative blocks on restart" +complete -c monerod -l extra-messages-file -r -F -d "Specify file for extra messages to include into coinbase transactions" +complete -c monerod -l start-mining -r -d "Specify wallet address to mining for" +complete -c monerod -l mining-threads -r -d "Specify mining threads count" +complete -c monerod -l bg-mining-enable -d "Enable background mining" +complete -c monerod -l bg-mining-ignore-battery -d "If true, assumes plugged in when unable to query system power status" +complete -c monerod -l bg-mining-min-idle-interval -r -d "Specify min lookback interval in seconds for determining idle state" +complete -c monerod -l bg-mining-idle-threshold -r -d "Specify minimum avg idle percentage over lookback interval" +complete -c monerod -l bg-mining-miner-target -r -d "Specify maximum percentage cpu use by miner(s)" +complete -c monerod -l db-sync-mode -r -d "Specify sync option, using format [safe|fast|fastest]:[sync|async]:[[blocks]| [bytes]]. Default: fast:async:250000000bytes" +complete -c monerod -l db-salvage -d "Try to salvage a blockchain database if it seems corrupted" +complete -c monerod -l p2p-bind-ip -r -d "Interface for p2p network protocol (IPv4). Default: 0.0.0.0" +complete -c monerod -l p2p-bind-ipv6-address -r -d "Interface for p2p network protocol (IPv6). Default: ::" +complete -c monerod -l p2p-bind-port -r -d "Port for p2p network protocol (IPv4). Default: 18080, 28080 if 'testnet', 38080 if 'stagenet'" +complete -c monerod -l p2p-bind-port-ipv6 -d "Port for p2p network protocol (IPv6). Default: 18080, 28080 if 'testnet', 38080 if 'stagenet'" +complete -c monerod -l p2p-use-ipv6 -d "Enable IPv6 for p2p" +complete -c monerod -l p2p-ignore-ipv4 -d "Ignore unsuccessful IPv4 bind for p2p" +complete -c monerod -l p2p-external-port -r -d "External port for p2p network protocol (if port forwarding used with NAT). Default: 0" +complete -c monerod -l allow-local-ip -d "Allow local ip add to peer list, mostly in debug purposes" +complete -c monerod -l add-peer -r -d "Manually add peer to local peerlist" +complete -c monerod -l add-priority-node -r -d "Specify list of peers to connect to and attempt to keep the connection open" +complete -c monerod -l add-exclusive-node -r -d "Specify list of peers to connect to only. If this option is given the options add-priority-node and seed-node are ignored" +complete -c monerod -l seed-node -r -d "Connect to a node to retrieve peer addresses, and disconnect" +complete -c monerod -l tx-proxy -r -d "Send local txes through proxy: ,[,max_con nections][,disable_noise] i.e. \"tor,127.0.0.1:9050,100,disable_noise\"" +complete -c monerod -l anonymous-inbound -r -d ",<[bind-ip:]port>[,max_connections] i.e. \"x.onion,127.0.0.1:18083,100\"" +complete -c monerod -l ban-list -r -F -d "Specify ban list file, one IP address per line" +complete -c monerod -l hide-my-port -d "Do not announce yourself as peerlist candidate" +complete -c monerod -l no-sync -d "Don't synchronize the blockchain with other peers" +complete -c monerod -l enable-dns-blocklist -d "Apply realtime blocklist from DNS" +complete -c monerod -l no-igd -d "Disable UPnP port mapping" +complete -c monerod -l igd -r -a "Enabled disabled enabled" -d "UPnP port mapping. Default: delayed" +complete -c monerod -l out-peers -r -d "Set max number of out peers. Default: -1" +complete -c monerod -l in-peers -r -d "Set max number of in peers. Default: -1" +complete -c monerod -l tos-flag -r -d "Set TOS flag. Default: -1" +complete -c monerod -l limit-rate-up -r -d "Set limit-rate-up [kB/s]. Default: 2048" +complete -c monerod -l limit-rate-down -r -d "Set limit-rate-down [kB/s]. Default: 8192" +complete -c monerod -l limit-rate -r -d "Set limit-rate [kB/s]. Default: -1" +complete -c monerod -l pad-transactions -d "Pad relayed transactions to help defend against traffic volume analysis" +complete -c monerod -l max-connections-per-ip -r -d "Maximum number of connections allowed from the same IP address. Default: 1" +complete -c monerod -l rpc-bind-port -r -d "Port for RPC server. Default: 18081, 28081 if 'testnet', 38081 if 'stagenet'" +complete -c monerod -l rpc-restricted-bind-port -r -d "Port for restricted RPC server" +complete -c monerod -l restricted-rpc -d "Restrict RPC to view only commands and do not return privacy sensitive data in RPC calls" +complete -c monerod -l bootstrap-daemon-address -r -d "URL of a 'bootstrap' remote daemon that the connected wallets can use while this daemon is still not fully synced. Use 'auto' to enable automatic public nodes discovering and bootstrap daemon switching" +complete -c monerod -l bootstrap-daemon-login -r -d "Specify username:password for the bootstrap daemon login" +complete -c monerod -l bootstrap-daemon-proxy -r -d ": socks proxy to use for bootstrap daemon connections" +complete -c monerod -l rpc-bind-ip -r -d "Specify IP to bind RPC server. Default: 127.0.0.1" +complete -c monerod -l rpc-bind-ipv6-address -r -d "Specify IPv6 address to bind RPC server. Default: ::1" +complete -c monerod -l rpc-restricted-bind-ip -r -d "Specify IP to bind restricted RPC server. Default: 127.0.0.1" +complete -c monerod -l rpc-restricted-bind-ipv6-address -r -d "Specify IPv6 address to bind restricted RPC server. Default: ::1" +complete -c monerod -l rpc-use-ipv6 -d "Allow IPv6 for RPC" +complete -c monerod -l rpc-ignore-ipv4 -d "Ignore unsuccessful IPv4 bind for RPC" +complete -c monerod -l rpc-login -d "Specify username[:password] required for RPC server" +complete -c monerod -l confirm-external-bind -d "Confirm rpc-bind-ip value is NOT a loopback (local) IP" +complete -c monerod -l rpc-access-control-origins -r -d "Specify a comma separated list of origins to allow cross origin resource sharing" +complete -c monerod -l rpc-ssl -x -a "enabled disabled autodetect" -d "Enable SSL on RPC connections. Default: autodetect" +complete -c monerod -l rpc-ssl-private-key -r -k -a "(__fish_complete_suffix .pem)" -d "Path to a PEM format private key" +complete -c monerod -l rpc-ssl-certificate -r -k -a "(__fish_complete_suffix .pem)" -d "Path to a PEM format certificate" +complete -c monerod -l rpc-ssl-ca-certificates -r -F -d "Path to file containing concatenated PEM format certificate(s) to replace system CA(s)." +complete -c monerod -l rpc-ssl-allowed-fingerprints -r -d "List of certificate fingerprints to allow" +complete -c monerod -l rpc-ssl-allow-chained -d "Allow user (via --rpc-ssl-certificates) chain certificates" +complete -c monerod -l disable-rpc-ban -d "Do not ban hosts on RPC errors" +complete -c monerod -l rpc-ssl-allow-any-cert -d "Allow any peer certificate" +complete -c monerod -l rpc-payment-address -r -d "Restrict RPC to clients sending micropayment to this address" +complete -c monerod -l rpc-payment-difficulty -r -d "Restrict RPC to clients sending micropayment at this difficulty. Default: 1000" +complete -c monerod -l rpc-payment-credits -r -d "Restrict RPC to clients sending micropayment, yields that many credits per payment. Default: 100" +complete -c monerod -l rpc-payment-allow-free-loopback -d "Allow free access from the loopback address (ie, the local host)" From 0093bc230a204deee8599c4993330ffb6649b320 Mon Sep 17 00:00:00 2001 From: Jeffrey Ryan Date: Mon, 16 May 2022 01:05:28 -0500 Subject: [PATCH 35/35] Focus Doxygen documentation Right now Doxygen is documenting everything in the repo including submodules, everything in contrib, util, tests, etc. This bogs down the documentation to the point where it is very hard to navigate. I think it would be a good move to focus on documenting only the main C++ code which is specific to this repo. Right now this means documenting `src/` (without SUPERCOP), `contrib/epee/`, `external/easylogging++`. After this commit, Doxygen went from running >6000 graphs to about 2200 graphs. --- Doxyfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Doxyfile b/Doxyfile index 81b2009865b..9ce0d2247f1 100644 --- a/Doxyfile +++ b/Doxyfile @@ -754,7 +754,7 @@ WARN_LOGFILE = # spaces. # Note: If this tag is empty the current directory is searched. -INPUT = . +INPUT = contrib/epee external/easylogging++ src # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses @@ -805,7 +805,7 @@ EXCLUDE_SYMLINKS = NO # Note that the wildcards are matched against the file with absolute path, so to # exclude all test directories for example use the pattern */test/* -EXCLUDE_PATTERNS = */build/* */contrib/depends/* +EXCLUDE_PATTERNS = */src/crypto/crypto_ops_builder/ref10* # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the