From 128f6967c28d5865996e44874340e5d7f068c23d Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Thu, 10 Oct 2024 05:49:37 -0400 Subject: [PATCH 01/35] fix: cleaner, better organized setup against suzuka node --- .../bridge/config/src/common/movement.rs | 25 +- protocol-units/bridge/config/src/lib.rs | 10 + .../bridge/integration-tests/README.md | 128 +++ .../bridge/integration-tests/src/lib.rs | 17 +- .../tests/bridge_e2e_test.rs | 4 +- .../tests/client_l1move_l2move.rs | 458 ++++++++++ .../tests/client_l2move_l1move.rs | 244 ++++++ .../scripts/enable_bridge_feature.move | 19 + .../scripts/update_bridge_operator.move | 9 + .../service/src/chains/movement/client.rs | 2 +- .../src/chains/movement/client_framework.rs | 805 ++++++++++++++++++ protocol-units/bridge/setup/src/deploy.rs | 2 +- protocol-units/bridge/setup/src/local.rs | 2 +- protocol-units/bridge/setup/src/main.rs | 2 +- 14 files changed, 1711 insertions(+), 16 deletions(-) create mode 100644 protocol-units/bridge/integration-tests/README.md create mode 100644 protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs create mode 100644 protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs create mode 100644 protocol-units/bridge/move-modules/scripts/enable_bridge_feature.move create mode 100644 protocol-units/bridge/move-modules/scripts/update_bridge_operator.move create mode 100644 protocol-units/bridge/service/src/chains/movement/client_framework.rs diff --git a/protocol-units/bridge/config/src/common/movement.rs b/protocol-units/bridge/config/src/common/movement.rs index a3053b4e1..bee5b2b77 100644 --- a/protocol-units/bridge/config/src/common/movement.rs +++ b/protocol-units/bridge/config/src/common/movement.rs @@ -10,8 +10,8 @@ const DEFAULT_MVT_FAUCET_CONNECTION_PORT: u16 = 8081; #[derive(Clone, Debug, Serialize, Deserialize)] pub struct MovementConfig { - #[serde(default = "default_movement_signer_address")] - pub movement_signer_address: Ed25519PrivateKey, + #[serde(default = "default_movement_signer_key")] + pub movement_signer_key: Ed25519PrivateKey, #[serde(default = "default_movement_native_address")] pub movement_native_address: String, @@ -34,8 +34,8 @@ pub struct MovementConfig { } // The default private key -pub fn default_movement_signer_address() -> Ed25519PrivateKey { - match std::env::var("MOVEMENT_SIGNER_ADDRESS") { +pub fn default_movement_signer_key() -> Ed25519PrivateKey { + match std::env::var("MOVEMENT_SIGNER_KEY") { Ok(val) => Ed25519PrivateKey::from_encoded_string(&val).unwrap(), Err(_) => Ed25519PrivateKey::generate(&mut rand::thread_rng()), } @@ -110,12 +110,26 @@ impl MovementConfig { self.mvt_faucet_connection_port ) } + + pub fn suzuka() -> Self { + MovementConfig { + movement_signer_key: Ed25519PrivateKey::from_encoded_string("0x0000000000000000000000000000000000000000000000000000000000000001").unwrap(), + movement_native_address: "0xA550c18".to_string(), + mvt_rpc_connection_protocol: default_mvt_rpc_connection_protocol(), + mvt_rpc_connection_hostname: default_mvt_rpc_connection_hostname(), + mvt_rpc_connection_port: 30731, + mvt_faucet_connection_protocol: default_mvt_rpc_connection_protocol(), + mvt_faucet_connection_hostname: default_mvt_rpc_connection_hostname(), + mvt_faucet_connection_port: 30732, + mvt_init_network: default_mvt_init_network(), + } + } } impl Default for MovementConfig { fn default() -> Self { MovementConfig { - movement_signer_address: default_movement_signer_address(), + movement_signer_key: default_movement_signer_key(), movement_native_address: default_movement_native_address(), mvt_rpc_connection_protocol: default_mvt_rpc_connection_protocol(), mvt_rpc_connection_hostname: default_mvt_rpc_connection_hostname(), @@ -125,5 +139,6 @@ impl Default for MovementConfig { mvt_faucet_connection_port: default_mvt_faucet_connection_port(), mvt_init_network: default_mvt_init_network(), } + } } diff --git a/protocol-units/bridge/config/src/lib.rs b/protocol-units/bridge/config/src/lib.rs index 49161a8b9..df87e964b 100644 --- a/protocol-units/bridge/config/src/lib.rs +++ b/protocol-units/bridge/config/src/lib.rs @@ -34,3 +34,13 @@ pub fn get_config_path(dot_movement: &dot_movement::DotMovement) -> std::path::P pathbuff.push(BRIDGE_CONF_FOLDER); pathbuff } + +impl Config { + pub fn suzuka() -> Self { + Config { + eth: common::eth::EthConfig::default(), + movement: common::movement::MovementConfig::suzuka(), + testing: common::testing::TestingConfig::default(), + } + } +} \ No newline at end of file diff --git a/protocol-units/bridge/integration-tests/README.md b/protocol-units/bridge/integration-tests/README.md new file mode 100644 index 000000000..8452ee3f0 --- /dev/null +++ b/protocol-units/bridge/integration-tests/README.md @@ -0,0 +1,128 @@ +# Running client integration tests against the atomic bridge + +The client integration tests for the framework bridge modules are in `tests`: + +- `client_l1move_l2move.rs` (run with command `rust_backtrace=1 cargo test --test client_l1move_l2move test_movement_client_initiate_transfer -- --nocapture --test-threads=1`) +- `client_l2move_l1move.rs` (run with command `rust_backtrace=1 cargo test --test client_l2move_l1move test_movement_client_initiate_transfer -- --nocapture --test-threads=1`) + +In order to successfully run the tests against a local Suzuka node, the core resource account `0xA550C18` needs to be set to the same private key generated in `config.json`. + +## Steps to configure core resource account for signing in tests: + +1. From the root of the `movement` repository, run the local Suzuka node: + +``` +CELESTIA_LOG_LEVEL=FATAL CARGO_PROFILE=release CARGO_PROFILE_FLAGS=--release nix develop --extra-experimental-features nix-command --extra-experimental-features flakes --command bash -c "just bridge native build.setup.eth-local.celestia-local --keep-tui" +``` + +(You'll need Nix and Movement CLI if you don't already have them installed.) + +This will generate a `.movement` dir in the project root containing a `config.json` with a `maptos_private_key` of `0x1`: +``` + "maptos_private_key": "0x0000000000000000000000000000000000000000000000000000000000000001", +``` + +There will also be a `config.yaml` that looks something like: + +``` +--- +profiles: + default: + network: Custom + private_key: "0x5754431205b8abc443a7a877a70d6e5e67eba8e5e40b0436bff5a9b6ab4a7887" + public_key: "0x2b8c073bf4c091649d8fb5c275cacc6c8cf8cb6baaf0d7dffc47216011b6a27d" + account: e813b12fc00bed33b54b5652c3bb1cbf12a33080aba9cd12d919b6d65cec6115 + rest_url: "http://localhost:30731/v1" + faucet_url: "http://localhost:30732/" +``` + +2. Init a profile with the `0x1` private key. Here we init a profile named `local_root`: + +``` +movement init --profile local_root --rest-url http://localhost:30731/v1 --private-key 0x0000000000000000000000000000000000000000000000000000000000000001 --encoding hex --network custom +``` + +3. In `config.yaml` replace the `account` of `local_root` with `000000000000000000000000000000000000000000000000000000000a550c18` and skip the faucet step by pressing Enter when prompted. Your `config.yaml` will look like this: + +``` +--- +profiles: + default: + network: Custom + private_key: "" + public_key: "0x2b8c073bf4c091649d8fb5c275cacc6c8cf8cb6baaf0d7dffc47216011b6a27d" + account: e813b12fc00bed33b54b5652c3bb1cbf12a33080aba9cd12d919b6d65cec6115 + rest_url: "http://localhost:30731/v1" + faucet_url: "http://localhost:30732/" + local_root: + network: Custom + private_key: "0x0000000000000000000000000000000000000000000000000000000000000001" + public_key: "0x4cb5abf6ad79fbf5abbccafcc269d85cd2651ed4b885b5869f241aedf0a5ba29" + account: 000000000000000000000000000000000000000000000000000000000a550c18 + rest_url: "http://localhost:30731/v1" +``` + +4. List the contents of the `0xa550c18` account: + +``` + movement account list --account 0xA550C18 +``` + +You should see a large number of `AptosCoin` held by the account: + +``` +{ + "0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>": { + "coin": { + "value": "18446743973709450015" + }, + "deposit_events": { + "counter": "1", + "guid": { + "id": { + "addr": "0xa550c18", + "creation_num": "2" + } + } + }, + "frozen": false, + "withdraw_events": { + "counter": "1", + "guid": { + "id": { + "addr": "0xa550c18", + "creation_num": "3" + } + } + } + } + } +``` + +This large number of gas coins signifies that this is the core resource account. + +5. Verify that you control the core resources signer by transferring gas tokens to your default account: + +``` +movement account transfer --profile local_root --amount 100 --account e813b12fc00bed33b54b5652c3bb1cbf12a33080aba9cd12d919b6d65cec6115 +``` + +You'll be prompted to submit a transaction. After doing so, if the transaction is successful, you'll get a success message and transaction result. + +## Steps to run client integration tests + +Now that the core resource signer is configured, you can run the client integration tests. + +There are two scripts in `protocol-units/bridge/move-modules`, one for enabling the Atomic Bridge feature flag and one for updating bridge operator. + +1. Compile the scripts: + +``` +movement move compile --package-dir protocol-units/bridge/move-modules +``` + +2. Run the `enable_bridge_feature` script: + +``` + movement move run-script --compiled-script-path protocol-units/bridge/move-modules/build/bridge-modules/bytecode_scripts/enable_bridge_feature.mv --profile local_root + ``` \ No newline at end of file diff --git a/protocol-units/bridge/integration-tests/src/lib.rs b/protocol-units/bridge/integration-tests/src/lib.rs index e60f5a723..5dfe4465f 100644 --- a/protocol-units/bridge/integration-tests/src/lib.rs +++ b/protocol-units/bridge/integration-tests/src/lib.rs @@ -198,10 +198,10 @@ impl TestHarness { ) -> Result<(HarnessEthClient, HarnessMvtClient, Config), anyhow::Error> { let config = TestHarness::read_bridge_config().await?; - let test_mvt_hadness = HarnessMvtClient::build(&config).await; - let test_eth_hadness = HarnessEthClient::build(&config).await; + let test_mvt_harness = HarnessMvtClient::build(&config).await; + let test_eth_harness = HarnessEthClient::build(&config).await; - Ok((test_eth_hadness, test_mvt_hadness, config)) + Ok((test_eth_harness, test_mvt_harness, config)) } pub async fn new_with_movement( @@ -211,9 +211,16 @@ impl TestHarness { .await .expect("Failed to setup Movement config"); - let test_hadness = HarnessMvtClient::build(&config).await; + let test_harness = HarnessMvtClient::build(&config).await; - (test_hadness, config, movement_process) + (test_harness, config, movement_process) + } + + pub async fn new_with_suzuka( + config: Config, + ) -> (HarnessMvtClient, Config) { + let test_harness = HarnessMvtClient::build(&config).await; + (test_harness, config) } pub async fn new_only_eth(config: Config) -> (HarnessEthClient, Config, AnvilInstance) { diff --git a/protocol-units/bridge/integration-tests/tests/bridge_e2e_test.rs b/protocol-units/bridge/integration-tests/tests/bridge_e2e_test.rs index 132bda265..074447ed1 100644 --- a/protocol-units/bridge/integration-tests/tests/bridge_e2e_test.rs +++ b/protocol-units/bridge/integration-tests/tests/bridge_e2e_test.rs @@ -161,7 +161,7 @@ async fn test_movement_event() -> Result<(), anyhow::Error> { let mut movement_client = MovementClient::new(&config.movement).await.unwrap(); let args = MovementToEthCallArgs::default(); - // let signer_privkey = config.movement.movement_signer_address.clone(); + // let signer_privkey = config.movement.movement_signer_key.clone(); // let sender_address = format!("0x{}", Ed25519PublicKey::from(&signer_privkey).to_string()); // let sender_address = movement_client.signer().address(); // test_utils::fund_and_check_balance(&mut mvt_client_harness, 100_000_000_000).await?; @@ -183,7 +183,7 @@ async fn test_movement_event() -> Result<(), anyhow::Error> { config.movement.movement_native_address ); - // let signer_privkey = config.movement.movement_signer_address.clone(); + // let signer_privkey = config.movement.movement_signer_key.clone(); // let signer_public_key = format!("0x{}", Ed25519PublicKey::from(&signer_privkey).to_string()); // println!("signer_public_key {signer_public_key}",); diff --git a/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs b/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs new file mode 100644 index 000000000..3566e4bd6 --- /dev/null +++ b/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs @@ -0,0 +1,458 @@ +use alloy::{ + primitives::{address, keccak256}, + providers::Provider, +}; +use anyhow::Result; +use aptos_sdk::coin_client::CoinClient; +use bridge_config::Config; +use bridge_integration_tests::utils as test_utils; +use bridge_integration_tests::EthToMovementCallArgs; +use bridge_integration_tests::HarnessMvtClient; +use bridge_integration_tests::TestHarness; +use bridge_service::chains::ethereum::types::EthAddress; +use bridge_service::chains::{ + bridge_contracts::BridgeContract, ethereum::types::EthHash, movement::utils::MovementHash, +}; +use bridge_service::types::{ + Amount, AssetType, BridgeAddress, BridgeTransferId, HashLock, HashLockPreImage, +}; +use tokio::time::{sleep, Duration}; +use tokio::{self}; +use tracing::info; + +#[tokio::test] +async fn test_movement_client_build_and_fund_accounts() -> Result<(), anyhow::Error> { + let config = Config::default(); + let (mvt_client_harness, _config, mut mvt_process) = + TestHarness::new_with_movement(config).await; + + // + let rest_client = mvt_client_harness.rest_client; + let coin_client = CoinClient::new(&rest_client); + let movement_client_signer = mvt_client_harness.movement_client.signer(); + + let faucet_client = mvt_client_harness.faucet_client.write().unwrap(); + + faucet_client.fund(movement_client_signer.address(), 100_000_000).await?; + let balance = coin_client.get_account_balance(&movement_client_signer.address()).await?; + assert!( + balance >= 100_000_000, + "Expected Movement Client to have at least 100_000_000, but found {}", + balance + ); + + if let Err(e) = mvt_process.kill().await { + eprintln!("Failed to kill child process: {:?}", e); + } + + Ok(()) +} + +#[tokio::test] +async fn test_movement_client_should_publish_package() -> Result<(), anyhow::Error> { + let _ = tracing_subscriber::fmt().try_init(); + + let config = Config::default(); + let (_mvt_client_harness, _config, mut mvt_process) = + TestHarness::new_with_movement(config).await; + if let Err(e) = mvt_process.kill().await { + eprintln!("Failed to kill child process: {:?}", e); + } + Ok(()) +} + +#[tokio::test] +async fn test_movement_client_should_successfully_call_lock_and_complete( +) -> Result<(), anyhow::Error> { + let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); + + let config = Config::default(); + let (mut mvt_client_harness, _config, mut mvt_process) = + TestHarness::new_with_movement(config).await; + + let args = EthToMovementCallArgs::default(); + + let test_result = async { + let coin_client = CoinClient::new(&mvt_client_harness.rest_client); + let movement_client_signer = mvt_client_harness.movement_client.signer(); + + { + let faucet_client = mvt_client_harness.faucet_client.write().unwrap(); + faucet_client.fund(movement_client_signer.address(), 100_000_000).await?; + } + + let balance = coin_client.get_account_balance(&movement_client_signer.address()).await?; + assert!( + balance >= 100_000_000, + "Expected Movement Client to have at least 100_000_000, but found {}", + balance + ); + + mvt_client_harness + .movement_client + .lock_bridge_transfer( + BridgeTransferId(args.bridge_transfer_id.0), + HashLock(args.hash_lock.0), + BridgeAddress(args.initiator.clone()), + BridgeAddress(args.recipient.clone().into()), + Amount(AssetType::Moveth(args.amount)), + ) + .await + .expect("Failed to lock bridge transfer"); + + let bridge_transfer_id: [u8; 32] = + test_utils::extract_bridge_transfer_id(&mut mvt_client_harness.movement_client).await?; + info!("Bridge transfer id: {:?}", bridge_transfer_id); + let details = BridgeContract::get_bridge_transfer_details_counterparty( + &mut mvt_client_harness.movement_client, + BridgeTransferId(MovementHash(bridge_transfer_id).0), + ) + .await + .expect("Failed to get bridge transfer details") + .expect("Expected to find bridge transfer details, but got None"); + + assert_eq!(details.bridge_transfer_id.0, args.bridge_transfer_id.0); + assert_eq!(details.hash_lock.0, args.hash_lock.0); + assert_eq!( + &details.initiator_address.0 .0[32 - args.initiator.len()..], + &args.initiator, + "Initiator address does not match" + ); + assert_eq!(details.recipient_address.0, args.recipient.0.to_vec()); + assert_eq!(details.amount.0, AssetType::Moveth(args.amount)); + assert_eq!(details.state, 1, "Bridge transfer is supposed to be locked but it's not."); + + let secret = b"secret"; + let mut padded_secret = [0u8; 32]; + padded_secret[..secret.len()].copy_from_slice(secret); + + BridgeContract::counterparty_complete_bridge_transfer( + &mut mvt_client_harness.movement_client, + BridgeTransferId(args.bridge_transfer_id.0), + HashLockPreImage(padded_secret), + ) + .await + .expect("Failed to complete bridge transfer"); + + let details = BridgeContract::get_bridge_transfer_details_counterparty( + &mut mvt_client_harness.movement_client, + BridgeTransferId(args.bridge_transfer_id.0), + ) + .await + .expect("Failed to get bridge transfer details") + .expect("Expected to find bridge transfer details, but got None"); + + assert_eq!(details.bridge_transfer_id.0, args.bridge_transfer_id.0); + assert_eq!(details.hash_lock.0, args.hash_lock.0); + assert_eq!( + &details.initiator_address.0 .0[32 - args.initiator.len()..], + &args.initiator, + "Initiator address does not match" + ); + assert_eq!(details.recipient_address.0, args.recipient.0.to_vec()); + assert_eq!(details.amount.0, AssetType::Moveth(args.amount)); + assert_eq!(details.state, 2, "Bridge transfer is supposed to be completed but it's not."); + + Ok(()) + } + .await; + + if let Err(e) = mvt_process.kill().await { + eprintln!("Failed to kill child process: {:?}", e); + } + + test_result +} + +#[tokio::test] +async fn test_movement_client_should_successfully_call_lock_and_abort() -> Result<(), anyhow::Error> +{ + let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); + + let config = Config::default(); + let (mut mvt_client_harness, _config, mut mvt_process) = + TestHarness::new_with_movement(config).await; + + let args = EthToMovementCallArgs::default(); + + let test_result = async { + let coin_client = CoinClient::new(&mvt_client_harness.rest_client); + let movement_client_signer = mvt_client_harness.movement_client.signer(); + + { + let faucet_client = mvt_client_harness.faucet_client.write().unwrap(); + faucet_client.fund(movement_client_signer.address(), 100_000_000).await?; + } + + let balance = coin_client.get_account_balance(&movement_client_signer.address()).await?; + assert!( + balance >= 100_000_000, + "Expected Movement Client to have at least 100_000_000, but found {}", + balance + ); + + // Set the timelock to 1 second for testing + mvt_client_harness + .movement_client + .counterparty_set_timelock(1) + .await + .expect("Failed to set timelock"); + + mvt_client_harness + .movement_client + .lock_bridge_transfer( + BridgeTransferId(args.bridge_transfer_id.0), + HashLock(args.hash_lock.0), + BridgeAddress(args.initiator.clone()), + BridgeAddress(args.recipient.clone()), + Amount(AssetType::Moveth(args.amount)), + ) + .await + .expect("Failed to lock bridge transfer"); + + let bridge_transfer_id: [u8; 32] = + test_utils::extract_bridge_transfer_id(&mut mvt_client_harness.movement_client).await?; + info!("Bridge transfer id: {:?}", bridge_transfer_id); + let details = BridgeContract::get_bridge_transfer_details_counterparty( + &mut mvt_client_harness.movement_client, + BridgeTransferId(MovementHash(bridge_transfer_id).0), + ) + .await + .expect("Failed to get bridge transfer details") + .expect("Expected to find bridge transfer details, but got None"); + + assert_eq!(details.bridge_transfer_id.0, args.bridge_transfer_id.0); + assert_eq!(details.hash_lock.0, args.hash_lock.0); + assert_eq!( + &details.initiator_address.0 .0[32 - args.initiator.len()..], + &args.initiator, + "Initiator address does not match" + ); + assert_eq!(details.recipient_address.0, args.recipient.0.to_vec()); + assert_eq!(details.amount.0, AssetType::Moveth(args.amount)); + assert_eq!(details.state, 1, "Bridge transfer is supposed to be locked but it's not."); + + sleep(Duration::from_secs(5)).await; + + mvt_client_harness + .movement_client + .abort_bridge_transfer(BridgeTransferId(args.bridge_transfer_id.0)) + .await + .expect("Failed to complete bridge transfer"); + + let abort_details = BridgeContract::get_bridge_transfer_details_counterparty( + &mut mvt_client_harness.movement_client, + BridgeTransferId(args.bridge_transfer_id.0), + ) + .await + .expect("Failed to get bridge transfer details") + .expect("Expected to find bridge transfer details, but got None"); + + assert_eq!(abort_details.bridge_transfer_id.0, args.bridge_transfer_id.0); + assert_eq!(abort_details.hash_lock.0, args.hash_lock.0); + assert_eq!( + &abort_details.initiator_address.0 .0[32 - args.initiator.len()..], + &args.initiator, + "Initiator address does not match" + ); + assert_eq!(abort_details.recipient_address.0, args.recipient.0.to_vec()); + assert_eq!(abort_details.amount.0, AssetType::Moveth(args.amount)); + + Ok(()) + } + .await; + + if let Err(e) = mvt_process.kill().await { + eprintln!("Failed to kill child process: {:?}", e); + } + + test_result +} + +#[tokio::test] +async fn test_eth_client_should_build_and_fetch_accounts() { + let config = Config::default(); + let (eth_client_harness, _config, _anvil) = TestHarness::new_only_eth(config).await; + + let expected_accounts = [ + address!("f39fd6e51aad88f6f4ce6ab8827279cfffb92266"), + address!("70997970c51812dc3a010c7d01b50e0d17dc79c8"), + address!("3c44cdddb6a900fa2b585dd299e03d12fa4293bc"), + address!("90f79bf6eb2c4f870365e785982e1f101e93b906"), + address!("15d34aaf54267db7d7c367839aaf71a00a2c6a65"), + address!("9965507d1a55bcc2695c58ba16fb37d819b0a4dc"), + address!("976ea74026e726554db657fa54763abd0c3a0aa9"), + address!("14dc79964da2c08b23698b3d3cc7ca32193d9955"), + address!("23618e81e3f5cdf7f54c3d65f7fbc0abf5b21e8f"), + address!("a0ee7a142d267c1f36714e4a8f75612f20a79720"), + ]; + + let provider = eth_client_harness.rpc_provider().await; + let accounts = provider.get_accounts().await.expect("Failed to get accounts"); + assert_eq!(accounts.len(), expected_accounts.len()); + + for (account, expected) in accounts.iter().zip(expected_accounts.iter()) { + assert_eq!(account, expected); + } +} + +#[tokio::test] +async fn test_eth_client_should_deploy_initiator_contract() { + let config = Config::default(); + let (_eth_client_harness, config, _anvil) = TestHarness::new_only_eth(config).await; + + assert!(config.eth.eth_initiator_contract != "Oxeee"); + assert_eq!( + config.eth.eth_initiator_contract, "0x8464135c8F25Da09e49BC8782676a84730C318bC", + "Wrong initiator contract address." + ); +} + +#[tokio::test] +async fn test_eth_client_should_successfully_call_initialize() { + let config = Config::default(); + let (_eth_client_harness, config, _anvil) = TestHarness::new_only_eth(config).await; + assert!(config.eth.eth_counterparty_contract != "0xccc"); + assert_eq!( + config.eth.eth_counterparty_contract, "0x71C95911E9a5D330f4D621842EC243EE1343292e", + "Wrong initiator contract address." + ); + assert!(config.eth.eth_weth_contract != "0xe3e3"); + assert_eq!( + config.eth.eth_weth_contract, "0x948B3c65b89DF0B4894ABE91E6D02FE579834F8F", + "Wrong initiator contract address." + ); +} + +#[tokio::test] +async fn test_eth_client_should_successfully_call_initiate_transfer_only_eth() { + let config = Config::default(); + let (mut eth_client_harness, _config, _anvil) = TestHarness::new_only_eth(config).await; + + let signer_address: alloy::primitives::Address = eth_client_harness.signer_address(); + + let recipient = HarnessMvtClient::gen_aptos_account(); + let hash_lock: [u8; 32] = keccak256("secret".to_string().as_bytes()).into(); + eth_client_harness + .eth_client + .initiate_bridge_transfer( + BridgeAddress(EthAddress(signer_address)), + BridgeAddress(recipient), + HashLock(EthHash(hash_lock).0), + Amount(AssetType::EthAndWeth((1, 0))), // Eth + ) + .await + .expect("Failed to initiate bridge transfer"); +} + +#[tokio::test] +async fn test_eth_client_should_successfully_call_initiate_transfer_only_weth() { + let config = Config::default(); + let (mut eth_client_harness, _config, _anvil) = TestHarness::new_only_eth(config).await; + + let signer_address: alloy::primitives::Address = eth_client_harness.signer_address(); + + let recipient = HarnessMvtClient::gen_aptos_account(); + let hash_lock: [u8; 32] = keccak256("secret".to_string().as_bytes()).into(); + eth_client_harness + .deposit_weth_and_approve( + BridgeAddress(EthAddress(signer_address)), + Amount(AssetType::EthAndWeth((0, 1))), + ) + .await + .expect("Failed to deposit WETH"); + + eth_client_harness + .eth_client + .initiate_bridge_transfer( + BridgeAddress(EthAddress(signer_address)), + BridgeAddress(recipient), + HashLock(EthHash(hash_lock).0), + Amount(AssetType::EthAndWeth((0, 1))), + ) + .await + .expect("Failed to initiate bridge transfer"); +} + +#[tokio::test] +async fn test_eth_client_should_successfully_call_initiate_transfer_eth_and_weth() { + let config = Config::default(); + let (mut eth_client_harness, _config, _anvil) = TestHarness::new_only_eth(config).await; + + let signer_address: alloy::primitives::Address = eth_client_harness.signer_address(); + + let recipient = HarnessMvtClient::gen_aptos_account(); + let hash_lock: [u8; 32] = keccak256("secret".to_string().as_bytes()).into(); + eth_client_harness + .deposit_weth_and_approve( + BridgeAddress(EthAddress(signer_address)), + Amount(AssetType::EthAndWeth((0, 1))), + ) + .await + .expect("Failed to deposit WETH"); + + eth_client_harness + .eth_client + .initiate_bridge_transfer( + BridgeAddress(EthAddress(signer_address)), + BridgeAddress(recipient), + HashLock(EthHash(hash_lock).0), + Amount(AssetType::EthAndWeth((1, 1))), + ) + .await + .expect("Failed to initiate bridge transfer"); +} + +#[tokio::test] +#[ignore] // To be tested after this is merged in https://github.com/movementlabsxyz/movement/pull/209 +async fn test_client_should_successfully_get_bridge_transfer_id() { + let config = Config::default(); + let (mut eth_client_harness, _config, _anvil) = TestHarness::new_only_eth(config).await; + + let signer_address: alloy::primitives::Address = eth_client_harness.signer_address(); + + let recipient = HarnessMvtClient::gen_aptos_account(); + let hash_lock: [u8; 32] = keccak256("secret".to_string().as_bytes()).into(); + + eth_client_harness + .eth_client + .initiate_bridge_transfer( + BridgeAddress(EthAddress(signer_address)), + BridgeAddress(recipient), + HashLock(EthHash(hash_lock).0), + Amount(AssetType::EthAndWeth((1000, 0))), // Eth + ) + .await + .expect("Failed to initiate bridge transfer"); + + //TODO: Here call get details with the captured event +} + +#[tokio::test] +#[ignore] // To be tested after this is merged in https://github.com/movementlabsxyz/movement/pull/209 +async fn test_eth_client_should_successfully_complete_transfer() { + let config = Config::default(); + let (mut eth_client_harness, _config, _anvil) = TestHarness::new_only_eth(config).await; + + let signer_address: alloy::primitives::Address = eth_client_harness.signer_address(); + + let recipient = address!("70997970c51812dc3a010c7d01b50e0d17dc79c8"); + let recipient_bytes: Vec = recipient.to_string().as_bytes().to_vec(); + + let secret = "secret".to_string(); + let hash_lock = keccak256(secret.as_bytes()); + let hash_lock: [u8; 32] = hash_lock.into(); + + eth_client_harness + .eth_client + .initiate_bridge_transfer( + BridgeAddress(EthAddress(signer_address)), + BridgeAddress(recipient_bytes), + HashLock(EthHash(hash_lock).0), + Amount(AssetType::EthAndWeth((42, 0))), + ) + .await + .expect("Failed to initiate bridge transfer"); + + //TODO: Here call complete with the id captured from the event +} diff --git a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs new file mode 100644 index 000000000..5ed56f8c6 --- /dev/null +++ b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs @@ -0,0 +1,244 @@ +use anyhow::Result; +use bridge_config::Config; +use bridge_integration_tests::utils; +use bridge_integration_tests::utils as test_utils; +use bridge_integration_tests::{MovementToEthCallArgs, TestHarness}; +use bridge_service::{ + chains::{bridge_contracts::BridgeContract, movement::utils::MovementHash}, + types::{BridgeTransferId, HashLockPreImage}, +}; +use tokio::time::{sleep, Duration}; +use tokio::{self}; +use tracing::info; + +#[tokio::test] +async fn test_movement_client_build_and_fund_accounts() -> Result<(), anyhow::Error> { + let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); + + let config = Config::default(); + let (mut mvt_client_harness, _config, mut mvt_process) = + TestHarness::new_with_movement(config).await; + let test_result = async { + test_utils::fund_and_check_balance(&mut mvt_client_harness, 100_000_000_000) + .await + .expect("Failed to fund accounts"); + Ok(()) + } + .await; + + if let Err(e) = mvt_process.kill().await { + eprintln!("Failed to kill child process: {:?}", e); + } + test_result +} + +#[tokio::test] +async fn test_movement_client_initiate_transfer() -> Result<(), anyhow::Error> { + let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); + + let config:Config = Config::suzuka(); + + let (mut mvt_client_harness, _config) = + TestHarness::new_with_suzuka(config).await; + + let args = MovementToEthCallArgs::default(); + + let test_result = async { + let sender_address = mvt_client_harness.movement_client.signer().address(); + test_utils::fund_and_check_balance(&mut mvt_client_harness, 100_000_000_000).await?; + test_utils::initiate_bridge_transfer_helper( + &mut mvt_client_harness.movement_client, + args.initiator.0, + args.recipient.clone(), + args.hash_lock.0, + args.amount, + true, + ) + .await + .expect("Failed to initiate bridge transfer"); + + let bridge_transfer_id: [u8; 32] = + test_utils::extract_bridge_transfer_id(&mut mvt_client_harness.movement_client).await?; + info!("Bridge transfer id: {:?}", bridge_transfer_id); + let details = BridgeContract::get_bridge_transfer_details_initiator( + &mut mvt_client_harness.movement_client, + BridgeTransferId(MovementHash(bridge_transfer_id).0), + ) + .await + .expect("Failed to get bridge transfer details") + .expect("Expected to find bridge transfer details, but got None"); + + test_utils::assert_bridge_transfer_details( + &details, + MovementHash(bridge_transfer_id).0, + MovementHash(args.hash_lock.0).0, + sender_address, + args.recipient.clone(), + args.amount, + 1, + ); + + Ok(()) + } + .await; + + test_result +} + +#[tokio::test] +#[ignore] // Test fail when run with the other test: https://github.com/movementlabsxyz/movement/issues/656 +async fn test_movement_client_complete_transfer() -> Result<(), anyhow::Error> { + let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); + + let default_config = Config::default(); + let (mut mvt_client_harness, _config, mut mvt_process) = + TestHarness::new_with_movement(default_config).await; + + let args = MovementToEthCallArgs::default(); + + let test_result = async { + let sender_address = mvt_client_harness.movement_client.signer().address(); + test_utils::fund_and_check_balance(&mut mvt_client_harness, 100_000_000_000).await?; + test_utils::initiate_bridge_transfer_helper( + &mut mvt_client_harness.movement_client, + args.initiator.0, + args.recipient.clone(), + args.hash_lock.0, + args.amount, + true, + ) + .await + .expect("Failed to initiate bridge transfer"); + + let bridge_transfer_id: [u8; 32] = + test_utils::extract_bridge_transfer_id(&mut mvt_client_harness.movement_client).await?; + info!("Bridge transfer id: {:?}", bridge_transfer_id); + let details = BridgeContract::get_bridge_transfer_details_initiator( + &mut mvt_client_harness.movement_client, + BridgeTransferId(MovementHash(bridge_transfer_id).0), + ) + .await + .expect("Failed to get bridge transfer details") + .expect("Expected to find bridge transfer details, but got None"); + + test_utils::assert_bridge_transfer_details( + &details, + MovementHash(bridge_transfer_id).0, + MovementHash(args.hash_lock.0).0, + sender_address, + args.recipient.clone(), + args.amount, + 1, + ); + + let secret = b"secret"; + let mut padded_secret = [0u8; 32]; + padded_secret[..secret.len()].copy_from_slice(secret); + + BridgeContract::initiator_complete_bridge_transfer( + &mut mvt_client_harness.movement_client, + BridgeTransferId(MovementHash(bridge_transfer_id).0), + HashLockPreImage(padded_secret), + ) + .await + .expect("Failed to complete bridge transfer"); + + let details = BridgeContract::get_bridge_transfer_details_initiator( + &mut mvt_client_harness.movement_client, + BridgeTransferId(MovementHash(bridge_transfer_id).0), + ) + .await + .expect("Failed to get bridge transfer details") + .expect("Expected to find bridge transfer details, but got None"); + + assert_eq!(details.state, 2, "Bridge transfer should be completed."); + + Ok(()) + } + .await; + + if let Err(e) = mvt_process.kill().await { + eprintln!("Failed to kill child process: {:?}", e); + } + + test_result +} + +#[tokio::test] +async fn test_movement_client_refund_transfer() -> Result<(), anyhow::Error> { + let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); + + let config = Config::default(); + let (mut mvt_client_harness, _config, mut mvt_process) = + TestHarness::new_with_movement(config).await; + + let args = MovementToEthCallArgs::default(); + + let test_result = async { + let sender_address = mvt_client_harness.movement_client.signer().address(); + test_utils::fund_and_check_balance(&mut mvt_client_harness, 100_000_000_000).await?; + + let ledger_info = mvt_client_harness.rest_client.get_ledger_information().await?; + println!("Ledger info: {:?}", ledger_info); + + test_utils::initiate_bridge_transfer_helper( + &mut mvt_client_harness.movement_client, + args.initiator.0, + args.recipient.clone(), + args.hash_lock.0, + args.amount, + true, + ) + .await + .expect("Failed to initiate bridge transfer"); + + let bridge_transfer_id: [u8; 32] = + test_utils::extract_bridge_transfer_id(&mut mvt_client_harness.movement_client).await?; + info!("Bridge transfer id: {:?}", bridge_transfer_id); + let details = BridgeContract::get_bridge_transfer_details_initiator( + &mut mvt_client_harness.movement_client, + BridgeTransferId(MovementHash(bridge_transfer_id).0), + ) + .await + .expect("Failed to get bridge transfer details") + .expect("Expected to find bridge transfer details, but got None"); + + utils::assert_bridge_transfer_details( + &details, + MovementHash(bridge_transfer_id).0, + MovementHash(args.hash_lock.0).0, + sender_address, + args.recipient.clone(), + args.amount, + 1, + ); + + sleep(Duration::from_secs(2)).await; + + BridgeContract::refund_bridge_transfer( + &mut mvt_client_harness.movement_client, + BridgeTransferId(MovementHash(bridge_transfer_id).0), + ) + .await + .expect("Failed to complete bridge transfer"); + + let details = BridgeContract::get_bridge_transfer_details_initiator( + &mut mvt_client_harness.movement_client, + BridgeTransferId(MovementHash(bridge_transfer_id).0), + ) + .await + .expect("Failed to get bridge transfer details") + .expect("Expected to find bridge transfer details, but got None"); + + assert_eq!(details.state, 3, "Bridge transfer should be refunded."); + + Ok(()) + } + .await; + + if let Err(e) = mvt_process.kill().await { + eprintln!("Failed to kill child process: {:?}", e); + } + + test_result +} diff --git a/protocol-units/bridge/move-modules/scripts/enable_bridge_feature.move b/protocol-units/bridge/move-modules/scripts/enable_bridge_feature.move new file mode 100644 index 000000000..aa9295a4f --- /dev/null +++ b/protocol-units/bridge/move-modules/scripts/enable_bridge_feature.move @@ -0,0 +1,19 @@ +script { + use aptos_framework::aptos_governance; + use std::features; + + fun enable_bridge_feature(core_resources: &signer) { + let core_signer = aptos_governance::get_signer_testnet_only(core_resources, @0x1); + + let framework_signer = &core_signer; + + let enabled_blob: vector = vector[ + features::get_atomic_bridge_feature() + ]; + + let disabled_blob: vector = vector[]; + + features::change_feature_flags_for_next_epoch(framework_signer, enabled_blob, disabled_blob); + aptos_governance::reconfigure(framework_signer); + } +} \ No newline at end of file diff --git a/protocol-units/bridge/move-modules/scripts/update_bridge_operator.move b/protocol-units/bridge/move-modules/scripts/update_bridge_operator.move new file mode 100644 index 000000000..b2a591724 --- /dev/null +++ b/protocol-units/bridge/move-modules/scripts/update_bridge_operator.move @@ -0,0 +1,9 @@ +script { + use aptos_framework::aptos_governance; + use aptos_framework::atomic_bridge_configuration; + + fun update_bridge_operator(core_resources: &signer, new_operator: address) { + let framework_signer = aptos_governance::get_signer_testnet_only(core_resources, @aptos_framework); + atomic_bridge_configuration::update_bridge_operator(&framework_signer, new_operator); + } +} \ No newline at end of file diff --git a/protocol-units/bridge/service/src/chains/movement/client.rs b/protocol-units/bridge/service/src/chains/movement/client.rs index a10f5c2e2..1e4b76f4c 100644 --- a/protocol-units/bridge/service/src/chains/movement/client.rs +++ b/protocol-units/bridge/service/src/chains/movement/client.rs @@ -54,7 +54,7 @@ impl MovementClient { let rest_client = Client::new(node_connection_url.clone()); let signer = - utils::create_local_account(config.movement_signer_address.clone(), &rest_client) + utils::create_local_account(config.movement_signer_key.clone(), &rest_client) .await?; let native_address = AccountAddress::from_hex_literal(&config.movement_native_address)?; Ok(MovementClient { diff --git a/protocol-units/bridge/service/src/chains/movement/client_framework.rs b/protocol-units/bridge/service/src/chains/movement/client_framework.rs new file mode 100644 index 000000000..c110669f2 --- /dev/null +++ b/protocol-units/bridge/service/src/chains/movement/client_framework.rs @@ -0,0 +1,805 @@ +use super::utils::{self, MovementAddress}; +use crate::chains::bridge_contracts::BridgeContract; +use crate::chains::bridge_contracts::BridgeContractError; +use crate::chains::bridge_contracts::BridgeContractResult; +use crate::types::{ + Amount, AssetType, BridgeAddress, BridgeTransferDetails, BridgeTransferId, HashLock, + HashLockPreImage, TimeLock, +}; +use anyhow::Result; +use aptos_api_types::{EntryFunctionId, MoveModuleId, ViewRequest}; +use aptos_sdk::{ + move_types::identifier::Identifier, + rest_client::{Client, Response}, + types::LocalAccount, +}; +use aptos_types::account_address::AccountAddress; +use bridge_config::common::movement::MovementConfig; +use rand::prelude::*; +use std::str::FromStr; +use std::sync::Arc; +use tracing::{debug, info}; +use url::Url; + +const INITIATOR_MODULE_NAME: &str = "atomic_bridge_initiator"; +const COUNTERPARTY_MODULE_NAME: &str = "atomic_bridge_counterparty"; +const DUMMY_ADDRESS: AccountAddress = AccountAddress::new([0; 32]); + +#[allow(dead_code)] +enum Call { + Lock, + Complete, + Abort, + GetDetails, +} + +#[allow(dead_code)] +#[derive(Clone)] +pub struct MovementClientFramework { + ///Native Address of the + pub native_address: AccountAddress, + /// Bytes of the non-native (external) chain. + pub non_native_address: Vec, + ///The Apotos Rest Client + pub rest_client: Client, + ///The signer account + signer: Arc, +} + +impl MovementClientFramework { + pub async fn new(config: &MovementConfig) -> Result { + let node_connection_url = Url::from_str(config.mvt_rpc_connection_url().as_str()) + .map_err(|_| BridgeContractError::SerializationError)?; + + let rest_client = Client::new(node_connection_url.clone()); + + let signer = + utils::create_local_account(config.movement_signer_key.clone(), &rest_client) + .await?; + let native_address = AccountAddress::from_hex_literal(&config.movement_native_address)?; + Ok(MovementClientFramework { + native_address, + non_native_address: Vec::new(), //dummy for now + rest_client, + signer: Arc::new(signer), + }) + } + + pub fn rest_client(&self) -> &Client { + &self.rest_client + } + + pub fn signer(&self) -> &LocalAccount { + &self.signer + } + + pub async fn initiator_set_timelock( + &mut self, + time_lock: u64, + ) -> Result<(), BridgeContractError> { + let args = vec![utils::serialize_u64(&time_lock)?]; + + let payload = utils::make_aptos_payload( + self.native_address, + "atomic_bridge_initiator", + "set_time_lock_duration", + Vec::new(), + args, + ); + + utils::send_and_confirm_aptos_transaction(&self.rest_client, self.signer.as_ref(), payload) + .await + .map_err(|_| BridgeContractError::CallError)?; + + Ok(()) + } + + pub async fn counterparty_set_timelock( + &mut self, + time_lock: u64, + ) -> Result<(), BridgeContractError> { + let args = vec![utils::serialize_u64(&time_lock)?]; + + let payload = utils::make_aptos_payload( + self.native_address, + "atomic_bridge_counterparty", + "set_time_lock_duration", + Vec::new(), + args, + ); + + utils::send_and_confirm_aptos_transaction(&self.rest_client, self.signer.as_ref(), payload) + .await + .map_err(|_| BridgeContractError::CallError)?; + + Ok(()) + } +} + +#[async_trait::async_trait] +impl BridgeContract for MovementClientFramework { + async fn initiate_bridge_transfer( + &mut self, + _initiator: BridgeAddress, + recipient: BridgeAddress>, + hash_lock: HashLock, + amount: Amount, + ) -> BridgeContractResult<()> { + let amount_value = match amount.0 { + AssetType::Moveth(value) => value, + _ => return Err(BridgeContractError::ConversionFailed("Amount".to_string())), + }; + debug!("Amount value: {:?}", amount_value); + + let args = vec![ + utils::serialize_vec_initiator(&recipient.0)?, + utils::serialize_vec_initiator(&hash_lock.0[..])?, + utils::serialize_u64_initiator(&amount_value)?, + ]; + + let payload = utils::make_aptos_payload( + self.native_address, + "atomic_bridge_initiator", + "initiate_bridge_transfer", + Vec::new(), + args, + ); + + let _ = utils::send_and_confirm_aptos_transaction( + &self.rest_client, + self.signer.as_ref(), + payload, + ) + .await + .map_err(|_| BridgeContractError::InitiateTransferError)?; + + Ok(()) + } + + async fn initiator_complete_bridge_transfer( + &mut self, + bridge_transfer_id: BridgeTransferId, + preimage: HashLockPreImage, + ) -> BridgeContractResult<()> { + let unpadded_preimage = { + let mut end = preimage.0.len(); + while end > 0 && preimage.0[end - 1] == 0 { + end -= 1; + } + &preimage.0[..end] + }; + let args2 = vec![ + utils::serialize_vec_initiator(&bridge_transfer_id.0[..])?, + utils::serialize_vec_initiator(unpadded_preimage)?, + ]; + + let payload = utils::make_aptos_payload( + self.native_address, + INITIATOR_MODULE_NAME, + "complete_bridge_transfer", + Vec::new(), + args2, + ); + + let _ = utils::send_and_confirm_aptos_transaction( + &self.rest_client, + self.signer.as_ref(), + payload, + ) + .await + .map_err(|_| BridgeContractError::CompleteTransferError); + + Ok(()) + } + + async fn counterparty_complete_bridge_transfer( + &mut self, + bridge_transfer_id: BridgeTransferId, + preimage: HashLockPreImage, + ) -> BridgeContractResult<()> { + let unpadded_preimage = { + let mut end = preimage.0.len(); + while end > 0 && preimage.0[end - 1] == 0 { + end -= 1; + } + &preimage.0[..end] + }; + let args2 = vec![ + utils::serialize_vec(&bridge_transfer_id.0[..])?, + utils::serialize_vec(&unpadded_preimage)?, + ]; + + let payload = utils::make_aptos_payload( + self.native_address, + COUNTERPARTY_MODULE_NAME, + "complete_bridge_transfer", + Vec::new(), + args2, + ); + + let result = utils::send_and_confirm_aptos_transaction( + &self.rest_client, + self.signer.as_ref(), + payload, + ) + .await + .map_err(|_| BridgeContractError::CompleteTransferError); + + match &result { + Ok(tx_result) => { + debug!("Transaction succeeded: {:?}", tx_result); + } + Err(err) => { + debug!("Transaction failed: {:?}", err); + } + } + + Ok(()) + } + + async fn lock_bridge_transfer( + &mut self, + bridge_transfer_id: BridgeTransferId, + hash_lock: HashLock, + initiator: BridgeAddress>, + recipient: BridgeAddress, + amount: Amount, + ) -> BridgeContractResult<()> { + let amount_value = match amount.0 { + AssetType::Moveth(value) => value, + _ => return Err(BridgeContractError::SerializationError), + }; + + let args = vec![ + utils::serialize_vec(&initiator.0)?, + utils::serialize_vec(&bridge_transfer_id.0[..])?, + utils::serialize_vec(&hash_lock.0[..])?, + utils::serialize_vec(&recipient.0)?, + utils::serialize_u64(&amount_value)?, + ]; + + let payload = utils::make_aptos_payload( + self.native_address, + COUNTERPARTY_MODULE_NAME, + "lock_bridge_transfer", + Vec::new(), + args, + ); + + let _ = utils::send_and_confirm_aptos_transaction( + &self.rest_client, + self.signer.as_ref(), + payload, + ) + .await + .map_err(|_| BridgeContractError::LockTransferError); + + Ok(()) + } + + async fn refund_bridge_transfer( + &mut self, + bridge_transfer_id: BridgeTransferId, + ) -> BridgeContractResult<()> { + let args = vec![utils::serialize_vec_initiator(&bridge_transfer_id.0[..])?]; + + let payload = utils::make_aptos_payload( + self.native_address, + "atomic_bridge_initiator", + "refund_bridge_transfer", + Vec::new(), + args, + ); + + utils::send_and_confirm_aptos_transaction(&self.rest_client, self.signer.as_ref(), payload) + .await + .map_err(|err| BridgeContractError::OnChainError(err.to_string()))?; + + Ok(()) + } + + async fn abort_bridge_transfer( + &mut self, + bridge_transfer_id: BridgeTransferId, + ) -> BridgeContractResult<()> { + let args3 = vec![utils::serialize_vec(&bridge_transfer_id.0[..])?]; + let payload = utils::make_aptos_payload( + self.native_address, + COUNTERPARTY_MODULE_NAME, + "abort_bridge_transfer", + Vec::new(), + args3, + ); + let result = utils::send_and_confirm_aptos_transaction( + &self.rest_client, + self.signer.as_ref(), + payload, + ) + .await + .map_err(|_| BridgeContractError::AbortTransferError); + + info!("Abort bridge transfer result: {:?}", &result); + + Ok(()) + } + + async fn get_bridge_transfer_details_initiator( + &mut self, + bridge_transfer_id: BridgeTransferId, + ) -> BridgeContractResult>> { + let bridge_transfer_id_hex = format!("0x{}", hex::encode(bridge_transfer_id.0)); + + let view_request = ViewRequest { + function: EntryFunctionId { + module: MoveModuleId { + address: self.native_address.clone().into(), + name: aptos_api_types::IdentifierWrapper( + Identifier::new("atomic_bridge_initiator") + .map_err(|_| BridgeContractError::FunctionViewError)?, + ), + }, + name: aptos_api_types::IdentifierWrapper( + Identifier::new("bridge_transfers") + .map_err(|_| BridgeContractError::FunctionViewError)?, + ), + }, + type_arguments: vec![], + arguments: vec![serde_json::json!(bridge_transfer_id_hex)], + }; + + debug!("View request: {:?}", view_request); + + let response: Response> = self + .rest_client + .view(&view_request, None) + .await + .map_err(|_| BridgeContractError::CallError)?; + + let values = response.inner(); + + if values.len() != 6 { + return Err(BridgeContractError::InvalidResponseLength); + } + + let originator = utils::val_as_str_initiator(values.first())?; + let recipient = utils::val_as_str_initiator(values.get(1))?; + let amount = utils::val_as_str_initiator(values.get(2))? + .parse::() + .map_err(|_| BridgeContractError::SerializationError)?; + let hash_lock = utils::val_as_str_initiator(values.get(3))?; + let time_lock = utils::val_as_str_initiator(values.get(4))? + .parse::() + .map_err(|_| BridgeContractError::SerializationError)?; + let state = utils::val_as_u64_initiator(values.get(5))? as u8; + + let originator_address = AccountAddress::from_hex_literal(originator) + .map_err(|_| BridgeContractError::SerializationError)?; + let recipient_address_bytes = + hex::decode(&recipient[2..]).map_err(|_| BridgeContractError::SerializationError)?; + let hash_lock_array: [u8; 32] = hex::decode(&hash_lock[2..]) + .map_err(|_| BridgeContractError::SerializationError)? + .try_into() + .map_err(|_| BridgeContractError::SerializationError)?; + + let details = BridgeTransferDetails { + bridge_transfer_id, + initiator_address: BridgeAddress(MovementAddress(originator_address)), + recipient_address: BridgeAddress(recipient_address_bytes), + amount: Amount(AssetType::Moveth(amount)), + hash_lock: HashLock(hash_lock_array), + time_lock: TimeLock(time_lock), + state, + }; + + Ok(Some(details)) + } + + async fn get_bridge_transfer_details_counterparty( + &mut self, + bridge_transfer_id: BridgeTransferId, + ) -> BridgeContractResult>> { + let bridge_transfer_id_hex = format!("0x{}", hex::encode(bridge_transfer_id.0)); + + let view_request = ViewRequest { + function: EntryFunctionId { + module: MoveModuleId { + address: self.native_address.clone().into(), + name: aptos_api_types::IdentifierWrapper( + Identifier::new("atomic_bridge_counterparty") + .map_err(|_| BridgeContractError::FunctionViewError)?, + ), + }, + name: aptos_api_types::IdentifierWrapper( + Identifier::new("bridge_transfers") + .map_err(|_| BridgeContractError::FunctionViewError)?, + ), + }, + type_arguments: vec![], + arguments: vec![serde_json::json!(bridge_transfer_id_hex)], + }; + + debug!("View request: {:?}", view_request); + + let response: Response> = self + .rest_client + .view(&view_request, None) + .await + .map_err(|_| BridgeContractError::CallError)?; + + let values = response.inner(); + + if values.len() != 6 { + return Err(BridgeContractError::InvalidResponseLength); + } + + let originator = utils::val_as_str_initiator(values.first())?; + let recipient = utils::val_as_str_initiator(values.get(1))?; + let amount = utils::val_as_str_initiator(values.get(2))? + .parse::() + .map_err(|_| BridgeContractError::SerializationError)?; + let hash_lock = utils::val_as_str_initiator(values.get(3))?; + let time_lock = utils::val_as_str_initiator(values.get(4))? + .parse::() + .map_err(|_| BridgeContractError::SerializationError)?; + let state = utils::val_as_u64_initiator(values.get(5))? as u8; + + let originator_address = AccountAddress::from_hex_literal(originator) + .map_err(|_| BridgeContractError::SerializationError)?; + let recipient_address_bytes = + hex::decode(&recipient[2..]).map_err(|_| BridgeContractError::SerializationError)?; + let hash_lock_array: [u8; 32] = hex::decode(&hash_lock[2..]) + .map_err(|_| BridgeContractError::SerializationError)? + .try_into() + .map_err(|_| BridgeContractError::SerializationError)?; + + let details = BridgeTransferDetails { + bridge_transfer_id, + initiator_address: BridgeAddress(MovementAddress(originator_address)), + recipient_address: BridgeAddress(recipient_address_bytes), + amount: Amount(AssetType::Moveth(amount)), + hash_lock: HashLock(hash_lock_array), + time_lock: TimeLock(time_lock), + state, + }; + + Ok(Some(details)) + } +} + +use std::{ + env, fs, + io::Write, + path::PathBuf, + process::{Command, Stdio}, +}; +use tokio::{ + io::{AsyncBufReadExt, BufReader}, + process::Command as TokioCommand, + sync::oneshot, + task, +}; + +impl MovementClientFramework { + pub fn publish_for_test(&mut self) -> Result<()> { + let random_seed = rand::thread_rng().gen_range(0, 1000000).to_string(); + + let mut process = Command::new("movement") + .args(&["init"]) + .stdin(Stdio::piped()) + .stdout(Stdio::piped()) + .stderr(Stdio::piped()) + .spawn() + .expect("Failed to execute command"); + + let private_key_hex = hex::encode(self.signer.private_key().to_bytes()); + + let stdin: &mut std::process::ChildStdin = + process.stdin.as_mut().expect("Failed to open stdin"); + + let movement_dir = PathBuf::from(".movement"); + + if movement_dir.exists() { + stdin.write_all(b"yes\n").expect("Failed to write to stdin"); + } + + stdin.write_all(b"local\n").expect("Failed to write to stdin"); + + let _ = stdin.write_all(format!("{}\n", private_key_hex).as_bytes()); + + let addr_output = process.wait_with_output().expect("Failed to read command output"); + + if !addr_output.stdout.is_empty() { + println!("stdout: {}", String::from_utf8_lossy(&addr_output.stdout)); + } + + if !addr_output.stderr.is_empty() { + eprintln!("stderr: {}", String::from_utf8_lossy(&addr_output.stderr)); + } + let addr_output_str = String::from_utf8_lossy(&addr_output.stderr); + let address = addr_output_str + .split_whitespace() + .find(|word| word.starts_with("0x")) + .expect("Failed to extract the Movement account address"); + + println!("Extracted address: {}", address); + + let resource_output = Command::new("movement") + .args(&[ + "account", + "derive-resource-account-address", + "--address", + address, + "--seed", + &random_seed, + ]) + .stdout(Stdio::piped()) + .stderr(Stdio::piped()) + .output() + .expect("Failed to execute command"); + + // Print the output of the resource address command for debugging + if !resource_output.stdout.is_empty() { + println!("stdout: {}", String::from_utf8_lossy(&resource_output.stdout)); + } + if !resource_output.stderr.is_empty() { + eprintln!("stderr: {}", String::from_utf8_lossy(&resource_output.stderr)); + } + + // Extract the resource address from the JSON output + let resource_output_str = String::from_utf8_lossy(&resource_output.stdout); + let resource_address = resource_output_str + .lines() + .find(|line| line.contains("\"Result\"")) + .and_then(|line| line.split('"').nth(3)) + .expect("Failed to extract the resource account address"); + + // Ensure the address has a "0x" prefix + let formatted_resource_address = if resource_address.starts_with("0x") { + resource_address.to_string() + } else { + format!("0x{}", resource_address) + }; + + // Set counterparty module address to resource address, for function calls: + self.native_address = AccountAddress::from_hex_literal(&formatted_resource_address)?; + + println!("Derived resource address: {}", formatted_resource_address); + + let current_dir = env::current_dir().expect("Failed to get current directory"); + println!("Current directory: {:?}", current_dir); + + let move_toml_path = PathBuf::from("../move-modules/Move.toml"); + + // Read the existing content of Move.toml + let move_toml_content = + fs::read_to_string(&move_toml_path).expect("Failed to read Move.toml file"); + + // Update the content of Move.toml with the new addresses + let updated_content = move_toml_content + .lines() + .map(|line| match line { + _ if line.starts_with("resource_addr = ") => { + format!(r#"resource_addr = "{}""#, formatted_resource_address) + } + _ if line.starts_with("atomic_bridge = ") => { + format!(r#"atomic_bridge = "{}""#, formatted_resource_address) + } + _ if line.starts_with("moveth = ") => { + format!(r#"moveth = "{}""#, formatted_resource_address) + } + _ if line.starts_with("master_minter = ") => { + format!(r#"master_minter = "{}""#, formatted_resource_address) + } + _ if line.starts_with("minter = ") => { + format!(r#"minter = "{}""#, formatted_resource_address) + } + _ if line.starts_with("admin = ") => { + format!(r#"admin = "{}""#, formatted_resource_address) + } + _ if line.starts_with("origin_addr = ") => { + format!(r#"origin_addr = "{}""#, address) + } + _ if line.starts_with("source_account = ") => { + format!(r#"source_account = "{}""#, address) + } + _ => line.to_string(), + }) + .collect::>() + .join("\n"); + + // Write the updated content back to Move.toml + let mut file = + fs::File::create(&move_toml_path).expect("Failed to open Move.toml file for writing"); + file.write_all(updated_content.as_bytes()) + .expect("Failed to write updated Move.toml file"); + + println!("Move.toml updated successfully."); + + let output2 = Command::new("movement") + .args(&[ + "move", + "create-resource-account-and-publish-package", + "--assume-yes", + "--address-name", + "moveth", + "--seed", + &random_seed, + "--package-dir", + "../move-modules", + ]) + .stdout(Stdio::piped()) + .stderr(Stdio::piped()) + .output() + .expect("Failed to execute command"); + + if !output2.stdout.is_empty() { + eprintln!("stdout: {}", String::from_utf8_lossy(&output2.stdout)); + } + + if !output2.stderr.is_empty() { + eprintln!("stderr: {}", String::from_utf8_lossy(&output2.stderr)); + } + + if movement_dir.exists() { + fs::remove_dir_all(movement_dir).expect("Failed to delete .movement directory"); + println!(".movement directory deleted successfully."); + } + + // Read the existing content of Move.toml + let move_toml_content = + fs::read_to_string(&move_toml_path).expect("Failed to read Move.toml file"); + + // Directly assign the address + let final_address = "0xcafe"; + + // Directly assign the formatted resource address + let final_formatted_resource_address = + "0xc3bb8488ab1a5815a9d543d7e41b0e0df46a7396f89b22821f07a4362f75ddc5"; + + let updated_content = move_toml_content + .lines() + .map(|line| match line { + _ if line.starts_with("resource_addr = ") => { + format!(r#"resource_addr = "{}""#, final_formatted_resource_address) + } + _ if line.starts_with("atomic_bridge = ") => { + format!(r#"atomic_bridge = "{}""#, final_formatted_resource_address) + } + _ if line.starts_with("moveth = ") => { + format!(r#"moveth = "{}""#, final_formatted_resource_address) + } + _ if line.starts_with("master_minter = ") => { + format!(r#"master_minter = "{}""#, final_formatted_resource_address) + } + _ if line.starts_with("minter = ") => { + format!(r#"minter = "{}""#, final_formatted_resource_address) + } + _ if line.starts_with("admin = ") => { + format!(r#"admin = "{}""#, final_formatted_resource_address) + } + _ if line.starts_with("origin_addr = ") => { + format!(r#"origin_addr = "{}""#, final_address) + } + _ if line.starts_with("pauser = ") => { + format!(r#"pauser = "{}""#, "0xdafe") + } + _ if line.starts_with("denylister = ") => { + format!(r#"denylister = "{}""#, "0xcade") + } + _ => line.to_string(), + }) + .collect::>() + .join("\n"); + + // Write the updated content back to Move.toml + let mut file = + fs::File::create(&move_toml_path).expect("Failed to open Move.toml file for writing"); + file.write_all(updated_content.as_bytes()) + .expect("Failed to write updated Move.toml file"); + + println!("Move.toml addresses updated successfully at the end of the test."); + + Ok(()) + } + + pub async fn new_for_test() -> Result<(Self, tokio::process::Child), anyhow::Error> { + let kill_cmd = TokioCommand::new("sh") + .arg("-c") + .arg("PID=$(ps aux | grep 'movement node run-local-testnet' | grep -v grep | awk '{print $2}' | head -n 1); if [ -n \"$PID\" ]; then kill -9 $PID; fi") + .output() + .await?; + + if !kill_cmd.status.success() { + println!("Failed to kill running movement process: {:?}", kill_cmd.stderr); + } else { + println!("Movement process killed if it was running."); + } + + let delete_dir_cmd = TokioCommand::new("sh") + .arg("-c") + .arg("if [ -d '.movement' ]; then rm -rf .movement; fi") + .output() + .await?; + + if !delete_dir_cmd.status.success() { + println!("Failed to delete .movement directory: {:?}", delete_dir_cmd.stderr); + } else { + println!(".movement directory deleted if it was present."); + } + + let (setup_complete_tx, setup_complete_rx) = oneshot::channel(); + let mut child = TokioCommand::new("movement") + .args(&["node", "run-local-testnet", "--force-restart", "--assume-yes"]) + .stdout(Stdio::piped()) + .stderr(Stdio::piped()) + .spawn()?; + + let stdout = child.stdout.take().expect("Failed to capture stdout"); + let stderr = child.stderr.take().expect("Failed to capture stderr"); + + task::spawn(async move { + let mut stdout_reader = BufReader::new(stdout).lines(); + let mut stderr_reader = BufReader::new(stderr).lines(); + + loop { + tokio::select! { + line = stdout_reader.next_line() => { + match line { + Ok(Some(line)) => { + println!("STDOUT: {}", line); + if line.contains("Setup is complete") { + println!("Testnet is up and running!"); + let _ = setup_complete_tx.send(()); + return Ok(()); + } + }, + Ok(_) => { + return Err(anyhow::anyhow!("Unexpected end of stdout stream")); + }, + Err(e) => { + return Err(anyhow::anyhow!("Error reading stdout: {}", e)); + } + } + }, + line = stderr_reader.next_line() => { + match line { + Ok(Some(line)) => { + println!("STDERR: {}", line); + if line.contains("Setup is complete") { + println!("Testnet is up and running!"); + let _ = setup_complete_tx.send(()); + return Ok(()); + } + }, + Ok(_) => { + return Err(anyhow::anyhow!("Unexpected end of stderr stream")); + } + Err(e) => { + return Err(anyhow::anyhow!("Error reading stderr: {}", e)); + } + } + } + } + } + }); + + setup_complete_rx.await.expect("Failed to receive setup completion signal"); + println!("Setup complete message received."); + + let node_connection_url = "http://127.0.0.1:8080".to_string(); + let node_connection_url = Url::from_str(node_connection_url.as_str()) + .map_err(|_| BridgeContractError::SerializationError)?; + let rest_client = Client::new(node_connection_url.clone()); + + let mut rng = ::rand::rngs::StdRng::from_seed([3u8; 32]); + Ok(( + MovementClientFramework { + native_address: DUMMY_ADDRESS, + non_native_address: Vec::new(), + rest_client, + signer: Arc::new(LocalAccount::generate(&mut rng)), + }, + child, + )) + } +} diff --git a/protocol-units/bridge/setup/src/deploy.rs b/protocol-units/bridge/setup/src/deploy.rs index 0252f45ac..1402ebae6 100644 --- a/protocol-units/bridge/setup/src/deploy.rs +++ b/protocol-units/bridge/setup/src/deploy.rs @@ -156,7 +156,7 @@ pub fn deploy_local_movement_node(config: &mut MovementConfig) -> Result<(), any // stdin.write_all(b"local\n").expect("Failed to write to stdin"); - let private_key_bytes = config.movement_signer_address.to_bytes(); + let private_key_bytes = config.movement_signer_key.to_bytes(); let private_key_hex = format!("0x{}", private_key_bytes.encode_hex::()); let _ = stdin.write_all(format!("{}\n", private_key_hex).as_bytes()); diff --git a/protocol-units/bridge/setup/src/local.rs b/protocol-units/bridge/setup/src/local.rs index f714ad551..5cc565021 100644 --- a/protocol-units/bridge/setup/src/local.rs +++ b/protocol-units/bridge/setup/src/local.rs @@ -117,7 +117,7 @@ pub async fn setup_movement_node( let mut rng = ::rand::rngs::StdRng::from_seed([3u8; 32]); let signer = LocalAccount::generate(&mut rng); - config.movement_signer_address = signer.private_key().clone(); + config.movement_signer_key = signer.private_key().clone(); Ok(child) } diff --git a/protocol-units/bridge/setup/src/main.rs b/protocol-units/bridge/setup/src/main.rs index 5993d51f6..b4a0ff5ba 100644 --- a/protocol-units/bridge/setup/src/main.rs +++ b/protocol-units/bridge/setup/src/main.rs @@ -60,7 +60,7 @@ async fn main() -> Result<(), anyhow::Error> { maptos_config.client.maptos_faucet_rest_connection_port; //update signer with maptos private key - config.movement.movement_signer_address = maptos_config.chain.maptos_private_key; + config.movement.movement_signer_key = maptos_config.chain.maptos_private_key; } if let Ok(settlement_config) = settlement_config { println!("Update bridge config with settlement config"); From 2ccedeb1435f4517512e9a01f0d798b6c8d630e6 Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Thu, 10 Oct 2024 06:02:47 -0400 Subject: [PATCH 02/35] fix: update MovementClientFramework calls to use FRAMEWORK_ADDRESS --- .../src/chains/movement/client_framework.rs | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/protocol-units/bridge/service/src/chains/movement/client_framework.rs b/protocol-units/bridge/service/src/chains/movement/client_framework.rs index c110669f2..27209ecfe 100644 --- a/protocol-units/bridge/service/src/chains/movement/client_framework.rs +++ b/protocol-units/bridge/service/src/chains/movement/client_framework.rs @@ -21,6 +21,7 @@ use std::sync::Arc; use tracing::{debug, info}; use url::Url; +const FRAMEWORK_ADDRESS: AccountAddress = AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]); const INITIATOR_MODULE_NAME: &str = "atomic_bridge_initiator"; const COUNTERPARTY_MODULE_NAME: &str = "atomic_bridge_counterparty"; const DUMMY_ADDRESS: AccountAddress = AccountAddress::new([0; 32]); @@ -80,7 +81,7 @@ impl MovementClientFramework { let args = vec![utils::serialize_u64(&time_lock)?]; let payload = utils::make_aptos_payload( - self.native_address, + FRAMEWORK_ADDRESS, "atomic_bridge_initiator", "set_time_lock_duration", Vec::new(), @@ -101,7 +102,7 @@ impl MovementClientFramework { let args = vec![utils::serialize_u64(&time_lock)?]; let payload = utils::make_aptos_payload( - self.native_address, + FRAMEWORK_ADDRESS, "atomic_bridge_counterparty", "set_time_lock_duration", Vec::new(), @@ -138,7 +139,7 @@ impl BridgeContract for MovementClientFramework { ]; let payload = utils::make_aptos_payload( - self.native_address, + FRAMEWORK_ADDRESS, "atomic_bridge_initiator", "initiate_bridge_transfer", Vec::new(), @@ -174,7 +175,7 @@ impl BridgeContract for MovementClientFramework { ]; let payload = utils::make_aptos_payload( - self.native_address, + FRAMEWORK_ADDRESS, INITIATOR_MODULE_NAME, "complete_bridge_transfer", Vec::new(), @@ -210,7 +211,7 @@ impl BridgeContract for MovementClientFramework { ]; let payload = utils::make_aptos_payload( - self.native_address, + FRAMEWORK_ADDRESS, COUNTERPARTY_MODULE_NAME, "complete_bridge_transfer", Vec::new(), @@ -259,7 +260,7 @@ impl BridgeContract for MovementClientFramework { ]; let payload = utils::make_aptos_payload( - self.native_address, + FRAMEWORK_ADDRESS, COUNTERPARTY_MODULE_NAME, "lock_bridge_transfer", Vec::new(), @@ -284,7 +285,7 @@ impl BridgeContract for MovementClientFramework { let args = vec![utils::serialize_vec_initiator(&bridge_transfer_id.0[..])?]; let payload = utils::make_aptos_payload( - self.native_address, + FRAMEWORK_ADDRESS, "atomic_bridge_initiator", "refund_bridge_transfer", Vec::new(), @@ -304,7 +305,7 @@ impl BridgeContract for MovementClientFramework { ) -> BridgeContractResult<()> { let args3 = vec![utils::serialize_vec(&bridge_transfer_id.0[..])?]; let payload = utils::make_aptos_payload( - self.native_address, + FRAMEWORK_ADDRESS, COUNTERPARTY_MODULE_NAME, "abort_bridge_transfer", Vec::new(), @@ -332,7 +333,7 @@ impl BridgeContract for MovementClientFramework { let view_request = ViewRequest { function: EntryFunctionId { module: MoveModuleId { - address: self.native_address.clone().into(), + address: FRAMEWORK_ADDRESS.clone().into(), name: aptos_api_types::IdentifierWrapper( Identifier::new("atomic_bridge_initiator") .map_err(|_| BridgeContractError::FunctionViewError)?, @@ -403,7 +404,7 @@ impl BridgeContract for MovementClientFramework { let view_request = ViewRequest { function: EntryFunctionId { module: MoveModuleId { - address: self.native_address.clone().into(), + address: FRAMEWORK_ADDRESS.clone().into(), name: aptos_api_types::IdentifierWrapper( Identifier::new("atomic_bridge_counterparty") .map_err(|_| BridgeContractError::FunctionViewError)?, From c4d2d9f3f57d4e2de30e661bf80e42e8c1eec3e7 Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Thu, 10 Oct 2024 06:34:51 -0400 Subject: [PATCH 03/35] feat: successfully calling framework functions --- .../bridge/integration-tests/src/lib.rs | 90 ++++++++++++- .../bridge/integration-tests/src/utils.rs | 127 +++++++++++++++++- .../tests/client_l2move_l1move.rs | 10 +- .../src/chains/movement/client_framework.rs | 8 +- .../bridge/service/src/chains/movement/mod.rs | 1 + 5 files changed, 219 insertions(+), 17 deletions(-) diff --git a/protocol-units/bridge/integration-tests/src/lib.rs b/protocol-units/bridge/integration-tests/src/lib.rs index 5dfe4465f..08f49a935 100644 --- a/protocol-units/bridge/integration-tests/src/lib.rs +++ b/protocol-units/bridge/integration-tests/src/lib.rs @@ -13,7 +13,7 @@ use bridge_service::chains::ethereum::types::AlloyProvider; use bridge_service::chains::ethereum::types::EthAddress; use bridge_service::chains::ethereum::{client::EthClient, types::EthHash}; use bridge_service::chains::movement::utils::MovementAddress; -use bridge_service::chains::movement::{client::MovementClient, utils::MovementHash}; +use bridge_service::chains::movement::{client::MovementClient, client_framework::MovementClientFramework, utils::MovementHash}; use bridge_service::types::Amount; use bridge_service::{chains::bridge_contracts::BridgeContractResult, types::BridgeAddress}; use godfig::{backend::config_file::ConfigFile, Godfig}; @@ -216,10 +216,90 @@ impl TestHarness { (test_harness, config, movement_process) } + pub async fn new_only_eth(config: Config) -> (HarnessEthClient, Config, AnvilInstance) { + let (config, anvil) = bridge_setup::test_eth_setup(config) + .await + .expect("Test eth config setup failed."); + let test_hadness = HarnessEthClient::build(&config).await; + (test_hadness, config, anvil) + } +} + +pub struct HarnessMvtClientFramework { + pub movement_client: MovementClientFramework, + ///The Apotos Rest Client + pub rest_client: Client, + ///The Apotos Rest Client + pub faucet_client: Arc>, +} + +impl HarnessMvtClientFramework { + pub fn gen_aptos_account() -> Vec { + let mut rng = ::rand::rngs::StdRng::from_seed([3u8; 32]); + let movement_recipient = LocalAccount::generate(&mut rng); + movement_recipient.public_key().to_bytes().to_vec() + } + + pub async fn build(config: &Config) -> Self { + let movement_client = MovementClientFramework::new(&config.movement) + .await + .expect("Failed to create MovementClient"); + + let node_connection_url = Url::from_str(&config.movement.mvt_rpc_connection_url()) + .expect("Bad movement rpc url in config"); + let rest_client = Client::new(node_connection_url.clone()); + + let faucet_url = Url::from_str(&config.movement.mvt_faucet_connection_url()) + .expect("Bad movement faucet url in config"); + let faucet_client = Arc::new(RwLock::new(FaucetClient::new( + faucet_url.clone(), + node_connection_url.clone(), + ))); + + HarnessMvtClientFramework { movement_client, rest_client, faucet_client } + } +} + +pub struct TestHarnessFramework; +impl TestHarnessFramework { + pub async fn read_bridge_config() -> Result { + let mut dot_movement = dot_movement::DotMovement::try_from_env()?; + let pathbuff = bridge_config::get_config_path(&dot_movement); + dot_movement.set_path(pathbuff); + let config_file = dot_movement.try_get_or_create_config_file().await?; + + // get a matching godfig object + let godfig: Godfig = Godfig::new(ConfigFile::new(config_file), vec![]); + let bridge_config: Config = godfig.try_wait_for_ready().await?; + Ok(bridge_config) + } + + pub async fn new_with_eth_and_movement( + ) -> Result<(HarnessEthClient, HarnessMvtClientFramework, Config), anyhow::Error> { + let config = TestHarnessFramework::read_bridge_config().await?; + + let test_mvt_harness = HarnessMvtClientFramework::build(&config).await; + let test_eth_harness = HarnessEthClient::build(&config).await; + + Ok((test_eth_harness, test_mvt_harness, config)) + } + + pub async fn new_with_movement( + config: Config, + ) -> (HarnessMvtClientFramework, Config, tokio::process::Child) { + let (config, movement_process) = bridge_setup::test_mvt_setup(config) + .await + .expect("Failed to setup Movement config"); + + let test_harness = HarnessMvtClientFramework::build(&config).await; + + (test_harness, config, movement_process) + } + pub async fn new_with_suzuka( config: Config, - ) -> (HarnessMvtClient, Config) { - let test_harness = HarnessMvtClient::build(&config).await; + ) -> (HarnessMvtClientFramework, Config) { + let test_harness = HarnessMvtClientFramework::build(&config).await; (test_harness, config) } @@ -227,7 +307,7 @@ impl TestHarness { let (config, anvil) = bridge_setup::test_eth_setup(config) .await .expect("Test eth config setup failed."); - let test_hadness = HarnessEthClient::build(&config).await; - (test_hadness, config, anvil) + let test_harness = HarnessEthClient::build(&config).await; + (test_harness, config, anvil) } } diff --git a/protocol-units/bridge/integration-tests/src/utils.rs b/protocol-units/bridge/integration-tests/src/utils.rs index 817e7a657..1fcf27b0b 100644 --- a/protocol-units/bridge/integration-tests/src/utils.rs +++ b/protocol-units/bridge/integration-tests/src/utils.rs @@ -1,12 +1,12 @@ #![allow(dead_code)] -use crate::HarnessMvtClient; +use crate::{HarnessMvtClient, HarnessMvtClientFramework}; use alloy::hex; use anyhow::Result; use aptos_sdk::{ coin_client::CoinClient, rest_client::Transaction, types::account_address::AccountAddress, }; use bridge_service::chains::bridge_contracts::{BridgeContract, BridgeContractError}; -use bridge_service::chains::movement::client::MovementClient; +use bridge_service::chains::movement::{client::MovementClient, client_framework::MovementClientFramework}; use bridge_service::chains::movement::utils::{ self as movement_utils, MovementAddress, MovementHash, }; @@ -73,6 +73,50 @@ pub async fn extract_bridge_transfer_id( Err(anyhow::Error::msg("No matching transaction found")) } +pub async fn extract_bridge_transfer_id_framework( + movement_client: &mut MovementClientFramework, +) -> Result<[u8; 32], anyhow::Error> { + let sender_address = movement_client.signer().address(); + let sequence_number = 0; // Modify as needed + let rest_client = movement_client.rest_client(); + + let transactions = rest_client + .get_account_transactions(sender_address, Some(sequence_number), Some(20)) + .await + .map_err(|e| anyhow::Error::msg(format!("Failed to get transactions: {:?}", e)))?; + + if let Some(transaction) = transactions.into_inner().last() { + if let Transaction::UserTransaction(user_txn) = transaction { + for event in &user_txn.events { + if let aptos_sdk::rest_client::aptos_api_types::MoveType::Struct(struct_tag) = + &event.typ + { + match struct_tag.name.as_str() { + "BridgeTransferInitiatedEvent" | "BridgeTransferLockedEvent" => { + if let Some(bridge_transfer_id) = + event.data.get("bridge_transfer_id").and_then(|v| v.as_str()) + { + let hex_str = bridge_transfer_id.trim_start_matches("0x"); + let decoded_vec = hex::decode(hex_str).map_err(|_| { + anyhow::Error::msg("Failed to decode hex string into Vec") + })?; + return decoded_vec.try_into().map_err(|_| { + anyhow::Error::msg( + "Failed to convert decoded Vec to [u8; 32]", + ) + }); + } + } + _ => {} + } + } + } + } + } + Err(anyhow::Error::msg("No matching transaction found")) +} + + pub async fn fund_and_check_balance( movement_harness: &mut HarnessMvtClient, expected_balance: u64, @@ -94,7 +138,28 @@ pub async fn fund_and_check_balance( Ok(()) } -pub async fn publish_for_test(movement_client: &mut MovementClient) { +pub async fn fund_and_check_balance_framework( + movement_harness: &mut HarnessMvtClientFramework, + expected_balance: u64, +) -> Result<()> { + let movement_client_signer = movement_harness.movement_client.signer(); + let rest_client = movement_harness.rest_client.clone(); + let coin_client = CoinClient::new(&rest_client); + let faucet_client = movement_harness.faucet_client.write().unwrap(); + faucet_client.fund(movement_client_signer.address(), expected_balance).await?; + + let balance = coin_client.get_account_balance(&movement_client_signer.address()).await?; + assert!( + balance >= expected_balance, + "Expected Movement Client to have at least {}, but found {}", + expected_balance, + balance + ); + + Ok(()) +} + +pub async fn publish_for_test(movement_client: &mut MovementClientFramework) { let _ = movement_client.publish_for_test(); } @@ -153,3 +218,59 @@ pub async fn initiate_bridge_transfer_helper( Ok(()) } + +pub async fn initiate_bridge_transfer_helper_framework( + movement_client: &mut MovementClientFramework, + initiator_address: AccountAddress, + recipient_address: Vec, + hash_lock: [u8; 32], + amount: u64, + timelock_modify: bool, +) -> Result<(), BridgeContractError> { + // Publish for test + + if timelock_modify { + // Set the timelock to 1 second for testing + movement_client.initiator_set_timelock(1).await.expect("Failed to set timelock"); + } + + // Mint MovETH to the initiator's address + let mint_amount = 200 * 100_000_000; // Assuming 8 decimals for MovETH + + let mint_args = vec![ + movement_utils::serialize_address_initiator(&movement_client.signer().address())?, // Mint to initiator's address + movement_utils::serialize_u64_initiator(&mint_amount)?, // Amount to mint (200 MovETH) + ]; + + let mint_payload = movement_utils::make_aptos_payload( + movement_client.native_address, // Address where moveth module is published + "moveth", + "mint", + Vec::new(), + mint_args, + ); + + // Send transaction to mint MovETH + movement_utils::send_and_confirm_aptos_transaction( + &movement_client.rest_client(), + movement_client.signer(), + mint_payload, + ) + .await + .map_err(|_| BridgeContractError::MintError)?; + + debug!("Successfully minted 200 MovETH to the initiator"); + + // Initiate the bridge transfer + movement_client + .initiate_bridge_transfer( + BridgeAddress(MovementAddress(initiator_address)), + BridgeAddress(recipient_address), + HashLock(MovementHash(hash_lock).0), + Amount(AssetType::Moveth(amount)), + ) + .await + .expect("Failed to initiate bridge transfer"); + + Ok(()) +} diff --git a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs index 5ed56f8c6..518e81508 100644 --- a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs +++ b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs @@ -2,7 +2,7 @@ use anyhow::Result; use bridge_config::Config; use bridge_integration_tests::utils; use bridge_integration_tests::utils as test_utils; -use bridge_integration_tests::{MovementToEthCallArgs, TestHarness}; +use bridge_integration_tests::{MovementToEthCallArgs, TestHarness, TestHarnessFramework}; use bridge_service::{ chains::{bridge_contracts::BridgeContract, movement::utils::MovementHash}, types::{BridgeTransferId, HashLockPreImage}, @@ -39,14 +39,14 @@ async fn test_movement_client_initiate_transfer() -> Result<(), anyhow::Error> { let config:Config = Config::suzuka(); let (mut mvt_client_harness, _config) = - TestHarness::new_with_suzuka(config).await; + TestHarnessFramework::new_with_suzuka(config).await; let args = MovementToEthCallArgs::default(); let test_result = async { let sender_address = mvt_client_harness.movement_client.signer().address(); - test_utils::fund_and_check_balance(&mut mvt_client_harness, 100_000_000_000).await?; - test_utils::initiate_bridge_transfer_helper( + test_utils::fund_and_check_balance_framework(&mut mvt_client_harness, 100_000_000_000).await?; + test_utils::initiate_bridge_transfer_helper_framework( &mut mvt_client_harness.movement_client, args.initiator.0, args.recipient.clone(), @@ -58,7 +58,7 @@ async fn test_movement_client_initiate_transfer() -> Result<(), anyhow::Error> { .expect("Failed to initiate bridge transfer"); let bridge_transfer_id: [u8; 32] = - test_utils::extract_bridge_transfer_id(&mut mvt_client_harness.movement_client).await?; + test_utils::extract_bridge_transfer_id_framework(&mut mvt_client_harness.movement_client).await?; info!("Bridge transfer id: {:?}", bridge_transfer_id); let details = BridgeContract::get_bridge_transfer_details_initiator( &mut mvt_client_harness.movement_client, diff --git a/protocol-units/bridge/service/src/chains/movement/client_framework.rs b/protocol-units/bridge/service/src/chains/movement/client_framework.rs index 27209ecfe..e561c5ea3 100644 --- a/protocol-units/bridge/service/src/chains/movement/client_framework.rs +++ b/protocol-units/bridge/service/src/chains/movement/client_framework.rs @@ -82,8 +82,8 @@ impl MovementClientFramework { let payload = utils::make_aptos_payload( FRAMEWORK_ADDRESS, - "atomic_bridge_initiator", - "set_time_lock_duration", + "atomic_bridge_configuration", + "set_initiator_time_lock_duration", Vec::new(), args, ); @@ -103,8 +103,8 @@ impl MovementClientFramework { let payload = utils::make_aptos_payload( FRAMEWORK_ADDRESS, - "atomic_bridge_counterparty", - "set_time_lock_duration", + "atomic_bridge_configuration", + "set_counterparty_time_lock_duration", Vec::new(), args, ); diff --git a/protocol-units/bridge/service/src/chains/movement/mod.rs b/protocol-units/bridge/service/src/chains/movement/mod.rs index a84b043da..52a8ac4a5 100644 --- a/protocol-units/bridge/service/src/chains/movement/mod.rs +++ b/protocol-units/bridge/service/src/chains/movement/mod.rs @@ -1,3 +1,4 @@ pub mod client; +pub mod client_framework; pub mod event_monitoring; pub mod utils; From b355adf69bf5e3ff31cfb58bf9095f3f9f60ba3a Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Thu, 10 Oct 2024 06:58:58 -0400 Subject: [PATCH 04/35] feat: add scripts for setting time lock durations --- .../scripts/set_counterparty_time_lock_duration.move | 9 +++++++++ .../scripts/set_initiator_time_lock_duration.move | 9 +++++++++ 2 files changed, 18 insertions(+) create mode 100644 protocol-units/bridge/move-modules/scripts/set_counterparty_time_lock_duration.move create mode 100644 protocol-units/bridge/move-modules/scripts/set_initiator_time_lock_duration.move diff --git a/protocol-units/bridge/move-modules/scripts/set_counterparty_time_lock_duration.move b/protocol-units/bridge/move-modules/scripts/set_counterparty_time_lock_duration.move new file mode 100644 index 000000000..84bbecc64 --- /dev/null +++ b/protocol-units/bridge/move-modules/scripts/set_counterparty_time_lock_duration.move @@ -0,0 +1,9 @@ +script { + use aptos_framework::aptos_governance; + use aptos_framework::atomic_bridge_configuration; + + fun set_counterparty_time_lock_duration(core_resources: &signer, new_timelock: u64) { + let framework_signer = aptos_governance::get_signer_testnet_only(core_resources, @aptos_framework); + atomic_bridge_configuration::set_counterparty_time_lock_duration(&framework_signer, new_timelock); + } +} \ No newline at end of file diff --git a/protocol-units/bridge/move-modules/scripts/set_initiator_time_lock_duration.move b/protocol-units/bridge/move-modules/scripts/set_initiator_time_lock_duration.move new file mode 100644 index 000000000..54bc0d20e --- /dev/null +++ b/protocol-units/bridge/move-modules/scripts/set_initiator_time_lock_duration.move @@ -0,0 +1,9 @@ +script { + use aptos_framework::aptos_governance; + use aptos_framework::atomic_bridge_configuration; + + fun set_initiator_time_lock_duration(core_resources: &signer, new_timelock: u64) { + let framework_signer = aptos_governance::get_signer_testnet_only(core_resources, @aptos_framework); + atomic_bridge_configuration::set_initiator_time_lock_duration(&framework_signer, new_timelock); + } +} \ No newline at end of file From 4cf8592a3a5b831c716e19afae85a2485890135e Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Thu, 10 Oct 2024 07:34:13 -0400 Subject: [PATCH 05/35] fix: use features::on_new_epoch in enable_bridge_feature script --- .../move-modules/scripts/enable_bridge_feature.move | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/protocol-units/bridge/move-modules/scripts/enable_bridge_feature.move b/protocol-units/bridge/move-modules/scripts/enable_bridge_feature.move index aa9295a4f..13c73759f 100644 --- a/protocol-units/bridge/move-modules/scripts/enable_bridge_feature.move +++ b/protocol-units/bridge/move-modules/scripts/enable_bridge_feature.move @@ -13,7 +13,11 @@ script { let disabled_blob: vector = vector[]; - features::change_feature_flags_for_next_epoch(framework_signer, enabled_blob, disabled_blob); - aptos_governance::reconfigure(framework_signer); + features::change_feature_flags_for_next_epoch( + framework_signer, + enabled_blob, + disabled_blob + ); + features::on_new_epoch(framework_signer); } } \ No newline at end of file From 1fff1974e5d581c8548bd8b9fe4c0217f108c787 Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Thu, 10 Oct 2024 08:10:44 -0400 Subject: [PATCH 06/35] fix: valid eip55 address for recipient, a couple other fixes --- .../bridge/integration-tests/src/lib.rs | 2 +- .../bridge/integration-tests/src/utils.rs | 33 +++---------------- .../scripts/enable_bridge_feature.move | 6 ++-- 3 files changed, 7 insertions(+), 34 deletions(-) diff --git a/protocol-units/bridge/integration-tests/src/lib.rs b/protocol-units/bridge/integration-tests/src/lib.rs index 08f49a935..1caf15232 100644 --- a/protocol-units/bridge/integration-tests/src/lib.rs +++ b/protocol-units/bridge/integration-tests/src/lib.rs @@ -65,7 +65,7 @@ impl Default for MovementToEthCallArgs { Self { initiator: MovementAddress(AccountAddress::new(*b"0x00000000000000000000000000face")), - recipient: [1; 20].to_vec(), + recipient: b"32Be343B94f860124dC4fEe278FDCBD38C102D88".to_vec(), bridge_transfer_id: EthHash(*b"00000000000000000000000transfer1"), hash_lock: EthHash(hash_lock), time_lock: 3600, diff --git a/protocol-units/bridge/integration-tests/src/utils.rs b/protocol-units/bridge/integration-tests/src/utils.rs index 1fcf27b0b..d450d265b 100644 --- a/protocol-units/bridge/integration-tests/src/utils.rs +++ b/protocol-units/bridge/integration-tests/src/utils.rs @@ -229,37 +229,12 @@ pub async fn initiate_bridge_transfer_helper_framework( ) -> Result<(), BridgeContractError> { // Publish for test - if timelock_modify { - // Set the timelock to 1 second for testing - movement_client.initiator_set_timelock(1).await.expect("Failed to set timelock"); - } + //if timelock_modify { + // // Set the timelock to 1 second for testing + // movement_client.initiator_set_timelock(1).await.expect("Failed to set timelock"); + //} // Mint MovETH to the initiator's address - let mint_amount = 200 * 100_000_000; // Assuming 8 decimals for MovETH - - let mint_args = vec![ - movement_utils::serialize_address_initiator(&movement_client.signer().address())?, // Mint to initiator's address - movement_utils::serialize_u64_initiator(&mint_amount)?, // Amount to mint (200 MovETH) - ]; - - let mint_payload = movement_utils::make_aptos_payload( - movement_client.native_address, // Address where moveth module is published - "moveth", - "mint", - Vec::new(), - mint_args, - ); - - // Send transaction to mint MovETH - movement_utils::send_and_confirm_aptos_transaction( - &movement_client.rest_client(), - movement_client.signer(), - mint_payload, - ) - .await - .map_err(|_| BridgeContractError::MintError)?; - - debug!("Successfully minted 200 MovETH to the initiator"); // Initiate the bridge transfer movement_client diff --git a/protocol-units/bridge/move-modules/scripts/enable_bridge_feature.move b/protocol-units/bridge/move-modules/scripts/enable_bridge_feature.move index 13c73759f..318e98062 100644 --- a/protocol-units/bridge/move-modules/scripts/enable_bridge_feature.move +++ b/protocol-units/bridge/move-modules/scripts/enable_bridge_feature.move @@ -3,9 +3,7 @@ script { use std::features; fun enable_bridge_feature(core_resources: &signer) { - let core_signer = aptos_governance::get_signer_testnet_only(core_resources, @0x1); - - let framework_signer = &core_signer; + let framework_signer = aptos_governance::get_signer_testnet_only(core_resources, @0x1); let enabled_blob: vector = vector[ features::get_atomic_bridge_feature() @@ -18,6 +16,6 @@ script { enabled_blob, disabled_blob ); - features::on_new_epoch(framework_signer); + features::on_new_epoch(&framework_signer); } } \ No newline at end of file From a1ab57702012a5621d8187481950beeeaace16f7 Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Thu, 10 Oct 2024 09:38:10 -0400 Subject: [PATCH 07/35] feat: successfully calling lock in client tests --- .../bridge/integration-tests/src/lib.rs | 4 +- .../tests/client_l1move_l2move.rs | 55 +++++++------------ .../scripts/enable_bridge_feature.move | 2 +- .../src/chains/movement/client_framework.rs | 2 +- 4 files changed, 24 insertions(+), 39 deletions(-) diff --git a/protocol-units/bridge/integration-tests/src/lib.rs b/protocol-units/bridge/integration-tests/src/lib.rs index 1caf15232..d95a19d70 100644 --- a/protocol-units/bridge/integration-tests/src/lib.rs +++ b/protocol-units/bridge/integration-tests/src/lib.rs @@ -47,7 +47,7 @@ pub struct MovementToEthCallArgs { impl Default for EthToMovementCallArgs { fn default() -> Self { Self { - initiator: b"0x123".to_vec(), + initiator: b"32Be343B94f860124dC4fEe278FDCBD38C102D88".to_vec(), recipient: MovementAddress(AccountAddress::new(*b"0x00000000000000000000000000face")), bridge_transfer_id: MovementHash(*b"00000000000000000000000transfer1"), hash_lock: MovementHash(*keccak256(b"secret")), @@ -64,7 +64,7 @@ impl Default for MovementToEthCallArgs { let hash_lock = *keccak256(&serialized_preimage); Self { - initiator: MovementAddress(AccountAddress::new(*b"0x00000000000000000000000000face")), + initiator: MovementAddress(AccountAddress::new(*b"0x000000000000000000000000A55018")), recipient: b"32Be343B94f860124dC4fEe278FDCBD38C102D88".to_vec(), bridge_transfer_id: EthHash(*b"00000000000000000000000transfer1"), hash_lock: EthHash(hash_lock), diff --git a/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs b/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs index 3566e4bd6..a4d0307f7 100644 --- a/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs +++ b/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs @@ -8,7 +8,7 @@ use bridge_config::Config; use bridge_integration_tests::utils as test_utils; use bridge_integration_tests::EthToMovementCallArgs; use bridge_integration_tests::HarnessMvtClient; -use bridge_integration_tests::TestHarness; +use bridge_integration_tests::{TestHarness, TestHarnessFramework}; use bridge_service::chains::ethereum::types::EthAddress; use bridge_service::chains::{ bridge_contracts::BridgeContract, ethereum::types::EthHash, movement::utils::MovementHash, @@ -22,9 +22,9 @@ use tracing::info; #[tokio::test] async fn test_movement_client_build_and_fund_accounts() -> Result<(), anyhow::Error> { - let config = Config::default(); - let (mvt_client_harness, _config, mut mvt_process) = - TestHarness::new_with_movement(config).await; + let config = Config::suzuka(); + let (mvt_client_harness, _config) = + TestHarnessFramework::new_with_suzuka(config).await; // let rest_client = mvt_client_harness.rest_client; @@ -41,10 +41,6 @@ async fn test_movement_client_build_and_fund_accounts() -> Result<(), anyhow::Er balance ); - if let Err(e) = mvt_process.kill().await { - eprintln!("Failed to kill child process: {:?}", e); - } - Ok(()) } @@ -52,12 +48,9 @@ async fn test_movement_client_build_and_fund_accounts() -> Result<(), anyhow::Er async fn test_movement_client_should_publish_package() -> Result<(), anyhow::Error> { let _ = tracing_subscriber::fmt().try_init(); - let config = Config::default(); - let (_mvt_client_harness, _config, mut mvt_process) = - TestHarness::new_with_movement(config).await; - if let Err(e) = mvt_process.kill().await { - eprintln!("Failed to kill child process: {:?}", e); - } + let config = Config::suzuka(); + let (_mvt_client_harness, _config) = + TestHarnessFramework::new_with_suzuka(config).await; Ok(()) } @@ -66,9 +59,9 @@ async fn test_movement_client_should_successfully_call_lock_and_complete( ) -> Result<(), anyhow::Error> { let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); - let config = Config::default(); - let (mut mvt_client_harness, _config, mut mvt_process) = - TestHarness::new_with_movement(config).await; + let config = Config::suzuka(); + let (mut mvt_client_harness, _config) = + TestHarnessFramework::new_with_suzuka(config).await; let args = EthToMovementCallArgs::default(); @@ -101,7 +94,7 @@ async fn test_movement_client_should_successfully_call_lock_and_complete( .expect("Failed to lock bridge transfer"); let bridge_transfer_id: [u8; 32] = - test_utils::extract_bridge_transfer_id(&mut mvt_client_harness.movement_client).await?; + test_utils::extract_bridge_transfer_id_framework(&mut mvt_client_harness.movement_client).await?; info!("Bridge transfer id: {:?}", bridge_transfer_id); let details = BridgeContract::get_bridge_transfer_details_counterparty( &mut mvt_client_harness.movement_client, @@ -157,10 +150,6 @@ async fn test_movement_client_should_successfully_call_lock_and_complete( } .await; - if let Err(e) = mvt_process.kill().await { - eprintln!("Failed to kill child process: {:?}", e); - } - test_result } @@ -169,9 +158,9 @@ async fn test_movement_client_should_successfully_call_lock_and_abort() -> Resul { let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); - let config = Config::default(); - let (mut mvt_client_harness, _config, mut mvt_process) = - TestHarness::new_with_movement(config).await; + let config = Config::suzuka(); + let (mut mvt_client_harness, _config) = + TestHarnessFramework::new_with_suzuka(config).await; let args = EthToMovementCallArgs::default(); @@ -192,11 +181,11 @@ async fn test_movement_client_should_successfully_call_lock_and_abort() -> Resul ); // Set the timelock to 1 second for testing - mvt_client_harness - .movement_client - .counterparty_set_timelock(1) - .await - .expect("Failed to set timelock"); + //mvt_client_harness + // .movement_client + // .counterparty_set_timelock(1) + // .await + // .expect("Failed to set timelock"); mvt_client_harness .movement_client @@ -211,7 +200,7 @@ async fn test_movement_client_should_successfully_call_lock_and_abort() -> Resul .expect("Failed to lock bridge transfer"); let bridge_transfer_id: [u8; 32] = - test_utils::extract_bridge_transfer_id(&mut mvt_client_harness.movement_client).await?; + test_utils::extract_bridge_transfer_id_framework(&mut mvt_client_harness.movement_client).await?; info!("Bridge transfer id: {:?}", bridge_transfer_id); let details = BridgeContract::get_bridge_transfer_details_counterparty( &mut mvt_client_harness.movement_client, @@ -262,10 +251,6 @@ async fn test_movement_client_should_successfully_call_lock_and_abort() -> Resul } .await; - if let Err(e) = mvt_process.kill().await { - eprintln!("Failed to kill child process: {:?}", e); - } - test_result } diff --git a/protocol-units/bridge/move-modules/scripts/enable_bridge_feature.move b/protocol-units/bridge/move-modules/scripts/enable_bridge_feature.move index 318e98062..03651297a 100644 --- a/protocol-units/bridge/move-modules/scripts/enable_bridge_feature.move +++ b/protocol-units/bridge/move-modules/scripts/enable_bridge_feature.move @@ -12,7 +12,7 @@ script { let disabled_blob: vector = vector[]; features::change_feature_flags_for_next_epoch( - framework_signer, + &framework_signer, enabled_blob, disabled_blob ); diff --git a/protocol-units/bridge/service/src/chains/movement/client_framework.rs b/protocol-units/bridge/service/src/chains/movement/client_framework.rs index e561c5ea3..a0bc4ab9d 100644 --- a/protocol-units/bridge/service/src/chains/movement/client_framework.rs +++ b/protocol-units/bridge/service/src/chains/movement/client_framework.rs @@ -262,7 +262,7 @@ impl BridgeContract for MovementClientFramework { let payload = utils::make_aptos_payload( FRAMEWORK_ADDRESS, COUNTERPARTY_MODULE_NAME, - "lock_bridge_transfer", + "lock_bridge_transfer_assets", Vec::new(), args, ); From 6397c33fb6a70de83d2fb824e957d9fa4ef55224 Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Fri, 11 Oct 2024 05:49:26 -0400 Subject: [PATCH 08/35] feat: add store_mint_burn_caps.move script --- .../move-modules/scripts/store_mint_burn_caps.move | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 protocol-units/bridge/move-modules/scripts/store_mint_burn_caps.move diff --git a/protocol-units/bridge/move-modules/scripts/store_mint_burn_caps.move b/protocol-units/bridge/move-modules/scripts/store_mint_burn_caps.move new file mode 100644 index 000000000..571beee5a --- /dev/null +++ b/protocol-units/bridge/move-modules/scripts/store_mint_burn_caps.move @@ -0,0 +1,13 @@ +script { + use aptos_framework::aptos_governance; + use aptos_framework::transaction_fee; + use aptos_framework::atomic_bridge; + + fun store_mint_burn_caps(core_resources: &signer) { + let framework_signer = aptos_governance::get_signer_testnet_only(core_resources, @aptos_framework); + let (mint, burn) = transaction_fee::copy_capabilities_for_bridge(&framework_signer); + + atomic_bridge::store_aptos_coin_mint_cap(&framework_signer, mint); + atomic_bridge::store_aptos_coin_burn_cap(&framework_signer, burn); + } +} \ No newline at end of file From 1212d27f68a26084310ab1a38d7e405451de6eb7 Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Fri, 11 Oct 2024 07:50:10 -0400 Subject: [PATCH 09/35] fix: prepping to merge in new changes from main --- .../bridge/integration-tests/src/utils.rs | 83 +++++++++++++++++++ .../tests/client_l2move_l1move.rs | 50 ++++++----- .../tests/client_movement_eth.rs | 2 + 3 files changed, 115 insertions(+), 20 deletions(-) diff --git a/protocol-units/bridge/integration-tests/src/utils.rs b/protocol-units/bridge/integration-tests/src/utils.rs index d450d265b..78318f380 100644 --- a/protocol-units/bridge/integration-tests/src/utils.rs +++ b/protocol-units/bridge/integration-tests/src/utils.rs @@ -73,6 +73,89 @@ pub async fn extract_bridge_transfer_id( Err(anyhow::Error::msg("No matching transaction found")) } +pub async fn extract_bridge_transfer_details_framework( + movement_client: &mut MovementClientFramework, +) -> Result<(Vec, Vec, Vec, u64, Vec, u64), anyhow::Error> { + let sender_address = movement_client.signer().address(); + let sequence_number = 0; // Modify as needed + let rest_client = movement_client.rest_client(); + + let transactions = rest_client + .get_account_transactions(sender_address, Some(sequence_number), Some(20)) + .await + .map_err(|e| anyhow::Error::msg(format!("Failed to get transactions: {:?}", e)))?; + + if let Some(transaction) = transactions.into_inner().last() { + if let Transaction::UserTransaction(user_txn) = transaction { + for event in &user_txn.events { + if let aptos_sdk::rest_client::aptos_api_types::MoveType::Struct(struct_tag) = + &event.typ + { + match struct_tag.name.as_str() { + "BridgeTransferInitiatedEvent" | "BridgeTransferLockedEvent" => { + let bridge_transfer_id = event + .data.get("bridge_transfer_id") + .and_then(|v| v.as_str()) + .ok_or_else(|| anyhow::Error::msg("bridge_transfer_id missing"))?; + + let initiator = event + .data.get("initiator") + .and_then(|v| v.as_str()) + .ok_or_else(|| anyhow::Error::msg("initiator missing"))?; + + let recipient = event + .data.get("recipient") + .and_then(|v| v.as_str()) + .ok_or_else(|| anyhow::Error::msg("recipient missing"))?; + + let amount = event + .data.get("amount") + .and_then(|v| v.as_u64()) + .ok_or_else(|| anyhow::Error::msg("amount missing"))?; + + let hash_lock = event + .data.get("hash_lock") + .and_then(|v| v.as_str()) + .ok_or_else(|| anyhow::Error::msg("hash_lock missing"))?; + + let time_lock = event + .data.get("time_lock") + .and_then(|v| v.as_u64()) + .ok_or_else(|| anyhow::Error::msg("time_lock missing"))?; + + // Decode fields + let bridge_transfer_id_decoded = hex::decode(bridge_transfer_id.trim_start_matches("0x")).map_err(|_| { + anyhow::Error::msg("Failed to decode bridge_transfer_id") + })?; + let initiator_decoded = hex::decode(initiator.trim_start_matches("0x")).map_err(|_| { + anyhow::Error::msg("Failed to decode initiator") + })?; + let recipient_decoded = hex::decode(recipient.trim_start_matches("0x")).map_err(|_| { + anyhow::Error::msg("Failed to decode recipient") + })?; + let hash_lock_decoded = hex::decode(hash_lock.trim_start_matches("0x")).map_err(|_| { + anyhow::Error::msg("Failed to decode hash_lock") + })?; + + return Ok(( + bridge_transfer_id_decoded, + initiator_decoded, + recipient_decoded, + amount, + hash_lock_decoded, + time_lock, + )); + } + _ => {} + } + } + } + } + } + + Err(anyhow::Error::msg("No relevant bridge transfer event found")) +} + pub async fn extract_bridge_transfer_id_framework( movement_client: &mut MovementClientFramework, ) -> Result<[u8; 32], anyhow::Error> { diff --git a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs index 518e81508..94533202a 100644 --- a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs +++ b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs @@ -3,8 +3,9 @@ use bridge_config::Config; use bridge_integration_tests::utils; use bridge_integration_tests::utils as test_utils; use bridge_integration_tests::{MovementToEthCallArgs, TestHarness, TestHarnessFramework}; +use bridge_service::chains::bridge_contracts::BridgeContractEvent; use bridge_service::{ - chains::{bridge_contracts::BridgeContract, movement::utils::MovementHash}, + chains::{bridge_contracts::BridgeContract, movement::{utils::MovementHash, event_monitoring::MovementMonitoring}}, types::{BridgeTransferId, HashLockPreImage}, }; use tokio::time::{sleep, Duration}; @@ -57,26 +58,35 @@ async fn test_movement_client_initiate_transfer() -> Result<(), anyhow::Error> { .await .expect("Failed to initiate bridge transfer"); - let bridge_transfer_id: [u8; 32] = - test_utils::extract_bridge_transfer_id_framework(&mut mvt_client_harness.movement_client).await?; + //Wait for the tx to be executed + //tracing::info!("Wait for the MVT initiated event."); + //let mut mvt_monitoring = MovementMonitoring::build(&config.movement).await.unwrap(); + //let event = + // tokio::time::timeout(std::time::Duration::from_secs(30), mvt_monitoring.next()).await?; + //let bridge_tranfer_id = if let Some(Ok(BridgeContractEvent::Initiated(detail))) = event { + // detail.bridge_transfer_id + //} else { + // panic!("Not a Locked event: {event:?}"); + //}; + + let (bridge_transfer_id, initiator, recipient, amount, hash_lock, time_lock) = + test_utils::extract_bridge_transfer_details_framework(&mut mvt_client_harness.movement_client).await?; info!("Bridge transfer id: {:?}", bridge_transfer_id); - let details = BridgeContract::get_bridge_transfer_details_initiator( - &mut mvt_client_harness.movement_client, - BridgeTransferId(MovementHash(bridge_transfer_id).0), - ) - .await - .expect("Failed to get bridge transfer details") - .expect("Expected to find bridge transfer details, but got None"); - - test_utils::assert_bridge_transfer_details( - &details, - MovementHash(bridge_transfer_id).0, - MovementHash(args.hash_lock.0).0, - sender_address, - args.recipient.clone(), - args.amount, - 1, - ); + info!("Bridge transfer initiator: {:?}", initiator); + info!("Bridge transfer recipient: {:?}", recipient); + info!("Bridge transfer amount: {:?}", amount); + info!("Bridge transfer initiator: {:?}", hash_lock); + info!("Bridge transfer recipient: {:?}", time_lock); + + //test_utils::assert_bridge_transfer_details( + // &details, + // MovementHash(bridge_transfer_id).0, + // MovementHash(args.hash_lock.0).0, + // sender_address, + // args.recipient.clone(), + // args.amount, + // 1, + //); Ok(()) } diff --git a/protocol-units/bridge/integration-tests/tests/client_movement_eth.rs b/protocol-units/bridge/integration-tests/tests/client_movement_eth.rs index 3b6363952..67103c6a6 100644 --- a/protocol-units/bridge/integration-tests/tests/client_movement_eth.rs +++ b/protocol-units/bridge/integration-tests/tests/client_movement_eth.rs @@ -1,3 +1,5 @@ +mod client_l2move_l1move; + use anyhow::Result; use bridge_config::Config; use bridge_integration_tests::utils; From a9450071b47a0dad01cfe21a19406b57e5f4e6c7 Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Fri, 11 Oct 2024 08:45:08 -0400 Subject: [PATCH 10/35] test: error OnChainError at get_account_events decoding response body --- .../bridge/config/src/common/movement.rs | 2 +- .../tests/client_l2move_l1move.rs | 34 ++++++++----------- .../src/chains/movement/event_monitoring.rs | 1 + 3 files changed, 16 insertions(+), 21 deletions(-) diff --git a/protocol-units/bridge/config/src/common/movement.rs b/protocol-units/bridge/config/src/common/movement.rs index bee5b2b77..d998f207a 100644 --- a/protocol-units/bridge/config/src/common/movement.rs +++ b/protocol-units/bridge/config/src/common/movement.rs @@ -114,7 +114,7 @@ impl MovementConfig { pub fn suzuka() -> Self { MovementConfig { movement_signer_key: Ed25519PrivateKey::from_encoded_string("0x0000000000000000000000000000000000000000000000000000000000000001").unwrap(), - movement_native_address: "0xA550c18".to_string(), + movement_native_address: "0xf90391c81027f03cdea491ed8b36ffaced26b6df208a9b569e5baf2590eb9b16".to_string(), mvt_rpc_connection_protocol: default_mvt_rpc_connection_protocol(), mvt_rpc_connection_hostname: default_mvt_rpc_connection_hostname(), mvt_rpc_connection_port: 30731, diff --git a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs index 94533202a..b1434447f 100644 --- a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs +++ b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs @@ -8,6 +8,7 @@ use bridge_service::{ chains::{bridge_contracts::BridgeContract, movement::{utils::MovementHash, event_monitoring::MovementMonitoring}}, types::{BridgeTransferId, HashLockPreImage}, }; +use futures::StreamExt; use tokio::time::{sleep, Duration}; use tokio::{self}; use tracing::info; @@ -39,7 +40,7 @@ async fn test_movement_client_initiate_transfer() -> Result<(), anyhow::Error> { let config:Config = Config::suzuka(); - let (mut mvt_client_harness, _config) = + let (mut mvt_client_harness, config) = TestHarnessFramework::new_with_suzuka(config).await; let args = MovementToEthCallArgs::default(); @@ -58,26 +59,19 @@ async fn test_movement_client_initiate_transfer() -> Result<(), anyhow::Error> { .await .expect("Failed to initiate bridge transfer"); - //Wait for the tx to be executed - //tracing::info!("Wait for the MVT initiated event."); - //let mut mvt_monitoring = MovementMonitoring::build(&config.movement).await.unwrap(); - //let event = - // tokio::time::timeout(std::time::Duration::from_secs(30), mvt_monitoring.next()).await?; - //let bridge_tranfer_id = if let Some(Ok(BridgeContractEvent::Initiated(detail))) = event { - // detail.bridge_transfer_id - //} else { - // panic!("Not a Locked event: {event:?}"); - //}; - - let (bridge_transfer_id, initiator, recipient, amount, hash_lock, time_lock) = - test_utils::extract_bridge_transfer_details_framework(&mut mvt_client_harness.movement_client).await?; - info!("Bridge transfer id: {:?}", bridge_transfer_id); - info!("Bridge transfer initiator: {:?}", initiator); - info!("Bridge transfer recipient: {:?}", recipient); - info!("Bridge transfer amount: {:?}", amount); - info!("Bridge transfer initiator: {:?}", hash_lock); - info!("Bridge transfer recipient: {:?}", time_lock); + //Wait for the tx to be executed + tracing::info!("Wait for the MVT initiated event."); + let mut mvt_monitoring = MovementMonitoring::build(&config.movement).await.unwrap(); + let event = + tokio::time::timeout(std::time::Duration::from_secs(30), mvt_monitoring.next()).await?; + let bridge_transfer_id = if let Some(Ok(BridgeContractEvent::Initiated(detail))) = event { + detail.bridge_transfer_id + } else { + panic!("Not an initiated event: {event:?}"); + }; + info!("Bridge transfer id: {:?}", bridge_transfer_id); + //test_utils::assert_bridge_transfer_details( // &details, // MovementHash(bridge_transfer_id).0, diff --git a/protocol-units/bridge/service/src/chains/movement/event_monitoring.rs b/protocol-units/bridge/service/src/chains/movement/event_monitoring.rs index b227804d7..50c2245bf 100644 --- a/protocol-units/bridge/service/src/chains/movement/event_monitoring.rs +++ b/protocol-units/bridge/service/src/chains/movement/event_monitoring.rs @@ -157,6 +157,7 @@ impl MovementMonitoring { let config = config.clone(); async move { let mvt_client = MovementClient::new(&config).await.unwrap(); + println!("Movement client address: {:?}", mvt_client.native_address); loop { let mut init_event_list = match pool_initiator_contract( mvt_client.native_address, From 0c3fd4f7b06018b86a3255ce5255dc189a0ea241 Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Fri, 11 Oct 2024 09:07:13 -0400 Subject: [PATCH 11/35] feat: add mvt_monitoring for client_l1move_l2move --- .../bridge/integration-tests/src/utils.rs | 127 ------------------ .../tests/client_l1move_l2move.rs | 101 +++++++------- .../tests/client_movement_eth.rs | 2 - 3 files changed, 52 insertions(+), 178 deletions(-) diff --git a/protocol-units/bridge/integration-tests/src/utils.rs b/protocol-units/bridge/integration-tests/src/utils.rs index 78318f380..9b0862c10 100644 --- a/protocol-units/bridge/integration-tests/src/utils.rs +++ b/protocol-units/bridge/integration-tests/src/utils.rs @@ -73,133 +73,6 @@ pub async fn extract_bridge_transfer_id( Err(anyhow::Error::msg("No matching transaction found")) } -pub async fn extract_bridge_transfer_details_framework( - movement_client: &mut MovementClientFramework, -) -> Result<(Vec, Vec, Vec, u64, Vec, u64), anyhow::Error> { - let sender_address = movement_client.signer().address(); - let sequence_number = 0; // Modify as needed - let rest_client = movement_client.rest_client(); - - let transactions = rest_client - .get_account_transactions(sender_address, Some(sequence_number), Some(20)) - .await - .map_err(|e| anyhow::Error::msg(format!("Failed to get transactions: {:?}", e)))?; - - if let Some(transaction) = transactions.into_inner().last() { - if let Transaction::UserTransaction(user_txn) = transaction { - for event in &user_txn.events { - if let aptos_sdk::rest_client::aptos_api_types::MoveType::Struct(struct_tag) = - &event.typ - { - match struct_tag.name.as_str() { - "BridgeTransferInitiatedEvent" | "BridgeTransferLockedEvent" => { - let bridge_transfer_id = event - .data.get("bridge_transfer_id") - .and_then(|v| v.as_str()) - .ok_or_else(|| anyhow::Error::msg("bridge_transfer_id missing"))?; - - let initiator = event - .data.get("initiator") - .and_then(|v| v.as_str()) - .ok_or_else(|| anyhow::Error::msg("initiator missing"))?; - - let recipient = event - .data.get("recipient") - .and_then(|v| v.as_str()) - .ok_or_else(|| anyhow::Error::msg("recipient missing"))?; - - let amount = event - .data.get("amount") - .and_then(|v| v.as_u64()) - .ok_or_else(|| anyhow::Error::msg("amount missing"))?; - - let hash_lock = event - .data.get("hash_lock") - .and_then(|v| v.as_str()) - .ok_or_else(|| anyhow::Error::msg("hash_lock missing"))?; - - let time_lock = event - .data.get("time_lock") - .and_then(|v| v.as_u64()) - .ok_or_else(|| anyhow::Error::msg("time_lock missing"))?; - - // Decode fields - let bridge_transfer_id_decoded = hex::decode(bridge_transfer_id.trim_start_matches("0x")).map_err(|_| { - anyhow::Error::msg("Failed to decode bridge_transfer_id") - })?; - let initiator_decoded = hex::decode(initiator.trim_start_matches("0x")).map_err(|_| { - anyhow::Error::msg("Failed to decode initiator") - })?; - let recipient_decoded = hex::decode(recipient.trim_start_matches("0x")).map_err(|_| { - anyhow::Error::msg("Failed to decode recipient") - })?; - let hash_lock_decoded = hex::decode(hash_lock.trim_start_matches("0x")).map_err(|_| { - anyhow::Error::msg("Failed to decode hash_lock") - })?; - - return Ok(( - bridge_transfer_id_decoded, - initiator_decoded, - recipient_decoded, - amount, - hash_lock_decoded, - time_lock, - )); - } - _ => {} - } - } - } - } - } - - Err(anyhow::Error::msg("No relevant bridge transfer event found")) -} - -pub async fn extract_bridge_transfer_id_framework( - movement_client: &mut MovementClientFramework, -) -> Result<[u8; 32], anyhow::Error> { - let sender_address = movement_client.signer().address(); - let sequence_number = 0; // Modify as needed - let rest_client = movement_client.rest_client(); - - let transactions = rest_client - .get_account_transactions(sender_address, Some(sequence_number), Some(20)) - .await - .map_err(|e| anyhow::Error::msg(format!("Failed to get transactions: {:?}", e)))?; - - if let Some(transaction) = transactions.into_inner().last() { - if let Transaction::UserTransaction(user_txn) = transaction { - for event in &user_txn.events { - if let aptos_sdk::rest_client::aptos_api_types::MoveType::Struct(struct_tag) = - &event.typ - { - match struct_tag.name.as_str() { - "BridgeTransferInitiatedEvent" | "BridgeTransferLockedEvent" => { - if let Some(bridge_transfer_id) = - event.data.get("bridge_transfer_id").and_then(|v| v.as_str()) - { - let hex_str = bridge_transfer_id.trim_start_matches("0x"); - let decoded_vec = hex::decode(hex_str).map_err(|_| { - anyhow::Error::msg("Failed to decode hex string into Vec") - })?; - return decoded_vec.try_into().map_err(|_| { - anyhow::Error::msg( - "Failed to convert decoded Vec to [u8; 32]", - ) - }); - } - } - _ => {} - } - } - } - } - } - Err(anyhow::Error::msg("No matching transaction found")) -} - - pub async fn fund_and_check_balance( movement_harness: &mut HarnessMvtClient, expected_balance: u64, diff --git a/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs b/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs index a4d0307f7..5f0a4c18e 100644 --- a/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs +++ b/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs @@ -11,11 +11,12 @@ use bridge_integration_tests::HarnessMvtClient; use bridge_integration_tests::{TestHarness, TestHarnessFramework}; use bridge_service::chains::ethereum::types::EthAddress; use bridge_service::chains::{ - bridge_contracts::BridgeContract, ethereum::types::EthHash, movement::utils::MovementHash, + bridge_contracts::{BridgeContract, BridgeContractEvent}, ethereum::types::EthHash, movement::{event_monitoring::MovementMonitoring, utils::MovementHash} }; use bridge_service::types::{ Amount, AssetType, BridgeAddress, BridgeTransferId, HashLock, HashLockPreImage, }; +use futures::StreamExt; use tokio::time::{sleep, Duration}; use tokio::{self}; use tracing::info; @@ -55,12 +56,12 @@ async fn test_movement_client_should_publish_package() -> Result<(), anyhow::Err } #[tokio::test] -async fn test_movement_client_should_successfully_call_lock_and_complete( +async fn test_movement_client_complete_transfer( ) -> Result<(), anyhow::Error> { let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); let config = Config::suzuka(); - let (mut mvt_client_harness, _config) = + let (mut mvt_client_harness, config) = TestHarnessFramework::new_with_suzuka(config).await; let args = EthToMovementCallArgs::default(); @@ -93,27 +94,29 @@ async fn test_movement_client_should_successfully_call_lock_and_complete( .await .expect("Failed to lock bridge transfer"); - let bridge_transfer_id: [u8; 32] = - test_utils::extract_bridge_transfer_id_framework(&mut mvt_client_harness.movement_client).await?; - info!("Bridge transfer id: {:?}", bridge_transfer_id); - let details = BridgeContract::get_bridge_transfer_details_counterparty( - &mut mvt_client_harness.movement_client, - BridgeTransferId(MovementHash(bridge_transfer_id).0), - ) - .await - .expect("Failed to get bridge transfer details") - .expect("Expected to find bridge transfer details, but got None"); - - assert_eq!(details.bridge_transfer_id.0, args.bridge_transfer_id.0); - assert_eq!(details.hash_lock.0, args.hash_lock.0); - assert_eq!( - &details.initiator_address.0 .0[32 - args.initiator.len()..], - &args.initiator, - "Initiator address does not match" - ); - assert_eq!(details.recipient_address.0, args.recipient.0.to_vec()); - assert_eq!(details.amount.0, AssetType::Moveth(args.amount)); - assert_eq!(details.state, 1, "Bridge transfer is supposed to be locked but it's not."); + + //Wait for the tx to be executed + tracing::info!("Wait for the MVT initiated event."); + let mut mvt_monitoring = MovementMonitoring::build(&config.movement).await.unwrap(); + let event = + tokio::time::timeout(std::time::Duration::from_secs(30), mvt_monitoring.next()).await?; + let bridge_transfer_id = if let Some(Ok(BridgeContractEvent::Locked(detail))) = event { + detail.bridge_transfer_id + } else { + panic!("Not a Locked event: {event:?}"); + }; + + info!("Bridge transfer id: {:?}", bridge_transfer_id); + //assert_eq!(details.bridge_transfer_id.0, args.bridge_transfer_id.0); + //assert_eq!(details.hash_lock.0, args.hash_lock.0); + //assert_eq!( + // &details.initiator_address.0 .0[32 - args.initiator.len()..], + // &args.initiator, + // "Initiator address does not match" + //); + //assert_eq!(details.recipient_address.0, args.recipient.0.to_vec()); + //assert_eq!(details.amount.0, AssetType::Moveth(args.amount)); + //assert_eq!(details.state, 1, "Bridge transfer is supposed to be locked but it's not."); let secret = b"secret"; let mut padded_secret = [0u8; 32]; @@ -154,12 +157,12 @@ async fn test_movement_client_should_successfully_call_lock_and_complete( } #[tokio::test] -async fn test_movement_client_should_successfully_call_lock_and_abort() -> Result<(), anyhow::Error> +async fn test_movement_client_should_abort_transfer() -> Result<(), anyhow::Error> { let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); let config = Config::suzuka(); - let (mut mvt_client_harness, _config) = + let (mut mvt_client_harness, config) = TestHarnessFramework::new_with_suzuka(config).await; let args = EthToMovementCallArgs::default(); @@ -199,29 +202,29 @@ async fn test_movement_client_should_successfully_call_lock_and_abort() -> Resul .await .expect("Failed to lock bridge transfer"); - let bridge_transfer_id: [u8; 32] = - test_utils::extract_bridge_transfer_id_framework(&mut mvt_client_harness.movement_client).await?; - info!("Bridge transfer id: {:?}", bridge_transfer_id); - let details = BridgeContract::get_bridge_transfer_details_counterparty( - &mut mvt_client_harness.movement_client, - BridgeTransferId(MovementHash(bridge_transfer_id).0), - ) - .await - .expect("Failed to get bridge transfer details") - .expect("Expected to find bridge transfer details, but got None"); - - assert_eq!(details.bridge_transfer_id.0, args.bridge_transfer_id.0); - assert_eq!(details.hash_lock.0, args.hash_lock.0); - assert_eq!( - &details.initiator_address.0 .0[32 - args.initiator.len()..], - &args.initiator, - "Initiator address does not match" - ); - assert_eq!(details.recipient_address.0, args.recipient.0.to_vec()); - assert_eq!(details.amount.0, AssetType::Moveth(args.amount)); - assert_eq!(details.state, 1, "Bridge transfer is supposed to be locked but it's not."); - - sleep(Duration::from_secs(5)).await; + //Wait for the tx to be executed + tracing::info!("Wait for the MVT initiated event."); + + let mut mvt_monitoring = MovementMonitoring::build(&config.movement).await.unwrap(); + let event = + tokio::time::timeout(std::time::Duration::from_secs(30), mvt_monitoring.next()).await?; + let bridge_transfer_id = if let Some(Ok(BridgeContractEvent::Locked(detail))) = event { + detail.bridge_transfer_id + } else { + panic!("Not a Locked event: {event:?}"); + }; + + info!("Bridge transfer id: {:?}", bridge_transfer_id); + //assert_eq!(details.bridge_transfer_id.0, args.bridge_transfer_id.0); + //assert_eq!(details.hash_lock.0, args.hash_lock.0); + //assert_eq!( + // &details.initiator_address.0 .0[32 - args.initiator.len()..], + // &args.initiator, + // "Initiator address does not match" + //); + //assert_eq!(details.recipient_address.0, args.recipient.0.to_vec()); + //assert_eq!(details.amount.0, AssetType::Moveth(args.amount)); + //assert_eq!(details.state, 1, "Bridge transfer is supposed to be locked but it's not."); sleep(Duration::from_secs(5)).await; mvt_client_harness .movement_client diff --git a/protocol-units/bridge/integration-tests/tests/client_movement_eth.rs b/protocol-units/bridge/integration-tests/tests/client_movement_eth.rs index cc919428d..508c18c9c 100644 --- a/protocol-units/bridge/integration-tests/tests/client_movement_eth.rs +++ b/protocol-units/bridge/integration-tests/tests/client_movement_eth.rs @@ -1,5 +1,3 @@ -mod client_l2move_l1move; - use anyhow::Result; use bridge_config::Config; use bridge_integration_tests::utils; From f96424e2246d94e81e1e514144ed1d63f602a357 Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Fri, 11 Oct 2024 13:22:03 -0400 Subject: [PATCH 12/35] feat: add bridge setup scripts to client tests --- .../bridge/integration-tests/src/utils.rs | 4 - .../tests/client_l2move_l1move.rs | 3 + .../tests/client_movement_eth.rs | 2 + .../service/src/chains/movement/client.rs | 221 ------------------ .../src/chains/movement/client_framework.rs | 67 ++++++ 5 files changed, 72 insertions(+), 225 deletions(-) diff --git a/protocol-units/bridge/integration-tests/src/utils.rs b/protocol-units/bridge/integration-tests/src/utils.rs index 9b0862c10..71bdde4bb 100644 --- a/protocol-units/bridge/integration-tests/src/utils.rs +++ b/protocol-units/bridge/integration-tests/src/utils.rs @@ -115,10 +115,6 @@ pub async fn fund_and_check_balance_framework( Ok(()) } -pub async fn publish_for_test(movement_client: &mut MovementClientFramework) { - let _ = movement_client.publish_for_test(); -} - pub async fn initiate_bridge_transfer_helper( movement_client: &mut MovementClient, initiator_address: AccountAddress, diff --git a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs index b1434447f..2672a9d72 100644 --- a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs +++ b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs @@ -4,6 +4,7 @@ use bridge_integration_tests::utils; use bridge_integration_tests::utils as test_utils; use bridge_integration_tests::{MovementToEthCallArgs, TestHarness, TestHarnessFramework}; use bridge_service::chains::bridge_contracts::BridgeContractEvent; +use bridge_service::chains::movement::client_framework::MovementClientFramework; use bridge_service::{ chains::{bridge_contracts::BridgeContract, movement::{utils::MovementHash, event_monitoring::MovementMonitoring}}, types::{BridgeTransferId, HashLockPreImage}, @@ -38,6 +39,8 @@ async fn test_movement_client_build_and_fund_accounts() -> Result<(), anyhow::Er async fn test_movement_client_initiate_transfer() -> Result<(), anyhow::Error> { let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); + MovementClientFramework::bridge_setup_scripts().await?; + let config:Config = Config::suzuka(); let (mut mvt_client_harness, config) = diff --git a/protocol-units/bridge/integration-tests/tests/client_movement_eth.rs b/protocol-units/bridge/integration-tests/tests/client_movement_eth.rs index 508c18c9c..cc919428d 100644 --- a/protocol-units/bridge/integration-tests/tests/client_movement_eth.rs +++ b/protocol-units/bridge/integration-tests/tests/client_movement_eth.rs @@ -1,3 +1,5 @@ +mod client_l2move_l1move; + use anyhow::Result; use bridge_config::Config; use bridge_integration_tests::utils; diff --git a/protocol-units/bridge/service/src/chains/movement/client.rs b/protocol-units/bridge/service/src/chains/movement/client.rs index 86d7a351d..f82e6de5d 100644 --- a/protocol-units/bridge/service/src/chains/movement/client.rs +++ b/protocol-units/bridge/service/src/chains/movement/client.rs @@ -480,227 +480,6 @@ use tokio::{ }; impl MovementClient { - pub fn publish_for_test(&mut self) -> Result<()> { - let random_seed = rand::thread_rng().gen_range(0, 1000000).to_string(); - - let mut process = Command::new("movement") - .args(&["init"]) - .stdin(Stdio::piped()) - .stdout(Stdio::piped()) - .stderr(Stdio::piped()) - .spawn() - .expect("Failed to execute command"); - - let private_key_hex = hex::encode(self.signer.private_key().to_bytes()); - - let stdin: &mut std::process::ChildStdin = - process.stdin.as_mut().expect("Failed to open stdin"); - - let movement_dir = PathBuf::from(".movement"); - - if movement_dir.exists() { - stdin.write_all(b"yes\n").expect("Failed to write to stdin"); - } - - stdin.write_all(b"local\n").expect("Failed to write to stdin"); - - let _ = stdin.write_all(format!("{}\n", private_key_hex).as_bytes()); - - let addr_output = process.wait_with_output().expect("Failed to read command output"); - - if !addr_output.stdout.is_empty() { - println!("stdout: {}", String::from_utf8_lossy(&addr_output.stdout)); - } - - if !addr_output.stderr.is_empty() { - eprintln!("stderr: {}", String::from_utf8_lossy(&addr_output.stderr)); - } - let addr_output_str = String::from_utf8_lossy(&addr_output.stderr); - let address = addr_output_str - .split_whitespace() - .find(|word| word.starts_with("0x")) - .expect("Failed to extract the Movement account address"); - - println!("Extracted address: {}", address); - - let resource_output = Command::new("movement") - .args(&[ - "account", - "derive-resource-account-address", - "--address", - address, - "--seed", - &random_seed, - ]) - .stdout(Stdio::piped()) - .stderr(Stdio::piped()) - .output() - .expect("Failed to execute command"); - - // Print the output of the resource address command for debugging - if !resource_output.stdout.is_empty() { - println!("stdout: {}", String::from_utf8_lossy(&resource_output.stdout)); - } - if !resource_output.stderr.is_empty() { - eprintln!("stderr: {}", String::from_utf8_lossy(&resource_output.stderr)); - } - - // Extract the resource address from the JSON output - let resource_output_str = String::from_utf8_lossy(&resource_output.stdout); - let resource_address = resource_output_str - .lines() - .find(|line| line.contains("\"Result\"")) - .and_then(|line| line.split('"').nth(3)) - .expect("Failed to extract the resource account address"); - - // Ensure the address has a "0x" prefix - let formatted_resource_address = if resource_address.starts_with("0x") { - resource_address.to_string() - } else { - format!("0x{}", resource_address) - }; - - // Set counterparty module address to resource address, for function calls: - self.native_address = AccountAddress::from_hex_literal(&formatted_resource_address)?; - - println!("Derived resource address: {}", formatted_resource_address); - - let current_dir = env::current_dir().expect("Failed to get current directory"); - println!("Current directory: {:?}", current_dir); - - let move_toml_path = PathBuf::from("../move-modules/Move.toml"); - - // Read the existing content of Move.toml - let move_toml_content = - fs::read_to_string(&move_toml_path).expect("Failed to read Move.toml file"); - - // Update the content of Move.toml with the new addresses - let updated_content = move_toml_content - .lines() - .map(|line| match line { - _ if line.starts_with("resource_addr = ") => { - format!(r#"resource_addr = "{}""#, formatted_resource_address) - } - _ if line.starts_with("atomic_bridge = ") => { - format!(r#"atomic_bridge = "{}""#, formatted_resource_address) - } - _ if line.starts_with("moveth = ") => { - format!(r#"moveth = "{}""#, formatted_resource_address) - } - _ if line.starts_with("master_minter = ") => { - format!(r#"master_minter = "{}""#, formatted_resource_address) - } - _ if line.starts_with("minter = ") => { - format!(r#"minter = "{}""#, formatted_resource_address) - } - _ if line.starts_with("admin = ") => { - format!(r#"admin = "{}""#, formatted_resource_address) - } - _ if line.starts_with("origin_addr = ") => { - format!(r#"origin_addr = "{}""#, address) - } - _ if line.starts_with("source_account = ") => { - format!(r#"source_account = "{}""#, address) - } - _ => line.to_string(), - }) - .collect::>() - .join("\n"); - - // Write the updated content back to Move.toml - let mut file = - fs::File::create(&move_toml_path).expect("Failed to open Move.toml file for writing"); - file.write_all(updated_content.as_bytes()) - .expect("Failed to write updated Move.toml file"); - - println!("Move.toml updated successfully."); - - let output2 = Command::new("movement") - .args(&[ - "move", - "create-resource-account-and-publish-package", - "--assume-yes", - "--address-name", - "moveth", - "--seed", - &random_seed, - "--package-dir", - "../move-modules", - ]) - .stdout(Stdio::piped()) - .stderr(Stdio::piped()) - .output() - .expect("Failed to execute command"); - - if !output2.stdout.is_empty() { - eprintln!("stdout: {}", String::from_utf8_lossy(&output2.stdout)); - } - - if !output2.stderr.is_empty() { - eprintln!("stderr: {}", String::from_utf8_lossy(&output2.stderr)); - } - - if movement_dir.exists() { - fs::remove_dir_all(movement_dir).expect("Failed to delete .movement directory"); - println!(".movement directory deleted successfully."); - } - - // Read the existing content of Move.toml - let move_toml_content = - fs::read_to_string(&move_toml_path).expect("Failed to read Move.toml file"); - - // Directly assign the address - let final_address = "0xcafe"; - - // Directly assign the formatted resource address - let final_formatted_resource_address = - "0xc3bb8488ab1a5815a9d543d7e41b0e0df46a7396f89b22821f07a4362f75ddc5"; - - let updated_content = move_toml_content - .lines() - .map(|line| match line { - _ if line.starts_with("resource_addr = ") => { - format!(r#"resource_addr = "{}""#, final_formatted_resource_address) - } - _ if line.starts_with("atomic_bridge = ") => { - format!(r#"atomic_bridge = "{}""#, final_formatted_resource_address) - } - _ if line.starts_with("moveth = ") => { - format!(r#"moveth = "{}""#, final_formatted_resource_address) - } - _ if line.starts_with("master_minter = ") => { - format!(r#"master_minter = "{}""#, final_formatted_resource_address) - } - _ if line.starts_with("minter = ") => { - format!(r#"minter = "{}""#, final_formatted_resource_address) - } - _ if line.starts_with("admin = ") => { - format!(r#"admin = "{}""#, final_formatted_resource_address) - } - _ if line.starts_with("origin_addr = ") => { - format!(r#"origin_addr = "{}""#, final_address) - } - _ if line.starts_with("pauser = ") => { - format!(r#"pauser = "{}""#, "0xdafe") - } - _ if line.starts_with("denylister = ") => { - format!(r#"denylister = "{}""#, "0xcade") - } - _ => line.to_string(), - }) - .collect::>() - .join("\n"); - - // Write the updated content back to Move.toml - let mut file = - fs::File::create(&move_toml_path).expect("Failed to open Move.toml file for writing"); - file.write_all(updated_content.as_bytes()) - .expect("Failed to write updated Move.toml file"); - - println!("Move.toml addresses updated successfully at the end of the test."); - - Ok(()) - } pub async fn new_for_test() -> Result<(Self, tokio::process::Child), anyhow::Error> { let kill_cmd = TokioCommand::new("sh") diff --git a/protocol-units/bridge/service/src/chains/movement/client_framework.rs b/protocol-units/bridge/service/src/chains/movement/client_framework.rs index a0bc4ab9d..8696c63bb 100644 --- a/protocol-units/bridge/service/src/chains/movement/client_framework.rs +++ b/protocol-units/bridge/service/src/chains/movement/client_framework.rs @@ -481,6 +481,73 @@ use tokio::{ }; impl MovementClientFramework { + + pub async fn bridge_setup_scripts() -> Result<()> { + let enable_bridge_feature_output = Command::new("movement") + .args(&[ + "move", + "run-script", + "--compiled-script-path", + "protocol-units/bridge/move-modules/build/bridge-modules/bytecode_scripts/enable_bridge_feature.mv", + "--profile", + "default", + ]) + .stdout(Stdio::piped()) + .stderr(Stdio::piped()) + .output()?; + + if !enable_bridge_feature_output.stdout.is_empty() { + println!("stdout: {}", String::from_utf8_lossy(&enable_bridge_feature_output.stdout)); + } + if !enable_bridge_feature_output.stderr.is_empty() { + eprintln!("stderr: {}", String::from_utf8_lossy(&enable_bridge_feature_output.stderr)); + } + + let store_mint_burn_caps_output = Command::new("movement") + .args(&[ + "move", + "run-script", + "--compiled-script-path", + "protocol-units/bridge/move-modules/build/bridge-modules/bytecode_scripts/store_mint_burn_caps.mv", + "--profile", + "default", + ]) + .stdout(Stdio::piped()) + .stderr(Stdio::piped()) + .output()?; + + if !store_mint_burn_caps_output.stdout.is_empty() { + println!("stdout: {}", String::from_utf8_lossy(&store_mint_burn_caps_output.stdout)); + } + if !store_mint_burn_caps_output.stderr.is_empty() { + eprintln!("stderr: {}", String::from_utf8_lossy(&store_mint_burn_caps_output.stderr)); + } + + let update_bridge_operator_output = Command::new("movement") + .args(&[ + "move", + "run-script", + "--compiled-script-path", + "protocol-units/bridge/move-modules/build/bridge-modules/bytecode_scripts/store_mint_burn_caps.mv", + "--args", + "address:0xface", + "--profile", + "default", + ]) + .stdout(Stdio::piped()) + .stderr(Stdio::piped()) + .output()?; + + if !update_bridge_operator_output.stdout.is_empty() { + println!("stdout: {}", String::from_utf8_lossy(&update_bridge_operator_output.stdout)); + } + if !update_bridge_operator_output.stderr.is_empty() { + eprintln!("stderr: {}", String::from_utf8_lossy(&update_bridge_operator_output.stderr)); + } + + Ok(()) + } + pub fn publish_for_test(&mut self) -> Result<()> { let random_seed = rand::thread_rng().gen_range(0, 1000000).to_string(); From 14297d5ae4d706c5f344b823e9b34a02ecf1a894 Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Sat, 12 Oct 2024 05:36:50 -0400 Subject: [PATCH 13/35] fix: bridge setup scripts improvements --- .../src/chains/movement/client_framework.rs | 51 ++++++++++++++----- 1 file changed, 39 insertions(+), 12 deletions(-) diff --git a/protocol-units/bridge/service/src/chains/movement/client_framework.rs b/protocol-units/bridge/service/src/chains/movement/client_framework.rs index 8696c63bb..6ee554697 100644 --- a/protocol-units/bridge/service/src/chains/movement/client_framework.rs +++ b/protocol-units/bridge/service/src/chains/movement/client_framework.rs @@ -6,7 +6,7 @@ use crate::types::{ Amount, AssetType, BridgeAddress, BridgeTransferDetails, BridgeTransferId, HashLock, HashLockPreImage, TimeLock, }; -use anyhow::Result; +use anyhow::{Context, Result}; use aptos_api_types::{EntryFunctionId, MoveModuleId, ViewRequest}; use aptos_sdk::{ move_types::identifier::Identifier, @@ -16,12 +16,15 @@ use aptos_sdk::{ use aptos_types::account_address::AccountAddress; use bridge_config::common::movement::MovementConfig; use rand::prelude::*; +use std::path::Path; use std::str::FromStr; use std::sync::Arc; use tracing::{debug, info}; use url::Url; -const FRAMEWORK_ADDRESS: AccountAddress = AccountAddress::new([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]); +const FRAMEWORK_ADDRESS: AccountAddress = AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, +]); const INITIATOR_MODULE_NAME: &str = "atomic_bridge_initiator"; const COUNTERPARTY_MODULE_NAME: &str = "atomic_bridge_counterparty"; const DUMMY_ADDRESS: AccountAddress = AccountAddress::new([0; 32]); @@ -55,8 +58,7 @@ impl MovementClientFramework { let rest_client = Client::new(node_connection_url.clone()); let signer = - utils::create_local_account(config.movement_signer_key.clone(), &rest_client) - .await?; + utils::create_local_account(config.movement_signer_key.clone(), &rest_client).await?; let native_address = AccountAddress::from_hex_literal(&config.movement_native_address)?; Ok(MovementClientFramework { native_address, @@ -481,8 +483,30 @@ use tokio::{ }; impl MovementClientFramework { - pub async fn bridge_setup_scripts() -> Result<()> { + + let project_root = Path::new("../../../"); + env::set_current_dir(&project_root) + .context("Failed to change directory to project root")?; + + let compile_output = Command::new("movement") + .args(&[ + "move", + "compile", + "--package-dir", + "protocol-units/bridge/move-modules/" + ]) + .stdout(Stdio::piped()) + .stderr(Stdio::piped()) + .output()?; + + if !compile_output.stdout.is_empty() { + println!("stdout: {}", String::from_utf8_lossy(&compile_output.stdout)); + } + if !compile_output.stderr.is_empty() { + eprintln!("stderr: {}", String::from_utf8_lossy(&compile_output.stderr)); + } + let enable_bridge_feature_output = Command::new("movement") .args(&[ "move", @@ -491,18 +515,19 @@ impl MovementClientFramework { "protocol-units/bridge/move-modules/build/bridge-modules/bytecode_scripts/enable_bridge_feature.mv", "--profile", "default", + "--assume-yes", ]) .stdout(Stdio::piped()) .stderr(Stdio::piped()) .output()?; - + if !enable_bridge_feature_output.stdout.is_empty() { println!("stdout: {}", String::from_utf8_lossy(&enable_bridge_feature_output.stdout)); } if !enable_bridge_feature_output.stderr.is_empty() { eprintln!("stderr: {}", String::from_utf8_lossy(&enable_bridge_feature_output.stderr)); } - + let store_mint_burn_caps_output = Command::new("movement") .args(&[ "move", @@ -511,40 +536,42 @@ impl MovementClientFramework { "protocol-units/bridge/move-modules/build/bridge-modules/bytecode_scripts/store_mint_burn_caps.mv", "--profile", "default", + "--assume-yes", ]) .stdout(Stdio::piped()) .stderr(Stdio::piped()) .output()?; - + if !store_mint_burn_caps_output.stdout.is_empty() { println!("stdout: {}", String::from_utf8_lossy(&store_mint_burn_caps_output.stdout)); } if !store_mint_burn_caps_output.stderr.is_empty() { eprintln!("stderr: {}", String::from_utf8_lossy(&store_mint_burn_caps_output.stderr)); } - + let update_bridge_operator_output = Command::new("movement") .args(&[ "move", "run-script", "--compiled-script-path", - "protocol-units/bridge/move-modules/build/bridge-modules/bytecode_scripts/store_mint_burn_caps.mv", + "protocol-units/bridge/move-modules/build/bridge-modules/bytecode_scripts/update_bridge_operator.mv", "--args", "address:0xface", "--profile", "default", + "--assume-yes", ]) .stdout(Stdio::piped()) .stderr(Stdio::piped()) .output()?; - + if !update_bridge_operator_output.stdout.is_empty() { println!("stdout: {}", String::from_utf8_lossy(&update_bridge_operator_output.stdout)); } if !update_bridge_operator_output.stderr.is_empty() { eprintln!("stderr: {}", String::from_utf8_lossy(&update_bridge_operator_output.stderr)); } - + Ok(()) } From 25012a639b3cff1e7d6dc9036af0d8f388b67f55 Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Sat, 12 Oct 2024 08:04:15 -0400 Subject: [PATCH 14/35] movement_client_initiate_bridge_transfer passes --- .../bridge/integration-tests/src/utils.rs | 131 ++++ .../tests/client_l2move_l1move.rs | 33 +- .../movement/event_monitoring_framework.rs | 624 ++++++++++++++++++ .../bridge/service/src/chains/movement/mod.rs | 1 + 4 files changed, 768 insertions(+), 21 deletions(-) create mode 100644 protocol-units/bridge/service/src/chains/movement/event_monitoring_framework.rs diff --git a/protocol-units/bridge/integration-tests/src/utils.rs b/protocol-units/bridge/integration-tests/src/utils.rs index 71bdde4bb..d211f0af2 100644 --- a/protocol-units/bridge/integration-tests/src/utils.rs +++ b/protocol-units/bridge/integration-tests/src/utils.rs @@ -30,6 +30,21 @@ pub fn assert_bridge_transfer_details( assert_eq!(details.state, expected_state, "Bridge transfer state mismatch."); } +pub fn assert_bridge_transfer_details_framework( + details: &([u8; 32], String, Vec, u64, [u8;32], u64), + expected_bridge_transfer_id: [u8; 32], + expected_sender_address: String, + expected_recipient_address: Vec, + expected_amount: u64, + expected_hash_lock: [u8; 32], +) { + assert_eq!(details.0, expected_bridge_transfer_id); + assert_eq!(details.1, expected_sender_address); + assert_eq!(details.2, expected_recipient_address); + assert_eq!(details.3, expected_amount); + assert_eq!(details.4, expected_hash_lock); +} + pub async fn extract_bridge_transfer_id( movement_client: &mut MovementClient, ) -> Result<[u8; 32], anyhow::Error> { @@ -73,6 +88,122 @@ pub async fn extract_bridge_transfer_id( Err(anyhow::Error::msg("No matching transaction found")) } +pub async fn extract_bridge_transfer_id_framework( + movement_client: &mut MovementClientFramework, +) -> Result<[u8; 32], anyhow::Error> { + let sender_address = movement_client.signer().address(); + let sequence_number = 0; // Modify as needed + let rest_client = movement_client.rest_client(); + + let transactions = rest_client + .get_account_transactions(sender_address, Some(sequence_number), Some(20)) + .await + .map_err(|e| anyhow::Error::msg(format!("Failed to get transactions: {:?}", e)))?; + + if let Some(transaction) = transactions.into_inner().last() { + if let Transaction::UserTransaction(user_txn) = transaction { + for event in &user_txn.events { + if let aptos_sdk::rest_client::aptos_api_types::MoveType::Struct(struct_tag) = + &event.typ + { + match struct_tag.name.as_str() { + "BridgeTransferInitiatedEvent" | "BridgeTransferLockedEvent" => { + if let Some(bridge_transfer_id) = + event.data.get("bridge_transfer_id").and_then(|v| v.as_str()) + { + let hex_str = bridge_transfer_id.trim_start_matches("0x"); + let decoded_vec = hex::decode(hex_str).map_err(|_| { + anyhow::Error::msg("Failed to decode hex string into Vec") + })?; + return decoded_vec.try_into().map_err(|_| { + anyhow::Error::msg( + "Failed to convert decoded Vec to [u8; 32]", + ) + }); + } + } + _ => {} + } + } + } + } + } + Err(anyhow::Error::msg("No matching transaction found")) +} + +pub async fn extract_bridge_transfer_details_framework( + movement_client: &mut MovementClientFramework, +) -> Result<([u8; 32], String, Vec, u64, [u8; 32], u64), anyhow::Error> { + let sender_address = movement_client.signer().address(); + let sequence_number = 0; // Modify as needed + let rest_client = movement_client.rest_client(); + + let transactions = rest_client + .get_account_transactions(sender_address, Some(sequence_number), Some(20)) + .await + .map_err(|e| anyhow::Error::msg(format!("Failed to get transactions: {:?}", e)))?; + + if let Some(transaction) = transactions.into_inner().last() { + if let Transaction::UserTransaction(user_txn) = transaction { + for event in &user_txn.events { + if let aptos_sdk::rest_client::aptos_api_types::MoveType::Struct(struct_tag) = + &event.typ + { + match struct_tag.name.as_str() { + "BridgeTransferInitiatedEvent" | "BridgeTransferLockedEvent" => { + if let Some(bridge_transfer_id_str) = + event.data.get("bridge_transfer_id").and_then(|v| v.as_str()) + { + let bridge_transfer_id_vec = hex::decode(bridge_transfer_id_str.trim_start_matches("0x")) + .map_err(|_| anyhow::Error::msg("Failed to decode hex string into Vec"))?; + let bridge_transfer_id: [u8; 32] = bridge_transfer_id_vec.try_into() + .map_err(|_| anyhow::Error::msg("Failed to convert Vec to [u8; 32]"))?; + + let initiator = event.data.get("initiator") + .and_then(|v| v.as_str()) + .ok_or_else(|| anyhow::Error::msg("Missing initiator"))? + .to_string(); + + let recipient = hex::decode( + event.data.get("recipient") + .and_then(|v| v.as_str()) + .ok_or_else(|| anyhow::Error::msg("Missing recipient"))? + .trim_start_matches("0x")) + .map_err(|_| anyhow::Error::msg("Failed to decode recipient"))?; + + let amount = event.data.get("amount") + .and_then(|v| v.as_str()) + .ok_or_else(|| anyhow::Error::msg("Missing amount"))? + .parse::() + .map_err(|_| anyhow::Error::msg("Failed to parse amount"))?; + + let hash_lock_vec = hex::decode( + event.data.get("hash_lock") + .and_then(|v| v.as_str()) + .ok_or_else(|| anyhow::Error::msg("Missing hash_lock"))? + .trim_start_matches("0x")) + .map_err(|_| anyhow::Error::msg("Failed to decode hash_lock"))?; + let hash_lock: [u8; 32] = hash_lock_vec.try_into() + .map_err(|_| anyhow::Error::msg("Failed to convert Vec to [u8; 32]"))?; + + let time_lock = event.data.get("time_lock") + .and_then(|v| v.as_str()) + .ok_or_else(|| anyhow::Error::msg("Missing time_lock"))? + .parse::() + .map_err(|_| anyhow::Error::msg("Failed to parse time_lock"))?; + + return Ok((bridge_transfer_id, initiator, recipient, amount, hash_lock, time_lock)); + } + } + _ => {} + } + } + } + } + } + Err(anyhow::Error::msg("No matching transaction found")) +} + pub async fn fund_and_check_balance( movement_harness: &mut HarnessMvtClient, expected_balance: u64, diff --git a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs index 2672a9d72..e175bea50 100644 --- a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs +++ b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs @@ -5,6 +5,7 @@ use bridge_integration_tests::utils as test_utils; use bridge_integration_tests::{MovementToEthCallArgs, TestHarness, TestHarnessFramework}; use bridge_service::chains::bridge_contracts::BridgeContractEvent; use bridge_service::chains::movement::client_framework::MovementClientFramework; +use bridge_service::chains::movement::event_monitoring_framework::MovementMonitoringFramework; use bridge_service::{ chains::{bridge_contracts::BridgeContract, movement::{utils::MovementHash, event_monitoring::MovementMonitoring}}, types::{BridgeTransferId, HashLockPreImage}, @@ -62,28 +63,18 @@ async fn test_movement_client_initiate_transfer() -> Result<(), anyhow::Error> { .await .expect("Failed to initiate bridge transfer"); - //Wait for the tx to be executed - tracing::info!("Wait for the MVT initiated event."); - let mut mvt_monitoring = MovementMonitoring::build(&config.movement).await.unwrap(); - let event = - tokio::time::timeout(std::time::Duration::from_secs(30), mvt_monitoring.next()).await?; - let bridge_transfer_id = if let Some(Ok(BridgeContractEvent::Initiated(detail))) = event { - detail.bridge_transfer_id - } else { - panic!("Not an initiated event: {event:?}"); - }; - - info!("Bridge transfer id: {:?}", bridge_transfer_id); + let details:([u8; 32], String, Vec, u64, [u8; 32], u64) = + test_utils::extract_bridge_transfer_details_framework(&mut mvt_client_harness.movement_client).await?; + info!("Bridge transfer details: {:?}", details); - //test_utils::assert_bridge_transfer_details( - // &details, - // MovementHash(bridge_transfer_id).0, - // MovementHash(args.hash_lock.0).0, - // sender_address, - // args.recipient.clone(), - // args.amount, - // 1, - //); + test_utils::assert_bridge_transfer_details_framework( + &details, + details.0, + sender_address.to_string(), + args.recipient.clone(), + args.amount, + args.hash_lock.0, + ); Ok(()) } diff --git a/protocol-units/bridge/service/src/chains/movement/event_monitoring_framework.rs b/protocol-units/bridge/service/src/chains/movement/event_monitoring_framework.rs new file mode 100644 index 000000000..d0f074dbd --- /dev/null +++ b/protocol-units/bridge/service/src/chains/movement/event_monitoring_framework.rs @@ -0,0 +1,624 @@ +use super::client::MovementClient; +use super::utils::MovementAddress; +use crate::chains::bridge_contracts::BridgeContractError; +use crate::chains::bridge_contracts::BridgeContractEvent; +use crate::chains::bridge_contracts::BridgeContractEventType; +use crate::chains::bridge_contracts::BridgeContractMonitoring; +use crate::chains::bridge_contracts::BridgeContractResult; +use crate::types::Amount; +use crate::types::AssetType; +use crate::types::BridgeAddress; +use crate::types::BridgeTransferDetails; +use crate::types::BridgeTransferId; +use crate::types::HashLock; +use crate::types::HashLockPreImage; +use crate::types::LockDetails; +use crate::types::TimeLock; +use anyhow::Result; +use aptos_sdk::rest_client::aptos_api_types::VersionedEvent; +use aptos_sdk::types::account_address::AccountAddress; +use bridge_config::common::movement::MovementConfig; +use futures::channel::mpsc::{self}; +use futures::SinkExt; +use futures::Stream; +use futures::StreamExt; +use hex::FromHex; +use serde::Deserialize; +use serde::Deserializer; +use serde::Serialize; +use std::{pin::Pin, task::Poll}; +use tokio::fs::{self, File}; +use tokio::io::{self, AsyncReadExt, AsyncWriteExt}; + +const PULL_STATE_FILE_NAME: &str = "pullstate.store"; +const FRAMEWORK_ADDRESS: AccountAddress = AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, +]); + +#[derive(Debug, Default, Clone, Serialize, Deserialize)] +struct MvtPullingState { + initiator_init: u64, + initiator_complete: u64, + initiator_refund: u64, + counterpart_lock: u64, + counterpart_complete: u64, + counterpart_cancel: u64, +} + +impl MvtPullingState { + async fn save_to_store_file(&self) -> io::Result<()> { + let path = MvtPullingState::get_store_file_path(); + if let Some(parent) = path.parent() { + fs::create_dir_all(parent).await?; + } + + let json = serde_json::to_string(self)?; + let mut file = File::create(path.as_path()).await?; + file.write_all(json.as_bytes()).await?; + Ok(()) + } + + // Read the state from a JSON file + async fn build_from_store_file() -> io::Result { + let path = MvtPullingState::get_store_file_path(); + + let state = if fs::try_exists(&path).await? { + let mut file = File::open(path.as_path()).await?; + let mut json = String::new(); + file.read_to_string(&mut json).await?; + let state = serde_json::from_str(&json)?; + state + } else { + // Return a default state if the file does not exist + MvtPullingState::default() + }; + Ok(state) + } + + fn get_store_file_path() -> std::path::PathBuf { + let dot_movement = dot_movement::DotMovement::try_from_env() + .unwrap_or(dot_movement::DotMovement::new(".movement")); + bridge_config::get_config_path(&dot_movement).join(PULL_STATE_FILE_NAME) + } + + fn update_state_with_event( + &mut self, + event: &BridgeContractEvent, + sequence_number: u64, + ) { + //define the state to the next event. + match event { + BridgeContractEvent::Initiated(_) => { + if self.initiator_init <= sequence_number { + self.initiator_init = sequence_number + 1 + } + } + BridgeContractEvent::Locked(_) => { + if self.counterpart_lock <= sequence_number { + self.counterpart_lock = sequence_number + 1 + } + } + BridgeContractEvent::InitialtorCompleted(_) => { + if self.initiator_complete <= sequence_number { + self.initiator_complete = sequence_number + 1 + } + } + BridgeContractEvent::CounterPartCompleted(_, _) => { + if self.counterpart_complete <= sequence_number { + self.counterpart_complete = sequence_number + 1 + } + } + BridgeContractEvent::Cancelled(_) => { + if self.counterpart_cancel <= sequence_number { + self.counterpart_cancel = sequence_number + 1 + } + } + BridgeContractEvent::Refunded(_) => { + if self.initiator_refund <= sequence_number { + self.initiator_refund = sequence_number + 1 + } + } + } + } + + // If an error occurs during deserialization, the event seq_number must be increase + // to avoid always the fetch the same event. + fn update_state_with_error(&mut self, err: &BridgeContractError) { + match err { + BridgeContractError::EventDeserializingFail(_, event_type) => match event_type { + BridgeContractEventType::Initiated => self.initiator_init += 1, + BridgeContractEventType::Locked => self.counterpart_lock += 1, + BridgeContractEventType::InitialtorCompleted => self.initiator_complete += 1, + BridgeContractEventType::CounterPartCompleted => self.counterpart_complete += 1, + BridgeContractEventType::Cancelled => self.counterpart_cancel += 1, + BridgeContractEventType::Refunded => self.initiator_refund += 1, + }, + _ => (), + } + } +} + +pub struct MovementMonitoringFramework { + listener: mpsc::UnboundedReceiver>>, +} + +impl BridgeContractMonitoring for MovementMonitoringFramework { + type Address = MovementAddress; +} + +impl MovementMonitoringFramework { + pub async fn build(config: &MovementConfig) -> Result { + // Spawn a task to forward events to the listener channel + let (mut sender, listener) = futures::channel::mpsc::unbounded::< + BridgeContractResult>, + >(); + + //read the pull state + let mut pull_state = MvtPullingState::build_from_store_file().await?; + + tokio::spawn({ + let config = config.clone(); + async move { + let mvt_client = MovementClient::new(&config).await.unwrap(); + loop { + let mut init_event_list = match pool_initiator_contract( + FRAMEWORK_ADDRESS, + &config.mvt_rpc_connection_url(), + &pull_state, + ) + .await + { + Ok(evs) => evs.into_iter().map(|ev| Ok(ev)).collect(), + Err(err) => vec![Err(err)], + }; + let mut counterpart_event_list = match pool_counterpart_contract( + FRAMEWORK_ADDRESS, + &config.mvt_rpc_connection_url(), + &pull_state, + ) + .await + { + Ok(evs) => evs.into_iter().map(|ev| Ok(ev)).collect(), + Err(err) => vec![Err(err)], + }; + + //extract event sequence_number and update pull state + let (event_list, new_pull_state) = + init_event_list.drain(..).chain(counterpart_event_list.drain(..)).fold( + (Vec::new(), pull_state.clone()), + |(mut events, mut state), event| { + match event { + Ok((ev, seq)) => { + state.update_state_with_event(&ev, seq); + events.push(Ok(ev)); + } + Err(err) => { + state.update_state_with_error(&err); + events.push(Err(err)); + } + } + (events, state) + }, + ); + + for event in event_list { + if sender.send(event).await.is_err() { + tracing::error!("Failed to send event to listener channel"); + break; + } + } + pull_state = new_pull_state; + + if let Err(err) = pull_state.save_to_store_file().await { + tracing::error!("MVT monitoring unable to store the file state because:{err} for state:{pull_state:?}"); + } + let _ = tokio::time::sleep(tokio::time::Duration::from_millis(500)).await; + } + } + }); + + Ok(MovementMonitoringFramework { listener }) + } +} + +impl Stream for MovementMonitoringFramework { + type Item = BridgeContractResult>; + + fn poll_next(self: Pin<&mut Self>, cx: &mut std::task::Context) -> Poll> { + let this = self.get_mut(); + this.listener.poll_next_unpin(cx) + } +} + +#[derive(Debug, PartialEq, Eq, Clone, Deserialize)] +struct CounterpartyCompletedDetails { + pub bridge_transfer_id: BridgeTransferId, + pub initiator_address: BridgeAddress>, + pub recipient_address: BridgeAddress, + pub hash_lock: HashLock, + pub secret: HashLockPreImage, + pub amount: Amount, +} + +async fn pool_initiator_contract( + native_address: AccountAddress, + rest_url: &str, + pull_state: &MvtPullingState, +) -> BridgeContractResult, u64)>> { + let native_address_str = native_address.to_standard_string(); + let struct_tag = + format!("{}::atomic_bridge_initiator::BridgeTransferInitiatedEvent", native_address_str,); + + // Get initiated events + let initiated_events = get_account_events( + rest_url, + &native_address_str, + &struct_tag, + "bridge_transfer_initiated_events", + pull_state.initiator_init, + ) + .await? + .into_iter() + .map(|e| { + println!("Initiate event data: {:?} sequence_number:{}", e.data, e.sequence_number); + let data: BridgeInitEventData = serde_json::from_str(&e.data.to_string())?; + let transfer_details = BridgeTransferDetails::try_from(data)?; + Ok((BridgeContractEvent::Initiated(transfer_details), e.sequence_number.into())) + }) + .collect::>>() + .map_err(|e| { + BridgeContractError::EventDeserializingFail( + format!("MVT bridge_transfer_initiated_events de-serialization error:{}", e), + BridgeContractEventType::Initiated, + ) + })?; + + // Get completed events + let completed_events = get_account_events( + rest_url, + &native_address_str, + &struct_tag, + "bridge_transfer_completed_events", + pull_state.initiator_complete, + ) + .await? + .into_iter() + .map(|e| { + println!("complete event data: {:?} sequence_number:{}", e.data, e.sequence_number); + let data: BridgeCompletEventData = serde_json::from_str(&e.data.to_string())?; + let event = BridgeContractEvent::InitialtorCompleted( + data.bridge_transfer_id.try_into().map_err(|err| { + BridgeContractError::ConversionFailed(format!( + "MVT initiatorbridge_transfer_completed_events bridge_transfer_id can't be reconstructed:{:?}", + err + )) + })?, + ); + Ok((event, e.sequence_number.into())) + }) + .collect::>>() + .map_err(|e| { + BridgeContractError::EventDeserializingFail( + format!("MVT bridge_transfer_completed_events de-serialization error:{}", e), + BridgeContractEventType::InitialtorCompleted, + ) + })?; + + // Get refunded events + let refunded_events = get_account_events( + rest_url, + &native_address_str, + &struct_tag, + "bridge_transfer_refunded_events", + pull_state.initiator_refund, + ) + .await? + .into_iter() + .map(|e| { + println!("refund event data: {:?} sequence_number:{}", e.data, e.sequence_number); + let data = deserialize_hex_vec(e.data)?; + let event = BridgeContractEvent::Refunded(data.try_into().map_err(|err| { + BridgeContractError::ConversionFailed(format!( + "MVT bridge_transfer_refunded_events bridge_transfer_id can't be reconstructed:{:?}", + err + )) + })?); + Ok((event, e.sequence_number.into())) + }) + .collect::>>() + .map_err(|e| { + BridgeContractError::EventDeserializingFail( + format!("MVT bridge_transfer_refunded_events de-serialization error:{}", e), + BridgeContractEventType::Refunded, + ) + })?; + + let total_events = initiated_events + .into_iter() + .chain(completed_events.into_iter()) + .chain(refunded_events.into_iter()) + .collect::>(); + Ok(total_events) +} + +async fn pool_counterpart_contract( + native_address: AccountAddress, + rest_url: &str, + pull_state: &MvtPullingState, +) -> BridgeContractResult, u64)>> { + let native_address_str = native_address.to_standard_string(); + let struct_tag = + format!("{}::atomic_bridge_counterparty::BridgeTransferDetails", native_address_str); + + // Get locked events + let locked_events = get_account_events( + rest_url, + &native_address_str, + &struct_tag, + "bridge_transfer_locked_events", + pull_state.counterpart_lock, + ) + .await? + .into_iter() + .map(|e| { + println!("Lock event data: {:?} sequence_number:{}", e.data, e.sequence_number); + let data: BridgeInitEventData = serde_json::from_str(&e.data.to_string())?; + let transfer_details = LockDetails::try_from(data)?; + Ok((BridgeContractEvent::Locked(transfer_details), e.sequence_number.into())) + }) + .collect::>>() + .map_err(|e| { + BridgeContractError::EventDeserializingFail( + format!("MVT bridge_transfer_locked_events de-serialization error:{}", e), + BridgeContractEventType::Locked, + ) + })?; + + // Get completed events + let completed_events = get_account_events( + rest_url, + &native_address_str, + &struct_tag, + "bridge_transfer_completed_events", + pull_state.counterpart_complete, + ) + .await? + .into_iter() + .map(|e| { + println!( + "Counterpart complete event data: {:?} sequence_number:{}", + e.data, e.sequence_number + ); + let data: BridgeCompletEventData = serde_json::from_str(&e.data.to_string())?; + let event = BridgeContractEvent::CounterPartCompleted( + data.bridge_transfer_id.try_into().map_err(|err| { + BridgeContractError::ConversionFailed(format!( + "MVT counterparty bridge_transfer_completed_events bridge_transfer_id can't be reconstructed:{:?}", + err + )) + })?, + HashLockPreImage(data.pre_image.try_into().map_err(|err| { + BridgeContractError::ConversionFailed(format!( + "MVT counterparty bridge_transfer_completed_events pre_image can't be reconstructed:{:?}", + err + )) + })?), + ); + Ok((event, e.sequence_number.into())) + }) + .collect::>>() + .map_err(|e| { + BridgeContractError::EventDeserializingFail( + format!( + "MVT counterpart bridge_transfer_completed_events de-serialization error:{}", + e + ), + BridgeContractEventType::CounterPartCompleted, + ) + })?; + + // Get cancelled events + let cancelled_events = get_account_events( + rest_url, + &native_address_str, + &struct_tag, + "bridge_transfer_cancelled_events", + pull_state.counterpart_cancel, + ) + .await? + .into_iter() + .map(|e| { + println!("refund event data: {:?} sequence_number:{}", e.data, e.sequence_number); + let data = deserialize_hex_vec(e.data)?; + let event = BridgeContractEvent::Cancelled(data.try_into().map_err(|err| { + BridgeContractError::ConversionFailed(format!( + "MVT bridge_transfer_cancelled_events bridge_transfer_id can't be reconstructed:{:?}", + err + )) + })?); + Ok((event, e.sequence_number.into())) + }) + .collect::>>() + .map_err(|e| { + BridgeContractError::EventDeserializingFail( + format!("MVT bridge_transfer_cancelled_events de-serialization error:{}", e), + BridgeContractEventType::Cancelled, + ) + })?; + + let total_events = locked_events + .into_iter() + .chain(completed_events.into_iter()) + .chain(cancelled_events.into_iter()) + .collect::>(); + Ok(total_events) +} + +#[derive(Debug, Deserialize)] +pub struct BridgeCompletEventData { + #[serde(deserialize_with = "deserialize_hex_vec")] + pub bridge_transfer_id: Vec, + #[serde(deserialize_with = "deserialize_hex_vec")] + pub pre_image: Vec, +} + +#[derive(Debug, Deserialize)] +pub struct BridgeInitEventData { + #[serde(deserialize_with = "deserialize_hex_vec")] + pub bridge_transfer_id: Vec, + #[serde(deserialize_with = "deserialize_hex_vec")] + pub initiator: Vec, + #[serde(deserialize_with = "deserialize_hex_vec")] + pub recipient: Vec, + #[serde(deserialize_with = "deserialize_hex_vec")] + pub hash_lock: Vec, + #[serde(deserialize_with = "deserialize_u64_from_string")] + pub time_lock: u64, + #[serde(deserialize_with = "deserialize_u64_from_string")] + pub amount: u64, +} + +// Custom deserialization function to convert a hex string to Vec +fn deserialize_hex_vec<'de, D>(deserializer: D) -> Result, D::Error> +where + D: Deserializer<'de>, +{ + let hex_str: &str = Deserialize::deserialize(deserializer)?; + let hex_str = if hex_str.starts_with("0x") { &hex_str[2..] } else { &hex_str }; + Vec::from_hex(hex_str).map_err(serde::de::Error::custom) +} + +fn deserialize_u64_from_string<'de, D>(deserializer: D) -> Result +where + D: Deserializer<'de>, +{ + let s: String = Deserialize::deserialize(deserializer)?; + s.parse::().map_err(serde::de::Error::custom) +} + +impl TryFrom for BridgeTransferDetails { + type Error = BridgeContractError; + + fn try_from(data: BridgeInitEventData) -> Result { + Ok(BridgeTransferDetails { + bridge_transfer_id: BridgeTransferId(data.bridge_transfer_id.try_into().map_err( + |e| { + BridgeContractError::ConversionFailed(format!( + "MVT BridgeTransferDetails data onchain bridge_transfer_id conversion error error:{:?}", + e + )) + }, + )?), + initiator_address: BridgeAddress(MovementAddress::from(data.initiator)), + recipient_address: BridgeAddress(data.recipient), + hash_lock: HashLock(data.hash_lock.try_into().map_err(|e| { + BridgeContractError::ConversionFailed(format!( + "MVT BridgeTransferDetails data onchain hash_lock conversion error error:{:?}", + e + )) + })?), + time_lock: TimeLock(data.time_lock), + amount: Amount(AssetType::Moveth(data.amount)), + state: 8, + }) + } +} + +impl TryFrom for LockDetails { + type Error = BridgeContractError; + + fn try_from(data: BridgeInitEventData) -> Result { + Ok(LockDetails { + bridge_transfer_id: BridgeTransferId(data.bridge_transfer_id.try_into().map_err( + |e| { + BridgeContractError::ConversionFailed(format!( + "MVT BridgeTransferDetails data onchain bridge_transfer_id conversion error error:{:?}", + e + )) + }, + )?), + initiator_address: BridgeAddress(data.recipient), + recipient_address: BridgeAddress(MovementAddress::from(data.initiator)), + hash_lock: HashLock(data.hash_lock.try_into().map_err(|e| { + BridgeContractError::ConversionFailed(format!( + "MVT BridgeTransferDetails data onchain hash_lock conversion error error:{:?}", + e + )) + })?), + time_lock: TimeLock(data.time_lock), + amount: Amount(AssetType::Moveth(data.amount)), + }) + } +} + +// Example of return string. +// [ +// { +// "version": "25", +// "guid": +// { +// "creation_number": "5", +// "account_address": "0xb07a6a200d595dd4ed39d9b91e3132e6c15735549e9920c585b2beec0ae659b6" +// }, +// "sequence_number": "0", +// "type": "0xb07a6a200d595dd4ed39d9b91e3132e6c15735549e9920c585b2beec0ae659b6::atomic_bridge_initiator::BridgeTransferInitiatedEvent", +// "data": +// { +// "amount": "100", +// "bridge_transfer_id": "0xeaefd189df98d57b8f4619584cff1fd67f2787c664ac8e9761ecfd7a6ae1fa2b", +// "hash_lock": "0xfb54fb738082d0214980feb4055e779d7d4722cb0809d5fbe79df8117801c3bb", +// "originator": "0xf90391c81027f03cdea491ed8b36ffaced26b6df208a9b569e5baf2590eb9b16", +// "recipient": "0x3078313233", +// "time_lock": "1", +// "state": 1 +// } +// } +// ] +async fn get_account_events( + rest_url: &str, + account_address: &str, + event_type: &str, + field_name: &str, + start_version: u64, +) -> Result, BridgeContractError> { + let url = format!( + "{}/v1/accounts/{}/events/{}/{}", + rest_url, account_address, event_type, field_name + ); + + let client = reqwest::Client::new(); + + // Send the GET request + let response = client + .get(&url) + .query(&[("start", &start_version.to_string()[..]), ("limit", "10")]) + .send() + .await + .map_err(|e| { + BridgeContractError::OnChainError(format!( + "MVT get_account_events get request error: {}", + e + )) + })?; + + // Print the raw response body + let raw_body = response.text().await.map_err(|e| { + BridgeContractError::OnChainError(format!( + "MVT get_account_events error while reading response body: {}", + e + )) + })?; + + // Print the raw response for debugging purposes + println!("Raw response body: {}", raw_body); + + // Now attempt to parse the response body as JSON + let response_json: Vec = serde_json::from_str(&raw_body).map_err(|e| { + BridgeContractError::OnChainError(format!( + "MVT get_account_events JSON conversion error: {}", + e + )) + })?; + + Ok(response_json) +} diff --git a/protocol-units/bridge/service/src/chains/movement/mod.rs b/protocol-units/bridge/service/src/chains/movement/mod.rs index 52a8ac4a5..b8a2b1644 100644 --- a/protocol-units/bridge/service/src/chains/movement/mod.rs +++ b/protocol-units/bridge/service/src/chains/movement/mod.rs @@ -1,4 +1,5 @@ pub mod client; pub mod client_framework; pub mod event_monitoring; +pub mod event_monitoring_framework; pub mod utils; From c2cd1aa9a4ece4cc1d9652f8d08cf60dd0ead23b Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Sun, 13 Oct 2024 07:27:59 -0400 Subject: [PATCH 15/35] feat: finding SmartTableWrapper object but not matching bridge transfer details --- .../bridge/integration-tests/src/utils.rs | 79 ++++++------- .../tests/client_l2move_l1move.rs | 105 +++++++++--------- .../src/chains/movement/client_framework.rs | 10 +- 3 files changed, 92 insertions(+), 102 deletions(-) diff --git a/protocol-units/bridge/integration-tests/src/utils.rs b/protocol-units/bridge/integration-tests/src/utils.rs index d211f0af2..7112e4242 100644 --- a/protocol-units/bridge/integration-tests/src/utils.rs +++ b/protocol-units/bridge/integration-tests/src/utils.rs @@ -11,7 +11,12 @@ use bridge_service::chains::movement::utils::{ self as movement_utils, MovementAddress, MovementHash, }; use bridge_service::types::{Amount, AssetType, BridgeAddress, BridgeTransferDetails, HashLock}; -use tracing::debug; +use serde_json::Value; +use tracing::{debug, info}; + +const FRAMEWORK_ADDRESS: AccountAddress = AccountAddress::new([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, +]); pub fn assert_bridge_transfer_details( details: &BridgeTransferDetails, // MovementAddress for initiator @@ -88,49 +93,6 @@ pub async fn extract_bridge_transfer_id( Err(anyhow::Error::msg("No matching transaction found")) } -pub async fn extract_bridge_transfer_id_framework( - movement_client: &mut MovementClientFramework, -) -> Result<[u8; 32], anyhow::Error> { - let sender_address = movement_client.signer().address(); - let sequence_number = 0; // Modify as needed - let rest_client = movement_client.rest_client(); - - let transactions = rest_client - .get_account_transactions(sender_address, Some(sequence_number), Some(20)) - .await - .map_err(|e| anyhow::Error::msg(format!("Failed to get transactions: {:?}", e)))?; - - if let Some(transaction) = transactions.into_inner().last() { - if let Transaction::UserTransaction(user_txn) = transaction { - for event in &user_txn.events { - if let aptos_sdk::rest_client::aptos_api_types::MoveType::Struct(struct_tag) = - &event.typ - { - match struct_tag.name.as_str() { - "BridgeTransferInitiatedEvent" | "BridgeTransferLockedEvent" => { - if let Some(bridge_transfer_id) = - event.data.get("bridge_transfer_id").and_then(|v| v.as_str()) - { - let hex_str = bridge_transfer_id.trim_start_matches("0x"); - let decoded_vec = hex::decode(hex_str).map_err(|_| { - anyhow::Error::msg("Failed to decode hex string into Vec") - })?; - return decoded_vec.try_into().map_err(|_| { - anyhow::Error::msg( - "Failed to convert decoded Vec to [u8; 32]", - ) - }); - } - } - _ => {} - } - } - } - } - } - Err(anyhow::Error::msg("No matching transaction found")) -} - pub async fn extract_bridge_transfer_details_framework( movement_client: &mut MovementClientFramework, ) -> Result<([u8; 32], String, Vec, u64, [u8; 32], u64), anyhow::Error> { @@ -204,6 +166,35 @@ pub async fn extract_bridge_transfer_details_framework( Err(anyhow::Error::msg("No matching transaction found")) } +pub async fn fetch_bridge_transfer_details( + movement_client: &mut MovementClientFramework, + bridge_transfer_id: [u8; 32], +) -> Result, anyhow::Error> { + let rest_client = movement_client.rest_client(); + let account_address = FRAMEWORK_ADDRESS; + let resource_tag = "0x1::atomic_bridge_store::SmartTableWrapper, 0x1::atomic_bridge_store::BridgeTransferDetails>"; + let resource_response = rest_client + .get_account_resource(account_address, resource_tag) + .await + .map_err(|e| anyhow::Error::msg(format!("Failed to fetch resource: {:?}", e)))?; + + let bridge_transfer_id_hex = hex::encode(bridge_transfer_id); + info!("Bridge transfer ID hex: {:?}", bridge_transfer_id_hex); + let json_value: Value = resource_response.into_inner().unwrap().data; + + if let Some(transfers) = json_value.get("inner") { + if let Some(transfer_data) = transfers.get(&bridge_transfer_id_hex) { + let bridge_transfer_details: BridgeTransferDetails = + serde_json::from_value(transfer_data.clone()) + .map_err(|e| anyhow::Error::msg(format!("Failed to deserialize BridgeTransferDetails: {:?}", e)))?; + return Ok(bridge_transfer_details); + } + info!("Bridge transfers: {:?}", transfers); + } + + Err(anyhow::Error::msg("No matching bridge transfer details found")) +} + pub async fn fund_and_check_balance( movement_harness: &mut HarnessMvtClient, expected_balance: u64, diff --git a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs index e175bea50..5e1ba396a 100644 --- a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs +++ b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs @@ -7,7 +7,10 @@ use bridge_service::chains::bridge_contracts::BridgeContractEvent; use bridge_service::chains::movement::client_framework::MovementClientFramework; use bridge_service::chains::movement::event_monitoring_framework::MovementMonitoringFramework; use bridge_service::{ - chains::{bridge_contracts::BridgeContract, movement::{utils::MovementHash, event_monitoring::MovementMonitoring}}, + chains::{ + bridge_contracts::BridgeContract, + movement::{event_monitoring::MovementMonitoring, utils::MovementHash}, + }, types::{BridgeTransferId, HashLockPreImage}, }; use futures::StreamExt; @@ -40,18 +43,18 @@ async fn test_movement_client_build_and_fund_accounts() -> Result<(), anyhow::Er async fn test_movement_client_initiate_transfer() -> Result<(), anyhow::Error> { let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); - MovementClientFramework::bridge_setup_scripts().await?; + MovementClientFramework::bridge_setup_scripts().await?; - let config:Config = Config::suzuka(); - - let (mut mvt_client_harness, config) = - TestHarnessFramework::new_with_suzuka(config).await; + let config: Config = Config::suzuka(); + + let (mut mvt_client_harness, config) = TestHarnessFramework::new_with_suzuka(config).await; let args = MovementToEthCallArgs::default(); let test_result = async { let sender_address = mvt_client_harness.movement_client.signer().address(); - test_utils::fund_and_check_balance_framework(&mut mvt_client_harness, 100_000_000_000).await?; + test_utils::fund_and_check_balance_framework(&mut mvt_client_harness, 100_000_000_000) + .await?; test_utils::initiate_bridge_transfer_helper_framework( &mut mvt_client_harness.movement_client, args.initiator.0, @@ -63,10 +66,13 @@ async fn test_movement_client_initiate_transfer() -> Result<(), anyhow::Error> { .await .expect("Failed to initiate bridge transfer"); - let details:([u8; 32], String, Vec, u64, [u8; 32], u64) = - test_utils::extract_bridge_transfer_details_framework(&mut mvt_client_harness.movement_client).await?; + let details: ([u8; 32], String, Vec, u64, [u8; 32], u64) = + test_utils::extract_bridge_transfer_details_framework( + &mut mvt_client_harness.movement_client, + ) + .await?; info!("Bridge transfer details: {:?}", details); - + test_utils::assert_bridge_transfer_details_framework( &details, details.0, @@ -84,20 +90,23 @@ async fn test_movement_client_initiate_transfer() -> Result<(), anyhow::Error> { } #[tokio::test] -#[ignore] // Test fail when run with the other test: https://github.com/movementlabsxyz/movement/issues/656 async fn test_movement_client_complete_transfer() -> Result<(), anyhow::Error> { + // TODO: Get PR 80 merged into aptos-core so let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); - let default_config = Config::default(); - let (mut mvt_client_harness, _config, mut mvt_process) = - TestHarness::new_with_movement(default_config).await; + MovementClientFramework::bridge_setup_scripts().await?; + + let config: Config = Config::suzuka(); + + let (mut mvt_client_harness, config) = TestHarnessFramework::new_with_suzuka(config).await; let args = MovementToEthCallArgs::default(); let test_result = async { let sender_address = mvt_client_harness.movement_client.signer().address(); - test_utils::fund_and_check_balance(&mut mvt_client_harness, 100_000_000_000).await?; - test_utils::initiate_bridge_transfer_helper( + test_utils::fund_and_check_balance_framework(&mut mvt_client_harness, 100_000_000_000) + .await?; + test_utils::initiate_bridge_transfer_helper_framework( &mut mvt_client_harness.movement_client, args.initiator.0, args.recipient.clone(), @@ -108,57 +117,47 @@ async fn test_movement_client_complete_transfer() -> Result<(), anyhow::Error> { .await .expect("Failed to initiate bridge transfer"); - let bridge_transfer_id: [u8; 32] = - test_utils::extract_bridge_transfer_id(&mut mvt_client_harness.movement_client).await?; - info!("Bridge transfer id: {:?}", bridge_transfer_id); - let details = BridgeContract::get_bridge_transfer_details_initiator( - &mut mvt_client_harness.movement_client, - BridgeTransferId(MovementHash(bridge_transfer_id).0), - ) - .await - .expect("Failed to get bridge transfer details") - .expect("Expected to find bridge transfer details, but got None"); + let details: ([u8; 32], String, Vec, u64, [u8; 32], u64) = + test_utils::extract_bridge_transfer_details_framework( + &mut mvt_client_harness.movement_client, + ) + .await?; + info!("Bridge transfer details: {:?}", details); - test_utils::assert_bridge_transfer_details( + test_utils::assert_bridge_transfer_details_framework( &details, - MovementHash(bridge_transfer_id).0, - MovementHash(args.hash_lock.0).0, - sender_address, + details.0, + sender_address.to_string(), args.recipient.clone(), args.amount, - 1, + args.hash_lock.0, ); - let secret = b"secret"; - let mut padded_secret = [0u8; 32]; - padded_secret[..secret.len()].copy_from_slice(secret); - - BridgeContract::initiator_complete_bridge_transfer( - &mut mvt_client_harness.movement_client, - BridgeTransferId(MovementHash(bridge_transfer_id).0), - HashLockPreImage(padded_secret), - ) - .await - .expect("Failed to complete bridge transfer"); - - let details = BridgeContract::get_bridge_transfer_details_initiator( + //let secret = b"secret"; + //let mut padded_secret = [0u8; 32]; + //padded_secret[..secret.len()].copy_from_slice(secret); +// + //BridgeContract::initiator_complete_bridge_transfer( + // &mut mvt_client_harness.movement_client, + // BridgeTransferId(details.0), + // HashLockPreImage(padded_secret), + //) + //.await + //.expect("Failed to complete bridge transfer"); + + let complete_details = test_utils::fetch_bridge_transfer_details( &mut mvt_client_harness.movement_client, - BridgeTransferId(MovementHash(bridge_transfer_id).0), + details.0, ) - .await - .expect("Failed to get bridge transfer details") - .expect("Expected to find bridge transfer details, but got None"); + .await?; - assert_eq!(details.state, 2, "Bridge transfer should be completed."); + println!("Extracted transfer ID: {:?}", complete_details.bridge_transfer_id); + assert_eq!(complete_details.state, 2, "Bridge transfer should be completed."); Ok(()) } .await; - if let Err(e) = mvt_process.kill().await { - eprintln!("Failed to kill child process: {:?}", e); - } - test_result } diff --git a/protocol-units/bridge/service/src/chains/movement/client_framework.rs b/protocol-units/bridge/service/src/chains/movement/client_framework.rs index 6ee554697..b418760f2 100644 --- a/protocol-units/bridge/service/src/chains/movement/client_framework.rs +++ b/protocol-units/bridge/service/src/chains/movement/client_framework.rs @@ -171,6 +171,7 @@ impl BridgeContract for MovementClientFramework { } &preimage.0[..end] }; + println!("Unpadded preimage: {:?}", unpadded_preimage); let args2 = vec![ utils::serialize_vec_initiator(&bridge_transfer_id.0[..])?, utils::serialize_vec_initiator(unpadded_preimage)?, @@ -484,10 +485,9 @@ use tokio::{ impl MovementClientFramework { pub async fn bridge_setup_scripts() -> Result<()> { - - let project_root = Path::new("../../../"); - env::set_current_dir(&project_root) - .context("Failed to change directory to project root")?; + let project_root = Path::new("../../../"); + env::set_current_dir(&project_root) + .context("Failed to change directory to project root")?; let compile_output = Command::new("movement") .args(&[ @@ -556,7 +556,7 @@ impl MovementClientFramework { "--compiled-script-path", "protocol-units/bridge/move-modules/build/bridge-modules/bytecode_scripts/update_bridge_operator.mv", "--args", - "address:0xface", + "address:0xf90391c81027f03cdea491ed8b36ffaced26b6df208a9b569e5baf2590eb9b16", "--profile", "default", "--assume-yes", From de167865e71f74afd3e68383ad8015d7d8923a9f Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Sun, 13 Oct 2024 09:27:33 -0400 Subject: [PATCH 16/35] bump aptos-core rev for view function --- Cargo.toml | 64 +++++++++---------- .../bridge/integration-tests/src/utils.rs | 30 +++++---- .../tests/client_l2move_l1move.rs | 2 +- 3 files changed, 49 insertions(+), 47 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 04db262d7..8c4f957a9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -114,40 +114,40 @@ serde_yaml = "0.9.34" ## Aptos dependencies ### We use a forked version so that we can override dependency versions. This is required ### to be avoid dependency conflicts with other Sovereign Labs crates. -aptos-api = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } -aptos-api-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } -aptos-bitvec = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } -aptos-block-executor = { git = "https://github.com/movementlabsxyz/aptos-core.git", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } -aptos-cached-packages = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } -aptos-config = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } -aptos-consensus-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } -aptos-crypto = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd", features = [ +aptos-api = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-api-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-bitvec = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-block-executor = { git = "https://github.com/movementlabsxyz/aptos-core.git", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-cached-packages = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-config = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-consensus-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-crypto = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af", features = [ "cloneable-private-keys", ] } -aptos-db = { git = "https://github.com/movementlabsxyz/aptos-core.git", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } -aptos-executor = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } -aptos-executor-test-helpers = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } -aptos-executor-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } -aptos-faucet-core = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } -aptos-framework = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } -aptos-language-e2e-tests = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } -aptos-mempool = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } -aptos-proptest-helpers = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } -aptos-sdk = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } -aptos-state-view = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } -aptos-storage-interface = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } -aptos-temppath = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } -aptos-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } -aptos-vm = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } -aptos-vm-genesis = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } -aptos-vm-logging = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } -aptos-vm-validator = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } -aptos-logger = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } -aptos-vm-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } -aptos-indexer = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } -aptos-indexer-grpc-fullnode = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } -aptos-indexer-grpc-table-info = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } -aptos-protos = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "70be3926ff79ff4cdb0cee928f717fafcd41ecdd" } +aptos-db = { git = "https://github.com/movementlabsxyz/aptos-core.git", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-executor = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-executor-test-helpers = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-executor-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-faucet-core = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-framework = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-language-e2e-tests = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-mempool = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-proptest-helpers = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-sdk = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-state-view = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-storage-interface = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-temppath = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-vm = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-vm-genesis = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-vm-logging = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-vm-validator = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-logger = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-vm-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-indexer = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-indexer-grpc-fullnode = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-indexer-grpc-table-info = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-protos = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } # Indexer processor = { git = "https://github.com/movementlabsxyz/aptos-indexer-processors", rev = "8e83cde3cb75fabdade9485e0af680cc4b73ca8e", subdir = "rust" } diff --git a/protocol-units/bridge/integration-tests/src/utils.rs b/protocol-units/bridge/integration-tests/src/utils.rs index 7112e4242..01db0b4f9 100644 --- a/protocol-units/bridge/integration-tests/src/utils.rs +++ b/protocol-units/bridge/integration-tests/src/utils.rs @@ -168,30 +168,32 @@ pub async fn extract_bridge_transfer_details_framework( pub async fn fetch_bridge_transfer_details( movement_client: &mut MovementClientFramework, - bridge_transfer_id: [u8; 32], + bridge_transfer_id: Vec, ) -> Result, anyhow::Error> { let rest_client = movement_client.rest_client(); let account_address = FRAMEWORK_ADDRESS; - let resource_tag = "0x1::atomic_bridge_store::SmartTableWrapper, 0x1::atomic_bridge_store::BridgeTransferDetails>"; + let resource_tag = "0x1::atomic_bridge_store::SmartTableWrapper, 0x1::atomic_bridge_store::BridgeTransferDetails>"; + let resource_response = rest_client .get_account_resource(account_address, resource_tag) .await .map_err(|e| anyhow::Error::msg(format!("Failed to fetch resource: {:?}", e)))?; - - let bridge_transfer_id_hex = hex::encode(bridge_transfer_id); - info!("Bridge transfer ID hex: {:?}", bridge_transfer_id_hex); + let json_value: Value = resource_response.into_inner().unwrap().data; - - if let Some(transfers) = json_value.get("inner") { - if let Some(transfer_data) = transfers.get(&bridge_transfer_id_hex) { - let bridge_transfer_details: BridgeTransferDetails = - serde_json::from_value(transfer_data.clone()) - .map_err(|e| anyhow::Error::msg(format!("Failed to deserialize BridgeTransferDetails: {:?}", e)))?; - return Ok(bridge_transfer_details); + + if let Some(transfers) = json_value.get("inner").and_then(|t| t.get("buckets")) { + for (key, value) in transfers.as_object().unwrap().iter() { + let key_vec = hex::decode(key).expect("Failed to decode key"); // Convert the key into Vec + + if key_vec == bridge_transfer_id { + let bridge_transfer_details: BridgeTransferDetails = + serde_json::from_value(value.clone()) + .map_err(|e| anyhow::Error::msg(format!("Failed to deserialize BridgeTransferDetails: {:?}", e)))?; + return Ok(bridge_transfer_details); + } } - info!("Bridge transfers: {:?}", transfers); } - + Err(anyhow::Error::msg("No matching bridge transfer details found")) } diff --git a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs index 5e1ba396a..efb93ec69 100644 --- a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs +++ b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs @@ -147,7 +147,7 @@ async fn test_movement_client_complete_transfer() -> Result<(), anyhow::Error> { let complete_details = test_utils::fetch_bridge_transfer_details( &mut mvt_client_harness.movement_client, - details.0, + details.0.into(), ) .await?; From 4c077a0e9d6370ee1be35eb1631d591f0434abcc Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Mon, 14 Oct 2024 03:52:22 -0400 Subject: [PATCH 17/35] test: debugging linker error --- Cargo.lock | 268 +++++++++--------- .../tests/client_l2move_l1move.rs | 11 + .../src/chains/movement/client_framework.rs | 4 +- 3 files changed, 147 insertions(+), 136 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 49ad9cbc1..ba3a3554a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -11,7 +11,7 @@ checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" [[package]] name = "abstract-domain-derive" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "proc-macro2", "quote", @@ -794,7 +794,7 @@ checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" [[package]] name = "aptos-abstract-gas-usage" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-gas-algebra", @@ -807,7 +807,7 @@ dependencies = [ [[package]] name = "aptos-accumulator" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-crypto", @@ -817,7 +817,7 @@ dependencies = [ [[package]] name = "aptos-aggregator" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "aptos-logger", "aptos-types", @@ -831,7 +831,7 @@ dependencies = [ [[package]] name = "aptos-api" version = "0.2.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-api-types", @@ -873,7 +873,7 @@ dependencies = [ [[package]] name = "aptos-api-types" version = "0.0.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-config", @@ -903,7 +903,7 @@ dependencies = [ [[package]] name = "aptos-bcs-utils" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "hex", @@ -912,7 +912,7 @@ dependencies = [ [[package]] name = "aptos-bitvec" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "serde", "serde_bytes", @@ -921,7 +921,7 @@ dependencies = [ [[package]] name = "aptos-block-executor" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-aggregator", @@ -956,7 +956,7 @@ dependencies = [ [[package]] name = "aptos-block-partitioner" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "aptos-crypto", "aptos-logger", @@ -977,7 +977,7 @@ dependencies = [ [[package]] name = "aptos-bounded-executor" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "futures", "rustversion", @@ -987,7 +987,7 @@ dependencies = [ [[package]] name = "aptos-build-info" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "shadow-rs", ] @@ -995,7 +995,7 @@ dependencies = [ [[package]] name = "aptos-cached-packages" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-framework", @@ -1009,7 +1009,7 @@ dependencies = [ [[package]] name = "aptos-channels" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-infallible", @@ -1020,7 +1020,7 @@ dependencies = [ [[package]] name = "aptos-compression" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "aptos-logger", "aptos-metrics-core", @@ -1032,7 +1032,7 @@ dependencies = [ [[package]] name = "aptos-config" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-crypto", @@ -1063,7 +1063,7 @@ dependencies = [ [[package]] name = "aptos-consensus-types" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-bitvec", @@ -1090,7 +1090,7 @@ dependencies = [ [[package]] name = "aptos-crypto" version = "0.0.3" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "aes-gcm", "anyhow", @@ -1143,7 +1143,7 @@ dependencies = [ [[package]] name = "aptos-crypto-derive" version = "0.0.3" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "proc-macro2", "quote", @@ -1153,7 +1153,7 @@ dependencies = [ [[package]] name = "aptos-db" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-accumulator", @@ -1201,7 +1201,7 @@ dependencies = [ [[package]] name = "aptos-db-indexer" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-config", @@ -1221,7 +1221,7 @@ dependencies = [ [[package]] name = "aptos-db-indexer-schemas" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-schemadb", @@ -1235,7 +1235,7 @@ dependencies = [ [[package]] name = "aptos-dkg" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-crypto", @@ -1266,7 +1266,7 @@ dependencies = [ [[package]] name = "aptos-drop-helper" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "aptos-infallible", "aptos-metrics-core", @@ -1277,7 +1277,7 @@ dependencies = [ [[package]] name = "aptos-event-notifications" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-channels", @@ -1293,7 +1293,7 @@ dependencies = [ [[package]] name = "aptos-executor" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-consensus-types", @@ -1325,7 +1325,7 @@ dependencies = [ [[package]] name = "aptos-executor-service" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "aptos-block-partitioner", "aptos-config", @@ -1355,7 +1355,7 @@ dependencies = [ [[package]] name = "aptos-executor-test-helpers" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-cached-packages", @@ -1377,7 +1377,7 @@ dependencies = [ [[package]] name = "aptos-executor-types" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-crypto", @@ -1397,7 +1397,7 @@ dependencies = [ [[package]] name = "aptos-experimental-runtimes" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "aptos-runtimes", "core_affinity", @@ -1410,7 +1410,7 @@ dependencies = [ [[package]] name = "aptos-faucet-core" version = "2.0.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-config", @@ -1444,7 +1444,7 @@ dependencies = [ [[package]] name = "aptos-faucet-metrics-server" version = "2.0.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-logger", @@ -1458,7 +1458,7 @@ dependencies = [ [[package]] name = "aptos-framework" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-aggregator", @@ -1526,7 +1526,7 @@ dependencies = [ [[package]] name = "aptos-gas-algebra" version = "0.0.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "either", "move-core-types", @@ -1535,7 +1535,7 @@ dependencies = [ [[package]] name = "aptos-gas-meter" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "aptos-gas-algebra", "aptos-gas-schedule", @@ -1550,7 +1550,7 @@ dependencies = [ [[package]] name = "aptos-gas-profiling" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-gas-algebra", @@ -1570,7 +1570,7 @@ dependencies = [ [[package]] name = "aptos-gas-schedule" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "aptos-gas-algebra", "aptos-global-constants", @@ -1583,17 +1583,17 @@ dependencies = [ [[package]] name = "aptos-global-constants" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" [[package]] name = "aptos-id-generator" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" [[package]] name = "aptos-indexer" version = "0.0.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-api", @@ -1625,7 +1625,7 @@ dependencies = [ [[package]] name = "aptos-indexer-grpc-fullnode" version = "1.0.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-api", @@ -1637,7 +1637,7 @@ dependencies = [ "aptos-mempool", "aptos-metrics-core", "aptos-moving-average 0.1.0 (git+https://github.com/movementlabsxyz/aptos-indexer-processors)", - "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd)", + "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af)", "aptos-runtimes", "aptos-storage-interface", "aptos-types", @@ -1663,7 +1663,7 @@ dependencies = [ [[package]] name = "aptos-indexer-grpc-table-info" version = "1.0.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-api", @@ -1694,11 +1694,11 @@ dependencies = [ [[package]] name = "aptos-indexer-grpc-utils" version = "1.0.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-metrics-core", - "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd)", + "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af)", "async-trait", "backoff", "base64 0.13.1", @@ -1726,12 +1726,12 @@ dependencies = [ [[package]] name = "aptos-infallible" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" [[package]] name = "aptos-jellyfish-merkle" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-crypto", @@ -1759,7 +1759,7 @@ dependencies = [ [[package]] name = "aptos-keygen" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "aptos-crypto", "aptos-types", @@ -1769,7 +1769,7 @@ dependencies = [ [[package]] name = "aptos-language-e2e-tests" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-abstract-gas-usage", @@ -1813,7 +1813,7 @@ dependencies = [ [[package]] name = "aptos-ledger" version = "0.2.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "aptos-crypto", "aptos-types", @@ -1826,7 +1826,7 @@ dependencies = [ [[package]] name = "aptos-log-derive" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "proc-macro2", "quote", @@ -1836,7 +1836,7 @@ dependencies = [ [[package]] name = "aptos-logger" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "aptos-infallible", "aptos-log-derive", @@ -1860,7 +1860,7 @@ dependencies = [ [[package]] name = "aptos-memory-usage-tracker" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "aptos-gas-algebra", "aptos-gas-meter", @@ -1873,7 +1873,7 @@ dependencies = [ [[package]] name = "aptos-mempool" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-bounded-executor", @@ -1913,7 +1913,7 @@ dependencies = [ [[package]] name = "aptos-mempool-notifications" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "aptos-types", "async-trait", @@ -1926,7 +1926,7 @@ dependencies = [ [[package]] name = "aptos-memsocket" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "aptos-infallible", "bytes 1.7.2", @@ -1937,7 +1937,7 @@ dependencies = [ [[package]] name = "aptos-metrics-core" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "prometheus", @@ -1946,7 +1946,7 @@ dependencies = [ [[package]] name = "aptos-move-stdlib" version = "0.1.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "aptos-gas-schedule", "aptos-native-interface", @@ -1977,7 +1977,7 @@ dependencies = [ [[package]] name = "aptos-mvhashmap" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-aggregator", @@ -1998,7 +1998,7 @@ dependencies = [ [[package]] name = "aptos-native-interface" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "aptos-gas-algebra", "aptos-gas-schedule", @@ -2015,7 +2015,7 @@ dependencies = [ [[package]] name = "aptos-netcore" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "aptos-memsocket", "aptos-proxy", @@ -2032,7 +2032,7 @@ dependencies = [ [[package]] name = "aptos-network" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-bitvec", @@ -2077,7 +2077,7 @@ dependencies = [ [[package]] name = "aptos-node-identity" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-types", @@ -2088,7 +2088,7 @@ dependencies = [ [[package]] name = "aptos-node-resource-metrics" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "aptos-build-info", "aptos-infallible", @@ -2104,7 +2104,7 @@ dependencies = [ [[package]] name = "aptos-num-variants" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "proc-macro2", "quote", @@ -2114,7 +2114,7 @@ dependencies = [ [[package]] name = "aptos-openapi" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "async-trait", "percent-encoding", @@ -2127,7 +2127,7 @@ dependencies = [ [[package]] name = "aptos-package-builder" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-framework", @@ -2140,7 +2140,7 @@ dependencies = [ [[package]] name = "aptos-peer-monitoring-service-types" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "aptos-config", "aptos-types", @@ -2165,7 +2165,7 @@ dependencies = [ [[package]] name = "aptos-proptest-helpers" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "crossbeam", "proptest", @@ -2187,7 +2187,7 @@ dependencies = [ [[package]] name = "aptos-protos" version = "1.3.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "futures-core", "pbjson", @@ -2199,7 +2199,7 @@ dependencies = [ [[package]] name = "aptos-proxy" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "ipnet", ] @@ -2207,7 +2207,7 @@ dependencies = [ [[package]] name = "aptos-push-metrics" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "aptos-logger", "aptos-metrics-core", @@ -2218,7 +2218,7 @@ dependencies = [ [[package]] name = "aptos-resource-viewer" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-types", @@ -2232,7 +2232,7 @@ dependencies = [ [[package]] name = "aptos-rest-client" version = "0.0.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-api-types", @@ -2255,7 +2255,7 @@ dependencies = [ [[package]] name = "aptos-rocksdb-options" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "aptos-config", "rocksdb", @@ -2264,7 +2264,7 @@ dependencies = [ [[package]] name = "aptos-runtimes" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "rayon", "tokio", @@ -2273,7 +2273,7 @@ dependencies = [ [[package]] name = "aptos-schemadb" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-infallible", @@ -2290,7 +2290,7 @@ dependencies = [ [[package]] name = "aptos-scratchpad" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "aptos-crypto", "aptos-drop-helper", @@ -2309,7 +2309,7 @@ dependencies = [ [[package]] name = "aptos-sdk" version = "0.0.3" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-cached-packages", @@ -2331,7 +2331,7 @@ dependencies = [ [[package]] name = "aptos-sdk-builder" version = "0.2.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-types", @@ -2349,11 +2349,11 @@ dependencies = [ [[package]] name = "aptos-secure-net" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "aptos-logger", "aptos-metrics-core", - "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd)", + "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af)", "bcs 0.1.4", "crossbeam-channel", "once_cell", @@ -2367,7 +2367,7 @@ dependencies = [ [[package]] name = "aptos-secure-storage" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "aptos-crypto", "aptos-infallible", @@ -2388,7 +2388,7 @@ dependencies = [ [[package]] name = "aptos-short-hex-str" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "mirai-annotations", "serde", @@ -2399,7 +2399,7 @@ dependencies = [ [[package]] name = "aptos-speculative-state-helper" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-infallible", @@ -2410,7 +2410,7 @@ dependencies = [ [[package]] name = "aptos-storage-interface" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-crypto", @@ -2458,7 +2458,7 @@ dependencies = [ [[package]] name = "aptos-table-natives" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "aptos-gas-schedule", "aptos-native-interface", @@ -2476,7 +2476,7 @@ dependencies = [ [[package]] name = "aptos-temppath" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "hex", "rand 0.7.3", @@ -2485,7 +2485,7 @@ dependencies = [ [[package]] name = "aptos-time-service" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "aptos-infallible", "enum_dispatch", @@ -2498,7 +2498,7 @@ dependencies = [ [[package]] name = "aptos-types" version = "0.0.3" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-bitvec", @@ -2555,12 +2555,12 @@ dependencies = [ [[package]] name = "aptos-utils" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" [[package]] name = "aptos-vault-client" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "aptos-crypto", "base64 0.13.1", @@ -2576,7 +2576,7 @@ dependencies = [ [[package]] name = "aptos-vm" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-aggregator", @@ -2626,7 +2626,7 @@ dependencies = [ [[package]] name = "aptos-vm-genesis" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "aptos-cached-packages", "aptos-crypto", @@ -2647,7 +2647,7 @@ dependencies = [ [[package]] name = "aptos-vm-logging" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "aptos-crypto", "aptos-logger", @@ -2662,7 +2662,7 @@ dependencies = [ [[package]] name = "aptos-vm-types" version = "0.0.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-aggregator", @@ -2684,7 +2684,7 @@ dependencies = [ [[package]] name = "aptos-vm-validator" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "aptos-logger", @@ -8592,7 +8592,7 @@ dependencies = [ "aptos-language-e2e-tests", "aptos-logger", "aptos-mempool", - "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd)", + "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af)", "aptos-sdk", "aptos-storage-interface", "aptos-temppath", @@ -8936,7 +8936,7 @@ checksum = "1fafa6961cabd9c63bcd77a45d7e3b7f3b552b70417831fb0f56db717e72407e" [[package]] name = "move-abigen" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "bcs 0.1.4", @@ -8953,7 +8953,7 @@ dependencies = [ [[package]] name = "move-binary-format" version = "0.0.3" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "backtrace", @@ -8968,12 +8968,12 @@ dependencies = [ [[package]] name = "move-borrow-graph" version = "0.0.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" [[package]] name = "move-bytecode-source-map" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "bcs 0.1.4", @@ -8988,7 +8988,7 @@ dependencies = [ [[package]] name = "move-bytecode-spec" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "once_cell", "quote", @@ -8998,7 +8998,7 @@ dependencies = [ [[package]] name = "move-bytecode-utils" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "move-binary-format", @@ -9010,7 +9010,7 @@ dependencies = [ [[package]] name = "move-bytecode-verifier" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "fail", "move-binary-format", @@ -9024,7 +9024,7 @@ dependencies = [ [[package]] name = "move-bytecode-viewer" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "clap 4.5.19", @@ -9039,7 +9039,7 @@ dependencies = [ [[package]] name = "move-cli" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "clap 4.5.19", @@ -9069,7 +9069,7 @@ dependencies = [ [[package]] name = "move-command-line-common" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "difference", @@ -9086,7 +9086,7 @@ dependencies = [ [[package]] name = "move-compiler" version = "0.0.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "bcs 0.1.4", @@ -9112,7 +9112,7 @@ dependencies = [ [[package]] name = "move-compiler-v2" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "abstract-domain-derive", "anyhow", @@ -9143,7 +9143,7 @@ dependencies = [ [[package]] name = "move-core-types" version = "0.0.4" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "arbitrary", @@ -9168,7 +9168,7 @@ dependencies = [ [[package]] name = "move-coverage" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "bcs 0.1.4", @@ -9187,7 +9187,7 @@ dependencies = [ [[package]] name = "move-disassembler" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "clap 4.5.19", @@ -9204,7 +9204,7 @@ dependencies = [ [[package]] name = "move-docgen" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "clap 4.5.19", @@ -9223,7 +9223,7 @@ dependencies = [ [[package]] name = "move-errmapgen" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "move-command-line-common", @@ -9235,7 +9235,7 @@ dependencies = [ [[package]] name = "move-ir-compiler" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "bcs 0.1.4", @@ -9251,7 +9251,7 @@ dependencies = [ [[package]] name = "move-ir-to-bytecode" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "codespan-reporting", @@ -9269,7 +9269,7 @@ dependencies = [ [[package]] name = "move-ir-to-bytecode-syntax" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "hex", @@ -9282,7 +9282,7 @@ dependencies = [ [[package]] name = "move-ir-types" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "hex", "move-command-line-common", @@ -9295,7 +9295,7 @@ dependencies = [ [[package]] name = "move-model" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "codespan", @@ -9321,7 +9321,7 @@ dependencies = [ [[package]] name = "move-package" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "clap 4.5.19", @@ -9355,7 +9355,7 @@ dependencies = [ [[package]] name = "move-prover" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "atty", @@ -9382,7 +9382,7 @@ dependencies = [ [[package]] name = "move-prover-boogie-backend" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "async-trait", @@ -9411,7 +9411,7 @@ dependencies = [ [[package]] name = "move-prover-bytecode-pipeline" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "abstract-domain-derive", "anyhow", @@ -9428,7 +9428,7 @@ dependencies = [ [[package]] name = "move-resource-viewer" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "hex", @@ -9455,7 +9455,7 @@ dependencies = [ [[package]] name = "move-stackless-bytecode" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "abstract-domain-derive", "codespan-reporting", @@ -9474,7 +9474,7 @@ dependencies = [ [[package]] name = "move-stdlib" version = "0.1.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "hex", @@ -9497,7 +9497,7 @@ dependencies = [ [[package]] name = "move-symbol-pool" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "once_cell", "serde", @@ -9506,7 +9506,7 @@ dependencies = [ [[package]] name = "move-table-extension" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "better_any", "bytes 1.7.2", @@ -9521,7 +9521,7 @@ dependencies = [ [[package]] name = "move-unit-test" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "better_any", @@ -9549,7 +9549,7 @@ dependencies = [ [[package]] name = "move-vm-runtime" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "better_any", "bytes 1.7.2", @@ -9573,7 +9573,7 @@ dependencies = [ [[package]] name = "move-vm-test-utils" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "anyhow", "bytes 1.7.2", @@ -9588,7 +9588,7 @@ dependencies = [ [[package]] name = "move-vm-types" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd#70be3926ff79ff4cdb0cee928f717fafcd41ecdd" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" dependencies = [ "bcs 0.1.4", "derivative", @@ -13233,7 +13233,7 @@ name = "suzuka-client" version = "0.0.2" dependencies = [ "anyhow", - "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=70be3926ff79ff4cdb0cee928f717fafcd41ecdd)", + "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af)", "aptos-sdk", "aptos-types", "async-trait", diff --git a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs index efb93ec69..6be30eea5 100644 --- a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs +++ b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs @@ -73,6 +73,17 @@ async fn test_movement_client_initiate_transfer() -> Result<(), anyhow::Error> { .await?; info!("Bridge transfer details: {:?}", details); + + let details = BridgeContract::get_bridge_transfer_details_initiator( + &mut mvt_client_harness.movement_client, + BridgeTransferId(MovementHash(details.0)), + ) + .await + .expect("Failed to get bridge transfer details") + .expect("Expected to find bridge transfer details, but got None"); + + assert_eq!(details.state, 2, "Bridge transfer should be completed."); + test_utils::assert_bridge_transfer_details_framework( &details, details.0, diff --git a/protocol-units/bridge/service/src/chains/movement/client_framework.rs b/protocol-units/bridge/service/src/chains/movement/client_framework.rs index b418760f2..1432f0450 100644 --- a/protocol-units/bridge/service/src/chains/movement/client_framework.rs +++ b/protocol-units/bridge/service/src/chains/movement/client_framework.rs @@ -338,12 +338,12 @@ impl BridgeContract for MovementClientFramework { module: MoveModuleId { address: FRAMEWORK_ADDRESS.clone().into(), name: aptos_api_types::IdentifierWrapper( - Identifier::new("atomic_bridge_initiator") + Identifier::new("atomic_bridge_store") .map_err(|_| BridgeContractError::FunctionViewError)?, ), }, name: aptos_api_types::IdentifierWrapper( - Identifier::new("bridge_transfers") + Identifier::new("get_bridge_transfer_details") .map_err(|_| BridgeContractError::FunctionViewError)?, ), }, From ba1864f8693f7906039c00c36f1cc9aae44d52f7 Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Mon, 14 Oct 2024 06:43:19 -0400 Subject: [PATCH 18/35] feat: fetch details with get_bridge_transfer_details view function --- .../tests/client_l2move_l1move.rs | 12 ++-- .../src/chains/movement/client_framework.rs | 59 +++++++++++-------- 2 files changed, 40 insertions(+), 31 deletions(-) diff --git a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs index 6be30eea5..3467ea3bb 100644 --- a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs +++ b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs @@ -66,27 +66,27 @@ async fn test_movement_client_initiate_transfer() -> Result<(), anyhow::Error> { .await .expect("Failed to initiate bridge transfer"); - let details: ([u8; 32], String, Vec, u64, [u8; 32], u64) = + let initial_details: ([u8; 32], String, Vec, u64, [u8; 32], u64) = test_utils::extract_bridge_transfer_details_framework( &mut mvt_client_harness.movement_client, ) .await?; - info!("Bridge transfer details: {:?}", details); + info!("Bridge transfer details: {:?}", initial_details); let details = BridgeContract::get_bridge_transfer_details_initiator( &mut mvt_client_harness.movement_client, - BridgeTransferId(MovementHash(details.0)), + BridgeTransferId(initial_details.0), ) .await .expect("Failed to get bridge transfer details") .expect("Expected to find bridge transfer details, but got None"); - assert_eq!(details.state, 2, "Bridge transfer should be completed."); + assert_eq!(details.state, 1, "Bridge transfer should be initiated."); test_utils::assert_bridge_transfer_details_framework( - &details, - details.0, + &initial_details, + details.bridge_transfer_id.0, sender_address.to_string(), args.recipient.clone(), args.amount, diff --git a/protocol-units/bridge/service/src/chains/movement/client_framework.rs b/protocol-units/bridge/service/src/chains/movement/client_framework.rs index 1432f0450..a1f35780f 100644 --- a/protocol-units/bridge/service/src/chains/movement/client_framework.rs +++ b/protocol-units/bridge/service/src/chains/movement/client_framework.rs @@ -332,7 +332,7 @@ impl BridgeContract for MovementClientFramework { bridge_transfer_id: BridgeTransferId, ) -> BridgeContractResult>> { let bridge_transfer_id_hex = format!("0x{}", hex::encode(bridge_transfer_id.0)); - + let view_request = ViewRequest { function: EntryFunctionId { module: MoveModuleId { @@ -350,41 +350,50 @@ impl BridgeContract for MovementClientFramework { type_arguments: vec![], arguments: vec![serde_json::json!(bridge_transfer_id_hex)], }; - - debug!("View request: {:?}", view_request); - + let response: Response> = self .rest_client .view(&view_request, None) .await .map_err(|_| BridgeContractError::CallError)?; - + let values = response.inner(); - - if values.len() != 6 { + + if values.len() != 1 { return Err(BridgeContractError::InvalidResponseLength); } - - let originator = utils::val_as_str_initiator(values.first())?; - let recipient = utils::val_as_str_initiator(values.get(1))?; - let amount = utils::val_as_str_initiator(values.get(2))? - .parse::() - .map_err(|_| BridgeContractError::SerializationError)?; - let hash_lock = utils::val_as_str_initiator(values.get(3))?; - let time_lock = utils::val_as_str_initiator(values.get(4))? + + let value = &values[0]; + + let originator_address = AccountAddress::from_hex_literal( + value["addresses"]["initiator"].as_str().ok_or(BridgeContractError::SerializationError)? + ).map_err(|_| BridgeContractError::SerializationError)?; + + let recipient_address_bytes = hex::decode( + &value["addresses"]["recipient"]["inner"].as_str().ok_or(BridgeContractError::SerializationError)?[2..] + ).map_err(|_| BridgeContractError::SerializationError)?; + + let amount = value["amount"] + .as_str() + .ok_or(BridgeContractError::SerializationError)? .parse::() .map_err(|_| BridgeContractError::SerializationError)?; - let state = utils::val_as_u64_initiator(values.get(5))? as u8; - - let originator_address = AccountAddress::from_hex_literal(originator) + + let hash_lock_array: [u8; 32] = hex::decode( + &value["hash_lock"].as_str().ok_or(BridgeContractError::SerializationError)?[2..] + ).map_err(|_| BridgeContractError::SerializationError)?.try_into() .map_err(|_| BridgeContractError::SerializationError)?; - let recipient_address_bytes = - hex::decode(&recipient[2..]).map_err(|_| BridgeContractError::SerializationError)?; - let hash_lock_array: [u8; 32] = hex::decode(&hash_lock[2..]) - .map_err(|_| BridgeContractError::SerializationError)? - .try_into() + + let time_lock = value["time_lock"] + .as_str() + .ok_or(BridgeContractError::SerializationError)? + .parse::() .map_err(|_| BridgeContractError::SerializationError)?; - + + let state = value["state"] + .as_u64() + .ok_or(BridgeContractError::SerializationError)? as u8; + let details = BridgeTransferDetails { bridge_transfer_id, initiator_address: BridgeAddress(MovementAddress(originator_address)), @@ -394,7 +403,7 @@ impl BridgeContract for MovementClientFramework { time_lock: TimeLock(time_lock), state, }; - + Ok(Some(details)) } From c368bb75999a65861c8511d1580c0152ad696737 Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Mon, 14 Oct 2024 07:26:53 -0400 Subject: [PATCH 19/35] fix: properly get amount from BridgeTransferDetails --- .../tests/client_l2move_l1move.rs | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs index 3467ea3bb..ef5c68a37 100644 --- a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs +++ b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs @@ -3,9 +3,10 @@ use bridge_config::Config; use bridge_integration_tests::utils; use bridge_integration_tests::utils as test_utils; use bridge_integration_tests::{MovementToEthCallArgs, TestHarness, TestHarnessFramework}; -use bridge_service::chains::bridge_contracts::BridgeContractEvent; +use bridge_service::chains::bridge_contracts::{BridgeContractError, BridgeContractEvent}; use bridge_service::chains::movement::client_framework::MovementClientFramework; use bridge_service::chains::movement::event_monitoring_framework::MovementMonitoringFramework; +use bridge_service::types::AssetType; use bridge_service::{ chains::{ bridge_contracts::BridgeContract, @@ -73,7 +74,6 @@ async fn test_movement_client_initiate_transfer() -> Result<(), anyhow::Error> { .await?; info!("Bridge transfer details: {:?}", initial_details); - let details = BridgeContract::get_bridge_transfer_details_initiator( &mut mvt_client_harness.movement_client, BridgeTransferId(initial_details.0), @@ -82,15 +82,26 @@ async fn test_movement_client_initiate_transfer() -> Result<(), anyhow::Error> { .expect("Failed to get bridge transfer details") .expect("Expected to find bridge transfer details, but got None"); + let amount = match details.amount.0 { + AssetType::Moveth(amount) => { + println!("Amount in u64: {}", amount); + amount + }, + AssetType::EthAndWeth(amount) => { + 1 + } + + }; + assert_eq!(details.state, 1, "Bridge transfer should be initiated."); test_utils::assert_bridge_transfer_details_framework( &initial_details, details.bridge_transfer_id.0, - sender_address.to_string(), - args.recipient.clone(), - args.amount, - args.hash_lock.0, + details.initiator_address.to_string(), + details.recipient_address.0, + amount, + details.hash_lock.0, ); Ok(()) From 3d99f2797ef222aeccdd6544f7fe5aae26c52180 Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Mon, 14 Oct 2024 16:16:41 -0400 Subject: [PATCH 20/35] fix: BridgeContract: get_bridge_transfer_details correct struct formats --- Cargo.lock | 270 +++++++++--------- Cargo.toml | 64 ++--- .../tests/client_eth_movement.rs | 16 +- .../tests/client_l1move_l2move.rs | 8 +- .../tests/client_movement_eth.rs | 2 - .../service/src/chains/bridge_contracts.rs | 2 +- .../service/src/chains/ethereum/client.rs | 23 +- .../src/chains/ethereum/event_monitoring.rs | 1 + .../service/src/chains/movement/client.rs | 18 +- .../src/chains/movement/client_framework.rs | 85 +++--- .../src/chains/movement/event_monitoring.rs | 10 + .../movement/event_monitoring_framework.rs | 11 + protocol-units/bridge/service/src/types.rs | 1 + 13 files changed, 280 insertions(+), 231 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ba3a3554a..19782cce7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -11,7 +11,7 @@ checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" [[package]] name = "abstract-domain-derive" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "proc-macro2", "quote", @@ -794,7 +794,7 @@ checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" [[package]] name = "aptos-abstract-gas-usage" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-gas-algebra", @@ -807,7 +807,7 @@ dependencies = [ [[package]] name = "aptos-accumulator" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-crypto", @@ -817,7 +817,7 @@ dependencies = [ [[package]] name = "aptos-aggregator" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "aptos-logger", "aptos-types", @@ -831,7 +831,7 @@ dependencies = [ [[package]] name = "aptos-api" version = "0.2.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-api-types", @@ -873,7 +873,7 @@ dependencies = [ [[package]] name = "aptos-api-types" version = "0.0.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-config", @@ -903,7 +903,7 @@ dependencies = [ [[package]] name = "aptos-bcs-utils" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "hex", @@ -912,7 +912,7 @@ dependencies = [ [[package]] name = "aptos-bitvec" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "serde", "serde_bytes", @@ -921,7 +921,7 @@ dependencies = [ [[package]] name = "aptos-block-executor" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-aggregator", @@ -956,7 +956,7 @@ dependencies = [ [[package]] name = "aptos-block-partitioner" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "aptos-crypto", "aptos-logger", @@ -977,7 +977,7 @@ dependencies = [ [[package]] name = "aptos-bounded-executor" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "futures", "rustversion", @@ -987,7 +987,7 @@ dependencies = [ [[package]] name = "aptos-build-info" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "shadow-rs", ] @@ -995,7 +995,7 @@ dependencies = [ [[package]] name = "aptos-cached-packages" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-framework", @@ -1009,7 +1009,7 @@ dependencies = [ [[package]] name = "aptos-channels" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-infallible", @@ -1020,7 +1020,7 @@ dependencies = [ [[package]] name = "aptos-compression" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "aptos-logger", "aptos-metrics-core", @@ -1032,7 +1032,7 @@ dependencies = [ [[package]] name = "aptos-config" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-crypto", @@ -1063,7 +1063,7 @@ dependencies = [ [[package]] name = "aptos-consensus-types" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-bitvec", @@ -1090,7 +1090,7 @@ dependencies = [ [[package]] name = "aptos-crypto" version = "0.0.3" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "aes-gcm", "anyhow", @@ -1143,7 +1143,7 @@ dependencies = [ [[package]] name = "aptos-crypto-derive" version = "0.0.3" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "proc-macro2", "quote", @@ -1153,7 +1153,7 @@ dependencies = [ [[package]] name = "aptos-db" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-accumulator", @@ -1201,7 +1201,7 @@ dependencies = [ [[package]] name = "aptos-db-indexer" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-config", @@ -1221,7 +1221,7 @@ dependencies = [ [[package]] name = "aptos-db-indexer-schemas" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-schemadb", @@ -1235,7 +1235,7 @@ dependencies = [ [[package]] name = "aptos-dkg" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-crypto", @@ -1266,7 +1266,7 @@ dependencies = [ [[package]] name = "aptos-drop-helper" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "aptos-infallible", "aptos-metrics-core", @@ -1277,7 +1277,7 @@ dependencies = [ [[package]] name = "aptos-event-notifications" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-channels", @@ -1293,7 +1293,7 @@ dependencies = [ [[package]] name = "aptos-executor" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-consensus-types", @@ -1325,7 +1325,7 @@ dependencies = [ [[package]] name = "aptos-executor-service" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "aptos-block-partitioner", "aptos-config", @@ -1355,7 +1355,7 @@ dependencies = [ [[package]] name = "aptos-executor-test-helpers" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-cached-packages", @@ -1377,7 +1377,7 @@ dependencies = [ [[package]] name = "aptos-executor-types" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-crypto", @@ -1397,7 +1397,7 @@ dependencies = [ [[package]] name = "aptos-experimental-runtimes" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "aptos-runtimes", "core_affinity", @@ -1410,7 +1410,7 @@ dependencies = [ [[package]] name = "aptos-faucet-core" version = "2.0.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-config", @@ -1444,7 +1444,7 @@ dependencies = [ [[package]] name = "aptos-faucet-metrics-server" version = "2.0.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-logger", @@ -1458,7 +1458,7 @@ dependencies = [ [[package]] name = "aptos-framework" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-aggregator", @@ -1526,7 +1526,7 @@ dependencies = [ [[package]] name = "aptos-gas-algebra" version = "0.0.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "either", "move-core-types", @@ -1535,7 +1535,7 @@ dependencies = [ [[package]] name = "aptos-gas-meter" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "aptos-gas-algebra", "aptos-gas-schedule", @@ -1550,7 +1550,7 @@ dependencies = [ [[package]] name = "aptos-gas-profiling" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-gas-algebra", @@ -1570,7 +1570,7 @@ dependencies = [ [[package]] name = "aptos-gas-schedule" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "aptos-gas-algebra", "aptos-global-constants", @@ -1583,17 +1583,17 @@ dependencies = [ [[package]] name = "aptos-global-constants" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" [[package]] name = "aptos-id-generator" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" [[package]] name = "aptos-indexer" version = "0.0.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-api", @@ -1625,7 +1625,7 @@ dependencies = [ [[package]] name = "aptos-indexer-grpc-fullnode" version = "1.0.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-api", @@ -1637,7 +1637,7 @@ dependencies = [ "aptos-mempool", "aptos-metrics-core", "aptos-moving-average 0.1.0 (git+https://github.com/movementlabsxyz/aptos-indexer-processors)", - "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af)", + "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48)", "aptos-runtimes", "aptos-storage-interface", "aptos-types", @@ -1663,7 +1663,7 @@ dependencies = [ [[package]] name = "aptos-indexer-grpc-table-info" version = "1.0.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-api", @@ -1694,11 +1694,11 @@ dependencies = [ [[package]] name = "aptos-indexer-grpc-utils" version = "1.0.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-metrics-core", - "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af)", + "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48)", "async-trait", "backoff", "base64 0.13.1", @@ -1726,12 +1726,12 @@ dependencies = [ [[package]] name = "aptos-infallible" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" [[package]] name = "aptos-jellyfish-merkle" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-crypto", @@ -1759,7 +1759,7 @@ dependencies = [ [[package]] name = "aptos-keygen" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "aptos-crypto", "aptos-types", @@ -1769,7 +1769,7 @@ dependencies = [ [[package]] name = "aptos-language-e2e-tests" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-abstract-gas-usage", @@ -1813,7 +1813,7 @@ dependencies = [ [[package]] name = "aptos-ledger" version = "0.2.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "aptos-crypto", "aptos-types", @@ -1826,7 +1826,7 @@ dependencies = [ [[package]] name = "aptos-log-derive" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "proc-macro2", "quote", @@ -1836,7 +1836,7 @@ dependencies = [ [[package]] name = "aptos-logger" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "aptos-infallible", "aptos-log-derive", @@ -1860,7 +1860,7 @@ dependencies = [ [[package]] name = "aptos-memory-usage-tracker" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "aptos-gas-algebra", "aptos-gas-meter", @@ -1873,7 +1873,7 @@ dependencies = [ [[package]] name = "aptos-mempool" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-bounded-executor", @@ -1913,7 +1913,7 @@ dependencies = [ [[package]] name = "aptos-mempool-notifications" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "aptos-types", "async-trait", @@ -1926,7 +1926,7 @@ dependencies = [ [[package]] name = "aptos-memsocket" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "aptos-infallible", "bytes 1.7.2", @@ -1937,7 +1937,7 @@ dependencies = [ [[package]] name = "aptos-metrics-core" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "prometheus", @@ -1946,7 +1946,7 @@ dependencies = [ [[package]] name = "aptos-move-stdlib" version = "0.1.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "aptos-gas-schedule", "aptos-native-interface", @@ -1977,7 +1977,7 @@ dependencies = [ [[package]] name = "aptos-mvhashmap" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-aggregator", @@ -1998,7 +1998,7 @@ dependencies = [ [[package]] name = "aptos-native-interface" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "aptos-gas-algebra", "aptos-gas-schedule", @@ -2015,7 +2015,7 @@ dependencies = [ [[package]] name = "aptos-netcore" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "aptos-memsocket", "aptos-proxy", @@ -2032,7 +2032,7 @@ dependencies = [ [[package]] name = "aptos-network" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-bitvec", @@ -2077,7 +2077,7 @@ dependencies = [ [[package]] name = "aptos-node-identity" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-types", @@ -2088,7 +2088,7 @@ dependencies = [ [[package]] name = "aptos-node-resource-metrics" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "aptos-build-info", "aptos-infallible", @@ -2104,7 +2104,7 @@ dependencies = [ [[package]] name = "aptos-num-variants" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "proc-macro2", "quote", @@ -2114,7 +2114,7 @@ dependencies = [ [[package]] name = "aptos-openapi" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "async-trait", "percent-encoding", @@ -2127,7 +2127,7 @@ dependencies = [ [[package]] name = "aptos-package-builder" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-framework", @@ -2140,7 +2140,7 @@ dependencies = [ [[package]] name = "aptos-peer-monitoring-service-types" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "aptos-config", "aptos-types", @@ -2165,7 +2165,7 @@ dependencies = [ [[package]] name = "aptos-proptest-helpers" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "crossbeam", "proptest", @@ -2175,7 +2175,7 @@ dependencies = [ [[package]] name = "aptos-protos" version = "1.3.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=338f9a1bcc06f62ce4a4994f1642b9a61b631ee0#338f9a1bcc06f62ce4a4994f1642b9a61b631ee0" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "futures-core", "pbjson", @@ -2187,7 +2187,7 @@ dependencies = [ [[package]] name = "aptos-protos" version = "1.3.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=338f9a1bcc06f62ce4a4994f1642b9a61b631ee0#338f9a1bcc06f62ce4a4994f1642b9a61b631ee0" dependencies = [ "futures-core", "pbjson", @@ -2199,7 +2199,7 @@ dependencies = [ [[package]] name = "aptos-proxy" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "ipnet", ] @@ -2207,7 +2207,7 @@ dependencies = [ [[package]] name = "aptos-push-metrics" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "aptos-logger", "aptos-metrics-core", @@ -2218,7 +2218,7 @@ dependencies = [ [[package]] name = "aptos-resource-viewer" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-types", @@ -2232,7 +2232,7 @@ dependencies = [ [[package]] name = "aptos-rest-client" version = "0.0.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-api-types", @@ -2255,7 +2255,7 @@ dependencies = [ [[package]] name = "aptos-rocksdb-options" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "aptos-config", "rocksdb", @@ -2264,7 +2264,7 @@ dependencies = [ [[package]] name = "aptos-runtimes" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "rayon", "tokio", @@ -2273,7 +2273,7 @@ dependencies = [ [[package]] name = "aptos-schemadb" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-infallible", @@ -2290,7 +2290,7 @@ dependencies = [ [[package]] name = "aptos-scratchpad" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "aptos-crypto", "aptos-drop-helper", @@ -2309,7 +2309,7 @@ dependencies = [ [[package]] name = "aptos-sdk" version = "0.0.3" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-cached-packages", @@ -2331,7 +2331,7 @@ dependencies = [ [[package]] name = "aptos-sdk-builder" version = "0.2.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-types", @@ -2349,11 +2349,11 @@ dependencies = [ [[package]] name = "aptos-secure-net" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "aptos-logger", "aptos-metrics-core", - "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af)", + "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48)", "bcs 0.1.4", "crossbeam-channel", "once_cell", @@ -2367,7 +2367,7 @@ dependencies = [ [[package]] name = "aptos-secure-storage" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "aptos-crypto", "aptos-infallible", @@ -2388,7 +2388,7 @@ dependencies = [ [[package]] name = "aptos-short-hex-str" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "mirai-annotations", "serde", @@ -2399,7 +2399,7 @@ dependencies = [ [[package]] name = "aptos-speculative-state-helper" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-infallible", @@ -2410,7 +2410,7 @@ dependencies = [ [[package]] name = "aptos-storage-interface" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-crypto", @@ -2458,7 +2458,7 @@ dependencies = [ [[package]] name = "aptos-table-natives" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "aptos-gas-schedule", "aptos-native-interface", @@ -2476,7 +2476,7 @@ dependencies = [ [[package]] name = "aptos-temppath" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "hex", "rand 0.7.3", @@ -2485,7 +2485,7 @@ dependencies = [ [[package]] name = "aptos-time-service" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "aptos-infallible", "enum_dispatch", @@ -2498,7 +2498,7 @@ dependencies = [ [[package]] name = "aptos-types" version = "0.0.3" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-bitvec", @@ -2555,12 +2555,12 @@ dependencies = [ [[package]] name = "aptos-utils" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" [[package]] name = "aptos-vault-client" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "aptos-crypto", "base64 0.13.1", @@ -2576,7 +2576,7 @@ dependencies = [ [[package]] name = "aptos-vm" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-aggregator", @@ -2626,7 +2626,7 @@ dependencies = [ [[package]] name = "aptos-vm-genesis" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "aptos-cached-packages", "aptos-crypto", @@ -2647,7 +2647,7 @@ dependencies = [ [[package]] name = "aptos-vm-logging" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "aptos-crypto", "aptos-logger", @@ -2662,7 +2662,7 @@ dependencies = [ [[package]] name = "aptos-vm-types" version = "0.0.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-aggregator", @@ -2684,7 +2684,7 @@ dependencies = [ [[package]] name = "aptos-vm-validator" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "aptos-logger", @@ -8592,7 +8592,7 @@ dependencies = [ "aptos-language-e2e-tests", "aptos-logger", "aptos-mempool", - "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af)", + "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48)", "aptos-sdk", "aptos-storage-interface", "aptos-temppath", @@ -8936,7 +8936,7 @@ checksum = "1fafa6961cabd9c63bcd77a45d7e3b7f3b552b70417831fb0f56db717e72407e" [[package]] name = "move-abigen" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "bcs 0.1.4", @@ -8953,7 +8953,7 @@ dependencies = [ [[package]] name = "move-binary-format" version = "0.0.3" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "backtrace", @@ -8968,12 +8968,12 @@ dependencies = [ [[package]] name = "move-borrow-graph" version = "0.0.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" [[package]] name = "move-bytecode-source-map" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "bcs 0.1.4", @@ -8988,7 +8988,7 @@ dependencies = [ [[package]] name = "move-bytecode-spec" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "once_cell", "quote", @@ -8998,7 +8998,7 @@ dependencies = [ [[package]] name = "move-bytecode-utils" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "move-binary-format", @@ -9010,7 +9010,7 @@ dependencies = [ [[package]] name = "move-bytecode-verifier" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "fail", "move-binary-format", @@ -9024,7 +9024,7 @@ dependencies = [ [[package]] name = "move-bytecode-viewer" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "clap 4.5.19", @@ -9039,7 +9039,7 @@ dependencies = [ [[package]] name = "move-cli" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "clap 4.5.19", @@ -9069,7 +9069,7 @@ dependencies = [ [[package]] name = "move-command-line-common" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "difference", @@ -9086,7 +9086,7 @@ dependencies = [ [[package]] name = "move-compiler" version = "0.0.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "bcs 0.1.4", @@ -9112,7 +9112,7 @@ dependencies = [ [[package]] name = "move-compiler-v2" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "abstract-domain-derive", "anyhow", @@ -9143,7 +9143,7 @@ dependencies = [ [[package]] name = "move-core-types" version = "0.0.4" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "arbitrary", @@ -9168,7 +9168,7 @@ dependencies = [ [[package]] name = "move-coverage" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "bcs 0.1.4", @@ -9187,7 +9187,7 @@ dependencies = [ [[package]] name = "move-disassembler" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "clap 4.5.19", @@ -9204,7 +9204,7 @@ dependencies = [ [[package]] name = "move-docgen" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "clap 4.5.19", @@ -9223,7 +9223,7 @@ dependencies = [ [[package]] name = "move-errmapgen" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "move-command-line-common", @@ -9235,7 +9235,7 @@ dependencies = [ [[package]] name = "move-ir-compiler" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "bcs 0.1.4", @@ -9251,7 +9251,7 @@ dependencies = [ [[package]] name = "move-ir-to-bytecode" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "codespan-reporting", @@ -9269,7 +9269,7 @@ dependencies = [ [[package]] name = "move-ir-to-bytecode-syntax" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "hex", @@ -9282,7 +9282,7 @@ dependencies = [ [[package]] name = "move-ir-types" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "hex", "move-command-line-common", @@ -9295,7 +9295,7 @@ dependencies = [ [[package]] name = "move-model" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "codespan", @@ -9321,7 +9321,7 @@ dependencies = [ [[package]] name = "move-package" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "clap 4.5.19", @@ -9355,7 +9355,7 @@ dependencies = [ [[package]] name = "move-prover" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "atty", @@ -9382,7 +9382,7 @@ dependencies = [ [[package]] name = "move-prover-boogie-backend" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "async-trait", @@ -9411,7 +9411,7 @@ dependencies = [ [[package]] name = "move-prover-bytecode-pipeline" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "abstract-domain-derive", "anyhow", @@ -9428,7 +9428,7 @@ dependencies = [ [[package]] name = "move-resource-viewer" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "hex", @@ -9455,7 +9455,7 @@ dependencies = [ [[package]] name = "move-stackless-bytecode" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "abstract-domain-derive", "codespan-reporting", @@ -9474,7 +9474,7 @@ dependencies = [ [[package]] name = "move-stdlib" version = "0.1.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "hex", @@ -9497,7 +9497,7 @@ dependencies = [ [[package]] name = "move-symbol-pool" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "once_cell", "serde", @@ -9506,7 +9506,7 @@ dependencies = [ [[package]] name = "move-table-extension" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "better_any", "bytes 1.7.2", @@ -9521,7 +9521,7 @@ dependencies = [ [[package]] name = "move-unit-test" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "better_any", @@ -9549,7 +9549,7 @@ dependencies = [ [[package]] name = "move-vm-runtime" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "better_any", "bytes 1.7.2", @@ -9573,7 +9573,7 @@ dependencies = [ [[package]] name = "move-vm-test-utils" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "anyhow", "bytes 1.7.2", @@ -9588,7 +9588,7 @@ dependencies = [ [[package]] name = "move-vm-types" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af#620db441bd6e5900ca4f2317170ced52571a90af" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" dependencies = [ "bcs 0.1.4", "derivative", @@ -13233,7 +13233,7 @@ name = "suzuka-client" version = "0.0.2" dependencies = [ "anyhow", - "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=620db441bd6e5900ca4f2317170ced52571a90af)", + "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48)", "aptos-sdk", "aptos-types", "async-trait", diff --git a/Cargo.toml b/Cargo.toml index 8c4f957a9..41c88917b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -114,40 +114,40 @@ serde_yaml = "0.9.34" ## Aptos dependencies ### We use a forked version so that we can override dependency versions. This is required ### to be avoid dependency conflicts with other Sovereign Labs crates. -aptos-api = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } -aptos-api-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } -aptos-bitvec = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } -aptos-block-executor = { git = "https://github.com/movementlabsxyz/aptos-core.git", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } -aptos-cached-packages = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } -aptos-config = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } -aptos-consensus-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } -aptos-crypto = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af", features = [ +aptos-api = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-api-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-bitvec = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-block-executor = { git = "https://github.com/movementlabsxyz/aptos-core.git", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-cached-packages = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-config = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-consensus-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-crypto = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48", features = [ "cloneable-private-keys", ] } -aptos-db = { git = "https://github.com/movementlabsxyz/aptos-core.git", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } -aptos-executor = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } -aptos-executor-test-helpers = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } -aptos-executor-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } -aptos-faucet-core = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } -aptos-framework = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } -aptos-language-e2e-tests = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } -aptos-mempool = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } -aptos-proptest-helpers = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } -aptos-sdk = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } -aptos-state-view = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } -aptos-storage-interface = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } -aptos-temppath = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } -aptos-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } -aptos-vm = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } -aptos-vm-genesis = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } -aptos-vm-logging = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } -aptos-vm-validator = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } -aptos-logger = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } -aptos-vm-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } -aptos-indexer = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } -aptos-indexer-grpc-fullnode = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } -aptos-indexer-grpc-table-info = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } -aptos-protos = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "620db441bd6e5900ca4f2317170ced52571a90af" } +aptos-db = { git = "https://github.com/movementlabsxyz/aptos-core.git", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-executor = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-executor-test-helpers = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-executor-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-faucet-core = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-framework = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-language-e2e-tests = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-mempool = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-proptest-helpers = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-sdk = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-state-view = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-storage-interface = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-temppath = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-vm = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-vm-genesis = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-vm-logging = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-vm-validator = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-logger = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-vm-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-indexer = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-indexer-grpc-fullnode = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-indexer-grpc-table-info = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-protos = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } # Indexer processor = { git = "https://github.com/movementlabsxyz/aptos-indexer-processors", rev = "8e83cde3cb75fabdade9485e0af680cc4b73ca8e", subdir = "rust" } diff --git a/protocol-units/bridge/integration-tests/tests/client_eth_movement.rs b/protocol-units/bridge/integration-tests/tests/client_eth_movement.rs index 3566e4bd6..8fdf6cb88 100644 --- a/protocol-units/bridge/integration-tests/tests/client_eth_movement.rs +++ b/protocol-units/bridge/integration-tests/tests/client_eth_movement.rs @@ -114,11 +114,11 @@ async fn test_movement_client_should_successfully_call_lock_and_complete( assert_eq!(details.bridge_transfer_id.0, args.bridge_transfer_id.0); assert_eq!(details.hash_lock.0, args.hash_lock.0); assert_eq!( - &details.initiator_address.0 .0[32 - args.initiator.len()..], + &details.initiator_address.0, &args.initiator, "Initiator address does not match" ); - assert_eq!(details.recipient_address.0, args.recipient.0.to_vec()); + assert_eq!(details.recipient_address.0, args.recipient); assert_eq!(details.amount.0, AssetType::Moveth(args.amount)); assert_eq!(details.state, 1, "Bridge transfer is supposed to be locked but it's not."); @@ -145,11 +145,11 @@ async fn test_movement_client_should_successfully_call_lock_and_complete( assert_eq!(details.bridge_transfer_id.0, args.bridge_transfer_id.0); assert_eq!(details.hash_lock.0, args.hash_lock.0); assert_eq!( - &details.initiator_address.0 .0[32 - args.initiator.len()..], + &details.initiator_address.0, &args.initiator, "Initiator address does not match" ); - assert_eq!(details.recipient_address.0, args.recipient.0.to_vec()); + assert_eq!(details.recipient_address.0, args.recipient); assert_eq!(details.amount.0, AssetType::Moveth(args.amount)); assert_eq!(details.state, 2, "Bridge transfer is supposed to be completed but it's not."); @@ -224,11 +224,11 @@ async fn test_movement_client_should_successfully_call_lock_and_abort() -> Resul assert_eq!(details.bridge_transfer_id.0, args.bridge_transfer_id.0); assert_eq!(details.hash_lock.0, args.hash_lock.0); assert_eq!( - &details.initiator_address.0 .0[32 - args.initiator.len()..], + &details.initiator_address.0, &args.initiator, "Initiator address does not match" ); - assert_eq!(details.recipient_address.0, args.recipient.0.to_vec()); + assert_eq!(details.recipient_address.0, args.recipient); assert_eq!(details.amount.0, AssetType::Moveth(args.amount)); assert_eq!(details.state, 1, "Bridge transfer is supposed to be locked but it's not."); @@ -251,11 +251,11 @@ async fn test_movement_client_should_successfully_call_lock_and_abort() -> Resul assert_eq!(abort_details.bridge_transfer_id.0, args.bridge_transfer_id.0); assert_eq!(abort_details.hash_lock.0, args.hash_lock.0); assert_eq!( - &abort_details.initiator_address.0 .0[32 - args.initiator.len()..], + &abort_details.initiator_address.0, &args.initiator, "Initiator address does not match" ); - assert_eq!(abort_details.recipient_address.0, args.recipient.0.to_vec()); + assert_eq!(abort_details.recipient_address.0, args.recipient); assert_eq!(abort_details.amount.0, AssetType::Moveth(args.amount)); Ok(()) diff --git a/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs b/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs index 5f0a4c18e..5efad5971 100644 --- a/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs +++ b/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs @@ -141,11 +141,11 @@ async fn test_movement_client_complete_transfer( assert_eq!(details.bridge_transfer_id.0, args.bridge_transfer_id.0); assert_eq!(details.hash_lock.0, args.hash_lock.0); assert_eq!( - &details.initiator_address.0 .0[32 - args.initiator.len()..], + &details.initiator_address.0, &args.initiator, "Initiator address does not match" ); - assert_eq!(details.recipient_address.0, args.recipient.0.to_vec()); + assert_eq!(details.recipient_address.0, args.recipient); assert_eq!(details.amount.0, AssetType::Moveth(args.amount)); assert_eq!(details.state, 2, "Bridge transfer is supposed to be completed but it's not."); @@ -243,11 +243,11 @@ async fn test_movement_client_should_abort_transfer() -> Result<(), anyhow::Erro assert_eq!(abort_details.bridge_transfer_id.0, args.bridge_transfer_id.0); assert_eq!(abort_details.hash_lock.0, args.hash_lock.0); assert_eq!( - &abort_details.initiator_address.0 .0[32 - args.initiator.len()..], + &abort_details.initiator_address.0, &args.initiator, "Initiator address does not match" ); - assert_eq!(abort_details.recipient_address.0, args.recipient.0.to_vec()); + assert_eq!(abort_details.recipient_address.0, args.recipient); assert_eq!(abort_details.amount.0, AssetType::Moveth(args.amount)); Ok(()) diff --git a/protocol-units/bridge/integration-tests/tests/client_movement_eth.rs b/protocol-units/bridge/integration-tests/tests/client_movement_eth.rs index cc919428d..508c18c9c 100644 --- a/protocol-units/bridge/integration-tests/tests/client_movement_eth.rs +++ b/protocol-units/bridge/integration-tests/tests/client_movement_eth.rs @@ -1,5 +1,3 @@ -mod client_l2move_l1move; - use anyhow::Result; use bridge_config::Config; use bridge_integration_tests::utils; diff --git a/protocol-units/bridge/service/src/chains/bridge_contracts.rs b/protocol-units/bridge/service/src/chains/bridge_contracts.rs index 49707dab6..7064c28f6 100644 --- a/protocol-units/bridge/service/src/chains/bridge_contracts.rs +++ b/protocol-units/bridge/service/src/chains/bridge_contracts.rs @@ -173,7 +173,7 @@ pub trait BridgeContract: Clone + Unpin + Send + Sync { async fn get_bridge_transfer_details_counterparty( &mut self, bridge_transfer_id: BridgeTransferId, - ) -> BridgeContractResult>>; + ) -> BridgeContractResult>>; async fn lock_bridge_transfer( &mut self, diff --git a/protocol-units/bridge/service/src/chains/ethereum/client.rs b/protocol-units/bridge/service/src/chains/ethereum/client.rs index ed146cc2f..f626b80f4 100644 --- a/protocol-units/bridge/service/src/chains/ethereum/client.rs +++ b/protocol-units/bridge/service/src/chains/ethereum/client.rs @@ -6,8 +6,7 @@ use super::utils::{calculate_storage_slot, send_transaction, send_transaction_ru use crate::chains::bridge_contracts::BridgeContractError; use crate::chains::bridge_contracts::BridgeContractResult; use crate::types::{ - Amount, AssetType, BridgeAddress, BridgeTransferDetails, BridgeTransferId, HashLock, - HashLockPreImage, TimeLock, + Amount, AssetType, BridgeAddress, BridgeTransferDetails, BridgeTransferId, HashLock, HashLockPreImage, LockDetails, TimeLock }; use alloy::primitives::{Address, FixedBytes, U256}; use alloy::providers::{Provider, ProviderBuilder}; @@ -68,6 +67,16 @@ struct EthBridgeTransferDetails { pub state: u8, } +#[derive(RlpDecodable, RlpEncodable)] +struct EthBridgeTransferDetailsCounterparty { + pub amount: U256, + pub originator:[u8; 32], + pub recipient: EthAddress, + pub hash_lock: [u8; 32], + pub time_lock: U256, + pub state: u8, +} + // We need to be able to build the client and deploy the contracts // therfore the `initiator_contract` and `counterparty_contract` // should be optional, as their values will be unknown at the time of building the client. @@ -414,7 +423,7 @@ impl crate::chains::bridge_contracts::BridgeContract for EthClient { async fn get_bridge_transfer_details_counterparty( &mut self, bridge_transfer_id: BridgeTransferId, - ) -> BridgeContractResult>> { + ) -> BridgeContractResult>> { let generic_error = |desc| BridgeContractError::GenericError(String::from(desc)); let mapping_slot = U256::from(0); // the mapping is the zeroth slot in the contract @@ -429,13 +438,13 @@ impl crate::chains::bridge_contracts::BridgeContract for EthClient { println!("storage_bytes: {:?}", storage_bytes); let mut storage_slice = &storage_bytes[..]; - let eth_details = EthBridgeTransferDetails::decode(&mut storage_slice) + let eth_details = EthBridgeTransferDetailsCounterparty::decode(&mut storage_slice) .map_err(|_| generic_error("could not decode storage"))?; - Ok(Some(BridgeTransferDetails { + Ok(Some(LockDetails { bridge_transfer_id, - initiator_address: BridgeAddress(eth_details.originator), - recipient_address: BridgeAddress(eth_details.recipient.to_vec()), + initiator_address: BridgeAddress(eth_details.originator.to_vec()), + recipient_address: BridgeAddress(eth_details.recipient), hash_lock: HashLock(eth_details.hash_lock), //@TODO unit test these wrapping to check for any nasty side effects. time_lock: TimeLock(eth_details.time_lock.wrapping_to::()), diff --git a/protocol-units/bridge/service/src/chains/ethereum/event_monitoring.rs b/protocol-units/bridge/service/src/chains/ethereum/event_monitoring.rs index 66e2e1587..f7c1e6ded 100644 --- a/protocol-units/bridge/service/src/chains/ethereum/event_monitoring.rs +++ b/protocol-units/bridge/service/src/chains/ethereum/event_monitoring.rs @@ -167,6 +167,7 @@ impl EthMonitoring { amount: trlocked.amount.into(), hash_lock: HashLock(*trlocked.hashLock), time_lock: trlocked.timeLock.into(), + state: 8 }; BridgeContractEvent::Locked(details) }).map_err(|err| BridgeContractError::OnChainError(err.to_string())); diff --git a/protocol-units/bridge/service/src/chains/movement/client.rs b/protocol-units/bridge/service/src/chains/movement/client.rs index f82e6de5d..651c765f0 100644 --- a/protocol-units/bridge/service/src/chains/movement/client.rs +++ b/protocol-units/bridge/service/src/chains/movement/client.rs @@ -2,6 +2,7 @@ use super::utils::{self, MovementAddress}; use crate::chains::bridge_contracts::BridgeContract; use crate::chains::bridge_contracts::BridgeContractError; use crate::chains::bridge_contracts::BridgeContractResult; +use crate::types::LockDetails; use crate::types::{ Amount, AssetType, BridgeAddress, BridgeTransferDetails, BridgeTransferId, HashLock, HashLockPreImage, TimeLock, @@ -397,7 +398,7 @@ impl BridgeContract for MovementClient { async fn get_bridge_transfer_details_counterparty( &mut self, bridge_transfer_id: BridgeTransferId, - ) -> BridgeContractResult>> { + ) -> BridgeContractResult>> { let bridge_transfer_id_hex = format!("0x{}", hex::encode(bridge_transfer_id.0)); let view_request = ViewRequest { @@ -442,20 +443,19 @@ impl BridgeContract for MovementClient { .parse::() .map_err(|_| BridgeContractError::SerializationError)?; let state = utils::val_as_u64_initiator(values.get(5))? as u8; - - let originator_address = AccountAddress::from_hex_literal(originator) + let originator_address_bytes = + hex::decode(&originator[2..]).map_err(|_| BridgeContractError::SerializationError)?; + let recipient_address = AccountAddress::from_hex_literal(recipient) .map_err(|_| BridgeContractError::SerializationError)?; - let recipient_address_bytes = - hex::decode(&recipient[2..]).map_err(|_| BridgeContractError::SerializationError)?; - let hash_lock_array: [u8; 32] = hex::decode(&hash_lock[2..]) + let hash_lock_array: [u8; 32] = hex::decode(&hash_lock[2..]) .map_err(|_| BridgeContractError::SerializationError)? .try_into() .map_err(|_| BridgeContractError::SerializationError)?; - let details = BridgeTransferDetails { + let details = LockDetails { bridge_transfer_id, - initiator_address: BridgeAddress(MovementAddress(originator_address)), - recipient_address: BridgeAddress(recipient_address_bytes), + initiator_address: BridgeAddress(originator_address_bytes), + recipient_address: BridgeAddress(MovementAddress(recipient_address)), amount: Amount(AssetType::Moveth(amount)), hash_lock: HashLock(hash_lock_array), time_lock: TimeLock(time_lock), diff --git a/protocol-units/bridge/service/src/chains/movement/client_framework.rs b/protocol-units/bridge/service/src/chains/movement/client_framework.rs index a1f35780f..b470f8b53 100644 --- a/protocol-units/bridge/service/src/chains/movement/client_framework.rs +++ b/protocol-units/bridge/service/src/chains/movement/client_framework.rs @@ -2,10 +2,12 @@ use super::utils::{self, MovementAddress}; use crate::chains::bridge_contracts::BridgeContract; use crate::chains::bridge_contracts::BridgeContractError; use crate::chains::bridge_contracts::BridgeContractResult; +use crate::chains::ethereum::types::EthAddress; use crate::types::{ - Amount, AssetType, BridgeAddress, BridgeTransferDetails, BridgeTransferId, HashLock, + Amount, AssetType, BridgeAddress, BridgeTransferDetails, LockDetails, BridgeTransferId, HashLock, HashLockPreImage, TimeLock, }; +use alloy::primitives::Address; use anyhow::{Context, Result}; use aptos_api_types::{EntryFunctionId, MoveModuleId, ViewRequest}; use aptos_sdk::{ @@ -343,7 +345,7 @@ impl BridgeContract for MovementClientFramework { ), }, name: aptos_api_types::IdentifierWrapper( - Identifier::new("get_bridge_transfer_details") + Identifier::new("get_bridge_transfer_details_initiator") .map_err(|_| BridgeContractError::FunctionViewError)?, ), }, @@ -410,71 +412,88 @@ impl BridgeContract for MovementClientFramework { async fn get_bridge_transfer_details_counterparty( &mut self, bridge_transfer_id: BridgeTransferId, - ) -> BridgeContractResult>> { + ) -> BridgeContractResult>> { let bridge_transfer_id_hex = format!("0x{}", hex::encode(bridge_transfer_id.0)); - + let view_request = ViewRequest { function: EntryFunctionId { module: MoveModuleId { address: FRAMEWORK_ADDRESS.clone().into(), name: aptos_api_types::IdentifierWrapper( - Identifier::new("atomic_bridge_counterparty") + Identifier::new("atomic_bridge_store") .map_err(|_| BridgeContractError::FunctionViewError)?, ), }, name: aptos_api_types::IdentifierWrapper( - Identifier::new("bridge_transfers") + Identifier::new("get_bridge_transfer_details_counterparty") .map_err(|_| BridgeContractError::FunctionViewError)?, ), }, type_arguments: vec![], arguments: vec![serde_json::json!(bridge_transfer_id_hex)], }; - - debug!("View request: {:?}", view_request); - + let response: Response> = self .rest_client .view(&view_request, None) .await .map_err(|_| BridgeContractError::CallError)?; - + let values = response.inner(); - - if values.len() != 6 { + + if values.len() != 1 { return Err(BridgeContractError::InvalidResponseLength); } - - let originator = utils::val_as_str_initiator(values.first())?; - let recipient = utils::val_as_str_initiator(values.get(1))?; - let amount = utils::val_as_str_initiator(values.get(2))? + + let value = &values[0]; + + let originator_address_bytes = hex::decode( + &value["addresses"]["initiator"]["inner"] + .as_str() + .ok_or(BridgeContractError::SerializationError)?[2..], + ) + .map_err(|_| BridgeContractError::SerializationError)?; + + let recipient_address = AccountAddress::from_hex_literal( + value["addresses"]["recipient"].as_str().ok_or(BridgeContractError::SerializationError)?, + ) + .map_err(|_| BridgeContractError::SerializationError)?; + + let amount = value["amount"] + .as_str() + .ok_or(BridgeContractError::SerializationError)? .parse::() .map_err(|_| BridgeContractError::SerializationError)?; - let hash_lock = utils::val_as_str_initiator(values.get(3))?; - let time_lock = utils::val_as_str_initiator(values.get(4))? + + let hash_lock_array: [u8; 32] = hex::decode( + &value["hash_lock"] + .as_str() + .ok_or(BridgeContractError::SerializationError)?[2..], + ) + .map_err(|_| BridgeContractError::SerializationError)? + .try_into() + .map_err(|_| BridgeContractError::SerializationError)?; + + let time_lock = value["time_lock"] + .as_str() + .ok_or(BridgeContractError::SerializationError)? .parse::() .map_err(|_| BridgeContractError::SerializationError)?; - let state = utils::val_as_u64_initiator(values.get(5))? as u8; - - let originator_address = AccountAddress::from_hex_literal(originator) - .map_err(|_| BridgeContractError::SerializationError)?; - let recipient_address_bytes = - hex::decode(&recipient[2..]).map_err(|_| BridgeContractError::SerializationError)?; - let hash_lock_array: [u8; 32] = hex::decode(&hash_lock[2..]) - .map_err(|_| BridgeContractError::SerializationError)? - .try_into() - .map_err(|_| BridgeContractError::SerializationError)?; - - let details = BridgeTransferDetails { + + let state = value["state"] + .as_u64() + .ok_or(BridgeContractError::SerializationError)? as u8; + + let details = LockDetails { bridge_transfer_id, - initiator_address: BridgeAddress(MovementAddress(originator_address)), - recipient_address: BridgeAddress(recipient_address_bytes), + initiator_address: BridgeAddress(originator_address_bytes), + recipient_address: BridgeAddress(MovementAddress(recipient_address)), amount: Amount(AssetType::Moveth(amount)), hash_lock: HashLock(hash_lock_array), time_lock: TimeLock(time_lock), state, }; - + Ok(Some(details)) } } diff --git a/protocol-units/bridge/service/src/chains/movement/event_monitoring.rs b/protocol-units/bridge/service/src/chains/movement/event_monitoring.rs index 50c2245bf..8db71680d 100644 --- a/protocol-units/bridge/service/src/chains/movement/event_monitoring.rs +++ b/protocol-units/bridge/service/src/chains/movement/event_monitoring.rs @@ -474,6 +474,7 @@ pub struct BridgeInitEventData { pub time_lock: u64, #[serde(deserialize_with = "deserialize_u64_from_string")] pub amount: u64, + #[serde(deserialize_with = "deserialize_u8_from_string")] pub state: u8, } @@ -487,6 +488,14 @@ where Vec::from_hex(hex_str).map_err(serde::de::Error::custom) } +fn deserialize_u8_from_string<'de, D>(deserializer: D) -> Result +where + D: Deserializer<'de>, +{ + let s: String = Deserialize::deserialize(deserializer)?; + s.parse::().map_err(serde::de::Error::custom) +} + fn deserialize_u64_from_string<'de, D>(deserializer: D) -> Result where D: Deserializer<'de>, @@ -546,6 +555,7 @@ impl TryFrom for LockDetails { })?), time_lock: TimeLock(data.time_lock), amount: Amount(AssetType::Moveth(data.amount)), + state: data.state, }) } } diff --git a/protocol-units/bridge/service/src/chains/movement/event_monitoring_framework.rs b/protocol-units/bridge/service/src/chains/movement/event_monitoring_framework.rs index d0f074dbd..1800c042a 100644 --- a/protocol-units/bridge/service/src/chains/movement/event_monitoring_framework.rs +++ b/protocol-units/bridge/service/src/chains/movement/event_monitoring_framework.rs @@ -476,6 +476,8 @@ pub struct BridgeInitEventData { pub time_lock: u64, #[serde(deserialize_with = "deserialize_u64_from_string")] pub amount: u64, + #[serde(deserialize_with = "deserialize_u8_from_string")] + pub state: u8, } // Custom deserialization function to convert a hex string to Vec @@ -488,6 +490,14 @@ where Vec::from_hex(hex_str).map_err(serde::de::Error::custom) } +fn deserialize_u8_from_string<'de, D>(deserializer: D) -> Result +where + D: Deserializer<'de>, +{ + let s: String = Deserialize::deserialize(deserializer)?; + s.parse::().map_err(serde::de::Error::custom) +} + fn deserialize_u64_from_string<'de, D>(deserializer: D) -> Result where D: Deserializer<'de>, @@ -547,6 +557,7 @@ impl TryFrom for LockDetails { })?), time_lock: TimeLock(data.time_lock), amount: Amount(AssetType::Moveth(data.amount)), + state: data.state, }) } } diff --git a/protocol-units/bridge/service/src/types.rs b/protocol-units/bridge/service/src/types.rs index 3fab870a2..bbb95b5f3 100644 --- a/protocol-units/bridge/service/src/types.rs +++ b/protocol-units/bridge/service/src/types.rs @@ -232,4 +232,5 @@ pub struct LockDetails { pub hash_lock: HashLock, pub time_lock: TimeLock, pub amount: Amount, + pub state: u8, } From e51b6580a6202e85845fad0cf98bbfab8814d519 Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Mon, 14 Oct 2024 17:09:33 -0400 Subject: [PATCH 21/35] feat: test_movement_client_initiate_transfer passes --- .../bridge/integration-tests/src/utils.rs | 61 +++--------- .../tests/client_l2move_l1move.rs | 92 ++++++++++--------- 2 files changed, 66 insertions(+), 87 deletions(-) diff --git a/protocol-units/bridge/integration-tests/src/utils.rs b/protocol-units/bridge/integration-tests/src/utils.rs index 01db0b4f9..d1c3fca26 100644 --- a/protocol-units/bridge/integration-tests/src/utils.rs +++ b/protocol-units/bridge/integration-tests/src/utils.rs @@ -1,5 +1,5 @@ #![allow(dead_code)] -use crate::{HarnessMvtClient, HarnessMvtClientFramework}; +use crate::{HarnessMvtClient, HarnessMvtClientFramework, MovementToEthCallArgs}; use alloy::hex; use anyhow::Result; use aptos_sdk::{ @@ -35,19 +35,21 @@ pub fn assert_bridge_transfer_details( assert_eq!(details.state, expected_state, "Bridge transfer state mismatch."); } -pub fn assert_bridge_transfer_details_framework( - details: &([u8; 32], String, Vec, u64, [u8;32], u64), - expected_bridge_transfer_id: [u8; 32], +pub fn assert_counterparty_bridge_transfer_details_framework( + details: &BridgeTransferDetails, expected_sender_address: String, expected_recipient_address: Vec, expected_amount: u64, expected_hash_lock: [u8; 32], + expected_time_lock: u64 ) { - assert_eq!(details.0, expected_bridge_transfer_id); - assert_eq!(details.1, expected_sender_address); - assert_eq!(details.2, expected_recipient_address); - assert_eq!(details.3, expected_amount); - assert_eq!(details.4, expected_hash_lock); + + + assert_eq!(details.initiator_address.to_string(), expected_sender_address); + assert_eq!(details.recipient_address, BridgeAddress(expected_recipient_address)); + assert_eq!(details.amount, Amount(AssetType::Moveth(expected_amount))); + assert_eq!(details.hash_lock.0, expected_hash_lock); + assert_eq!(details.time_lock.0, expected_time_lock); } pub async fn extract_bridge_transfer_id( @@ -93,9 +95,9 @@ pub async fn extract_bridge_transfer_id( Err(anyhow::Error::msg("No matching transaction found")) } -pub async fn extract_bridge_transfer_details_framework( +pub async fn extract_bridge_transfer_id_framework( movement_client: &mut MovementClientFramework, -) -> Result<([u8; 32], String, Vec, u64, [u8; 32], u64), anyhow::Error> { +) -> Result<[u8; 32], anyhow::Error> { let sender_address = movement_client.signer().address(); let sequence_number = 0; // Modify as needed let rest_client = movement_client.rest_client(); @@ -120,41 +122,8 @@ pub async fn extract_bridge_transfer_details_framework( .map_err(|_| anyhow::Error::msg("Failed to decode hex string into Vec"))?; let bridge_transfer_id: [u8; 32] = bridge_transfer_id_vec.try_into() .map_err(|_| anyhow::Error::msg("Failed to convert Vec to [u8; 32]"))?; - - let initiator = event.data.get("initiator") - .and_then(|v| v.as_str()) - .ok_or_else(|| anyhow::Error::msg("Missing initiator"))? - .to_string(); - - let recipient = hex::decode( - event.data.get("recipient") - .and_then(|v| v.as_str()) - .ok_or_else(|| anyhow::Error::msg("Missing recipient"))? - .trim_start_matches("0x")) - .map_err(|_| anyhow::Error::msg("Failed to decode recipient"))?; - - let amount = event.data.get("amount") - .and_then(|v| v.as_str()) - .ok_or_else(|| anyhow::Error::msg("Missing amount"))? - .parse::() - .map_err(|_| anyhow::Error::msg("Failed to parse amount"))?; - - let hash_lock_vec = hex::decode( - event.data.get("hash_lock") - .and_then(|v| v.as_str()) - .ok_or_else(|| anyhow::Error::msg("Missing hash_lock"))? - .trim_start_matches("0x")) - .map_err(|_| anyhow::Error::msg("Failed to decode hash_lock"))?; - let hash_lock: [u8; 32] = hash_lock_vec.try_into() - .map_err(|_| anyhow::Error::msg("Failed to convert Vec to [u8; 32]"))?; - - let time_lock = event.data.get("time_lock") - .and_then(|v| v.as_str()) - .ok_or_else(|| anyhow::Error::msg("Missing time_lock"))? - .parse::() - .map_err(|_| anyhow::Error::msg("Failed to parse time_lock"))?; - - return Ok((bridge_transfer_id, initiator, recipient, amount, hash_lock, time_lock)); + + return Ok(bridge_transfer_id); } } _ => {} diff --git a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs index ef5c68a37..733664f92 100644 --- a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs +++ b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs @@ -67,41 +67,35 @@ async fn test_movement_client_initiate_transfer() -> Result<(), anyhow::Error> { .await .expect("Failed to initiate bridge transfer"); - let initial_details: ([u8; 32], String, Vec, u64, [u8; 32], u64) = - test_utils::extract_bridge_transfer_details_framework( - &mut mvt_client_harness.movement_client, - ) - .await?; - info!("Bridge transfer details: {:?}", initial_details); + let bridge_transfer_id: [u8; 32] = test_utils::extract_bridge_transfer_id_framework( + &mut mvt_client_harness.movement_client, + ) + .await?; + info!("Bridge transfer ID: {:?}", bridge_transfer_id); let details = BridgeContract::get_bridge_transfer_details_initiator( &mut mvt_client_harness.movement_client, - BridgeTransferId(initial_details.0), + BridgeTransferId(bridge_transfer_id), ) .await .expect("Failed to get bridge transfer details") .expect("Expected to find bridge transfer details, but got None"); - let amount = match details.amount.0 { - AssetType::Moveth(amount) => { - println!("Amount in u64: {}", amount); - amount - }, - AssetType::EthAndWeth(amount) => { - 1 - } - - }; + info!("Bridge transfer details: {:?}", details); assert_eq!(details.state, 1, "Bridge transfer should be initiated."); - - test_utils::assert_bridge_transfer_details_framework( - &initial_details, - details.bridge_transfer_id.0, + + let amount = match details.amount.0 { + AssetType::Moveth(amount) => amount, + _ => panic!("Expected Moveth asset type but found something else"), + }; + test_utils::assert_counterparty_bridge_transfer_details_framework( + &details, details.initiator_address.to_string(), - details.recipient_address.0, + details.recipient_address.to_vec(), amount, details.hash_lock.0, + details.time_lock.0, ); Ok(()) @@ -113,7 +107,7 @@ async fn test_movement_client_initiate_transfer() -> Result<(), anyhow::Error> { #[tokio::test] async fn test_movement_client_complete_transfer() -> Result<(), anyhow::Error> { - // TODO: Get PR 80 merged into aptos-core so + // TODO: Get PR 80 merged into aptos-core so let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); MovementClientFramework::bridge_setup_scripts().await?; @@ -139,26 +133,42 @@ async fn test_movement_client_complete_transfer() -> Result<(), anyhow::Error> { .await .expect("Failed to initiate bridge transfer"); - let details: ([u8; 32], String, Vec, u64, [u8; 32], u64) = - test_utils::extract_bridge_transfer_details_framework( + let bridge_transfer_id: [u8; 32] = + test_utils::extract_bridge_transfer_id_framework( &mut mvt_client_harness.movement_client, ) .await?; + info!("Bridge transfer ID: {:?}", bridge_transfer_id); + + let details = BridgeContract::get_bridge_transfer_details_initiator( + &mut mvt_client_harness.movement_client, + BridgeTransferId(bridge_transfer_id), + ) + .await + .expect("Failed to get bridge transfer details") + .expect("Expected to find bridge transfer details, but got None"); + info!("Bridge transfer details: {:?}", details); - test_utils::assert_bridge_transfer_details_framework( - &details, - details.0, - sender_address.to_string(), - args.recipient.clone(), - args.amount, - args.hash_lock.0, - ); + let amount = match details.amount.0 { + AssetType::Moveth(amount) => amount, + _ => panic!("Expected Moveth asset type but found something else"), + }; + + //assert_eq!(details.state, 1, "Bridge transfer should be initiated."); + //test_utils::assert_counterparty_bridge_transfer_details_framework( + // &args, + // details.initiator_address.to_string(), + // details.recipient_address.0, + // amount, + // details.hash_lock.0, + // details.time_lock.0, + //); //let secret = b"secret"; //let mut padded_secret = [0u8; 32]; //padded_secret[..secret.len()].copy_from_slice(secret); -// + // //BridgeContract::initiator_complete_bridge_transfer( // &mut mvt_client_harness.movement_client, // BridgeTransferId(details.0), @@ -167,14 +177,14 @@ async fn test_movement_client_complete_transfer() -> Result<(), anyhow::Error> { //.await //.expect("Failed to complete bridge transfer"); - let complete_details = test_utils::fetch_bridge_transfer_details( - &mut mvt_client_harness.movement_client, - details.0.into(), - ) - .await?; + //let complete_details = test_utils::fetch_bridge_transfer_details( + // &mut mvt_client_harness.movement_client, + // details.into(), + //) + //.await?; - println!("Extracted transfer ID: {:?}", complete_details.bridge_transfer_id); - assert_eq!(complete_details.state, 2, "Bridge transfer should be completed."); + // println!("Extracted transfer ID: {:?}", complete_details.bridge_transfer_id); + // assert_eq!(complete_details.state, 2, "Bridge transfer should be completed."); Ok(()) } From 61934c03467f16d79856c34a45ffee90eef0da12 Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Mon, 14 Oct 2024 21:39:25 -0400 Subject: [PATCH 22/35] fix: initiator-side client tests setup. todo: debug invalid pre-image in complete --- Cargo.lock | 1 + .../bridge/integration-tests/Cargo.toml | 1 + .../bridge/integration-tests/src/utils.rs | 11 -- .../tests/client_l2move_l1move.rs | 118 ++++++++---------- .../src/chains/movement/client_framework.rs | 46 +++++++ 5 files changed, 100 insertions(+), 77 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 19782cce7..340a129ef 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4094,6 +4094,7 @@ dependencies = [ "bridge-config", "bridge-service", "bridge-setup", + "chrono", "dot-movement", "futures", "godfig", diff --git a/protocol-units/bridge/integration-tests/Cargo.toml b/protocol-units/bridge/integration-tests/Cargo.toml index 4347bb6f9..b3e9c18b1 100644 --- a/protocol-units/bridge/integration-tests/Cargo.toml +++ b/protocol-units/bridge/integration-tests/Cargo.toml @@ -19,6 +19,7 @@ aptos-types = { workspace = true } aptos-sdk = { workspace = true } anyhow = { workspace = true } bcs = { workspace = true } +chrono = "0.4" hex = { workspace = true } alloy = { workspace = true } reqwest = { workspace = true } diff --git a/protocol-units/bridge/integration-tests/src/utils.rs b/protocol-units/bridge/integration-tests/src/utils.rs index d1c3fca26..875b45d38 100644 --- a/protocol-units/bridge/integration-tests/src/utils.rs +++ b/protocol-units/bridge/integration-tests/src/utils.rs @@ -270,18 +270,7 @@ pub async fn initiate_bridge_transfer_helper_framework( recipient_address: Vec, hash_lock: [u8; 32], amount: u64, - timelock_modify: bool, ) -> Result<(), BridgeContractError> { - // Publish for test - - //if timelock_modify { - // // Set the timelock to 1 second for testing - // movement_client.initiator_set_timelock(1).await.expect("Failed to set timelock"); - //} - - // Mint MovETH to the initiator's address - - // Initiate the bridge transfer movement_client .initiate_bridge_transfer( BridgeAddress(MovementAddress(initiator_address)), diff --git a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs index 733664f92..b334785c4 100644 --- a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs +++ b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs @@ -1,3 +1,4 @@ +use alloy::primitives::keccak256; use anyhow::Result; use bridge_config::Config; use bridge_integration_tests::utils; @@ -14,6 +15,7 @@ use bridge_service::{ }, types::{BridgeTransferId, HashLockPreImage}, }; +use chrono::Utc; use futures::StreamExt; use tokio::time::{sleep, Duration}; use tokio::{self}; @@ -62,7 +64,6 @@ async fn test_movement_client_initiate_transfer() -> Result<(), anyhow::Error> { args.recipient.clone(), args.hash_lock.0, args.amount, - true, ) .await .expect("Failed to initiate bridge transfer"); @@ -89,6 +90,7 @@ async fn test_movement_client_initiate_transfer() -> Result<(), anyhow::Error> { AssetType::Moveth(amount) => amount, _ => panic!("Expected Moveth asset type but found something else"), }; + test_utils::assert_counterparty_bridge_transfer_details_framework( &details, details.initiator_address.to_string(), @@ -105,9 +107,9 @@ async fn test_movement_client_initiate_transfer() -> Result<(), anyhow::Error> { test_result } +// Failing with EINVALID_PRE_IMAGE(0x1). Client and unit tests for modules used in client_movement_eth pass. #[tokio::test] async fn test_movement_client_complete_transfer() -> Result<(), anyhow::Error> { - // TODO: Get PR 80 merged into aptos-core so let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); MovementClientFramework::bridge_setup_scripts().await?; @@ -128,18 +130,28 @@ async fn test_movement_client_complete_transfer() -> Result<(), anyhow::Error> { args.recipient.clone(), args.hash_lock.0, args.amount, - true, ) .await .expect("Failed to initiate bridge transfer"); - let bridge_transfer_id: [u8; 32] = - test_utils::extract_bridge_transfer_id_framework( - &mut mvt_client_harness.movement_client, - ) - .await?; + let bridge_transfer_id: [u8; 32] = test_utils::extract_bridge_transfer_id_framework( + &mut mvt_client_harness.movement_client, + ) + .await?; info!("Bridge transfer ID: {:?}", bridge_transfer_id); + let secret = b"secret"; + let mut padded_secret = [0u8; 32]; + padded_secret[..secret.len()].copy_from_slice(secret); + + BridgeContract::initiator_complete_bridge_transfer( + &mut mvt_client_harness.movement_client, + BridgeTransferId(bridge_transfer_id), + HashLockPreImage(padded_secret), + ) + .await + .expect("Failed to complete bridge transfer"); + let details = BridgeContract::get_bridge_transfer_details_initiator( &mut mvt_client_harness.movement_client, BridgeTransferId(bridge_transfer_id), @@ -150,41 +162,22 @@ async fn test_movement_client_complete_transfer() -> Result<(), anyhow::Error> { info!("Bridge transfer details: {:?}", details); + assert_eq!(details.state, 1, "Bridge transfer should be initiated."); + let amount = match details.amount.0 { AssetType::Moveth(amount) => amount, _ => panic!("Expected Moveth asset type but found something else"), }; + test_utils::assert_counterparty_bridge_transfer_details_framework( + &details, + details.initiator_address.to_string(), + details.recipient_address.to_vec(), + amount, + details.hash_lock.0, + details.time_lock.0, + ); - //assert_eq!(details.state, 1, "Bridge transfer should be initiated."); - //test_utils::assert_counterparty_bridge_transfer_details_framework( - // &args, - // details.initiator_address.to_string(), - // details.recipient_address.0, - // amount, - // details.hash_lock.0, - // details.time_lock.0, - //); - - //let secret = b"secret"; - //let mut padded_secret = [0u8; 32]; - //padded_secret[..secret.len()].copy_from_slice(secret); - // - //BridgeContract::initiator_complete_bridge_transfer( - // &mut mvt_client_harness.movement_client, - // BridgeTransferId(details.0), - // HashLockPreImage(padded_secret), - //) - //.await - //.expect("Failed to complete bridge transfer"); - - //let complete_details = test_utils::fetch_bridge_transfer_details( - // &mut mvt_client_harness.movement_client, - // details.into(), - //) - //.await?; - - // println!("Extracted transfer ID: {:?}", complete_details.bridge_transfer_id); - // assert_eq!(complete_details.state, 2, "Bridge transfer should be completed."); + assert_eq!(details.state, 2, "Bridge transfer should be completed."); Ok(()) } @@ -197,33 +190,34 @@ async fn test_movement_client_complete_transfer() -> Result<(), anyhow::Error> { async fn test_movement_client_refund_transfer() -> Result<(), anyhow::Error> { let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); - let config = Config::default(); - let (mut mvt_client_harness, _config, mut mvt_process) = - TestHarness::new_with_movement(config).await; + MovementClientFramework::bridge_setup_scripts().await?; + + let config: Config = Config::suzuka(); + + let (mut mvt_client_harness, config) = TestHarnessFramework::new_with_suzuka(config).await; let args = MovementToEthCallArgs::default(); let test_result = async { let sender_address = mvt_client_harness.movement_client.signer().address(); - test_utils::fund_and_check_balance(&mut mvt_client_harness, 100_000_000_000).await?; - - let ledger_info = mvt_client_harness.rest_client.get_ledger_information().await?; - println!("Ledger info: {:?}", ledger_info); - - test_utils::initiate_bridge_transfer_helper( + test_utils::fund_and_check_balance_framework(&mut mvt_client_harness, 100_000_000_000) + .await?; + test_utils::initiate_bridge_transfer_helper_framework( &mut mvt_client_harness.movement_client, args.initiator.0, args.recipient.clone(), args.hash_lock.0, args.amount, - true, ) .await .expect("Failed to initiate bridge transfer"); - let bridge_transfer_id: [u8; 32] = - test_utils::extract_bridge_transfer_id(&mut mvt_client_harness.movement_client).await?; - info!("Bridge transfer id: {:?}", bridge_transfer_id); + let bridge_transfer_id: [u8; 32] = test_utils::extract_bridge_transfer_id_framework( + &mut mvt_client_harness.movement_client, + ) + .await?; + info!("Bridge transfer ID: {:?}", bridge_transfer_id); + let details = BridgeContract::get_bridge_transfer_details_initiator( &mut mvt_client_harness.movement_client, BridgeTransferId(MovementHash(bridge_transfer_id).0), @@ -232,24 +226,18 @@ async fn test_movement_client_refund_transfer() -> Result<(), anyhow::Error> { .expect("Failed to get bridge transfer details") .expect("Expected to find bridge transfer details, but got None"); - utils::assert_bridge_transfer_details( - &details, - MovementHash(bridge_transfer_id).0, - MovementHash(args.hash_lock.0).0, - sender_address, - args.recipient.clone(), - args.amount, - 1, - ); + info!("Time lock: {:?}", details.time_lock); - sleep(Duration::from_secs(2)).await; + sleep(Duration::from_secs(20)).await; + + info!("Current timestamp: {:?}", Utc::now().timestamp()); BridgeContract::refund_bridge_transfer( &mut mvt_client_harness.movement_client, BridgeTransferId(MovementHash(bridge_transfer_id).0), ) .await - .expect("Failed to complete bridge transfer"); + .expect("Failed to refund bridge transfer"); let details = BridgeContract::get_bridge_transfer_details_initiator( &mut mvt_client_harness.movement_client, @@ -265,9 +253,7 @@ async fn test_movement_client_refund_transfer() -> Result<(), anyhow::Error> { } .await; - if let Err(e) = mvt_process.kill().await { - eprintln!("Failed to kill child process: {:?}", e); - } - test_result } + + diff --git a/protocol-units/bridge/service/src/chains/movement/client_framework.rs b/protocol-units/bridge/service/src/chains/movement/client_framework.rs index b470f8b53..f0e30ead6 100644 --- a/protocol-units/bridge/service/src/chains/movement/client_framework.rs +++ b/protocol-units/bridge/service/src/chains/movement/client_framework.rs @@ -600,6 +600,52 @@ impl MovementClientFramework { eprintln!("stderr: {}", String::from_utf8_lossy(&update_bridge_operator_output.stderr)); } + let set_initiator_time_lock_script_output = Command::new("movement") + .args(&[ + "move", + "run-script", + "--compiled-script-path", + "protocol-units/bridge/move-modules/build/bridge-modules/bytecode_scripts/set_initiator_time_lock_duration.mv", + "--args", + "u64: 11", + "--profile", + "default", + "--assume-yes", + ]) + .stdout(Stdio::piped()) + .stderr(Stdio::piped()) + .output()?; + + if !set_initiator_time_lock_script_output.stdout.is_empty() { + println!("stdout: {}", String::from_utf8_lossy(&update_bridge_operator_output.stdout)); + } + if !set_initiator_time_lock_script_output.stderr.is_empty() { + eprintln!("stderr: {}", String::from_utf8_lossy(&update_bridge_operator_output.stderr)); + } + + let set_counterparty_time_lock_script_output = Command::new("movement") + .args(&[ + "move", + "run-script", + "--compiled-script-path", + "protocol-units/bridge/move-modules/build/bridge-modules/bytecode_scripts/set_counterparty_time_lock_duration.mv", + "--args", + "u64: 5", + "--profile", + "default", + "--assume-yes", + ]) + .stdout(Stdio::piped()) + .stderr(Stdio::piped()) + .output()?; + + if !set_counterparty_time_lock_script_output.stdout.is_empty() { + println!("stdout: {}", String::from_utf8_lossy(&update_bridge_operator_output.stdout)); + } + if !set_counterparty_time_lock_script_output.stderr.is_empty() { + eprintln!("stderr: {}", String::from_utf8_lossy(&update_bridge_operator_output.stderr)); + } + Ok(()) } From f7f1b1221625c79f3f5065ce6c3d5be2c4008758 Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Mon, 14 Oct 2024 23:23:19 -0400 Subject: [PATCH 23/35] feat: movement initiator refund client test passing --- Cargo.lock | 270 ++++++++++++++++++++++++++--------------------------- Cargo.toml | 64 ++++++------- 2 files changed, 167 insertions(+), 167 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 340a129ef..475f725a4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -11,7 +11,7 @@ checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" [[package]] name = "abstract-domain-derive" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "proc-macro2", "quote", @@ -794,7 +794,7 @@ checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" [[package]] name = "aptos-abstract-gas-usage" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-gas-algebra", @@ -807,7 +807,7 @@ dependencies = [ [[package]] name = "aptos-accumulator" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-crypto", @@ -817,7 +817,7 @@ dependencies = [ [[package]] name = "aptos-aggregator" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "aptos-logger", "aptos-types", @@ -831,7 +831,7 @@ dependencies = [ [[package]] name = "aptos-api" version = "0.2.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-api-types", @@ -873,7 +873,7 @@ dependencies = [ [[package]] name = "aptos-api-types" version = "0.0.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-config", @@ -903,7 +903,7 @@ dependencies = [ [[package]] name = "aptos-bcs-utils" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "hex", @@ -912,7 +912,7 @@ dependencies = [ [[package]] name = "aptos-bitvec" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "serde", "serde_bytes", @@ -921,7 +921,7 @@ dependencies = [ [[package]] name = "aptos-block-executor" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-aggregator", @@ -956,7 +956,7 @@ dependencies = [ [[package]] name = "aptos-block-partitioner" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "aptos-crypto", "aptos-logger", @@ -977,7 +977,7 @@ dependencies = [ [[package]] name = "aptos-bounded-executor" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "futures", "rustversion", @@ -987,7 +987,7 @@ dependencies = [ [[package]] name = "aptos-build-info" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "shadow-rs", ] @@ -995,7 +995,7 @@ dependencies = [ [[package]] name = "aptos-cached-packages" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-framework", @@ -1009,7 +1009,7 @@ dependencies = [ [[package]] name = "aptos-channels" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-infallible", @@ -1020,7 +1020,7 @@ dependencies = [ [[package]] name = "aptos-compression" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "aptos-logger", "aptos-metrics-core", @@ -1032,7 +1032,7 @@ dependencies = [ [[package]] name = "aptos-config" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-crypto", @@ -1063,7 +1063,7 @@ dependencies = [ [[package]] name = "aptos-consensus-types" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-bitvec", @@ -1090,7 +1090,7 @@ dependencies = [ [[package]] name = "aptos-crypto" version = "0.0.3" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "aes-gcm", "anyhow", @@ -1143,7 +1143,7 @@ dependencies = [ [[package]] name = "aptos-crypto-derive" version = "0.0.3" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "proc-macro2", "quote", @@ -1153,7 +1153,7 @@ dependencies = [ [[package]] name = "aptos-db" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-accumulator", @@ -1201,7 +1201,7 @@ dependencies = [ [[package]] name = "aptos-db-indexer" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-config", @@ -1221,7 +1221,7 @@ dependencies = [ [[package]] name = "aptos-db-indexer-schemas" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-schemadb", @@ -1235,7 +1235,7 @@ dependencies = [ [[package]] name = "aptos-dkg" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-crypto", @@ -1266,7 +1266,7 @@ dependencies = [ [[package]] name = "aptos-drop-helper" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "aptos-infallible", "aptos-metrics-core", @@ -1277,7 +1277,7 @@ dependencies = [ [[package]] name = "aptos-event-notifications" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-channels", @@ -1293,7 +1293,7 @@ dependencies = [ [[package]] name = "aptos-executor" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-consensus-types", @@ -1325,7 +1325,7 @@ dependencies = [ [[package]] name = "aptos-executor-service" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "aptos-block-partitioner", "aptos-config", @@ -1355,7 +1355,7 @@ dependencies = [ [[package]] name = "aptos-executor-test-helpers" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-cached-packages", @@ -1377,7 +1377,7 @@ dependencies = [ [[package]] name = "aptos-executor-types" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-crypto", @@ -1397,7 +1397,7 @@ dependencies = [ [[package]] name = "aptos-experimental-runtimes" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "aptos-runtimes", "core_affinity", @@ -1410,7 +1410,7 @@ dependencies = [ [[package]] name = "aptos-faucet-core" version = "2.0.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-config", @@ -1444,7 +1444,7 @@ dependencies = [ [[package]] name = "aptos-faucet-metrics-server" version = "2.0.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-logger", @@ -1458,7 +1458,7 @@ dependencies = [ [[package]] name = "aptos-framework" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-aggregator", @@ -1526,7 +1526,7 @@ dependencies = [ [[package]] name = "aptos-gas-algebra" version = "0.0.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "either", "move-core-types", @@ -1535,7 +1535,7 @@ dependencies = [ [[package]] name = "aptos-gas-meter" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "aptos-gas-algebra", "aptos-gas-schedule", @@ -1550,7 +1550,7 @@ dependencies = [ [[package]] name = "aptos-gas-profiling" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-gas-algebra", @@ -1570,7 +1570,7 @@ dependencies = [ [[package]] name = "aptos-gas-schedule" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "aptos-gas-algebra", "aptos-global-constants", @@ -1583,17 +1583,17 @@ dependencies = [ [[package]] name = "aptos-global-constants" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" [[package]] name = "aptos-id-generator" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" [[package]] name = "aptos-indexer" version = "0.0.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-api", @@ -1625,7 +1625,7 @@ dependencies = [ [[package]] name = "aptos-indexer-grpc-fullnode" version = "1.0.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-api", @@ -1637,7 +1637,7 @@ dependencies = [ "aptos-mempool", "aptos-metrics-core", "aptos-moving-average 0.1.0 (git+https://github.com/movementlabsxyz/aptos-indexer-processors)", - "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48)", + "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c)", "aptos-runtimes", "aptos-storage-interface", "aptos-types", @@ -1663,7 +1663,7 @@ dependencies = [ [[package]] name = "aptos-indexer-grpc-table-info" version = "1.0.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-api", @@ -1694,11 +1694,11 @@ dependencies = [ [[package]] name = "aptos-indexer-grpc-utils" version = "1.0.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-metrics-core", - "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48)", + "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c)", "async-trait", "backoff", "base64 0.13.1", @@ -1726,12 +1726,12 @@ dependencies = [ [[package]] name = "aptos-infallible" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" [[package]] name = "aptos-jellyfish-merkle" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-crypto", @@ -1759,7 +1759,7 @@ dependencies = [ [[package]] name = "aptos-keygen" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "aptos-crypto", "aptos-types", @@ -1769,7 +1769,7 @@ dependencies = [ [[package]] name = "aptos-language-e2e-tests" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-abstract-gas-usage", @@ -1813,7 +1813,7 @@ dependencies = [ [[package]] name = "aptos-ledger" version = "0.2.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "aptos-crypto", "aptos-types", @@ -1826,7 +1826,7 @@ dependencies = [ [[package]] name = "aptos-log-derive" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "proc-macro2", "quote", @@ -1836,7 +1836,7 @@ dependencies = [ [[package]] name = "aptos-logger" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "aptos-infallible", "aptos-log-derive", @@ -1860,7 +1860,7 @@ dependencies = [ [[package]] name = "aptos-memory-usage-tracker" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "aptos-gas-algebra", "aptos-gas-meter", @@ -1873,7 +1873,7 @@ dependencies = [ [[package]] name = "aptos-mempool" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-bounded-executor", @@ -1913,7 +1913,7 @@ dependencies = [ [[package]] name = "aptos-mempool-notifications" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "aptos-types", "async-trait", @@ -1926,7 +1926,7 @@ dependencies = [ [[package]] name = "aptos-memsocket" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "aptos-infallible", "bytes 1.7.2", @@ -1937,7 +1937,7 @@ dependencies = [ [[package]] name = "aptos-metrics-core" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "prometheus", @@ -1946,7 +1946,7 @@ dependencies = [ [[package]] name = "aptos-move-stdlib" version = "0.1.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "aptos-gas-schedule", "aptos-native-interface", @@ -1977,7 +1977,7 @@ dependencies = [ [[package]] name = "aptos-mvhashmap" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-aggregator", @@ -1998,7 +1998,7 @@ dependencies = [ [[package]] name = "aptos-native-interface" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "aptos-gas-algebra", "aptos-gas-schedule", @@ -2015,7 +2015,7 @@ dependencies = [ [[package]] name = "aptos-netcore" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "aptos-memsocket", "aptos-proxy", @@ -2032,7 +2032,7 @@ dependencies = [ [[package]] name = "aptos-network" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-bitvec", @@ -2077,7 +2077,7 @@ dependencies = [ [[package]] name = "aptos-node-identity" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-types", @@ -2088,7 +2088,7 @@ dependencies = [ [[package]] name = "aptos-node-resource-metrics" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "aptos-build-info", "aptos-infallible", @@ -2104,7 +2104,7 @@ dependencies = [ [[package]] name = "aptos-num-variants" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "proc-macro2", "quote", @@ -2114,7 +2114,7 @@ dependencies = [ [[package]] name = "aptos-openapi" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "async-trait", "percent-encoding", @@ -2127,7 +2127,7 @@ dependencies = [ [[package]] name = "aptos-package-builder" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-framework", @@ -2140,7 +2140,7 @@ dependencies = [ [[package]] name = "aptos-peer-monitoring-service-types" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "aptos-config", "aptos-types", @@ -2165,7 +2165,7 @@ dependencies = [ [[package]] name = "aptos-proptest-helpers" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "crossbeam", "proptest", @@ -2175,7 +2175,7 @@ dependencies = [ [[package]] name = "aptos-protos" version = "1.3.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=338f9a1bcc06f62ce4a4994f1642b9a61b631ee0#338f9a1bcc06f62ce4a4994f1642b9a61b631ee0" dependencies = [ "futures-core", "pbjson", @@ -2187,7 +2187,7 @@ dependencies = [ [[package]] name = "aptos-protos" version = "1.3.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=338f9a1bcc06f62ce4a4994f1642b9a61b631ee0#338f9a1bcc06f62ce4a4994f1642b9a61b631ee0" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "futures-core", "pbjson", @@ -2199,7 +2199,7 @@ dependencies = [ [[package]] name = "aptos-proxy" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "ipnet", ] @@ -2207,7 +2207,7 @@ dependencies = [ [[package]] name = "aptos-push-metrics" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "aptos-logger", "aptos-metrics-core", @@ -2218,7 +2218,7 @@ dependencies = [ [[package]] name = "aptos-resource-viewer" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-types", @@ -2232,7 +2232,7 @@ dependencies = [ [[package]] name = "aptos-rest-client" version = "0.0.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-api-types", @@ -2255,7 +2255,7 @@ dependencies = [ [[package]] name = "aptos-rocksdb-options" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "aptos-config", "rocksdb", @@ -2264,7 +2264,7 @@ dependencies = [ [[package]] name = "aptos-runtimes" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "rayon", "tokio", @@ -2273,7 +2273,7 @@ dependencies = [ [[package]] name = "aptos-schemadb" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-infallible", @@ -2290,7 +2290,7 @@ dependencies = [ [[package]] name = "aptos-scratchpad" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "aptos-crypto", "aptos-drop-helper", @@ -2309,7 +2309,7 @@ dependencies = [ [[package]] name = "aptos-sdk" version = "0.0.3" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-cached-packages", @@ -2331,7 +2331,7 @@ dependencies = [ [[package]] name = "aptos-sdk-builder" version = "0.2.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-types", @@ -2349,11 +2349,11 @@ dependencies = [ [[package]] name = "aptos-secure-net" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "aptos-logger", "aptos-metrics-core", - "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48)", + "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c)", "bcs 0.1.4", "crossbeam-channel", "once_cell", @@ -2367,7 +2367,7 @@ dependencies = [ [[package]] name = "aptos-secure-storage" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "aptos-crypto", "aptos-infallible", @@ -2388,7 +2388,7 @@ dependencies = [ [[package]] name = "aptos-short-hex-str" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "mirai-annotations", "serde", @@ -2399,7 +2399,7 @@ dependencies = [ [[package]] name = "aptos-speculative-state-helper" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-infallible", @@ -2410,7 +2410,7 @@ dependencies = [ [[package]] name = "aptos-storage-interface" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-crypto", @@ -2458,7 +2458,7 @@ dependencies = [ [[package]] name = "aptos-table-natives" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "aptos-gas-schedule", "aptos-native-interface", @@ -2476,7 +2476,7 @@ dependencies = [ [[package]] name = "aptos-temppath" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "hex", "rand 0.7.3", @@ -2485,7 +2485,7 @@ dependencies = [ [[package]] name = "aptos-time-service" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "aptos-infallible", "enum_dispatch", @@ -2498,7 +2498,7 @@ dependencies = [ [[package]] name = "aptos-types" version = "0.0.3" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-bitvec", @@ -2555,12 +2555,12 @@ dependencies = [ [[package]] name = "aptos-utils" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" [[package]] name = "aptos-vault-client" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "aptos-crypto", "base64 0.13.1", @@ -2576,7 +2576,7 @@ dependencies = [ [[package]] name = "aptos-vm" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-aggregator", @@ -2626,7 +2626,7 @@ dependencies = [ [[package]] name = "aptos-vm-genesis" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "aptos-cached-packages", "aptos-crypto", @@ -2647,7 +2647,7 @@ dependencies = [ [[package]] name = "aptos-vm-logging" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "aptos-crypto", "aptos-logger", @@ -2662,7 +2662,7 @@ dependencies = [ [[package]] name = "aptos-vm-types" version = "0.0.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-aggregator", @@ -2684,7 +2684,7 @@ dependencies = [ [[package]] name = "aptos-vm-validator" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "aptos-logger", @@ -8593,7 +8593,7 @@ dependencies = [ "aptos-language-e2e-tests", "aptos-logger", "aptos-mempool", - "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48)", + "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c)", "aptos-sdk", "aptos-storage-interface", "aptos-temppath", @@ -8937,7 +8937,7 @@ checksum = "1fafa6961cabd9c63bcd77a45d7e3b7f3b552b70417831fb0f56db717e72407e" [[package]] name = "move-abigen" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "bcs 0.1.4", @@ -8954,7 +8954,7 @@ dependencies = [ [[package]] name = "move-binary-format" version = "0.0.3" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "backtrace", @@ -8969,12 +8969,12 @@ dependencies = [ [[package]] name = "move-borrow-graph" version = "0.0.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" [[package]] name = "move-bytecode-source-map" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "bcs 0.1.4", @@ -8989,7 +8989,7 @@ dependencies = [ [[package]] name = "move-bytecode-spec" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "once_cell", "quote", @@ -8999,7 +8999,7 @@ dependencies = [ [[package]] name = "move-bytecode-utils" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "move-binary-format", @@ -9011,7 +9011,7 @@ dependencies = [ [[package]] name = "move-bytecode-verifier" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "fail", "move-binary-format", @@ -9025,7 +9025,7 @@ dependencies = [ [[package]] name = "move-bytecode-viewer" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "clap 4.5.19", @@ -9040,7 +9040,7 @@ dependencies = [ [[package]] name = "move-cli" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "clap 4.5.19", @@ -9070,7 +9070,7 @@ dependencies = [ [[package]] name = "move-command-line-common" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "difference", @@ -9087,7 +9087,7 @@ dependencies = [ [[package]] name = "move-compiler" version = "0.0.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "bcs 0.1.4", @@ -9113,7 +9113,7 @@ dependencies = [ [[package]] name = "move-compiler-v2" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "abstract-domain-derive", "anyhow", @@ -9144,7 +9144,7 @@ dependencies = [ [[package]] name = "move-core-types" version = "0.0.4" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "arbitrary", @@ -9169,7 +9169,7 @@ dependencies = [ [[package]] name = "move-coverage" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "bcs 0.1.4", @@ -9188,7 +9188,7 @@ dependencies = [ [[package]] name = "move-disassembler" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "clap 4.5.19", @@ -9205,7 +9205,7 @@ dependencies = [ [[package]] name = "move-docgen" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "clap 4.5.19", @@ -9224,7 +9224,7 @@ dependencies = [ [[package]] name = "move-errmapgen" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "move-command-line-common", @@ -9236,7 +9236,7 @@ dependencies = [ [[package]] name = "move-ir-compiler" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "bcs 0.1.4", @@ -9252,7 +9252,7 @@ dependencies = [ [[package]] name = "move-ir-to-bytecode" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "codespan-reporting", @@ -9270,7 +9270,7 @@ dependencies = [ [[package]] name = "move-ir-to-bytecode-syntax" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "hex", @@ -9283,7 +9283,7 @@ dependencies = [ [[package]] name = "move-ir-types" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "hex", "move-command-line-common", @@ -9296,7 +9296,7 @@ dependencies = [ [[package]] name = "move-model" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "codespan", @@ -9322,7 +9322,7 @@ dependencies = [ [[package]] name = "move-package" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "clap 4.5.19", @@ -9356,7 +9356,7 @@ dependencies = [ [[package]] name = "move-prover" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "atty", @@ -9383,7 +9383,7 @@ dependencies = [ [[package]] name = "move-prover-boogie-backend" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "async-trait", @@ -9412,7 +9412,7 @@ dependencies = [ [[package]] name = "move-prover-bytecode-pipeline" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "abstract-domain-derive", "anyhow", @@ -9429,7 +9429,7 @@ dependencies = [ [[package]] name = "move-resource-viewer" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "hex", @@ -9456,7 +9456,7 @@ dependencies = [ [[package]] name = "move-stackless-bytecode" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "abstract-domain-derive", "codespan-reporting", @@ -9475,7 +9475,7 @@ dependencies = [ [[package]] name = "move-stdlib" version = "0.1.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "hex", @@ -9498,7 +9498,7 @@ dependencies = [ [[package]] name = "move-symbol-pool" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "once_cell", "serde", @@ -9507,7 +9507,7 @@ dependencies = [ [[package]] name = "move-table-extension" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "better_any", "bytes 1.7.2", @@ -9522,7 +9522,7 @@ dependencies = [ [[package]] name = "move-unit-test" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "better_any", @@ -9550,7 +9550,7 @@ dependencies = [ [[package]] name = "move-vm-runtime" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "better_any", "bytes 1.7.2", @@ -9574,7 +9574,7 @@ dependencies = [ [[package]] name = "move-vm-test-utils" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "anyhow", "bytes 1.7.2", @@ -9589,7 +9589,7 @@ dependencies = [ [[package]] name = "move-vm-types" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48#1284b8c662100fcf7e39bc271ff59afdd1e73f48" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" dependencies = [ "bcs 0.1.4", "derivative", @@ -13234,7 +13234,7 @@ name = "suzuka-client" version = "0.0.2" dependencies = [ "anyhow", - "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=1284b8c662100fcf7e39bc271ff59afdd1e73f48)", + "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c)", "aptos-sdk", "aptos-types", "async-trait", diff --git a/Cargo.toml b/Cargo.toml index 41c88917b..544aa2085 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -114,40 +114,40 @@ serde_yaml = "0.9.34" ## Aptos dependencies ### We use a forked version so that we can override dependency versions. This is required ### to be avoid dependency conflicts with other Sovereign Labs crates. -aptos-api = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } -aptos-api-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } -aptos-bitvec = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } -aptos-block-executor = { git = "https://github.com/movementlabsxyz/aptos-core.git", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } -aptos-cached-packages = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } -aptos-config = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } -aptos-consensus-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } -aptos-crypto = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48", features = [ +aptos-api = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-api-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-bitvec = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-block-executor = { git = "https://github.com/movementlabsxyz/aptos-core.git", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-cached-packages = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-config = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-consensus-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-crypto = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c", features = [ "cloneable-private-keys", ] } -aptos-db = { git = "https://github.com/movementlabsxyz/aptos-core.git", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } -aptos-executor = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } -aptos-executor-test-helpers = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } -aptos-executor-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } -aptos-faucet-core = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } -aptos-framework = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } -aptos-language-e2e-tests = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } -aptos-mempool = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } -aptos-proptest-helpers = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } -aptos-sdk = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } -aptos-state-view = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } -aptos-storage-interface = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } -aptos-temppath = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } -aptos-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } -aptos-vm = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } -aptos-vm-genesis = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } -aptos-vm-logging = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } -aptos-vm-validator = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } -aptos-logger = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } -aptos-vm-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } -aptos-indexer = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } -aptos-indexer-grpc-fullnode = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } -aptos-indexer-grpc-table-info = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } -aptos-protos = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "1284b8c662100fcf7e39bc271ff59afdd1e73f48" } +aptos-db = { git = "https://github.com/movementlabsxyz/aptos-core.git", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-executor = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-executor-test-helpers = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-executor-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-faucet-core = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-framework = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-language-e2e-tests = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-mempool = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-proptest-helpers = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-sdk = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-state-view = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-storage-interface = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-temppath = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-vm = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-vm-genesis = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-vm-logging = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-vm-validator = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-logger = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-vm-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-indexer = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-indexer-grpc-fullnode = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-indexer-grpc-table-info = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-protos = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } # Indexer processor = { git = "https://github.com/movementlabsxyz/aptos-indexer-processors", rev = "8e83cde3cb75fabdade9485e0af680cc4b73ca8e", subdir = "rust" } From b88cd6a8a6a7d9956123dd87056e6369d65a8379 Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Tue, 15 Oct 2024 07:40:57 -0400 Subject: [PATCH 24/35] feat: lock and abort client integration tests pass against framework --- .../bridge/integration-tests/src/lib.rs | 2 +- .../tests/client_l1move_l2move.rs | 212 +++++++++++------- .../tests/client_l2move_l1move.rs | 4 - .../scripts/update_bridge_operator.move | 2 + 4 files changed, 137 insertions(+), 83 deletions(-) diff --git a/protocol-units/bridge/integration-tests/src/lib.rs b/protocol-units/bridge/integration-tests/src/lib.rs index 9938506e8..8afea9fe1 100644 --- a/protocol-units/bridge/integration-tests/src/lib.rs +++ b/protocol-units/bridge/integration-tests/src/lib.rs @@ -53,7 +53,7 @@ impl Default for EthToMovementCallArgs { Self { initiator: b"32Be343B94f860124dC4fEe278FDCBD38C102D88".to_vec(), recipient: MovementAddress(AccountAddress::new(*b"0x00000000000000000000000000face")), - bridge_transfer_id: MovementHash(*b"00000000000000000000000transfer1"), + bridge_transfer_id: MovementHash(*b"00000000000000000000000transfer4"), hash_lock: MovementHash(*keccak256(b"secret")), time_lock: 3600, amount: 100, diff --git a/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs b/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs index 5efad5971..0f90893a3 100644 --- a/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs +++ b/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs @@ -9,7 +9,7 @@ use bridge_integration_tests::utils as test_utils; use bridge_integration_tests::EthToMovementCallArgs; use bridge_integration_tests::HarnessMvtClient; use bridge_integration_tests::{TestHarness, TestHarnessFramework}; -use bridge_service::chains::ethereum::types::EthAddress; +use bridge_service::chains::{ethereum::types::EthAddress, movement::client_framework::MovementClientFramework}; use bridge_service::chains::{ bridge_contracts::{BridgeContract, BridgeContractEvent}, ethereum::types::EthHash, movement::{event_monitoring::MovementMonitoring, utils::MovementHash} }; @@ -46,13 +46,69 @@ async fn test_movement_client_build_and_fund_accounts() -> Result<(), anyhow::Er } #[tokio::test] -async fn test_movement_client_should_publish_package() -> Result<(), anyhow::Error> { - let _ = tracing_subscriber::fmt().try_init(); +async fn test_movement_client_lock_transfer( +) -> Result<(), anyhow::Error> { + let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); - let config = Config::suzuka(); - let (_mvt_client_harness, _config) = - TestHarnessFramework::new_with_suzuka(config).await; - Ok(()) + let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); + + MovementClientFramework::bridge_setup_scripts().await?; + + let config: Config = Config::suzuka(); + + let (mut mvt_client_harness, config) = TestHarnessFramework::new_with_suzuka(config).await; + + let args = EthToMovementCallArgs::default(); + + let test_result = async { + let coin_client = CoinClient::new(&mvt_client_harness.rest_client); + let movement_client_signer = mvt_client_harness.movement_client.signer(); + + { + let faucet_client = mvt_client_harness.faucet_client.write().unwrap(); + faucet_client.fund(movement_client_signer.address(), 100_000_000).await?; + } + + let balance = coin_client.get_account_balance(&movement_client_signer.address()).await?; + assert!( + balance >= 100_000_000, + "Expected Movement Client to have at least 100_000_000, but found {}", + balance + ); + + mvt_client_harness + .movement_client + .lock_bridge_transfer( + BridgeTransferId(args.bridge_transfer_id.0), + HashLock(args.hash_lock.0), + BridgeAddress(args.initiator.clone()), + BridgeAddress(args.recipient.clone().into()), + Amount(AssetType::Moveth(args.amount)), + ) + .await + .expect("Failed to lock bridge transfer"); + + + let bridge_transfer_id: [u8; 32] = test_utils::extract_bridge_transfer_id_framework( + &mut mvt_client_harness.movement_client, + ) + .await?; + info!("Bridge transfer ID: {:?}", bridge_transfer_id); + + let details = BridgeContract::get_bridge_transfer_details_counterparty( + &mut mvt_client_harness.movement_client, + BridgeTransferId(bridge_transfer_id), + ) + .await + .expect("Failed to get bridge transfer details") + .expect("Expected to find bridge transfer details, but got None"); + + info!("Bridge transfer details: {:?}", details); + Ok(()) + } + .await; + + test_result } #[tokio::test] @@ -60,9 +116,13 @@ async fn test_movement_client_complete_transfer( ) -> Result<(), anyhow::Error> { let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); - let config = Config::suzuka(); - let (mut mvt_client_harness, config) = - TestHarnessFramework::new_with_suzuka(config).await; + let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); + + MovementClientFramework::bridge_setup_scripts().await?; + + let config: Config = Config::suzuka(); + + let (mut mvt_client_harness, config) = TestHarnessFramework::new_with_suzuka(config).await; let args = EthToMovementCallArgs::default(); @@ -95,29 +155,26 @@ async fn test_movement_client_complete_transfer( .expect("Failed to lock bridge transfer"); + let bridge_transfer_id: [u8; 32] = test_utils::extract_bridge_transfer_id_framework( + &mut mvt_client_harness.movement_client, + ) + .await?; + info!("Bridge transfer ID: {:?}", bridge_transfer_id); + + let details = BridgeContract::get_bridge_transfer_details_counterparty( + &mut mvt_client_harness.movement_client, + BridgeTransferId(bridge_transfer_id), + ) + .await + .expect("Failed to get bridge transfer details") + .expect("Expected to find bridge transfer details, but got None"); + + info!("Bridge transfer details: {:?}", details); + + assert_eq!(details.state, 1, "Bridge transfer should be pending."); //Wait for the tx to be executed tracing::info!("Wait for the MVT initiated event."); - let mut mvt_monitoring = MovementMonitoring::build(&config.movement).await.unwrap(); - let event = - tokio::time::timeout(std::time::Duration::from_secs(30), mvt_monitoring.next()).await?; - let bridge_transfer_id = if let Some(Ok(BridgeContractEvent::Locked(detail))) = event { - detail.bridge_transfer_id - } else { - panic!("Not a Locked event: {event:?}"); - }; - - info!("Bridge transfer id: {:?}", bridge_transfer_id); - //assert_eq!(details.bridge_transfer_id.0, args.bridge_transfer_id.0); - //assert_eq!(details.hash_lock.0, args.hash_lock.0); - //assert_eq!( - // &details.initiator_address.0 .0[32 - args.initiator.len()..], - // &args.initiator, - // "Initiator address does not match" - //); - //assert_eq!(details.recipient_address.0, args.recipient.0.to_vec()); - //assert_eq!(details.amount.0, AssetType::Moveth(args.amount)); - //assert_eq!(details.state, 1, "Bridge transfer is supposed to be locked but it's not."); - + let secret = b"secret"; let mut padded_secret = [0u8; 32]; padded_secret[..secret.len()].copy_from_slice(secret); @@ -157,13 +214,17 @@ async fn test_movement_client_complete_transfer( } #[tokio::test] -async fn test_movement_client_should_abort_transfer() -> Result<(), anyhow::Error> -{ +async fn test_movement_client_abort_transfer( +) -> Result<(), anyhow::Error> { let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); - let config = Config::suzuka(); - let (mut mvt_client_harness, config) = - TestHarnessFramework::new_with_suzuka(config).await; + let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); + + MovementClientFramework::bridge_setup_scripts().await?; + + let config: Config = Config::suzuka(); + + let (mut mvt_client_harness, config) = TestHarnessFramework::new_with_suzuka(config).await; let args = EthToMovementCallArgs::default(); @@ -183,56 +244,51 @@ async fn test_movement_client_should_abort_transfer() -> Result<(), anyhow::Erro balance ); - // Set the timelock to 1 second for testing - //mvt_client_harness - // .movement_client - // .counterparty_set_timelock(1) - // .await - // .expect("Failed to set timelock"); - mvt_client_harness .movement_client .lock_bridge_transfer( BridgeTransferId(args.bridge_transfer_id.0), HashLock(args.hash_lock.0), BridgeAddress(args.initiator.clone()), - BridgeAddress(args.recipient.clone()), + BridgeAddress(args.recipient.clone().into()), Amount(AssetType::Moveth(args.amount)), ) .await .expect("Failed to lock bridge transfer"); - //Wait for the tx to be executed - tracing::info!("Wait for the MVT initiated event."); + + let bridge_transfer_id: [u8; 32] = test_utils::extract_bridge_transfer_id_framework( + &mut mvt_client_harness.movement_client, + ) + .await?; + info!("Bridge transfer ID: {:?}", bridge_transfer_id); - let mut mvt_monitoring = MovementMonitoring::build(&config.movement).await.unwrap(); - let event = - tokio::time::timeout(std::time::Duration::from_secs(30), mvt_monitoring.next()).await?; - let bridge_transfer_id = if let Some(Ok(BridgeContractEvent::Locked(detail))) = event { - detail.bridge_transfer_id - } else { - panic!("Not a Locked event: {event:?}"); - }; - - info!("Bridge transfer id: {:?}", bridge_transfer_id); - //assert_eq!(details.bridge_transfer_id.0, args.bridge_transfer_id.0); - //assert_eq!(details.hash_lock.0, args.hash_lock.0); - //assert_eq!( - // &details.initiator_address.0 .0[32 - args.initiator.len()..], - // &args.initiator, - // "Initiator address does not match" - //); - //assert_eq!(details.recipient_address.0, args.recipient.0.to_vec()); - //assert_eq!(details.amount.0, AssetType::Moveth(args.amount)); - //assert_eq!(details.state, 1, "Bridge transfer is supposed to be locked but it's not."); sleep(Duration::from_secs(5)).await; + let details = BridgeContract::get_bridge_transfer_details_counterparty( + &mut mvt_client_harness.movement_client, + BridgeTransferId(bridge_transfer_id), + ) + .await + .expect("Failed to get bridge transfer details") + .expect("Expected to find bridge transfer details, but got None"); - mvt_client_harness - .movement_client - .abort_bridge_transfer(BridgeTransferId(args.bridge_transfer_id.0)) - .await - .expect("Failed to complete bridge transfer"); + info!("Bridge transfer details: {:?}", details); + + assert_eq!(details.state, 1, "Bridge transfer should be pending."); - let abort_details = BridgeContract::get_bridge_transfer_details_counterparty( + sleep(Duration::from_secs(20)).await; + + let secret = b"secret"; + let mut padded_secret = [0u8; 32]; + padded_secret[..secret.len()].copy_from_slice(secret); + + BridgeContract::abort_bridge_transfer( + &mut mvt_client_harness.movement_client, + BridgeTransferId(args.bridge_transfer_id.0) + ) + .await + .expect("Failed to complete bridge transfer"); + + let details = BridgeContract::get_bridge_transfer_details_counterparty( &mut mvt_client_harness.movement_client, BridgeTransferId(args.bridge_transfer_id.0), ) @@ -240,15 +296,16 @@ async fn test_movement_client_should_abort_transfer() -> Result<(), anyhow::Erro .expect("Failed to get bridge transfer details") .expect("Expected to find bridge transfer details, but got None"); - assert_eq!(abort_details.bridge_transfer_id.0, args.bridge_transfer_id.0); - assert_eq!(abort_details.hash_lock.0, args.hash_lock.0); + assert_eq!(details.bridge_transfer_id.0, args.bridge_transfer_id.0); + assert_eq!(details.hash_lock.0, args.hash_lock.0); assert_eq!( - &abort_details.initiator_address.0, + &details.initiator_address.0, &args.initiator, "Initiator address does not match" ); - assert_eq!(abort_details.recipient_address.0, args.recipient); - assert_eq!(abort_details.amount.0, AssetType::Moveth(args.amount)); + assert_eq!(details.recipient_address.0, args.recipient); + assert_eq!(details.amount.0, AssetType::Moveth(args.amount)); + assert_eq!(details.state, 3, "Bridge transfer is supposed to be cancelled but it's not."); Ok(()) } @@ -256,7 +313,6 @@ async fn test_movement_client_should_abort_transfer() -> Result<(), anyhow::Erro test_result } - #[tokio::test] async fn test_eth_client_should_build_and_fetch_accounts() { let config = Config::default(); diff --git a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs index b334785c4..227dfb002 100644 --- a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs +++ b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs @@ -45,13 +45,9 @@ async fn test_movement_client_build_and_fund_accounts() -> Result<(), anyhow::Er #[tokio::test] async fn test_movement_client_initiate_transfer() -> Result<(), anyhow::Error> { let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); - MovementClientFramework::bridge_setup_scripts().await?; - let config: Config = Config::suzuka(); - let (mut mvt_client_harness, config) = TestHarnessFramework::new_with_suzuka(config).await; - let args = MovementToEthCallArgs::default(); let test_result = async { diff --git a/protocol-units/bridge/move-modules/scripts/update_bridge_operator.move b/protocol-units/bridge/move-modules/scripts/update_bridge_operator.move index b2a591724..964bd62b4 100644 --- a/protocol-units/bridge/move-modules/scripts/update_bridge_operator.move +++ b/protocol-units/bridge/move-modules/scripts/update_bridge_operator.move @@ -1,9 +1,11 @@ script { + use aptos_framework::aptos_account; use aptos_framework::aptos_governance; use aptos_framework::atomic_bridge_configuration; fun update_bridge_operator(core_resources: &signer, new_operator: address) { let framework_signer = aptos_governance::get_signer_testnet_only(core_resources, @aptos_framework); atomic_bridge_configuration::update_bridge_operator(&framework_signer, new_operator); + aptos_account::create_account(@0x00000000000000000000000000face); } } \ No newline at end of file From 9e8fa761f9007df14ef24a87416de6ae009d04cf Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Tue, 15 Oct 2024 18:06:50 -0400 Subject: [PATCH 25/35] all client_l2move_l1move movement client tests pass against framework --- .../bridge/integration-tests/src/lib.rs | 8 +--- .../bridge/integration-tests/src/utils.rs | 1 + .../tests/client_l1move_l2move.rs | 5 +++ .../tests/client_l2move_l1move.rs | 38 +++++-------------- .../service/src/chains/ethereum/client.rs | 3 +- 5 files changed, 20 insertions(+), 35 deletions(-) diff --git a/protocol-units/bridge/integration-tests/src/lib.rs b/protocol-units/bridge/integration-tests/src/lib.rs index 8afea9fe1..e4e4db52d 100644 --- a/protocol-units/bridge/integration-tests/src/lib.rs +++ b/protocol-units/bridge/integration-tests/src/lib.rs @@ -53,7 +53,7 @@ impl Default for EthToMovementCallArgs { Self { initiator: b"32Be343B94f860124dC4fEe278FDCBD38C102D88".to_vec(), recipient: MovementAddress(AccountAddress::new(*b"0x00000000000000000000000000face")), - bridge_transfer_id: MovementHash(*b"00000000000000000000000transfer4"), + bridge_transfer_id: MovementHash(*b"00000000000000000000000transfer9"), hash_lock: MovementHash(*keccak256(b"secret")), time_lock: 3600, amount: 100, @@ -63,15 +63,11 @@ impl Default for EthToMovementCallArgs { impl Default for MovementToEthCallArgs { fn default() -> Self { - let preimage = "secret".to_string(); - let serialized_preimage = bcs::to_bytes(&preimage).unwrap(); - let hash_lock = *keccak256(&serialized_preimage); - Self { initiator: MovementAddress(AccountAddress::new(*b"0x000000000000000000000000A55018")), recipient: b"32Be343B94f860124dC4fEe278FDCBD38C102D88".to_vec(), bridge_transfer_id: EthHash(*b"00000000000000000000000transfer1"), - hash_lock: EthHash(hash_lock), + hash_lock: EthHash(*keccak256(b"secret")), time_lock: 3600, amount: 100, } diff --git a/protocol-units/bridge/integration-tests/src/utils.rs b/protocol-units/bridge/integration-tests/src/utils.rs index 875b45d38..2cf1e1c80 100644 --- a/protocol-units/bridge/integration-tests/src/utils.rs +++ b/protocol-units/bridge/integration-tests/src/utils.rs @@ -175,6 +175,7 @@ pub async fn fund_and_check_balance( let coin_client = CoinClient::new(&rest_client); let faucet_client = movement_harness.faucet_client.write().unwrap(); faucet_client.fund(movement_client_signer.address(), expected_balance).await?; + faucet_client.fund(AccountAddress::from_hex_literal("0xface")?, expected_balance).await?; let balance = coin_client.get_account_balance(&movement_client_signer.address()).await?; assert!( diff --git a/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs b/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs index 0f90893a3..62d1a3244 100644 --- a/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs +++ b/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs @@ -3,7 +3,9 @@ use alloy::{ providers::Provider, }; use anyhow::Result; +use aptos_sdk::types::account_address::AccountAddress; use aptos_sdk::coin_client::CoinClient; +use aptos_types::PeerId; use bridge_config::Config; use bridge_integration_tests::utils as test_utils; use bridge_integration_tests::EthToMovementCallArgs; @@ -133,6 +135,9 @@ async fn test_movement_client_complete_transfer( { let faucet_client = mvt_client_harness.faucet_client.write().unwrap(); faucet_client.fund(movement_client_signer.address(), 100_000_000).await?; + faucet_client.fund(AccountAddress::from_hex_literal("0xface")?, 100_000_000).await?; + faucet_client.fund(AccountAddress::from_hex_literal("0x1")?, 100_000_000).await?; + } let balance = coin_client.get_account_balance(&movement_client_signer.address()).await?; diff --git a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs index 227dfb002..a1efb55ca 100644 --- a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs +++ b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs @@ -21,27 +21,6 @@ use tokio::time::{sleep, Duration}; use tokio::{self}; use tracing::info; -#[tokio::test] -async fn test_movement_client_build_and_fund_accounts() -> Result<(), anyhow::Error> { - let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); - - let config = Config::default(); - let (mut mvt_client_harness, _config, mut mvt_process) = - TestHarness::new_with_movement(config).await; - let test_result = async { - test_utils::fund_and_check_balance(&mut mvt_client_harness, 100_000_000_000) - .await - .expect("Failed to fund accounts"); - Ok(()) - } - .await; - - if let Err(e) = mvt_process.kill().await { - eprintln!("Failed to kill child process: {:?}", e); - } - test_result -} - #[tokio::test] async fn test_movement_client_initiate_transfer() -> Result<(), anyhow::Error> { let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); @@ -107,15 +86,10 @@ async fn test_movement_client_initiate_transfer() -> Result<(), anyhow::Error> { #[tokio::test] async fn test_movement_client_complete_transfer() -> Result<(), anyhow::Error> { let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); - MovementClientFramework::bridge_setup_scripts().await?; - let config: Config = Config::suzuka(); - let (mut mvt_client_harness, config) = TestHarnessFramework::new_with_suzuka(config).await; - let args = MovementToEthCallArgs::default(); - let test_result = async { let sender_address = mvt_client_harness.movement_client.signer().address(); test_utils::fund_and_check_balance_framework(&mut mvt_client_harness, 100_000_000_000) @@ -136,6 +110,16 @@ async fn test_movement_client_complete_transfer() -> Result<(), anyhow::Error> { .await?; info!("Bridge transfer ID: {:?}", bridge_transfer_id); + let details = BridgeContract::get_bridge_transfer_details_initiator( + &mut mvt_client_harness.movement_client, + BridgeTransferId(bridge_transfer_id), + ) + .await + .expect("Failed to get bridge transfer details") + .expect("Expected to find bridge transfer details, but got None"); + + info!("Bridge transfer details: {:?}", details); + let secret = b"secret"; let mut padded_secret = [0u8; 32]; padded_secret[..secret.len()].copy_from_slice(secret); @@ -157,8 +141,6 @@ async fn test_movement_client_complete_transfer() -> Result<(), anyhow::Error> { .expect("Expected to find bridge transfer details, but got None"); info!("Bridge transfer details: {:?}", details); - - assert_eq!(details.state, 1, "Bridge transfer should be initiated."); let amount = match details.amount.0 { AssetType::Moveth(amount) => amount, diff --git a/protocol-units/bridge/service/src/chains/ethereum/client.rs b/protocol-units/bridge/service/src/chains/ethereum/client.rs index f626b80f4..7c87d89e6 100644 --- a/protocol-units/bridge/service/src/chains/ethereum/client.rs +++ b/protocol-units/bridge/service/src/chains/ethereum/client.rs @@ -17,6 +17,7 @@ use alloy::{ }; use alloy_rlp::Decodable; use bridge_config::common::eth::EthConfig; +use tracing::info; use std::fmt::{self, Debug}; use url::Url; @@ -265,7 +266,7 @@ impl crate::chains::bridge_contracts::BridgeContract for EthClient { .ok_or(generic_error("Could not get required slice from pre-image"))? .try_into() .map_err(|_| generic_error("Could not convert pre-image to [u8; 32]"))?; - + info!{"Pre-image: {:?}", pre_image}; let contract = AtomicBridgeInitiator::new(self.initiator_contract_address(), &self.rpc_provider); let call = contract From 57d5b4ea99c3fde0b9ad596ae4c9954c30024c08 Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Tue, 15 Oct 2024 19:11:47 -0400 Subject: [PATCH 26/35] fix: remove unnecessary extract bridge id calls --- .../bridge/integration-tests/src/lib.rs | 2 +- .../bridge/integration-tests/src/utils.rs | 3 +- .../tests/client_l1move_l2move.rs | 31 +++---------------- .../tests/client_l2move_l1move.rs | 3 +- 4 files changed, 9 insertions(+), 30 deletions(-) diff --git a/protocol-units/bridge/integration-tests/src/lib.rs b/protocol-units/bridge/integration-tests/src/lib.rs index e4e4db52d..167a88d95 100644 --- a/protocol-units/bridge/integration-tests/src/lib.rs +++ b/protocol-units/bridge/integration-tests/src/lib.rs @@ -53,7 +53,7 @@ impl Default for EthToMovementCallArgs { Self { initiator: b"32Be343B94f860124dC4fEe278FDCBD38C102D88".to_vec(), recipient: MovementAddress(AccountAddress::new(*b"0x00000000000000000000000000face")), - bridge_transfer_id: MovementHash(*b"00000000000000000000000transfer9"), + bridge_transfer_id: MovementHash(*b"00000000000000000000000transf103"), hash_lock: MovementHash(*keccak256(b"secret")), time_lock: 3600, amount: 100, diff --git a/protocol-units/bridge/integration-tests/src/utils.rs b/protocol-units/bridge/integration-tests/src/utils.rs index 2cf1e1c80..3a5ed2d04 100644 --- a/protocol-units/bridge/integration-tests/src/utils.rs +++ b/protocol-units/bridge/integration-tests/src/utils.rs @@ -99,8 +99,9 @@ pub async fn extract_bridge_transfer_id_framework( movement_client: &mut MovementClientFramework, ) -> Result<[u8; 32], anyhow::Error> { let sender_address = movement_client.signer().address(); - let sequence_number = 0; // Modify as needed + let sequence_number = 0; let rest_client = movement_client.rest_client(); + debug!("Sender address: {:?}", sender_address); let transactions = rest_client .get_account_transactions(sender_address, Some(sequence_number), Some(20)) diff --git a/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs b/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs index 62d1a3244..9a4241905 100644 --- a/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs +++ b/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs @@ -90,21 +90,15 @@ async fn test_movement_client_lock_transfer( .await .expect("Failed to lock bridge transfer"); - - let bridge_transfer_id: [u8; 32] = test_utils::extract_bridge_transfer_id_framework( - &mut mvt_client_harness.movement_client, - ) - .await?; - info!("Bridge transfer ID: {:?}", bridge_transfer_id); - let details = BridgeContract::get_bridge_transfer_details_counterparty( &mut mvt_client_harness.movement_client, - BridgeTransferId(bridge_transfer_id), + BridgeTransferId(args.bridge_transfer_id.0), ) .await .expect("Failed to get bridge transfer details") .expect("Expected to find bridge transfer details, but got None"); + assert_eq!(details.state, 1, "Bridge transfer should be pending."); info!("Bridge transfer details: {:?}", details); Ok(()) } @@ -159,25 +153,17 @@ async fn test_movement_client_complete_transfer( .await .expect("Failed to lock bridge transfer"); - - let bridge_transfer_id: [u8; 32] = test_utils::extract_bridge_transfer_id_framework( - &mut mvt_client_harness.movement_client, - ) - .await?; - info!("Bridge transfer ID: {:?}", bridge_transfer_id); - let details = BridgeContract::get_bridge_transfer_details_counterparty( &mut mvt_client_harness.movement_client, - BridgeTransferId(bridge_transfer_id), + BridgeTransferId(args.bridge_transfer_id.0), ) .await .expect("Failed to get bridge transfer details") .expect("Expected to find bridge transfer details, but got None"); + assert_eq!(details.state, 1, "Bridge transfer should be pending."); info!("Bridge transfer details: {:?}", details); - assert_eq!(details.state, 1, "Bridge transfer should be pending."); - //Wait for the tx to be executed tracing::info!("Wait for the MVT initiated event."); let secret = b"secret"; @@ -261,16 +247,9 @@ async fn test_movement_client_abort_transfer( .await .expect("Failed to lock bridge transfer"); - - let bridge_transfer_id: [u8; 32] = test_utils::extract_bridge_transfer_id_framework( - &mut mvt_client_harness.movement_client, - ) - .await?; - info!("Bridge transfer ID: {:?}", bridge_transfer_id); - let details = BridgeContract::get_bridge_transfer_details_counterparty( &mut mvt_client_harness.movement_client, - BridgeTransferId(bridge_transfer_id), + BridgeTransferId(args.bridge_transfer_id.0), ) .await .expect("Failed to get bridge transfer details") diff --git a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs index a1efb55ca..c778925e7 100644 --- a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs +++ b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs @@ -88,10 +88,9 @@ async fn test_movement_client_complete_transfer() -> Result<(), anyhow::Error> { let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); MovementClientFramework::bridge_setup_scripts().await?; let config: Config = Config::suzuka(); - let (mut mvt_client_harness, config) = TestHarnessFramework::new_with_suzuka(config).await; + let (mut mvt_client_harness, _config) = TestHarnessFramework::new_with_suzuka(config).await; let args = MovementToEthCallArgs::default(); let test_result = async { - let sender_address = mvt_client_harness.movement_client.signer().address(); test_utils::fund_and_check_balance_framework(&mut mvt_client_harness, 100_000_000_000) .await?; test_utils::initiate_bridge_transfer_helper_framework( From 88b24f5058cc5c1b614725aad740cbe16f10e4e1 Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Wed, 16 Oct 2024 06:46:37 -0400 Subject: [PATCH 27/35] feat: all movement client tests pass --- .../bridge/integration-tests/src/lib.rs | 40 +- .../tests/client_l1move_l2move.rs | 39 +- .../tests/client_l2move_l1move.rs | 1 - .../service/src/chains/bridge_contracts.rs | 4 +- .../service/src/chains/ethereum/client.rs | 6 +- .../src/chains/ethereum/event_monitoring.rs | 1 - .../service/src/chains/movement/client.rs | 6 +- .../src/chains/movement/client_framework.rs | 7 +- .../src/chains/movement/event_monitoring.rs | 1 - .../movement/event_monitoring_framework.rs | 635 ------------------ .../bridge/service/src/chains/movement/mod.rs | 1 - protocol-units/bridge/service/src/types.rs | 12 +- 12 files changed, 58 insertions(+), 695 deletions(-) delete mode 100644 protocol-units/bridge/service/src/chains/movement/event_monitoring_framework.rs diff --git a/protocol-units/bridge/integration-tests/src/lib.rs b/protocol-units/bridge/integration-tests/src/lib.rs index 167a88d95..76d8be33c 100644 --- a/protocol-units/bridge/integration-tests/src/lib.rs +++ b/protocol-units/bridge/integration-tests/src/lib.rs @@ -22,6 +22,9 @@ use bridge_service::types::HashLockPreImage; use bridge_service::{chains::bridge_contracts::BridgeContractResult, types::BridgeAddress}; use godfig::{backend::config_file::ConfigFile, Godfig}; use rand::SeedableRng; +use rand::{thread_rng, Rng}; +use rand::distributions::Alphanumeric; +use std::convert::TryInto; use std::str::FromStr; use std::sync::{Arc, RwLock}; use url::Url; @@ -49,16 +52,33 @@ pub struct MovementToEthCallArgs { } impl Default for EthToMovementCallArgs { - fn default() -> Self { - Self { - initiator: b"32Be343B94f860124dC4fEe278FDCBD38C102D88".to_vec(), - recipient: MovementAddress(AccountAddress::new(*b"0x00000000000000000000000000face")), - bridge_transfer_id: MovementHash(*b"00000000000000000000000transf103"), - hash_lock: MovementHash(*keccak256(b"secret")), - time_lock: 3600, - amount: 100, - } - } + fn default() -> Self { + // Generate 6 random alphanumeric characters + let random_suffix: String = thread_rng() + .sample_iter(&Alphanumeric) + .take(6) + .map(char::from) + .collect(); + + // Construct the bridge_transfer_id with the random suffix + let mut bridge_transfer_id = b"00000000000000000000000tra".to_vec(); + bridge_transfer_id.extend_from_slice(random_suffix.as_bytes()); + + Self { + initiator: b"32Be343B94f860124dC4fEe278FDCBD38C102D88".to_vec(), + recipient: MovementAddress(AccountAddress::new(*b"0x00000000000000000000000000face")), + // Convert to [u8; 32] with explicit type annotation + bridge_transfer_id: MovementHash( + bridge_transfer_id + .as_slice() + .try_into() + .expect("Expected bridge_transfer_id to be 32 bytes"), + ), + hash_lock: MovementHash(*keccak256(b"secret")), + time_lock: 3600, + amount: 100, + } + } } impl Default for MovementToEthCallArgs { diff --git a/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs b/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs index 9a4241905..d94c95362 100644 --- a/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs +++ b/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs @@ -23,30 +23,6 @@ use tokio::time::{sleep, Duration}; use tokio::{self}; use tracing::info; -#[tokio::test] -async fn test_movement_client_build_and_fund_accounts() -> Result<(), anyhow::Error> { - let config = Config::suzuka(); - let (mvt_client_harness, _config) = - TestHarnessFramework::new_with_suzuka(config).await; - - // - let rest_client = mvt_client_harness.rest_client; - let coin_client = CoinClient::new(&rest_client); - let movement_client_signer = mvt_client_harness.movement_client.signer(); - - let faucet_client = mvt_client_harness.faucet_client.write().unwrap(); - - faucet_client.fund(movement_client_signer.address(), 100_000_000).await?; - let balance = coin_client.get_account_balance(&movement_client_signer.address()).await?; - assert!( - balance >= 100_000_000, - "Expected Movement Client to have at least 100_000_000, but found {}", - balance - ); - - Ok(()) -} - #[tokio::test] async fn test_movement_client_lock_transfer( ) -> Result<(), anyhow::Error> { @@ -111,29 +87,22 @@ async fn test_movement_client_lock_transfer( async fn test_movement_client_complete_transfer( ) -> Result<(), anyhow::Error> { let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); - let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); - MovementClientFramework::bridge_setup_scripts().await?; - let config: Config = Config::suzuka(); - let (mut mvt_client_harness, config) = TestHarnessFramework::new_with_suzuka(config).await; - let args = EthToMovementCallArgs::default(); - let test_result = async { let coin_client = CoinClient::new(&mvt_client_harness.rest_client); let movement_client_signer = mvt_client_harness.movement_client.signer(); - { let faucet_client = mvt_client_harness.faucet_client.write().unwrap(); faucet_client.fund(movement_client_signer.address(), 100_000_000).await?; faucet_client.fund(AccountAddress::from_hex_literal("0xface")?, 100_000_000).await?; faucet_client.fund(AccountAddress::from_hex_literal("0x1")?, 100_000_000).await?; - + faucet_client.fund(AccountAddress::from_hex_literal("0x3078303030303030303030303030303030303030303030303030303066616365")?, 100_000_000).await?; + } - let balance = coin_client.get_account_balance(&movement_client_signer.address()).await?; assert!( balance >= 100_000_000, @@ -161,10 +130,10 @@ async fn test_movement_client_complete_transfer( .expect("Failed to get bridge transfer details") .expect("Expected to find bridge transfer details, but got None"); + info!("Recipient: {:?}", details.recipient_address); + assert_eq!(details.state, 1, "Bridge transfer should be pending."); info!("Bridge transfer details: {:?}", details); - - tracing::info!("Wait for the MVT initiated event."); let secret = b"secret"; let mut padded_secret = [0u8; 32]; diff --git a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs index c778925e7..3bde3d5ea 100644 --- a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs +++ b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs @@ -6,7 +6,6 @@ use bridge_integration_tests::utils as test_utils; use bridge_integration_tests::{MovementToEthCallArgs, TestHarness, TestHarnessFramework}; use bridge_service::chains::bridge_contracts::{BridgeContractError, BridgeContractEvent}; use bridge_service::chains::movement::client_framework::MovementClientFramework; -use bridge_service::chains::movement::event_monitoring_framework::MovementMonitoringFramework; use bridge_service::types::AssetType; use bridge_service::{ chains::{ diff --git a/protocol-units/bridge/service/src/chains/bridge_contracts.rs b/protocol-units/bridge/service/src/chains/bridge_contracts.rs index 7064c28f6..25b578e42 100644 --- a/protocol-units/bridge/service/src/chains/bridge_contracts.rs +++ b/protocol-units/bridge/service/src/chains/bridge_contracts.rs @@ -1,4 +1,4 @@ -use crate::types::LockDetails; +use crate::types::{BridgeTransferDetailsCounterparty, LockDetails}; use std::fmt; use thiserror::Error; use tokio_stream::Stream; @@ -173,7 +173,7 @@ pub trait BridgeContract: Clone + Unpin + Send + Sync { async fn get_bridge_transfer_details_counterparty( &mut self, bridge_transfer_id: BridgeTransferId, - ) -> BridgeContractResult>>; + ) -> BridgeContractResult>>; async fn lock_bridge_transfer( &mut self, diff --git a/protocol-units/bridge/service/src/chains/ethereum/client.rs b/protocol-units/bridge/service/src/chains/ethereum/client.rs index 7c87d89e6..a14d7061d 100644 --- a/protocol-units/bridge/service/src/chains/ethereum/client.rs +++ b/protocol-units/bridge/service/src/chains/ethereum/client.rs @@ -6,7 +6,7 @@ use super::utils::{calculate_storage_slot, send_transaction, send_transaction_ru use crate::chains::bridge_contracts::BridgeContractError; use crate::chains::bridge_contracts::BridgeContractResult; use crate::types::{ - Amount, AssetType, BridgeAddress, BridgeTransferDetails, BridgeTransferId, HashLock, HashLockPreImage, LockDetails, TimeLock + Amount, AssetType, BridgeAddress, BridgeTransferDetails, BridgeTransferDetailsCounterparty, BridgeTransferId, HashLock, HashLockPreImage, LockDetails, TimeLock }; use alloy::primitives::{Address, FixedBytes, U256}; use alloy::providers::{Provider, ProviderBuilder}; @@ -424,7 +424,7 @@ impl crate::chains::bridge_contracts::BridgeContract for EthClient { async fn get_bridge_transfer_details_counterparty( &mut self, bridge_transfer_id: BridgeTransferId, - ) -> BridgeContractResult>> { + ) -> BridgeContractResult>> { let generic_error = |desc| BridgeContractError::GenericError(String::from(desc)); let mapping_slot = U256::from(0); // the mapping is the zeroth slot in the contract @@ -442,7 +442,7 @@ impl crate::chains::bridge_contracts::BridgeContract for EthClient { let eth_details = EthBridgeTransferDetailsCounterparty::decode(&mut storage_slice) .map_err(|_| generic_error("could not decode storage"))?; - Ok(Some(LockDetails { + Ok(Some(BridgeTransferDetailsCounterparty { bridge_transfer_id, initiator_address: BridgeAddress(eth_details.originator.to_vec()), recipient_address: BridgeAddress(eth_details.recipient), diff --git a/protocol-units/bridge/service/src/chains/ethereum/event_monitoring.rs b/protocol-units/bridge/service/src/chains/ethereum/event_monitoring.rs index f7c1e6ded..66e2e1587 100644 --- a/protocol-units/bridge/service/src/chains/ethereum/event_monitoring.rs +++ b/protocol-units/bridge/service/src/chains/ethereum/event_monitoring.rs @@ -167,7 +167,6 @@ impl EthMonitoring { amount: trlocked.amount.into(), hash_lock: HashLock(*trlocked.hashLock), time_lock: trlocked.timeLock.into(), - state: 8 }; BridgeContractEvent::Locked(details) }).map_err(|err| BridgeContractError::OnChainError(err.to_string())); diff --git a/protocol-units/bridge/service/src/chains/movement/client.rs b/protocol-units/bridge/service/src/chains/movement/client.rs index 651c765f0..1ece3e38d 100644 --- a/protocol-units/bridge/service/src/chains/movement/client.rs +++ b/protocol-units/bridge/service/src/chains/movement/client.rs @@ -2,7 +2,7 @@ use super::utils::{self, MovementAddress}; use crate::chains::bridge_contracts::BridgeContract; use crate::chains::bridge_contracts::BridgeContractError; use crate::chains::bridge_contracts::BridgeContractResult; -use crate::types::LockDetails; +use crate::types::BridgeTransferDetailsCounterparty; use crate::types::{ Amount, AssetType, BridgeAddress, BridgeTransferDetails, BridgeTransferId, HashLock, HashLockPreImage, TimeLock, @@ -398,7 +398,7 @@ impl BridgeContract for MovementClient { async fn get_bridge_transfer_details_counterparty( &mut self, bridge_transfer_id: BridgeTransferId, - ) -> BridgeContractResult>> { + ) -> BridgeContractResult>> { let bridge_transfer_id_hex = format!("0x{}", hex::encode(bridge_transfer_id.0)); let view_request = ViewRequest { @@ -452,7 +452,7 @@ impl BridgeContract for MovementClient { .try_into() .map_err(|_| BridgeContractError::SerializationError)?; - let details = LockDetails { + let details = BridgeTransferDetailsCounterparty { bridge_transfer_id, initiator_address: BridgeAddress(originator_address_bytes), recipient_address: BridgeAddress(MovementAddress(recipient_address)), diff --git a/protocol-units/bridge/service/src/chains/movement/client_framework.rs b/protocol-units/bridge/service/src/chains/movement/client_framework.rs index f0e30ead6..0e24653e2 100644 --- a/protocol-units/bridge/service/src/chains/movement/client_framework.rs +++ b/protocol-units/bridge/service/src/chains/movement/client_framework.rs @@ -3,6 +3,7 @@ use crate::chains::bridge_contracts::BridgeContract; use crate::chains::bridge_contracts::BridgeContractError; use crate::chains::bridge_contracts::BridgeContractResult; use crate::chains::ethereum::types::EthAddress; +use crate::types::BridgeTransferDetailsCounterparty; use crate::types::{ Amount, AssetType, BridgeAddress, BridgeTransferDetails, LockDetails, BridgeTransferId, HashLock, HashLockPreImage, TimeLock, @@ -412,7 +413,7 @@ impl BridgeContract for MovementClientFramework { async fn get_bridge_transfer_details_counterparty( &mut self, bridge_transfer_id: BridgeTransferId, - ) -> BridgeContractResult>> { + ) -> BridgeContractResult>> { let bridge_transfer_id_hex = format!("0x{}", hex::encode(bridge_transfer_id.0)); let view_request = ViewRequest { @@ -484,7 +485,7 @@ impl BridgeContract for MovementClientFramework { .as_u64() .ok_or(BridgeContractError::SerializationError)? as u8; - let details = LockDetails { + let details = BridgeTransferDetailsCounterparty { bridge_transfer_id, initiator_address: BridgeAddress(originator_address_bytes), recipient_address: BridgeAddress(MovementAddress(recipient_address)), @@ -513,6 +514,8 @@ use tokio::{ impl MovementClientFramework { pub async fn bridge_setup_scripts() -> Result<()> { + let current_dir = env::current_dir().expect("Failed to get current directory"); + println!("Current directory: {:?}", current_dir); let project_root = Path::new("../../../"); env::set_current_dir(&project_root) .context("Failed to change directory to project root")?; diff --git a/protocol-units/bridge/service/src/chains/movement/event_monitoring.rs b/protocol-units/bridge/service/src/chains/movement/event_monitoring.rs index 8db71680d..747557c12 100644 --- a/protocol-units/bridge/service/src/chains/movement/event_monitoring.rs +++ b/protocol-units/bridge/service/src/chains/movement/event_monitoring.rs @@ -555,7 +555,6 @@ impl TryFrom for LockDetails { })?), time_lock: TimeLock(data.time_lock), amount: Amount(AssetType::Moveth(data.amount)), - state: data.state, }) } } diff --git a/protocol-units/bridge/service/src/chains/movement/event_monitoring_framework.rs b/protocol-units/bridge/service/src/chains/movement/event_monitoring_framework.rs deleted file mode 100644 index 1800c042a..000000000 --- a/protocol-units/bridge/service/src/chains/movement/event_monitoring_framework.rs +++ /dev/null @@ -1,635 +0,0 @@ -use super::client::MovementClient; -use super::utils::MovementAddress; -use crate::chains::bridge_contracts::BridgeContractError; -use crate::chains::bridge_contracts::BridgeContractEvent; -use crate::chains::bridge_contracts::BridgeContractEventType; -use crate::chains::bridge_contracts::BridgeContractMonitoring; -use crate::chains::bridge_contracts::BridgeContractResult; -use crate::types::Amount; -use crate::types::AssetType; -use crate::types::BridgeAddress; -use crate::types::BridgeTransferDetails; -use crate::types::BridgeTransferId; -use crate::types::HashLock; -use crate::types::HashLockPreImage; -use crate::types::LockDetails; -use crate::types::TimeLock; -use anyhow::Result; -use aptos_sdk::rest_client::aptos_api_types::VersionedEvent; -use aptos_sdk::types::account_address::AccountAddress; -use bridge_config::common::movement::MovementConfig; -use futures::channel::mpsc::{self}; -use futures::SinkExt; -use futures::Stream; -use futures::StreamExt; -use hex::FromHex; -use serde::Deserialize; -use serde::Deserializer; -use serde::Serialize; -use std::{pin::Pin, task::Poll}; -use tokio::fs::{self, File}; -use tokio::io::{self, AsyncReadExt, AsyncWriteExt}; - -const PULL_STATE_FILE_NAME: &str = "pullstate.store"; -const FRAMEWORK_ADDRESS: AccountAddress = AccountAddress::new([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -]); - -#[derive(Debug, Default, Clone, Serialize, Deserialize)] -struct MvtPullingState { - initiator_init: u64, - initiator_complete: u64, - initiator_refund: u64, - counterpart_lock: u64, - counterpart_complete: u64, - counterpart_cancel: u64, -} - -impl MvtPullingState { - async fn save_to_store_file(&self) -> io::Result<()> { - let path = MvtPullingState::get_store_file_path(); - if let Some(parent) = path.parent() { - fs::create_dir_all(parent).await?; - } - - let json = serde_json::to_string(self)?; - let mut file = File::create(path.as_path()).await?; - file.write_all(json.as_bytes()).await?; - Ok(()) - } - - // Read the state from a JSON file - async fn build_from_store_file() -> io::Result { - let path = MvtPullingState::get_store_file_path(); - - let state = if fs::try_exists(&path).await? { - let mut file = File::open(path.as_path()).await?; - let mut json = String::new(); - file.read_to_string(&mut json).await?; - let state = serde_json::from_str(&json)?; - state - } else { - // Return a default state if the file does not exist - MvtPullingState::default() - }; - Ok(state) - } - - fn get_store_file_path() -> std::path::PathBuf { - let dot_movement = dot_movement::DotMovement::try_from_env() - .unwrap_or(dot_movement::DotMovement::new(".movement")); - bridge_config::get_config_path(&dot_movement).join(PULL_STATE_FILE_NAME) - } - - fn update_state_with_event( - &mut self, - event: &BridgeContractEvent, - sequence_number: u64, - ) { - //define the state to the next event. - match event { - BridgeContractEvent::Initiated(_) => { - if self.initiator_init <= sequence_number { - self.initiator_init = sequence_number + 1 - } - } - BridgeContractEvent::Locked(_) => { - if self.counterpart_lock <= sequence_number { - self.counterpart_lock = sequence_number + 1 - } - } - BridgeContractEvent::InitialtorCompleted(_) => { - if self.initiator_complete <= sequence_number { - self.initiator_complete = sequence_number + 1 - } - } - BridgeContractEvent::CounterPartCompleted(_, _) => { - if self.counterpart_complete <= sequence_number { - self.counterpart_complete = sequence_number + 1 - } - } - BridgeContractEvent::Cancelled(_) => { - if self.counterpart_cancel <= sequence_number { - self.counterpart_cancel = sequence_number + 1 - } - } - BridgeContractEvent::Refunded(_) => { - if self.initiator_refund <= sequence_number { - self.initiator_refund = sequence_number + 1 - } - } - } - } - - // If an error occurs during deserialization, the event seq_number must be increase - // to avoid always the fetch the same event. - fn update_state_with_error(&mut self, err: &BridgeContractError) { - match err { - BridgeContractError::EventDeserializingFail(_, event_type) => match event_type { - BridgeContractEventType::Initiated => self.initiator_init += 1, - BridgeContractEventType::Locked => self.counterpart_lock += 1, - BridgeContractEventType::InitialtorCompleted => self.initiator_complete += 1, - BridgeContractEventType::CounterPartCompleted => self.counterpart_complete += 1, - BridgeContractEventType::Cancelled => self.counterpart_cancel += 1, - BridgeContractEventType::Refunded => self.initiator_refund += 1, - }, - _ => (), - } - } -} - -pub struct MovementMonitoringFramework { - listener: mpsc::UnboundedReceiver>>, -} - -impl BridgeContractMonitoring for MovementMonitoringFramework { - type Address = MovementAddress; -} - -impl MovementMonitoringFramework { - pub async fn build(config: &MovementConfig) -> Result { - // Spawn a task to forward events to the listener channel - let (mut sender, listener) = futures::channel::mpsc::unbounded::< - BridgeContractResult>, - >(); - - //read the pull state - let mut pull_state = MvtPullingState::build_from_store_file().await?; - - tokio::spawn({ - let config = config.clone(); - async move { - let mvt_client = MovementClient::new(&config).await.unwrap(); - loop { - let mut init_event_list = match pool_initiator_contract( - FRAMEWORK_ADDRESS, - &config.mvt_rpc_connection_url(), - &pull_state, - ) - .await - { - Ok(evs) => evs.into_iter().map(|ev| Ok(ev)).collect(), - Err(err) => vec![Err(err)], - }; - let mut counterpart_event_list = match pool_counterpart_contract( - FRAMEWORK_ADDRESS, - &config.mvt_rpc_connection_url(), - &pull_state, - ) - .await - { - Ok(evs) => evs.into_iter().map(|ev| Ok(ev)).collect(), - Err(err) => vec![Err(err)], - }; - - //extract event sequence_number and update pull state - let (event_list, new_pull_state) = - init_event_list.drain(..).chain(counterpart_event_list.drain(..)).fold( - (Vec::new(), pull_state.clone()), - |(mut events, mut state), event| { - match event { - Ok((ev, seq)) => { - state.update_state_with_event(&ev, seq); - events.push(Ok(ev)); - } - Err(err) => { - state.update_state_with_error(&err); - events.push(Err(err)); - } - } - (events, state) - }, - ); - - for event in event_list { - if sender.send(event).await.is_err() { - tracing::error!("Failed to send event to listener channel"); - break; - } - } - pull_state = new_pull_state; - - if let Err(err) = pull_state.save_to_store_file().await { - tracing::error!("MVT monitoring unable to store the file state because:{err} for state:{pull_state:?}"); - } - let _ = tokio::time::sleep(tokio::time::Duration::from_millis(500)).await; - } - } - }); - - Ok(MovementMonitoringFramework { listener }) - } -} - -impl Stream for MovementMonitoringFramework { - type Item = BridgeContractResult>; - - fn poll_next(self: Pin<&mut Self>, cx: &mut std::task::Context) -> Poll> { - let this = self.get_mut(); - this.listener.poll_next_unpin(cx) - } -} - -#[derive(Debug, PartialEq, Eq, Clone, Deserialize)] -struct CounterpartyCompletedDetails { - pub bridge_transfer_id: BridgeTransferId, - pub initiator_address: BridgeAddress>, - pub recipient_address: BridgeAddress, - pub hash_lock: HashLock, - pub secret: HashLockPreImage, - pub amount: Amount, -} - -async fn pool_initiator_contract( - native_address: AccountAddress, - rest_url: &str, - pull_state: &MvtPullingState, -) -> BridgeContractResult, u64)>> { - let native_address_str = native_address.to_standard_string(); - let struct_tag = - format!("{}::atomic_bridge_initiator::BridgeTransferInitiatedEvent", native_address_str,); - - // Get initiated events - let initiated_events = get_account_events( - rest_url, - &native_address_str, - &struct_tag, - "bridge_transfer_initiated_events", - pull_state.initiator_init, - ) - .await? - .into_iter() - .map(|e| { - println!("Initiate event data: {:?} sequence_number:{}", e.data, e.sequence_number); - let data: BridgeInitEventData = serde_json::from_str(&e.data.to_string())?; - let transfer_details = BridgeTransferDetails::try_from(data)?; - Ok((BridgeContractEvent::Initiated(transfer_details), e.sequence_number.into())) - }) - .collect::>>() - .map_err(|e| { - BridgeContractError::EventDeserializingFail( - format!("MVT bridge_transfer_initiated_events de-serialization error:{}", e), - BridgeContractEventType::Initiated, - ) - })?; - - // Get completed events - let completed_events = get_account_events( - rest_url, - &native_address_str, - &struct_tag, - "bridge_transfer_completed_events", - pull_state.initiator_complete, - ) - .await? - .into_iter() - .map(|e| { - println!("complete event data: {:?} sequence_number:{}", e.data, e.sequence_number); - let data: BridgeCompletEventData = serde_json::from_str(&e.data.to_string())?; - let event = BridgeContractEvent::InitialtorCompleted( - data.bridge_transfer_id.try_into().map_err(|err| { - BridgeContractError::ConversionFailed(format!( - "MVT initiatorbridge_transfer_completed_events bridge_transfer_id can't be reconstructed:{:?}", - err - )) - })?, - ); - Ok((event, e.sequence_number.into())) - }) - .collect::>>() - .map_err(|e| { - BridgeContractError::EventDeserializingFail( - format!("MVT bridge_transfer_completed_events de-serialization error:{}", e), - BridgeContractEventType::InitialtorCompleted, - ) - })?; - - // Get refunded events - let refunded_events = get_account_events( - rest_url, - &native_address_str, - &struct_tag, - "bridge_transfer_refunded_events", - pull_state.initiator_refund, - ) - .await? - .into_iter() - .map(|e| { - println!("refund event data: {:?} sequence_number:{}", e.data, e.sequence_number); - let data = deserialize_hex_vec(e.data)?; - let event = BridgeContractEvent::Refunded(data.try_into().map_err(|err| { - BridgeContractError::ConversionFailed(format!( - "MVT bridge_transfer_refunded_events bridge_transfer_id can't be reconstructed:{:?}", - err - )) - })?); - Ok((event, e.sequence_number.into())) - }) - .collect::>>() - .map_err(|e| { - BridgeContractError::EventDeserializingFail( - format!("MVT bridge_transfer_refunded_events de-serialization error:{}", e), - BridgeContractEventType::Refunded, - ) - })?; - - let total_events = initiated_events - .into_iter() - .chain(completed_events.into_iter()) - .chain(refunded_events.into_iter()) - .collect::>(); - Ok(total_events) -} - -async fn pool_counterpart_contract( - native_address: AccountAddress, - rest_url: &str, - pull_state: &MvtPullingState, -) -> BridgeContractResult, u64)>> { - let native_address_str = native_address.to_standard_string(); - let struct_tag = - format!("{}::atomic_bridge_counterparty::BridgeTransferDetails", native_address_str); - - // Get locked events - let locked_events = get_account_events( - rest_url, - &native_address_str, - &struct_tag, - "bridge_transfer_locked_events", - pull_state.counterpart_lock, - ) - .await? - .into_iter() - .map(|e| { - println!("Lock event data: {:?} sequence_number:{}", e.data, e.sequence_number); - let data: BridgeInitEventData = serde_json::from_str(&e.data.to_string())?; - let transfer_details = LockDetails::try_from(data)?; - Ok((BridgeContractEvent::Locked(transfer_details), e.sequence_number.into())) - }) - .collect::>>() - .map_err(|e| { - BridgeContractError::EventDeserializingFail( - format!("MVT bridge_transfer_locked_events de-serialization error:{}", e), - BridgeContractEventType::Locked, - ) - })?; - - // Get completed events - let completed_events = get_account_events( - rest_url, - &native_address_str, - &struct_tag, - "bridge_transfer_completed_events", - pull_state.counterpart_complete, - ) - .await? - .into_iter() - .map(|e| { - println!( - "Counterpart complete event data: {:?} sequence_number:{}", - e.data, e.sequence_number - ); - let data: BridgeCompletEventData = serde_json::from_str(&e.data.to_string())?; - let event = BridgeContractEvent::CounterPartCompleted( - data.bridge_transfer_id.try_into().map_err(|err| { - BridgeContractError::ConversionFailed(format!( - "MVT counterparty bridge_transfer_completed_events bridge_transfer_id can't be reconstructed:{:?}", - err - )) - })?, - HashLockPreImage(data.pre_image.try_into().map_err(|err| { - BridgeContractError::ConversionFailed(format!( - "MVT counterparty bridge_transfer_completed_events pre_image can't be reconstructed:{:?}", - err - )) - })?), - ); - Ok((event, e.sequence_number.into())) - }) - .collect::>>() - .map_err(|e| { - BridgeContractError::EventDeserializingFail( - format!( - "MVT counterpart bridge_transfer_completed_events de-serialization error:{}", - e - ), - BridgeContractEventType::CounterPartCompleted, - ) - })?; - - // Get cancelled events - let cancelled_events = get_account_events( - rest_url, - &native_address_str, - &struct_tag, - "bridge_transfer_cancelled_events", - pull_state.counterpart_cancel, - ) - .await? - .into_iter() - .map(|e| { - println!("refund event data: {:?} sequence_number:{}", e.data, e.sequence_number); - let data = deserialize_hex_vec(e.data)?; - let event = BridgeContractEvent::Cancelled(data.try_into().map_err(|err| { - BridgeContractError::ConversionFailed(format!( - "MVT bridge_transfer_cancelled_events bridge_transfer_id can't be reconstructed:{:?}", - err - )) - })?); - Ok((event, e.sequence_number.into())) - }) - .collect::>>() - .map_err(|e| { - BridgeContractError::EventDeserializingFail( - format!("MVT bridge_transfer_cancelled_events de-serialization error:{}", e), - BridgeContractEventType::Cancelled, - ) - })?; - - let total_events = locked_events - .into_iter() - .chain(completed_events.into_iter()) - .chain(cancelled_events.into_iter()) - .collect::>(); - Ok(total_events) -} - -#[derive(Debug, Deserialize)] -pub struct BridgeCompletEventData { - #[serde(deserialize_with = "deserialize_hex_vec")] - pub bridge_transfer_id: Vec, - #[serde(deserialize_with = "deserialize_hex_vec")] - pub pre_image: Vec, -} - -#[derive(Debug, Deserialize)] -pub struct BridgeInitEventData { - #[serde(deserialize_with = "deserialize_hex_vec")] - pub bridge_transfer_id: Vec, - #[serde(deserialize_with = "deserialize_hex_vec")] - pub initiator: Vec, - #[serde(deserialize_with = "deserialize_hex_vec")] - pub recipient: Vec, - #[serde(deserialize_with = "deserialize_hex_vec")] - pub hash_lock: Vec, - #[serde(deserialize_with = "deserialize_u64_from_string")] - pub time_lock: u64, - #[serde(deserialize_with = "deserialize_u64_from_string")] - pub amount: u64, - #[serde(deserialize_with = "deserialize_u8_from_string")] - pub state: u8, -} - -// Custom deserialization function to convert a hex string to Vec -fn deserialize_hex_vec<'de, D>(deserializer: D) -> Result, D::Error> -where - D: Deserializer<'de>, -{ - let hex_str: &str = Deserialize::deserialize(deserializer)?; - let hex_str = if hex_str.starts_with("0x") { &hex_str[2..] } else { &hex_str }; - Vec::from_hex(hex_str).map_err(serde::de::Error::custom) -} - -fn deserialize_u8_from_string<'de, D>(deserializer: D) -> Result -where - D: Deserializer<'de>, -{ - let s: String = Deserialize::deserialize(deserializer)?; - s.parse::().map_err(serde::de::Error::custom) -} - -fn deserialize_u64_from_string<'de, D>(deserializer: D) -> Result -where - D: Deserializer<'de>, -{ - let s: String = Deserialize::deserialize(deserializer)?; - s.parse::().map_err(serde::de::Error::custom) -} - -impl TryFrom for BridgeTransferDetails { - type Error = BridgeContractError; - - fn try_from(data: BridgeInitEventData) -> Result { - Ok(BridgeTransferDetails { - bridge_transfer_id: BridgeTransferId(data.bridge_transfer_id.try_into().map_err( - |e| { - BridgeContractError::ConversionFailed(format!( - "MVT BridgeTransferDetails data onchain bridge_transfer_id conversion error error:{:?}", - e - )) - }, - )?), - initiator_address: BridgeAddress(MovementAddress::from(data.initiator)), - recipient_address: BridgeAddress(data.recipient), - hash_lock: HashLock(data.hash_lock.try_into().map_err(|e| { - BridgeContractError::ConversionFailed(format!( - "MVT BridgeTransferDetails data onchain hash_lock conversion error error:{:?}", - e - )) - })?), - time_lock: TimeLock(data.time_lock), - amount: Amount(AssetType::Moveth(data.amount)), - state: 8, - }) - } -} - -impl TryFrom for LockDetails { - type Error = BridgeContractError; - - fn try_from(data: BridgeInitEventData) -> Result { - Ok(LockDetails { - bridge_transfer_id: BridgeTransferId(data.bridge_transfer_id.try_into().map_err( - |e| { - BridgeContractError::ConversionFailed(format!( - "MVT BridgeTransferDetails data onchain bridge_transfer_id conversion error error:{:?}", - e - )) - }, - )?), - initiator_address: BridgeAddress(data.recipient), - recipient_address: BridgeAddress(MovementAddress::from(data.initiator)), - hash_lock: HashLock(data.hash_lock.try_into().map_err(|e| { - BridgeContractError::ConversionFailed(format!( - "MVT BridgeTransferDetails data onchain hash_lock conversion error error:{:?}", - e - )) - })?), - time_lock: TimeLock(data.time_lock), - amount: Amount(AssetType::Moveth(data.amount)), - state: data.state, - }) - } -} - -// Example of return string. -// [ -// { -// "version": "25", -// "guid": -// { -// "creation_number": "5", -// "account_address": "0xb07a6a200d595dd4ed39d9b91e3132e6c15735549e9920c585b2beec0ae659b6" -// }, -// "sequence_number": "0", -// "type": "0xb07a6a200d595dd4ed39d9b91e3132e6c15735549e9920c585b2beec0ae659b6::atomic_bridge_initiator::BridgeTransferInitiatedEvent", -// "data": -// { -// "amount": "100", -// "bridge_transfer_id": "0xeaefd189df98d57b8f4619584cff1fd67f2787c664ac8e9761ecfd7a6ae1fa2b", -// "hash_lock": "0xfb54fb738082d0214980feb4055e779d7d4722cb0809d5fbe79df8117801c3bb", -// "originator": "0xf90391c81027f03cdea491ed8b36ffaced26b6df208a9b569e5baf2590eb9b16", -// "recipient": "0x3078313233", -// "time_lock": "1", -// "state": 1 -// } -// } -// ] -async fn get_account_events( - rest_url: &str, - account_address: &str, - event_type: &str, - field_name: &str, - start_version: u64, -) -> Result, BridgeContractError> { - let url = format!( - "{}/v1/accounts/{}/events/{}/{}", - rest_url, account_address, event_type, field_name - ); - - let client = reqwest::Client::new(); - - // Send the GET request - let response = client - .get(&url) - .query(&[("start", &start_version.to_string()[..]), ("limit", "10")]) - .send() - .await - .map_err(|e| { - BridgeContractError::OnChainError(format!( - "MVT get_account_events get request error: {}", - e - )) - })?; - - // Print the raw response body - let raw_body = response.text().await.map_err(|e| { - BridgeContractError::OnChainError(format!( - "MVT get_account_events error while reading response body: {}", - e - )) - })?; - - // Print the raw response for debugging purposes - println!("Raw response body: {}", raw_body); - - // Now attempt to parse the response body as JSON - let response_json: Vec = serde_json::from_str(&raw_body).map_err(|e| { - BridgeContractError::OnChainError(format!( - "MVT get_account_events JSON conversion error: {}", - e - )) - })?; - - Ok(response_json) -} diff --git a/protocol-units/bridge/service/src/chains/movement/mod.rs b/protocol-units/bridge/service/src/chains/movement/mod.rs index b8a2b1644..52a8ac4a5 100644 --- a/protocol-units/bridge/service/src/chains/movement/mod.rs +++ b/protocol-units/bridge/service/src/chains/movement/mod.rs @@ -1,5 +1,4 @@ pub mod client; pub mod client_framework; pub mod event_monitoring; -pub mod event_monitoring_framework; pub mod utils; diff --git a/protocol-units/bridge/service/src/types.rs b/protocol-units/bridge/service/src/types.rs index bbb95b5f3..116c3487c 100644 --- a/protocol-units/bridge/service/src/types.rs +++ b/protocol-units/bridge/service/src/types.rs @@ -225,7 +225,7 @@ pub struct BridgeTransferDetails { } #[derive(Debug, PartialEq, Eq, Clone, Deserialize)] -pub struct LockDetails { +pub struct BridgeTransferDetailsCounterparty { pub bridge_transfer_id: BridgeTransferId, pub initiator_address: BridgeAddress>, pub recipient_address: BridgeAddress, @@ -234,3 +234,13 @@ pub struct LockDetails { pub amount: Amount, pub state: u8, } + +#[derive(Debug, PartialEq, Eq, Clone, Deserialize)] +pub struct LockDetails { + pub bridge_transfer_id: BridgeTransferId, + pub initiator_address: BridgeAddress>, + pub recipient_address: BridgeAddress, + pub hash_lock: HashLock, + pub time_lock: TimeLock, + pub amount: Amount, +} From 7bf3b011b7355bde795396802c99cac0a89c58b2 Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Wed, 16 Oct 2024 07:23:10 -0400 Subject: [PATCH 28/35] bump aptos-core rev --- Cargo.lock | 268 ++++++++++++++++++++++++++--------------------------- Cargo.toml | 64 ++++++------- 2 files changed, 166 insertions(+), 166 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 475f725a4..4e288405a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -11,7 +11,7 @@ checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" [[package]] name = "abstract-domain-derive" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "proc-macro2", "quote", @@ -794,7 +794,7 @@ checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" [[package]] name = "aptos-abstract-gas-usage" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-gas-algebra", @@ -807,7 +807,7 @@ dependencies = [ [[package]] name = "aptos-accumulator" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-crypto", @@ -817,7 +817,7 @@ dependencies = [ [[package]] name = "aptos-aggregator" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "aptos-logger", "aptos-types", @@ -831,7 +831,7 @@ dependencies = [ [[package]] name = "aptos-api" version = "0.2.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-api-types", @@ -873,7 +873,7 @@ dependencies = [ [[package]] name = "aptos-api-types" version = "0.0.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-config", @@ -903,7 +903,7 @@ dependencies = [ [[package]] name = "aptos-bcs-utils" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "hex", @@ -912,7 +912,7 @@ dependencies = [ [[package]] name = "aptos-bitvec" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "serde", "serde_bytes", @@ -921,7 +921,7 @@ dependencies = [ [[package]] name = "aptos-block-executor" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-aggregator", @@ -956,7 +956,7 @@ dependencies = [ [[package]] name = "aptos-block-partitioner" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "aptos-crypto", "aptos-logger", @@ -977,7 +977,7 @@ dependencies = [ [[package]] name = "aptos-bounded-executor" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "futures", "rustversion", @@ -987,7 +987,7 @@ dependencies = [ [[package]] name = "aptos-build-info" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "shadow-rs", ] @@ -995,7 +995,7 @@ dependencies = [ [[package]] name = "aptos-cached-packages" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-framework", @@ -1009,7 +1009,7 @@ dependencies = [ [[package]] name = "aptos-channels" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-infallible", @@ -1020,7 +1020,7 @@ dependencies = [ [[package]] name = "aptos-compression" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "aptos-logger", "aptos-metrics-core", @@ -1032,7 +1032,7 @@ dependencies = [ [[package]] name = "aptos-config" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-crypto", @@ -1063,7 +1063,7 @@ dependencies = [ [[package]] name = "aptos-consensus-types" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-bitvec", @@ -1090,7 +1090,7 @@ dependencies = [ [[package]] name = "aptos-crypto" version = "0.0.3" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "aes-gcm", "anyhow", @@ -1143,7 +1143,7 @@ dependencies = [ [[package]] name = "aptos-crypto-derive" version = "0.0.3" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "proc-macro2", "quote", @@ -1153,7 +1153,7 @@ dependencies = [ [[package]] name = "aptos-db" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-accumulator", @@ -1201,7 +1201,7 @@ dependencies = [ [[package]] name = "aptos-db-indexer" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-config", @@ -1221,7 +1221,7 @@ dependencies = [ [[package]] name = "aptos-db-indexer-schemas" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-schemadb", @@ -1235,7 +1235,7 @@ dependencies = [ [[package]] name = "aptos-dkg" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-crypto", @@ -1266,7 +1266,7 @@ dependencies = [ [[package]] name = "aptos-drop-helper" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "aptos-infallible", "aptos-metrics-core", @@ -1277,7 +1277,7 @@ dependencies = [ [[package]] name = "aptos-event-notifications" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-channels", @@ -1293,7 +1293,7 @@ dependencies = [ [[package]] name = "aptos-executor" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-consensus-types", @@ -1325,7 +1325,7 @@ dependencies = [ [[package]] name = "aptos-executor-service" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "aptos-block-partitioner", "aptos-config", @@ -1355,7 +1355,7 @@ dependencies = [ [[package]] name = "aptos-executor-test-helpers" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-cached-packages", @@ -1377,7 +1377,7 @@ dependencies = [ [[package]] name = "aptos-executor-types" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-crypto", @@ -1397,7 +1397,7 @@ dependencies = [ [[package]] name = "aptos-experimental-runtimes" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "aptos-runtimes", "core_affinity", @@ -1410,7 +1410,7 @@ dependencies = [ [[package]] name = "aptos-faucet-core" version = "2.0.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-config", @@ -1444,7 +1444,7 @@ dependencies = [ [[package]] name = "aptos-faucet-metrics-server" version = "2.0.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-logger", @@ -1458,7 +1458,7 @@ dependencies = [ [[package]] name = "aptos-framework" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-aggregator", @@ -1526,7 +1526,7 @@ dependencies = [ [[package]] name = "aptos-gas-algebra" version = "0.0.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "either", "move-core-types", @@ -1535,7 +1535,7 @@ dependencies = [ [[package]] name = "aptos-gas-meter" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "aptos-gas-algebra", "aptos-gas-schedule", @@ -1550,7 +1550,7 @@ dependencies = [ [[package]] name = "aptos-gas-profiling" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-gas-algebra", @@ -1570,7 +1570,7 @@ dependencies = [ [[package]] name = "aptos-gas-schedule" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "aptos-gas-algebra", "aptos-global-constants", @@ -1583,17 +1583,17 @@ dependencies = [ [[package]] name = "aptos-global-constants" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" [[package]] name = "aptos-id-generator" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" [[package]] name = "aptos-indexer" version = "0.0.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-api", @@ -1625,7 +1625,7 @@ dependencies = [ [[package]] name = "aptos-indexer-grpc-fullnode" version = "1.0.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-api", @@ -1637,7 +1637,7 @@ dependencies = [ "aptos-mempool", "aptos-metrics-core", "aptos-moving-average 0.1.0 (git+https://github.com/movementlabsxyz/aptos-indexer-processors)", - "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c)", + "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e)", "aptos-runtimes", "aptos-storage-interface", "aptos-types", @@ -1663,7 +1663,7 @@ dependencies = [ [[package]] name = "aptos-indexer-grpc-table-info" version = "1.0.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-api", @@ -1694,11 +1694,11 @@ dependencies = [ [[package]] name = "aptos-indexer-grpc-utils" version = "1.0.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-metrics-core", - "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c)", + "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e)", "async-trait", "backoff", "base64 0.13.1", @@ -1726,12 +1726,12 @@ dependencies = [ [[package]] name = "aptos-infallible" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" [[package]] name = "aptos-jellyfish-merkle" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-crypto", @@ -1759,7 +1759,7 @@ dependencies = [ [[package]] name = "aptos-keygen" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "aptos-crypto", "aptos-types", @@ -1769,7 +1769,7 @@ dependencies = [ [[package]] name = "aptos-language-e2e-tests" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-abstract-gas-usage", @@ -1813,7 +1813,7 @@ dependencies = [ [[package]] name = "aptos-ledger" version = "0.2.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "aptos-crypto", "aptos-types", @@ -1826,7 +1826,7 @@ dependencies = [ [[package]] name = "aptos-log-derive" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "proc-macro2", "quote", @@ -1836,7 +1836,7 @@ dependencies = [ [[package]] name = "aptos-logger" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "aptos-infallible", "aptos-log-derive", @@ -1860,7 +1860,7 @@ dependencies = [ [[package]] name = "aptos-memory-usage-tracker" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "aptos-gas-algebra", "aptos-gas-meter", @@ -1873,7 +1873,7 @@ dependencies = [ [[package]] name = "aptos-mempool" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-bounded-executor", @@ -1913,7 +1913,7 @@ dependencies = [ [[package]] name = "aptos-mempool-notifications" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "aptos-types", "async-trait", @@ -1926,7 +1926,7 @@ dependencies = [ [[package]] name = "aptos-memsocket" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "aptos-infallible", "bytes 1.7.2", @@ -1937,7 +1937,7 @@ dependencies = [ [[package]] name = "aptos-metrics-core" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "prometheus", @@ -1946,7 +1946,7 @@ dependencies = [ [[package]] name = "aptos-move-stdlib" version = "0.1.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "aptos-gas-schedule", "aptos-native-interface", @@ -1977,7 +1977,7 @@ dependencies = [ [[package]] name = "aptos-mvhashmap" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-aggregator", @@ -1998,7 +1998,7 @@ dependencies = [ [[package]] name = "aptos-native-interface" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "aptos-gas-algebra", "aptos-gas-schedule", @@ -2015,7 +2015,7 @@ dependencies = [ [[package]] name = "aptos-netcore" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "aptos-memsocket", "aptos-proxy", @@ -2032,7 +2032,7 @@ dependencies = [ [[package]] name = "aptos-network" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-bitvec", @@ -2077,7 +2077,7 @@ dependencies = [ [[package]] name = "aptos-node-identity" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-types", @@ -2088,7 +2088,7 @@ dependencies = [ [[package]] name = "aptos-node-resource-metrics" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "aptos-build-info", "aptos-infallible", @@ -2104,7 +2104,7 @@ dependencies = [ [[package]] name = "aptos-num-variants" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "proc-macro2", "quote", @@ -2114,7 +2114,7 @@ dependencies = [ [[package]] name = "aptos-openapi" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "async-trait", "percent-encoding", @@ -2127,7 +2127,7 @@ dependencies = [ [[package]] name = "aptos-package-builder" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-framework", @@ -2140,7 +2140,7 @@ dependencies = [ [[package]] name = "aptos-peer-monitoring-service-types" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "aptos-config", "aptos-types", @@ -2165,7 +2165,7 @@ dependencies = [ [[package]] name = "aptos-proptest-helpers" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "crossbeam", "proptest", @@ -2187,7 +2187,7 @@ dependencies = [ [[package]] name = "aptos-protos" version = "1.3.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "futures-core", "pbjson", @@ -2199,7 +2199,7 @@ dependencies = [ [[package]] name = "aptos-proxy" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "ipnet", ] @@ -2207,7 +2207,7 @@ dependencies = [ [[package]] name = "aptos-push-metrics" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "aptos-logger", "aptos-metrics-core", @@ -2218,7 +2218,7 @@ dependencies = [ [[package]] name = "aptos-resource-viewer" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-types", @@ -2232,7 +2232,7 @@ dependencies = [ [[package]] name = "aptos-rest-client" version = "0.0.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-api-types", @@ -2255,7 +2255,7 @@ dependencies = [ [[package]] name = "aptos-rocksdb-options" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "aptos-config", "rocksdb", @@ -2264,7 +2264,7 @@ dependencies = [ [[package]] name = "aptos-runtimes" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "rayon", "tokio", @@ -2273,7 +2273,7 @@ dependencies = [ [[package]] name = "aptos-schemadb" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-infallible", @@ -2290,7 +2290,7 @@ dependencies = [ [[package]] name = "aptos-scratchpad" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "aptos-crypto", "aptos-drop-helper", @@ -2309,7 +2309,7 @@ dependencies = [ [[package]] name = "aptos-sdk" version = "0.0.3" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-cached-packages", @@ -2331,7 +2331,7 @@ dependencies = [ [[package]] name = "aptos-sdk-builder" version = "0.2.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-types", @@ -2349,11 +2349,11 @@ dependencies = [ [[package]] name = "aptos-secure-net" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "aptos-logger", "aptos-metrics-core", - "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c)", + "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e)", "bcs 0.1.4", "crossbeam-channel", "once_cell", @@ -2367,7 +2367,7 @@ dependencies = [ [[package]] name = "aptos-secure-storage" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "aptos-crypto", "aptos-infallible", @@ -2388,7 +2388,7 @@ dependencies = [ [[package]] name = "aptos-short-hex-str" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "mirai-annotations", "serde", @@ -2399,7 +2399,7 @@ dependencies = [ [[package]] name = "aptos-speculative-state-helper" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-infallible", @@ -2410,7 +2410,7 @@ dependencies = [ [[package]] name = "aptos-storage-interface" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-crypto", @@ -2458,7 +2458,7 @@ dependencies = [ [[package]] name = "aptos-table-natives" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "aptos-gas-schedule", "aptos-native-interface", @@ -2476,7 +2476,7 @@ dependencies = [ [[package]] name = "aptos-temppath" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "hex", "rand 0.7.3", @@ -2485,7 +2485,7 @@ dependencies = [ [[package]] name = "aptos-time-service" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "aptos-infallible", "enum_dispatch", @@ -2498,7 +2498,7 @@ dependencies = [ [[package]] name = "aptos-types" version = "0.0.3" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-bitvec", @@ -2555,12 +2555,12 @@ dependencies = [ [[package]] name = "aptos-utils" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" [[package]] name = "aptos-vault-client" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "aptos-crypto", "base64 0.13.1", @@ -2576,7 +2576,7 @@ dependencies = [ [[package]] name = "aptos-vm" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-aggregator", @@ -2626,7 +2626,7 @@ dependencies = [ [[package]] name = "aptos-vm-genesis" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "aptos-cached-packages", "aptos-crypto", @@ -2647,7 +2647,7 @@ dependencies = [ [[package]] name = "aptos-vm-logging" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "aptos-crypto", "aptos-logger", @@ -2662,7 +2662,7 @@ dependencies = [ [[package]] name = "aptos-vm-types" version = "0.0.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-aggregator", @@ -2684,7 +2684,7 @@ dependencies = [ [[package]] name = "aptos-vm-validator" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "aptos-logger", @@ -8593,7 +8593,7 @@ dependencies = [ "aptos-language-e2e-tests", "aptos-logger", "aptos-mempool", - "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c)", + "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e)", "aptos-sdk", "aptos-storage-interface", "aptos-temppath", @@ -8937,7 +8937,7 @@ checksum = "1fafa6961cabd9c63bcd77a45d7e3b7f3b552b70417831fb0f56db717e72407e" [[package]] name = "move-abigen" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "bcs 0.1.4", @@ -8954,7 +8954,7 @@ dependencies = [ [[package]] name = "move-binary-format" version = "0.0.3" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "backtrace", @@ -8969,12 +8969,12 @@ dependencies = [ [[package]] name = "move-borrow-graph" version = "0.0.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" [[package]] name = "move-bytecode-source-map" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "bcs 0.1.4", @@ -8989,7 +8989,7 @@ dependencies = [ [[package]] name = "move-bytecode-spec" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "once_cell", "quote", @@ -8999,7 +8999,7 @@ dependencies = [ [[package]] name = "move-bytecode-utils" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "move-binary-format", @@ -9011,7 +9011,7 @@ dependencies = [ [[package]] name = "move-bytecode-verifier" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "fail", "move-binary-format", @@ -9025,7 +9025,7 @@ dependencies = [ [[package]] name = "move-bytecode-viewer" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "clap 4.5.19", @@ -9040,7 +9040,7 @@ dependencies = [ [[package]] name = "move-cli" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "clap 4.5.19", @@ -9070,7 +9070,7 @@ dependencies = [ [[package]] name = "move-command-line-common" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "difference", @@ -9087,7 +9087,7 @@ dependencies = [ [[package]] name = "move-compiler" version = "0.0.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "bcs 0.1.4", @@ -9113,7 +9113,7 @@ dependencies = [ [[package]] name = "move-compiler-v2" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "abstract-domain-derive", "anyhow", @@ -9144,7 +9144,7 @@ dependencies = [ [[package]] name = "move-core-types" version = "0.0.4" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "arbitrary", @@ -9169,7 +9169,7 @@ dependencies = [ [[package]] name = "move-coverage" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "bcs 0.1.4", @@ -9188,7 +9188,7 @@ dependencies = [ [[package]] name = "move-disassembler" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "clap 4.5.19", @@ -9205,7 +9205,7 @@ dependencies = [ [[package]] name = "move-docgen" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "clap 4.5.19", @@ -9224,7 +9224,7 @@ dependencies = [ [[package]] name = "move-errmapgen" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "move-command-line-common", @@ -9236,7 +9236,7 @@ dependencies = [ [[package]] name = "move-ir-compiler" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "bcs 0.1.4", @@ -9252,7 +9252,7 @@ dependencies = [ [[package]] name = "move-ir-to-bytecode" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "codespan-reporting", @@ -9270,7 +9270,7 @@ dependencies = [ [[package]] name = "move-ir-to-bytecode-syntax" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "hex", @@ -9283,7 +9283,7 @@ dependencies = [ [[package]] name = "move-ir-types" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "hex", "move-command-line-common", @@ -9296,7 +9296,7 @@ dependencies = [ [[package]] name = "move-model" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "codespan", @@ -9322,7 +9322,7 @@ dependencies = [ [[package]] name = "move-package" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "clap 4.5.19", @@ -9356,7 +9356,7 @@ dependencies = [ [[package]] name = "move-prover" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "atty", @@ -9383,7 +9383,7 @@ dependencies = [ [[package]] name = "move-prover-boogie-backend" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "async-trait", @@ -9412,7 +9412,7 @@ dependencies = [ [[package]] name = "move-prover-bytecode-pipeline" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "abstract-domain-derive", "anyhow", @@ -9429,7 +9429,7 @@ dependencies = [ [[package]] name = "move-resource-viewer" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "hex", @@ -9456,7 +9456,7 @@ dependencies = [ [[package]] name = "move-stackless-bytecode" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "abstract-domain-derive", "codespan-reporting", @@ -9475,7 +9475,7 @@ dependencies = [ [[package]] name = "move-stdlib" version = "0.1.1" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "hex", @@ -9498,7 +9498,7 @@ dependencies = [ [[package]] name = "move-symbol-pool" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "once_cell", "serde", @@ -9507,7 +9507,7 @@ dependencies = [ [[package]] name = "move-table-extension" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "better_any", "bytes 1.7.2", @@ -9522,7 +9522,7 @@ dependencies = [ [[package]] name = "move-unit-test" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "better_any", @@ -9550,7 +9550,7 @@ dependencies = [ [[package]] name = "move-vm-runtime" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "better_any", "bytes 1.7.2", @@ -9574,7 +9574,7 @@ dependencies = [ [[package]] name = "move-vm-test-utils" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "anyhow", "bytes 1.7.2", @@ -9589,7 +9589,7 @@ dependencies = [ [[package]] name = "move-vm-types" version = "0.1.0" -source = "git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c#3f0c536d9dd88a0b63144d57082274f8e61fe47c" +source = "git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e#7a0e210fe29e2c81c378568eba2b467a7ef6a56e" dependencies = [ "bcs 0.1.4", "derivative", @@ -13234,7 +13234,7 @@ name = "suzuka-client" version = "0.0.2" dependencies = [ "anyhow", - "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=3f0c536d9dd88a0b63144d57082274f8e61fe47c)", + "aptos-protos 1.3.0 (git+https://github.com/movementlabsxyz/aptos-core?rev=7a0e210fe29e2c81c378568eba2b467a7ef6a56e)", "aptos-sdk", "aptos-types", "async-trait", diff --git a/Cargo.toml b/Cargo.toml index 544aa2085..9ef967faa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -114,40 +114,40 @@ serde_yaml = "0.9.34" ## Aptos dependencies ### We use a forked version so that we can override dependency versions. This is required ### to be avoid dependency conflicts with other Sovereign Labs crates. -aptos-api = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } -aptos-api-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } -aptos-bitvec = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } -aptos-block-executor = { git = "https://github.com/movementlabsxyz/aptos-core.git", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } -aptos-cached-packages = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } -aptos-config = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } -aptos-consensus-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } -aptos-crypto = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c", features = [ +aptos-api = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } +aptos-api-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } +aptos-bitvec = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } +aptos-block-executor = { git = "https://github.com/movementlabsxyz/aptos-core.git", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } +aptos-cached-packages = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } +aptos-config = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } +aptos-consensus-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } +aptos-crypto = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e", features = [ "cloneable-private-keys", ] } -aptos-db = { git = "https://github.com/movementlabsxyz/aptos-core.git", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } -aptos-executor = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } -aptos-executor-test-helpers = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } -aptos-executor-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } -aptos-faucet-core = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } -aptos-framework = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } -aptos-language-e2e-tests = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } -aptos-mempool = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } -aptos-proptest-helpers = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } -aptos-sdk = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } -aptos-state-view = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } -aptos-storage-interface = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } -aptos-temppath = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } -aptos-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } -aptos-vm = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } -aptos-vm-genesis = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } -aptos-vm-logging = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } -aptos-vm-validator = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } -aptos-logger = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } -aptos-vm-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } -aptos-indexer = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } -aptos-indexer-grpc-fullnode = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } -aptos-indexer-grpc-table-info = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } -aptos-protos = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "3f0c536d9dd88a0b63144d57082274f8e61fe47c" } +aptos-db = { git = "https://github.com/movementlabsxyz/aptos-core.git", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } +aptos-executor = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } +aptos-executor-test-helpers = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } +aptos-executor-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } +aptos-faucet-core = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } +aptos-framework = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } +aptos-language-e2e-tests = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } +aptos-mempool = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } +aptos-proptest-helpers = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } +aptos-sdk = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } +aptos-state-view = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } +aptos-storage-interface = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } +aptos-temppath = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } +aptos-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } +aptos-vm = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } +aptos-vm-genesis = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } +aptos-vm-logging = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } +aptos-vm-validator = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } +aptos-logger = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } +aptos-vm-types = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } +aptos-indexer = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } +aptos-indexer-grpc-fullnode = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } +aptos-indexer-grpc-table-info = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } +aptos-protos = { git = "https://github.com/movementlabsxyz/aptos-core", rev = "7a0e210fe29e2c81c378568eba2b467a7ef6a56e" } # Indexer processor = { git = "https://github.com/movementlabsxyz/aptos-indexer-processors", rev = "8e83cde3cb75fabdade9485e0af680cc4b73ca8e", subdir = "rust" } From 761a39f7caed9718dbe6334d9ea5b733dc72fb9a Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Wed, 16 Oct 2024 07:58:03 -0400 Subject: [PATCH 29/35] Simpler steps to run integration tests --- .../bridge/integration-tests/README.md | 110 +++--------------- 1 file changed, 13 insertions(+), 97 deletions(-) diff --git a/protocol-units/bridge/integration-tests/README.md b/protocol-units/bridge/integration-tests/README.md index 8452ee3f0..b9837e94c 100644 --- a/protocol-units/bridge/integration-tests/README.md +++ b/protocol-units/bridge/integration-tests/README.md @@ -7,122 +7,38 @@ The client integration tests for the framework bridge modules are in `tests`: In order to successfully run the tests against a local Suzuka node, the core resource account `0xA550C18` needs to be set to the same private key generated in `config.json`. -## Steps to configure core resource account for signing in tests: +## Steps to run integration tests -1. From the root of the `movement` repository, run the local Suzuka node: +1. Navigate to the root of the `movement` repo, checkout the `andygolay/framework-client-tests` branch, and start a local Suzuka node: ``` CELESTIA_LOG_LEVEL=FATAL CARGO_PROFILE=release CARGO_PROFILE_FLAGS=--release nix develop --extra-experimental-features nix-command --extra-experimental-features flakes --command bash -c "just bridge native build.setup.eth-local.celestia-local --keep-tui" ``` -(You'll need Nix and Movement CLI if you don't already have them installed.) +Note, if you have any `.movement` directories present, e.g. when re-running tests, the directories must be deleted before starting the node. -This will generate a `.movement` dir in the project root containing a `config.json` with a `maptos_private_key` of `0x1`: -``` - "maptos_private_key": "0x0000000000000000000000000000000000000000000000000000000000000001", -``` - -There will also be a `config.yaml` that looks something like: +2. In the generated `.movement` directory, there will be a `config.yaml`. In that file, change `f90391c81027f03cdea491ed8b36ffaced26b6df208a9b569e5baf2590eb9b16` to `0xA550C18` so the file looks like: ``` --- profiles: default: - network: Custom - private_key: "0x5754431205b8abc443a7a877a70d6e5e67eba8e5e40b0436bff5a9b6ab4a7887" - public_key: "0x2b8c073bf4c091649d8fb5c275cacc6c8cf8cb6baaf0d7dffc47216011b6a27d" - account: e813b12fc00bed33b54b5652c3bb1cbf12a33080aba9cd12d919b6d65cec6115 - rest_url: "http://localhost:30731/v1" - faucet_url: "http://localhost:30732/" -``` - -2. Init a profile with the `0x1` private key. Here we init a profile named `local_root`: - -``` -movement init --profile local_root --rest-url http://localhost:30731/v1 --private-key 0x0000000000000000000000000000000000000000000000000000000000000001 --encoding hex --network custom -``` - -3. In `config.yaml` replace the `account` of `local_root` with `000000000000000000000000000000000000000000000000000000000a550c18` and skip the faucet step by pressing Enter when prompted. Your `config.yaml` will look like this: - -``` ---- -profiles: - default: - network: Custom - private_key: "" - public_key: "0x2b8c073bf4c091649d8fb5c275cacc6c8cf8cb6baaf0d7dffc47216011b6a27d" - account: e813b12fc00bed33b54b5652c3bb1cbf12a33080aba9cd12d919b6d65cec6115 - rest_url: "http://localhost:30731/v1" - faucet_url: "http://localhost:30732/" - local_root: network: Custom private_key: "0x0000000000000000000000000000000000000000000000000000000000000001" public_key: "0x4cb5abf6ad79fbf5abbccafcc269d85cd2651ed4b885b5869f241aedf0a5ba29" - account: 000000000000000000000000000000000000000000000000000000000a550c18 - rest_url: "http://localhost:30731/v1" -``` + account: "0xA550C18" + rest_url: "http://0.0.0.0:30731/" + faucet_url: "http://0.0.0.0:30732/" +``` -4. List the contents of the `0xa550c18` account: +3. Run each set of Movement client tests: +L1 Move to L2 Move: ``` - movement account list --account 0xA550C18 +rust_backtrace=1 cargo test --test client_l1move_l2move -- --nocapture --test-threads=1 ``` -You should see a large number of `AptosCoin` held by the account: - -``` -{ - "0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>": { - "coin": { - "value": "18446743973709450015" - }, - "deposit_events": { - "counter": "1", - "guid": { - "id": { - "addr": "0xa550c18", - "creation_num": "2" - } - } - }, - "frozen": false, - "withdraw_events": { - "counter": "1", - "guid": { - "id": { - "addr": "0xa550c18", - "creation_num": "3" - } - } - } - } - } +L2 Move to L1 Move: ``` - -This large number of gas coins signifies that this is the core resource account. - -5. Verify that you control the core resources signer by transferring gas tokens to your default account: - -``` -movement account transfer --profile local_root --amount 100 --account e813b12fc00bed33b54b5652c3bb1cbf12a33080aba9cd12d919b6d65cec6115 -``` - -You'll be prompted to submit a transaction. After doing so, if the transaction is successful, you'll get a success message and transaction result. - -## Steps to run client integration tests - -Now that the core resource signer is configured, you can run the client integration tests. - -There are two scripts in `protocol-units/bridge/move-modules`, one for enabling the Atomic Bridge feature flag and one for updating bridge operator. - -1. Compile the scripts: - -``` -movement move compile --package-dir protocol-units/bridge/move-modules -``` - -2. Run the `enable_bridge_feature` script: - +rust_backtrace=1 cargo test --test client_l2move_l1move -- --nocapture --test-threads=1 ``` - movement move run-script --compiled-script-path protocol-units/bridge/move-modules/build/bridge-modules/bytecode_scripts/enable_bridge_feature.mv --profile local_root - ``` \ No newline at end of file From 1ff8447278f015442fb9a44d916915b76ad241bd Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Wed, 16 Oct 2024 08:00:27 -0400 Subject: [PATCH 30/35] Remove dupe line --- .../bridge/integration-tests/tests/client_l1move_l2move.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs b/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs index d94c95362..48d289370 100644 --- a/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs +++ b/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs @@ -28,8 +28,6 @@ async fn test_movement_client_lock_transfer( ) -> Result<(), anyhow::Error> { let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); - let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); - MovementClientFramework::bridge_setup_scripts().await?; let config: Config = Config::suzuka(); From 444875ae430606af837a30a46caa4dadafae8292 Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Wed, 16 Oct 2024 08:02:39 -0400 Subject: [PATCH 31/35] Remove dupe lines --- .../integration-tests/tests/client_l1move_l2move.rs | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs b/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs index 48d289370..4f57682ec 100644 --- a/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs +++ b/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs @@ -27,15 +27,10 @@ use tracing::info; async fn test_movement_client_lock_transfer( ) -> Result<(), anyhow::Error> { let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); - MovementClientFramework::bridge_setup_scripts().await?; - let config: Config = Config::suzuka(); - let (mut mvt_client_harness, config) = TestHarnessFramework::new_with_suzuka(config).await; - let args = EthToMovementCallArgs::default(); - let test_result = async { let coin_client = CoinClient::new(&mvt_client_harness.rest_client); let movement_client_signer = mvt_client_harness.movement_client.signer(); @@ -84,7 +79,6 @@ async fn test_movement_client_lock_transfer( #[tokio::test] async fn test_movement_client_complete_transfer( ) -> Result<(), anyhow::Error> { - let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); MovementClientFramework::bridge_setup_scripts().await?; let config: Config = Config::suzuka(); @@ -175,17 +169,10 @@ async fn test_movement_client_complete_transfer( async fn test_movement_client_abort_transfer( ) -> Result<(), anyhow::Error> { let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); - - let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); - MovementClientFramework::bridge_setup_scripts().await?; - let config: Config = Config::suzuka(); - let (mut mvt_client_harness, config) = TestHarnessFramework::new_with_suzuka(config).await; - let args = EthToMovementCallArgs::default(); - let test_result = async { let coin_client = CoinClient::new(&mvt_client_harness.rest_client); let movement_client_signer = mvt_client_harness.movement_client.signer(); From cdc4b417821ba029e13536a74ddb863f8a641bd5 Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Wed, 16 Oct 2024 08:08:30 -0400 Subject: [PATCH 32/35] Add comments about dummy addresses --- protocol-units/bridge/integration-tests/src/lib.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/protocol-units/bridge/integration-tests/src/lib.rs b/protocol-units/bridge/integration-tests/src/lib.rs index 76d8be33c..96a354c93 100644 --- a/protocol-units/bridge/integration-tests/src/lib.rs +++ b/protocol-units/bridge/integration-tests/src/lib.rs @@ -65,7 +65,9 @@ impl Default for EthToMovementCallArgs { bridge_transfer_id.extend_from_slice(random_suffix.as_bytes()); Self { + // Dummy valid EIP-55 address used in framework modules initiator: b"32Be343B94f860124dC4fEe278FDCBD38C102D88".to_vec(), + // Dummy recipient address recipient: MovementAddress(AccountAddress::new(*b"0x00000000000000000000000000face")), // Convert to [u8; 32] with explicit type annotation bridge_transfer_id: MovementHash( From 9f084598ff15baf4e71ccdd4a09a74c4790fb323 Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Wed, 16 Oct 2024 08:11:36 -0400 Subject: [PATCH 33/35] Add comment for dummy Movement address, remove unneeded Eth tests --- .../tests/client_l1move_l2move.rs | 27 +------------------ 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs b/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs index 4f57682ec..c0162b40a 100644 --- a/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs +++ b/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs @@ -92,6 +92,7 @@ async fn test_movement_client_complete_transfer( faucet_client.fund(movement_client_signer.address(), 100_000_000).await?; faucet_client.fund(AccountAddress::from_hex_literal("0xface")?, 100_000_000).await?; faucet_client.fund(AccountAddress::from_hex_literal("0x1")?, 100_000_000).await?; + // This address is the recipient in test_movement_client_complete_transfer, so it needs an AptosCoin store faucet_client.fund(AccountAddress::from_hex_literal("0x3078303030303030303030303030303030303030303030303030303066616365")?, 100_000_000).await?; } @@ -251,32 +252,6 @@ async fn test_movement_client_abort_transfer( test_result } -#[tokio::test] -async fn test_eth_client_should_build_and_fetch_accounts() { - let config = Config::default(); - let (eth_client_harness, _config, _anvil) = TestHarness::new_only_eth(config).await; - - let expected_accounts = [ - address!("f39fd6e51aad88f6f4ce6ab8827279cfffb92266"), - address!("70997970c51812dc3a010c7d01b50e0d17dc79c8"), - address!("3c44cdddb6a900fa2b585dd299e03d12fa4293bc"), - address!("90f79bf6eb2c4f870365e785982e1f101e93b906"), - address!("15d34aaf54267db7d7c367839aaf71a00a2c6a65"), - address!("9965507d1a55bcc2695c58ba16fb37d819b0a4dc"), - address!("976ea74026e726554db657fa54763abd0c3a0aa9"), - address!("14dc79964da2c08b23698b3d3cc7ca32193d9955"), - address!("23618e81e3f5cdf7f54c3d65f7fbc0abf5b21e8f"), - address!("a0ee7a142d267c1f36714e4a8f75612f20a79720"), - ]; - - let provider = eth_client_harness.rpc_provider().await; - let accounts = provider.get_accounts().await.expect("Failed to get accounts"); - assert_eq!(accounts.len(), expected_accounts.len()); - - for (account, expected) in accounts.iter().zip(expected_accounts.iter()) { - assert_eq!(account, expected); - } -} #[tokio::test] async fn test_eth_client_should_deploy_initiator_contract() { From 461262aa281b708bcd91dce7969b5104161381ea Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Wed, 16 Oct 2024 08:39:52 -0400 Subject: [PATCH 34/35] fix: revert edit to event monitoring which caused E2E test to fail --- .../service/src/chains/movement/event_monitoring.rs | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/protocol-units/bridge/service/src/chains/movement/event_monitoring.rs b/protocol-units/bridge/service/src/chains/movement/event_monitoring.rs index 747557c12..b227804d7 100644 --- a/protocol-units/bridge/service/src/chains/movement/event_monitoring.rs +++ b/protocol-units/bridge/service/src/chains/movement/event_monitoring.rs @@ -157,7 +157,6 @@ impl MovementMonitoring { let config = config.clone(); async move { let mvt_client = MovementClient::new(&config).await.unwrap(); - println!("Movement client address: {:?}", mvt_client.native_address); loop { let mut init_event_list = match pool_initiator_contract( mvt_client.native_address, @@ -474,7 +473,6 @@ pub struct BridgeInitEventData { pub time_lock: u64, #[serde(deserialize_with = "deserialize_u64_from_string")] pub amount: u64, - #[serde(deserialize_with = "deserialize_u8_from_string")] pub state: u8, } @@ -488,14 +486,6 @@ where Vec::from_hex(hex_str).map_err(serde::de::Error::custom) } -fn deserialize_u8_from_string<'de, D>(deserializer: D) -> Result -where - D: Deserializer<'de>, -{ - let s: String = Deserialize::deserialize(deserializer)?; - s.parse::().map_err(serde::de::Error::custom) -} - fn deserialize_u64_from_string<'de, D>(deserializer: D) -> Result where D: Deserializer<'de>, From c69fc5ab874e918ecbc74a678553c2e3c7d7222e Mon Sep 17 00:00:00 2001 From: Andy Golay Date: Wed, 16 Oct 2024 12:21:27 -0400 Subject: [PATCH 35/35] fix: clean up warnings --- .../bridge/integration-tests/src/utils.rs | 4 ++-- .../integration-tests/tests/bridge_e2e_test.rs | 5 ++--- .../tests/client_l1move_l2move.rs | 16 +++++----------- .../tests/client_l2move_l1move.rs | 14 ++++---------- .../bridge/service/src/chains/ethereum/client.rs | 2 +- .../bridge/service/src/chains/movement/client.rs | 8 ++------ .../src/chains/movement/client_framework.rs | 4 +--- 7 files changed, 17 insertions(+), 36 deletions(-) diff --git a/protocol-units/bridge/integration-tests/src/utils.rs b/protocol-units/bridge/integration-tests/src/utils.rs index 3a5ed2d04..5933b885c 100644 --- a/protocol-units/bridge/integration-tests/src/utils.rs +++ b/protocol-units/bridge/integration-tests/src/utils.rs @@ -1,5 +1,5 @@ #![allow(dead_code)] -use crate::{HarnessMvtClient, HarnessMvtClientFramework, MovementToEthCallArgs}; +use crate::{HarnessMvtClient, HarnessMvtClientFramework}; use alloy::hex; use anyhow::Result; use aptos_sdk::{ @@ -12,7 +12,7 @@ use bridge_service::chains::movement::utils::{ }; use bridge_service::types::{Amount, AssetType, BridgeAddress, BridgeTransferDetails, HashLock}; use serde_json::Value; -use tracing::{debug, info}; +use tracing::debug; const FRAMEWORK_ADDRESS: AccountAddress = AccountAddress::new([ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, diff --git a/protocol-units/bridge/integration-tests/tests/bridge_e2e_test.rs b/protocol-units/bridge/integration-tests/tests/bridge_e2e_test.rs index 74f7a902c..459e71167 100644 --- a/protocol-units/bridge/integration-tests/tests/bridge_e2e_test.rs +++ b/protocol-units/bridge/integration-tests/tests/bridge_e2e_test.rs @@ -78,7 +78,7 @@ async fn test_bridge_transfer_eth_movement_happy_path() -> Result<(), anyhow::Er ) .init(); - let (eth_client_harness, mut mvt_client_harness, config) = + let (_eth_client_harness, mut mvt_client_harness, config) = TestHarness::new_with_eth_and_movement().await?; tracing::info!("Init initiator and counter part test account."); @@ -126,7 +126,7 @@ async fn test_bridge_transfer_eth_movement_happy_path() -> Result<(), anyhow::Er //send counter complete event. tracing::info!("Call counterparty_complete_bridge_transfer on MVT."); - let tx = mvt_client_harness + mvt_client_harness .counterparty_complete_bridge_transfer( recipient_privkey, bridge_tranfer_id, @@ -148,7 +148,6 @@ async fn test_bridge_transfer_eth_movement_happy_path() -> Result<(), anyhow::Er Ok(()) } -use aptos_sdk::crypto::ed25519::Ed25519PublicKey; #[tokio::test] async fn test_movement_event() -> Result<(), anyhow::Error> { tracing_subscriber::fmt() diff --git a/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs b/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs index c0162b40a..0afe0ae38 100644 --- a/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs +++ b/protocol-units/bridge/integration-tests/tests/client_l1move_l2move.rs @@ -1,24 +1,18 @@ -use alloy::{ - primitives::{address, keccak256}, - providers::Provider, -}; +use alloy::primitives::{address, keccak256}; use anyhow::Result; use aptos_sdk::types::account_address::AccountAddress; use aptos_sdk::coin_client::CoinClient; -use aptos_types::PeerId; use bridge_config::Config; -use bridge_integration_tests::utils as test_utils; use bridge_integration_tests::EthToMovementCallArgs; use bridge_integration_tests::HarnessMvtClient; use bridge_integration_tests::{TestHarness, TestHarnessFramework}; use bridge_service::chains::{ethereum::types::EthAddress, movement::client_framework::MovementClientFramework}; use bridge_service::chains::{ - bridge_contracts::{BridgeContract, BridgeContractEvent}, ethereum::types::EthHash, movement::{event_monitoring::MovementMonitoring, utils::MovementHash} + bridge_contracts::BridgeContract, ethereum::types::EthHash }; use bridge_service::types::{ Amount, AssetType, BridgeAddress, BridgeTransferId, HashLock, HashLockPreImage, }; -use futures::StreamExt; use tokio::time::{sleep, Duration}; use tokio::{self}; use tracing::info; @@ -29,7 +23,7 @@ async fn test_movement_client_lock_transfer( let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); MovementClientFramework::bridge_setup_scripts().await?; let config: Config = Config::suzuka(); - let (mut mvt_client_harness, config) = TestHarnessFramework::new_with_suzuka(config).await; + let (mut mvt_client_harness, _config) = TestHarnessFramework::new_with_suzuka(config).await; let args = EthToMovementCallArgs::default(); let test_result = async { let coin_client = CoinClient::new(&mvt_client_harness.rest_client); @@ -82,7 +76,7 @@ async fn test_movement_client_complete_transfer( let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); MovementClientFramework::bridge_setup_scripts().await?; let config: Config = Config::suzuka(); - let (mut mvt_client_harness, config) = TestHarnessFramework::new_with_suzuka(config).await; + let (mut mvt_client_harness, _config) = TestHarnessFramework::new_with_suzuka(config).await; let args = EthToMovementCallArgs::default(); let test_result = async { let coin_client = CoinClient::new(&mvt_client_harness.rest_client); @@ -172,7 +166,7 @@ async fn test_movement_client_abort_transfer( let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); MovementClientFramework::bridge_setup_scripts().await?; let config: Config = Config::suzuka(); - let (mut mvt_client_harness, config) = TestHarnessFramework::new_with_suzuka(config).await; + let (mut mvt_client_harness, _config) = TestHarnessFramework::new_with_suzuka(config).await; let args = EthToMovementCallArgs::default(); let test_result = async { let coin_client = CoinClient::new(&mvt_client_harness.rest_client); diff --git a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs index 3bde3d5ea..e2dccebc3 100644 --- a/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs +++ b/protocol-units/bridge/integration-tests/tests/client_l2move_l1move.rs @@ -1,21 +1,17 @@ -use alloy::primitives::keccak256; use anyhow::Result; use bridge_config::Config; -use bridge_integration_tests::utils; use bridge_integration_tests::utils as test_utils; -use bridge_integration_tests::{MovementToEthCallArgs, TestHarness, TestHarnessFramework}; -use bridge_service::chains::bridge_contracts::{BridgeContractError, BridgeContractEvent}; +use bridge_integration_tests::{MovementToEthCallArgs, TestHarnessFramework}; use bridge_service::chains::movement::client_framework::MovementClientFramework; use bridge_service::types::AssetType; use bridge_service::{ chains::{ bridge_contracts::BridgeContract, - movement::{event_monitoring::MovementMonitoring, utils::MovementHash}, + movement::utils::MovementHash, }, types::{BridgeTransferId, HashLockPreImage}, }; use chrono::Utc; -use futures::StreamExt; use tokio::time::{sleep, Duration}; use tokio::{self}; use tracing::info; @@ -25,11 +21,10 @@ async fn test_movement_client_initiate_transfer() -> Result<(), anyhow::Error> { let _ = tracing_subscriber::fmt().with_max_level(tracing::Level::DEBUG).try_init(); MovementClientFramework::bridge_setup_scripts().await?; let config: Config = Config::suzuka(); - let (mut mvt_client_harness, config) = TestHarnessFramework::new_with_suzuka(config).await; + let (mut mvt_client_harness, _config) = TestHarnessFramework::new_with_suzuka(config).await; let args = MovementToEthCallArgs::default(); let test_result = async { - let sender_address = mvt_client_harness.movement_client.signer().address(); test_utils::fund_and_check_balance_framework(&mut mvt_client_harness, 100_000_000_000) .await?; test_utils::initiate_bridge_transfer_helper_framework( @@ -170,12 +165,11 @@ async fn test_movement_client_refund_transfer() -> Result<(), anyhow::Error> { let config: Config = Config::suzuka(); - let (mut mvt_client_harness, config) = TestHarnessFramework::new_with_suzuka(config).await; + let (mut mvt_client_harness, _config) = TestHarnessFramework::new_with_suzuka(config).await; let args = MovementToEthCallArgs::default(); let test_result = async { - let sender_address = mvt_client_harness.movement_client.signer().address(); test_utils::fund_and_check_balance_framework(&mut mvt_client_harness, 100_000_000_000) .await?; test_utils::initiate_bridge_transfer_helper_framework( diff --git a/protocol-units/bridge/service/src/chains/ethereum/client.rs b/protocol-units/bridge/service/src/chains/ethereum/client.rs index a14d7061d..5d1a52b12 100644 --- a/protocol-units/bridge/service/src/chains/ethereum/client.rs +++ b/protocol-units/bridge/service/src/chains/ethereum/client.rs @@ -6,7 +6,7 @@ use super::utils::{calculate_storage_slot, send_transaction, send_transaction_ru use crate::chains::bridge_contracts::BridgeContractError; use crate::chains::bridge_contracts::BridgeContractResult; use crate::types::{ - Amount, AssetType, BridgeAddress, BridgeTransferDetails, BridgeTransferDetailsCounterparty, BridgeTransferId, HashLock, HashLockPreImage, LockDetails, TimeLock + Amount, AssetType, BridgeAddress, BridgeTransferDetails, BridgeTransferDetailsCounterparty, BridgeTransferId, HashLock, HashLockPreImage, TimeLock }; use alloy::primitives::{Address, FixedBytes, U256}; use alloy::providers::{Provider, ProviderBuilder}; diff --git a/protocol-units/bridge/service/src/chains/movement/client.rs b/protocol-units/bridge/service/src/chains/movement/client.rs index 1ece3e38d..14f49c8b6 100644 --- a/protocol-units/bridge/service/src/chains/movement/client.rs +++ b/protocol-units/bridge/service/src/chains/movement/client.rs @@ -466,12 +466,8 @@ impl BridgeContract for MovementClient { } } -use std::{ - env, fs, - io::Write, - path::PathBuf, - process::{Command, Stdio}, -}; +use std::process::Stdio; + use tokio::{ io::{AsyncBufReadExt, BufReader}, process::Command as TokioCommand, diff --git a/protocol-units/bridge/service/src/chains/movement/client_framework.rs b/protocol-units/bridge/service/src/chains/movement/client_framework.rs index 0e24653e2..0b983e55b 100644 --- a/protocol-units/bridge/service/src/chains/movement/client_framework.rs +++ b/protocol-units/bridge/service/src/chains/movement/client_framework.rs @@ -2,13 +2,11 @@ use super::utils::{self, MovementAddress}; use crate::chains::bridge_contracts::BridgeContract; use crate::chains::bridge_contracts::BridgeContractError; use crate::chains::bridge_contracts::BridgeContractResult; -use crate::chains::ethereum::types::EthAddress; use crate::types::BridgeTransferDetailsCounterparty; use crate::types::{ - Amount, AssetType, BridgeAddress, BridgeTransferDetails, LockDetails, BridgeTransferId, HashLock, + Amount, AssetType, BridgeAddress, BridgeTransferDetails, BridgeTransferId, HashLock, HashLockPreImage, TimeLock, }; -use alloy::primitives::Address; use anyhow::{Context, Result}; use aptos_api_types::{EntryFunctionId, MoveModuleId, ViewRequest}; use aptos_sdk::{