Skip to content

Commit d0418f1

Browse files
committed
test: update the check_block_info_rewards test
1 parent 5f3197c commit d0418f1

File tree

1 file changed

+62
-85
lines changed

1 file changed

+62
-85
lines changed

testnet/stacks-node/src/tests/nakamoto_integrations.rs

Lines changed: 62 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -7932,7 +7932,6 @@ fn check_block_info() {
79327932
let info = get_chain_info_result(&naka_conf).unwrap();
79337933
info!("Chain info: {:?}", info);
79347934
let last_stacks_block_height = info.stacks_tip_height as u128;
7935-
let last_stacks_tip = StacksBlockId::new(&info.stacks_tip_consensus_hash, &info.stacks_tip);
79367935
let (chainstate, _) = StacksChainState::open(
79377936
naka_conf.is_mainnet(),
79387937
naka_conf.burnchain.chain_id,
@@ -7941,6 +7940,7 @@ fn check_block_info() {
79417940
)
79427941
.unwrap();
79437942

7943+
let last_stacks_tip = StacksBlockId::new(&info.stacks_tip_consensus_hash, &info.stacks_tip);
79447944
let last_tenure_height: u128 =
79457945
NakamotoChainState::get_coinbase_height(&mut chainstate.index_conn(), &last_stacks_tip)
79467946
.unwrap()
@@ -8070,19 +8070,13 @@ fn check_block_info() {
80708070
// There should have been a tenure change, so these should be different.
80718071
assert_ne!(tuple3_tenure0, tuple3_tenure1);
80728072
assert_eq!(
8073-
tuple3_tenure1.get("burnchain-header-hash"),
8074-
tuple0.get("burnchain-header-hash")
8075-
);
8076-
assert_eq!(
8077-
tuple3_tenure1.get("miner-address"),
8078-
tuple0.get("miner-address")
8079-
);
8080-
assert_eq!(tuple3_tenure1.get("time"), tuple0.get("time"));
8081-
assert_eq!(tuple3_tenure1.get("vrf-seed"), tuple0.get("vrf-seed"));
8082-
assert_eq!(
8083-
tuple3_tenure1.get("block-reward"),
8084-
tuple0.get("block-reward")
8073+
tuple3_tenure1["burnchain-header-hash"],
8074+
tuple0["burnchain-header-hash"]
80858075
);
8076+
assert_eq!(tuple3_tenure1["miner-address"], tuple0["miner-address"]);
8077+
assert_eq!(tuple3_tenure1["time"], tuple0["time"]);
8078+
assert_eq!(tuple3_tenure1["vrf-seed"], tuple0["vrf-seed"]);
8079+
assert_eq!(tuple3_tenure1["block-reward"], tuple0["block-reward"]);
80868080
assert_eq!(
80878081
tuple3_tenure1.get("miner-spend-total"),
80888082
tuple0.get("miner-spend-total")
@@ -8106,14 +8100,9 @@ fn check_block_info() {
81068100
// tuple 0 fetches the id-header-hash for the first block of the tenure (block1)
81078101

81088102
let tuple3_block1 = get_block_info(contract3_name, last_stacks_block_height - 2);
8109-
assert_eq!(
8110-
tuple3_block1.get("id-header-hash"),
8111-
tuple0.get("id-header-hash")
8112-
);
8113-
assert_eq!(tuple3_block1.get("header-hash"), tuple0.get("header-hash"));
8114-
assert!(tuple3_block2
8115-
.get("time")
8116-
.unwrap()
8103+
assert_eq!(tuple3_block1["id-header-hash"], tuple0["id-header-hash"]);
8104+
assert_eq!(tuple3_block1["header-hash"], tuple0["header-hash"]);
8105+
assert!(tuple3_block2["time"]
81178106
.clone()
81188107
.expect_optional()
81198108
.unwrap()
@@ -8180,14 +8169,9 @@ fn check_block_info() {
81808169
let tuple3_block3 = get_block_info(contract3_name, last_stacks_block_height - 1);
81818170
// There should have been a block change, so these should be different.
81828171
assert_ne!(tuple3_block3, tuple3_block2);
8183-
assert_eq!(
8184-
tuple3_block1.get("id-header-hash"),
8185-
tuple0.get("id-header-hash")
8186-
);
8187-
assert_eq!(tuple3_block1.get("header-hash"), tuple0.get("header-hash"));
8188-
assert!(tuple3_block3
8189-
.get("time")
8190-
.unwrap()
8172+
assert_eq!(tuple3_block1["id-header-hash"], tuple0["id-header-hash"]);
8173+
assert_eq!(tuple3_block1["header-hash"], tuple0["header-hash"]);
8174+
assert!(tuple3_block3["time"]
81918175
.clone()
81928176
.expect_optional()
81938177
.unwrap()
@@ -8329,7 +8313,7 @@ fn check_block_info_rewards() {
83298313

83308314
// Deploy this version with the Clarity 1 / 2 before epoch 3
83318315
let contract0_name = "test-contract-0";
8332-
let contract_clarity1 = "(define-read-only (get-info (height uint))
8316+
let contract_clarity1 = "(define-read-only (get-block-info (height uint))
83338317
{
83348318
burnchain-header-hash: (get-block-info? burnchain-header-hash height),
83358319
id-header-hash: (get-block-info? id-header-hash height),
@@ -8354,6 +8338,17 @@ fn check_block_info_rewards() {
83548338
sender_nonce += 1;
83558339
submit_tx(&http_origin, &contract_tx0);
83568340

8341+
let get_block_info = |contract_name: &str, query_height: u128| {
8342+
let result = call_read_only(
8343+
&naka_conf,
8344+
&sender_addr,
8345+
contract_name,
8346+
"get-block-info",
8347+
vec![&clarity::vm::Value::UInt(query_height)],
8348+
);
8349+
result.expect_tuple().unwrap().data_map
8350+
};
8351+
83578352
boot_to_epoch_3(
83588353
&naka_conf,
83598354
&blocks_processed,
@@ -8368,14 +8363,7 @@ fn check_block_info_rewards() {
83688363
info!("Nakamoto miner started...");
83698364
blind_signer(&naka_conf, &signers, proposals_submitted);
83708365

8371-
let result0 = call_read_only(
8372-
&naka_conf,
8373-
&sender_addr,
8374-
contract0_name,
8375-
"get-info",
8376-
vec![&clarity::vm::Value::UInt(1)],
8377-
);
8378-
let tuple0 = result0.expect_tuple().unwrap().data_map;
8366+
let tuple0 = get_block_info(contract0_name, 1);
83798367
info!("Info from pre-epoch 3.0: {:?}", tuple0);
83808368

83818369
wait_for_first_naka_block_commit(60, &commits_submitted);
@@ -8489,8 +8477,22 @@ fn check_block_info_rewards() {
84898477

84908478
let info = get_chain_info_result(&naka_conf).unwrap();
84918479
info!("Chain info: {:?}", info);
8480+
let (chainstate, _) = StacksChainState::open(
8481+
naka_conf.is_mainnet(),
8482+
naka_conf.burnchain.chain_id,
8483+
&naka_conf.get_chainstate_path_str(),
8484+
None,
8485+
)
8486+
.unwrap();
8487+
84928488
let last_stacks_block_height = info.stacks_tip_height as u128;
84938489
let last_nakamoto_block = last_stacks_block_height;
8490+
let last_stacks_tip = StacksBlockId::new(&info.stacks_tip_consensus_hash, &info.stacks_tip);
8491+
let last_nakamoto_block_tenure_height: u128 =
8492+
NakamotoChainState::get_coinbase_height(&mut chainstate.index_conn(), &last_stacks_tip)
8493+
.unwrap()
8494+
.unwrap()
8495+
.into();
84948496

84958497
// Mine more than 2 burn blocks to get the last block's reward matured
84968498
// (only 2 blocks maturation time in tests)
@@ -8511,36 +8513,32 @@ fn check_block_info_rewards() {
85118513
let last_stacks_block_height = info.stacks_tip_height as u128;
85128514
let blocks = test_observer::get_blocks();
85138515

8516+
let last_stacks_tip = StacksBlockId::new(&info.stacks_tip_consensus_hash, &info.stacks_tip);
8517+
let last_tenure_height: u128 =
8518+
NakamotoChainState::get_coinbase_height(&mut chainstate.index_conn(), &last_stacks_tip)
8519+
.unwrap()
8520+
.unwrap()
8521+
.into();
8522+
85148523
// Check the block reward is now matured in one of the tenure-change blocks
85158524
let mature_height = last_stacks_block_height - 4;
85168525
let expected_reward = get_expected_reward_for_height(&blocks, mature_height);
8517-
let result0 = call_read_only(
8518-
&naka_conf,
8519-
&sender_addr,
8520-
contract0_name,
8521-
"get-info",
8522-
vec![&clarity::vm::Value::UInt(mature_height)],
8526+
let tuple0 = get_block_info(contract0_name, last_tenure_height - 4);
8527+
info!(
8528+
"block rewards";
8529+
"fetched" => %tuple0["block-reward"],
8530+
"expected" => expected_reward,
85238531
);
8524-
let tuple0 = result0.expect_tuple().unwrap().data_map;
85258532
assert_eq!(
8526-
tuple0
8527-
.get("block-reward")
8528-
.unwrap()
8533+
tuple0["block-reward"]
85298534
.clone()
85308535
.expect_optional()
85318536
.unwrap()
85328537
.unwrap(),
8533-
Value::UInt(expected_reward as u128)
8538+
Value::UInt(expected_reward)
85348539
);
85358540

8536-
let result1 = call_read_only(
8537-
&naka_conf,
8538-
&sender_addr,
8539-
contract1_name,
8540-
"get-info",
8541-
vec![&clarity::vm::Value::UInt(mature_height)],
8542-
);
8543-
let tuple1 = result1.expect_tuple().unwrap().data_map;
8541+
let tuple1 = get_block_info(contract1_name, last_tenure_height - 4);
85448542
assert_eq!(tuple0, tuple1);
85458543

85468544
let result3_tenure = call_read_only(
@@ -8551,41 +8549,23 @@ fn check_block_info_rewards() {
85518549
vec![&clarity::vm::Value::UInt(mature_height)],
85528550
);
85538551
let tuple3_tenure = result3_tenure.expect_tuple().unwrap().data_map;
8554-
assert_eq!(
8555-
tuple3_tenure.get("block-reward"),
8556-
tuple0.get("block-reward")
8557-
);
8552+
assert_eq!(tuple3_tenure["block-reward"], tuple0["block-reward"]);
85588553

85598554
// Check the block reward is now matured in one of the Nakamoto blocks
85608555
let expected_reward = get_expected_reward_for_height(&blocks, last_nakamoto_block);
85618556

8562-
let result0 = call_read_only(
8563-
&naka_conf,
8564-
&sender_addr,
8565-
contract0_name,
8566-
"get-info",
8567-
vec![&clarity::vm::Value::UInt(last_nakamoto_block)],
8568-
);
8569-
let tuple0 = result0.expect_tuple().unwrap().data_map;
8557+
let tuple0 = get_block_info(contract0_name, last_nakamoto_block_tenure_height);
8558+
85708559
assert_eq!(
8571-
tuple0
8572-
.get("block-reward")
8573-
.unwrap()
8560+
tuple0["block-reward"]
85748561
.clone()
85758562
.expect_optional()
85768563
.unwrap()
85778564
.unwrap(),
8578-
Value::UInt(expected_reward as u128)
8565+
Value::UInt(expected_reward)
85798566
);
85808567

8581-
let result1 = call_read_only(
8582-
&naka_conf,
8583-
&sender_addr,
8584-
contract1_name,
8585-
"get-info",
8586-
vec![&clarity::vm::Value::UInt(last_nakamoto_block)],
8587-
);
8588-
let tuple1 = result1.expect_tuple().unwrap().data_map;
8568+
let tuple1 = get_block_info(contract1_name, last_nakamoto_block_tenure_height);
85898569
assert_eq!(tuple0, tuple1);
85908570

85918571
let result3_tenure = call_read_only(
@@ -8596,10 +8576,7 @@ fn check_block_info_rewards() {
85968576
vec![&clarity::vm::Value::UInt(last_nakamoto_block)],
85978577
);
85988578
let tuple3_tenure = result3_tenure.expect_tuple().unwrap().data_map;
8599-
assert_eq!(
8600-
tuple3_tenure.get("block-reward"),
8601-
tuple0.get("block-reward")
8602-
);
8579+
assert_eq!(tuple3_tenure["block-reward"], tuple0["block-reward"]);
86038580

86048581
coord_channel
86058582
.lock()

0 commit comments

Comments
 (0)