@@ -7932,7 +7932,6 @@ fn check_block_info() {
7932
7932
let info = get_chain_info_result ( & naka_conf) . unwrap ( ) ;
7933
7933
info ! ( "Chain info: {:?}" , info) ;
7934
7934
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 ) ;
7936
7935
let ( chainstate, _) = StacksChainState :: open (
7937
7936
naka_conf. is_mainnet ( ) ,
7938
7937
naka_conf. burnchain . chain_id ,
@@ -7941,6 +7940,7 @@ fn check_block_info() {
7941
7940
)
7942
7941
. unwrap ( ) ;
7943
7942
7943
+ let last_stacks_tip = StacksBlockId :: new ( & info. stacks_tip_consensus_hash , & info. stacks_tip ) ;
7944
7944
let last_tenure_height: u128 =
7945
7945
NakamotoChainState :: get_coinbase_height ( & mut chainstate. index_conn ( ) , & last_stacks_tip)
7946
7946
. unwrap ( )
@@ -8070,19 +8070,13 @@ fn check_block_info() {
8070
8070
// There should have been a tenure change, so these should be different.
8071
8071
assert_ne ! ( tuple3_tenure0, tuple3_tenure1) ;
8072
8072
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" ]
8085
8075
) ;
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" ] ) ;
8086
8080
assert_eq ! (
8087
8081
tuple3_tenure1. get( "miner-spend-total" ) ,
8088
8082
tuple0. get( "miner-spend-total" )
@@ -8106,14 +8100,9 @@ fn check_block_info() {
8106
8100
// tuple 0 fetches the id-header-hash for the first block of the tenure (block1)
8107
8101
8108
8102
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" ]
8117
8106
. clone( )
8118
8107
. expect_optional( )
8119
8108
. unwrap( )
@@ -8180,14 +8169,9 @@ fn check_block_info() {
8180
8169
let tuple3_block3 = get_block_info ( contract3_name, last_stacks_block_height - 1 ) ;
8181
8170
// There should have been a block change, so these should be different.
8182
8171
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" ]
8191
8175
. clone( )
8192
8176
. expect_optional( )
8193
8177
. unwrap( )
@@ -8329,7 +8313,7 @@ fn check_block_info_rewards() {
8329
8313
8330
8314
// Deploy this version with the Clarity 1 / 2 before epoch 3
8331
8315
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))
8333
8317
{
8334
8318
burnchain-header-hash: (get-block-info? burnchain-header-hash height),
8335
8319
id-header-hash: (get-block-info? id-header-hash height),
@@ -8354,6 +8338,17 @@ fn check_block_info_rewards() {
8354
8338
sender_nonce += 1 ;
8355
8339
submit_tx ( & http_origin, & contract_tx0) ;
8356
8340
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
+
8357
8352
boot_to_epoch_3 (
8358
8353
& naka_conf,
8359
8354
& blocks_processed,
@@ -8368,14 +8363,7 @@ fn check_block_info_rewards() {
8368
8363
info ! ( "Nakamoto miner started..." ) ;
8369
8364
blind_signer ( & naka_conf, & signers, proposals_submitted) ;
8370
8365
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 ) ;
8379
8367
info ! ( "Info from pre-epoch 3.0: {:?}" , tuple0) ;
8380
8368
8381
8369
wait_for_first_naka_block_commit ( 60 , & commits_submitted) ;
@@ -8489,8 +8477,22 @@ fn check_block_info_rewards() {
8489
8477
8490
8478
let info = get_chain_info_result ( & naka_conf) . unwrap ( ) ;
8491
8479
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
+
8492
8488
let last_stacks_block_height = info. stacks_tip_height as u128 ;
8493
8489
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 ( ) ;
8494
8496
8495
8497
// Mine more than 2 burn blocks to get the last block's reward matured
8496
8498
// (only 2 blocks maturation time in tests)
@@ -8511,36 +8513,32 @@ fn check_block_info_rewards() {
8511
8513
let last_stacks_block_height = info. stacks_tip_height as u128 ;
8512
8514
let blocks = test_observer:: get_blocks ( ) ;
8513
8515
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
+
8514
8523
// Check the block reward is now matured in one of the tenure-change blocks
8515
8524
let mature_height = last_stacks_block_height - 4 ;
8516
8525
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,
8523
8531
) ;
8524
- let tuple0 = result0. expect_tuple ( ) . unwrap ( ) . data_map ;
8525
8532
assert_eq ! (
8526
- tuple0
8527
- . get( "block-reward" )
8528
- . unwrap( )
8533
+ tuple0[ "block-reward" ]
8529
8534
. clone( )
8530
8535
. expect_optional( )
8531
8536
. unwrap( )
8532
8537
. unwrap( ) ,
8533
- Value :: UInt ( expected_reward as u128 )
8538
+ Value :: UInt ( expected_reward)
8534
8539
) ;
8535
8540
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 ) ;
8544
8542
assert_eq ! ( tuple0, tuple1) ;
8545
8543
8546
8544
let result3_tenure = call_read_only (
@@ -8551,41 +8549,23 @@ fn check_block_info_rewards() {
8551
8549
vec ! [ & clarity:: vm:: Value :: UInt ( mature_height) ] ,
8552
8550
) ;
8553
8551
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" ] ) ;
8558
8553
8559
8554
// Check the block reward is now matured in one of the Nakamoto blocks
8560
8555
let expected_reward = get_expected_reward_for_height ( & blocks, last_nakamoto_block) ;
8561
8556
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
+
8570
8559
assert_eq ! (
8571
- tuple0
8572
- . get( "block-reward" )
8573
- . unwrap( )
8560
+ tuple0[ "block-reward" ]
8574
8561
. clone( )
8575
8562
. expect_optional( )
8576
8563
. unwrap( )
8577
8564
. unwrap( ) ,
8578
- Value :: UInt ( expected_reward as u128 )
8565
+ Value :: UInt ( expected_reward)
8579
8566
) ;
8580
8567
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) ;
8589
8569
assert_eq ! ( tuple0, tuple1) ;
8590
8570
8591
8571
let result3_tenure = call_read_only (
@@ -8596,10 +8576,7 @@ fn check_block_info_rewards() {
8596
8576
vec ! [ & clarity:: vm:: Value :: UInt ( last_nakamoto_block) ] ,
8597
8577
) ;
8598
8578
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" ] ) ;
8603
8580
8604
8581
coord_channel
8605
8582
. lock ( )
0 commit comments