@@ -135,7 +135,7 @@ use crate::tests::neon_integrations::{
135135 get_sortition_info, next_block_and_wait, run_until_burnchain_height, submit_tx,
136136 submit_tx_fallible, test_observer, wait_for_runloop, wait_for_tenure_change_tx,
137137};
138- use crate::tests::signer::v0::agg_pubkey_sbtc_stub_source ;
138+ use crate::tests::signer::v0::{sbtc_registry_stub_source, sbtc_token_stub_source} ;
139139use crate::tests::signer::SignerTest;
140140use crate::tests::{gen_random_port, get_chain_info, make_contract_publish, to_addr};
141141use crate::{tests, BitcoinRegtestController, BurnchainController, Config, ConfigFile, Keychain};
@@ -19524,19 +19524,24 @@ fn check_pox_5_stake_lifecycle() {
1952419524 100000,
1952519525 );
1952619526
19527- // sBTC stub — pox-5 boot needs the stub deployed before the epoch 4.0
19528- // transition for static analysis to find the referenced contract .
19527+ // sBTC stubs - pox-5 boot needs both stubs deployed before the epoch 4.0
19528+ // transition for static analysis to find the referenced contracts .
1952919529 let sbtc_deployer_sk = Secp256k1PrivateKey::random();
1953019530 let sbtc_deployer_addr = tests::to_addr(&sbtc_deployer_sk);
1953119531 naka_conf.add_initial_balance(
1953219532 PrincipalData::from(sbtc_deployer_addr.clone()).to_string(),
19533- deploy_fee,
19533+ 2 * deploy_fee,
1953419534 );
1953519535 let sbtc_token_id = QualifiedContractIdentifier::new(
1953619536 sbtc_deployer_addr.clone().into(),
1953719537 clarity::vm::ContractName::try_from("sbtc-token").unwrap(),
1953819538 );
19539+ let sbtc_registry_id = QualifiedContractIdentifier::new(
19540+ sbtc_deployer_addr.clone().into(),
19541+ clarity::vm::ContractName::try_from("sbtc-registry").unwrap(),
19542+ );
1953919543 naka_conf.node.pox_5_sbtc_contract = Some(sbtc_token_id.clone());
19544+ naka_conf.node.pox_5_sbtc_registry_contract = Some(sbtc_registry_id.clone());
1954019545
1954119546 let stacker_sk = setup_stacker(&mut naka_conf);
1954219547 let staker_sk = setup_stacker(&mut naka_conf);
@@ -19582,22 +19587,32 @@ fn check_pox_5_stake_lifecycle() {
1958219587 .to_bytes_compressed()
1958319588 .try_into()
1958419589 .expect("compressed secp256k1 pubkey should be 33 bytes");
19585- let sbtc_token_contract = agg_pubkey_sbtc_stub_source(&pubkey_bytes );
19590+ let sbtc_token_contract = sbtc_token_stub_source( );
1958619591 let sbtc_deploy_tx = make_contract_publish(
1958719592 &sbtc_deployer_sk,
1958819593 0,
1958919594 deploy_fee,
1959019595 naka_conf.burnchain.chain_id,
1959119596 "sbtc-token",
19592- & sbtc_token_contract,
19597+ sbtc_token_contract,
1959319598 );
1959419599 submit_tx(&http_origin, &sbtc_deploy_tx);
19600+ let sbtc_registry_contract = sbtc_registry_stub_source(&pubkey_bytes);
19601+ let sbtc_registry_deploy_tx = make_contract_publish(
19602+ &sbtc_deployer_sk,
19603+ 1,
19604+ deploy_fee,
19605+ naka_conf.burnchain.chain_id,
19606+ "sbtc-registry",
19607+ &sbtc_registry_contract,
19608+ );
19609+ submit_tx(&http_origin, &sbtc_registry_deploy_tx);
1959519610 next_block_and_process_new_stacks_block(&mut btc_regtest_controller, 60, &coord_channel)
1959619611 .unwrap();
1959719612 wait_for(60, || {
19598- Ok(get_account(&http_origin, &to_addr(&sbtc_deployer_sk)).nonce > 0 )
19613+ Ok(get_account(&http_origin, &to_addr(&sbtc_deployer_sk)).nonce > 1 )
1959919614 })
19600- .expect("Timed out waiting for sbtc-token deploy ");
19615+ .expect("Timed out waiting for sbtc-token and sbtc-registry deploys ");
1960119616
1960219617 // mine until epoch 4.0
1960319618 loop {
@@ -19926,19 +19941,24 @@ fn check_pox_5_register_for_bond_lifecycle() {
1992619941 100000,
1992719942 );
1992819943
19929- // sBTC stub — pox-5 boot needs the stub deployed before the epoch 4.0
19930- // transition for static analysis to find the referenced contract .
19944+ // sBTC stubs - pox-5 boot needs both stubs deployed before the epoch 4.0
19945+ // transition for static analysis to find the referenced contracts .
1993119946 let sbtc_deployer_sk = Secp256k1PrivateKey::random();
1993219947 let sbtc_deployer_addr = tests::to_addr(&sbtc_deployer_sk);
1993319948 naka_conf.add_initial_balance(
1993419949 PrincipalData::from(sbtc_deployer_addr.clone()).to_string(),
19935- deploy_fee,
19950+ 2 * deploy_fee,
1993619951 );
1993719952 let sbtc_token_id = QualifiedContractIdentifier::new(
1993819953 sbtc_deployer_addr.clone().into(),
1993919954 clarity::vm::ContractName::try_from("sbtc-token").unwrap(),
1994019955 );
19956+ let sbtc_registry_id = QualifiedContractIdentifier::new(
19957+ sbtc_deployer_addr.clone().into(),
19958+ clarity::vm::ContractName::try_from("sbtc-registry").unwrap(),
19959+ );
1994119960 naka_conf.node.pox_5_sbtc_contract = Some(sbtc_token_id.clone());
19961+ naka_conf.node.pox_5_sbtc_registry_contract = Some(sbtc_registry_id.clone());
1994219962
1994319963 // The pox-5 boot contract initializes its `bond-admin` data var to
1994419964 // `tx-sender`, which at boot deploy time is the unsignable boot
@@ -20000,22 +20020,32 @@ fn check_pox_5_register_for_bond_lifecycle() {
2000020020 .to_bytes_compressed()
2000120021 .try_into()
2000220022 .expect("compressed secp256k1 pubkey should be 33 bytes");
20003- let sbtc_token_contract = agg_pubkey_sbtc_stub_source(&pubkey_bytes );
20023+ let sbtc_token_contract = sbtc_token_stub_source( );
2000420024 let sbtc_deploy_tx = make_contract_publish(
2000520025 &sbtc_deployer_sk,
2000620026 0,
2000720027 deploy_fee,
2000820028 naka_conf.burnchain.chain_id,
2000920029 "sbtc-token",
20010- & sbtc_token_contract,
20030+ sbtc_token_contract,
2001120031 );
2001220032 submit_tx(&http_origin, &sbtc_deploy_tx);
20033+ let sbtc_registry_contract = sbtc_registry_stub_source(&pubkey_bytes);
20034+ let sbtc_registry_deploy_tx = make_contract_publish(
20035+ &sbtc_deployer_sk,
20036+ 1,
20037+ deploy_fee,
20038+ naka_conf.burnchain.chain_id,
20039+ "sbtc-registry",
20040+ &sbtc_registry_contract,
20041+ );
20042+ submit_tx(&http_origin, &sbtc_registry_deploy_tx);
2001320043 next_block_and_process_new_stacks_block(&mut btc_regtest_controller, 60, &coord_channel)
2001420044 .unwrap();
2001520045 wait_for(60, || {
20016- Ok(get_account(&http_origin, &to_addr(&sbtc_deployer_sk)).nonce > 0 )
20046+ Ok(get_account(&http_origin, &to_addr(&sbtc_deployer_sk)).nonce > 1 )
2001720047 })
20018- .expect("Timed out waiting for sbtc-token deploy ");
20048+ .expect("Timed out waiting for sbtc-token and sbtc-registry deploys ");
2001920049
2002020050 // mine until epoch 4.0
2002120051 loop {
@@ -20398,18 +20428,24 @@ fn check_with_stacking_allowances_stake() {
2039820428 100000,
2039920429 );
2040020430
20401- // Set the sBTC token contract, which we will deploy before epoch 4.0
20431+ // Set the sBTC token and registry contracts, which we will deploy before
20432+ // epoch 4.0
2040220433 let sbtc_deployer_sk = Secp256k1PrivateKey::random();
2040320434 let sbtc_deployer_addr = tests::to_addr(&sbtc_deployer_sk);
2040420435 naka_conf.add_initial_balance(
2040520436 PrincipalData::from(sbtc_deployer_addr.clone()).to_string(),
20406- deploy_fee,
20437+ 2 * deploy_fee,
2040720438 );
2040820439 let sbtc_token_id = QualifiedContractIdentifier::new(
2040920440 sbtc_deployer_addr.clone().into(),
2041020441 clarity::vm::ContractName::try_from("sbtc-token").unwrap(),
2041120442 );
20443+ let sbtc_registry_id = QualifiedContractIdentifier::new(
20444+ sbtc_deployer_addr.clone().into(),
20445+ clarity::vm::ContractName::try_from("sbtc-registry").unwrap(),
20446+ );
2041220447 naka_conf.node.pox_5_sbtc_contract = Some(sbtc_token_id.clone());
20448+ naka_conf.node.pox_5_sbtc_registry_contract = Some(sbtc_registry_id.clone());
2041320449
2041420450 // Default stacker used for bootstrapping
2041520451 let stacker_sk = setup_stacker(&mut naka_conf);
@@ -20464,26 +20500,37 @@ fn check_with_stacking_allowances_stake() {
2046420500 .to_bytes_compressed()
2046520501 .try_into()
2046620502 .expect("compressed secp256k1 pubkey should be 33 bytes");
20467- let sbtc_token_contract = agg_pubkey_sbtc_stub_source(&pubkey_bytes );
20503+ let sbtc_token_contract = sbtc_token_stub_source( );
2046820504 let sbtc_deploy_tx = make_contract_publish(
2046920505 &sbtc_deployer_sk,
2047020506 0,
2047120507 deploy_fee,
2047220508 naka_conf.burnchain.chain_id,
2047320509 "sbtc-token",
20474- & sbtc_token_contract,
20510+ sbtc_token_contract,
2047520511 );
2047620512 let sbtc_deploy_txid = submit_tx(&http_origin, &sbtc_deploy_tx);
2047720513 info!("Submitted sbtc-token deploy txid: {sbtc_deploy_txid}");
20514+ let sbtc_registry_contract = sbtc_registry_stub_source(&pubkey_bytes);
20515+ let sbtc_registry_deploy_tx = make_contract_publish(
20516+ &sbtc_deployer_sk,
20517+ 1,
20518+ deploy_fee,
20519+ naka_conf.burnchain.chain_id,
20520+ "sbtc-registry",
20521+ &sbtc_registry_contract,
20522+ );
20523+ let sbtc_registry_deploy_txid = submit_tx(&http_origin, &sbtc_registry_deploy_tx);
20524+ info!("Submitted sbtc-registry deploy txid: {sbtc_registry_deploy_txid}");
2047820525
20479- // Wait for the sbtc-token deploy to be processed.
20526+ // Wait for the sbtc-token and sbtc-registry deploys to be processed.
2048020527 next_block_and_process_new_stacks_block(&mut btc_regtest_controller, 60, &coord_channel)
2048120528 .unwrap();
2048220529 wait_for(60, || {
2048320530 let sbtc_deployer_nonce = get_account(&http_origin, &to_addr(&sbtc_deployer_sk)).nonce;
20484- Ok(sbtc_deployer_nonce > 0 )
20531+ Ok(sbtc_deployer_nonce > 1 )
2048520532 })
20486- .expect("Timed out waiting for sbtc-token contract deploy ");
20533+ .expect("Timed out waiting for sbtc-token and sbtc-registry contract deploys ");
2048720534
2048820535 // mine until epoch 4.0 height
2048920536 loop {
@@ -20996,18 +21043,24 @@ fn check_with_stacking_allowances_register_for_bond() {
2099621043 100000,
2099721044 );
2099821045
20999- // Set the sBTC token contract, which we will deploy before epoch 4.0
21046+ // Set the sBTC token and registry contracts, which we will deploy before
21047+ // epoch 4.0
2100021048 let sbtc_deployer_sk = Secp256k1PrivateKey::random();
2100121049 let sbtc_deployer_addr = tests::to_addr(&sbtc_deployer_sk);
2100221050 naka_conf.add_initial_balance(
2100321051 PrincipalData::from(sbtc_deployer_addr.clone()).to_string(),
21004- deploy_fee,
21052+ 2 * deploy_fee,
2100521053 );
2100621054 let sbtc_token_id = QualifiedContractIdentifier::new(
2100721055 sbtc_deployer_addr.clone().into(),
2100821056 clarity::vm::ContractName::try_from("sbtc-token").unwrap(),
2100921057 );
21058+ let sbtc_registry_id = QualifiedContractIdentifier::new(
21059+ sbtc_deployer_addr.clone().into(),
21060+ clarity::vm::ContractName::try_from("sbtc-registry").unwrap(),
21061+ );
2101021062 naka_conf.node.pox_5_sbtc_contract = Some(sbtc_token_id.clone());
21063+ naka_conf.node.pox_5_sbtc_registry_contract = Some(sbtc_registry_id.clone());
2101121064
2101221065 // The pox-5 boot contract initializes its `bond-admin` data var to
2101321066 // `tx-sender`, which at boot deploy time is the unsignable boot
@@ -21076,25 +21129,36 @@ fn check_with_stacking_allowances_register_for_bond() {
2107621129 .to_bytes_compressed()
2107721130 .try_into()
2107821131 .expect("compressed secp256k1 pubkey should be 33 bytes");
21079- let sbtc_token_contract = agg_pubkey_sbtc_stub_source(&pubkey_bytes );
21132+ let sbtc_token_contract = sbtc_token_stub_source( );
2108021133 let sbtc_deploy_tx = make_contract_publish(
2108121134 &sbtc_deployer_sk,
2108221135 0,
2108321136 deploy_fee,
2108421137 naka_conf.burnchain.chain_id,
2108521138 "sbtc-token",
21086- & sbtc_token_contract,
21139+ sbtc_token_contract,
2108721140 );
2108821141 let sbtc_deploy_txid = submit_tx(&http_origin, &sbtc_deploy_tx);
2108921142 info!("Submitted sbtc-token deploy txid: {sbtc_deploy_txid}");
21143+ let sbtc_registry_contract = sbtc_registry_stub_source(&pubkey_bytes);
21144+ let sbtc_registry_deploy_tx = make_contract_publish(
21145+ &sbtc_deployer_sk,
21146+ 1,
21147+ deploy_fee,
21148+ naka_conf.burnchain.chain_id,
21149+ "sbtc-registry",
21150+ &sbtc_registry_contract,
21151+ );
21152+ let sbtc_registry_deploy_txid = submit_tx(&http_origin, &sbtc_registry_deploy_tx);
21153+ info!("Submitted sbtc-registry deploy txid: {sbtc_registry_deploy_txid}");
2109021154
2109121155 next_block_and_process_new_stacks_block(&mut btc_regtest_controller, 60, &coord_channel)
2109221156 .unwrap();
2109321157 wait_for(60, || {
2109421158 let sbtc_deployer_nonce = get_account(&http_origin, &to_addr(&sbtc_deployer_sk)).nonce;
21095- Ok(sbtc_deployer_nonce > 0 )
21159+ Ok(sbtc_deployer_nonce > 1 )
2109621160 })
21097- .expect("Timed out waiting for sbtc-token contract deploy ");
21161+ .expect("Timed out waiting for sbtc-token and sbtc-registry contract deploys ");
2109821162
2109921163 // mine until epoch 4.0 height
2110021164 loop {
0 commit comments