This release contains bugfixes and improvements to the stacks-node and stacks-signer binaries, ensuring more consistent block production.
This release is compatible with chainstate directories from 3.4.x.x.x.
The version of stacks-signer compatible with this release is 3.4.0.0.2.0, available at: https://github.com/stacks-network/stacks-core/releases/tag/signer-3.4.0.0.2.0.
This release includes the following changes:
https://github.com/stacks-network/stacks-core/blob/3.4.0.0.2/CHANGELOG.md
Added
- Miners now track
failed_txidfrom signer block rejections. When a blocking minority (>30%) of signers report the same transaction as failed, the miner excludes it from the next block proposal. A newProblematicTransactionvalidation reject code distinguishes genuinely broken transactions (permanently blacklisted from the mempool) from context-dependent failures like deadline exceeded (excluded until a successful block only). - Added some diagnostics data to a miner's block proposal StackerDB message. This data contains nothing confidential, only some information about the miner's view of the world. This may help with investigating issues where a miner keeps submitting blocks that are then rejected by signers.
- Added
error!-level logging withUNREACHABLE_ERROR_TRIGGEREDmarker andstacks_unreachable_errors_totalPrometheus counter when unreachable errors are hit during transaction processing (#7046) - Add a helper script for creating changelog fragments.
- Add tests for handling of bad block commits (vtxindex=0, wrong parent).
Changed
- Optimized
SequenceData::retain_valuesbuilt-in from O(n²) to O(n) - Renamed
SequenceData::retain_valuestoSequenceData::try_retainand changed it to takeselfby value instead of&mut self - Breaking: Removed duplicate
valuefield from NFT and SmartContract observer event payloads. Useraw_value(hex-encoded Clarity value) instead. - Breaking: Removed
resultfield from block replay/simulate transaction responses. Useresult_hex(hex-encoded Clarity value) instead. BlockResponseDataversion bumped from 4 to 5 to include the newfailed_txidfield. Older signers that don't send this field are handled gracefully via backwards-compatible deserialization.- Remove unused
version_stringfunction (for building binary version) fromclarityandclarity-typescrates. - Improved performance for
fold,map, andfilterClarity functions - Refactor to avoid the risk of panics when creating
ClarityNames and similar - Updated deprecated usage of
slogmacros andGenericArray - Updates the PoX constants used in various test scenarios to ensure there are 3 blocks in the prepare phase, which is required for Nakamoto.
- Moved codec types and traits into a new
stacks-codeccrate, extracted fromstacks-common
Fixed
- Fix to clear ongoing block commits when a
send_transactioncall fails (#6976) - Fixed
clarity-clito print errors to stderr and exit gracefully instead of panicking with a backtrace on invalid inputs. - Fixed flakiness in Bitcoin integration tests due to shutdown timing.
- Fixed flakiness in
fuzzed_median_fee_rate_estimation_testtests. - Fixed flaky
miner_stackerdb_version_rolloverandmultiple_miners_mock_sign_epoch_25integration tests by increasing polling frequency and extending the timeout inwait_for_registeredandwait_for_registered_both_reward_cycles, and aligningboot_to_epoch_25_reward_cyclewithboot_to_epoch_3(extended timeout plus mine-another-block recovery when the reward set isn't yet available) - Fixed flakiness in
signer_waits_for_validation_before_signingby waiting for state machine updates to prevent the signer from rejecting immediately. - Fixed logical operator in tenure-start block validation to correctly reject blocks where either the coinbase or tenure-change transaction is in the wrong position, not only when both are wrong
Docker images have been published to GitHub Container Registry:
- stacks-core: https://github.com/stacks-network/stacks-core/pkgs/container/stacks-core
docker pull ghcr.io/stacks-network/stacks-core:3.4.0.0.2
- stacks-signer: https://github.com/stacks-network/stacks-core/pkgs/container/stacks-signer
docker pull ghcr.io/stacks-network/stacks-signer:3.4.0.0.2.0
This release is recommended for all Stacks node operators.