Skip to content

Commit 9ace73c

Browse files
committed
Merge branch 'develop' into fix/dns-lookup-burnchain-config
2 parents 91302cb + bf1e4f2 commit 9ace73c

File tree

93 files changed

+4067
-1812
lines changed

Some content is hidden

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

93 files changed

+4067
-1812
lines changed

.github/workflows/bitcoin-tests.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,11 +122,17 @@ jobs:
122122
- tests::signer::v0::signer_set_rollover
123123
- tests::signer::v0::signing_in_0th_tenure_of_reward_cycle
124124
- tests::signer::v0::continue_after_tenure_extend
125+
- tests::signer::v0::tenure_extend_after_idle_signers
126+
- tests::signer::v0::tenure_extend_after_idle_miner
127+
- tests::signer::v0::tenure_extend_succeeds_after_rejected_attempt
128+
- tests::signer::v0::stx_transfers_dont_effect_idle_timeout
129+
- tests::signer::v0::idle_tenure_extend_active_mining
125130
- tests::signer::v0::multiple_miners_with_custom_chain_id
126131
- tests::signer::v0::block_commit_delay
127132
- tests::signer::v0::continue_after_fast_block_no_sortition
128133
- tests::signer::v0::block_validation_response_timeout
129134
- tests::signer::v0::tenure_extend_after_bad_commit
135+
- tests::signer::v0::block_proposal_max_age_rejections
130136
- tests::nakamoto_integrations::burn_ops_integration_test
131137
- tests::nakamoto_integrations::check_block_heights
132138
- tests::nakamoto_integrations::clarity_burn_state

.github/workflows/p2p-tests.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,10 @@ jobs:
4343
- net::tests::convergence::test_walk_star_15_org_biased
4444
- net::tests::convergence::test_walk_inbound_line_15
4545
- net::api::tests::postblock_proposal::test_try_make_response
46-
- net::server::tests::test_http_10_threads_getinfo
47-
- net::server::tests::test_http_10_threads_getblock
48-
- net::server::tests::test_http_too_many_clients
49-
- net::server::tests::test_http_slow_client
46+
- net::server::test::test_http_10_threads_getinfo
47+
- net::server::test::test_http_10_threads_getblock
48+
- net::server::test::test_http_too_many_clients
49+
- net::server::test::test_http_slow_client
5050
steps:
5151
## Setup test environment
5252
- name: Setup Test Environment

.github/workflows/stacks-core-tests.yml

Lines changed: 0 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -18,55 +18,6 @@ concurrency:
1818
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
1919

2020
jobs:
21-
# Full genesis test with code coverage
22-
full-genesis:
23-
name: Full Genesis Test
24-
runs-on: ubuntu-latest
25-
strategy:
26-
## Continue with the test matrix even if we've had a failure
27-
fail-fast: false
28-
## Run a maximum of 2 concurrent tests from the test matrix
29-
max-parallel: 2
30-
matrix:
31-
test-name:
32-
- neon_integrations::bitcoind_integration_test
33-
steps:
34-
## Setup test environment
35-
- name: Setup Test Environment
36-
id: setup_tests
37-
uses: stacks-network/actions/stacks-core/testenv@main
38-
with:
39-
genesis: true
40-
btc-version: "25.0"
41-
42-
## Run test matrix using restored cache of archive file
43-
## - Test will timeout after env.TEST_TIMEOUT minutes
44-
- name: Run Tests
45-
id: run_tests
46-
timeout-minutes: ${{ fromJSON(env.TEST_TIMEOUT) }}
47-
uses: stacks-network/actions/stacks-core/run-tests@main
48-
with:
49-
test-name: ${{ matrix.test-name }}
50-
threads: 1
51-
archive-file: ~/genesis_archive.tar.zst
52-
53-
## Upload code coverage file
54-
- name: Code Coverage
55-
id: codecov
56-
uses: stacks-network/actions/codecov@main
57-
with:
58-
test-name: large_genesis
59-
filename: ./lcov.info
60-
61-
- name: Status Output
62-
run: |
63-
echo "run_tests: ${{ steps.run_tests.outputs.status }}"
64-
echo "codecov: ${{ steps.codecov.outputs.status }}"
65-
66-
- name: Check Failures
67-
if: steps.run_tests.outputs.status == 'failure' || steps.codecov.outputs.status == 'failure'
68-
run: exit 1
69-
7021
# Unit tests with code coverage
7122
unit-tests:
7223
name: Unit Tests
@@ -186,7 +137,6 @@ jobs:
186137
runs-on: ubuntu-latest
187138
if: always()
188139
needs:
189-
- full-genesis
190140
- open-api-validation
191141
- core-contracts-clarinet-test
192142
steps:

