diff --git a/stackslib/src/chainstate/tests/consensus.rs b/stackslib/src/chainstate/tests/consensus.rs
index 4bf67362d83..e0e1be7d4c2 100644
--- a/stackslib/src/chainstate/tests/consensus.rs
+++ b/stackslib/src/chainstate/tests/consensus.rs
@@ -12,8 +12,8 @@
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see .
-use std::cell::LazyCell;
use std::collections::{BTreeSet, HashMap};
+use std::sync::LazyLock;
use clarity::boot_util::boot_code_addr;
use clarity::codec::StacksMessageCodec;
@@ -62,7 +62,7 @@ pub const SK_2: &str = "4ce9a8f7539ea93753a36405b16e8b57e15a552430410709c2b6d65d
pub const SK_3: &str = "cb95ddd0fe18ec57f4f3533b95ae564b3f1ae063dbf75b46334bd86245aef78501";
/// The private key for the faucet account.
-pub const FAUCET_PRIV_KEY: LazyCell = LazyCell::new(|| {
+pub static FAUCET_PRIV_KEY: LazyLock = LazyLock::new(|| {
StacksPrivateKey::from_hex("510f96a8efd0b11e211733c1ac5e3fa6f3d3fcdd62869e376c47decb3e14fea101")
.expect("Failed to parse private key")
});
@@ -709,6 +709,8 @@ pub struct ExpectedTransactionOutput {
pub struct ExpectedBlockOutput {
/// The expected block marf
pub marf_hash: TrieHash,
+ /// The epoch in which the test block was expected to be evaluated
+ pub evaluated_epoch: StacksEpochId,
/// The expected outputs for each transaction, in input order.
pub transactions: Vec,
/// The total execution cost of the block.
@@ -735,25 +737,25 @@ impl ExpectedResult {
Ok(epoch_receipt) => {
let transactions: Vec = epoch_receipt
.tx_receipts
- .iter()
+ .into_iter()
.map(|r| {
- let tx = match &r.transaction {
- TransactionOrigin::Stacks(tx) => Some(tx.payload.clone()),
+ let tx = match r.transaction {
+ TransactionOrigin::Stacks(tx) => Some(tx.payload),
TransactionOrigin::Burn(..) => None,
};
ExpectedTransactionOutput {
tx,
- return_type: r.result.clone(),
- cost: r.execution_cost.clone(),
- vm_error: r.vm_error.clone(),
+ return_type: r.result,
+ cost: r.execution_cost,
+ vm_error: r.vm_error,
}
})
.collect();
- let total_block_cost = epoch_receipt.anchored_block_cost.clone();
ExpectedResult::Success(ExpectedBlockOutput {
marf_hash,
+ evaluated_epoch: epoch_receipt.evaluated_epoch,
transactions,
- total_block_cost,
+ total_block_cost: epoch_receipt.anchored_block_cost,
})
}
Err(e) => ExpectedResult::Failure(e.to_string()),
@@ -873,7 +875,7 @@ impl ConsensusTest<'_> {
"--------- Processed block: {sig_hash} ---------";
"block" => ?nakamoto_block
);
- let remapped_result = res.map(|receipt| receipt.unwrap()).into();
+ let remapped_result = res.map(|receipt| receipt.unwrap());
// Restore chainstate for the next block
self.chain.sortdb = Some(sortdb);
self.chain.stacks_node = Some(stacks_node);
@@ -1009,14 +1011,14 @@ impl ConsensusTest<'_> {
fn compute_block_marf_root_hash(
&mut self,
block_time: u64,
- block_txs: &Vec,
+ block_txs: &[StacksTransaction],
) -> Result {
let node = self.chain.stacks_node.as_mut().unwrap();
let sortdb = self.chain.sortdb.as_ref().unwrap();
let burndb_conn = sortdb.index_handle_at_tip();
let chainstate = &mut node.chainstate;
- let chain_tip = NakamotoChainState::get_canonical_block_header(chainstate.db(), &sortdb)
+ let chain_tip = NakamotoChainState::get_canonical_block_header(chainstate.db(), sortdb)
.unwrap()
.unwrap();
@@ -1039,7 +1041,7 @@ impl ConsensusTest<'_> {
chain_tip.burn_header_height,
);
clarity_tx.rollback_block();
- return result;
+ result
}
/// This is where the real MARF computation happens.
@@ -1049,7 +1051,7 @@ impl ConsensusTest<'_> {
fn inner_compute_block_marf_root_hash(
clarity_tx: &mut ClarityTx,
block_time: u64,
- block_txs: &Vec,
+ block_txs: &[StacksTransaction],
burn_header_height: u32,
) -> Result {
clarity_tx
diff --git a/stackslib/src/chainstate/tests/snapshots/blockstack_lib__chainstate__tests__consensus__append_stx_transfers_success.snap b/stackslib/src/chainstate/tests/snapshots/blockstack_lib__chainstate__tests__consensus__append_stx_transfers_success.snap
index 7544bba771f..65ae5f95fd2 100644
--- a/stackslib/src/chainstate/tests/snapshots/blockstack_lib__chainstate__tests__consensus__append_stx_transfers_success.snap
+++ b/stackslib/src/chainstate/tests/snapshots/blockstack_lib__chainstate__tests__consensus__append_stx_transfers_success.snap
@@ -5,6 +5,7 @@ expression: result
[
Success(ExpectedBlockOutput(
marf_hash: "95999ab12ae2162f2dd25c4a7f7807017b3b5d20f28a53248e37c9864f923718",
+ evaluated_epoch: Epoch32,
transactions: [
ExpectedTransactionOutput(
tx: "TokenTransfer(from: ST000000000000000000002AMW42H, amount: 1000, memo: 00000000000000000000000000000000000000000000000000000000000000000000)",
@@ -62,6 +63,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "7e9b86e5b0ff545908784c1c674d1354228ce2884395ced13f7c9e4eaa7ecfd0",
+ evaluated_epoch: Epoch33,
transactions: [
ExpectedTransactionOutput(
tx: "TokenTransfer(from: ST000000000000000000002AMW42H, amount: 1000, memo: 00000000000000000000000000000000000000000000000000000000000000000000)",
diff --git a/stackslib/src/chainstate/tests/snapshots/blockstack_lib__chainstate__tests__consensus__successfully_deploy_and_call.snap b/stackslib/src/chainstate/tests/snapshots/blockstack_lib__chainstate__tests__consensus__successfully_deploy_and_call.snap
index d905047da1b..8d9eddf5f4c 100644
--- a/stackslib/src/chainstate/tests/snapshots/blockstack_lib__chainstate__tests__consensus__successfully_deploy_and_call.snap
+++ b/stackslib/src/chainstate/tests/snapshots/blockstack_lib__chainstate__tests__consensus__successfully_deploy_and_call.snap
@@ -5,6 +5,7 @@ expression: result
[
Success(ExpectedBlockOutput(
marf_hash: "7dc0aaa26bad4b0300a451df39c8ce76beff0b49da2db3fce47d63b87509c32e",
+ evaluated_epoch: Epoch30,
transactions: [
ExpectedTransactionOutput(
tx: "SmartContract(name: foo_contract-Epoch3_0-Clarity1, code_body: [..], clarity_version: Some(Clarity1))",
@@ -32,6 +33,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "4e611b18dc48b4ad2825a92431834e3bab0c69393e99a0fd6e5c18c4023a7705",
+ evaluated_epoch: Epoch30,
transactions: [
ExpectedTransactionOutput(
tx: "SmartContract(name: foo_contract-Epoch3_0-Clarity2, code_body: [..], clarity_version: Some(Clarity2))",
@@ -59,6 +61,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "46da815cdf0c9816d304feb9771763a4ff424b8362e559bbe0981305e6efd889",
+ evaluated_epoch: Epoch30,
transactions: [
ExpectedTransactionOutput(
tx: "SmartContract(name: foo_contract-Epoch3_0-Clarity3, code_body: [..], clarity_version: Some(Clarity3))",
@@ -86,6 +89,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "5fa759b7495ff89f5274d907b105f9afdfaa7f78942952b60a53b2c921e19607",
+ evaluated_epoch: Epoch31,
transactions: [
ExpectedTransactionOutput(
tx: "SmartContract(name: foo_contract-Epoch3_1-Clarity1, code_body: [..], clarity_version: Some(Clarity1))",
@@ -113,6 +117,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "159b15f8004355f25117d9a35d11a55f38c80c7886b9cba5ed63a454fc9a0112",
+ evaluated_epoch: Epoch31,
transactions: [
ExpectedTransactionOutput(
tx: "SmartContract(name: foo_contract-Epoch3_1-Clarity2, code_body: [..], clarity_version: Some(Clarity2))",
@@ -140,6 +145,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "ed275e6d1c8a6cf8afa1c0836aa00fb02e63b3a3cd263137ed4627e8fa23d50c",
+ evaluated_epoch: Epoch31,
transactions: [
ExpectedTransactionOutput(
tx: "SmartContract(name: foo_contract-Epoch3_1-Clarity3, code_body: [..], clarity_version: Some(Clarity3))",
@@ -167,6 +173,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "68b0d2bb6af72ff3d906da9fb1647f82b689fb7eefb88bff0c3d7324811bc7ff",
+ evaluated_epoch: Epoch32,
transactions: [
ExpectedTransactionOutput(
tx: "SmartContract(name: foo_contract-Epoch3_2-Clarity1, code_body: [..], clarity_version: Some(Clarity1))",
@@ -194,6 +201,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "2df07ee1b39c63c331bd882265dd335326f179cb46ac59229238f70a55af7926",
+ evaluated_epoch: Epoch32,
transactions: [
ExpectedTransactionOutput(
tx: "SmartContract(name: foo_contract-Epoch3_2-Clarity2, code_body: [..], clarity_version: Some(Clarity2))",
@@ -221,6 +229,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "8b4b06c870fd5b66e33fe4f1496509cc182827c2e175851d31b85ef00e161625",
+ evaluated_epoch: Epoch32,
transactions: [
ExpectedTransactionOutput(
tx: "SmartContract(name: foo_contract-Epoch3_2-Clarity3, code_body: [..], clarity_version: Some(Clarity3))",
@@ -248,6 +257,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "ed3ac24606bfab532195a58a924461dadda0c0e5e52c58d50004293f10a9ffa8",
+ evaluated_epoch: Epoch32,
transactions: [
ExpectedTransactionOutput(
tx: "ContractCall(address: ST1AW6EKPGT61SQ9FNVDS17RKNWT8ZP582VF9HSCP, contract_name: foo_contract-Epoch3_0-Clarity1, function_name: bar, function_args: [[UInt(1)]])",
@@ -275,6 +285,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "af5b3fcf2446019e5179753ca3d5a9c87bfd4992db44f23ff265d713051684fc",
+ evaluated_epoch: Epoch32,
transactions: [
ExpectedTransactionOutput(
tx: "ContractCall(address: ST1AW6EKPGT61SQ9FNVDS17RKNWT8ZP582VF9HSCP, contract_name: foo_contract-Epoch3_0-Clarity2, function_name: bar, function_args: [[UInt(1)]])",
@@ -302,6 +313,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "ab1b2f5cc50cbc4a44efacfa273bebc6a8613324e8c41fd092cd99813f7a5641",
+ evaluated_epoch: Epoch32,
transactions: [
ExpectedTransactionOutput(
tx: "ContractCall(address: ST1AW6EKPGT61SQ9FNVDS17RKNWT8ZP582VF9HSCP, contract_name: foo_contract-Epoch3_0-Clarity3, function_name: bar, function_args: [[UInt(1)]])",
@@ -329,6 +341,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "38b0d2fe231731c95ab452ed2e048abfafaf163416a6304af8845d5963fb4347",
+ evaluated_epoch: Epoch32,
transactions: [
ExpectedTransactionOutput(
tx: "ContractCall(address: ST1AW6EKPGT61SQ9FNVDS17RKNWT8ZP582VF9HSCP, contract_name: foo_contract-Epoch3_1-Clarity1, function_name: bar, function_args: [[UInt(1)]])",
@@ -356,6 +369,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "34f0b0577b92091983d86b293c3c78ce83a129fa94bc125bec5c8ebf08f91308",
+ evaluated_epoch: Epoch32,
transactions: [
ExpectedTransactionOutput(
tx: "ContractCall(address: ST1AW6EKPGT61SQ9FNVDS17RKNWT8ZP582VF9HSCP, contract_name: foo_contract-Epoch3_1-Clarity2, function_name: bar, function_args: [[UInt(1)]])",
@@ -383,6 +397,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "a9cf5345902cba7d1529cc72f23a1ceed8d0addcbc2d608163513233fcf76f1d",
+ evaluated_epoch: Epoch32,
transactions: [
ExpectedTransactionOutput(
tx: "ContractCall(address: ST1AW6EKPGT61SQ9FNVDS17RKNWT8ZP582VF9HSCP, contract_name: foo_contract-Epoch3_1-Clarity3, function_name: bar, function_args: [[UInt(1)]])",
@@ -410,6 +425,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "c290afd1e6546e3efa21a1403dd0cd2845a9b5dffd288c907ef2ff40b5328e5f",
+ evaluated_epoch: Epoch32,
transactions: [
ExpectedTransactionOutput(
tx: "ContractCall(address: ST1AW6EKPGT61SQ9FNVDS17RKNWT8ZP582VF9HSCP, contract_name: foo_contract-Epoch3_2-Clarity1, function_name: bar, function_args: [[UInt(1)]])",
@@ -437,6 +453,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "d616f061a5fb3377b12d60a6af69d280bfc3df72f5d00bf4dff0063003a39500",
+ evaluated_epoch: Epoch32,
transactions: [
ExpectedTransactionOutput(
tx: "ContractCall(address: ST1AW6EKPGT61SQ9FNVDS17RKNWT8ZP582VF9HSCP, contract_name: foo_contract-Epoch3_2-Clarity2, function_name: bar, function_args: [[UInt(1)]])",
@@ -464,6 +481,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "677f80720b7d3ab147d595942e54ab6d1c16bf91628ca1d9b9fbf18a4456ca3f",
+ evaluated_epoch: Epoch32,
transactions: [
ExpectedTransactionOutput(
tx: "ContractCall(address: ST1AW6EKPGT61SQ9FNVDS17RKNWT8ZP582VF9HSCP, contract_name: foo_contract-Epoch3_2-Clarity3, function_name: bar, function_args: [[UInt(1)]])",
@@ -491,6 +509,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "c0d6892c54926e704f2b79f5bfcea311b6ecbfd1709de05d8ed817f54f392e1c",
+ evaluated_epoch: Epoch33,
transactions: [
ExpectedTransactionOutput(
tx: "SmartContract(name: foo_contract-Epoch3_3-Clarity1, code_body: [..], clarity_version: Some(Clarity1))",
@@ -518,6 +537,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "bc08a038f2c9819baeb15f306063c351b2ad4d2b6297de98e5019c0655ac29d1",
+ evaluated_epoch: Epoch33,
transactions: [
ExpectedTransactionOutput(
tx: "SmartContract(name: foo_contract-Epoch3_3-Clarity2, code_body: [..], clarity_version: Some(Clarity2))",
@@ -545,6 +565,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "deda548b30bd858b6b42b638258ea0a45919972b339604544090af42f7c4330b",
+ evaluated_epoch: Epoch33,
transactions: [
ExpectedTransactionOutput(
tx: "SmartContract(name: foo_contract-Epoch3_3-Clarity3, code_body: [..], clarity_version: Some(Clarity3))",
@@ -572,6 +593,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "1f8603c7d580008f986774bc4a624d429d5b45b4a4385c14656a5398bf8a56ed",
+ evaluated_epoch: Epoch33,
transactions: [
ExpectedTransactionOutput(
tx: "SmartContract(name: foo_contract-Epoch3_3-Clarity4, code_body: [..], clarity_version: Some(Clarity4))",
@@ -599,6 +621,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "59df1ff6ea26ae936061b8565b962dfbd0d9420efedbf9c9aefb43365e4da789",
+ evaluated_epoch: Epoch33,
transactions: [
ExpectedTransactionOutput(
tx: "ContractCall(address: ST1AW6EKPGT61SQ9FNVDS17RKNWT8ZP582VF9HSCP, contract_name: foo_contract-Epoch3_0-Clarity1, function_name: bar, function_args: [[UInt(1)]])",
@@ -626,6 +649,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "fb5d51ffb295367d9dcd567775618bd54b21c56a9503c2678fac49f53d5e23fa",
+ evaluated_epoch: Epoch33,
transactions: [
ExpectedTransactionOutput(
tx: "ContractCall(address: ST1AW6EKPGT61SQ9FNVDS17RKNWT8ZP582VF9HSCP, contract_name: foo_contract-Epoch3_0-Clarity2, function_name: bar, function_args: [[UInt(1)]])",
@@ -653,6 +677,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "505471f1004e5ab38ef24a05b22422b8d66c9313a85c1d9c3470204d7e38f422",
+ evaluated_epoch: Epoch33,
transactions: [
ExpectedTransactionOutput(
tx: "ContractCall(address: ST1AW6EKPGT61SQ9FNVDS17RKNWT8ZP582VF9HSCP, contract_name: foo_contract-Epoch3_0-Clarity3, function_name: bar, function_args: [[UInt(1)]])",
@@ -680,6 +705,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "5260eec1120a1caeaceb27842cb4e4a235cbb0791fb67682499bb3796d07c31a",
+ evaluated_epoch: Epoch33,
transactions: [
ExpectedTransactionOutput(
tx: "ContractCall(address: ST1AW6EKPGT61SQ9FNVDS17RKNWT8ZP582VF9HSCP, contract_name: foo_contract-Epoch3_1-Clarity1, function_name: bar, function_args: [[UInt(1)]])",
@@ -707,6 +733,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "105587537589f0bdad491c5cbcdfcffea475176a064c01ffd7f61a1eedd15af5",
+ evaluated_epoch: Epoch33,
transactions: [
ExpectedTransactionOutput(
tx: "ContractCall(address: ST1AW6EKPGT61SQ9FNVDS17RKNWT8ZP582VF9HSCP, contract_name: foo_contract-Epoch3_1-Clarity2, function_name: bar, function_args: [[UInt(1)]])",
@@ -734,6 +761,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "861d1186952ddb0e242bfbe997ea9860cc6739880b47a0c268d7211d54942740",
+ evaluated_epoch: Epoch33,
transactions: [
ExpectedTransactionOutput(
tx: "ContractCall(address: ST1AW6EKPGT61SQ9FNVDS17RKNWT8ZP582VF9HSCP, contract_name: foo_contract-Epoch3_1-Clarity3, function_name: bar, function_args: [[UInt(1)]])",
@@ -761,6 +789,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "235447452a8921fe9bbf8999194cd001e0ded05bfcbf220b5408be28a4b505f8",
+ evaluated_epoch: Epoch33,
transactions: [
ExpectedTransactionOutput(
tx: "ContractCall(address: ST1AW6EKPGT61SQ9FNVDS17RKNWT8ZP582VF9HSCP, contract_name: foo_contract-Epoch3_2-Clarity1, function_name: bar, function_args: [[UInt(1)]])",
@@ -788,6 +817,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "74ea86662425f6fe76a58bb677e85aaab12ca27b2ec9a2e0c69bbb401275a859",
+ evaluated_epoch: Epoch33,
transactions: [
ExpectedTransactionOutput(
tx: "ContractCall(address: ST1AW6EKPGT61SQ9FNVDS17RKNWT8ZP582VF9HSCP, contract_name: foo_contract-Epoch3_2-Clarity2, function_name: bar, function_args: [[UInt(1)]])",
@@ -815,6 +845,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "795d447db68ddb26b9fd4d091f9e0643c48d44cf34b4c584b916ffe4281c5041",
+ evaluated_epoch: Epoch33,
transactions: [
ExpectedTransactionOutput(
tx: "ContractCall(address: ST1AW6EKPGT61SQ9FNVDS17RKNWT8ZP582VF9HSCP, contract_name: foo_contract-Epoch3_2-Clarity3, function_name: bar, function_args: [[UInt(1)]])",
@@ -842,6 +873,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "228ad67aa6b7422fc7c8dbbc31c3e8e3042fe8c6bbd6d6a7407788b6d6902388",
+ evaluated_epoch: Epoch33,
transactions: [
ExpectedTransactionOutput(
tx: "ContractCall(address: ST1AW6EKPGT61SQ9FNVDS17RKNWT8ZP582VF9HSCP, contract_name: foo_contract-Epoch3_3-Clarity1, function_name: bar, function_args: [[UInt(1)]])",
@@ -869,6 +901,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "31234b0b5cbda935741846fc6aee0138858ee589a8610587485fe2ac6ccbde3b",
+ evaluated_epoch: Epoch33,
transactions: [
ExpectedTransactionOutput(
tx: "ContractCall(address: ST1AW6EKPGT61SQ9FNVDS17RKNWT8ZP582VF9HSCP, contract_name: foo_contract-Epoch3_3-Clarity2, function_name: bar, function_args: [[UInt(1)]])",
@@ -896,6 +929,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "5254245eb17bc1de6da56501a52b9a5f5fb8fd19c40eac285778a46eddc864c8",
+ evaluated_epoch: Epoch33,
transactions: [
ExpectedTransactionOutput(
tx: "ContractCall(address: ST1AW6EKPGT61SQ9FNVDS17RKNWT8ZP582VF9HSCP, contract_name: foo_contract-Epoch3_3-Clarity3, function_name: bar, function_args: [[UInt(1)]])",
@@ -923,6 +957,7 @@ expression: result
)),
Success(ExpectedBlockOutput(
marf_hash: "9a7ed0c58f9c0611f61c78a71741c7f0256402e5493843e6b1e327a8e7f2157c",
+ evaluated_epoch: Epoch33,
transactions: [
ExpectedTransactionOutput(
tx: "ContractCall(address: ST1AW6EKPGT61SQ9FNVDS17RKNWT8ZP582VF9HSCP, contract_name: foo_contract-Epoch3_3-Clarity4, function_name: bar, function_args: [[UInt(1)]])",