From 10d8ee4676c85abd1f08572ed8563a82168f4cc0 Mon Sep 17 00:00:00 2001 From: Aaron Blankstein Date: Fri, 4 Jun 2021 12:21:31 -0500 Subject: [PATCH] chore: plumb changes into testnet/ --- .../src/burnchains/mocknet_controller.rs | 1 + testnet/stacks-node/src/neon_node.rs | 20 ++++++++---- testnet/stacks-node/src/node.rs | 32 ++++++++++++------- testnet/stacks-node/src/tests/integrations.rs | 18 +++++------ .../src/tests/neon_integrations.rs | 1 + 5 files changed, 46 insertions(+), 26 deletions(-) diff --git a/testnet/stacks-node/src/burnchains/mocknet_controller.rs b/testnet/stacks-node/src/burnchains/mocknet_controller.rs index 3fc4c8c1c..de12b8d61 100644 --- a/testnet/stacks-node/src/burnchains/mocknet_controller.rs +++ b/testnet/stacks-node/src/burnchains/mocknet_controller.rs @@ -99,6 +99,7 @@ impl BurnchainController for MocknetController { start_height: 0, end_height: STACKS_EPOCH_MAX, }], + self.burnchain.pox_constants.clone(), true, ) { Ok(db) => db, diff --git a/testnet/stacks-node/src/neon_node.rs b/testnet/stacks-node/src/neon_node.rs index 95f1b84cf..b09500257 100644 --- a/testnet/stacks-node/src/neon_node.rs +++ b/testnet/stacks-node/src/neon_node.rs @@ -11,8 +11,8 @@ use std::sync::{ }; use std::{thread, thread::JoinHandle}; -use stacks::burnchains::BurnchainSigner; use stacks::burnchains::{Burnchain, BurnchainParameters, Txid}; +use stacks::burnchains::{BurnchainSigner, PoxConstants}; use stacks::chainstate::burn::db::sortdb::SortitionDB; use stacks::chainstate::burn::operations::{ leader_block_commit::{RewardSetInfo, BURN_BLOCK_MINED_AT_MODULUS}, @@ -577,6 +577,7 @@ fn spawn_peer( p2p_sock: &SocketAddr, rpc_sock: &SocketAddr, config: Config, + pox_constants: PoxConstants, poll_timeout: u64, relay_channel: SyncSender, mut sync_comms: PoxSyncWatchdogComms, @@ -592,7 +593,8 @@ fn spawn_peer( this.bind(p2p_sock, rpc_sock).unwrap(); let (mut dns_resolver, mut dns_client) = DNSResolver::new(10); - let sortdb = SortitionDB::open(&burn_db_path, false).map_err(NetError::DBError)?; + let sortdb = + SortitionDB::open(&burn_db_path, false, pox_constants).map_err(NetError::DBError)?; let (mut chainstate, _) = StacksChainState::open_with_block_limit( is_mainnet, @@ -777,7 +779,8 @@ fn spawn_miner_relayer( // the relayer _should not_ be modifying the sortdb, // however, it needs a mut reference to create read TXs. // should address via #1449 - let mut sortdb = SortitionDB::open(&burn_db_path, true).map_err(NetError::DBError)?; + let mut sortdb = SortitionDB::open(&burn_db_path, true, burnchain.pox_constants.clone()) + .map_err(NetError::DBError)?; let (mut chainstate, _) = StacksChainState::open_with_block_limit( is_mainnet, @@ -1095,8 +1098,12 @@ impl InitializedNeonNode { ) -> InitializedNeonNode { // we can call _open_ here rather than _connect_, since connect is first called in // make_genesis_block - let sortdb = SortitionDB::open(&config.get_burn_db_file_path(), false) - .expect("Error while instantiating sortition db"); + let sortdb = SortitionDB::open( + &config.get_burn_db_file_path(), + false, + burnchain.pox_constants.clone(), + ) + .expect("Error while instantiating sortition db"); let view = { let sortition_tip = SortitionDB::get_canonical_burn_chain_tip(&sortdb.conn()) @@ -1260,7 +1267,7 @@ impl InitializedNeonNode { event_dispatcher.clone(), blocks_processed.clone(), microblocks_processed.clone(), - burnchain, + burnchain.clone(), coord_comms, shared_unconfirmed_txs.clone(), ) @@ -1272,6 +1279,7 @@ impl InitializedNeonNode { &p2p_sock, &rpc_sock, config.clone(), + burnchain.pox_constants, 5000, relay_send.clone(), sync_comms, diff --git a/testnet/stacks-node/src/node.rs b/testnet/stacks-node/src/node.rs index 4df1120a0..54d1400e2 100644 --- a/testnet/stacks-node/src/node.rs +++ b/testnet/stacks-node/src/node.rs @@ -6,10 +6,6 @@ use std::sync::{atomic::AtomicBool, Arc}; use std::{collections::HashSet, env}; use std::{thread, thread::JoinHandle, time}; -use stacks::chainstate::burn::operations::{ - leader_block_commit::{RewardSetInfo, BURN_BLOCK_MINED_AT_MODULUS}, - BlockstackOperationType, LeaderBlockCommitOp, LeaderKeyRegisterOp, -}; use stacks::chainstate::burn::ConsensusHash; use stacks::chainstate::stacks::db::{ ChainStateBootData, ClarityTx, StacksChainState, StacksHeaderInfo, @@ -40,6 +36,13 @@ use stacks::util::hash::Sha256Sum; use stacks::util::secp256k1::Secp256k1PrivateKey; use stacks::util::strings::UrlString; use stacks::util::vrf::VRFPublicKey; +use stacks::{ + burnchains::PoxConstants, + chainstate::burn::operations::{ + leader_block_commit::{RewardSetInfo, BURN_BLOCK_MINED_AT_MODULUS}, + BlockstackOperationType, LeaderBlockCommitOp, LeaderKeyRegisterOp, + }, +}; use stacks::{ burnchains::{Burnchain, Txid}, chainstate::stacks::db::{ @@ -159,6 +162,7 @@ fn spawn_peer( rpc_sock: &SocketAddr, burn_db_path: String, stacks_chainstate_path: String, + pox_consts: PoxConstants, event_dispatcher: EventDispatcher, exit_at_block_height: Option, genesis_chainstate_hash: Sha256Sum, @@ -174,7 +178,7 @@ fn spawn_peer( }; loop { - let sortdb = match SortitionDB::open(&burn_db_path, false) { + let sortdb = match SortitionDB::open(&burn_db_path, false, pox_consts.clone()) { Ok(x) => x, Err(e) => { warn!("Error while connecting burnchain db in peer loop: {}", e); @@ -377,9 +381,10 @@ impl Node { node.spawn_peer_server(attachments_rx); + let pox_constants = burnchain_controller.sortdb_ref().pox_constants.clone(); loop { - let sortdb = - SortitionDB::open(&sortdb_path, false).expect("BUG: failed to open burn database"); + let sortdb = SortitionDB::open(&sortdb_path, false, pox_constants.clone()) + .expect("BUG: failed to open burn database"); if let Ok(Some(ref chain_tip)) = node.chain_state.get_stacks_chain_tip(&sortdb) { if chain_tip.consensus_hash == burnchain_tip.block_snapshot.consensus_hash { info!("Syncing Stacks blocks - completed"); @@ -401,11 +406,15 @@ impl Node { pub fn spawn_peer_server(&mut self, attachments_rx: Receiver>) { // we can call _open_ here rather than _connect_, since connect is first called in // make_genesis_block - let sortdb = SortitionDB::open(&self.config.get_burn_db_file_path(), true) - .expect("Error while instantiating burnchain db"); - let burnchain = Burnchain::regtest(&self.config.get_burn_db_path()); + let sortdb = SortitionDB::open( + &self.config.get_burn_db_file_path(), + true, + burnchain.pox_constants.clone(), + ) + .expect("Error while instantiating burnchain db"); + let view = { let sortition_tip = SortitionDB::get_canonical_burn_chain_tip(&sortdb.conn()) .expect("Failed to get sortition tip"); @@ -493,7 +502,7 @@ impl Node { atlasdb, local_peer, self.config.burnchain.peer_version, - burnchain, + burnchain.clone(), view, self.config.connection_options.clone(), ); @@ -505,6 +514,7 @@ impl Node { &rpc_sock, self.config.get_burn_db_file_path(), self.config.get_chainstate_path_str(), + burnchain.pox_constants, event_dispatcher, exit_at_block_height, Sha256Sum::from_hex(stx_genesis::GENESIS_CHAINSTATE_HASH).unwrap(), diff --git a/testnet/stacks-node/src/tests/integrations.rs b/testnet/stacks-node/src/tests/integrations.rs index 0bbdf97d8..ff33c3233 100644 --- a/testnet/stacks-node/src/tests/integrations.rs +++ b/testnet/stacks-node/src/tests/integrations.rs @@ -975,7 +975,7 @@ fn contract_stx_transfer() { db.get_account_stx_balance( &contract_identifier.clone().into(), ) - .amount_unlocked + .amount_unlocked() }) } ) @@ -992,7 +992,7 @@ fn contract_stx_transfer() { &StacksBlockHeader::make_index_block_hash(&cur_tip.0, &cur_tip.1), |conn| { conn.with_clarity_db_readonly(|db| { - db.get_account_stx_balance(&addr_3).amount_unlocked + db.get_account_stx_balance(&addr_3).amount_unlocked() }) } ) @@ -1026,7 +1026,7 @@ fn contract_stx_transfer() { &StacksBlockHeader::make_index_block_hash(&cur_tip.0, &cur_tip.1), |conn| { conn.with_clarity_db_readonly(|db| { - db.get_account_stx_balance(&addr_2).amount_unlocked + db.get_account_stx_balance(&addr_2).amount_unlocked() }) } ) @@ -1044,7 +1044,7 @@ fn contract_stx_transfer() { db.get_account_stx_balance( &contract_identifier.clone().into(), ) - .amount_unlocked + .amount_unlocked() }) } ) @@ -1076,7 +1076,7 @@ fn contract_stx_transfer() { db.get_account_stx_balance( &contract_identifier.clone().into(), ) - .amount_unlocked + .amount_unlocked() }) } ) @@ -1093,7 +1093,7 @@ fn contract_stx_transfer() { &StacksBlockHeader::make_index_block_hash(&cur_tip.0, &cur_tip.1), |conn| { conn.with_clarity_db_readonly(|db| { - db.get_account_stx_balance(&addr_3).amount_unlocked + db.get_account_stx_balance(&addr_3).amount_unlocked() }) } ) @@ -1233,7 +1233,7 @@ fn mine_transactions_out_of_order() { db.get_account_stx_balance( &contract_identifier.clone().into(), ) - .amount_unlocked + .amount_unlocked() }) } ) @@ -1448,7 +1448,7 @@ fn bad_contract_tx_rollback() { db.get_account_stx_balance( &contract_identifier.clone().into(), ) - .amount_unlocked + .amount_unlocked() }) } ) @@ -1465,7 +1465,7 @@ fn bad_contract_tx_rollback() { &StacksBlockHeader::make_index_block_hash(&cur_tip.0, &cur_tip.1), |conn| { conn.with_clarity_db_readonly(|db| { - db.get_account_stx_balance(&addr_3).amount_unlocked + db.get_account_stx_balance(&addr_3).amount_unlocked() }) } ) diff --git a/testnet/stacks-node/src/tests/neon_integrations.rs b/testnet/stacks-node/src/tests/neon_integrations.rs index dc4859370..9e916c4cf 100644 --- a/testnet/stacks-node/src/tests/neon_integrations.rs +++ b/testnet/stacks-node/src/tests/neon_integrations.rs @@ -3252,6 +3252,7 @@ fn pox_integration_test() { 15, (16 * reward_cycle_len - 1).into(), (17 * reward_cycle_len).into(), + u32::max_value(), ); burnchain_config.pox_constants = pox_constants.clone();