Skip to content

Bitcoin ABC 0.15.0

Bitcoin ABC version 0.15.0 is now available from:

https://download.bitcoinabc.org/0.15.0/

This release includes the following features and fixes:

  • Reserve block space for high priority transactions (D485)
  • Use "bitcoincash:" URI (D466)
  • Add and accept Bitcoin Cash networking magic (D400)
  • Peer preferentially with NODE_CASH nodes (D457)
  • Hardcoded seeds update (D403)
  • Remove UAHF RPC calls, and some of the UAHF activation logic (D407, D417)
  • Various test fixes and other cleanups now that UAHF activation is past
  • Various changes now that we do replay protected txns only (D437, D440, D442, D444, D451, D455, D456)
  • Make SCRIPT_VERIFY_STRICTENC a mandatory flag (D421)
  • Fix RPC signrawtransaction silently accepting missing amount field (D449)
  • Fix a some small memory leaks, and an overflow (D372, D452, D472)
  • Added sanitizer support (D474, D481)
  • Rename package to bitcoin-abc-* (D482, D489, D510, D513)
  • Cryptographic randomness improvements (backport from Core PR9821 and PR9792) (D488, D490)
  • Store the UTXO set on a per output basis rather than a per transaction basis (backport from Core)
  • Various other backports and fixes from Core
  • Various fixes and improvements to test suite
  • Various code cleanups and style improvements
  • Low level RPC error code changes (D500 / backport of PR9853)

Low-level RPC changes (D500)

  • Error codes have been updated to be more accurate for the following error cases:
  • getblock now returns RPC_MISC_ERROR if the block can't be found on disk (for example if the block has been pruned). Previously returned RPC_INTERNAL_ERROR.
  • pruneblockchain now returns RPC_MISC_ERROR if the blocks cannot be pruned because the node is not in pruned mode. Previously returned RPC_METHOD_NOT_FOUND.
  • pruneblockchain now returns RPC_INVALID_PARAMETER if the blocks cannot be pruned because the supplied timestamp is too late. Previously returned RPC_INTERNAL_ERROR.
  • pruneblockchain now returns RPC_MISC_ERROR if the blocks cannot be pruned because the blockchain is too short. Previously returned RPC_INTERNAL_ERROR.
  • setban now returns RPC_CLIENT_INVALID_IP_OR_SUBNET if the supplied IP address or subnet is invalid. Previously returned RPC_CLIENT_NODE_ALREADY_ADDED.
  • setban now returns RPC_CLIENT_INVALID_IP_OR_SUBNET if the user tries to unban a node that has not previously been banned. Previously returned RPC_MISC_ERROR.
  • removeprunedfunds now returns RPC_WALLET_ERROR if bitcoind is unable to remove the transaction. Previously returned RPC_INTERNAL_ERROR.
  • removeprunedfunds now returns RPC_INVALID_PARAMETER if the transaction does not exist in the wallet. Previously returned RPC_INTERNAL_ERROR.
  • fundrawtransaction now returns RPC_INVALID_ADDRESS_OR_KEY if an invalid change address is provided. Previously returned RPC_INVALID_PARAMETER.
  • fundrawtransaction now returns RPC_WALLET_ERROR if bitcoind is unable to create the transaction. The error message provides further details. Previously returned RPC_INTERNAL_ERROR.
  • The gettxoutsetinfo response now contains disk_size and bogosize instead of bytes_serialized. The first is a more accurate estimate of actual disk usage, but is not deterministic. The second is unrelated to disk usage, but is a database-independent metric of UTXO set size: it counts every UTXO entry as 50 + the length of its scriptPubKey.

Reserve block space for high priority transactions (D485)

By default reserve 5% of the max generated block size parameter to hiprio transactions. Hence a bitcoind instance running with an unmodified configuration will reserve 100K for high priority transactions. The parameter name used for this configuration blockprioritypercentage. While introducing this new parameter we deprecated blockprioritysize(it was used to specify the amount of high prio reserved area in byte).

A transaction is considered high priority if its priority is higher than this threshold: COIN * 144 / 250, where COIN is the value of a one bitcoin UTXO expressed in satoshis. Thus a transaction who as an input of 1 bitcoin and are 144 blocks old and whose size is 250 bytes is considered the priority cut-off.