Skip to content

Commit 487ec0e

Browse files
committed
Merge branch develop into chore/clippy-collection-is-never-read and fix conflicts
2 parents a02c9a6 + 53e670f commit 487ec0e

File tree

174 files changed

+7411
-3426
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

174 files changed

+7411
-3426
lines changed

.github/workflows/bitcoin-tests.yml

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ jobs:
5454
# - tests::neon_integrations::size_overflow_unconfirmed_microblocks_integration_test
5555
# - tests::neon_integrations::size_overflow_unconfirmed_stream_microblocks_integration_test
5656
# - tests::neon_integrations::runtime_overflow_unconfirmed_microblocks_integration_test
57+
# - tests::epoch_25::microblocks_disabled
5758
# Disable this flaky test. Microblocks are no longer supported anyways.
5859
# - tests::neon_integrations::microblock_large_tx_integration_test_FLAKY
5960
- tests::neon_integrations::miner_submit_twice
@@ -80,7 +81,6 @@ jobs:
8081
- tests::neon_integrations::bitcoin_reorg_flap
8182
- tests::neon_integrations::bitcoin_reorg_flap_with_follower
8283
- tests::neon_integrations::start_stop_bitcoind
83-
- tests::epoch_25::microblocks_disabled
8484
- tests::should_succeed_handling_malformed_and_valid_txs
8585
- tests::nakamoto_integrations::simple_neon_integration
8686
- tests::nakamoto_integrations::flash_blocks_on_epoch_3
@@ -125,17 +125,29 @@ jobs:
125125
- tests::signer::v0::continue_after_tenure_extend
126126
- tests::signer::v0::tenure_extend_after_idle_signers
127127
- tests::signer::v0::tenure_extend_after_idle_miner
128+
- tests::signer::v0::tenure_extend_after_failed_miner
128129
- tests::signer::v0::tenure_extend_succeeds_after_rejected_attempt
129130
- tests::signer::v0::stx_transfers_dont_effect_idle_timeout
130131
- tests::signer::v0::idle_tenure_extend_active_mining
131132
- tests::signer::v0::multiple_miners_with_custom_chain_id
132133
- tests::signer::v0::block_commit_delay
133134
- tests::signer::v0::continue_after_fast_block_no_sortition
134135
- tests::signer::v0::block_validation_response_timeout
136+
- tests::signer::v0::block_validation_pending_table
137+
- tests::signer::v0::new_tenure_while_validating_previous_scenario
135138
- tests::signer::v0::tenure_extend_after_bad_commit
136139
- tests::signer::v0::block_proposal_max_age_rejections
137140
- tests::signer::v0::global_acceptance_depends_on_block_announcement
138141
- tests::signer::v0::no_reorg_due_to_successive_block_validation_ok
142+
- tests::signer::v0::incoming_signers_ignore_block_proposals
143+
- tests::signer::v0::outgoing_signers_ignore_block_proposals
144+
- tests::signer::v0::injected_signatures_are_ignored_across_boundaries
145+
- tests::signer::v0::fast_sortition
146+
- tests::signer::v0::single_miner_empty_sortition
147+
- tests::signer::v0::multiple_miners_empty_sortition
148+
- tests::signer::v0::block_proposal_timeout
149+
- tests::signer::v0::rejected_blocks_count_towards_miner_validity
150+
- tests::signer::v0::allow_reorg_within_first_proposal_burn_block_timing_secs
139151
- tests::nakamoto_integrations::burn_ops_integration_test
140152
- tests::nakamoto_integrations::check_block_heights
141153
- tests::nakamoto_integrations::clarity_burn_state
@@ -155,6 +167,7 @@ jobs:
155167
- tests::nakamoto_integrations::sip029_coinbase_change
156168
- tests::nakamoto_integrations::clarity_cost_spend_down
157169
- tests::nakamoto_integrations::v3_blockbyheight_api_endpoint
170+
- tests::nakamoto_integrations::test_tenure_extend_from_flashblocks
158171
# TODO: enable these once v1 signer is supported by a new nakamoto epoch
159172
# - tests::signer::v1::dkg
160173
# - tests::signer::v1::sign_request_rejected

.github/workflows/ci.yml

