Permalink
Commits on Jul 28, 2017
  1. Merge #10885: Reject invalid wallets

    d84e78e [wallet] Specify wallet name in wallet loading errors (John Newbery)
    a6da027 Reject invalid wallet files (João Barbosa)
    3ef77a0 Reject duplicate wallet filenames (João Barbosa)
    
    Pull request description:
    
      This PR prevents loading the same wallet more than once in a multi wallet scenario. It also prevents loading with invalid files: non regular files or symlinks.
    
    Tree-SHA512: 45bf814096bb788db1c76ff334e679a10686cee7d9c8cd48fe5d924031353ace271f6fb0d4af49a34246d336945515c176920a552be7b9fbe07ab8e00e5f6e5e
    laanwj committed Jul 28, 2017
Commits on Jul 27, 2017
  1. Merge #10931: Fix misleading "Method not found" multiwallet errors

    df389bc Change wallet method disabled error text (Russell Yanofsky)
    e526b3d Fix misleading "Method not found" multiwallet errors (Russell Yanofsky)
    
    Pull request description:
    
      Raise RPC_WALLET_NOT_SPECIFIED instead of RPC_METHOD_NOT_FOUND when a required
      wallet filename was not specified in an RPC call.
    
      Also raise more specific RPC_WALLET_NOT_FOUND error instead of
      RPC_INVALID_PARAMETER in case an invalid wallet was specified, for consistency.
    
    Tree-SHA512: 6a8d885283f69bcfc28f2e08ac03eff02f9f8160a312ce2a90d868aa52533434fc0b4c4ab86547c2f09392338956df915637eaf7136a4fc105e6c8179f2d0ac8
    laanwj committed Jul 27, 2017
  2. Merge #10892: Replace traditional for with ranged for in block and tr…

    …ansaction primitives
    
    
    72f0060 Replace traditional for with ranged for in primitives (Dag Robole)
    
    Pull request description:
    
      Replace traditional for with ranged for in block and transaction primitives to improve readability
    
    Tree-SHA512: c0fff603d2939149ca48b6aa72b59738a3658d49bd58b2d4ffbc85bdb774d8d5bb808fe526fe22bb9eb214de632834d373e2aab44f6019a83c0b09440cea6528
    laanwj committed Jul 27, 2017
  3. Merge #10501: remove some unused functions

    f228b8e remove some unused functions (Marko Bencun)
    
    Pull request description:
    
      Identified with `cppcheck --enable=unusedFunction .`.
    
       - GetSendBufferSize()'s last use removed in
         991955e
       - SetPort()'s last use removed in
         7e195e8
       - GetfLargeWorkInvalidChainFound() was introduced in
         e3ba0ef and never used
    
    Tree-SHA512: ea8e5498bec981e42e1342c171c37723c2f5e575c7d6c1a524d9c6cd9b332bdd0d84fddf9e14ca011bb49fb82bd037386382c9afc546b3c2231ae548358bd4f4
    laanwj committed Jul 27, 2017
