Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add devnet tweaks #4234

Draft
wants to merge 1 commit into
base: develop
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions stackslib/src/burnchains/bitcoin/indexer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1005,9 +1005,9 @@ impl BurnchainIndexer for BitcoinIndexer {
false,
)?;
let first_block_height = self.get_first_block_height();
let first_header = spv_client
.read_block_header(first_block_height)?
.expect("BUG: no first block header hash");
let Ok(Some(first_header)) = spv_client.read_block_header(first_block_height) else {
return Err(burnchain_error::MissingHeaders);
};

let first_block_header_hash =
BurnchainHeaderHash::from_bitcoin_hash(&first_header.header.bitcoin_hash());
Expand Down
16 changes: 9 additions & 7 deletions stackslib/src/burnchains/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -477,17 +477,19 @@ impl PoxConstants {
#[cfg_attr(test, mutants::skip)]
pub fn regtest_default() -> PoxConstants {
PoxConstants::new(
20,
5,
3,
2,
3333333333333333,
1,
25,
5,
BITCOIN_REGTEST_FIRST_BLOCK_HEIGHT + POX_SUNSET_START,
BITCOIN_REGTEST_FIRST_BLOCK_HEIGHT + POX_SUNSET_END,
1_000_000,
2_000_000,
4_000_000,
3_000_000,
POX_V1_REGTEST_EARLY_UNLOCK_HEIGHT,
POX_V2_REGTEST_EARLY_UNLOCK_HEIGHT,
POX_V3_REGTEST_EARLY_UNLOCK_HEIGHT,
BITCOIN_REGTEST_STACKS_24_BURN_HEIGHT
.try_into()
.expect("Epoch transition height must be <= u32::MAX"),
)
}

Expand Down
53 changes: 35 additions & 18 deletions stackslib/src/core/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,18 @@ pub const BITCOIN_TESTNET_STACKS_31_BURN_HEIGHT: u64 = 30_000_001;
/// expected affirmation maps (so it only must be accurate to the reward cycle).
pub const BITCOIN_TESTNET_STACKS_25_REORGED_HEIGHT: u64 = 2_586_000;

pub const BITCOIN_REGTEST_FIRST_BLOCK_HEIGHT: u64 = 0;
// On regtest networks, we need to matured coinbases for mining Stacks blocks.
// We start at block #100 so we avoid indexing the first 100 non matured
// coinbases.
pub const BITCOIN_REGTEST_FIRST_BLOCK_HEIGHT: u64 = 100;
pub const BITCOIN_REGTEST_STACKS_2_05_BURN_HEIGHT: u64 = 120;
pub const BITCOIN_REGTEST_STACKS_21_BURN_HEIGHT: u64 = 140;
pub const BITCOIN_REGTEST_STACKS_22_BURN_HEIGHT: u64 = 160;
pub const BITCOIN_REGTEST_STACKS_23_BURN_HEIGHT: u64 = 180;
pub const BITCOIN_REGTEST_STACKS_24_BURN_HEIGHT: u64 = 200;
pub const BITCOIN_REGTEST_STACKS_25_BURN_HEIGHT: u64 = 6000;
pub const BITCOIN_REGTEST_STACKS_30_BURN_HEIGHT: u64 = 7001;
pub const BITCOIN_REGTEST_STACKS_31_BURN_HEIGHT: u64 = 8001;
pub const BITCOIN_REGTEST_FIRST_BLOCK_TIMESTAMP: u32 = 0;
pub const BITCOIN_REGTEST_FIRST_BLOCK_HASH: &str =
"0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206";
Expand Down Expand Up @@ -163,16 +174,22 @@ pub const POX_V1_MAINNET_EARLY_UNLOCK_HEIGHT: u32 =
(BITCOIN_MAINNET_STACKS_21_BURN_HEIGHT as u32) + 1;
pub const POX_V1_TESTNET_EARLY_UNLOCK_HEIGHT: u32 =
(BITCOIN_TESTNET_STACKS_21_BURN_HEIGHT as u32) + 1;
pub const POX_V1_REGTEST_EARLY_UNLOCK_HEIGHT: u32 =
(BITCOIN_REGTEST_STACKS_21_BURN_HEIGHT as u32) + 1;

pub const POX_V2_MAINNET_EARLY_UNLOCK_HEIGHT: u32 =
(BITCOIN_MAINNET_STACKS_22_BURN_HEIGHT as u32) + 1;
pub const POX_V2_TESTNET_EARLY_UNLOCK_HEIGHT: u32 =
(BITCOIN_TESTNET_STACKS_22_BURN_HEIGHT as u32) + 1;
pub const POX_V2_REGTEST_EARLY_UNLOCK_HEIGHT: u32 =
(BITCOIN_REGTEST_STACKS_22_BURN_HEIGHT as u32) + 1;

pub const POX_V3_MAINNET_EARLY_UNLOCK_HEIGHT: u32 =
(BITCOIN_MAINNET_STACKS_25_BURN_HEIGHT as u32) + 1;
pub const POX_V3_TESTNET_EARLY_UNLOCK_HEIGHT: u32 =
(BITCOIN_TESTNET_STACKS_25_BURN_HEIGHT as u32) + 1;
pub const POX_V3_REGTEST_EARLY_UNLOCK_HEIGHT: u32 =
(BITCOIN_REGTEST_STACKS_24_BURN_HEIGHT as u32) + 1;

// The threshold of weighted votes on a block to approve it in Nakamoto.
// This is out of 10, so 7 means "70%".
Expand Down Expand Up @@ -402,63 +419,63 @@ lazy_static! {
},
StacksEpoch {
epoch_id: StacksEpochId::Epoch20,
start_height: 0,
end_height: 1000,
start_height: BITCOIN_REGTEST_FIRST_BLOCK_HEIGHT,
end_height: BITCOIN_REGTEST_STACKS_2_05_BURN_HEIGHT,
block_limit: HELIUM_BLOCK_LIMIT_20.clone(),
network_epoch: PEER_VERSION_EPOCH_2_0
},
StacksEpoch {
epoch_id: StacksEpochId::Epoch2_05,
start_height: 1000,
end_height: 2000,
start_height: BITCOIN_REGTEST_STACKS_2_05_BURN_HEIGHT,
end_height: BITCOIN_REGTEST_STACKS_21_BURN_HEIGHT,
block_limit: HELIUM_BLOCK_LIMIT_20.clone(),
network_epoch: PEER_VERSION_EPOCH_2_05
},
StacksEpoch {
epoch_id: StacksEpochId::Epoch21,
start_height: 2000,
end_height: 3000,
start_height: BITCOIN_REGTEST_STACKS_21_BURN_HEIGHT,
end_height: BITCOIN_REGTEST_STACKS_22_BURN_HEIGHT,
block_limit: HELIUM_BLOCK_LIMIT_20.clone(),
network_epoch: PEER_VERSION_EPOCH_2_1
},
StacksEpoch {
epoch_id: StacksEpochId::Epoch22,
start_height: 3000,
end_height: 4000,
start_height: BITCOIN_REGTEST_STACKS_22_BURN_HEIGHT,
end_height: BITCOIN_REGTEST_STACKS_23_BURN_HEIGHT,
block_limit: HELIUM_BLOCK_LIMIT_20.clone(),
network_epoch: PEER_VERSION_EPOCH_2_2
},
StacksEpoch {
epoch_id: StacksEpochId::Epoch23,
start_height: 4000,
end_height: 5000,
start_height: BITCOIN_REGTEST_STACKS_23_BURN_HEIGHT,
end_height: BITCOIN_REGTEST_STACKS_24_BURN_HEIGHT,
block_limit: HELIUM_BLOCK_LIMIT_20.clone(),
network_epoch: PEER_VERSION_EPOCH_2_3
},
StacksEpoch {
epoch_id: StacksEpochId::Epoch24,
start_height: 5000,
end_height: 6000,
start_height: BITCOIN_REGTEST_STACKS_24_BURN_HEIGHT,
end_height: BITCOIN_REGTEST_STACKS_25_BURN_HEIGHT,
block_limit: HELIUM_BLOCK_LIMIT_20.clone(),
network_epoch: PEER_VERSION_EPOCH_2_4
},
StacksEpoch {
epoch_id: StacksEpochId::Epoch25,
start_height: 6000,
end_height: 7001,
start_height: BITCOIN_REGTEST_STACKS_25_BURN_HEIGHT,
end_height: BITCOIN_REGTEST_STACKS_30_BURN_HEIGHT,
block_limit: BLOCK_LIMIT_MAINNET_21.clone(),
network_epoch: PEER_VERSION_EPOCH_2_5
},
StacksEpoch {
epoch_id: StacksEpochId::Epoch30,
start_height: 7001,
end_height: 8001,
start_height: BITCOIN_REGTEST_STACKS_30_BURN_HEIGHT,
end_height: BITCOIN_REGTEST_STACKS_31_BURN_HEIGHT,
block_limit: BLOCK_LIMIT_MAINNET_21.clone(),
network_epoch: PEER_VERSION_EPOCH_3_0
},
StacksEpoch {
epoch_id: StacksEpochId::Epoch31,
start_height: 8001,
start_height: BITCOIN_REGTEST_STACKS_31_BURN_HEIGHT,
end_height: STACKS_EPOCH_MAX,
block_limit: BLOCK_LIMIT_MAINNET_21.clone(),
network_epoch: PEER_VERSION_EPOCH_3_1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -585,12 +585,12 @@ impl BitcoinRegtestController {
burnchain_error::BurnchainPeerBroken => {
// remote burnchain peer broke, and produced a shorter blockchain fork.
// just keep trying
sleep_ms(5000);
sleep_ms(1000);
continue;
}
_ => {
// delay and try again
sleep_ms(5000);
sleep_ms(1000);
continue;
}
}
Expand Down
16 changes: 10 additions & 6 deletions testnet/stacks-node/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ use std::net::{Ipv4Addr, SocketAddr, ToSocketAddrs};
use std::path::PathBuf;
use std::str::FromStr;
use std::sync::{Arc, Mutex};
use std::thread::sleep;
use std::time::Duration;
use std::{cmp, fs, thread};

Expand Down Expand Up @@ -1495,17 +1496,20 @@ impl BurnchainConfigFile {
// Using std::net::LookupHost would be preferable, but it's
// unfortunately unstable at this point.
// https://doc.rust-lang.org/1.6.0/std/net/struct.LookupHost.html
let mut sock_addrs = format!("{peer_host}:1")
.to_socket_addrs()
.map_err(|e| format!("Invalid burnchain.peer_host: {e}"))?;
let sock_addr = match sock_addrs.next() {
Some(addr) => addr,
None => {
let mut attempts = 0;
let mut addrs_iter = loop {
if let Ok(addrs_iter) = format!("{peer_host}:1").to_socket_addrs() {
break addrs_iter;
}
attempts += 1;
if attempts == 15 {
return Err(format!(
"No IP address could be queried for '{peer_host}'"
));
}
sleep(std::time::Duration::from_secs(5));
};
let sock_addr = addrs_iter.next().expect("Failed to resolve IP address");
format!("{}", sock_addr.ip())
}
None => default_burnchain_config.peer_host,
Expand Down
Loading