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.