CHANGELOG.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,27 @@ and this project adheres to the versioning scheme outlined in the [README.md](RE
88
## [Unreleased]
99

1010
### Added
11+
- Add `tenure_timeout_secs` to the miner for determining when a time-based tenure extend should be attempted.
1112

13+
### Changed
14+
15+
## [3.1.0.0.1]
16+
17+
### Added
18+
19+
- 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))
20+
21+
### Changed
22+
23+
## [3.1.0.0.0]
24+
25+
### Added
26+
27+
- **SIP-029 consensus rules, activating in epoch 3.1 at block 875,000** (see [SIP-029](https://github.com/stacksgov/sips/blob/main/sips/sip-029/sip-029-halving-alignment.md) for details)
1228
- New RPC endpoints
1329
- `/v2/clarity/marf/:marf_key_hash`
1430
- `/v2/clarity/metadata/:principal/:contract_name/:clarity_metadata_key`
31+
- 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))
1532

1633
### Changed
1734

Cargo.lock

Lines changed: 18 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ rand = "0.8"
2121
rand_chacha = "0.3.1"
2222
tikv-jemallocator = "0.5.4"
2323
rusqlite = { version = "0.31.0", features = ["blob", "serde_json", "i128_blob", "bundled", "trace"] }
24-
thiserror = { version = "1.0.65" }
24+
thiserror = "1.0.65"
25+
toml = "0.5.6"
2526

2627
# Use a bit more than default optimization for
2728
# dev builds to speed up test execution

