Skip to content

Commit e588485

Browse files
committed
Merge branch 'develop' into feat/clarity-wasm-develop
2 parents 55d82b8 + 4a7b908 commit e588485

Some content is hidden

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

70 files changed

+5413
-998
lines changed

.github/workflows/ci.yml

+1
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ jobs:
9494
needs:
9595
- rustfmt
9696
- check-release
97+
secrets: inherit
9798
uses: ./.github/workflows/github-release.yml
9899
with:
99100
node_tag: ${{ needs.check-release.outputs.node_tag }}

.github/workflows/clarity-js-sdk-pr.yml

-65
This file was deleted.

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ jobs:
2424
- name: Build the binaries
2525
id: build
2626
run: |
27-
cargo build
27+
cargo build --bin stacks-inspect
2828
- name: Dump constants JSON
2929
id: consts-dump
3030
run: cargo run --bin stacks-inspect -- dump-consts | tee out.json

.github/workflows/github-release.yml

+9-3
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@ concurrency:
3838
run-name: ${{ inputs.node_tag || inputs.signer_tag }}
3939

4040
jobs:
41-
## This job's sole purpose is trigger a secondary approval outside of the matrix jobs below.
41+
## This job's sole purpose is trigger a secondary approval outside of the matrix jobs below.
4242
## - If this job isn't approved to run, then the subsequent jobs will also not run - for this reason, we always exit 0
43-
## - `andon-cord` requires the repo environment "Build Release", which will trigger a secondary approval step before running this workflow.
43+
## - `andon-cord` requires the repo environment "Build Release", which will trigger a secondary approval step before running this workflow.
4444
andon-cord:
4545
if: |
4646
inputs.node_tag != '' ||
@@ -65,6 +65,9 @@ jobs:
6565
runs-on: ubuntu-latest
6666
needs:
6767
- andon-cord
68+
permissions:
69+
id-token: write
70+
attestations: write
6871
strategy:
6972
## Run a maximum of 10 builds concurrently, using the matrix defined in inputs.arch
7073
max-parallel: 10
@@ -135,6 +138,10 @@ jobs:
135138
inputs.signer_tag != ''
136139
name: Docker Image (Binary)
137140
runs-on: ubuntu-latest
141+
environment: "Push to Docker"
142+
permissions:
143+
id-token: write
144+
attestations: write
138145
needs:
139146
- andon-cord
140147
- build-binaries
@@ -164,7 +171,6 @@ jobs:
164171
## Create the downstream PR for the release branch to master,develop
165172
create-pr:
166173
if: |
167-
!contains(github.ref, '-rc') &&
168174
(
169175
inputs.node_tag != '' ||
170176
inputs.signer_tag != ''

.github/workflows/image-build-source.yml

+22
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ jobs:
2323
runs-on: ubuntu-latest
2424
## Requires the repo environment "Push to Docker", which will trigger a secondary approval step before running this workflow.
2525
environment: "Push to Docker"
26+
permissions:
27+
id-token: write
28+
attestations: write
2629
steps:
2730
## Increase swapfile
2831
- name: Increase swapfile
@@ -78,3 +81,22 @@ jobs:
7881
GIT_COMMIT=${{ env.GITHUB_SHA_SHORT }}
7982
TARGET_CPU=x86-64-v3
8083
push: ${{ env.DOCKER_PUSH }}
84+
85+
## Generate docker image attestation(s)
86+
- name: Generate artifact attestation (${{ github.event.repository.name }})
87+
id: attest_primary
88+
uses: actions/attest-build-provenance@c074443f1aee8d4aeeae555aebba3282517141b2 # v2.2.3
89+
with:
90+
subject-name: |
91+
index.docker.io/${{env.docker-org}}/${{ github.event.repository.name }}
92+
subject-digest: ${{ steps.docker_build.outputs.digest }}
93+
push-to-registry: true
94+
95+
- name: Generate artifact attestation (stacks-blockchain)
96+
id: attest_secondary
97+
uses: actions/attest-build-provenance@c074443f1aee8d4aeeae555aebba3282517141b2 # v2.2.3
98+
with:
99+
subject-name: |
100+
index.docker.io/${{env.docker-org}}/stacks-blockchain
101+
subject-digest: ${{ steps.docker_build.outputs.digest }}
102+
push-to-registry: true

CHANGELOG.md

+16-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,19 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to the versioning scheme outlined in the [README.md](README.md).
77

8+
## [Unreleased]
9+
10+
### Added
11+
12+
- Added new `ValidateRejectCode` values to the `/v3/block_proposal` endpoint
13+
- Added `StateMachineUpdateContent::V1` to support a vector of `StacksTransaction` expected to be replayed in subsequent Stacks blocks
14+
15+
### Changed
16+
17+
- Reduce the default `block_rejection_timeout_steps` configuration so that miners will retry faster when blocks fail to reach 70% approved or 30% rejected.
18+
- Added index for `next_ready_nakamoto_block()` which improves block processing performance.
19+
- Added a new field, `parent_burn_block_hash`, to the payload that is included in the `/new_burn_block` event observer payload.
20+
821
## [3.1.0.0.8]
922

1023
### Added
@@ -19,8 +32,9 @@ and this project adheres to the versioning scheme outlined in the [README.md](RE
1932

2033
- When a miner times out waiting for signatures, it will re-propose the same block instead of building a new block ([#5877](https://github.com/stacks-network/stacks-core/pull/5877))
2134
- Improve tenure downloader trace verbosity applying proper logging level depending on the tenure state ("debug" if unconfirmed, "info" otherwise) ([#5871](https://github.com/stacks-network/stacks-core/issues/5871))
22-
- Remove warning log about missing UTXOs when a node is configured as `miner` with `mock_mining` mode enabled ([#5841](https://github.com/stacks-network/stacks-core/issues/5841))
23-
- Deprecated the `wait_on_interim_blocks` option in the miner config file. This option is no longer needed, as the miner will always wait for interim blocks to be processed before mining a new block. To wait extra time in between blocks, use the `min_time_between_blocks_ms` option instead.
35+
- Remove warning log about missing UTXOs when a node is configured as `miner` with `mock_mining` mode enabled ([#5841](https://github.com/stacks-network/stacks-core/issues/5841))
36+
- Deprecated the `wait_on_interim_blocks` option in the miner config file. This option is no longer needed, as the miner will always wait for interim blocks to be processed before mining a new block. To wait extra time in between blocks, use the `min_time_between_blocks_ms` option instead. ([#5979](https://github.com/stacks-network/stacks-core/pull/5979))
37+
- Added `empty_mempool_sleep_ms` to the miner config file to control the time to wait in between mining attempts when the mempool is empty. If not set, the default sleep time is 2.5s. ([#5997](https://github.com/stacks-network/stacks-core/pull/5997))
2438

2539
## [3.1.0.0.7]
2640

CONTRIBUTING.md

+18-4
Original file line numberDiff line numberDiff line change
@@ -361,17 +361,31 @@ A non-exhaustive list of examples of consensus-critical changes include:
361361

362362
- Every consensus-critical change needs an integration test to verify that the feature activates only when the hard fork activates.
363363

364-
PRs must include test coverage. However, if your PR includes large tests or tests which cannot run in parallel
364+
- PRs must include test coverage. However, if your PR includes large tests or tests which cannot run in parallel
365365
(which is the default operation of the `cargo test` command), these tests should be decorated with `#[ignore]`.
366-
367366
A test should be marked `#[ignore]` if:
368367

369-
1. It does not _always_ pass `cargo test` in a vanilla environment
368+
1. It does not _always_ pass `cargo test` in a vanilla environment
370369
(i.e., it does not need to run with `--test-threads 1`).
371370

372-
2. Or, it runs for over a minute via a normal `cargo test` execution
371+
2. Or, it runs for over a minute via a normal `cargo test` execution
373372
(the `cargo test` command will warn if this is not the case).
374373

374+
- **Integration tests need to be properly tagged** using [pinny-rs](https://github.com/BitcoinL2-Labs/pinny-rs/) crate. Tagging requires two fundamental steps:
375+
1. Define allowed tags in the package `Cargo.toml` file (if needed).
376+
2. Apply relevant tags to the tests, picking from the allowed set.
377+
378+
Then it will be possible to run tests with filtering based on the tags using `cargo test` and `cargo nextest` runner.
379+
> For more information and examples on how tagging works, refer to the [pinny-rs](https://github.com/BitcoinL2-Labs/pinny-rs/) readme.
380+
381+
Below the tag set currently defined with related purpose:
382+
383+
| Tag | Description |
384+
|-----------------|----------------------------------------------|
385+
| `slow` | tests running over a minute |
386+
| `bitcoind` | tests requiring bitcoin daemon |
387+
| `flaky` | tests that exhibit flaky behavior |
388+
375389
## Formatting
376390

377391
PRs will be checked against `rustfmt` and will _fail_ if not properly formatted.

0 commit comments

Comments
 (0)