From 990b0745a7c69ecba09d0c7fbaf9434bb044a1c1 Mon Sep 17 00:00:00 2001 From: Oleksandr Anyshchenko Date: Tue, 31 Oct 2023 16:36:28 +0000 Subject: [PATCH 1/2] deps: bump near-workspaces-rs to 0.9 --- Cargo.lock | 14 ++++++++++++-- Cargo.toml | 2 +- engine-tests-connector/src/connector.rs | 5 ++++- engine-tests-connector/src/utils.rs | 9 +++++---- engine-tests/src/tests/erc20_connector.rs | 15 +++++++++++---- engine-tests/src/tests/erc20_mirror.rs | 1 - engine-tests/src/tests/sanity.rs | 1 - engine-tests/src/tests/silo.rs | 1 - engine-tests/src/tests/xcc.rs | 1 - engine-tests/src/utils/workspace.rs | 3 +-- engine-workspace/src/account.rs | 3 ++- engine-workspace/src/node.rs | 6 +++--- engine-workspace/src/transaction.rs | 3 ++- 13 files changed, 41 insertions(+), 23 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index eaaf3fa4f..e93489b9f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3433,6 +3433,15 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e307313276eaeced2ca95740b5639e1f3125b7c97f0a1151809d105f1aa8c6d3" +[[package]] +name = "near-token" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b68f3f8a2409f72b43efdbeff8e820b81e70824c49fee8572979d789d1683fb" +dependencies = [ + "serde", +] + [[package]] name = "near-units" version = "0.2.0" @@ -3571,9 +3580,9 @@ dependencies = [ [[package]] name = "near-workspaces" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1f43c3cac1cf61d0f20fbc49f2c3182caa6422c0d2acd92c926a3e3190b26a9" +checksum = "3a14e772e49ba9644c06dad20f635b6463f74d378fa19822bfc35fef479c72e5" dependencies = [ "async-trait", "base64 0.21.4", @@ -3592,6 +3601,7 @@ dependencies = [ "near-primitives 0.17.0", "near-sandbox-utils", "near-sdk", + "near-token", "rand 0.8.5", "reqwest", "serde", diff --git a/Cargo.toml b/Cargo.toml index 1200ae92d..d44a17b32 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -53,7 +53,7 @@ near-vm-errors = "0.17" near-vm-logic = "0.17" near-vm-runner = { version = "0.17", default-features = false, features = [ "wasmer2_vm", "wasmtime_vm" ] } near-units = "0.2" -near-workspaces = "0.8" +near-workspaces = "0.9" num = { version = "0.4", default-features = false, features = ["alloc"] } postgres = "0.19" primitive-types = { version = "0.12", default-features = false, features = ["rlp", "serde_no_std"] } diff --git a/engine-tests-connector/src/connector.rs b/engine-tests-connector/src/connector.rs index 32fe6ca8d..7eb80cd9a 100644 --- a/engine-tests-connector/src/connector.rs +++ b/engine-tests-connector/src/connector.rs @@ -9,10 +9,13 @@ use aurora_engine_types::{ }; use byte_slice_cast::AsByteSlice; use near_sdk::serde_json::json; -use near_sdk::{json_types::U128, serde, ONE_YOCTO}; +use near_sdk::{json_types::U128, serde}; +use near_workspaces::types::NearToken; use near_workspaces::AccountId; use std::str::FromStr; +const ONE_YOCTO: NearToken = NearToken::from_yoctonear(1); + /// Bytes for a NEAR smart contract implementing `ft_on_transfer` fn dummy_ft_receiver_bytes() -> Vec { let base_path = std::path::Path::new("../etc") diff --git a/engine-tests-connector/src/utils.rs b/engine-tests-connector/src/utils.rs index 6e3cee883..6cecebf3d 100644 --- a/engine-tests-connector/src/utils.rs +++ b/engine-tests-connector/src/utils.rs @@ -6,6 +6,7 @@ use aurora_engine_types::types::{Address, Wei}; use near_sdk::serde_json::json; use near_sdk::{json_types::U128, serde_json}; use near_workspaces::network::NetworkClient; +use near_workspaces::types::NearToken; use near_workspaces::{result::ExecutionFinalResult, Account, AccountId, Contract, Worker}; use std::path::Path; @@ -63,7 +64,7 @@ impl TestContract { .batch(&root) .create_account() .add_key(sk.public_key(), AccessKey::full_access()) - .transfer(near_units::parse_near!("100 N")) + .transfer(NearToken::from_near(100)) .transact() .await? .into_result()?; @@ -71,13 +72,13 @@ impl TestContract { let root_account = Account::from_secret_key(root, sk, &worker); let eth_connector = root_account .create_subaccount("aurora_eth_connector") - .initial_balance(near_units::parse_near!("15 N")) + .initial_balance(NearToken::from_near(15)) .transact() .await? .into_result()?; let engine = root_account .create_subaccount("eth_connector") - .initial_balance(near_units::parse_near!("15 N")) + .initial_balance(NearToken::from_near(15)) .transact() .await? .into_result()?; @@ -204,7 +205,7 @@ impl TestContract { Ok(self .root_account .create_subaccount(name) - .initial_balance(near_units::parse_near!("15 N")) + .initial_balance(NearToken::from_near(15)) .transact() .await? .into_result()?) diff --git a/engine-tests/src/tests/erc20_connector.rs b/engine-tests/src/tests/erc20_connector.rs index 497dfa616..f1212b8f2 100644 --- a/engine-tests/src/tests/erc20_connector.rs +++ b/engine-tests/src/tests/erc20_connector.rs @@ -532,7 +532,11 @@ pub mod workspace { &aurora, ) .await; - let total_tokens_burnt: u128 = result.outcomes().iter().map(|o| o.tokens_burnt).sum(); + let total_tokens_burnt: u128 = result + .outcomes() + .iter() + .map(|o| o.tokens_burnt.as_yoctonear()) + .sum(); // Check that the wnear tokens are properly unwrapped and transferred to `ft_owner` assert_eq!( @@ -578,7 +582,11 @@ pub mod workspace { &aurora, ) .await; - let total_tokens_burnt: u128 = result.outcomes().iter().map(|o| o.tokens_burnt).sum(); + let total_tokens_burnt: u128 = result + .outcomes() + .iter() + .map(|o| o.tokens_burnt.as_yoctonear()) + .sum(); // Check that there were no near tokens transferred to `ft_owner` assert_eq!( @@ -761,7 +769,6 @@ pub mod workspace { ); } - #[allow(clippy::future_not_send)] async fn test_exit_to_near_eth_common() -> anyhow::Result { let aurora = deploy_engine().await; let chain_id = aurora.get_chain_id().await?.result.as_u64(); @@ -808,7 +815,7 @@ pub mod workspace { }) } - #[allow(clippy::future_not_send, clippy::cognitive_complexity)] + #[allow(clippy::cognitive_complexity)] async fn test_exit_to_near_common() -> anyhow::Result { // 1. deploy Aurora let aurora = deploy_engine().await; diff --git a/engine-tests/src/tests/erc20_mirror.rs b/engine-tests/src/tests/erc20_mirror.rs index a189baa08..456e1ed22 100644 --- a/engine-tests/src/tests/erc20_mirror.rs +++ b/engine-tests/src/tests/erc20_mirror.rs @@ -169,7 +169,6 @@ async fn test_mirroring_erc20_token() { assert_eq!(nep_141_balance_of(&nep141, &ft_owner.id()).await, 1_000_000); } -#[allow(clippy::future_not_send)] async fn deploy_main_contract() -> EngineContract { let code = get_main_contract_code().await.unwrap(); deploy_engine_with_code(code).await diff --git a/engine-tests/src/tests/sanity.rs b/engine-tests/src/tests/sanity.rs index 3dfa74211..f490c2a2f 100644 --- a/engine-tests/src/tests/sanity.rs +++ b/engine-tests/src/tests/sanity.rs @@ -1297,7 +1297,6 @@ mod workspace { ); } - #[allow(clippy::future_not_send)] async fn initialize_engine() -> (EngineContract, utils::Signer, Address) { let engine = utils::workspace::deploy_engine().await; let signer = utils::Signer::random(); diff --git a/engine-tests/src/tests/silo.rs b/engine-tests/src/tests/silo.rs index 5983583ad..ad752e572 100644 --- a/engine-tests/src/tests/silo.rs +++ b/engine-tests/src/tests/silo.rs @@ -1099,7 +1099,6 @@ pub mod workspace { } /// Deploys the EVM, deploys nep141 contract, and calls `set_silo_params` - #[allow(clippy::future_not_send)] async fn init_silo() -> SiloTestContext { // Deploy Aurora Engine let aurora = deploy_engine().await; diff --git a/engine-tests/src/tests/xcc.rs b/engine-tests/src/tests/xcc.rs index 27fbd6730..d6e946a1a 100644 --- a/engine-tests/src/tests/xcc.rs +++ b/engine-tests/src/tests/xcc.rs @@ -753,7 +753,6 @@ pub mod workspace { /// Deploys the EVM, sets xcc router code, deploys wnear contract, bridges wnear into EVM, /// and calls `factory_set_wnear_address` - #[allow(clippy::future_not_send)] async fn init_xcc() -> anyhow::Result { let aurora = deploy_engine().await; let chain_id = aurora.get_chain_id().await?.result.as_u64(); diff --git a/engine-tests/src/utils/workspace.rs b/engine-tests/src/utils/workspace.rs index b4c9a4377..c6a1146a8 100644 --- a/engine-tests/src/utils/workspace.rs +++ b/engine-tests/src/utils/workspace.rs @@ -19,7 +19,6 @@ const STORAGE_AMOUNT: u128 = 50_000_000_000_000_000_000_000_000; const AURORA_ETH_CONNECTOR: &str = "aurora_eth_connector"; /// Deploy Aurora smart contract WITHOUT init external eth-connector. -#[allow(clippy::future_not_send)] pub async fn deploy_engine_with_code(code: Vec) -> EngineContract { let chain_id = AuroraRunner::get_default_chain_id(); aurora_engine_workspace::EngineContractBuilder::new() @@ -35,7 +34,7 @@ pub async fn deploy_engine_with_code(code: Vec) -> EngineContract { .unwrap() } -#[allow(clippy::let_and_return, clippy::future_not_send)] +#[allow(clippy::let_and_return)] pub async fn deploy_engine() -> EngineContract { let code = AuroraRunner::get_engine_code(); let contract = deploy_engine_with_code(code).await; diff --git a/engine-workspace/src/account.rs b/engine-workspace/src/account.rs index 31eb39716..068b3c3b9 100644 --- a/engine-workspace/src/account.rs +++ b/engine-workspace/src/account.rs @@ -5,6 +5,7 @@ use std::str::FromStr; use crate::contract::RawContract; use aurora_engine_types::public_key::PublicKey; pub use near_units::parse_near; +use near_workspaces::types::NearToken; #[derive(Debug, Clone)] pub struct Account { @@ -42,7 +43,7 @@ impl Account { pub async fn create_subaccount(&self, name: &str, balance: u128) -> anyhow::Result { self.inner .create_subaccount(name) - .initial_balance(balance) + .initial_balance(NearToken::from_yoctonear(balance)) .transact() .await? .into_result() diff --git a/engine-workspace/src/node.rs b/engine-workspace/src/node.rs index 243c12584..59555a0a6 100644 --- a/engine-workspace/src/node.rs +++ b/engine-workspace/src/node.rs @@ -1,6 +1,6 @@ use aurora_engine_types::account_id::AccountId; use near_workspaces::network::{NetworkClient, Sandbox}; -use near_workspaces::types::{KeyType, SecretKey}; +use near_workspaces::types::{KeyType, NearToken, SecretKey}; use near_workspaces::Worker; use std::str::FromStr; use std::time::Duration; @@ -36,7 +36,7 @@ impl Node { self.worker .view_account(&account_id) .await - .map(|d| d.balance) + .map(|d| d.balance.as_yoctonear()) .map_err(Into::into) } @@ -76,7 +76,7 @@ impl Node { .batch(&root) .create_account() .add_key(sk.public_key(), AccessKey::full_access()) - .transfer(balance) + .transfer(NearToken::from_yoctonear(balance)) .transact() .await? .into_result()?; diff --git a/engine-workspace/src/transaction.rs b/engine-workspace/src/transaction.rs index d74d99355..739a3dc15 100644 --- a/engine-workspace/src/transaction.rs +++ b/engine-workspace/src/transaction.rs @@ -2,6 +2,7 @@ use aurora_engine_types::borsh::BorshSerialize; use near_workspaces::result::ExecutionFinalResult; use near_workspaces::rpc::query::{Query, ViewFunction}; use near_workspaces::rpc::BoxFuture; +use near_workspaces::types::NearToken; use std::future::IntoFuture; pub struct ViewTransaction<'a> { @@ -73,7 +74,7 @@ impl CallTransaction { } pub fn deposit(mut self, deposit: u128) -> Self { - self.inner = self.inner.deposit(deposit); + self.inner = self.inner.deposit(NearToken::from_yoctonear(deposit)); self } From 6235eb51177760a89eed713ea484999063a86e3d Mon Sep 17 00:00:00 2001 From: Oleksandr Anyshchenko Date: Tue, 31 Oct 2023 17:42:22 +0000 Subject: [PATCH 2/2] chore: remove near-units crate --- Cargo.lock | 44 ----------------------- Cargo.toml | 1 - engine-tests-connector/Cargo.toml | 1 - engine-tests/src/tests/access_keys.rs | 30 ++++++++-------- engine-tests/src/tests/erc20_connector.rs | 12 +++---- engine-tests/src/tests/erc20_mirror.rs | 12 +++---- engine-tests/src/tests/silo.rs | 13 +++---- engine-tests/src/tests/xcc.rs | 38 ++++++++++++-------- engine-tests/src/utils/workspace.rs | 19 +++++----- engine-workspace/Cargo.toml | 1 - engine-workspace/src/account.rs | 9 +++-- engine-workspace/src/lib.rs | 16 ++++----- engine-workspace/src/macros.rs | 4 +-- engine-workspace/src/node.rs | 6 ++-- engine-workspace/src/transaction.rs | 4 +-- 15 files changed, 91 insertions(+), 119 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e93489b9f..2beb266c5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -420,7 +420,6 @@ dependencies = [ "hex", "near-gas", "near-sdk", - "near-units", "near-workspaces", "rlp", "serde", @@ -466,7 +465,6 @@ dependencies = [ "lazy_static", "near-gas", "near-sdk", - "near-units", "near-workspaces", "serde", "serde_json", @@ -3442,38 +3440,6 @@ dependencies = [ "serde", ] -[[package]] -name = "near-units" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a2b77f295d398589eeee51ad0887905ef1734fb12b45cb6d77bd7e401988b9" -dependencies = [ - "near-units-core", - "near-units-macro", -] - -[[package]] -name = "near-units-core" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89aa2a7985de87a08ca35f28abd8d00f0f901e704257e6e029aadef981386bc6" -dependencies = [ - "num-format", - "regex", -] - -[[package]] -name = "near-units-macro" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ab45d066220846f9bd5c21e9ab88c47c892edd36f962ada78bf8308523171a" -dependencies = [ - "near-units-core", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "near-vm-errors" version = "0.14.0" @@ -3699,16 +3665,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-format" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3" -dependencies = [ - "arrayvec 0.7.4", - "itoa", -] - [[package]] name = "num-integer" version = "0.1.45" diff --git a/Cargo.toml b/Cargo.toml index d44a17b32..8aec4bd6f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -52,7 +52,6 @@ near-sdk = "4" near-vm-errors = "0.17" near-vm-logic = "0.17" near-vm-runner = { version = "0.17", default-features = false, features = [ "wasmer2_vm", "wasmtime_vm" ] } -near-units = "0.2" near-workspaces = "0.9" num = { version = "0.4", default-features = false, features = ["alloc"] } postgres = "0.19" diff --git a/engine-tests-connector/Cargo.toml b/engine-tests-connector/Cargo.toml index 4f30d3f02..3787669c8 100644 --- a/engine-tests-connector/Cargo.toml +++ b/engine-tests-connector/Cargo.toml @@ -18,7 +18,6 @@ anyhow.workspace = true byte-slice-cast.workspace = true near-gas.workspace = true near-sdk.workspace = true -near-units.workspace = true near-workspaces.workspace = true tokio = { workspace = true, features = ["macros"] } hex.workspace = true diff --git a/engine-tests/src/tests/access_keys.rs b/engine-tests/src/tests/access_keys.rs index 2664bd3dc..1f7b04c74 100644 --- a/engine-tests/src/tests/access_keys.rs +++ b/engine-tests/src/tests/access_keys.rs @@ -4,11 +4,13 @@ use aurora_engine_types::parameters::engine::{ }; use aurora_engine_types::public_key::PublicKey; use aurora_engine_types::types::Address; -use aurora_engine_workspace::parse_near; -use aurora_engine_workspace::types::{KeyType, SecretKey}; +use aurora_engine_workspace::types::{KeyType, NearToken, SecretKey}; use std::fmt::Debug; use std::str::FromStr; +const BALANCE: NearToken = NearToken::from_near(10); +const DEPOSIT: NearToken = NearToken::from_millinear(500); + #[tokio::test] async fn test_add_key_manager() { let aurora = deploy_engine().await; @@ -16,14 +18,14 @@ async fn test_add_key_manager() { let relayer_key_args = RelayerKeyArgs { public_key: pk }; let manager = aurora .root() - .create_subaccount("key_manager", parse_near!("10 N")) + .create_subaccount("key_manager", BALANCE) .await .unwrap(); let result = manager .call(&aurora.id(), "add_relayer_key") .args_json(relayer_key_args.clone()) - .deposit(parse_near!("0.5 N")) + .deposit(DEPOSIT) .max_gas() .transact() .await @@ -46,7 +48,7 @@ async fn test_add_key_manager() { .call(&aurora.id(), "add_relayer_key") .args_json(relayer_key_args.clone()) .max_gas() - .deposit(parse_near!("0.5 N")) + .deposit(DEPOSIT) .transact() .await .unwrap(); @@ -64,7 +66,7 @@ async fn test_add_key_manager() { .call(&aurora.id(), "add_relayer_key") .args_json(relayer_key_args) .max_gas() - .deposit(parse_near!("0.5 N")) + .deposit(DEPOSIT) .transact() .await .unwrap(); @@ -82,7 +84,7 @@ async fn test_submit_by_relayer() { let manager = aurora .root() - .create_subaccount("key_manager", parse_near!("10 N")) + .create_subaccount("key_manager", BALANCE) .await .unwrap(); let result = aurora @@ -108,7 +110,7 @@ async fn test_submit_by_relayer() { .call(&aurora.id(), "add_relayer_key") .args_json(RelayerKeyArgs { public_key }) .max_gas() - .deposit(parse_near!("0.5 N")) + .deposit(DEPOSIT) .transact() .await .unwrap(); @@ -131,7 +133,7 @@ async fn test_delete_relayer_key() { let manager = aurora .root() - .create_subaccount("key_manager", parse_near!("10 N")) + .create_subaccount("key_manager", BALANCE) .await .unwrap(); let result = aurora @@ -148,7 +150,7 @@ async fn test_delete_relayer_key() { .call(&aurora.id(), "add_relayer_key") .args_json(RelayerKeyArgs { public_key }) .max_gas() - .deposit(parse_near!("0.5 N")) + .deposit(DEPOSIT) .transact() .await .unwrap(); @@ -199,7 +201,7 @@ async fn test_call_not_allowed_method() { let manager = aurora .root() - .create_subaccount("key_manager", parse_near!("10 N")) + .create_subaccount("key_manager", BALANCE) .await .unwrap(); let result = aurora @@ -216,7 +218,7 @@ async fn test_call_not_allowed_method() { .call(&aurora.id(), "add_relayer_key") .args_json(RelayerKeyArgs { public_key }) .max_gas() - .deposit(parse_near!("0.5 N")) + .deposit(DEPOSIT) .transact() .await .unwrap(); @@ -243,7 +245,7 @@ async fn test_call_not_allowed_contract() { let manager = aurora .root() - .create_subaccount("key_manager", parse_near!("10 N")) + .create_subaccount("key_manager", BALANCE) .await .unwrap(); let result = aurora @@ -260,7 +262,7 @@ async fn test_call_not_allowed_contract() { .call(&aurora.id(), "add_relayer_key") .args_json(RelayerKeyArgs { public_key }) .max_gas() - .deposit(parse_near!("0.5 N")) + .deposit(DEPOSIT) .transact() .await .unwrap(); diff --git a/engine-tests/src/tests/erc20_connector.rs b/engine-tests/src/tests/erc20_connector.rs index f1212b8f2..67547f51a 100644 --- a/engine-tests/src/tests/erc20_connector.rs +++ b/engine-tests/src/tests/erc20_connector.rs @@ -398,9 +398,10 @@ pub mod workspace { use aurora_engine::proof::Proof; use aurora_engine_types::parameters::engine::TransactionStatus; use aurora_engine_workspace::account::Account; - use aurora_engine_workspace::types::ExecutionFinalResult; - use aurora_engine_workspace::{parse_near, EngineContract, RawContract}; + use aurora_engine_workspace::types::{ExecutionFinalResult, NearToken}; + use aurora_engine_workspace::{EngineContract, RawContract}; + const BALANCE: NearToken = NearToken::from_near(50); const FT_TOTAL_SUPPLY: u128 = 1_000_000; const FT_TRANSFER_AMOUNT: u128 = 300_000; const FT_EXIT_AMOUNT: u128 = 100_000; @@ -725,7 +726,7 @@ pub mod workspace { None, ) .max_gas() - .deposit(1) + .deposit(NearToken::from_yoctonear(1)) .transact() .await .unwrap(); @@ -821,7 +822,7 @@ pub mod workspace { let aurora = deploy_engine().await; // 2. Create account - let ft_owner = create_sub_account(&aurora.root(), "ft_owner", parse_near!("50 N")).await?; + let ft_owner = create_sub_account(&aurora.root(), "ft_owner", BALANCE).await?; let ft_owner_address = aurora_engine_sdk::types::near_account_to_evm_address(ft_owner.id().as_bytes()); let result = aurora @@ -873,8 +874,7 @@ pub mod workspace { ); // 5. Deploy NEP-141 - let nep_141_account = - create_sub_account(&aurora.root(), FT_ACCOUNT, parse_near!("50 N")).await?; + let nep_141_account = create_sub_account(&aurora.root(), FT_ACCOUNT, BALANCE).await?; let nep_141 = deploy_nep_141(&nep_141_account, &ft_owner, FT_TOTAL_SUPPLY, &aurora) .await diff --git a/engine-tests/src/tests/erc20_mirror.rs b/engine-tests/src/tests/erc20_mirror.rs index 456e1ed22..bf3a4c0b0 100644 --- a/engine-tests/src/tests/erc20_mirror.rs +++ b/engine-tests/src/tests/erc20_mirror.rs @@ -5,7 +5,6 @@ use crate::utils::workspace::{ transfer_nep_141_to_erc_20, }; use crate::utils::AuroraRunner; -use aurora_engine_precompiles::xcc::state::STORAGE_AMOUNT; use aurora_engine_types::parameters::connector::{ Erc20Identifier, Erc20Metadata, MirrorErc20TokenArgs, SetErc20MetadataArgs, WithdrawSerializeType, @@ -13,7 +12,8 @@ use aurora_engine_types::parameters::connector::{ use aurora_engine_types::parameters::silo::SiloParamsArgs; use aurora_engine_types::types::RawU256; use aurora_engine_workspace::account::Account; -use aurora_engine_workspace::{parse_near, EngineContract, RawContract}; +use aurora_engine_workspace::types::NearToken; +use aurora_engine_workspace::{EngineContract, RawContract}; const AURORA_VERSION: &str = include_str!("../../../VERSION"); const TRANSFER_AMOUNT: u128 = 1000; @@ -95,7 +95,7 @@ async fn test_mirroring_erc20_token() { .args_json(serde_json::json!({ "account_id": silo_contract.id(), })) - .deposit(STORAGE_AMOUNT.as_u128()) + .deposit(NearToken::from_near(2)) .transact() .await .unwrap(); @@ -177,7 +177,7 @@ async fn deploy_main_contract() -> EngineContract { async fn deploy_silo_contract(main_contract: &EngineContract) -> EngineContract { let silo_account = main_contract .root() - .create_subaccount("silo", parse_near!("50 N")) + .create_subaccount("silo", NearToken::from_near(50)) .await .unwrap(); let silo_bytes = AuroraRunner::get_engine_code(); @@ -210,12 +210,12 @@ async fn deploy_silo_contract(main_contract: &EngineContract) -> EngineContract async fn deploy_nep141(main_contract: &EngineContract) -> (RawContract, Account) { let ft_owner = main_contract .root() - .create_subaccount("ft_owner", parse_near!("10 N")) + .create_subaccount("ft_owner", NearToken::from_near(10)) .await .unwrap(); let nep_141_account = main_contract .root() - .create_subaccount("test_token", parse_near!("10 N")) + .create_subaccount("test_token", NearToken::from_near(10)) .await .unwrap(); diff --git a/engine-tests/src/tests/silo.rs b/engine-tests/src/tests/silo.rs index ad752e572..613ac99d9 100644 --- a/engine-tests/src/tests/silo.rs +++ b/engine-tests/src/tests/silo.rs @@ -904,7 +904,8 @@ pub mod workspace { SiloParamsArgs, WhitelistAddressArgs, WhitelistArgs, WhitelistKind, }; use aurora_engine_types::types::Address; - use aurora_engine_workspace::{account::Account, parse_near, EngineContract, RawContract}; + use aurora_engine_workspace::types::NearToken; + use aurora_engine_workspace::{account::Account, EngineContract, RawContract}; const FT_ACCOUNT: &str = "test_token"; const FT_TOTAL_SUPPLY: u128 = 1_000_000; @@ -1090,7 +1091,7 @@ pub mod workspace { let result = source .call(&nep_141.id(), "ft_transfer_call") .args_json(transfer_args) - .deposit(1) + .deposit(NearToken::from_yoctonear(1)) .max_gas() .transact() .await @@ -1105,7 +1106,7 @@ pub mod workspace { // Create fallback account and evm address let fallback_account = aurora .root() - .create_subaccount("fallback", parse_near!("10 N")) + .create_subaccount("fallback", NearToken::from_near(10)) .await .unwrap(); let fallback_address = @@ -1123,7 +1124,7 @@ pub mod workspace { // Create `ft_owner` account and evm address let ft_owner = aurora .root() - .create_subaccount("ft_owner", parse_near!("10 N")) + .create_subaccount("ft_owner", NearToken::from_near(10)) .await .unwrap(); let ft_owner_address = @@ -1131,7 +1132,7 @@ pub mod workspace { let nep_141_account = aurora .root() - .create_subaccount(FT_ACCOUNT, parse_near!("10 N")) + .create_subaccount(FT_ACCOUNT, NearToken::from_near(10)) .await .unwrap(); @@ -1148,7 +1149,7 @@ pub mod workspace { "account_id": fallback_account.id(), "registration_only": None:: })) - .deposit(parse_near!("50 N")) + .deposit(NearToken::from_near(50)) .transact() .await .unwrap(); diff --git a/engine-tests/src/tests/xcc.rs b/engine-tests/src/tests/xcc.rs index d6e946a1a..fa866bd50 100644 --- a/engine-tests/src/tests/xcc.rs +++ b/engine-tests/src/tests/xcc.rs @@ -10,13 +10,14 @@ use aurora_engine_types::parameters::{ }; use aurora_engine_types::types::{Address, EthGas, NearGas, Wei, Yocto}; use aurora_engine_types::U256; +use aurora_engine_workspace::types::NearToken; use near_primitives::transaction::Action; use near_primitives_core::contract::ContractCode; use std::fs; use std::path::Path; -const WNEAR_AMOUNT: u128 = 10 * 50_000_000_000_000_000_000_000_000; -const STORAGE_AMOUNT: i128 = 50_000_000_000_000_000_000_000_000; +const WNEAR_AMOUNT: NearToken = NearToken::from_near(500); +const STORAGE_AMOUNT: NearToken = NearToken::from_near(50); #[test] #[allow(clippy::too_many_lines)] @@ -63,7 +64,7 @@ fn test_xcc_eth_gas_cost() { wnear_erc20.transfer_from( utils::address_from_secret_key(&signer.secret_key), Address::from_array([1u8; 20]), - U256::from(STORAGE_AMOUNT), + U256::from(STORAGE_AMOUNT.as_yoctonear()), nonce, ) }) @@ -327,7 +328,11 @@ fn deploy_erc20(runner: &mut AuroraRunner, signer: &utils::Signer) -> ERC20 { aurora_engine::parameters::CallArgs::V1(aurora_engine::parameters::FunctionCallArgsV1 { contract: address, input: contract - .mint(dest_address, WNEAR_AMOUNT.into(), U256::zero()) + .mint( + dest_address, + WNEAR_AMOUNT.as_yoctonear().into(), + U256::zero(), + ) .data, }); let result = runner.call("call", &engine_account, call_args.try_to_vec().unwrap()); @@ -344,7 +349,7 @@ fn approve_erc20( ) { let approve_result = runner .submit_with_signer(signer, |nonce| { - token.approve(spender, WNEAR_AMOUNT.into(), nonce) + token.approve(spender, WNEAR_AMOUNT.as_yoctonear().into(), nonce) }) .unwrap(); assert!(approve_result.status.is_ok()); @@ -400,12 +405,13 @@ pub mod workspace { }; use aurora_engine_types::types::{Address, NearGas, Wei, Yocto}; use aurora_engine_types::U256; - use aurora_engine_workspace::{parse_near, EngineContract, RawContract}; + use aurora_engine_workspace::types::NearToken; + use aurora_engine_workspace::{EngineContract, RawContract}; use serde_json::json; use std::path::Path; - const STORAGE_AMOUNT: u128 = 50_000_000_000_000_000_000_000_000; - const ONE_NEAR: u128 = 10u128.pow(24); + const STORAGE_AMOUNT: NearToken = NearToken::from_near(50); + const ONE_NEAR: u128 = NearToken::from_near(1).as_yoctonear(); #[tokio::test] async fn test_xcc_external_fund() { @@ -431,7 +437,7 @@ pub mod workspace { let wnear_account = deploy_wnear(&aurora).await.unwrap(); // Fund XCC sub-account - let fund_amount = parse_near!("5 N"); + let fund_amount = NearToken::from_near(5); let result = aurora .fund_xcc_sub_account( signer_address, @@ -450,7 +456,10 @@ pub mod workspace { .get_balance(&sub_account_id.parse().unwrap()) .await .unwrap(); - assert_eq!((fund_amount - sub_account_balance) / ONE_NEAR, 0); + assert_eq!( + (fund_amount.as_yoctonear() - sub_account_balance) / ONE_NEAR, + 0 + ); // Do an XCC call. This XCC call is to the Aurora Engine itself to deploy an EVM contract, // but that is just for this test. The call could be to any contract to do any action. @@ -655,7 +664,7 @@ pub mod workspace { "receiver_id": router_account, "amount": format!("{transfer_amount}"), })) - .deposit(1) + .deposit(NearToken::from_yoctonear(1)) .transact() .await .unwrap(); @@ -772,7 +781,7 @@ pub mod workspace { &wnear_erc20, &aurora.root(), signer_address, - WNEAR_AMOUNT, + WNEAR_AMOUNT.as_yoctonear(), &aurora, ) .await @@ -788,7 +797,7 @@ pub mod workspace { let approve_tx = wnear_erc20.approve( cross_contract_call::ADDRESS, - WNEAR_AMOUNT.into(), + WNEAR_AMOUNT.as_yoctonear().into(), signer.use_nonce().into(), ); let signed_transaction = @@ -905,7 +914,8 @@ pub mod workspace { utils::rust::compile(base_path); std::fs::read(output_path)? }; - let fib_account = create_sub_account(&aurora.root(), "fib", parse_near!("50 N")).await?; + let fib_account = + create_sub_account(&aurora.root(), "fib", NearToken::from_near(50)).await?; fib_account .deploy(&fib_contract_bytes) .await diff --git a/engine-tests/src/utils/workspace.rs b/engine-tests/src/utils/workspace.rs index c6a1146a8..4f3e697e4 100644 --- a/engine-tests/src/utils/workspace.rs +++ b/engine-tests/src/utils/workspace.rs @@ -10,11 +10,11 @@ use aurora_engine_types::parameters::connector::{FungibleTokenMetadata, Withdraw use aurora_engine_types::types::Address; use aurora_engine_types::U256; use aurora_engine_workspace::account::Account; -use aurora_engine_workspace::{parse_near, EngineContract, RawContract}; +use aurora_engine_workspace::{types::NearToken, EngineContract, RawContract}; use serde_json::json; const FT_PATH: &str = "src/tests/res/fungible_token.wasm"; -const STORAGE_AMOUNT: u128 = 50_000_000_000_000_000_000_000_000; +const STORAGE_AMOUNT: NearToken = NearToken::from_near(50); #[cfg(feature = "ext-connector")] const AURORA_ETH_CONNECTOR: &str = "aurora_eth_connector"; @@ -27,8 +27,8 @@ pub async fn deploy_engine_with_code(code: Vec) -> EngineContract { .with_code(code) .with_custodian_address("d045f7e19B2488924B97F9c145b5E51D0D895A65") .unwrap() - .with_root_balance(parse_near!("10000 N")) - .with_contract_balance(parse_near!("1000 N")) + .with_root_balance(NearToken::from_near(10000)) + .with_contract_balance(NearToken::from_near(1000)) .deploy_and_init() .await .unwrap() @@ -51,7 +51,10 @@ async fn init_eth_connector(aurora: &EngineContract) -> anyhow::Result<()> { let contract_bytes = get_aurora_eth_connector_contract(); let contract_account = aurora .root() - .create_subaccount(AURORA_ETH_CONNECTOR, 15 * STORAGE_AMOUNT) + .create_subaccount( + AURORA_ETH_CONNECTOR, + STORAGE_AMOUNT.checked_mul(15).unwrap(), + ) .await .unwrap(); let contract = contract_account.deploy(&contract_bytes).await.unwrap(); @@ -84,7 +87,7 @@ async fn init_eth_connector(aurora: &EngineContract) -> anyhow::Result<()> { pub async fn create_sub_account( master_account: &Account, account: &str, - balance: u128, + balance: NearToken, ) -> anyhow::Result { master_account.create_subaccount(account, balance).await } @@ -121,7 +124,7 @@ pub async fn transfer_nep_141_to_erc_20( "amount": amount.to_string(), "memo": "null", })) - .deposit(1) + .deposit(NearToken::from_yoctonear(1)) .transact() .await?; assert!(result.is_success(), "{result:?}"); @@ -207,7 +210,7 @@ pub async fn transfer_nep_141( "amount": amount.to_string(), "memo": "null", })) - .deposit(1) + .deposit(NearToken::from_yoctonear(1)) .transact() .await?; assert!(result.is_success()); diff --git a/engine-workspace/Cargo.toml b/engine-workspace/Cargo.toml index d9ddd0b11..837fdd469 100644 --- a/engine-workspace/Cargo.toml +++ b/engine-workspace/Cargo.toml @@ -16,7 +16,6 @@ aurora-engine-types = { workspace = true, features = ["impl-serde", "std"] } anyhow.workspace = true near-gas.workspace = true near-sdk.workspace = true -near-units.workspace = true near-workspaces.workspace = true serde.workspace = true serde_json.workspace = true diff --git a/engine-workspace/src/account.rs b/engine-workspace/src/account.rs index 068b3c3b9..ea9112f89 100644 --- a/engine-workspace/src/account.rs +++ b/engine-workspace/src/account.rs @@ -4,7 +4,6 @@ use std::str::FromStr; use crate::contract::RawContract; use aurora_engine_types::public_key::PublicKey; -pub use near_units::parse_near; use near_workspaces::types::NearToken; #[derive(Debug, Clone)] @@ -40,10 +39,14 @@ impl Account { self.inner.id().as_str().parse().unwrap() } - pub async fn create_subaccount(&self, name: &str, balance: u128) -> anyhow::Result { + pub async fn create_subaccount( + &self, + name: &str, + balance: NearToken, + ) -> anyhow::Result { self.inner .create_subaccount(name) - .initial_balance(NearToken::from_yoctonear(balance)) + .initial_balance(balance) .transact() .await? .into_result() diff --git a/engine-workspace/src/lib.rs b/engine-workspace/src/lib.rs index 47f593aee..f84e5b5e2 100644 --- a/engine-workspace/src/lib.rs +++ b/engine-workspace/src/lib.rs @@ -2,11 +2,11 @@ use aurora_engine_types::account_id::AccountId; use aurora_engine_types::parameters::connector::FungibleTokenMetadata; use aurora_engine_types::types::address::Address; use aurora_engine_types::U256; +use near_workspaces::types::NearToken; use crate::node::Node; pub use crate::contract::{EngineContract, RawContract}; -pub use near_units::parse_near; pub mod account; pub mod contract; @@ -18,14 +18,14 @@ pub mod transaction; pub mod types { pub use near_workspaces::result::{ExecutionFinalResult, ExecutionOutcome}; - pub use near_workspaces::types::{KeyType, SecretKey}; + pub use near_workspaces::types::{KeyType, NearToken, SecretKey}; } const AURORA_LOCAL_CHAIN_ID: u64 = 1313161556; const OWNER_ACCOUNT_ID: &str = "aurora.root"; const PROVER_ACCOUNT_ID: &str = "prover.root"; -const ROOT_BALANCE: u128 = parse_near!("400 N"); -const CONTRACT_BALANCE: u128 = parse_near!("200 N"); +const ROOT_BALANCE: NearToken = NearToken::from_near(400); +const CONTRACT_BALANCE: NearToken = NearToken::from_near(200); #[derive(Debug)] pub struct EngineContractBuilder { @@ -35,8 +35,8 @@ pub struct EngineContractBuilder { prover_id: AccountId, custodian_address: Address, upgrade_delay_blocks: u64, - root_balance: u128, - contract_balance: u128, + root_balance: NearToken, + contract_balance: NearToken, ft_metadata: FungibleTokenMetadata, } @@ -94,12 +94,12 @@ impl EngineContractBuilder { self } - pub fn with_root_balance(mut self, balance: u128) -> Self { + pub fn with_root_balance(mut self, balance: NearToken) -> Self { self.root_balance = balance; self } - pub fn with_contract_balance(mut self, balance: u128) -> Self { + pub fn with_contract_balance(mut self, balance: NearToken) -> Self { self.contract_balance = balance; self } diff --git a/engine-workspace/src/macros.rs b/engine-workspace/src/macros.rs index f27a98f63..e29c04d6c 100644 --- a/engine-workspace/src/macros.rs +++ b/engine-workspace/src/macros.rs @@ -48,7 +48,7 @@ macro_rules! impl_call_return { self.0 = self.0.max_gas(); self } - pub fn deposit(mut self, deposit: u128) -> Self { + pub fn deposit(mut self, deposit: near_workspaces::types::NearToken) -> Self { self.0 = self.0.deposit(deposit); self } @@ -83,7 +83,7 @@ macro_rules! impl_call_return { self.0 = self.0.max_gas(); self } - pub fn deposit(mut self, deposit: u128) -> Self { + pub fn deposit(mut self, deposit: near_workspaces::types::NearToken) -> Self { self.0 = self.0.deposit(deposit); self } diff --git a/engine-workspace/src/node.rs b/engine-workspace/src/node.rs index 59555a0a6..00584cf82 100644 --- a/engine-workspace/src/node.rs +++ b/engine-workspace/src/node.rs @@ -15,7 +15,7 @@ pub struct Node { } impl Node { - pub async fn new(root: &str, root_balance: u128) -> anyhow::Result { + pub async fn new(root: &str, root_balance: NearToken) -> anyhow::Result { let worker = near_workspaces::sandbox().await?; let root = Self::create_root_account(&worker, root, root_balance).await?; @@ -43,7 +43,7 @@ impl Node { async fn create_root_account( worker: &Worker, root_acc_name: &str, - balance: u128, + balance: NearToken, ) -> anyhow::Result { use near_workspaces::AccessKey; @@ -76,7 +76,7 @@ impl Node { .batch(&root) .create_account() .add_key(sk.public_key(), AccessKey::full_access()) - .transfer(NearToken::from_yoctonear(balance)) + .transfer(balance) .transact() .await? .into_result()?; diff --git a/engine-workspace/src/transaction.rs b/engine-workspace/src/transaction.rs index 739a3dc15..53d439ae9 100644 --- a/engine-workspace/src/transaction.rs +++ b/engine-workspace/src/transaction.rs @@ -73,8 +73,8 @@ impl CallTransaction { self } - pub fn deposit(mut self, deposit: u128) -> Self { - self.inner = self.inner.deposit(NearToken::from_yoctonear(deposit)); + pub fn deposit(mut self, deposit: NearToken) -> Self { + self.inner = self.inner.deposit(deposit); self }