Lines changed: 35 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -112,19 +112,10 @@ jobs:
112112
## - commit to either (development, master) branch
113113
create-cache:
114114
if: |
115-
needs.check-release.outputs.is_release == 'true' || (
116-
github.event_name == 'workflow_dispatch' ||
117-
github.event_name == 'pull_request' ||
118-
github.event_name == 'merge_group' ||
119-
(
120-
contains('
121-
refs/heads/master
122-
refs/heads/develop
123-
refs/heads/next
124-
', github.event.pull_request.head.ref) &&
125-
github.event_name == 'push'
126-
)
127-
)
115+
needs.check-release.outputs.is_release == 'true' ||
116+
github.event_name == 'workflow_dispatch' ||
117+
github.event_name == 'pull_request' ||
118+
github.event_name == 'merge_group'
128119
name: Create Test Cache
129120
needs:
130121
- rustfmt
@@ -144,64 +135,55 @@ jobs:
144135
## - commit to either (development, next, master) branch
145136
stacks-core-tests:
146137
if: |
147-
needs.check-release.outputs.is_release == 'true' || (
148-
github.event_name == 'workflow_dispatch' ||
149-
github.event_name == 'pull_request' ||
150-
github.event_name == 'merge_group' ||
151-
(
152-
contains('
153-
refs/heads/master
154-
refs/heads/develop
155-
refs/heads/next
156-
', github.event.pull_request.head.ref) &&
157-
github.event_name == 'push'
158-
)
159-
)
138+
github.event_name == 'workflow_dispatch' ||
139+
github.event_name == 'pull_request' ||
140+
github.event_name == 'merge_group'
160141
name: Stacks Core Tests
161142
needs:
162143
- rustfmt
163144
- create-cache
164145
- check-release
165146
uses: ./.github/workflows/stacks-core-tests.yml
166147

148+
## Checks to run on built binaries
149+
##
150+
## Runs when:
151+
## - it is a release run
152+
## or:
153+
## - it is not a release run
154+
## and any of:
155+
## - this workflow is called manually
156+
## - PR is opened
157+
## - PR added to merge queue
158+
## - commit to either (development, next, master) branch
159+
stacks-core-build-tests:
160+
if: |
161+
github.event_name == 'workflow_dispatch' ||
162+
github.event_name == 'pull_request' ||
163+
github.event_name == 'merge_group'
164+
name: Stacks Core Build Tests
165+
needs:
166+
- rustfmt
167+
- check-release
168+
uses: ./.github/workflows/core-build-tests.yml
169+
167170
bitcoin-tests:
168171
if: |
169-
needs.check-release.outputs.is_release == 'true' || (
170-
github.event_name == 'workflow_dispatch' ||
171-
github.event_name == 'pull_request' ||
172-
github.event_name == 'merge_group' ||
173-
(
174-
contains('
175-
refs/heads/master
176-
refs/heads/develop
177-
refs/heads/next
178-
', github.event.pull_request.head.ref) &&
179-
github.event_name == 'push'
180-
)
181-
)
172+
github.event_name == 'workflow_dispatch' ||
173+
github.event_name == 'pull_request' ||
174+
github.event_name == 'merge_group'
182175
name: Bitcoin Tests
183176
needs:
184177
- rustfmt
185178
- create-cache
186179
- check-release
187180
uses: ./.github/workflows/bitcoin-tests.yml
188181

189-
190182
p2p-tests:
191183
if: |
192-
needs.check-release.outputs.is_release == 'true' || (
193-
github.event_name == 'workflow_dispatch' ||
194-
github.event_name == 'pull_request' ||
195-
github.event_name == 'merge_group' ||
196-
(
197-
contains('
198-
refs/heads/master
199-
refs/heads/develop
200-
refs/heads/next
201-
', github.event.pull_request.head.ref) &&
202-
github.event_name == 'push'
203-
)
204-
)
184+
github.event_name == 'workflow_dispatch' ||
185+
github.event_name == 'pull_request' ||
186+
github.event_name == 'merge_group'
205187
name: P2P Tests
206188
needs:
207189
- rustfmt
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name: Core build tests
2+
3+
# Only run when:
4+
# - PRs are (re)opened against develop branch
5+
on:
6+
workflow_call:
7+
8+
jobs:
9+
check-consts:
10+
name: Check the constants from stacks-inspect
11+
runs-on: ubuntu-latest
12+
steps:
13+
- name: Checkout the latest code
14+
id: git_checkout
15+
uses: actions/checkout@v3
16+
- name: Define Rust Toolchain
17+
id: define_rust_toolchain
18+
run: echo "RUST_TOOLCHAIN=$(cat ./rust-toolchain)" >> $GITHUB_ENV
19+
- name: Setup Rust Toolchain
20+
id: setup_rust_toolchain
21+
uses: actions-rust-lang/setup-rust-toolchain@v1
22+
with:
23+
toolchain: ${{ env.RUST_TOOLCHAIN }}
24+
- name: Build the binaries
25+
id: build
26+
run: |
27+
cargo build
28+
- name: Dump constants JSON
29+
id: consts-dump
30+
run: cargo run --bin stacks-inspect -- dump-consts | tee out.json
31+
- name: Set expected constants JSON
32+
id: expects-json
33+
run: diff out.json ./sample/expected_consts.json

.github/workflows/docs-pr.yml

Lines changed: 0 additions & 114 deletions
This file was deleted.

CHANGELOG.md

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,33 @@ and this project adheres to the versioning scheme outlined in the [README.md](RE
99

1010
### Added
1111

12-
- Add `tenure_timeout_secs` to the miner for determining when a time-based tenure extend should be attempted.
12+
- The stacks-node miner now performs accurate tenure-extensions in certain bitcoin block production
13+
cases: when a bitcoin block is produced before the previous bitcoin block's Stacks tenure started.
14+
Previously, the miner had difficulty restarting their missed tenure and extending into the new
15+
bitcoin block, leading to 1-2 bitcoin blocks of missed Stacks block production.
1316

14-
### Changed
17+
## Changed
1518

16-
- 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](https://github.com/stacks-network/stacks-core/pull/5381)
17-
- Nodes will assume that all PoX anchor blocks exist by default, and stall initial block download indefinitely to await their arrival (#5502)
19+
- When a miner reorgs the previous tenure due to a poorly timed block, it can now continue to build blocks on this new chain tip (#5691)
1820

19-
## [3.1.0.0.1]
21+
## [3.1.0.0.3]
2022

2123
### Added
2224

23-
- 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](https://github.com/stacks-network/stacks-core/discussions/5476))
25+
- Add `tenure_timeout_secs` to the miner for determining when a time-based tenure extend should be attempted.
26+
- Added configuration option `block_proposal_max_age_secs` under `[connection_options]` to prevent processing stale block proposals
2427

2528
### Changed
2629

27-
## [3.1.0.0.0]
30+
- The RPC endpoint `/v3/block_proposal` no longer will evaluate block proposals more than `block_proposal_max_age_secs` old
31+
- 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](https://github.com/stacks-network/stacks-core/pull/5381)
32+
- Nodes will assume that all PoX anchor blocks exist by default, and stall initial block download indefinitely to await their arrival (#5502)
33+
34+
### Fixed
35+
36+
- Signers no longer accept messages for blocks from different reward cycles (#5662)
37+
38+
## [3.1.0.0.2]
2839

2940
### Added
3041

@@ -33,6 +44,8 @@ and this project adheres to the versioning scheme outlined in the [README.md](RE
3344
- `/v2/clarity/marf/:marf_key_hash`
3445
- `/v2/clarity/metadata/:principal/:contract_name/:clarity_metadata_key`
3546
- 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](https://github.com/stacks-network/stacks-core/pull/5539))
47+
- 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](https://github.com/stacks-network/stacks-core/discussions/5476))
48+
- Set the epoch to 3.1 in the Clarity DB upon activation.
3649

3750
### Changed
3851

clarity/src/vm/representations.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ guarded_string!(
8484
);
8585

8686
impl StacksMessageCodec for ClarityName {
87+
#[allow(clippy::needless_as_bytes)] // as_bytes isn't necessary, but verbosity is preferable in the codec impls
8788
fn consensus_serialize<W: Write>(&self, fd: &mut W) -> Result<(), codec_error> {
8889
// ClarityName can't be longer than vm::representations::MAX_STRING_LEN, which itself is
8990
// a u8, so we should be good here.
@@ -124,6 +125,7 @@ impl StacksMessageCodec for ClarityName {
124125
}
125126

126127
impl StacksMessageCodec for ContractName {
128+
#[allow(clippy::needless_as_bytes)] // as_bytes isn't necessary, but verbosity is preferable in the codec impls
127129
fn consensus_serialize<W: Write>(&self, fd: &mut W) -> Result<(), codec_error> {
128130
if self.as_bytes().len() < CONTRACT_MIN_NAME_LENGTH
129131
|| self.as_bytes().len() > CONTRACT_MAX_NAME_LENGTH

0 commit comments

Comments
 (0)