Skip to content

Releases: stacks-network/stacks-core

Release 3.1.0.0.3

15 Jan 21:55
906a8cc
Compare
Choose a tag to compare

This release contains several bugfixes and improvements, such as the stacks-signer binary will no longer accept messages for blocks from different reward cycles.
This release is compatible with chainstate directories from 3.x.x.x.x.

Everyone running the stacks-signer binary is strongly encouraged to upgrade to this release.

For signers, there is an additional configuration change that is recommended for this upgrade.
This change configures your signer to allow tenure extensions after 2 minutes of idle time, aligning with the behavior of the majority of other signers.
In the stacks-signer config TOML file, set the following value

tenure_idle_timeout_secs = 120

The version of stacks-signer compatible with this release is 3.1.0.0.3.0, available at: https://github.com/stacks-network/stacks-core/releases/tag/signer-3.1.0.0.3.0.

Added

  • Add tenure_timeout_secs to the miner for determining when a time-based tenure extend should be attempted.
  • Added configuration option block_proposal_max_age_secs under [connection_options] to prevent processing stale block proposals
  • Introduced the block_proposal_max_age_secs configuration option for signers, enabling them to automatically ignore block proposals that exceed the specified age in seconds.

Changed

  • The RPC endpoint /v3/block_proposal no longer will evaluate block proposals more than block_proposal_max_age_secs old
  • When a transaction is dropped due to replace-by-fee, the /drop_mempool_tx event observer payload now includes new_txid, which is the transaction that replaced this dropped transaction. When a transaction is dropped for other reasons, new_txid is null. #5381
  • Nodes will assume that all PoX anchor blocks exist by default, and stall initial block download indefinitely to await their arrival (#5502)
  • Improvements to the stale signer cleanup logic: deletes the prior signer if it has no remaining unprocessed blocks in its database
  • Signers now listen to new block events from the stacks node to determine whether a block has been successfully appended to the chain tip

Fixed

  • Signers no longer accept messages for blocks from different reward cycles (#5662)

What's Changed

  • [signer] Add block_proposal_max_age_secs signer configuration to drop old proposals without further processing by @jferrant in #5549
  • fix: New lifetime warnings in Rust 1.83 by @jbencin in #5564
  • chore: fix typo in log by @obycode in #5565
  • Remove signers older than the current reward cycle if they have no more blocks to process by @jferrant in #5562
  • Adding changelog for 3.1.0.0.2.x by @wileyj in #5571
  • merge Release/3.1.0.0.2 to master by @wileyj in #5572
  • fix: set epoch to 3.1 in Clarity DB by @obycode in #5561
  • Fix p2p ci no tests errors by @jferrant in #5574
  • feat: Add --config and --network flags to several stacks-inspect subcommands by @jbencin in #5551
  • Feat/miner self issued time based tenure extend by @jferrant in #5573
  • Fix/ci no tests full genesis test by @jferrant in #5576
  • Add clippy to CI by @jferrant in #5582
  • Add SignerEvent::NewNakamotoBlock and do not update a block to GloballyAccepted until event arrives by @jferrant in #5516
  • Fix/5502 by @jcnelson in #5544
  • fix: remove DNS names from peer_host field by @obycode in #5604
  • Fix/naka unlock events by @zone117x in #5597
  • Add clarity and libsigner to clippy CI and fix all clippy warnings by @jferrant in #5592
  • Do not process block validation responses for the wrong reward cycle by @jferrant in #5612
  • Add stacks-common to clippy CI and fix errors by @jferrant in #5598
  • Fix profile-sqlite feature build errors by @jferrant in #5623
  • test: fix bitcoin test yaml by @obycode in #5603
  • Fix all redundant_field_name warnings in stackslib by @jferrant in #5627
  • update peer host to parse dns instead of ip by @ASuciuX in #5533
  • Chore/standardized sample dir by @wileyj in #5594
  • Fix unused_unit clippy warnings in stackslib by @jferrant in #5631
  • feat: Nakamoto block support for stacks-insepct try-mine by @jbencin in #5584
  • Fix all redundant-static-lifetimes clippy warnings by @jferrant in #5625
  • chore: Remove unused deps found by cargo udeps by @jbencin in #5632
  • chore: Apply Clippy lint iter_with_drain by @jbencin in #5641
  • feat: event emitter will now emit new_txid in-case a tx replaces another by @hstove in #5605
  • Fix clippy::inconsistent_digit_grouping warnings in stacks lib by @jferrant in #5636
  • Fix clippy::needless_lifetimes warnings throughout stackslib by @jferrant in #5638
  • Fix zero_prefixed_literal warnings by @jferrant in #5639
  • Remove unnecessary casts throughout stackslib by @jferrant in #5624
  • Filter out phantom txs from test_observer::parse_transaction fn by @jferrant in #5635
  • Fix validation queue race condition in block approval vs validaiton submission by @jferrant in #5497
  • Fix string to empty string comparison and len zero warnings by @jferrant in #5628
  • chore: Apply new lints in Clippy 1.78 (version 2) by @jbencin in #5643
  • chore: Apply Clippy lint borrow_deref_ref by @jbencin in #5648
  • Fix mistaken 0 as u32 replacement with 0_u8 in delegate_stx.rs serial… by @jferrant in #5653
  • Fix/use cargo workspace by @rdeioris in #5658
  • Merge master to develop (3.1.0.0.2) via intermediary branch by @wileyj in #5607
  • docs: update testnet configs with new epoch heights by @CharlieC3 in #5672
  • Fix clippy::bind_instead_of_map, clippy::map_flatten, clippy::*map_identity throughout stackslib by @jferrant in #5652
  • [node] Add "connections.block_proposal_max_age_secs" and ignore block proposals more than the configured amount by @jferrant in #5552
  • Increased mining timeout in mock_mining and partial_tenure_fork integration tests by @rdeioris in #5670
  • Fix/bitcoind forking test signerdb state by @jferrant in #5674
  • fix: do not enable testing feature in stacks-common by @obycode in #5675
  • Release Signer Alongside Node by @BowTiedDevOps in #5495
  • Do not accept signatures, block proposals, or block responses for blocks from different reward cycles by @jferrant in #5662
  • Revert "Release Signer Alongside Node" by @wileyj in #5681
  • Update versioning for stacks-signer changelog in release branch by @wileyj in #5709

Full Changelog: 3.1.0.0.2...3.1.0.0.3

Release signer-3.1.0.0.3.0

15 Jan 21:28
309b8d5
Compare
Choose a tag to compare

This release contains several bugfixes and improvements, such as the stacks-signer binary will no longer accept messages for blocks from different reward cycles.
This release is compatible with chainstate directories from 3.x.x.x.x.

Everyone running the stacks-signer binary is strongly encouraged to upgrade to this release.

For signers, there is an additional configuration change that is recommended for this upgrade.
This change configures your signer to allow tenure extensions after 2 minutes of idle time, aligning with the behavior of the majority of other signers.
In the stacks-signer config TOML file, set the following value

tenure_idle_timeout_secs = 120

The version of stacks-signer compatible with this release is 3.1.0.0.3.0, available at: https://github.com/stacks-network/stacks-core/releases/tag/signer-3.1.0.0.3.0.

Added

  • Add tenure_timeout_secs to the miner for determining when a time-based tenure extend should be attempted.
  • Added configuration option block_proposal_max_age_secs under [connection_options] to prevent processing stale block proposals
  • Introduced the block_proposal_max_age_secs configuration option for signers, enabling them to automatically ignore block proposals that exceed the specified age in seconds.

Changed

  • The RPC endpoint /v3/block_proposal no longer will evaluate block proposals more than block_proposal_max_age_secs old
  • When a transaction is dropped due to replace-by-fee, the /drop_mempool_tx event observer payload now includes new_txid, which is the transaction that replaced this dropped transaction. When a transaction is dropped for other reasons, new_txid is null. #5381
  • Nodes will assume that all PoX anchor blocks exist by default, and stall initial block download indefinitely to await their arrival (#5502)
  • Improvements to the stale signer cleanup logic: deletes the prior signer if it has no remaining unprocessed blocks in its database
  • Signers now listen to new block events from the stacks node to determine whether a block has been successfully appended to the chain tip

Fixed

  • Signers no longer accept messages for blocks from different reward cycles (#5662)

What's Changed

  • [signer] Add block_proposal_max_age_secs signer configuration to drop old proposals without further processing by @jferrant in #5549
  • fix: New lifetime warnings in Rust 1.83 by @jbencin in #5564
  • chore: fix typo in log by @obycode in #5565
  • Remove signers older than the current reward cycle if they have no more blocks to process by @jferrant in #5562
  • Fix p2p ci no tests errors by @jferrant in #5574
  • feat: Add --config and --network flags to several stacks-inspect subcommands by @jbencin in #5551
  • Feat/miner self issued time based tenure extend by @jferrant in #5573
  • Fix/ci no tests full genesis test by @jferrant in #5576
  • Add clippy to CI by @jferrant in #5582
  • Add SignerEvent::NewNakamotoBlock and do not update a block to GloballyAccepted until event arrives by @jferrant in #5516
  • Fix/5502 by @jcnelson in #5544
  • fix: remove DNS names from peer_host field by @obycode in #5604
  • Fix/naka unlock events by @zone117x in #5597
  • Add clarity and libsigner to clippy CI and fix all clippy warnings by @jferrant in #5592
  • Add stacks-common to clippy CI and fix errors by @jferrant in #5598
  • Fix profile-sqlite feature build errors by @jferrant in #5623
  • test: fix bitcoin test yaml by @obycode in #5603
  • Fix all redundant_field_name warnings in stackslib by @jferrant in #5627
  • update peer host to parse dns instead of ip by @ASuciuX in #5533
  • Chore/standardized sample dir by @wileyj in #5594
  • Fix unused_unit clippy warnings in stackslib by @jferrant in #5631
  • feat: Nakamoto block support for stacks-insepct try-mine by @jbencin in #5584
  • Fix all redundant-static-lifetimes clippy warnings by @jferrant in #5625
  • chore: Remove unused deps found by cargo udeps by @jbencin in #5632
  • chore: Apply Clippy lint iter_with_drain by @jbencin in #5641
  • feat: event emitter will now emit new_txid in-case a tx replaces another by @hstove in #5605
  • Fix clippy::inconsistent_digit_grouping warnings in stacks lib by @jferrant in #5636
  • Fix clippy::needless_lifetimes warnings throughout stackslib by @jferrant in #5638
  • Fix zero_prefixed_literal warnings by @jferrant in #5639
  • Remove unnecessary casts throughout stackslib by @jferrant in #5624
  • Filter out phantom txs from test_observer::parse_transaction fn by @jferrant in #5635
  • Fix validation queue race condition in block approval vs validaiton submission by @jferrant in #5497
  • Fix string to empty string comparison and len zero warnings by @jferrant in #5628
  • chore: Apply new lints in Clippy 1.78 (version 2) by @jbencin in #5643
  • chore: Apply Clippy lint borrow_deref_ref by @jbencin in #5648
  • Fix mistaken 0 as u32 replacement with 0_u8 in delegate_stx.rs serial… by @jferrant in #5653
  • Fix/use cargo workspace by @rdeioris in #5658
  • Merge master to develop (3.1.0.0.2) via intermediary branch by @wileyj in #5607
  • docs: update testnet configs with new epoch heights by @CharlieC3 in #5672
  • Fix clippy::bind_instead_of_map, clippy::map_flatten, clippy::*map_identity throughout stackslib by @jferrant in #5652
  • [node] Add "connections.block_proposal_max_age_secs" and ignore block proposals more than the configured amount by @jferrant in #5552
  • Increased mining timeout in mock_mining and partial_tenure_fork integration tests by @rdeioris in #5670
  • Fix/bitcoind forking test signerdb state by @jferrant in #5674
  • fix: do not enable testing feature in stacks-common by @obycode in #5675
  • Release Signer Alongside Node by @BowTiedDevOps in #5495
  • Do not accept signatures, block proposals, or block responses for blocks from different reward cycles by @jferrant in #5662
  • Revert "Release Signer Alongside Node" by @wileyj in #5681
  • Update versioning for stacks-signer changelog in release branch by @wileyj in #5708

Full Changelog: signer-3.1.0.0.2.1...signer-3.1.0.0.3.0

Release signer-3.1.0.0.2.1

23 Dec 20:54
eb86527
Compare
Choose a tag to compare

This hotfix release fixes a problem where previous reward cycle signers were trying to process block validation response messages that do not apply to the current cycle.
This release is compatible with chainstate directories from 3.x.x.x.x.

All signers are strongly encouraged to upgrade to this hotfix release as soon as possible

This version of the stacks-signer compatible the stacks-node release 3.1.0.0.2, available at: https://github.com/stacks-network/stacks-core/releases/tag/3.1.0.0.2.

What's Changed

  • Prevent old reward cycle signers from processing block validation response messages that do not apply to blocks from their cycle.

Full Changelog: release/signer-3.1.0.0.2.0...release/signer-3.1.0.0.2.1

What's Changed

  • Adding changelog for 3.1.0.0.2.x by @wileyj in #5571
  • merge Release/3.1.0.0.2 to master by @wileyj in #5572
  • fix: set epoch to 3.1 in Clarity DB by @obycode in #5561
  • Do not process block validation responses for the wrong reward cycle by @jferrant in #5612

Full Changelog: signer-3.1.0.0.2.0...signer-3.1.0.0.2.1

Release 3.1.0.0.2

13 Dec 16:05
Compare
Choose a tag to compare

This release introduces all necessary code changes for SIP-029, as well as tenure-extend to happen which enables miners and signers to tenure-extend every 5 minutes (on average).
This release is compatible with chainstate directories from 3.x.x.x.x.

** All node operators are required to upgrade to this release since it also contains the 3.1 hard fork defined in SIP-029. **
** Epoch 3.1 is set to activate at Bitcoin block 875_000, around Mon Dec 16 2024 08:47:39 GMT. **
** Failing to upgrade prior to Bitcoin block 875_000 will require a genesis sync. **

The version of stacks-signer compatible with this release is 3.1.0.0.2.0, available at: https://github.com/stacks-network/stacks-core/releases/tag/signer-3.1.0.0.2.0.

Added

  • SIP-029 consensus rules, activating in epoch 3.1 at block 875,000 (see SIP-029 for details)
  • New RPC endpoints
  • /v2/clarity/marf/:marf_key_hash
  • /v2/clarity/metadata/:principal/:contract_name/:clarity_metadata_key
  • When a proposed block is validated by a node, the block can be validated even when the block version is different than the node's default (#5539)
  • A miner will now generate a tenure-extend when at least 70% of the signers have confirmed that they are willing to allow one, via the new timestamp included in block responses. This allows the miner to refresh its budget in between Bitcoin blocks. (#5476)
  • Set the epoch to 3.1 in the Clarity DB upon activation.

Changed

  • Added tenure extend timestamp to signer block responses
  • Added tenure_idle_timeout_secs configuration option for determining when a time-based tenure extend will be accepted

What's Changed

Full Changelog: 3.1.0.0.0...3.1.0.0.2

What's Changed

Full Changelog: 3.1.0.0.0...3.1.0.0.2

What's Changed

Full Changelog: 3.1.0.0.0...3.1.0.0.2

Release signer-3.1.0.0.2.0

13 Dec 16:37
Compare
Choose a tag to compare

This release introduces all necessary code changes for SIP-029, as well as tenure-extend to happen which enables miners and signers to tenure-extend every 5 minutes (on average).
This release is compatible with chainstate directories from 3.x.x.x.x.

** All node operators are required to upgrade to this release since it also contains the 3.1 hard fork defined in SIP-029. **
** Epoch 3.1 is set to activate at Bitcoin block 875_000, around Mon Dec 16 2024 08:47:39 GMT. **
** Failing to upgrade prior to Bitcoin block 875_000 will require a genesis sync. **

The version of stacks-signer compatible with this release is 3.1.0.0.2.0, available at: https://github.com/stacks-network/stacks-core/releases/tag/signer-3.1.0.0.2.0.

Added

  • SIP-029 consensus rules, activating in epoch 3.1 at block 875,000 (see SIP-029 for details)
  • New RPC endpoints
  • /v2/clarity/marf/:marf_key_hash
  • /v2/clarity/metadata/:principal/:contract_name/:clarity_metadata_key
  • When a proposed block is validated by a node, the block can be validated even when the block version is different than the node's default (#5539)
  • A miner will now generate a tenure-extend when at least 70% of the signers have confirmed that they are willing to allow one, via the new timestamp included in block responses. This allows the miner to refresh its budget in between Bitcoin blocks. (#5476)
  • Set the epoch to 3.1 in the Clarity DB upon activation.

Changed

  • Added tenure extend timestamp to signer block responses
  • Added tenure_idle_timeout_secs configuration option for determining when a time-based tenure extend will be accepted

What's Changed

Full Changelog: 3.1.0.0.1...signer-3.1.0.0.2.0

What's Changed

Full Changelog: signer-3.1.0.0.0.0...signer-3.1.0.0.2.0

What's Changed

Full Changelog: signer-3.1.0.0.0.0...signer-3.1.0.0.2.0

What's Changed

Full Changelog: signer-3.1.0.0.0.0...signer-3.1.0.0.2.0

Release 3.0.0.0.4

03 Dec 15:56
5f54e64
Compare
Choose a tag to compare

What's Changed

Full Changelog: 3.0.0.0.3...3.0.0.0.4

Release signer-3.0.0.0.4.0

03 Dec 18:17
5f54e64
Compare
Choose a tag to compare
Pre-release

What's Changed

Full Changelog: 3.0.0.0.3...signer-3.0.0.0.4.0

Release 3.0.0.0.3

23 Nov 06:41
Compare
Choose a tag to compare

What's Changed

  • chore: remove irrefutable if let by @obycode in #5424
  • fix: remove duplicate conditions by @obycode in #5422
  • fix: include txid in more failure logs by @janniks in #4396
  • test: additional scenarios for empty sortition tenure extends by @obycode in #5415
  • merge release branch back to develop by @wileyj in #5428
  • Add config option tenure_last_block_proposal_timeout_secs and do not allow reorgs at tenure boundary before it is exceeded by @jferrant in #5425
  • Fix: snappy downloader by @jcnelson in #5393
  • Fix miner forking by being strict about sortition winners by @jferrant in #5435
  • feat: add block_commit_delay_ms config option by @obycode in #5420
  • Fix logs to use inplace formatting in stacks node by @jferrant in #5419
  • feat: add blockhash index to metadata_table Clarity VM table by @hstove in #5436
  • Miner can continue mining after an empty tenure followed by empty sortition by @hstove in #5411
  • test: reduce flakiness in microblocks_disabled by @obycode in #5442
  • Replace make_tenure_bitvector debug logs with trace level logs by @jferrant in #5448
  • Feat/signer track validation submission with config timeout by @jferrant in #5409
  • chore: log if metrics_endpoint but no feature flag by @hstove in #5279
  • fix: better error logging with signerdb insert error by @hstove in #5475
  • refactor: add index method for StacksEpochId by @obycode in #5350
  • Spend down the block budget limit by x% every block by @jferrant in #5450
  • Test: Add replay block command for nakamoto blocks by @kantai in #5346
  • feat: always broadcast a BlockResponse, even if globally accepted by @hstove in #5454
  • move net::api::tests::postblock_proposal::test_try_make_response to p… by @hstove in #5485
  • Feat/shadow block tooling by @jcnelson in #5362
  • Feature: rpc blockbyheight by @rdeioris in #5445
  • Add info logs for adding and removing a neighbor by @ASuciuX in #5459
  • Fix/http stall on invalid message by @jcnelson in #5491
  • Tenure extend when the previous tenure is bad by @obycode in #5452
  • Feat: Shadow block recovery mechanism by @jcnelson in #5296
  • Updating changelogs for 3.0.0.0.3 by @wileyj in #5499

New Contributors

Full Changelog: 3.0.0.0.1...3.0.0.0.3

Release signer-3.0.0.0.3.0

23 Nov 07:02
Compare
Choose a tag to compare

What's Changed

  • chore: remove irrefutable if let by @obycode in #5424
  • fix: remove duplicate conditions by @obycode in #5422
  • fix: include txid in more failure logs by @janniks in #4396
  • test: additional scenarios for empty sortition tenure extends by @obycode in #5415
  • merge release branch back to develop by @wileyj in #5428
  • Add config option tenure_last_block_proposal_timeout_secs and do not allow reorgs at tenure boundary before it is exceeded by @jferrant in #5425
  • Fix: snappy downloader by @jcnelson in #5393
  • Fix miner forking by being strict about sortition winners by @jferrant in #5435
  • feat: add block_commit_delay_ms config option by @obycode in #5420
  • Fix logs to use inplace formatting in stacks node by @jferrant in #5419
  • feat: add blockhash index to metadata_table Clarity VM table by @hstove in #5436
  • Miner can continue mining after an empty tenure followed by empty sortition by @hstove in #5411
  • test: reduce flakiness in microblocks_disabled by @obycode in #5442
  • Replace make_tenure_bitvector debug logs with trace level logs by @jferrant in #5448
  • Feat/signer track validation submission with config timeout by @jferrant in #5409
  • chore: log if metrics_endpoint but no feature flag by @hstove in #5279
  • fix: better error logging with signerdb insert error by @hstove in #5475
  • refactor: add index method for StacksEpochId by @obycode in #5350
  • Spend down the block budget limit by x% every block by @jferrant in #5450
  • Test: Add replay block command for nakamoto blocks by @kantai in #5346
  • feat: always broadcast a BlockResponse, even if globally accepted by @hstove in #5454
  • move net::api::tests::postblock_proposal::test_try_make_response to p… by @hstove in #5485
  • Feat/shadow block tooling by @jcnelson in #5362
  • Feature: rpc blockbyheight by @rdeioris in #5445
  • Add info logs for adding and removing a neighbor by @ASuciuX in #5459
  • Fix/http stall on invalid message by @jcnelson in #5491
  • Tenure extend when the previous tenure is bad by @obycode in #5452
  • Feat: Shadow block recovery mechanism by @jcnelson in #5296
  • Updating changelogs for 3.0.0.0.3 by @wileyj in #5499

New Contributors

Full Changelog: 3.0.0.0.1...signer-3.0.0.0.3.0

Release 3.0.0.0.2

08 Nov 19:25
be9ed61
Compare
Choose a tag to compare

What's Changed

  • chore: remove irrefutable if let by @obycode in #5424
  • fix: remove duplicate conditions by @obycode in #5422
  • fix: include txid in more failure logs by @janniks in #4396
  • test: additional scenarios for empty sortition tenure extends by @obycode in #5415
  • merge release branch back to develop by @wileyj in #5428
  • Add config option tenure_last_block_proposal_timeout_secs and do not allow reorgs at tenure boundary before it is exceeded by @jferrant in #5425
  • Fix: snappy downloader by @jcnelson in #5393
  • Updating changelogs for 3.0.0.0.2 by @wileyj in #5438

Full Changelog: 3.0.0.0.1...3.0.0.0.2