Skip to content

Commit 7c0c231

Browse files
committed
Merge branch 'develop' into feat/tx-replay-handle-forks
2 parents 072e378 + 42faabe commit 7c0c231

File tree

282 files changed

+1751
-4252
lines changed

Some content is hidden

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

282 files changed

+1751
-4252
lines changed

.cargo/config.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[alias]
22
stacks-node = "run --package stacks-node --"
33
fmt-stacks = "fmt -- --config group_imports=StdExternalCrate,imports_granularity=Module"
4-
clippy-stacks = "clippy -p libstackerdb -p stacks-signer -p pox-locking -p clarity -p libsigner -p stacks-common --no-deps --tests --all-features -- -D warnings"
4+
clippy-stacks = "clippy -p stx-genesis -p libstackerdb -p stacks-signer -p pox-locking -p clarity -p libsigner -p stacks-common --no-deps --tests --all-features -- -D warnings"
55

66
# Uncomment to improve performance slightly, at the cost of portability
77
# * Note that native binaries may not run on CPUs that are different from the build machine

CHANGELOG.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,27 @@ and this project adheres to the versioning scheme outlined in the [README.md](RE
1111

1212
- Added a new RPC endpoint `/v3/health` to query the node's health status. The endpoint returns a 200 status code with relevant synchronization information (including the node's current Stacks tip height, the maximum Stacks tip height among its neighbors, and the difference between these two). A user can use the `difference_from_max_peer` value to decide what is a good threshold for them before considering the node out of sync. The endpoint returns a 500 status code if the query cannot retrieve viable data.
1313

14+
## [3.1.0.0.12]
15+
16+
### Added
17+
18+
- Document missing config structs
19+
- Document MinerConfig parameters
20+
- Document BurnchainConfig parameters
21+
- Document NodeConfig parameters
22+
23+
### Changed
24+
25+
- `get_fresh_random_neighbors` to include allowed neigbors
26+
- Logging improvements and cleanup
27+
- Move serde serializers to stacks_common
28+
- Depend on clarity backing store interface
29+
- Updated `./docs/event-dispacher.md`
30+
31+
### Fixed
32+
33+
- Handle Bitcoin reorgs during Stacks tenure extend
34+
1435
## [3.1.0.0.11]
1536

1637
- Hotfix for p2p stack misbehavior in mempool syncing conditions

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

stacks-signer/CHANGELOG.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,20 @@ 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+
## [3.1.0.0.12.0]
9+
10+
### Changed
11+
12+
- Refactor / cleanup signerDB migrations code
13+
- Signers should not infinitely loop when pushing a block to stacks-node
14+
- Logging improvements and cleanup
15+
16+
### Fixed
17+
18+
- Fix `capitulate_miner_view` so stacks-node won't swap between multiple miners
19+
- Mark current miner as invalid on capitulation
20+
- Fix flaky `miner_recovers_when_broadcast_block_delay_across_tenures_occurs` test
21+
822
## [3.1.0.0.10.0]
923

1024
### Added

stackslib/src/burnchains/affirmation.rs

Lines changed: 6 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -231,33 +231,18 @@
231231
/// bootstrapping nodes.
232232
///
233233
use std::cmp;
234-
use std::collections::{BTreeMap, HashMap, HashSet, VecDeque};
234+
use std::collections::{BTreeMap, HashMap, HashSet};
235235
use std::fmt;
236236
use std::fmt::Write;
237-
use std::sync::mpsc::SyncSender;
238-
use std::time::Duration;
239237

240238
use serde::de::Error as de_Error;
241-
use serde::ser::Error as ser_Error;
242239
use serde::{Deserialize, Serialize};
243-
use stacks_common::types::chainstate::{
244-
BlockHeaderHash, BurnchainHeaderHash, PoxId, SortitionId, StacksAddress, StacksBlockId,
245-
};
246-
247-
use crate::burnchains::db::{
248-
BurnchainBlockData, BurnchainDB, BurnchainDBTransaction, BurnchainHeaderReader,
249-
};
250-
use crate::burnchains::{Address, Burnchain, BurnchainBlockHeader, Error, PoxConstants, Txid};
251-
use crate::chainstate::burn::db::sortdb::SortitionDB;
252-
use crate::chainstate::burn::operations::leader_block_commit::{
253-
RewardSetInfo, BURN_BLOCK_MINED_AT_MODULUS,
254-
};
240+
241+
use crate::burnchains::db::{BurnchainDB, BurnchainDBTransaction, BurnchainHeaderReader};
242+
use crate::burnchains::{Burnchain, Error, PoxConstants};
243+
use crate::chainstate::burn::operations::leader_block_commit::BURN_BLOCK_MINED_AT_MODULUS;
255244
use crate::chainstate::burn::operations::{BlockstackOperationType, LeaderBlockCommitOp};
256-
use crate::chainstate::burn::{BlockSnapshot, ConsensusHash};
257-
use crate::chainstate::stacks::StacksBlockHeader;
258-
use crate::core::StacksEpochId;
259-
use crate::util_lib::boot::boot_code_id;
260-
use crate::util_lib::db::{DBConn, Error as DBError};
245+
use crate::util_lib::db::Error as DBError;
261246

