Skip to content

Commit

Permalink
Merge branch 'develop' into fix/4145
Browse files Browse the repository at this point in the history
  • Loading branch information
obycode authored Feb 4, 2025
2 parents ffde1b4 + 6651b31 commit 3b858ea
Show file tree
Hide file tree
Showing 16 changed files with 92 additions and 38 deletions.
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,14 @@ and this project adheres to the versioning scheme outlined in the [README.md](RE

### Added

### Changed

### Fixed

## [3.1.0.0.5]

### Added

- Add miner configuration option `tenure_extend_cost_threshold` to specify the percentage of the tenure budget that must be spent before a time-based tenure extend is attempted

### Changed
Expand Down
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion docs/release-process.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,11 @@ The timing of the next Stacking cycle can be found [here](https://stx.eco/dao/to
- Add cherry-picked commits to the `feat/X.Y.Z.A.n-pr_number` branch
- Merge `feat/X.Y.Z.A.n-pr_number` into `release/X.Y.Z.A.n`.

4. Open a PR to update the [CHANGELOG](../CHANGELOG.md) file in the `release/X.Y.Z.A.n` branch.
4. Open a PR to update the [CHANGELOG](../CHANGELOG.md) in the `release/X.Y.Z.A.n` branch.

- Create a chore branch from `release/X.Y.Z.A.n`, ex: `chore/X.Y.Z.A.n-changelog`.
- Add summaries of all Pull Requests to the `Added`, `Changed` and `Fixed` sections.
- Update the `stacks_node_version` string in [versions.toml](../versions.toml) to match this release.

- Pull requests merged into `develop` can be found [here](https://github.com/stacks-network/stacks-core/pulls?q=is%3Apr+is%3Aclosed+base%3Adevelop+sort%3Aupdated-desc).

Expand Down
8 changes: 7 additions & 1 deletion libsigner/src/libsigner.rs
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ use blockstack_lib::version_string;
use clarity::codec::StacksMessageCodec;
use clarity::vm::types::QualifiedContractIdentifier;
use lazy_static::lazy_static;
use stacks_common::versions::STACKS_SIGNER_VERSION;

pub use crate::error::{EventError, RPCError};
pub use crate::events::{
Expand Down Expand Up @@ -80,7 +81,12 @@ pub trait SignerMessage<T: MessageSlotID>: StacksMessageCodec {
lazy_static! {
/// The version string for the signer
pub static ref VERSION_STRING: String = {
let pkg_version = option_env!("STACKS_NODE_VERSION").unwrap_or(env!("CARGO_PKG_VERSION"));
let pkg_version = option_env!("STACKS_NODE_VERSION").or(Some(STACKS_SIGNER_VERSION));
version_string("stacks-signer", pkg_version)
};
}

#[test]
fn test_version_string() {
assert!(VERSION_STRING.contains(format!("stacks-signer {}", STACKS_SIGNER_VERSION).as_str()));
}
4 changes: 4 additions & 0 deletions stacks-common/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ keywords = [ "stacks", "stx", "bitcoin", "crypto", "blockstack", "decentralized"
readme = "README.md"
resolver = "2"
edition = "2021"
build = "build.rs"

[lib]
name = "stacks_common"
Expand Down Expand Up @@ -73,6 +74,9 @@ serde = []
bech32_std = []
bech32_strict = []

[build-dependencies]
toml = "0.5.6"

[target.'cfg(all(any(target_arch = "x86_64", target_arch = "x86", target_arch = "aarch64"), not(any(target_os="windows"))))'.dependencies]
sha2 = { version = "0.10", features = ["asm"] }

Expand Down
33 changes: 33 additions & 0 deletions stacks-common/build.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
use std::path::Path;
use std::{env, fs};

use toml::Value;

fn main() {
let toml_file = "../versions.toml";
let toml_content = fs::read_to_string(toml_file).expect("Failed to read versions.toml");

let config: Value = toml::from_str(&toml_content).expect("Failed to parse TOML");

let mut rust_code = String::from("// Auto-generated code from versions.toml\n\n");

let Value::Table(table) = config else {
panic!("Invalid value type in versions.toml: {config:?}");
};
for (key, val) in table {
let Value::String(s) = val else {
panic!("Invalid value type in versions.toml: {val:?}");
};
rust_code.push_str(&format!(
"pub const {}: &str = {s:?};\n",
key.to_uppercase()
));
}

let out_dir = env::var_os("OUT_DIR").unwrap();
let dest_path = Path::new(&out_dir).join("versions.rs");
fs::write(&dest_path, rust_code).expect("Failed to write generated code");

// Tell Cargo to rerun this script if the TOML file changes
println!("cargo:rerun-if-changed={toml_file}");
}
4 changes: 4 additions & 0 deletions stacks-common/src/libcommon.rs
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,10 @@ pub mod consts {
pub const MICROSTACKS_PER_STACKS: u32 = 1_000_000;
}

pub mod versions {
include!(concat!(env!("OUT_DIR"), "/versions.rs"));
}

/// This test asserts that the constant above doesn't change.
/// This exists because the constant above is used by Epoch 2.5 instantiation code.
///
Expand Down
28 changes: 17 additions & 11 deletions stacks-signer/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@ and this project adheres to the versioning scheme outlined in the [README.md](RE

### Added

### Changed

## [3.1.0.0.5.0]

### Added

- Add `dry_run` configuration option to `stacks-signer` config toml. Dry run mode will
run the signer binary as if it were a registered signer. Instead of broadcasting
`StackerDB` messages, it logs `INFO` messages. Other interactions with the `stacks-node`
Expand All @@ -17,44 +23,44 @@ and this project adheres to the versioning scheme outlined in the [README.md](RE

## [3.1.0.0.4.0]

## Added
### Added

- When a new block proposal is received while the signer is waiting for an existing proposal to be validated, the signer will wait until the existing block is done validating before submitting the new one for validating. ([#5453](https://github.com/stacks-network/stacks-core/pull/5453))
- Introduced two new prometheus metrics:
- `stacks_signer_block_validation_latencies_histogram`: the validation_time_ms reported by the node when validating a block proposal
- `stacks_signer_block_response_latencies_histogram`: the "end-to-end" time it takes for the signer to issue a block response

## Changed
### Changed

## [3.1.0.0.3.0]

## Added
### Added

- Introduced the `block_proposal_max_age_secs` configuration option for signers, enabling them to automatically ignore block proposals that exceed the specified age in seconds.

## Changed
### Changed
- Improvements to the stale signer cleanup logic: deletes the prior signer if it has no remaining unprocessed blocks in its database
- Signers now listen to new block events from the stacks node to determine whether a block has been successfully appended to the chain tip

# [3.1.0.0.2.1]
## [3.1.0.0.2.1]

## Added
### Added

## Changed
### Changed

- Prevent old reward cycle signers from processing block validation response messages that do not apply to blocks from their cycle.

# [3.1.0.0.2.1]
## [3.1.0.0.2.1]

## Added
### Added

## Changed
### Changed

- Prevent old reward cycle signers from processing block validation response messages that do not apply to blocks from their cycle.

## [3.1.0.0.2.0]

## Added
### Added

- **SIP-029 consensus rules, activating in epoch 3.1 at block 875,000** (see [SIP-029](https://github.com/will-corcoran/sips/blob/feat/sip-029-halving-alignment/sips/sip-029/sip-029-halving-alignment.md) for details)

Expand Down
3 changes: 2 additions & 1 deletion stacks-signer/release-process.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,10 +63,11 @@ The timing of the next Stacking cycle can be found [here](https://stx.eco/dao/to
- Add cherry-picked commits to the `feat/signer-X.Y.Z.A.n.x-pr_number` branch
- Merge `feat/signer-X.Y.Z.A.n.x-pr_number` into `release/signer-X.Y.Z.A.n.x`.

4. Open a PR to update the [CHANGELOG](./CHANGELOG.md) file in the `release/signer-X.Y.Z.A.n.x` branch.
4. Open a PR to update the [CHANGELOG](./CHANGELOG.md) in the `release/signer-X.Y.Z.A.n.x` branch.

- Create a chore branch from `release/signer-X.Y.Z.A.n.x`, ex: `chore/signer-X.Y.Z.A.n.x-changelog`.
- Add summaries of all Pull Requests to the `Added`, `Changed` and `Fixed` sections.
- Update the `stacks_signer_version` string in [versions.toml](../versions.toml) to match this release.

- Pull requests merged into `develop` can be found [here](https://github.com/stacks-network/stacks-core/pulls?q=is%3Apr+is%3Aclosed+base%3Adevelop+sort%3Aupdated-desc).

Expand Down
8 changes: 5 additions & 3 deletions stackslib/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ extern crate stacks_common;
#[macro_use]
pub extern crate clarity;

use stacks_common::versions::STACKS_NODE_VERSION;
pub use stacks_common::{address, codec, types, util};

#[macro_use]
Expand Down Expand Up @@ -79,16 +80,17 @@ const BUILD_TYPE: &str = "debug";
#[cfg(not(debug_assertions))]
const BUILD_TYPE: &str = "release";

pub fn version_string(pkg_name: &str, pkg_version: &str) -> String {
let git_branch = GIT_BRANCH.map(String::from).unwrap_or("".to_string());
pub fn version_string(pkg_name: &str, pkg_version: Option<&str>) -> String {
let pkg_version = pkg_version.unwrap_or(STACKS_NODE_VERSION);
let git_branch = GIT_BRANCH.unwrap_or("");
let git_commit = GIT_COMMIT.unwrap_or("");
let git_tree_clean = GIT_TREE_CLEAN.unwrap_or("");

format!(
"{} {} ({}:{}{}, {} build, {} [{}])",
pkg_name,
pkg_version,
&git_branch,
git_branch,
git_commit,
git_tree_clean,
BUILD_TYPE,
Expand Down
2 changes: 1 addition & 1 deletion stackslib/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -316,7 +316,7 @@ fn main() {
"{}",
&blockstack_lib::version_string(
option_env!("CARGO_PKG_NAME").unwrap_or(&argv[0]),
option_env!("CARGO_PKG_VERSION").unwrap_or("0.0.0.0")
option_env!("STACKS_NODE_VERSION")
)
);
process::exit(0);
Expand Down
7 changes: 1 addition & 6 deletions stackslib/src/net/api/getinfo.rs
Original file line number Diff line number Diff line change
Expand Up @@ -111,12 +111,7 @@ impl RPCPeerInfoData {
coinbase_height: u64,
ibd: bool,
) -> RPCPeerInfoData {
let server_version = version_string(
"stacks-node",
option_env!("STACKS_NODE_VERSION")
.or(option_env!("CARGO_PKG_VERSION"))
.unwrap_or("0.0.0.0"),
);
let server_version = version_string("stacks-node", option_env!("STACKS_NODE_VERSION"));
let (unconfirmed_tip, unconfirmed_seq) = match chainstate.unconfirmed_state {
Some(ref unconfirmed) => {
if unconfirmed.num_mined_txs() > 0 {
Expand Down
1 change: 0 additions & 1 deletion stackslib/src/net/api/getstxtransfercost.rs
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ use crate::net::httpcore::{
};
use crate::net::p2p::PeerNetwork;
use crate::net::{Error as NetError, HttpServerError, StacksNodeState};
use crate::version_string;

pub(crate) const SINGLESIG_TX_TRANSFER_LEN: u64 = 180;

Expand Down
9 changes: 2 additions & 7 deletions testnet/stacks-node/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -433,12 +433,7 @@ fn main() {
}

fn version() -> String {
stacks::version_string(
"stacks-node",
option_env!("STACKS_NODE_VERSION")
.or(option_env!("CARGO_PKG_VERSION"))
.unwrap_or("0.0.0.0"),
)
stacks::version_string("stacks-node", option_env!("STACKS_NODE_VERSION"))
}

fn print_help() {
Expand All @@ -456,7 +451,7 @@ SUBCOMMANDS:
mainnet\t\tStart a node that will join and stream blocks from the public mainnet.
mocknet\t\tStart a node based on a fast local setup emulating a burnchain. Ideal for smart contract development.
mocknet\t\tStart a node based on a fast local setup emulating a burnchain. Ideal for smart contract development.
helium\t\tStart a node based on a local setup relying on a local instance of bitcoind.
\t\tThe following bitcoin.conf is expected:
Expand Down
7 changes: 1 addition & 6 deletions testnet/stacks-node/src/neon_node.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2211,12 +2211,7 @@ impl BlockMinerThread {
/// Only used in mock signing to generate a peer info view
fn generate_peer_info(&self) -> PeerInfo {
// Create a peer info view of the current state
let server_version = version_string(
"stacks-node",
option_env!("STACKS_NODE_VERSION")
.or(option_env!("CARGO_PKG_VERSION"))
.unwrap_or("0.0.0.0"),
);
let server_version = version_string("stacks-node", option_env!("STACKS_NODE_VERSION"));
let stacks_tip_height = self.burn_block.canonical_stacks_tip_height;
let stacks_tip = self.burn_block.canonical_stacks_tip_hash;
let stacks_tip_consensus_hash = self.burn_block.canonical_stacks_tip_consensus_hash;
Expand Down
4 changes: 4 additions & 0 deletions versions.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Update these values when a new release is created.
# `stacks-common/build.rs` will automatically update `versions.rs` with these values.
stacks_node_version = "3.1.0.0.4"
stacks_signer_version = "3.1.0.0.4.0"

0 comments on commit 3b858ea

Please sign in to comment.