Commits on Jul 26, 2017
  1. Merge #10912: [tests] Fix incorrect memory_cleanse(…) call in crypto_…

    …tests.cpp
    
    
    065039d [tests] Fix incorrect memory_cleanse(…) call in crypto_tests.cpp (practicalswift)
    
    Pull request description:
    
      `chKey` and `chIV` are pointers, not arrays :-)
    
      Probably the result of copy-pasting of old code where the code was operating on arrays instead of pointers.
    
      If I'm reading the code correctly the absence/presence of these `memory_cleanse(…)` calls won't alter the outcome of the test in question (`TestPassphraseSingle`) even if fixed. Therefore removing.
    
    Tree-SHA512: a053b2817bedf6ef889744e546ce9a0f165dee94aef6850d9d6a6bb05b0018789597371ecf154a4aec8588c0ef5626ef08c23c35e35927f6b0497b5f086146fe
    laanwj committed Jul 26, 2017
  2. Merge #10824: Avoid unnecessary work in SetNetworkActive

    a2420ae Avoid unnecessary work in SetNetworkActive (João Barbosa)
    
    Pull request description:
    
      This PR adds an early return to avoid unnecessary notifications when the status doesn't change.
    
    Tree-SHA512: 85d05ca6fa36cb581f94bc154d08bd72cd53f6a857173c6fb2f184058f9c0208c4cf5e5d196825a78339902d8f256688eb6793f99abc7be9c7cfac85136180d9
    laanwj committed Jul 26, 2017
  3. Merge #10917: developer-notes: add reference to snake_case and Pascal…

    …Case
    
    
    4a7a4ff developer-notes: add reference to snake_case and PascalCase (Marko Bencun)
    
    Pull request description:
    
      CamelCase is ambiguous as it refers to both lowerCamelCase and
      UpperCamelCase, whereas PascalCase is only UpperCamelCase.
    
    Tree-SHA512: 8eebc42931f10ed8fd314c6b8a2a936aa18fce358a50bb8ae580404fb06a97b8fece12c0398170a9a8ddce250d1e79ece3774cf8a36ac604d67b2797b54aa005
    laanwj committed Jul 26, 2017
  4. Merge #10854: Avoid using sizes on non-fixed-width types to derive pr…

    …otocol constants.
    
    
    095b917 Avoid using sizes on non-fixed-width types to derive protocol constants. (Gregory Maxwell)
    
    Pull request description:
    
      Thanks to awemany for pointing this out.
    
      This replaces #10172 which appears to be abandoned, but uses the constants as requested on that PR.
    
    Tree-SHA512: 032c0d75b3aaf807a7d0c7fb8ff5515acc45ad58bd00fe81413f900fe02bad900534a970403b9bb568e132c9eddea6043e958daf625e8acc84375bd41ee2e2ef
    laanwj committed Jul 26, 2017
  5. Merge #10655: Properly document target_confirmations in listsinceblock

    9f8a46f Properly document target_confirmations in listsinceblock (Ryan Havar)
    
    Pull request description:
    
      There seems to be some misunderstandings about this, but it's a heavily used function so I'd like to make sure the docs are clear about how it works.
    
      For a later issue:
      * Change the default of target_confirmations to 6  (1 is a pretty silly default)
      * Change the name of target_confirmations (it's really a horrible name)
    
    Tree-SHA512: a2fba2fab30019cea9db56cd7e31de95ba31090617ab336bdf130f9591bfcf3fc5fbd9e7e1e40b6c7bd2f74b9b4658afb1fdc7fc44e1f79520d1319758982a1c
    laanwj committed Jul 26, 2017
  6. Merge #10914: Add missing lock in CScheduler::AreThreadsServicingQueue()

    a56f8b0 Add missing lock in CScheduler::AreThreadsServicingQueue() (Matt Corallo)
    
    Pull request description:
    
      Not an actual bug as this is only used in asserts right now, but
      nice to not have a missing lock.
    
    Tree-SHA512: 7e542b150a0be716783e196493d239f2ad15e5376abf54b67d735dc3ef1b10849c090337b849f530c9f7497ddcfb8389b47d64a5dcf6382b7d38838f88cc1100
    laanwj committed Jul 26, 2017
  7. Merge #10899: [test] Qt: Use _putenv_s instead of setenv on Windows b…

    …uilds
    
    
    0be03c7 Qt: Use _putenv_s instead of setenv on Windows builds (Brian McMichael)
    
    Pull request description:
    
      Fixes #10836
    
      Error message I would get on `make`:
      ```
      ...
        CXXLD    bench/bench_bitcoin.exe
        OBJCXXLD qt/bitcoin-qt.exe
      qt/test/test_main.cpp: In function ‘int main(int, char**)’:
      qt/test/test_main.cpp:64:43: error: ‘setenv’ was not declared in this scope
           setenv("QT_QPA_PLATFORM", "minimal", 0);
                                                 ^
      make[2]: *** [qt/test/qt_test_test_bitcoin_qt-test_main.o] Error 1
      make[2]: *** Waiting for unfinished jobs....
      make[2]: Leaving directory `/home/bmcmichael/Projects/bcoin/src'
      make[1]: *** [all-recursive] Error 1
      make[1]: Leaving directory `/home/bmcmichael/Projects/bcoin/src'
      make: *** [all-recursive] Error 1
      ```
    
      `setenv` function is not available from the Microsoft runtime library. Need to use `_putenv_s` instead.
    
      This solution tells the compiler to use `_putenv_s` on `WIN32` compilation (Note: this also works on 64-bit Windows instances.) and `setenv` everywhere else.
    
      I've tested builds on Windows 10 x64 and Ubuntu 16.04 with this code.
    
    Tree-SHA512: d53c996c890e3c6f22b4f2dcca718bef9168f19a6d4a29b8ff13391bfc0c8ea9c1cd16782b47c25b156dcbdff18bb19e23bfd5f6fefb1f373c9d5454a13fc969
    laanwj committed Jul 26, 2017
Commits on Jul 25, 2017
  1. Merge #10799: Prevent user from specifying conflicting parameters to …

    …fundrawtx
    
    
    99c7fc3 Prevent user from specifying conflicting parameters to fundrawtx (Matt Corallo)
    
    Pull request description:
    
      estimate_mode/conf_target both are overridden by feeRate, so should
      not be specified together with feeRate.
    
      Based on #10706
    
    Tree-SHA512: 8ccd08575fd1f2a0d45112538ffbbc73983ee172963230b0cc7ac41d13c6f3c740917f82b212c41ded3a64d873452e7f2c7af49f3b47cab897f8e85117f21333
    laanwj committed Jul 25, 2017
  2. Merge #10927: test: Make sure wallet.backup is created in temp path

    88af227 test: Make sure wallet.backup is created in temp path (Wladimir J. van der Laan)
    
    Pull request description:
    
      This assures that we don't overwrite a random file called `wallet.backup` that happens to be in the current directory. It also assures that the temporary file will be cleaned up.
    
      Noticed by Evan Klitzke, came up in discussion here: #10880 (comment)
    
    Tree-SHA512: 2d2c23c2deba26a1130a29279b3d8565b277eb90a98a6a6d7dd4948f5cbbd5ec5453b3082e3e4e21e0e2423e642bbd2f4433e4c21032d3c8cff27ee35e87e7e7
    laanwj committed Jul 25, 2017
  3. Revert "[tests] Allow tests to pass when stderr is non-empty"

    This reverts commit d64ac3f after further discussion.
    
    Tree-SHA512: db1e4ff5b17bcd6fd000a3d21aa74f6b7e4c194e0663c1896a100612671910a7cdadd896b59642420ea016598895b54a8468914847ebefef105a3c47c311d4b2
    laanwj committed Jul 25, 2017
  4. test: Make sure wallet.backup is created in temp path

    This assures that we don't overwrite a random file called
    `wallet.backup` that happens to be in the current directory. It also
    assures that the temporary file will be cleaned up.
    
    Noticed by Evan Klitzke, came up in discussion here:
    #10880 (comment)
    laanwj committed Jul 25, 2017
  5. Merge #10508: Run Qt wallet tests on travis

    4f92b5f Run Qt wallet tests on travis (Russell Yanofsky)
    
    Pull request description:
    
      Currently these test failures are not caught by travis leading to bugs like:
      #10506
    
    Tree-SHA512: db1e4ff5b17bcd6fd000a3d21aa74f6b7e4c194e0663c1896a100612671910a7cdadd896b59642420ea016598895b54a8468914847ebefef105a3c47c311d4b2
    laanwj committed Jul 25, 2017
  6. Merge #10870: [Qt] Use wallet 0 in rpc console if running with multip…

    …le wallets
    
    
    9737572 [Qt] Use wallet 0 in rpc console if running with multiple wallets (Jonas Schnelli)
    
    Pull request description:
    
      Current master with multiwallet results in accessing wallet 0 in QT (send / receive / tx history / etc.), **but** the RPC console cannot access that wallet (only non-wallet commands work).
    
      This is a quick solution to re-allow accessing the same wallet (Index 0) via RPC console in multiwallet.
    
      The solutions design is not "state of the art" (should go over WalletModel). Ideally we work on an overall multiwallet support for the GUI (which then would remove this change).
    
      I think we should consider this as a bugfix.
    
    Tree-SHA512: 16cf844662248ffd3d82c7d0cbe5879f231fbc7d4f5a4aab4180a9087018519c98301e4ac311eaec2cc39dddf25d3edf9be99a6622ea682c138a820a9b21fd0c
    laanwj committed Jul 25, 2017
  7. Merge #10789: Punctuation/grammer fixes in rpcwallet.cpp

    a5ecaf1 Fix misspellings and remove safety verbiage (Steven D. Lander)
    
    Pull request description:
    
      Standardizing punctuation on CLI output and also including a few fixes for grammer.  This PR is for text only changes and includes no code edits.
    
    Tree-SHA512: afde551bf1212838822188b6723f2bf1b7222decfa1cd7aa6b04967489108a29f80833af6059252af028c53437755f258275af0614e0d4d0311e09421cd8e131
    laanwj committed Jul 25, 2017
Commits on Jul 24, 2017
  1. Merge #10865: Move CloseSocket out of SetSocketNonBlocking and pass s…

    …ocket as const reference
    
    
    05e023f Move CloseSocket out of SetSocketNonBlocking and pass SOCKET by const reference in SetSocket* functions (Dag Robole)
    
    Pull request description:
    
      Rationale:
    
      Readability, SetSocketNonBlocking does what it says on the tin.
    
      Consistency, More consistent with the rest of the API in this unit.
    
      Reusability, SetSocketNonBlocking can also be used by clients that may not want to close the socket on failure.
    
      This also moves the responsibility of closing the socket back to the caller that opened it, which in general should know better how and when to close it.
    
    Tree-SHA512: 85027137f1b626e2b636549ee38cc757a587adcf464c84be6e65ca16e3b75d7ed1a1b21dd70dbe34c7c5d599af39e53b89932dfe3c74f91a22341ff3af5ea80a
    laanwj committed Jul 24, 2017
  2. Merge #9622: [rpc] listsinceblock should include lost transactions wh…

    …en parameter is a reorg'd block
    
    
    876e92b Testing: listsinceblock should display all transactions that were affected since the given block, including transactions that were removed due to a reorg. (Karl-Johan Alm)
    f999c46 listsinceblock: optionally find and list any transactions that were undone due to reorg when requesting a non-main chain block in a new 'removed' array. (Karl-Johan Alm)
    
    Pull request description:
    
      The following scenario will not notify the caller of the fact `tx0` has been dropped:
    
      1. User 1 receives BTC in tx0 from utxo1 in block aa1.
      2. User 2 receives BTC in tx1 from utxo1 (same) in block bb1
      3. User 1 sees 2 confirmations at block aa3.
      4. Reorg into bb chain.
      5. User 1 asks `listsinceblock aa3` and does not see that tx0 is now invalidated.
    
      See `listsinceblock.py` commit for related test.
    
      The proposed fix is to iterate from the given block down to the fork point, and to check each transaction in the blocks against the wallet, in addition to including all transactions from the fork point to the active chain tip (the current behavior). Any transactions that were present will now also be listed in the `listsinceblock` output in a new `replaced` array. This operation may be a bit heavy but the circumstances (and perceived frequency of occurrence) warrant it, I believe.
    
      Example output:
      ```Python
      {
        'transactions': [],
        'replaced': [
          {
            'walletconflicts': [],
            'vout': 1,
            'account': '',
            'timereceived': 1485234857,
            'time': 1485234857,
            'amount': '1.00000000',
            'bip125-replaceable': 'unknown',
            'trusted': False,
            'category': 'receive',
            'txid': 'ce673859a30dee1d2ebdb3c05f2eea7b1da54baf68f93bb8bfe37c5f09ed22ff',
            'address': 'miqEt4kWp9zSizwGGuUWLAmxEcTW9bFUnQ',
            'label': '',
            'confirmations': -7
          }
        ],
        'lastblock': '7a388f27d09e3699102a4ebf81597d974fc4c72093eeaa02adffbbf7527f6715'
      }
      ```
    
      I believe this addresses the comment by @luke-jr in #9516 (comment) but I could be wrong..
    
    Tree-SHA512: 607b5dcaeccb9dc0d963d3de138c40490f3e923050b29821e6bd513d26beb587bddc748fbb194503fe618cfe34a6ed65d95e8d9c5764a882b6c5f976520cff35
    laanwj committed Jul 24, 2017
Commits on Jul 21, 2017
  1. Merge #10604: [wallet] [tests] Add listwallets RPC, include wallet na…

    …me in `getwalletinfo` and add multiwallet test
    
    
    3707fcd [wallet] [tests] Add listwallets to multiwallet test (John Newbery)
    9508761 [wallet] [rpc] Add listwallets RPC (John Newbery)
    4a05715 [wallet] [rpc] print wallet name in getwalletinfo (John Newbery)
    09eacee [wallet] fix comment for CWallet::Verify() (John Newbery)
    
    Pull request description:
    
      - fix comment for CWallet::Verify (cleanup after #8694)
      - expose the wallet name in `getwalletinfo` rpc
      - add `listwallets` rpc - returns array of wallet names
      - add functional test for multiwallet using new rpc functionality
    
    Tree-SHA512: 52f864726bf8a28421d4f3604a6cb95fffb3f4e19edbce18efaef06142c48dd4adb9e7a65a10de2955c80f13c00803ce27c78ccbc8434d92ef12cd36c4ccb4aa
    laanwj committed Jul 21, 2017
Commits on Jul 20, 2017
  1. qt: Periodic translations update

    Tree-SHA512: 6f2548776007ebe172d43fd26673c62d0db34af815fcf4451cb293f19c0d8cf84a6761dc2636ffb5a906074d70988b3cd805e21b2471de5eb1697fadc82d0205
    laanwj committed Jul 20, 2017
  2. Merge #10821: Add SSE4 optimized SHA256

    6b8d872 Protect SSE4 code behind a compile-time flag (Pieter Wuille)
    fa9be90 Add selftest for SHA256 transform (Pieter Wuille)
    c1ccb15 Add SSE4 based SHA256 (Pieter Wuille)
    2991c91 Add SHA256 dispatcher (Pieter Wuille)
    4d50f38 Support multi-block SHA256 transforms (Pieter Wuille)
    
    Pull request description:
    
      This adds an SSE4 assembly version of the SHA256 transform by Intel, and uses it at run time if SSE4 instructions are available, and use a fallback C++ implementation otherwise. Nearly every x86_64 CPU supports SSE4. The feature is only enabled when compiled with `--enable-experimental-asm`.
    
      In order to avoid build dependencies and other complications, the original Intel YASM code was translated to GCC extended asm syntax.
    
      This gives around a 50% speedup on the SHA256 benchmark for me.
    
      It is based on an earlier patch by @laanwj, though only includes a single assembly version (for now), and removes the YASM dependency.
    
    Tree-SHA512: d31c50695ceb45264291537b93c0d7497670be38edf021ca5402eaa7d4e1e0e1ae492326e28d4e93979d066168129e62d1825e0384b1b906d36f85d93dfcb43c
    laanwj committed Jul 20, 2017
  3. Merge #10775: nCheckDepth chain height fix

    d9d1bd3 nCheckDepth chain height fix (romanornr)
    
    Pull request description:
    
      ````
      if (nCheckDepth <= 0)
          nCheckDepth = 1000000000; // suffices until the year 19000
      if (nCheckDepth > chainActive.Height())
          nCheckDepth = chainActive.Height();
      ````
    
      These lines confuse me.
      Correct me if I am wrong, but we can't check any more blocks than we have right?
      If someone requests <= 0 it get set it into some huge number and then immediately limit it to the chain height in the following statement.
      ````
      if (nCheckDepth > chainActive.Height())
          nCheckDepth = chainActive.Height();
      ````
      when using ````--checkblocks=Z```` When Z is ````0```` or any other negative number, it will check all blocks.
    
      I think it should be changed to this maybe.
      ````
      if (nCheckDepth <= 0 || nCheckDepth > chainActive.Height())
          nCheckDepth = chainActive.Height();
      ````
      Which gets rid of that huge number which is confusing for any other altcoins that have a different block time.
    
    Tree-SHA512: 8ee0ae5f33b399fa74dc16926709694ccfe1fc8a043cba2f5d00884220ac1b9b13f2df4588041f4133be634e5c7b14f4eebe24294028dafe91581a97dbe627f3
    laanwj committed Jul 20, 2017
  4. Merge #10783: [RPC] Various rpc argument fixes

    4dc1915 check for null values in rpc args and handle appropriately (Gregory Sanders)
    999ef20 importmulti options are optional (Gregory Sanders)
    a70d025 fixup some rpc param counting for rpc help (Gregory Sanders)
    
    Pull request description:
    
      Audited where named args will fail to use correct default values or may fail when additional optional arguments are added.
    
      Previously for these parameters, it was fine to omit them as positional arguments, but it would trigger UniValue runtime errors to set them to null, or to omit them while passing named parameters with greater positions (which would internally set earlier missing arguments to null). Now null values are treated the same as missing values so these errors do not occur.
    
      Included a few other small fixes while working on it.
    
      I didn't bother fixing account-based rpc calls.
    
    Tree-SHA512: 8baf781a35bd48de7878d4726850a580dab80323d3416c1c146b4fa9062f8a233c03f37e8ae3f3159e9d04a8f39c326627ca64c14e1cb7ce72538f934ab2ae1e
    laanwj committed Jul 20, 2017
  5. Merge #10862: Remove unused variable int64_t nEnd. Fix typo: "condito…

    …n" → "condition".
    
    
    5a6671c Fix typo: "conditon" → "condition" (practicalswift)
    35aff43 Remove unused variable int64_t nEnd (practicalswift)
    
    Pull request description:
    
      * Remove unused variable `int64_t nEnd`. Last use of `nEnd` removed in commit 1fc8c3d.
      * Fix typo: "conditon" → "condition". Typo introduced in commit 439c4e8.
    
    Tree-SHA512: 61624e6f70828c485fe46dbe00df76f1a07b7a5849d41bf7d279323b687420e60e9b85192f611a37211f17f3dea8eb3f6f6dc65d90c92e5516404fd81d37785a
    laanwj committed Jul 20, 2017
  6. Merge #10571: [RPC]Move transaction combining from signrawtransaction…

    … to new RPC
    
    
    6b4f231 Move transaction combining from signrawtransaction to new RPC (Andrew Chow)
    
    Pull request description:
    
      Create a combinerawtransaction RPC which accepts a json array of hex raw transactions to combine them into one transaction. Signrawtransaction is changed to no longer combine transactions and only accept one transaction at a time.
    
      The tests have been updated to test this. Tests for the signrawtransaction merge have also been removed.
    
      This is part of #10570
    
    Tree-SHA512: 035aebbd6537c1c017d5c8e06d309228b4c23fe52d5b31ffde19741c81a11a6346ddbbdc582b77b02a47f4c22b1952b69d3c2ee1109c29b3f0f1b612d8de53ed
    laanwj committed Jul 20, 2017
  7. Merge #10883: Rename -usewallet to -rpcwallet

    2264236 Rename -usewallet to -rpcwallet (Alex Morcos)
    
    Pull request description:
    
    Tree-SHA512: 99bdbff5d18e464e620b7b2a1ff8db874b3888db4d43348c96c372097ed51edd796b564e4ef1193ccd75d0a1fd51f865cf6fff4e0e3672654cd2933c851d210a
    laanwj committed Jul 20, 2017
Commits on Jul 19, 2017
  1. Merge #10857: [RPC] Add a deprecation warning to getinfo's output

    1c9b818 getinfo deprecation warning (Andrew Chow)
    
    Pull request description:
    
      This is an alternative to #10841
    
      This PR implements @gmaxwell's suggestion of a `nag` field for getinfo which warns about the deprecation. Instead of calling it `nag`, I have named it `deprecation-warning`. The output of `getinfo` will look like this:
      ```
      {
        "version": 149900,
        "protocolversion": 70015,
        "walletversion": 139900,
        "balance": 0.00000000,
        "blocks": 476281,
        "timeoffset": 0,
        "connections": 2,
        "proxy": "",
        "difficulty": 804525194568.1318,
        "testnet": false,
        "keypoololdest": 1496858803,
        "keypoolsize": 197,
        "unlocked_until": 0,
        "paytxfee": 0.00000000,
        "relayfee": 0.00001000,
        "errors": "This is a pre-release test build - use at your own risk - do not use for mining or merchant applications",
        "deprecation-warning": "WARNING: getinfo is deprecated and will be fully removed in 0.16. Projects should transition to using getblockchaininfo, getnetworkinfo, and getwalletinfo before upgrading to 0.16"
      }
      ```
    
      I think this should be tagged for 0.15
    
    Tree-SHA512: ea1bac96a67f797519e8748ddd661cf0a1127cbc38f145b98f10cf9b54dcf0519b353062ce9888e1f51875497299c75ff5147566944451bc3fc117620e773489
    laanwj committed Jul 19, 2017
  2. Merge #10817: Redefine Dust and add a discard_rate

    f4d00e6 Add a discard_rate (Alex Morcos)
    b138585 Remove factor of 3 from definition of dust. (Alex Morcos)
    
    Pull request description:
    
      The definition of dust is redefined to remove the factor of 3.
    
      Dust is redefined to be the value of an output such that it would
      cost that value in fees to (create and) spend the output at the dust
      relay rate.  The previous definition was that it would cost 1/3 of the
      value.  The default dust relay rate is correspondingly increased to
      3000 sat/kB so the actual default dust output value of 546 satoshis
      for a non-segwit output remains unchanged.  This commit is a refactor
      only unless a dustrelayfee is passed on the commandline in which case
      that number now needs to be increased by a factor of 3 to get the same
      behavior.  -dustrelayfee is a hidden command line option.
    
      Note: It's not exactly a refactor due to edge case changes in rounding
      as evidenced by the required change to the unit test.
    
      A discard_rate is added which defaults to 10,000 sat/kB
    
      Any change output which would be dust at the discard_rate you are
      willing to discard completely and add to fee (as well as continuing to
      pay the fee that would have been needed for creating the change)
    
      This would be a nice addition for 0.15 and I think will remain useful for 0.16 with the new coin selection algorithms in discussion, but its not crucial.
    
      It does add translation strings, but we could (should?) avoid that by hiding the option
    
    Tree-SHA512: 5b6f655354d0ab6b8b6cac1e8d1fe3136d10beb15c6d948fb15bfb105155a9d03684c6240624039b3eed6428b7e60e54216cc8b2f90c4600701e39f646284a9b
    laanwj committed Jul 19, 2017
Commits on Jul 18, 2017
  1. Merge #10784: Do not allow users to get keys from keypool without res…

    …erving them
    
    
    cf82a9e Do not allow users to get keys from keypool without reserving them (Matt Corallo)
    
    Pull request description:
    
      fundrawtransaction allows users to add a change output and then
      not have it removed from keypool. While it would be nice to have
      users follow the normal CreateTransaction/CommitTransaction process
      we use internally, there isnt much benefit in exposing this option,
      especially with HD wallets, while there is ample room for users to
      misunderstand or misuse this option.
    
      This partially reverts #9377. Would be nice to get this for 15 since its kinda crazy we have this option to begin with IMO, will need release notes as an RPC option is now ignored.
    
    Tree-SHA512: 72b5ee9c4a229b84d799dfb00c56fe80d8bba914ce81a433c3f5ab325bf9bf2b839ee658c261734f0ee183ab19435039481014d09c41dbe155e6323e63beb01d
    laanwj committed Jul 18, 2017
  2. Merge #10849: Multiwallet: simplest endpoint support

    6b9faf7 [QA] add basic multiwallet test (Jonas Schnelli)
    979d0b8 [tests] [wallet] Add wallet endpoint support to authproxy (John Newbery)
    76603b1 Select wallet based on the given endpoint (Jonas Schnelli)
    32c9710 Fix test_bitcoin circular dependency issue (Jonas Schnelli)
    31e0720 Add wallet endpoint support to bitcoin-cli (-usewallet) (Jonas Schnelli)
    dd2185c Register wallet endpoint (Jonas Schnelli)
    
    Pull request description:
    
      Alternative for #10829 and #10650.
      It adds the most simplest form of wallet based endpoint support (`/wallet/<filename>`).
      No v1 and no node/wallet endpoint split.
    
    Tree-SHA512: 23de1fd2f9b48d94682928b582fb6909e16ca507c2ee19e1f989d5a4f3aa706194c4b1fe8854d1d79ba531b7092434239776cae1ae715ff536e829424f59f9be
    laanwj committed Jul 18, 2017
  3. Merge #10795: No longer ever reuse keypool indexes

    1fc8c3d No longer ever reuse keypool indexes (Matt Corallo)
    
    Pull request description:
    
      This fixes an issue where you could reserve a keypool entry, then
      top up the keypool, writing out a new key at the given index, then
      return they key from the pool. This isnt likely to cause issues,
      but given there is no reason to ever re-use keypool indexes
      (they're 64 bits...), best to avoid it alltogether.
    
      Builds on #10235, should probably get a 15 tag.
    
    Tree-SHA512: c13a18a90f1076fb74307f2d64e9d80149811524c6bda259698ff2c65adaf8c6c3f2a3a07a5f4bf03251bc942ba8f5fd33a4427aa4256748c40b062991682caf
    laanwj committed Jul 18, 2017
  4. Merge #10855: random: only use getentropy on openbsd

    077d01f random: only use getentropy on openbsd (Cory Fields)
    
    Pull request description:
    
      Follow-up from #10335. I can confirm that this fixes my issue when building against a new glibc + old linux headers for back-compat.
    
    Tree-SHA512: a0fcf26995fbd3636f970e729a172c6e1d7c0de371e703f0653cd9776600f438ec43acd2b1eb92f2678a011968da8fbbeef8a54599434851f4c6ffe78291c172
    laanwj committed Jul 18, 2017
Commits on Jul 17, 2017
  1. Merge #10831: Batch flushing operations to the walletdb during top up…

    … and increase keypool size.
    
    
    b0e8e2d Print one log message per keypool top-up, not one per key. (Gregory Maxwell)
    41dc163 Increase wallet default keypool size to 1000. (Gregory Maxwell)
    30d8f3a Pushdown walletdb though CWallet::AddKeyPubKey to avoid flushes. (Gregory Maxwell)
    3a53f19 Pushdown walletdb object through GenerateNewKey/DeriveNewChildKey. (Gregory Maxwell)
    
    Pull request description:
    
      This carries the walletdb object from top-up through GenerateNewKey/DeriveNewChildKey/CWallet::AddKeyPubKey, which allows us to avoid the flush on destruction until the top up finishes instead of flushing the wallet for every key.
    
      This speeds up adding keys by well over 10x on my laptop (actually something like 17x), I wouldn't be surprised if it were an even bigger speedup on spinning rust.
    
      Then it increases the keypool size to 1000. I would have preferred to use 10,000 but in the case where the user creates a new wallet and then turns on encryption it seems kind of dumb to have >400KB of marked-used born unencrypted keys just laying around.
    
      (Thanks to Matt for cluesticking me on how to bypass the crypter spaghetti)
    
    Tree-SHA512: 868303de38fce4c3f67d7fe133f765f15435c94b39d252d7450b5fee5c607a3cc2f5e531861a69d8c8877bf130e0ff4c539f97500a6bc0ff6d67e4a42c9385c7
    laanwj committed Jul 17, 2017