262247
/// Affirmation map entries. By building on a PoX-mined block,
263248
/// a PoB-mined block (in a PoX reward cycle),

stackslib/src/burnchains/bitcoin/address.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@
1515
// along with this program. If not, see <http://www.gnu.org/licenses/>.
1616

1717
use stacks_common::address::b58 as base58;
18-
use stacks_common::address::c32::c32_address;
1918
use stacks_common::deps_common::bech32;
2019
use stacks_common::deps_common::bech32::{u5, FromBase32, ToBase32};
2120
use stacks_common::deps_common::bitcoin::blockdata::opcodes::All as BtcOp;
2221
use stacks_common::deps_common::bitcoin::blockdata::script::Builder as BtcScriptBuilder;
2322
use stacks_common::deps_common::bitcoin::blockdata::transaction::TxOut;
24-
use stacks_common::util::hash::{hex_bytes, to_hex, Hash160};
25-
use stacks_common::util::log;
23+
#[cfg(test)]
24+
use stacks_common::util::hash::hex_bytes;
25+
use stacks_common::util::hash::Hash160;
2626

2727
use crate::burnchains::bitcoin::{BitcoinNetworkType, Error as btc_error};
2828
use crate::burnchains::Address;
@@ -686,7 +686,6 @@ impl Address for BitcoinAddress {
686686
mod tests {
687687
use stacks_common::types::Address;
688688
use stacks_common::util::hash::{hex_bytes, Hash160};
689-
use stacks_common::util::log;
690689

691690
use super::{
692691
BitcoinAddress, LegacyBitcoinAddress, LegacyBitcoinAddressType, SegwitBitcoinAddress,

stackslib/src/burnchains/bitcoin/bits.rs

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,30 +13,21 @@
1313
//
1414
// You should have received a copy of the GNU General Public License
1515
// along with this program. If not, see <http://www.gnu.org/licenses/>.
16-
17-
use sha2::{Digest, Sha256};
18-
use stacks_common::address::{public_keys_to_address_hash, AddressHashMode};
1916
use stacks_common::deps_common::bitcoin::blockdata::opcodes::{All as btc_opcodes, Class};
20-
use stacks_common::deps_common::bitcoin::blockdata::script::{Builder, Instruction, Script};
17+
use stacks_common::deps_common::bitcoin::blockdata::script::{Instruction, Script};
2118
use stacks_common::deps_common::bitcoin::blockdata::transaction::{
2219
TxIn as BtcTxIn, TxOut as BtcTxOut,
2320
};
24-
use stacks_common::deps_common::bitcoin::util::hash::Sha256dHash;
25-
use stacks_common::types::chainstate::BurnchainHeaderHash;
26-
use stacks_common::util::hash::{hex_bytes, Hash160};
27-
use stacks_common::util::log;
21+
#[cfg(test)]
22+
use stacks_common::util::hash::hex_bytes;
2823

2924
use crate::burnchains::bitcoin::address::{BitcoinAddress, LegacyBitcoinAddressType};
3025
use crate::burnchains::bitcoin::keys::BitcoinPublicKey;
3126
use crate::burnchains::bitcoin::{
3227
BitcoinInputType, BitcoinNetworkType, BitcoinTxInput, BitcoinTxInputRaw,
3328
BitcoinTxInputStructured, BitcoinTxOutput, Error as btc_error,
3429
};
35-
use crate::burnchains::{PublicKey, Txid};
36-
use crate::chainstate::stacks::{
37-
C32_ADDRESS_VERSION_MAINNET_MULTISIG, C32_ADDRESS_VERSION_MAINNET_SINGLESIG,
38-
C32_ADDRESS_VERSION_TESTNET_MULTISIG, C32_ADDRESS_VERSION_TESTNET_SINGLESIG,
39-
};
30+
use crate::burnchains::Txid;
4031

4132
/// Parse a script into its structured constituant opcodes and data and collect them
4233
pub fn parse_script(script: &Script) -> Vec<Instruction<'_>> {
@@ -624,14 +615,12 @@ mod tests {
624615
use stacks_common::deps_common::bitcoin::blockdata::transaction::Transaction;
625616
use stacks_common::deps_common::bitcoin::network::serialize::deserialize as bitcoinlib_deserialize;
626617
use stacks_common::util::hash::hex_bytes;
627-
use stacks_common::util::log;
628618

629619
use super::{
630-
parse_script, to_txid, BitcoinTxInput, BitcoinTxInputRaw, BitcoinTxInputStructured,
631-
BitcoinTxOutput,
620+
parse_script, to_txid, BitcoinTxInputRaw, BitcoinTxInputStructured, BitcoinTxOutput,
632621
};
633622
use crate::burnchains::bitcoin::address::{
634-
BitcoinAddress, LegacyBitcoinAddress, LegacyBitcoinAddressType, SegwitBitcoinAddress,
623+
BitcoinAddress, LegacyBitcoinAddressType, SegwitBitcoinAddress,
635624
};
636625
use crate::burnchains::bitcoin::keys::BitcoinPublicKey;
637626
use crate::burnchains::bitcoin::{BitcoinInputType, BitcoinNetworkType};

stackslib/src/burnchains/bitcoin/blocks.rs

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@
1414
// You should have received a copy of the GNU General Public License
1515
// along with this program. If not, see <http://www.gnu.org/licenses/>.
1616

17-
use std::ops::Deref;
18-
1917
use stacks_common::deps_common::bitcoin::blockdata::block::{Block, LoneBlockHeader};
2018
use stacks_common::deps_common::bitcoin::blockdata::opcodes::All as btc_opcodes;
2119
use stacks_common::deps_common::bitcoin::blockdata::script::{Instruction, Script};
@@ -25,25 +23,21 @@ use stacks_common::deps_common::bitcoin::network::serialize::BitcoinHash;
2523
use stacks_common::deps_common::bitcoin::util::hash::bitcoin_merkle_root;
2624
use stacks_common::types::chainstate::BurnchainHeaderHash;
2725
use stacks_common::util::hash::to_hex;
28-
use stacks_common::util::log;
2926

3027
use crate::burnchains::bitcoin::address::BitcoinAddress;
3128
use crate::burnchains::bitcoin::indexer::BitcoinIndexer;
32-
use crate::burnchains::bitcoin::keys::BitcoinPublicKey;
3329
use crate::burnchains::bitcoin::messages::BitcoinMessageHandler;
3430
use crate::burnchains::bitcoin::{
35-
bits, BitcoinBlock, BitcoinInputType, BitcoinNetworkType, BitcoinTransaction, BitcoinTxInput,
36-
BitcoinTxOutput, Error as btc_error, PeerMessage,
31+
bits, BitcoinBlock, BitcoinNetworkType, BitcoinTransaction, BitcoinTxInput, BitcoinTxOutput,
32+
Error as btc_error, PeerMessage,
3733
};
3834
use crate::burnchains::indexer::{
3935
BurnBlockIPC, BurnHeaderIPC, BurnchainBlockDownloader, BurnchainBlockParser,
4036
};
4137
use crate::burnchains::{
42-
BurnchainBlock, BurnchainTransaction, Error as burnchain_error, MagicBytes, Txid,
43-
MAGIC_BYTES_LENGTH,
38+
BurnchainBlock, Error as burnchain_error, MagicBytes, Txid, MAGIC_BYTES_LENGTH,
4439
};
4540
use crate::core::StacksEpochId;
46-
use crate::deps;
4741

4842
#[derive(Debug, Clone, PartialEq)]
4943
pub struct BitcoinHeaderIPC {
@@ -550,16 +544,15 @@ mod tests {
550544
use stacks_common::types::chainstate::BurnchainHeaderHash;
551545
use stacks_common::types::Address;
552546
use stacks_common::util::hash::hex_bytes;
553-
use stacks_common::util::log;
554547

555548
use super::BitcoinBlockParser;
556549
use crate::burnchains::bitcoin::address::{BitcoinAddress, LegacyBitcoinAddressType};
557550
use crate::burnchains::bitcoin::keys::BitcoinPublicKey;
558551
use crate::burnchains::bitcoin::{
559-
BitcoinBlock, BitcoinInputType, BitcoinNetworkType, BitcoinTransaction, BitcoinTxInput,
560-
BitcoinTxInputRaw, BitcoinTxInputStructured, BitcoinTxOutput,
552+
BitcoinBlock, BitcoinInputType, BitcoinNetworkType, BitcoinTransaction, BitcoinTxInputRaw,
553+
BitcoinTxInputStructured, BitcoinTxOutput,
561554
};
562-
use crate::burnchains::{BurnchainBlock, BurnchainTransaction, MagicBytes, Txid};
555+
use crate::burnchains::{MagicBytes, Txid};
563556
use crate::core::StacksEpochId;
564557

565558
struct TxFixture {

stackslib/src/burnchains/bitcoin/indexer.rs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,23 +15,24 @@
1515
// along with this program. If not, see <http://www.gnu.org/licenses/>.
1616

1717
use std::net::Shutdown;
18-
use std::ops::{Deref, DerefMut};
1918
use std::path::PathBuf;
2019
use std::sync::atomic::{AtomicBool, Ordering};
2120
use std::sync::Arc;
2221
use std::time::Duration;
23-
use std::{cmp, fs, net, path, time};
22+
use std::{cmp, fs, net};
2423

2524
use rand::{thread_rng, Rng};
25+
#[cfg(test)]
2626
use stacks_common::deps_common::bitcoin::blockdata::block::{BlockHeader, LoneBlockHeader};
27+
#[cfg(test)]
2728
use stacks_common::deps_common::bitcoin::network::encodable::VarInt;
2829
use stacks_common::deps_common::bitcoin::network::message::NetworkMessage;
2930
use stacks_common::deps_common::bitcoin::network::serialize::{
3031
BitcoinHash, Error as btc_serialization_err,
3132
};
3233
use stacks_common::deps_common::bitcoin::util::hash::Sha256dHash;
3334
use stacks_common::types::chainstate::BurnchainHeaderHash;
34-
use stacks_common::util::{get_epoch_time_secs, log};
35+
use stacks_common::util::get_epoch_time_secs;
3536

3637
use crate::burnchains::bitcoin::blocks::{
3738
BitcoinBlockDownloader, BitcoinBlockParser, BitcoinHeaderIPC,
@@ -42,7 +43,7 @@ use crate::burnchains::bitcoin::{BitcoinNetworkType, Error as btc_error};
4243
use crate::burnchains::db::BurnchainHeaderReader;
4344
use crate::burnchains::indexer::{BurnchainIndexer, *};
4445
use crate::burnchains::{
45-
Burnchain, BurnchainBlockHeader, Error as burnchain_error, MagicBytes, BLOCKSTACK_MAGIC_MAINNET,
46+
BurnchainBlockHeader, Error as burnchain_error, MagicBytes, BLOCKSTACK_MAGIC_MAINNET,
4647
};
4748
use crate::core::{
4849
EpochList, StacksEpoch, StacksEpochExtension, STACKS_EPOCHS_MAINNET, STACKS_EPOCHS_REGTEST,
@@ -1181,15 +1182,12 @@ mod test {
11811182

11821183
use stacks_common::deps_common::bitcoin::blockdata::block::{BlockHeader, LoneBlockHeader};
11831184
use stacks_common::deps_common::bitcoin::network::encodable::VarInt;
1184-
use stacks_common::deps_common::bitcoin::network::serialize::{
1185-
deserialize, serialize, BitcoinHash,
1186-
};
11871185
use stacks_common::deps_common::bitcoin::util::hash::Sha256dHash;
11881186
use stacks_common::util::get_epoch_time_secs;
11891187
use stacks_common::util::uint::Uint256;
11901188

11911189
use super::*;
1192-
use crate::burnchains::bitcoin::{Error as btc_error, *};
1190+
use crate::burnchains::bitcoin::*;
11931191
use crate::burnchains::{Error as burnchain_error, *};
11941192

11951193
#[test]

stackslib/src/burnchains/bitcoin/mod.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
// This module is concerned with the implementation of the BitcoinIndexer
1818
// structure and its methods and traits.
1919

20-
use std::sync::Arc;
2120
use std::{error, fmt, io};
2221

2322
use stacks_common::deps_common::bitcoin::network::serialize::Error as btc_serialize_error;
@@ -27,8 +26,6 @@ use stacks_common::util::HexError as btc_hex_error;
2726
use crate::burnchains::bitcoin::address::BitcoinAddress;
2827
use crate::burnchains::bitcoin::keys::BitcoinPublicKey;
2928
use crate::burnchains::Txid;
30-
use crate::chainstate::burn::operations::BlockstackOperationType;
31-
use crate::deps;
3229
use crate::util_lib::db::Error as db_error;
3330

3431
pub mod address;

0 commit comments

Comments
 (0)