diff --git a/Cargo.lock b/Cargo.lock index eaaf3fa4f..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", @@ -3434,35 +3432,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e307313276eaeced2ca95740b5639e1f3125b7c97f0a1151809d105f1aa8c6d3" [[package]] -name = "near-units" +name = "near-token" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a2b77f295d398589eeee51ad0887905ef1734fb12b45cb6d77bd7e401988b9" +checksum = "7b68f3f8a2409f72b43efdbeff8e820b81e70824c49fee8572979d789d1683fb" 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", + "serde", ] [[package]] @@ -3571,9 +3546,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 +3567,7 @@ dependencies = [ "near-primitives 0.17.0", "near-sandbox-utils", "near-sdk", + "near-token", "rand 0.8.5", "reqwest", "serde", @@ -3689,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 1200ae92d..8aec4bd6f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -52,8 +52,7 @@ 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.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/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-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/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 497dfa616..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; @@ -532,7 +533,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 +583,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!( @@ -717,7 +726,7 @@ pub mod workspace { None, ) .max_gas() - .deposit(1) + .deposit(NearToken::from_yoctonear(1)) .transact() .await .unwrap(); @@ -761,7 +770,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,13 +816,13 @@ 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; // 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 @@ -866,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 a189baa08..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(); @@ -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 @@ -178,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(); @@ -211,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/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..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 @@ -1099,14 +1100,13 @@ 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; // 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 = @@ -1124,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 = @@ -1132,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(); @@ -1149,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 27fbd6730..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(); @@ -753,7 +762,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(); @@ -773,7 +781,7 @@ pub mod workspace { &wnear_erc20, &aurora.root(), signer_address, - WNEAR_AMOUNT, + WNEAR_AMOUNT.as_yoctonear(), &aurora, ) .await @@ -789,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 = @@ -906,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 b4c9a4377..4f3e697e4 100644 --- a/engine-tests/src/utils/workspace.rs +++ b/engine-tests/src/utils/workspace.rs @@ -10,16 +10,15 @@ 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"; /// 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() @@ -28,14 +27,14 @@ 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() } -#[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; @@ -52,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(); @@ -85,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 } @@ -122,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:?}"); @@ -208,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 31eb39716..ea9112f89 100644 --- a/engine-workspace/src/account.rs +++ b/engine-workspace/src/account.rs @@ -4,7 +4,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 { @@ -39,7 +39,11 @@ 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(balance) 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 243c12584..00584cf82 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; @@ -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?; @@ -36,14 +36,14 @@ impl Node { self.worker .view_account(&account_id) .await - .map(|d| d.balance) + .map(|d| d.balance.as_yoctonear()) .map_err(Into::into) } async fn create_root_account( worker: &Worker, root_acc_name: &str, - balance: u128, + balance: NearToken, ) -> anyhow::Result { use near_workspaces::AccessKey; diff --git a/engine-workspace/src/transaction.rs b/engine-workspace/src/transaction.rs index d74d99355..53d439ae9 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> { @@ -72,7 +73,7 @@ impl CallTransaction { self } - pub fn deposit(mut self, deposit: u128) -> Self { + pub fn deposit(mut self, deposit: NearToken) -> Self { self.inner = self.inner.deposit(deposit); self }