aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2019-02-04[Docs] Small updates to getrawtransaction descriptionAmiti Uttarwar
2019-02-04remove deprecated mentions of signrawtransaction from fundraw helpGregory Sanders
2019-02-04qt: Pre-0.18 split-off translations updateWladimir J. van der Laan
- Update transifex slug - Mention update of MSVC build in `doc/translation_process.md` - Do a `make translate` to update English translations - Pull current translations from transifex
2019-02-04gui: Show indeterminate progress dialog while opening wallletJoão Barbosa
2019-02-04gui: Add OpenWalletActivityJoão Barbosa
2019-02-04wallet: Close wallet env lock fileJoão Barbosa
Close .walletlock file when a BerkeleyEnvironment is deleted.
2019-02-04wallet: Close dbenv error file db.logJoão Barbosa
The error file db.log is opened by BerkeleyEnvironment instance and should be closed after dbenv is closed.
2019-02-04interfaces: Avoid interface instance if wallet is nullJoão Barbosa
2019-02-04gui: Add thread to run background activity in WalletControllerJoão Barbosa
2019-02-04gui: Add Open Wallet menuJoão Barbosa
2019-02-04gui: Add openWallet and getWalletsAvailableToOpen to WalletControllerJoão Barbosa
2019-02-04interfaces: Add loadWallet to NodeJoão Barbosa
2019-02-04wallet: Factor out LoadWalletJoão Barbosa
2019-02-04Merge #15322: wallet: Add missing cs_db lockWladimir J. van der Laan
712d35bc563ac7de0b7dfc3a35fc48dc6448fa6a wallet: Add missing cs_db lock (João Barbosa) Pull request description: Without this lock `BerkeleyEnvironment::~BerkeleyEnvironment` and `GetWalletEnv` would race for `g_dbenvs`. This wasn't detected before because thread safety analysis does not check constructors and destructors. Reference: http://releases.llvm.org/5.0.2/tools/clang/docs/ThreadSafetyAnalysis.html#no-checking-inside-constructors-and-destructors Tree-SHA512: 350cb2b991ca699a6bca85f87c82c38f0814484c8ccb0d7d83cb3bff9afcf60dd32b2a9554a9e72eb5803bfad8b6970fe7da618b39be5889178b86faa1b74124
2019-02-04Merge #15324: test: Make bloom tests deterministicWladimir J. van der Laan
fae169c95e09ddf068dcaebc8170c4f41b02cf66 test: Make bloom tests deterministic (MarcoFalke) Pull request description: non-deterministic tests are useless, since a failing test could not be reproduced unless the seed is known. Tree-SHA512: 4f634ff0c6adf663444f1ac504f6dbceaa46b78d697b840531977ba30006453ac559d5c21cc3eaef6d92b87d46008a34b0db6331ea3318001987fcfaec634acf
2019-02-03Use RdSeed when available, and reduce RdRand loadPieter Wuille
This introduces support for autodetecting and using the RdSeed instruction. In addition: * In SeedFast, only 64 bits of entropy are generated through RdRand (256 was relatively slow). * In SeedStartup, 256 bits of entropy are generated, using RdSeed (preferably) or RdRand (otherwise).
2019-02-03Check m_internals in UnregisterValidationInterfaceJoão Barbosa
When a wallet is created it is registered in the validation interface (in CWallet::CreateWalletFromFile) but it is not immediately added to the wallets list. If a shutdown is requested before AddWallet (case more evident when -rescan is set) then m_internals can be released (in Shutdown -> UnregisterBackgroundSignalScheduler) before the wallet and then ReleaseWallet would call UnregisterValidationInterface with m_internals already released.
2019-02-03gui: Fix m_node.startShutdown() orderJoão Barbosa
This change forwards the shutdown request on the GUI (close the application for instace) to the node as soon as possible. This way the GUI doesn't have to wait for long operations to complete (rescan the wallet for instance), instead those operations detect the shutdown request and abort/interrupt.
2019-02-03gui: Expose BitcoinGUI::unsubscribeFromCoreSignalsJoão Barbosa
Move only change that makes unsubscribeFromCoreSignals public. It must be called if the event loop is not running otherwise core signals handlers can deadlock.
2019-02-03gui: Fix WalletController deletionJoão Barbosa
The wallet controller instanced must be deleted after the window instance since it is used there.
2019-02-03speed up Unserialize_impl for prevectorAkio Nakamura
The unserializer for prevector uses resize() for reserve the area, but it's prefer to use reserve() because resize() have overhead to call its constructor many times. However, reserve() does not change the value of "_size" (a private member of prevector). This PR introduce resize_uninitialized() to prevector that similar to resize() but does not call constructor, and added elements are explicitly initialized in Unserialize_imple(). The changes are as follows: 1. prevector.h Add a public member function named 'resize_uninitialized'. This function processes like as resize() but does not call constructors. So added elemensts needs explicitly initialized after this returns. 2. serialize.h In the following two function: Unserialize_impl(Stream& is, prevector<N, T>& v, const unsigned char&) Unserialize_impl(Stream& is, prevector<N, T>& v, const V&) Calls resize_uninitialized() instead of resize() 3. test/prevector_tests.cpp Add a test for resize_uninitialized().
2019-02-03tests: Make updatecoins_simulation_test deterministicpracticalswift
2019-02-03Merge #15263: Descriptor expansions only need pubkey entries for PKH/WPKHMeshCollider
11e0fd8d6 Descriptor expansions only need pubkey entries for PKH/WPKH (Pieter Wuille) Pull request description: Currently, calling `Expand` on a `Descriptor` object will populate the output FlatSigningProvider with all public keys involved in the descriptor. This is overkill, as pubkey entries are only needed when the lookup of a public key based on its hash is desired (which is the case for `pkh`, `wpkh`, and `combo` descriptors). Fix this by pushing the population of pubkey entries down into the individual descriptor implementation's `MakeScript` function, instead of doing it generically. This should make it easier to implement #14491 without importing P2PKH outputs for the individual public keys listed inside a multisig. Tree-SHA512: 5bc7e9bd29f1b3bc63514803e9489b3bf126bfc177d46313aa9eeb98770ec61a97b55bd8ad4e2384154799f24b1bc4183bfdb4708b2ffa6e37ed2601a451cabc
2019-02-02test: Make bloom tests deterministicMarcoFalke
2019-02-02Make PID file creating errors fatalHennadii Stepanov
2019-02-02Improve PID file removing errors loggingHennadii Stepanov
2019-02-01Rename Chain getLocator -> getTipLocatorRussell Yanofsky
Suggested https://github.com/bitcoin/bitcoin/pull/14711#discussion_r252044389
2019-02-01Drop redundant get_value_orRussell Yanofsky
Suggested https://github.com/bitcoin/bitcoin/pull/14711#discussion_r252041954
2019-02-01Fix ScanForWalletTransactions start_block commentRussell Yanofsky
Suggested https://github.com/bitcoin/bitcoin/pull/14711#discussion_r252036436
2019-02-01wallet: Add missing cs_db lockJoão Barbosa
Without this lock BerkeleyEnvironment::~BerkeleyEnvironment and GetWalletEnv would race for g_dbenvs. This wasn't detected before because thread safety analysis does not check constructors and destructors.
2019-02-01Document rescanblockchain returned stop_height being nullRussell Yanofsky
Suggested https://github.com/bitcoin/bitcoin/pull/14711#discussion_r252031485
2019-02-01doc: Add cs_main lock annotations for mapBlockIndexpracticalswift
2019-02-01Merge #15308: build: Restore compatibility with older boostMarcoFalke
119d360aab travis: Document whether functional tests are run in the job name (Ben Woosley) 64f28545e3 Revert "travis: Compile trusty with depends for now" (Ben Woosley) 267eac00f9 Prefer boost::optional#get_value_or over #value_or (Ben Woosley) 1971f5ba04 Piecewise construct to avoid invalid construction (Ben Woosley) Pull request description: In light of #14979, I realized that only qt 5.5+ was being tested under CI, while compatibility lists 5.2+. In #15276, Marco added Trusty to CI, building with depends. This changes that build to system libraries, in order to ensure ongoing compatibility with our claimed minimum required versions. Fixes #14983, previously open as #14998 Tree-SHA512: 6cff5e28c756ecb8bf797c8f6eb77c1944ba61a8dd6d7d4984e63eef384f6429dc79c505da3241c05b9c4db31c72b2a9846c7365aba9280f2e0620e5f3998d07
2019-02-01Add suggested rescanblockchain commentsRussell Yanofsky
From https://github.com/bitcoin/bitcoin/pull/14711#discussion_r252043990
2019-02-01Update ScanForWalletTransactions result commentRussell Yanofsky
Suggested https://github.com/bitcoin/bitcoin/pull/14711#discussion_r252038666
2019-02-01Rename ScanResult stop_block fieldRussell Yanofsky
Avoid confusion with stop_block argument as suggested https://github.com/bitcoin/bitcoin/pull/14711#discussion_r252038449
2019-02-01Merge #15235: Do not import private keys to wallets with private keys disabledWladimir J. van der Laan
e6c58d3b014ab8ef5cca4be68764af4b79685fcb Do not import private keys to wallets with private keys disabled (Andrew Chow) b5c5021b644731d14a6ef04961320a99466f035a Refactor importwallet to extract data from the file and then import (Andrew Chow) 1f77f6754ce724493b0cb084ae0b35107d58605f tests: unify RPC argument to cli argument conversion and handle dicts and lists (Andrew Chow) Pull request description: Fixes a bug where private keys could be imported to wallets with private keys disabled. Now every RPC which can import private keys checks for whether the wallet has private keys are disabled and errors if it is. Also added an belt-and-suspenders check to `AddKeyPubkeyWithDB` to have it assert that the wallet has private keys enabled. Tree-SHA512: 5cd04febce9aa2bd9bfd02f312c6ff8705e37278cae59efd3895f6d6e2f1b477aefd297e2dd0860791bdd3d4f3cad8eb1a404f8f3d4e2035b91314ad2c1028ae
2019-01-31Prefer boost::optional#get_value_or over #value_orBen Woosley
The latter is not defined in the earliest supported version of boost, 1.47. https://www.boost.org/doc/libs/1_47_0/libs/optional/doc/html/boost_optional/detailed_semantics.html https://travis-ci.org/bitcoin/bitcoin/jobs/486674823
2019-01-31Piecewise construct to avoid invalid constructionBen Woosley
In CMainSignals::RegisterWithMempoolSignals running under Ubuntu 14.04 (QT 5.2), absent piecewise construction this fails to create the pair because the argument is a connection, which is converted into a non-copyable scoped_connection. validationinterface.cpp:80:186: required from here /usr/include/boost/signals2/connection.hpp:234:7: error: ‘boost::signals2::scoped_connection::scoped_connection(const boost::signals2::scoped_connection&)’ is private scoped_connection(const scoped_connection &other); ^ In file included from /usr/include/c++/4.8/utility:70:0, from /usr/include/c++/4.8/algorithm:60, from ./prevector.h:13, from ./script/script.h:10, from ./primitives/transaction.h:11, from ./validationinterface.h:9, from validationinterface.cpp:6: /usr/include/c++/4.8/bits/stl_pair.h:134:45: error: within this context : first(std::forward<_U1>(__x)), second(__y) { } https://travis-ci.org/bitcoin/bitcoin/jobs/473689141#L2172
2019-01-31Do not import private keys to wallets with private keys disabledAndrew Chow
2019-01-31Refactor importwallet to extract data from the file and then importAndrew Chow
Instead of importing keys and scripts as each line in the file is read, first extract the data then import them.
2019-01-31Merge #15299: Fix assertion in CKey::SignCompactWladimir J. van der Laan
3617f117394285c87c395a0ccc92941977f97019 Fix assertion in CKey::SignCompact (João Barbosa) Pull request description: Fixes #15286. Tree-SHA512: b39b6f26f87cf1850b13f625ab6de963937b6ecb5b6d4ac4932134f0491a6c0fa61c6d6e6980e8b1770775578dc365fdd1b6ba426bba1f7c23430f68b3a2339a
2019-01-31Merge #11911: Free BerkeleyEnvironment instances when not in useWladimir J. van der Laan
14bc2a17dd03ccd89f65a302328763ff22c710c2 Trivial: add doxygen-compatible comments relating to BerkeleyEnvironment (Pierre Rochard) 88b1d956fe3e38f2d2dd805feee9dadb0be9e8a9 Tests: add unit tests for GetWalletEnv (Pierre Rochard) f1f4bb7345b90853ec5037478173601035593d26 Free BerkeleyEnvironment instances when not in use (Russell Yanofsky) Pull request description: Instead of adding BerkeleyEnvironment objects permanently to the g_dbenvs map, use reference counted shared pointers and remove map entries when the last BerkeleyEnvironment reference goes out of scope. This change was requested by @TheBlueMatt and makes code that sets up mock databases cleaner. The mock database environment will now go out of scope and be reset on destruction so there is no need to call BerkeleyEnvironment::Reset() during wallet construction to clear out prior state. This change does affect bitcoin behavior slightly. On startup, instead of same wallet environments staying open throughout VerifyWallets() and OpenWallets() calls, VerifyWallets() will open and close an environment once for each wallet, and OpenWallets() will create its own environment(s) later. Tree-SHA512: 219d77a9e2268298435b86088f998795e059fdab1d2050ba284a9ab8d8a44961c9b5cf96e94ee521688108d23c6db680e3e3a999b8cb2ac2a8590f691d50668b
2019-01-31Merge #13926: [Tools] bitcoin-wallet - a tool for creating and managing ↵MarcoFalke
wallets offline 3c3e31c3a4 [tests] Add wallet-tool test (João Barbosa) 49d2374acf [tools] Add wallet inspection and modification tool (Jonas Schnelli) Pull request description: Adds an offline tool `bitcoin-wallet-tool` for wallet creation and maintenance. Currently this tool can create a new wallet file, display information on an existing wallet, and run the salvage and zapwallettxes maintenance tasks on an existing wallet. It can later be extended to support other common wallet maintenance tasks. Doing wallet maintenance tasks in an offline tool makes much more sense (and is potentially safer) than having to spin up a full node. Tree-SHA512: 75a28b8a58858d9d76c7532db40eacdefc5714ea5aab536fb1dc9756e2f7d750d69d68d59c50a68e633ce38fb5b8c3e3d4880db30fe01561e07ce58d42bceb2b
2019-01-31Fix assertion in CKey::SignCompactJoão Barbosa
2019-01-31Merge #15225: GUI: Change the receive button to respond to keypool state ↵Wladimir J. van der Laan
changing 2bc4c3eaf96f5f8490fc79280422916c5d14cde3 Notify the GUI that the keypool has changed to set the receive button (Andrew Chow) 14bcdbe09cffaef9bcc51dd9de1645db3f0a93db Check for more than private keys disabled to show receive button (Andrew Chow) Pull request description: Currently the Receive button in the GUI is displayed enabled or disabled by the initial state of the wallet when the wallet is first loaded. The button is only enabled or disabled depending on whether the disable private keys flag is set when the wallet is loaded. However, future changes to the wallet means that this initial state and check may no longer be accurate. #14938 introduces empty wallets which do not have private keys. An empty wallet that is loaded should have the Receive button disabled, and then it should become enabled once `sethdseed` is used so that a keypool can be generated and new keys generated. Likewise, with #14075, a wallet can be loaded with no keypool initially, so the button should be disabled. Later, public keys can be imported into the keypool, at which time the button should become enabled. When the keypool runs out again (no new keys are generated as the keypool only consists of imports), the button should become disabled. This PR makes it so that the button becomes enabled and disabled as the keypool state changes. The check for whether to enable or disable the receive button has changed to checking whether it is possible to get new keys. It now checks for whether the wallet has an HD seed and, if not, whether the private keys are disabled. When an action happens which would make it possible for a new address to be retrieved or make it possible for a no more addresses to be retrieved, a signal is emitted which has the GUI recheck the conditions for the Receive button. These actions are setting a new HD seed, topping up the keypool, retrieving a key from the keypool, and returning a key to the keypool. Tree-SHA512: eff15a5337f4c64ecd7169414fb47053c04f6a0f0130341b6dd9799ac4d79f451e25284701c668971fca33f0909d5352a474a2c12349375bedfdb59b63077d50
2019-01-31Merge #15272: doc: correct logging return type and RPC exampleWladimir J. van der Laan
e1c27da30378940095806b2bf9989b162ed8ac07 doc: correct logging rpc return type and example (fanquake) Pull request description: Logging status is returned as a bool. ``` src/bitcoin-cli logging "[\"all\"]" "[\"http\"]" { "net": true, "tor": true, "mempool": true, "http": false, "bench": true, "zmq": true, "db": true, "rpc": true, "estimatefee": true, "addrman": true, "selectcoins": true, "reindex": true, "cmpctblock": true, "rand": true, "prune": true, "proxy": true, "mempoolrej": true, "libevent": true, "coindb": true, "qt": true, "leveldb": true } ``` Also corrects the RPC example so that `libevent` logging will actually be turned off. Tree-SHA512: 2de7130df51688d2d6636c12fd56326362794118a10efc8100f0bf541a7da00a12a6cd9d75e599a104513a050bbe49b418ea460ee8033ac6cf6ffb8e8e9140d6
2019-01-31Explain that unused mempool memory is added to -dbcacheSjors Provoost
2019-01-30Merge #15292: Remove 'boost::optional'-related false positive ↵Wladimir J. van der Laan
-Wmaybe-uninitialized warnings on GCC compiler 2d483142a7051389afe74c57a216843e6306f1a8 Remove 'boost::optional'-related gcc warnings (Hennadii Stepanov) Pull request description: #14711 introduced some warnings when building with gcc compiler. See: - https://github.com/bitcoin/bitcoin/pull/14711#issuecomment-454760017 by @laanwj - https://github.com/bitcoin/bitcoin/pull/14711#pullrequestreview-193702611 by @ryanofsky This gcc [issue](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47679) has been known since version 4.6.0 and last updated in 2017. From the boost [docs](https://www.boost.org/doc/libs/1_69_0/libs/optional/doc/html/boost_optional/quick_start/optional_automatic_variables.html): > The default constructor of `optional` creates an _uninitialized_ `optional` object. Also: [False positive with -Wmaybe-uninitialized](https://www.boost.org/doc/libs/1_69_0/libs/optional/doc/html/boost_optional/tutorial/gotchas/false_positive_with__wmaybe_uninitialized.html) ([pointed out](https://github.com/bitcoin/bitcoin/pull/15292#issuecomment-459063170) by @Empact) This PR removes these warnings. cc: @Empact @practicalswift Tree-SHA512: 752ae3c3ca6282bbf98726236fbc3069ab9d1aee57ae2ec2668b32e4541e7bc1acb15b7d6fa9e2b6daf1ec29c0987a1053ee1ca0f523b71367ff911221c58c94
2019-01-30[tools] Add wallet inspection and modification toolJonas Schnelli
This commit adds wallet-tool, a tool for creating and interacting with wallet files. Original implementation was by Jonas Schnelli <dev@jonasschnelli.ch> with modifications by John Newbery <john@johnnewbery.com> MSVC files were provided by Chun Kuan Lee <ken2812221@gmail.com>: build: Add MSVC project files for bitcoin-wallet-tool