From 5841c9a30829ab116f626da53f3f91a7774fe20c Mon Sep 17 00:00:00 2001 From: Haider-Ali-DS Date: Sat, 15 Jun 2024 17:55:03 +0500 Subject: [PATCH] fix shibuya benchmarks fix gmp execution errors add chronicle refund test --- Cargo.lock | 32 ++++++++++++++++---------------- tester/src/lib.rs | 20 ++++++-------------- tester/src/main.rs | 25 ++++++++++++++++++++++--- 3 files changed, 44 insertions(+), 33 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1a7dc46d1..0cd18b0b9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9492,7 +9492,7 @@ dependencies = [ [[package]] name = "rosetta-client" version = "0.6.0" -source = "git+https://github.com/analog-labs/chain-connectors#d05fae649278991d9dc04529b4ef90b8fac11707" +source = "git+https://github.com/analog-labs/chain-connectors#a0e55f5553906acba3990cff4dd5f21359d92aed" dependencies = [ "anyhow", "async-trait", @@ -9521,7 +9521,7 @@ dependencies = [ [[package]] name = "rosetta-config-astar" version = "0.6.0" -source = "git+https://github.com/analog-labs/chain-connectors#d05fae649278991d9dc04529b4ef90b8fac11707" +source = "git+https://github.com/analog-labs/chain-connectors#a0e55f5553906acba3990cff4dd5f21359d92aed" dependencies = [ "anyhow", "rosetta-core", @@ -9531,7 +9531,7 @@ dependencies = [ [[package]] name = "rosetta-config-ethereum" version = "0.6.0" -source = "git+https://github.com/analog-labs/chain-connectors#d05fae649278991d9dc04529b4ef90b8fac11707" +source = "git+https://github.com/analog-labs/chain-connectors#a0e55f5553906acba3990cff4dd5f21359d92aed" dependencies = [ "anyhow", "const-hex", @@ -9551,7 +9551,7 @@ dependencies = [ [[package]] name = "rosetta-config-polkadot" version = "0.6.0" -source = "git+https://github.com/analog-labs/chain-connectors#d05fae649278991d9dc04529b4ef90b8fac11707" +source = "git+https://github.com/analog-labs/chain-connectors#a0e55f5553906acba3990cff4dd5f21359d92aed" dependencies = [ "anyhow", "rosetta-core", @@ -9562,7 +9562,7 @@ dependencies = [ [[package]] name = "rosetta-core" version = "0.6.0" -source = "git+https://github.com/analog-labs/chain-connectors#d05fae649278991d9dc04529b4ef90b8fac11707" +source = "git+https://github.com/analog-labs/chain-connectors#a0e55f5553906acba3990cff4dd5f21359d92aed" dependencies = [ "anyhow", "async-trait", @@ -9578,7 +9578,7 @@ dependencies = [ [[package]] name = "rosetta-crypto" version = "0.6.0" -source = "git+https://github.com/analog-labs/chain-connectors#d05fae649278991d9dc04529b4ef90b8fac11707" +source = "git+https://github.com/analog-labs/chain-connectors#a0e55f5553906acba3990cff4dd5f21359d92aed" dependencies = [ "anyhow", "bech32", @@ -9604,7 +9604,7 @@ dependencies = [ [[package]] name = "rosetta-ethereum-backend" version = "0.1.0" -source = "git+https://github.com/analog-labs/chain-connectors#d05fae649278991d9dc04529b4ef90b8fac11707" +source = "git+https://github.com/analog-labs/chain-connectors#a0e55f5553906acba3990cff4dd5f21359d92aed" dependencies = [ "async-trait", "auto_impl", @@ -9620,7 +9620,7 @@ dependencies = [ [[package]] name = "rosetta-ethereum-types" version = "0.2.0" -source = "git+https://github.com/analog-labs/chain-connectors#d05fae649278991d9dc04529b4ef90b8fac11707" +source = "git+https://github.com/analog-labs/chain-connectors#a0e55f5553906acba3990cff4dd5f21359d92aed" dependencies = [ "bytes", "const-hex", @@ -9654,7 +9654,7 @@ dependencies = [ [[package]] name = "rosetta-server" version = "0.6.0" -source = "git+https://github.com/analog-labs/chain-connectors#d05fae649278991d9dc04529b4ef90b8fac11707" +source = "git+https://github.com/analog-labs/chain-connectors#a0e55f5553906acba3990cff4dd5f21359d92aed" dependencies = [ "anyhow", "async-trait", @@ -9680,7 +9680,7 @@ dependencies = [ [[package]] name = "rosetta-server-astar" version = "0.6.0" -source = "git+https://github.com/analog-labs/chain-connectors#d05fae649278991d9dc04529b4ef90b8fac11707" +source = "git+https://github.com/analog-labs/chain-connectors#a0e55f5553906acba3990cff4dd5f21359d92aed" dependencies = [ "anyhow", "async-trait", @@ -9704,7 +9704,7 @@ dependencies = [ [[package]] name = "rosetta-server-ethereum" version = "0.6.0" -source = "git+https://github.com/analog-labs/chain-connectors#d05fae649278991d9dc04529b4ef90b8fac11707" +source = "git+https://github.com/analog-labs/chain-connectors#a0e55f5553906acba3990cff4dd5f21359d92aed" dependencies = [ "anyhow", "async-trait", @@ -9731,7 +9731,7 @@ dependencies = [ [[package]] name = "rosetta-server-polkadot" version = "0.6.0" -source = "git+https://github.com/analog-labs/chain-connectors#d05fae649278991d9dc04529b4ef90b8fac11707" +source = "git+https://github.com/analog-labs/chain-connectors#a0e55f5553906acba3990cff4dd5f21359d92aed" dependencies = [ "anyhow", "async-trait", @@ -9752,7 +9752,7 @@ dependencies = [ [[package]] name = "rosetta-tx-ethereum" version = "0.6.0" -source = "git+https://github.com/analog-labs/chain-connectors#d05fae649278991d9dc04529b4ef90b8fac11707" +source = "git+https://github.com/analog-labs/chain-connectors#a0e55f5553906acba3990cff4dd5f21359d92aed" dependencies = [ "anyhow", "rosetta-config-ethereum", @@ -9763,7 +9763,7 @@ dependencies = [ [[package]] name = "rosetta-tx-polkadot" version = "0.6.0" -source = "git+https://github.com/analog-labs/chain-connectors#d05fae649278991d9dc04529b4ef90b8fac11707" +source = "git+https://github.com/analog-labs/chain-connectors#a0e55f5553906acba3990cff4dd5f21359d92aed" dependencies = [ "anyhow", "blake2-rfc", @@ -9777,7 +9777,7 @@ dependencies = [ [[package]] name = "rosetta-types" version = "0.6.0" -source = "git+https://github.com/analog-labs/chain-connectors#d05fae649278991d9dc04529b4ef90b8fac11707" +source = "git+https://github.com/analog-labs/chain-connectors#a0e55f5553906acba3990cff4dd5f21359d92aed" dependencies = [ "serde", "serde_json", @@ -9786,7 +9786,7 @@ dependencies = [ [[package]] name = "rosetta-utils" version = "0.1.0" -source = "git+https://github.com/analog-labs/chain-connectors#d05fae649278991d9dc04529b4ef90b8fac11707" +source = "git+https://github.com/analog-labs/chain-connectors#a0e55f5553906acba3990cff4dd5f21359d92aed" dependencies = [ "bytes", "futures-timer", diff --git a/tester/src/lib.rs b/tester/src/lib.rs index 0d72b20ab..d2e735036 100644 --- a/tester/src/lib.rs +++ b/tester/src/lib.rs @@ -36,6 +36,7 @@ type TssKeyR = ::RustType; // A fixed gas cost of executing the gateway contract pub const GATEWAY_EXECUTE_GAS_COST: u128 = 100_000; +pub const GATEWAY_BASE_GAS_COST: u128 = 100_000; pub async fn sleep_or_abort(duration: Duration) -> Result<()> { tokio::select! { @@ -112,17 +113,6 @@ impl Tester { }) } - pub async fn wallet_faucet( - runtime: SubxtClient, - network: &ChainNetwork, - keyfile: &Path, - ) -> Result<()> { - let tester = - Tester::new(runtime, network, keyfile, &PathBuf::new(), &PathBuf::new()).await?; - tester.faucet().await; - Ok(()) - } - pub fn wallet(&self) -> &Wallet { &self.wallet } @@ -1413,12 +1403,14 @@ pub async fn deposit_gmp_funds( // Calculate the deposit amount based on the gas_cost x gas_price + 20% //how much the user provides the gmp - let gmp_gas_limit = gmp_gas_limit.saturating_add(GATEWAY_EXECUTE_GAS_COST); + let gmp_gas_limit = gmp_gas_limit + .saturating_add(GATEWAY_EXECUTE_GAS_COST) + .saturating_add(GATEWAY_BASE_GAS_COST); let deposit_amount = gas_price .saturating_mul(gmp_gas_limit) - .saturating_mul(12) + .saturating_mul(15) .saturating_mul(total_calls) - / 10; // 20% more, in case of the gas price increase + / 10; // 50% more, in case of the gas price increase let remaining_submitable_gas = deposit_amount.saturating_sub(funds_in_contract); println!("funds required for call: {:?}", deposit_amount); diff --git a/tester/src/main.rs b/tester/src/main.rs index bd2335c2f..f4d7ea1ef 100644 --- a/tester/src/main.rs +++ b/tester/src/main.rs @@ -94,6 +94,7 @@ enum Test { Basic, Batch { tasks: u64 }, Gmp, + ChroniclePayment, Migration, Restart, } @@ -110,6 +111,7 @@ async fn main() -> Result<()> { let args = Args::parse(); let runtime = tester::subxt_client(&args.timechain_keyfile, &args.timechain_url).await?; let mut tester = Vec::with_capacity(args.network.len()); + let mut chronicles = vec![]; for network in &args.network { tester.push( Tester::new( @@ -124,7 +126,16 @@ async fn main() -> Result<()> { // fund chronicle faucets for testing for item in CHRONICLE_KEYFILES { - Tester::wallet_faucet(runtime.clone(), network, Path::new(item)).await?; + let chronicle_tester = Tester::new( + runtime.clone(), + network, + &PathBuf::from(item), + &PathBuf::new(), + &PathBuf::new(), + ) + .await?; + chronicle_tester.faucet().await; + chronicles.push(chronicle_tester); } } let contract = args.contract; @@ -174,6 +185,15 @@ async fn main() -> Result<()> { Command::Test(Test::Batch { tasks }) => { batch_test(&tester[0], &contract, tasks).await?; }, + // chronicles are refunded the gas for gmp call + Command::Test(Test::ChroniclePayment) => { + println!("This test is only available local with single node shard"); + let starting_balance = chronicles[0].wallet().balance().await?; + gmp_test(&tester[0], &tester[1], &contract).await?; + let ending_balance = chronicles[0].wallet().balance().await?; + println!("Verifying balance"); + assert!(starting_balance <= ending_balance); + }, Command::Test(Test::Gmp) => { gmp_test(&tester[0], &tester[1], &contract).await?; }, @@ -226,7 +246,7 @@ async fn gmp_benchmark( // get contract stats of src contract let start_stats = stats(src_tester, src_contract, None).await?; // get contract stats of destination contract - let dest_stats = stats(src_tester, src_contract, None).await?; + let dest_stats = stats(dest_tester, dest_contract, None).await?; println!("stats in start: {:?}", start_stats); //get nonce of the caller to manage explicitly @@ -437,7 +457,6 @@ async fn batch_test(tester: &Tester, contract: &Path, total_tasks: u64) -> Resul } async fn gmp_test(src: &Tester, dest: &Tester, contract: &Path) -> Result<()> { - src.set_shard_config(1, 1).await?; let (src_contract, dest_contract, _) = setup_gmp_with_contracts(src, dest, contract, 1).await?; println!("submitting vote");