clarity/src/vm/ast/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,7 @@ mod test {
353353
) -> std::result::Result<ExecutionCost, CostErrors> {
354354
self.invoked_functions.push((cost_f, input.to_vec()));
355355
self.invocation_count += 1;
356-
Ok(ExecutionCost::zero())
356+
Ok(ExecutionCost::ZERO)
357357
}
358358
fn add_cost(&mut self, _cost: ExecutionCost) -> std::result::Result<(), CostErrors> {
359359
self.cost_addition_count += 1;

clarity/src/vm/contexts.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -499,7 +499,7 @@ impl EventBatch {
499499

500500
impl<'a, 'hooks> OwnedEnvironment<'a, 'hooks> {
501501
#[cfg(any(test, feature = "testing"))]
502-
pub fn new(database: ClarityDatabase<'a>, epoch: StacksEpochId) -> OwnedEnvironment<'a, '_> {
502+
pub fn new(database: ClarityDatabase<'a>, epoch: StacksEpochId) -> OwnedEnvironment<'a, 'a> {
503503
OwnedEnvironment {
504504
context: GlobalContext::new(
505505
false,
@@ -513,7 +513,7 @@ impl<'a, 'hooks> OwnedEnvironment<'a, 'hooks> {
513513
}
514514

515515
#[cfg(any(test, feature = "testing"))]
516-
pub fn new_toplevel(mut database: ClarityDatabase<'a>) -> OwnedEnvironment<'a, '_> {
516+
pub fn new_toplevel(mut database: ClarityDatabase<'a>) -> OwnedEnvironment<'a, 'a> {
517517
database.begin();
518518
let epoch = database.get_clarity_epoch_version().unwrap();
519519
let version = ClarityVersion::default_for_epoch(epoch);
@@ -540,7 +540,7 @@ impl<'a, 'hooks> OwnedEnvironment<'a, 'hooks> {
540540
mut database: ClarityDatabase<'a>,
541541
epoch: StacksEpochId,
542542
use_mainnet: bool,
543-
) -> OwnedEnvironment<'a, '_> {
543+
) -> OwnedEnvironment<'a, 'a> {
544544
use crate::vm::tests::test_only_mainnet_to_chain_id;
545545
let cost_track = LimitedCostTracker::new_max_limit(&mut database, epoch, use_mainnet)
546546
.expect("FAIL: problem instantiating cost tracking");
@@ -557,7 +557,7 @@ impl<'a, 'hooks> OwnedEnvironment<'a, 'hooks> {
557557
chain_id: u32,
558558
database: ClarityDatabase<'a>,
559559
epoch_id: StacksEpochId,
560-
) -> OwnedEnvironment<'a, '_> {
560+
) -> OwnedEnvironment<'a, 'a> {
561561
OwnedEnvironment {
562562
context: GlobalContext::new(
563563
mainnet,
@@ -576,7 +576,7 @@ impl<'a, 'hooks> OwnedEnvironment<'a, 'hooks> {
576576
database: ClarityDatabase<'a>,
577577
cost_tracker: LimitedCostTracker,
578578
epoch_id: StacksEpochId,
579-
) -> OwnedEnvironment<'a, '_> {
579+
) -> OwnedEnvironment<'a, 'a> {
580580
OwnedEnvironment {
581581
context: GlobalContext::new(mainnet, chain_id, database, cost_tracker, epoch_id),
582582
call_stack: CallStack::new(),
@@ -1546,7 +1546,7 @@ impl<'a, 'hooks> GlobalContext<'a, 'hooks> {
15461546
database: ClarityDatabase<'a>,
15471547
cost_track: LimitedCostTracker,
15481548
epoch_id: StacksEpochId,
1549-
) -> GlobalContext {
1549+
) -> GlobalContext<'a, 'hooks> {
15501550
GlobalContext {
15511551
database,
15521552
cost_track,

clarity/src/vm/costs/mod.rs

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ impl CostTracker for () {
140140
_cost_function: ClarityCostFunction,
141141
_input: &[u64],
142142
) -> std::result::Result<ExecutionCost, CostErrors> {
143-
Ok(ExecutionCost::zero())
143+
Ok(ExecutionCost::ZERO)
144144
}
145145
fn add_cost(&mut self, _cost: ExecutionCost) -> std::result::Result<(), CostErrors> {
146146
Ok(())
@@ -707,7 +707,7 @@ impl LimitedCostTracker {
707707
contract_call_circuits: HashMap::new(),
708708
limit,
709709
memory_limit: CLARITY_MEMORY_LIMIT,
710-
total: ExecutionCost::zero(),
710+
total: ExecutionCost::ZERO,
711711
memory: 0,
712712
epoch,
713713
mainnet,
@@ -731,7 +731,7 @@ impl LimitedCostTracker {
731731
contract_call_circuits: HashMap::new(),
732732
limit,
733733
memory_limit: CLARITY_MEMORY_LIMIT,
734-
total: ExecutionCost::zero(),
734+
total: ExecutionCost::ZERO,
735735
memory: 0,
736736
epoch,
737737
mainnet,
@@ -880,7 +880,7 @@ impl LimitedCostTracker {
880880
pub fn get_total(&self) -> ExecutionCost {
881881
match self {
882882
Self::Limited(TrackerData { total, .. }) => total.clone(),
883-
Self::Free => ExecutionCost::zero(),
883+
Self::Free => ExecutionCost::ZERO,
884884
}
885885
}
886886
#[allow(clippy::panic)]
@@ -1050,7 +1050,7 @@ impl CostTracker for LimitedCostTracker {
10501050
match self {
10511051
Self::Free => {
10521052
// tracker is free, return zero!
1053-
return Ok(ExecutionCost::zero());
1053+
return Ok(ExecutionCost::ZERO);
10541054
}
10551055
Self::Limited(ref mut data) => {
10561056
if cost_function == ClarityCostFunction::Unimplemented {
@@ -1195,15 +1195,13 @@ impl CostOverflowingMath<u64> for u64 {
11951195
}
11961196

11971197
impl ExecutionCost {
1198-
pub fn zero() -> ExecutionCost {
1199-
Self {
1200-
runtime: 0,
1201-
write_length: 0,
1202-
read_count: 0,
1203-
write_count: 0,
1204-
read_length: 0,
1205-
}
1206-
}
1198+
pub const ZERO: Self = Self {
1199+
runtime: 0,
1200+
write_length: 0,
1201+
read_count: 0,
1202+
write_count: 0,
1203+
read_length: 0,
1204+
};
12071205

12081206
/// Returns the percentage of self consumed in `numerator`'s largest proportion dimension.
12091207
pub fn proportion_largest_dimension(&self, numerator: &ExecutionCost) -> u64 {
@@ -1328,6 +1326,10 @@ impl ExecutionCost {
13281326
read_length: first.read_length.max(second.read_length),
13291327
}
13301328
}
1329+
1330+
pub fn is_zero(&self) -> bool {
1331+
*self == Self::ZERO
1332+
}
13311333
}
13321334

13331335
// ONLY WORKS IF INPUT IS u64

0 commit comments

Comments
 (0)