-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
Hello,
Stacks core developers have released Stacks Core version 4.0.3, available here:
https://github.com/stacks-network/stacks-core/releases/tag/4.0.3.
This release contains several stability and performance improvements to the stacks-node and stacks-signer and is fully compatible with existing chainstate. Miners and signers are encouraged to update, though it is not required.
### Added
* Adds opt-in logging to help observe where StackerDB chunks come from. Set `node.log_stackerdb_chunk_sources = true` to enable it.
* Added a new authenticated RPC endpoint `POST /v3/transactions/simulate` which simulates a single transaction on top of a chain tip (the canonical tip by default, or the one selected with the `tip` query parameter), discarding all state changes, and reports its result, events, and execution cost.
### Changed
* Moved Clarity transaction-error classification from `stackslib` to `clarity`, with authoritative included/rejected dispositions that can be shared with WASM consumers
* The miner now ties mempool nonce-cache validity to the specific parent block it builds on, automatically resetting the caches whenever the parent changes (e.g. across mining retries), instead of relying on a manually-maintained flag.
* `read_only_call_max_mem_bytes` now caps each read-only RPC request end to end: parsing the body's Clarity values (call arguments and map keys) counts toward the same per-request limit as execution, and requests whose parsing exceeds it are rejected with HTTP 400.
* Read-only call RPC endpoints now cap the `arguments` array at 262,144 entries, even when `read_only_call_max_mem_bytes` is `0`.
* Lower the default StackerDB timeouts to retry HTTP RPC sooner.
* Moved transaction post-condition verification out of `stackslib` into a new `stacks-transactions` crate, so that it can be used in WASM environments and is no longer coupled to the Clarity VM
### Fixed
* Fix a bug that prevented duplicate name detection in some cases during contract analysis. This change applies starting in epoch 4.1.
* Prevent one potential cause for miner stalls by moving signer state machine retrieval from HTTP requests to DB lookup.
* Fixed a block-commit timing race that made the release-only Epoch CI job fail deterministically on `tests::epoch_21::transition_fixes_bitcoin_rigidity`.
* Fixed Prometheus execution-cost write-count utilization metrics to use the write-count block limit, and fixed RPC response bytes being counted as inbound instead of outbound bandwidth.
* Fixed the miner thread exiting (and stalling for the remainder of the tenure) on transient errors. The miner now retries when it hits DB contention, a parent block that has not been processed yet, a new parent block discovered mid-mining, or a mempool cache reset failure, instead of giving up on the tenure.
* When a StackerDB chunk push fails, remove the receiver and immediately try the next receiver for the same chunk. This prevents an unavailable receiver from delaying the push.
* Broadcast HTTP-uploaded StackerDB chunks even when no event observer is attached. This allows uploaded chunks to reach peers in configurations that do not use an event observer.
* Fixed a StackerDB chunk uploaded over HTTP being stored and acknowledged but never announced to the node's event observers, which could stall consensus indefinitely when the lost chunk was a signer's block pre-commit. The chunk's pending event notification was discarded whenever the relayer fell behind and a peer echoed the same chunk back, or whenever the node's own view advanced before the relayer processed the upload.
### Removed
* Removed the special-casing of transactions with high-S signatures from mempool admittance and block validation. Now that we've transitioned into Epoch 4.0, those signatures are forbidden by consensus and no longer need to be special-cased.
### Docker images have been published to GitHub Container Registry:
#### **stacks-core**
* Debian (glibc):
https://github.com/stacks-network/stacks-core/pkgs/container/stacks-core/1207102142?tag=4.0.3docker pull
ghcr.io/stacks-network/stacks-core:4.0.3@sha256:9c45dbf25dbe6a2b5051657f914b98abccfbec1a9f84d1df45233d627446227d* Alpine (musl):
https://github.com/stacks-network/stacks-core/pkgs/container/stacks-core/1207100105?tag=4.0.3-alpinedocker pull
ghcr.io/stacks-network/stacks-core:4.0.3-alpine@sha256:f5ee022d224e40d93d27d2241a0bf6c5d0f550beab0723307fef5462d5f2d0b5#### **stacks-signer**
* Debian (glibc):
https://github.com/stacks-network/stacks-signer/pkgs/container/stacks-signer/1207098950?tag=4.0.3docker pull
ghcr.io/stacks-network/stacks-signer:4.0.3@sha256:6cb6f31a6fdaf6e002816ec75691d7d44b654046fc433b253591f239742e1d58* Alpine (musl):
https://github.com/stacks-network/stacks-signer/pkgs/container/stacks-signer/1207098218?tag=4.0.3-alpinedocker pull
ghcr.io/stacks-network/stacks-signer:4.0.3-alpine@sha256:ca5d96697a3446a3a054e00c638a0c457267ac83b30d619c85e780696d637335********************************************************************************
Stacks Core:
Git commit hash: 2cfc81704d0fa2e732d6575206f923552ec06cd0
SHA512SUMS:
e2eea3f88bf3690e9ad7f1b78efe65a9723784b0e472a95129f44dab9f53557c98f7d1f3ab568d1af308a3e8144c47f52de4758da58529518dbcb3b9008c0225 linux-glibc-arm64.zip
7c58d63d859b92e0515b4a5c9fca9decb15400dfd764918a5bd656b2172b1ad4bbefc5f36fff229204269185fb81279592c53bf91b00fe3ee1384a24fcab0a06 linux-glibc-x64.zip
0944ab868ea256815badd0df3867413af96dde4a7b4a1e47fac57c5e4db18b96b3f86b0132a33eb40c9a8ceccdabc4b49999e03d330fc72cab21cbd932f0603b linux-musl-arm64.zip
5d2952ac4c81fa2d7e3f89554a676585ad59b276ee1fe422f531badab723054987fbe8d075cb1e2451bb6e3f96cd9e7d56d2e1c0e8039777db12bb2b5347c625 linux-musl-x64.zip
083be72c40499a75d72e215ec39ecfc9b2569306932b86ffd842de6599ac9d31beceed9e8112d4e4fe57f52dc91b8db2fe307814de2e8b751da7f8c6d10e71cb macos-arm64.zip
ecd79e5cc76e369c1dcfb5100850824074cd2587a61dfbb1ca92e9618c5430ecff861f879c8b99d7495ff461d57d4cb4d3bba86537a211134f1a57bcbf12385f windows-x64.zip
********************************************************************************
Best,
Brice Dobry
Staff Engineer, Stacks Labs
-----BEGIN PGP SIGNATURE-----
iQFlBAEBCABPFiEEVTrGj54NWyQJkqD84zO/PN0rBYYFAmqaxcgbFIAAAAAABAAO
bWFudTIsMi41KzEuMTIsMCwzFRxicmljZUBzdGFja3NsYWJzLmNvbQAKCRDjM788
3SsFho4zB/sHkUTHvruPdsgpEPa76VzErouTzHx4DnEFxNCEPtVKBIEB2X0z0JvN
UrzXoEFYz4yRMNee3PPvnTjEYFcHcVHtCLeLNj+JOWhN4BvZDipEq+RptxT/G/OL
WdCqot8xXiR5pLLWAoPMEPOTMZQfksbxvmFu86n/GgrcSZlVrXiuHxiF3UH9hr7C
fIy+PqgHERyTO/rtEgMfzKriIImVnu3adawvsGQ+1v4IgBfoIgmKWt7EOE72flrp
l8R9q00GNRWTO6PsaKpFj+l193CB1dLa8VHG3xdFnLLw7sjjRBAzwUFfw8y7wLPQ
+62eCCeTFchsuuFFZ/BLs6CuzjBmXHWb
=MZp8
-----END PGP SIGNATURE-----