:: [Libbitcoin] Pending release v3.2.0
Top Page
Delete this message
Reply to this message
Author: Eric Voskuil
Date:  
To: Libbitcoin Development
Subject: [Libbitcoin] Pending release v3.2.0
I'm readying a v3.2.0 release (not tagged yet) of most libraries. This
includes significant performance enhancements, new features,
simplified management and notably two consensus fixes:

* Require coinbase pattern is minimal push data.
* Fix reorg double-spend-in-branch off-by-one error.

If you want to try it out right now all changes are in master. I'll be
cherry-picking these over to the version3 release branch soon. We had
not planned another v3 update but given the need to patch consensus,
current non-breaking (mostly) work has been back-ported as well.

Full release notes:


libbitcoin (system)


Optimize block.check.

Optimize payment_address.extract.

Optimize script.create_endorsement.

Optimize script.is_unspendable.

Add new error codes (peer_throttling, stale_chain, dusty_transaction).
* These are used in new features of dependent libraries.

Add transaction.is_dusty
* This enables dust policy.

Add chain_state::signal_version
* This enables automated pool and new version generation.

Remove block version parameterization from tx pool chain_state
construction.
* This is now computed from forks configuration.

Require coinbase pattern is minimal push data.
* This fixes a consensus bug.

Validate tx pool for current finality.
* This is a consensus issue only if mining on the tx pool without
additional validation (not currently enabled).

Add log::initialize verbosity parameter and verbose log severity.
* This enables a generalized verbose log level.



libbitcoin-network


Increase minimum seeding result from 1 to 100 hosts.
* This causes the admin to notice an insufficient seeding operation.

Fix address blacklisting by using host-only comparison.
* Formerly the port number was included in the comparison, rendering
the feature unusable.

Move invalid magic to debug log level.
* http scanners frequently hit the port triggering this warning.

Move inbound connections to info/console log level.



libbitcoin-explorer


Change tx-decode "address" properties to "address_hash".
* This fix eliminates tx-decode dependency on payment address
versions, which were always set to "1".

Add tests and fixup log::initialize.



libbitcoin-database


Add block_result.transaction_hashes.
* This significantly optimizes reading a merkle block.

Make tx result and block height metadata read-write safe.
* This enables full read-write concurrency (without spin lock).



libbitcoin-blockchain


Fix reorg double-spend-in-branch off-by-one error.
* This is a consensus fix that affects double-spend computation in a
reorg branch (off-by-one error).

Fix fetch_locator_block_hashes and fetch_locator_header_hashes
thresholding.
* This fixes a significant inefficiency due to an inadvertent failure
to apply thresholding.

Cache top block and last transaction.
* This is a significant optimization as it prevents repeating queries
following most announcements.

Eliminate the spin lock for all queries.
* This is a significant optimization as it enables full read-write
concurrency.

Optimize block_chain.fetch_merkle_block using new
block_result.transaction_hashes.

Add new notify_limit_hours setting.
* This defines "close to fully-synced" so that services can be
automatically enabled/disabled, simplifying configuration.

Add new setting sigop_fee_satoshis.
* This enabled additional tx pool fee requirement per sigop.

Add new setting minimum_output_satoshis.
* This defines the dust limit for the tx pool.

Rename byte_fee_satoshis setting.
* This is a minor compatibility break with v3.x.

Signal the version anticipated by the set of configured forks.
* This eliminates the need for the block_version setting and ensures
correctness.

Ensure that at least one satoshi is required when a fee is configured,
in the case of fee rouding.

Optimize settings.init (minor).



libbitcoin-node


Eliminate block polling and change block_poll_seconds setting to
block_latency_seconds.
* This is a significant block-first sync optimization, preventing
redundant downloads per peer, and eliminating need for manual
configuration changes.

Parse revised configuration settings from dependent libraries.

Do not announce blocks or transactions to peers when chain is stale.

Do not process transactions from peers when chain is stale.

Initialize verbose log level.

Revise shutdown text.



libbitcoin-server


Do not publish blocks/tx or announce addresses if chain is stale.
* This eliminates the need for manual configuration changes to enable
services once synced.

Change service settings to be on by default.

Interpret subscription_expiration_minutes of zero (0) as infinite
subscription.

Parse revised configuration settings from dependent libraries.

Initialize verbose log level.

e