doc: add qrencode to brew install instructions (#1) #12889

pull 2a5A1Ghu1 wants to merge 1 commits into bitcoin:master from 2a5A1Ghu1:master changing 312 files +8652 −5038
  1. 2a5A1Ghu1 commented at 4:55 AM on April 5, 2018: none
    • [gitian] Re-order keys by owner first name alphabetic order

    • [gitian] Add kallewoof key for signing

    • Simplify Base32 and Base64 conversions

    • CheckMinimalPush comments are prescriptive

    • [rpc] createrawtransaction: Accept sorted outputs

    • qa: Cache only chain and wallet for regtest datadir

    • [wallet] Get rid of CWalletTx default constructor

    No change in behavior in the normal case. But buggy mapWallet lookups with invalid txids will now throw exceptions instead of inserting dummy entries into the map, and potentially causing segfaults and other failures.

    This also makes it a compiler error to use the mapWallet[hash] syntax which could create dummy entries.

    • [wallet] Construct CWalletTx objects in CommitTransaction

    Construct CWalletTx objects in CWallet::CommitTransaction, instead of having callers do it. This ensures CWalletTx objects are constructed in a uniform way and all fields are set.

    This also makes it possible to avoid confusing and wasteful CWalletTx copies in #9381

    There is no change in behavior.

    • bitcoin-cli: Provide a better error message when bitcoind is not running

    Before this patch:

    $ bitcoin-cli -testnet echo 'hello world'
    error: Could not locate RPC credentials. No authentication cookie could be found, and RPC password is not set.  See -rpcpassword and -stdinrpcpass.  Configuration file: (/root/.bitcoin/bitcoin.conf)
    

    After this patch:

    $ bitcoin-cli -testnet echo 'hello world'
    error: Could not connect to the server 127.0.0.1:18332
    
    Make sure the bitcoind server is running and that you are connecting to the correct RPC port.
    
    • Format timestamps using ISO 8601 formatting (e.g. "2018-02-28T12:34:56Z")

    • Z is the zone designator for the zero UTC offset.

    • T is the delimiter used to separate date and time.

    This makes it clear for the end-user that the date/time logged is specified in UTC and not in the local time zone.

    • scripted-diff: Convert 11 enums into scoped enums (C++11)

    -BEGIN VERIFY SCRIPT-

    sed -i 's/enum DBErrors/enum class DBErrors/g' src/wallet/walletdb.h git grep -l DB_ | xargs sed -i 's/DB_(LOAD_OK|CORRUPT|NONCRITICAL_ERROR|TOO_NEW|LOAD_FAIL|NEED_REWRITE)/DBErrors::\1/g' sed -i 's/^ DBErrors::/ /g' src/wallet/walletdb.h

    sed -i 's/enum VerifyResult/enum class VerifyResult/g' src/wallet/db.h sed -i 's/(VERIFY_OK|RECOVER_OK|RECOVER_FAIL)/VerifyResult::\1/g' src/wallet/db.cpp

    sed -i 's/enum ThresholdState/enum class ThresholdState/g' src/versionbits.h git grep -l THRESHOLD_ | xargs sed -i 's/THRESHOLD_(DEFINED|STARTED|LOCKED_IN|ACTIVE|FAILED)/ThresholdState::\1/g' sed -i 's/^ ThresholdState::/ /g' src/versionbits.h

    sed -i 's/enum SigVersion/enum class SigVersion/g' src/script/interpreter.h git grep -l SIGVERSION_ | xargs sed -i 's/SIGVERSION_(BASE|WITNESS_V0)/SigVersion::\1/g' sed -i 's/^ SigVersion::/ /g' src/script/interpreter.h

    sed -i 's/enum RetFormat {/enum class RetFormat {/g' src/rest.cpp sed -i 's/RF_(UNDEF|BINARY|HEX|JSON)/RetFormat::\1/g' src/rest.cpp sed -i 's/^ RetFormat::/ /g' src/rest.cpp

    sed -i 's/enum HelpMessageMode {/enum class HelpMessageMode {/g' src/init.h git grep -l HMM_ | xargs sed -i 's/HMM_BITCOIN/HelpMessageMode::BITCOIN/g' sed -i 's/^ HelpMessageMode::/ /g' src/init.h

    sed -i 's/enum FeeEstimateHorizon/enum class FeeEstimateHorizon/g' src/policy/fees.h

    sed -i 's/enum RBFTransactionState/enum class RBFTransactionState/g' src/policy/rbf.h git grep -l RBF_ | xargs sed -i 's/RBF_TRANSACTIONSTATE_(UNKNOWN|REPLACEABLE_BIP125|FINAL)/RBFTransactionState::\1/g' sed -i 's/^ RBFTransactionState::/ /g' src/policy/rbf.h

    sed -i 's/enum BlockSource {/enum class BlockSource {/g' src/qt/clientmodel.h git grep -l BLOCK_SOURCE_ | xargs sed -i 's/BLOCK_SOURCE_(NONE|REINDEX|DISK|NETWORK)/BlockSource::\1/g' sed -i 's/^ BlockSource::/ /g' src/qt/clientmodel.h

    sed -i 's/enum FlushStateMode {/enum class FlushStateMode {/g' src/validation.cpp sed -i 's/FLUSH_STATE_(NONE|IF_NEEDED|PERIODIC|ALWAYS)/FlushStateMode::\1/g' src/validation.cpp sed -i 's/^ FlushStateMode::/ /g' src/validation.cpp

    sed -i 's/enum WitnessMode {/enum class WitnessMode {/g' src/test/script_tests.cpp sed -i 's/WITNESS_(NONE|PKH|SH)/WitnessMode::\1/g' src/test/script_tests.cpp sed -i 's/^ WitnessMode::/ /g' src/test/script_tests.cpp

    -END VERIFY SCRIPT-

    • Split up and sanitize CWalletTx serialization

    • Calculate and store the number of bytes required to spend an input

    • Store effective value, fee, and long term fee in CInputCoin

    Have CInputCOin store effective value information. This includes the effective value itself, the fee, and the long term fee for the input

    • Log fatal LevelDB errors more verbosely

    • configure: UniValue 1.0.4 is required for pushKV(, bool)

    • Allow to optional specify the directory for the blocks storage

    • Ubuntu xenial first dependencies

    Add update and upgrade commands to enable the installation of the first dependencies on ubuntu xenial. If those are not executed some packages can not be found.

    • Split up and sanitize CAccountingEntry serialization

    • rpc: Update createrawtransaction examples

    • qt: Avoid querying unnecessary model data when filtering transactions

    • [qa] util: Remove unused sync_chain

    • Implement Branch and Bound coin selection in a new file

    Create a new file for coin selection logic and implement the BnB algorithm in it.

    • Add a GetMinimumFeeRate function which is wrapped by GetMinimumFee

    • Remove coinselection.h -> wallet.h circular dependency

    Changes CInputCoin to coinselection and to use CTransactionRef in order to avoid a circular dependency. Also moves other coin selection specific variables out of wallet.h to coinselectoin.h

    • Move output eligibility to a separate function

    • Move current coin selection algorithm to coinselection.{cpp,h}

    Moves the current coin selection algorithm out of SelectCoinsMinConf and puts it in coinselection.{cpp,h}. The new function, KnapsackSolver, instead of taking a vector of COutputs, will take a vector of CInputCoins that is prepared by SelectCoinsMinConf.

    • Use a struct for output eligibility

    Instead of specifying 3 parameters, use a struct for those parameters in order to reduce the number of arguments to SelectCoinsMinConf.

    • Add tests for the Branch and Bound algorithm

    • Move original knapsack solver tests to coinselector_tests.cpp

    • Have SelectCoinsMinConf and SelectCoins use BnB or Knapsack and use it

    Allows SelectCoinsMinConf and SelectCoins be able to switch between using BnB or Knapsack for choosing coins.

    Has SelectCoinsMinConf do the preprocessing necessary to support either BnB or Knapsack. This includes calculating the filtering the effective values for each input.

    Uses BnB in CreateTransaction to find an exact match for the output. If BnB fails, it will fallback to the Knapsack solver.

    • Benchmark BnB in the worst case where it exhausts

    • Add a test to make sure that negative effective values are filtered

    • travis: Clone depth 1 unless $CHECK_DOC

    • Fix ComputeTimeSmart test failure with -DDEBUG_LOCKORDER

    Failure looks like:

    Entering test case "ComputeTimeSmart"
    test_bitcoin: sync.cpp:100: void potential_deadlock_detected(const std::pair<void*, void*>&, const LockStack&, const LockStack&): Assertion `false' failed.
    unknown location(0): fatal error in "ComputeTimeSmart": signal: SIGABRT (application abort requested)
    wallet/test/wallet_tests.cpp(566): last checkpoint

    Reproducible with:

    ./configure --enable-debug
    make -C src test/test_bitcoin && src/test/test_bitcoin --log_level=test_suite --run_test=wallet_tests/ComputeTimeSmart

    Happens due to "92fabcd443 Add LookupBlockIndex function" which acquires cs_main from inside CWallet::ComputeTimeSmart.

    • Merge READWRITEMANY into READWRITE

    • Support deserializing into temporaries

    Currently, the READWRITE macro cannot be passed any non-const temporaries, as the SerReadWrite function only accepts lvalue references.

    Deserializing into a temporary is very common, however. See for example things like 's >> VARINT(n)'. The VARINT macro produces a temporary wrapper that holds a reference to n.

    Fix this by accepting non-const rvalue references instead of lvalue references. We don't propagate the rvalue-ness down, as there are no useful optimizations that only apply to temporaries.

    Then use this new functionality to get rid of many (but not all) uses of the 'REF' macro (which casts away constness).

    • Apply hardening measurements in bitcoind systemd service file

    Adds typical systemd hardening measurements for network services.

    • Polish interfaces around PeerLogicValidation

    • Make PeerLogicValidation final to prevent deriving from it [1]

    • Prevent deletions of NetEventsInterface and CValidationInterface objects via a base class pointer

    [1] silences the following compiler warning (from Clang 7.0.0):

    /usr/include/c++/v1/memory:2285:5: error: delete called on non-final 'PeerLogicValidation' that has virtual functions but non-virtual destructor [-Werror,-Wdelete-non-virtual-dtor] delete __ptr; ^ /usr/include/c++/v1/memory:2598:7: note: in instantiation of member function 'std::__1::default_delete<PeerLogicValidation>::operator()' requested here __ptr_.second()(__tmp); ^ init.cpp:201:15: note: in instantiation of member function 'std::__1::unique_ptr<PeerLogicValidation, std::__1::default_delete<PeerLogicValidation> >::reset' requested here peerLogic.reset(); ^

    • Provide relevant error message if datadir is not writable.

    • Remove unused variable in SortForBlock

    • Actually disable BnB when there are preset inputs

    We don't want to use BnB when there are preset inputs because there is some weirdness with making that work with using the KnapsackSolver as the fallback. Currently we say that we haven't used bnb when there are preset inputs, but we don't actually disable BnB. This fixes that.

    • Do not check for main() in libminiupnpc

    main() { main(); } causes "infinite recursion" compilation warning which with -Werror fails the check.

    • ax_boost_{chrono,unit_test_framework}.m4: take changes from upstream

    Apply changes to build-aux/m4/ax_boost_chrono.m4 and build-aux/m4/ax_boost_unit_test_framework.m4 from upstream: https://github.com/peti/autoconf-archive

    • Remove redundant checks for MSG_* from configure.ac

    It is redundant to check for the presence of MSG_NOSIGNAL macro in configure.ac, define HAVE_MSG_NOSIGNAL and then check whether the later is defined in the source code. Instead we can check directly whether MSG_NOSIGNAL is defined. Same for MSG_DONTWAIT.

    In addition to that, the checks we had in configure.ac produce a compiler warning about unused variable and thus could fail if -Werror is present and erroneously proclaim that the macros are not available.

    • Test that BnB is not used when there are preset inputs

    • Document RPC method aliasing

    Suggested by Sjors Provoost sjors@sprovoost.nl in #11536 (comment)

    • Add static_assert to prevent VARINT(<signed value>)

    Using VARINT with signed types is dangerous because negative values will appear to serialize correctly, but then deserialize as positive values mod 128.

    This commit changes the VARINT macro to trigger an error by default if called with an signed value, and updates broken uses of VARINT to pass a special flag that lets them keep working with no change in behavior.

    • test: Use wait_until in tests where time was used for polling

    • test: Use os.path.join consistently in feature_pruning tests

    • [Trivial] Simplify if-else blocks and more descriptive variable naming

    • Append scripts to new test_list array to fix bad assignment

    • wallet: Change output type globals to members

    • QA: Add -blocksdir test

    • [Tests] Move assert_start_raises_init_error method to TestNode

    • [Tests] Require exact match in assert_start_raises_init_eror()

    • Avoiding 'file' function name from python2 with more descriptive variable naming

    • Qt: remove "new" button during receive-mode in addressbook

    • [tests] Fix flake8 warnings in feature_block.py

    • [tests] Tidy up feature_block.py

    • move all helper methods to the end
    • remove block, create_tx and create_and_sign_tx shortcuts
    • remove --runbarelyexpensive option, since it defaults to True and it's unlikely that anyone ever runs the test with this option set to false.
    • [tests] Add logging to feature_block.py

    • Remove unreachable help conditions

    • Rename account to label where appropriate

    This change only updates strings and adds RPC aliases, but should simplify the implementation of address labels in #7729, by getting renaming out of the way and letting it focus on semantics.

    The difference between accounts and labels is that labels apply only to addresses, while accounts apply to both addresses and transactions (transactions have "from" and "to" accounts). The code associating accounts with transactions is clumsy and unreliable so we would like get rid of it.

    • Rename wallet_accounts.py test

    This is a separate commit because changing the test at the same time as renaming it breaks git (and github) rename detection.

    • qa: Use node.datadir instead of tmpdir in test framework

    • [tests] Change feature_block.py to use BitcoinTestFramework

    • [tests] Improve assert message when wait_until() fails

    • scripted-diff: rename TestNode to TestP2PConn in tests

    Several test scripts define a subclass of P2PInterface called TestNode. This commit renames those to TestP2PConn since we already have a TestNode class in the test framework.

    -BEGIN VERIFY SCRIPT- sed -i s/TestNode/TestP2PConn/ test/functional/*py test/functional/test_framework/comptool.py _END VERIFY SCRIPT-

    • qa: Allow for partial_match when checking init error

    This allows the tests to pass on different platforms

    • tests: Test connecting to a non-existing server

    • tests: Test connecting with non-existing RPC cookie file

    • -blocksdir: keep blockindex leveldb database in datadir

    • Remove unnecessary NONNEGATIVE_SIGNED

    Switch to unsigned encoding, which is backwards compatible and avoids MSVC error reported #12732

    • use base58 map instead of strchr()

    • Make FastRandomContext support standard C++11 RNG interface

    This makes it possible to plug it into the various standard C++11 random distribution algorithms and other functions like std::shuffle.

    • Fix typos

    • tests: Remove unused argument max_invalid from check_estimates(...)

    • Fix typos

    • Qt: Warn users about invalid-BIP21 URI bitcoin://

    • shuffle selected coins before transaction finalization

    • Replace boost::call_once with std::call_once

    • Add native support for serializing char arrays without FLATDATA

    Support is added to serialize arrays of type char or unsigned char directly, without any wrappers. All invocations of the FLATDATA wrappers that are obsoleted by this are removed.

    This includes a patch by Russell Yanofsky to make char casting type safe.

    The serialization of CSubNet is changed to serialize a bool directly rather than though FLATDATA. This makes the serialization independent of the size of the bool type (and will use 1 byte everywhere).

    • Move compressor utility functions out of class

    • [config] Remove blockmaxsize option

    The blockmaxsize option was marked as deprecated in V0.15.1, and code was added to convert provided blockmaxsize into blockmaxweight. However, this code was incorrectly implemented, and blockmaxsize was silently ignored.

    No users have complained about blockmaxsize being ignored, so just remove it in V0.17.

    • Docs: Improve documentation on standard communication channels

    More information about connection on IRC will hopefully help new contributors.

    • shuffle sendmany recipients ordering to shuffle tx outputs

    • add release note for sendmany output shuffling

    • [CI]: bump travis timeout for make check to 50m

    • Inline CKeyStore::AddKey(const CKey &) in CBasicKeyStore

    • Move CKeyStore::cs_KeyStore to CBasicKeyStore

    • Make CTxMemPool::isSpent() const

    • [REST] Handle UTXO retrieval when ignoring the mempool

    Current REST API always returns empty UTXO when invoked without /checkmempool/ URL part.

    After the fix:

    $ curl -s http://localhost:8332/rest/getutxos/0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098-0.json | jq
    {
      "chainHeight": 514109,
      "chaintipHash": "0000000000000000001fe76d1445e8a6432fd2de04261dc9c5915311dc7ad6de",
      "bitmap": "1",
      "utxos": [
        {
          "height": 1,
          "value": 50,
          "scriptPubKey": {
            "asm": "0496b538e853519c726a2c91e61ec11600ae1390813a627c66fb8be7947be63c52da7589379515d4e0a604f8141781e62294721166bf621e73a82cbf2342c858ee OP_CHECKSIG",
            "hex": "410496b538e853519c726a2c91e61ec11600ae1390813a627c66fb8be7947be63c52da7589379515d4e0a604f8141781e62294721166bf621e73a82cbf2342c858eeac",
            "reqSigs": 1,
            "type": "pubkey",
            "addresses": [
              "12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX"
            ]
          }
        }
      ]
    }
    

    Before the fix:

    $ curl -s http://localhost:8332/rest/getutxos/0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098-0.json | jq
    {
      "chainHeight": 514109,
      "chaintipHash": "0000000000000000001fe76d1445e8a6432fd2de04261dc9c5915311dc7ad6de",
      "bitmap": "0",
      "utxos": []
    }
    
    • Add username and ip logging for RPC method requests

    • Qt: Remove unused method setupAmountWidget(...)

    • Introduce interface for signing providers

    CKeyStore is a rich interface that provides many features, including knowledge of scripts and pubkeys for solving, private keys for signing, in addition to watch-only keys and scripts, and distinguishing lack of keys from them just being encrypted.

    The signing logic in script/sign does not actually need most of these features. Here we introduce a simpler interface (SigningProvider) which only provides keys and scripts. This is actually sufficient for signing.

    In addtion, we swap the dependency between keystore and script/sign (keystore now depends on script/script with CKeyStore deriving from SigningProvider, rather than CKeyStore being the interface that signing relies on).

    • Reduce variable scopes

    • Qt: Add wallet selector to debug console

    • Qt: QComboBox::setVisible doesn't work in toolbars, so defer adding it at all until needed

    • Qt: Get wallet name from WalletModel rather than passing it around

    • Qt: When multiple wallets are used, include in notifications the name

    • GUI: RPCConsole: Log wallet changes

    • Qt: show wallet name in send confirmation dlg in case of multiwallet

    • Qt: show wallet name in request dlg in case of multiwallet

    • Qt: hide RPCConsole wallet selector when no wallets are present

    • rpc: Adjust ifdef to avoid unreachable code

    • [Tests] Use blockmaxweight where tests previously had blockmaxsize

    • [wallet] Move wallet init functions into WalletInit class.

    • [wallet] Create wallet init interface.

    • qt: Avoid resetting on resetguisettigs=0

    • do not truncate .dat extension for wallets in gui

    • Change all python files to use Python3

    • init: Fix help message for checkblockindex

    • doc: Refer to witness reserved value as spec. in the BIP

    • doc: Add note about our preference for scoped enumerations ("enum class")

    • [wallet] Use global g_wallet_init_interface to init/destroy the wallet.

    This commit creates a global g_wallet_init_interface, which is created in bitcoind and bitcoin-qt. g_wallet_init_interface is used to init and destroy the wallet.

    This removes the dependency from init.cpp on the wallet library.

    • [wallet] Add dummy wallet init class

    • Fix error in memory usage calculation (unintended integer division)

    • qa: Fix function names in feature_blocksdir

    • Add additional tests for GetBoolArg()

    This is meant to be an intermediate commit to prove that the next does not introduce any changes in the semantics of boolean option parsing.

    • Track negated arguments in the argument paser.

    This commit adds tracking for negated arguments. This change will be used in a future commit that allows disabling the debug.log file using -nodebuglogfile.

    • test: Make summary row bold-red if any test failed

    Make the summary row of the test runner bold red if any test fails. This helps visibility if something fails.

    • Make base58 python contrib code work with python3

    • test: List any failed tests at the end of test_runner output

    Change sorting output to put failed tests at the end of test_runner output.

    • [Tests] fix a typo in TestNode.assert_start_raises_init_error()

    Also, use specific exception for testing TestNode initialization failure.

    • contrib: Fix check-doc script regexes

    • contrib: Remove unused import string

    • init: Remove help text for non-existent -fuzzmessagestest arg

    • Revert "test: Update trust git root".

    This reverts commit 7deba93bdc76616011a9f493cbc203d60084416f.

    This is neither a "test" change, nor should the trusted-git-root have been updated - there is a process for expired PGP keys.

    • Add Marco-expired-key-signed-commits to allow-revsig-commits

    • Improve formatting of developer notes

    Summary of changes:

    • Add a TOC to the page

    • Make tips and tricks section use h3 headings

    • Reformat and clarify some sections

    • Add --with-sanitizers option to configure

    This enables the use of different compiler sanitizers, coresponding to the -fsanitize option in GCC and Clang.

    • [tests] Fix intermittent rpc_net.py failure.

    rpc_net.py would intermittently fail on Travis, probably due to assuming that two consecutive RPC calls were atomic. Fix this by only testing that amounts are bounded above and below rather than equal.

    • [contrib] fixup security-check.py Python3 support

    • [contrib] fixup symbol-check.py Python3 support

    • Bugfix: RPC: savemempool: Don't save until LoadMempool() is finished

    • Increase LevelDB max_open_files unless on 32-bit Unix.

    This change significantly increases IBD performance by increasing the amount of the UTXO index that can remain in memory. To ensure this doesn't cause problems in the future, a static_assert on the LevelDB version has been added, which must be updated by anyone upgrading LevelDB.

    • [verify-commits] Add some additional useful documentation.

    • test: Remove travis checkout depth

    Tests on branches of non-head commits are failing, because the depth of 1 doesn't allow checking them out.

    Remove depth as was the case before fa44af5cd2152a21da9ef3e48c073a668bf2df27, so that Travis can determine the minimum depth to check out.

    • Fixes Missing QRCode Build

    Build was missing qr code(qrencode libs) support and brew team no longer supports anything less than macOS 10.11

    • Fixed notes

    Fixed notes to reflect that 10.8 is still supported via gitian

    • Rolled Back Tested on

    Below is a suggestion for future release after EOL is done

    • Works with macOS 10.11 through 10.13 on 64-bit Intel processors only.

    • macOS 10.8 and higher is still supported on gitian builds

    • Update build-osx.md

    Below is a suggestion for future release after EOL is done

    • Works with macOS 10.11 through 10.13 on 64-bit Intel processors only.

    • macOS 10.8 and higher is still supported on gitian builds

  2. doc: add qrencode to brew install instructions (#1)
    * [gitian] Re-order keys by owner first name alphabetic order
    
    * [gitian] Add kallewoof key for signing
    
    * Simplify Base32 and Base64 conversions
    
    * CheckMinimalPush comments are prescriptive
    
    * [rpc] createrawtransaction: Accept sorted outputs
    
    * qa: Cache only chain and wallet for regtest datadir
    
    * [wallet] Get rid of CWalletTx default constructor
    
    No change in behavior in the normal case. But buggy mapWallet lookups with
    invalid txids will now throw exceptions instead of inserting dummy entries into
    the map, and potentially causing segfaults and other failures.
    
    This also makes it a compiler error to use the mapWallet[hash] syntax which
    could create dummy entries.
    
    * [wallet] Construct CWalletTx objects in CommitTransaction
    
    Construct CWalletTx objects in CWallet::CommitTransaction, instead of having
    callers do it. This ensures CWalletTx objects are constructed in a uniform way
    and all fields are set.
    
    This also makes it possible to avoid confusing and wasteful CWalletTx copies in
    https://github.com/bitcoin/bitcoin/pull/9381
    
    There is no change in behavior.
    
    * bitcoin-cli: Provide a better error message when bitcoind is not running
    
    Before this patch:
    
    ```
    $ bitcoin-cli -testnet echo 'hello world'
    error: Could not locate RPC credentials. No authentication cookie could be found, and RPC password is not set.  See -rpcpassword and -stdinrpcpass.  Configuration file: (/root/.bitcoin/bitcoin.conf)
    ```
    
    After this patch:
    
    ```
    $ bitcoin-cli -testnet echo 'hello world'
    error: Could not connect to the server 127.0.0.1:18332
    
    Make sure the bitcoind server is running and that you are connecting to the correct RPC port.
    ```
    
    * Format timestamps using ISO 8601 formatting (e.g. "2018-02-28T12:34:56Z")
    
    * Z is the zone designator for the zero UTC offset.
    * T is the delimiter used to separate date and time.
    
    This makes it clear for the end-user that the date/time logged is
    specified in UTC and not in the local time zone.
    
    * scripted-diff: Convert 11 enums into scoped enums (C++11)
    
    -BEGIN VERIFY SCRIPT-
    
    sed -i 's/enum DBErrors/enum class DBErrors/g' src/wallet/walletdb.h
    git grep -l DB_ | xargs sed -i 's/DB_\(LOAD_OK\|CORRUPT\|NONCRITICAL_ERROR\|TOO_NEW\|LOAD_FAIL\|NEED_REWRITE\)/DBErrors::\1/g'
    sed -i 's/^    DBErrors::/    /g' src/wallet/walletdb.h
    
    sed -i 's/enum VerifyResult/enum class VerifyResult/g' src/wallet/db.h
    sed -i 's/\(VERIFY_OK\|RECOVER_OK\|RECOVER_FAIL\)/VerifyResult::\1/g' src/wallet/db.cpp
    
    sed -i 's/enum ThresholdState/enum class ThresholdState/g' src/versionbits.h
    git grep -l THRESHOLD_ | xargs sed -i 's/THRESHOLD_\(DEFINED\|STARTED\|LOCKED_IN\|ACTIVE\|FAILED\)/ThresholdState::\1/g'
    sed -i 's/^    ThresholdState::/    /g' src/versionbits.h
    
    sed -i 's/enum SigVersion/enum class SigVersion/g' src/script/interpreter.h
    git grep -l SIGVERSION_ | xargs sed -i 's/SIGVERSION_\(BASE\|WITNESS_V0\)/SigVersion::\1/g'
    sed -i 's/^    SigVersion::/    /g' src/script/interpreter.h
    
    sed -i 's/enum RetFormat {/enum class RetFormat {/g' src/rest.cpp
    sed -i 's/RF_\(UNDEF\|BINARY\|HEX\|JSON\)/RetFormat::\1/g' src/rest.cpp
    sed -i 's/^    RetFormat::/    /g' src/rest.cpp
    
    sed -i 's/enum HelpMessageMode {/enum class HelpMessageMode {/g' src/init.h
    git grep -l HMM_ | xargs sed -i 's/HMM_BITCOIN/HelpMessageMode::BITCOIN/g'
    sed -i 's/^    HelpMessageMode::/    /g' src/init.h
    
    sed -i 's/enum FeeEstimateHorizon/enum class FeeEstimateHorizon/g' src/policy/fees.h
    
    sed -i 's/enum RBFTransactionState/enum class RBFTransactionState/g' src/policy/rbf.h
    git grep -l RBF_ | xargs sed -i 's/RBF_TRANSACTIONSTATE_\(UNKNOWN\|REPLACEABLE_BIP125\|FINAL\)/RBFTransactionState::\1/g'
    sed -i 's/^    RBFTransactionState::/    /g' src/policy/rbf.h
    
    sed -i 's/enum BlockSource {/enum class BlockSource {/g' src/qt/clientmodel.h
    git grep -l BLOCK_SOURCE_ | xargs sed -i 's/BLOCK_SOURCE_\(NONE\|REINDEX\|DISK\|NETWORK\)/BlockSource::\1/g'
    sed -i 's/^    BlockSource::/    /g' src/qt/clientmodel.h
    
    sed -i 's/enum FlushStateMode {/enum class FlushStateMode {/g' src/validation.cpp
    sed -i 's/FLUSH_STATE_\(NONE\|IF_NEEDED\|PERIODIC\|ALWAYS\)/FlushStateMode::\1/g' src/validation.cpp
    sed -i 's/^    FlushStateMode::/    /g' src/validation.cpp
    
    sed -i 's/enum WitnessMode {/enum class WitnessMode {/g' src/test/script_tests.cpp
    sed -i 's/WITNESS_\(NONE\|PKH\|SH\)/WitnessMode::\1/g' src/test/script_tests.cpp
    sed -i 's/^    WitnessMode::/    /g' src/test/script_tests.cpp
    
    -END VERIFY SCRIPT-
    
    * Split up and sanitize CWalletTx serialization
    
    * Calculate and store the number of bytes required to spend an input
    
    * Store effective value, fee, and long term fee in CInputCoin
    
    Have CInputCOin store effective value information. This includes the effective
    value itself, the fee, and the long term fee for the input
    
    * Log fatal LevelDB errors more verbosely
    
    * configure: UniValue 1.0.4 is required for pushKV(, bool)
    
    * Allow to optional specify the directory for the blocks storage
    
    * Ubuntu xenial first dependencies
    
    Add update and upgrade commands to enable the installation of the first dependencies on ubuntu xenial. If those are not executed some packages can not be found.
    
    * Split up and sanitize CAccountingEntry serialization
    
    * rpc: Update createrawtransaction examples
    
    * qt: Avoid querying unnecessary model data when filtering transactions
    
    * [qa] util: Remove unused sync_chain
    
    * Implement Branch and Bound coin selection in a new file
    
    Create a new file for coin selection logic and implement the BnB algorithm in it.
    
    * Add a GetMinimumFeeRate function which is wrapped by GetMinimumFee
    
    * Remove coinselection.h -> wallet.h circular dependency
    
    Changes CInputCoin to coinselection and to use CTransactionRef in
    order to avoid a circular dependency. Also moves other coin selection
    specific variables out of wallet.h to coinselectoin.h
    
    * Move output eligibility to a separate function
    
    * Move current coin selection algorithm to coinselection.{cpp,h}
    
    Moves the current coin selection algorithm out of SelectCoinsMinConf
    and puts it in coinselection.{cpp,h}. The new function, KnapsackSolver,
    instead of taking a vector of COutputs, will take a vector of CInputCoins
    that is prepared by SelectCoinsMinConf.
    
    * Use a struct for output eligibility
    
    Instead of specifying 3 parameters, use a struct for those parameters
    in order to reduce the number of arguments to SelectCoinsMinConf.
    
    * Add tests for the Branch and Bound algorithm
    
    * Move original knapsack solver tests to coinselector_tests.cpp
    
    * Have SelectCoinsMinConf and SelectCoins use BnB or Knapsack and use it
    
    Allows SelectCoinsMinConf and SelectCoins be able to switch between
    using BnB or Knapsack for choosing coins.
    
    Has SelectCoinsMinConf do the preprocessing necessary to support either
    BnB or Knapsack. This includes calculating the filtering the effective
    values for each input.
    
    Uses BnB in CreateTransaction to find an exact match for the output.
    If BnB fails, it will fallback to the Knapsack solver.
    
    * Benchmark BnB in the worst case where it exhausts
    
    * Add a test to make sure that negative effective values are filtered
    
    * travis: Clone depth 1 unless $CHECK_DOC
    
    * Fix ComputeTimeSmart test failure with -DDEBUG_LOCKORDER
    
    Failure looks like:
    
        Entering test case "ComputeTimeSmart"
        test_bitcoin: sync.cpp:100: void potential_deadlock_detected(const std::pair<void*, void*>&, const LockStack&, const LockStack&): Assertion `false' failed.
        unknown location(0): fatal error in "ComputeTimeSmart": signal: SIGABRT (application abort requested)
        wallet/test/wallet_tests.cpp(566): last checkpoint
    
    Reproducible with:
    
        ./configure --enable-debug
        make -C src test/test_bitcoin && src/test/test_bitcoin --log_level=test_suite --run_test=wallet_tests/ComputeTimeSmart
    
    Happens due to "92fabcd443 Add LookupBlockIndex function" which acquires
    cs_main from inside CWallet::ComputeTimeSmart.
    
    * Merge READWRITEMANY into READWRITE
    
    * Support deserializing into temporaries
    
    Currently, the READWRITE macro cannot be passed any non-const temporaries, as
    the SerReadWrite function only accepts lvalue references.
    
    Deserializing into a temporary is very common, however. See for example
    things like 's >> VARINT(n)'. The VARINT macro produces a temporary wrapper
    that holds a reference to n.
    
    Fix this by accepting non-const rvalue references instead of lvalue references.
    We don't propagate the rvalue-ness down, as there are no useful optimizations
    that only apply to temporaries.
    
    Then use this new functionality to get rid of many (but not all) uses of the
    'REF' macro (which casts away constness).
    
    * Apply hardening measurements in bitcoind systemd service file
    
    Adds typical systemd hardening measurements for network services.
    
    * Polish interfaces around PeerLogicValidation
    
    * Make PeerLogicValidation final to prevent deriving from it [1]
    * Prevent deletions of NetEventsInterface and CValidationInterface
      objects via a base class pointer
    
    [1] silences the following compiler warning (from Clang 7.0.0):
    
    /usr/include/c++/v1/memory:2285:5: error: delete called on non-final 'PeerLogicValidation' that has
          virtual functions but non-virtual destructor [-Werror,-Wdelete-non-virtual-dtor]
        delete __ptr;
        ^
    /usr/include/c++/v1/memory:2598:7: note: in instantiation of member function
          'std::__1::default_delete<PeerLogicValidation>::operator()' requested here
          __ptr_.second()(__tmp);
          ^
    init.cpp:201:15: note: in instantiation of member function 'std::__1::unique_ptr<PeerLogicValidation,
          std::__1::default_delete<PeerLogicValidation> >::reset' requested here
        peerLogic.reset();
                      ^
    
    * Provide relevant error message if datadir is not writable.
    
    * Remove unused variable in SortForBlock
    
    * Actually disable BnB when there are preset inputs
    
    We don't want to use BnB when there are preset inputs because there
    is some weirdness with making that work with using the KnapsackSolver
    as the fallback. Currently we say that we haven't used bnb when
    there are preset inputs, but we don't actually disable BnB. This fixes
    that.
    
    * Do not check for main() in libminiupnpc
    
    main() { main(); } causes "infinite recursion" compilation warning
    which with -Werror fails the check.
    
    * ax_boost_{chrono,unit_test_framework}.m4: take changes from upstream
    
    Apply changes to
    build-aux/m4/ax_boost_chrono.m4 and
    build-aux/m4/ax_boost_unit_test_framework.m4
    from upstream: https://github.com/peti/autoconf-archive
    
    * Remove redundant checks for MSG_* from configure.ac
    
    It is redundant to check for the presence of MSG_NOSIGNAL macro in
    configure.ac, define HAVE_MSG_NOSIGNAL and then check whether the later
    is defined in the source code. Instead we can check directly whether
    MSG_NOSIGNAL is defined. Same for MSG_DONTWAIT.
    
    In addition to that, the checks we had in configure.ac produce a
    compiler warning about unused variable and thus could fail if
    -Werror is present and erroneously proclaim that the macros are
    not available.
    
    * Test that BnB is not used when there are preset inputs
    
    * Document RPC method aliasing
    
    Suggested by Sjors Provoost <sjors@sprovoost.nl> in
    https://github.com/bitcoin/bitcoin/pull/11536#issuecomment-372820660
    
    * Add static_assert to prevent VARINT(<signed value>)
    
    Using VARINT with signed types is dangerous because negative values will appear
    to serialize correctly, but then deserialize as positive values mod 128.
    
    This commit changes the VARINT macro to trigger an error by default if called
    with an signed value, and updates broken uses of VARINT to pass a special flag
    that lets them keep working with no change in behavior.
    
    * test: Use wait_until in tests where time was used for polling
    
    * test: Use os.path.join consistently in feature_pruning tests
    
    * [Trivial] Simplify if-else blocks and more descriptive variable naming
    
    * Append scripts to new test_list array to fix bad assignment
    
    * wallet: Change output type globals to members
    
    * QA: Add -blocksdir test
    
    * [Tests] Move assert_start_raises_init_error method to TestNode
    
    * [Tests] Require exact match in assert_start_raises_init_eror()
    
    * Avoiding 'file' function name from python2 with more descriptive variable naming
    
    * Qt: remove "new" button during receive-mode in addressbook
    
    * [tests] Fix flake8 warnings in feature_block.py
    
    * [tests] Tidy up feature_block.py
    
    - move all helper methods to the end
    - remove block, create_tx and create_and_sign_tx shortcuts
    - remove --runbarelyexpensive option, since it defaults to True and it's
    unlikely that anyone ever runs the test with this option set to false.
    
    * [tests] Add logging to feature_block.py
    
    * Remove unreachable help conditions
    
    * Rename account to label where appropriate
    
    This change only updates strings and adds RPC aliases, but should simplify the
    implementation of address labels in
    https://github.com/bitcoin/bitcoin/pull/7729, by getting renaming out of the
    way and letting it focus on semantics.
    
    The difference between accounts and labels is that labels apply only to
    addresses, while accounts apply to both addresses and transactions
    (transactions have "from" and "to" accounts). The code associating accounts
    with transactions is clumsy and unreliable so we would like get rid of it.
    
    * Rename wallet_accounts.py test
    
    This is a separate commit because changing the test at the same time as
    renaming it breaks git (and github) rename detection.
    
    * qa: Use node.datadir instead of tmpdir in test framework
    
    * [tests] Change feature_block.py to use BitcoinTestFramework
    
    * [tests] Improve assert message when wait_until() fails
    
    * scripted-diff: rename TestNode to TestP2PConn in tests
    
    Several test scripts define a subclass of P2PInterface called TestNode.
    This commit renames those to TestP2PConn since we already have a
    TestNode class in the test framework.
    
    -BEGIN VERIFY SCRIPT-
    sed -i s/TestNode/TestP2PConn/ test/functional/*py test/functional/test_framework/comptool.py
    _END VERIFY SCRIPT-
    
    * qa: Allow for partial_match when checking init error
    
    This allows the tests to pass on different platforms
    
    * tests: Test connecting to a non-existing server
    
    * tests: Test connecting with non-existing RPC cookie file
    
    * -blocksdir: keep blockindex leveldb database in datadir
    
    * Remove unnecessary NONNEGATIVE_SIGNED
    
    Switch to unsigned encoding, which is backwards compatible and avoids MSVC
    error reported https://github.com/bitcoin/bitcoin/issues/12732
    
    * use base58 map instead of strchr()
    
    * Make FastRandomContext support standard C++11 RNG interface
    
    This makes it possible to plug it into the various standard C++11 random
    distribution algorithms and other functions like std::shuffle.
    
    * Fix typos
    
    * tests: Remove unused argument max_invalid from check_estimates(...)
    
    * Fix typos
    
    * Qt: Warn users about invalid-BIP21 URI bitcoin://
    
    * shuffle selected coins before transaction finalization
    
    * Replace boost::call_once with std::call_once
    
    * Add native support for serializing char arrays without FLATDATA
    
    Support is added to serialize arrays of type char or unsigned char directly,
    without any wrappers. All invocations of the FLATDATA wrappers that are
    obsoleted by this are removed.
    
    This includes a patch by Russell Yanofsky to make char casting type safe.
    
    The serialization of CSubNet is changed to serialize a bool directly rather
    than though FLATDATA. This makes the serialization independent of the size
    of the bool type (and will use 1 byte everywhere).
    
    * Move compressor utility functions out of class
    
    * [config] Remove blockmaxsize option
    
    The blockmaxsize option was marked as deprecated in V0.15.1, and code
    was added to convert provided blockmaxsize into blockmaxweight. However,
    this code was incorrectly implemented, and blockmaxsize was silently
    ignored.
    
    No users have complained about blockmaxsize being ignored, so just
    remove it in V0.17.
    
    * Docs: Improve documentation on standard communication channels
    
    More information about connection on IRC will hopefully help new
    contributors.
    
    * shuffle sendmany recipients ordering to shuffle tx outputs
    
    * add release note for sendmany output shuffling
    
    * [CI]: bump travis timeout for make check to 50m
    
    * Inline CKeyStore::AddKey(const CKey &) in CBasicKeyStore
    
    * Move CKeyStore::cs_KeyStore to CBasicKeyStore
    
    * Make CTxMemPool::isSpent() const
    
    * [REST] Handle UTXO retrieval when ignoring the mempool
    
    Current REST API always returns empty UTXO when invoked without `/checkmempool/` URL part.
    
    After the fix:
    ```
    $ curl -s http://localhost:8332/rest/getutxos/0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098-0.json | jq
    {
      "chainHeight": 514109,
      "chaintipHash": "0000000000000000001fe76d1445e8a6432fd2de04261dc9c5915311dc7ad6de",
      "bitmap": "1",
      "utxos": [
        {
          "height": 1,
          "value": 50,
          "scriptPubKey": {
            "asm": "0496b538e853519c726a2c91e61ec11600ae1390813a627c66fb8be7947be63c52da7589379515d4e0a604f8141781e62294721166bf621e73a82cbf2342c858ee OP_CHECKSIG",
            "hex": "410496b538e853519c726a2c91e61ec11600ae1390813a627c66fb8be7947be63c52da7589379515d4e0a604f8141781e62294721166bf621e73a82cbf2342c858eeac",
            "reqSigs": 1,
            "type": "pubkey",
            "addresses": [
              "12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX"
            ]
          }
        }
      ]
    }
    ```
    
    Before the fix:
    ```
    $ curl -s http://localhost:8332/rest/getutxos/0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098-0.json | jq
    {
      "chainHeight": 514109,
      "chaintipHash": "0000000000000000001fe76d1445e8a6432fd2de04261dc9c5915311dc7ad6de",
      "bitmap": "0",
      "utxos": []
    }
    ```
    
    * Add username and ip logging for RPC method requests
    
    * Qt: Remove unused method setupAmountWidget(...)
    
    * Introduce interface for signing providers
    
    CKeyStore is a rich interface that provides many features, including knowledge
    of scripts and pubkeys for solving, private keys for signing, in addition to
    watch-only keys and scripts, and distinguishing lack of keys from them just
    being encrypted.
    
    The signing logic in script/sign does not actually need most of these features.
    Here we introduce a simpler interface (SigningProvider) which *only* provides
    keys and scripts. This is actually sufficient for signing.
    
    In addtion, we swap the dependency between keystore and script/sign
    (keystore now depends on script/script with CKeyStore deriving from
    SigningProvider, rather than CKeyStore being the interface that signing
    relies on).
    
    * Reduce variable scopes
    
    * Qt: Add wallet selector to debug console
    
    * Qt: QComboBox::setVisible doesn't work in toolbars, so defer adding it at all until needed
    
    * Qt: Get wallet name from WalletModel rather than passing it around
    
    * Qt: When multiple wallets are used, include in notifications the name
    
    * GUI: RPCConsole: Log wallet changes
    
    * Qt: show wallet name in send confirmation dlg in case of multiwallet
    
    * Qt: show wallet name in request dlg in case of multiwallet
    
    * Qt: hide RPCConsole wallet selector when no wallets are present
    
    * rpc: Adjust ifdef to avoid unreachable code
    
    * [Tests] Use blockmaxweight where tests previously had blockmaxsize
    
    * [wallet] Move wallet init functions into WalletInit class.
    
    * [wallet] Create wallet init interface.
    
    * qt: Avoid resetting on resetguisettigs=0
    
    * do not truncate .dat extension for wallets in gui
    
    * Change all python files to use Python3
    
    * init: Fix help message for checkblockindex
    
    * doc: Refer to witness reserved value as spec. in the BIP
    
    * doc: Add note about our preference for scoped enumerations ("enum class")
    
    * [wallet] Use global g_wallet_init_interface to init/destroy the wallet.
    
    This commit creates a global g_wallet_init_interface, which is created
    in bitcoind and bitcoin-qt. g_wallet_init_interface is used to init
    and destroy the wallet.
    
    This removes the dependency from init.cpp on the wallet library.
    
    * [wallet] Add dummy wallet init class
    
    * Fix error in memory usage calculation (unintended integer division)
    
    * qa: Fix function names in feature_blocksdir
    
    * Add additional tests for GetBoolArg()
    
    This is meant to be an intermediate commit to prove that the next does not
    introduce any changes in the semantics of boolean option parsing.
    
    * Track negated arguments in the argument paser.
    
    This commit adds tracking for negated arguments. This change will be used in a
    future commit that allows disabling the debug.log file using -nodebuglogfile.
    
    * test: Make summary row bold-red if any test failed
    
    Make the summary row of the test runner bold red if any test fails.
    This helps visibility if something fails.
    
    * Make base58 python contrib code work with python3
    
    * test: List any failed tests at the end of test_runner output
    
    Change sorting output to put failed tests at the end of test_runner
    output.
    
    * [Tests] fix a typo in TestNode.assert_start_raises_init_error()
    
    Also, use specific exception for testing TestNode initialization failure.
    
    * contrib: Fix check-doc script regexes
    
    * contrib: Remove unused import string
    
    * init: Remove help text for non-existent -fuzzmessagestest arg
    
    * Revert "test: Update trust git root".
    
    This reverts commit 7deba93bdc76616011a9f493cbc203d60084416f.
    
    This is neither a "test" change, nor should the trusted-git-root
    have been updated - there is a process for expired PGP keys.
    
    * Add Marco-expired-key-signed-commits to allow-revsig-commits
    
    * Improve formatting of developer notes
    
    Summary of changes:
    
     * Add a TOC to the page
     * Make tips and tricks section use h3 headings
     * Reformat and clarify some sections
    
    * Add --with-sanitizers option to configure
    
    This enables the use of different compiler sanitizers, coresponding to
    the -fsanitize option in GCC and Clang.
    
    * [tests] Fix intermittent rpc_net.py failure.
    
    rpc_net.py would intermittently fail on Travis, probably
    due to assuming that two consecutive RPC calls were atomic.
    Fix this by only testing that amounts are bounded above and
    below rather than equal.
    
    * [contrib] fixup security-check.py Python3 support
    
    * [contrib] fixup symbol-check.py Python3 support
    
    * Bugfix: RPC: savemempool: Don't save until LoadMempool() is finished
    
    * Increase LevelDB max_open_files unless on 32-bit Unix.
    
    This change significantly increases IBD performance by increasing the
    amount of the UTXO index that can remain in memory. To ensure this
    doesn't cause problems in the future, a static_assert on the LevelDB
    version has been added, which must be updated by anyone upgrading
    LevelDB.
    
    * [verify-commits] Add some additional useful documentation.
    
    * test: Remove travis checkout depth
    
    Tests on branches of non-head commits are failing, because the depth of
    1 doesn't allow checking them out.
    
    Remove `depth` as was the case before fa44af5cd2152a21da9ef3e48c073a668bf2df27,
    so that Travis can determine the minimum depth to check out.
    
    * Fixes Missing QRCode Build
    
    Build was missing qr code(qrencode libs) support and brew team no longer supports anything less than macOS 10.11
    
    * Fixed notes
    
    Fixed notes to reflect that 10.8 is still supported via gitian
    
    * Rolled Back Tested on
    
    Below is a suggestion for future release after EOL is done
    
    * Works with macOS 10.11 through 10.13 on 64-bit Intel processors only.
    
    * macOS 10.8 and higher is still supported on [gitian](/contrib) builds
    
    * Update build-osx.md
    
    Below is a suggestion for future release after EOL is done
    
    * Works with macOS 10.11 through 10.13 on 64-bit Intel processors only.
    
    * macOS 10.8 and higher is still supported on [gitian](/contrib) builds
    924d4ae38d
  3. 2a5A1Ghu1 closed this on Apr 5, 2018

  4. MarcoFalke locked this on Dec 16, 2021

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-04-13 18:15 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me