From d572c03ef457835be858f47d5169d6d5ca69f1f1 Mon Sep 17 00:00:00 2001 From: Bai Chuan Date: Mon, 2 Sep 2024 22:08:10 +0800 Subject: [PATCH] [Framework] Rename Rooch GasCoin symbol to RGas (#2557) * rename gas coin to rgas * Support passing icon parameter when coin register --- crates/rooch-faucet/src/app.rs | 2 +- crates/rooch-faucet/src/errors.rs | 2 +- crates/rooch-faucet/src/faucet.rs | 4 +- .../bitcoin_multisign_validator_tests.rs | 4 +- .../tests/cases/coin_store/coin_store.move | 14 +++---- .../rooch-indexer/src/tests/test_indexer.rs | 8 ++-- .../rooch-test-transaction-builder/src/lib.rs | 4 +- crates/rooch-types/src/framework/coin.rs | 6 +++ crates/rooch-types/src/framework/gas_coin.rs | 8 ++-- .../src/commands/account/commands/balance.rs | 2 +- .../src/commands/account/commands/transfer.rs | 2 +- crates/testsuite/features/cmd.feature | 14 +++---- crates/testsuite/features/multisign.feature | 2 +- .../connect-to-rooch/connect-devnet.en-US.mdx | 2 +- .../connect-to-rooch/connect-devnet.zh-CN.mdx | 2 +- .../getting-started/first-dapp.en-US.mdx | 2 +- .../getting-started/first-dapp.zh-CN.mdx | 2 +- .../first-token/coin-intro.en-US.mdx | 4 ++ .../first-token/coin-intro.zh-CN.mdx | 4 ++ .../build/reference/rpc/json-rpc.en-US.mdx | 14 +++---- .../build/reference/rpc/json-rpc.zh-CN.mdx | 14 +++---- .../pages/build/tutorial/counter.en-US.mdx | 8 ++-- .../pages/build/tutorial/counter.zh-CN.mdx | 8 ++-- .../btc_holder_coin/sources/holder_coin.move | 2 + .../sources/holder_farmer.move | 1 + examples/coins/sources/fixed_supply_coin.move | 3 +- examples/coins/sources/private_coin.move | 3 +- .../infinite_wand/sources/infinite_wand.move | 2 + .../sources/fixed_supply_coin_template.move | 3 +- examples/steal_split/sources/steal_split.move | 2 +- .../released/8/0x3/package.rpd | Bin 40337 -> 40283 bytes .../framework-release/released/8/stdlib | Bin 160184 -> 160130 bytes frameworks/rooch-framework/doc/coin.md | 5 +-- frameworks/rooch-framework/doc/gas_coin.md | 16 ++++---- .../rooch-framework/doc/transaction_fee.md | 4 +- frameworks/rooch-framework/sources/coin.move | 13 +++--- .../rooch-framework/sources/gas_coin.move | 37 ++++++++++-------- .../tests/account_coin_store_test.move | 2 + .../sources/tests/coin_store_test.move | 2 + .../sources/tests/coin_test.move | 8 ++-- .../sources/tests/gas_coin_test.move | 4 +- .../sources/tests/transfer_test.move | 11 +++--- .../sources/transaction_fee.move | 14 +++---- .../sources/transaction_validator.move | 4 +- .../rooch-portal-v2/src/sections/tx/view.tsx | 2 +- moveos/moveos-types/src/move_types.rs | 8 ++-- moveos/moveos-types/src/moveos_std/object.rs | 4 +- .../rooch-sdk/src/bcs/serializer.test.ts | 4 +- .../rooch-sdk/test-e2e/case/coin.test.ts | 2 +- .../rooch-sdk/test-e2e/case/transfer.test.ts | 2 +- 50 files changed, 163 insertions(+), 127 deletions(-) diff --git a/crates/rooch-faucet/src/app.rs b/crates/rooch-faucet/src/app.rs index d32011e522..c4ff932d33 100644 --- a/crates/rooch-faucet/src/app.rs +++ b/crates/rooch-faucet/src/app.rs @@ -63,7 +63,7 @@ impl App { .rooch .get_balance( faucet_address.into(), - StructTagView::from_str("0x3::gas_coin::GasCoin").unwrap(), + StructTagView::from_str("0x3::gas_coin::RGas").unwrap(), ) .await .map_err(FaucetError::internal)?; diff --git a/crates/rooch-faucet/src/errors.rs b/crates/rooch-faucet/src/errors.rs index 452d8ecfb7..321e8fb924 100644 --- a/crates/rooch-faucet/src/errors.rs +++ b/crates/rooch-faucet/src/errors.rs @@ -18,7 +18,7 @@ pub enum FaucetError { InvalidAddress(String), #[error("Timed out waiting for a coin from the gas coin pool")] - NoGasCoinAvailable, + NoRGasAvailable, #[error("Wallet Error: `{0}`")] Wallet(String), diff --git a/crates/rooch-faucet/src/faucet.rs b/crates/rooch-faucet/src/faucet.rs index 378ccdbae2..6f68a8a366 100644 --- a/crates/rooch-faucet/src/faucet.rs +++ b/crates/rooch-faucet/src/faucet.rs @@ -176,7 +176,7 @@ impl Faucet { let state = self.state.write().await; let move_action = TransferModule::create_transfer_coin_to_multichain_address_action( - StructTag::from_str("0x3::gas_coin::GasCoin").unwrap(), + StructTag::from_str("0x3::gas_coin::RGas").unwrap(), recipient, state.config.faucet_grant_amount.into(), ); @@ -190,7 +190,7 @@ impl Faucet { let state = self.state.write().await; let move_action = TransferModule::create_transfer_coin_action( - StructTag::from_str("0x3::gas_coin::GasCoin").unwrap(), + StructTag::from_str("0x3::gas_coin::RGas").unwrap(), recipient.into(), state.config.faucet_grant_amount.into(), ); diff --git a/crates/rooch-framework-tests/src/tests/bitcoin_multisign_validator_tests.rs b/crates/rooch-framework-tests/src/tests/bitcoin_multisign_validator_tests.rs index ca19957967..d5bada9870 100644 --- a/crates/rooch-framework-tests/src/tests/bitcoin_multisign_validator_tests.rs +++ b/crates/rooch-framework-tests/src/tests/bitcoin_multisign_validator_tests.rs @@ -12,7 +12,7 @@ use rooch_types::crypto::{RoochKeyPair, RoochSignature}; use rooch_types::framework::auth_payload::{MultisignAuthPayload, SignData}; use rooch_types::framework::auth_validator::BuiltinAuthValidator; use rooch_types::framework::empty::Empty; -use rooch_types::framework::gas_coin::GasCoin; +use rooch_types::framework::gas_coin::RGas; use rooch_types::framework::transfer::TransferModule; use rooch_types::transaction::rooch::RoochTransactionData; use rooch_types::transaction::{Authenticator, RoochTransaction}; @@ -56,7 +56,7 @@ async fn test_validate() { //transfer gas free to multisign account let gas_action = TransferModule::create_transfer_coin_action( - GasCoin::struct_tag(), + RGas::struct_tag(), multisign_address.into(), U256::from(1000000000u128), ); diff --git a/crates/rooch-framework-tests/tests/cases/coin_store/coin_store.move b/crates/rooch-framework-tests/tests/cases/coin_store/coin_store.move index 9d5b549d2b..52c2e99051 100644 --- a/crates/rooch-framework-tests/tests/cases/coin_store/coin_store.move +++ b/crates/rooch-framework-tests/tests/cases/coin_store/coin_store.move @@ -5,14 +5,14 @@ script { use rooch_framework::coin_store::CoinStore; - use rooch_framework::gas_coin::GasCoin; + use rooch_framework::gas_coin::RGas; fun main(sender: &signer) { let account_addr = moveos_std::signer::address_of(sender); - let object_id = moveos_std::object::account_named_object_id>(account_addr); + let object_id = moveos_std::object::account_named_object_id>(account_addr); std::debug::print(&object_id); - std::debug::print(&rooch_framework::coin::is_registered()); - std::debug::print(&rooch_framework::account_coin_store::balance(account_addr)); + std::debug::print(&rooch_framework::coin::is_registered()); + std::debug::print(&rooch_framework::account_coin_store::balance(account_addr)); } } @@ -20,14 +20,14 @@ script { //# run rooch_framework::gas_coin::faucet_entry --signers test --args u256:100000000000 //Transfer via coin store -//# run --signers test --args object:0x5f065f9c2b57613760fc9065bf00f597d7273697699634c16eb3793ef741eec7 +//# run --signers test --args object:0x562409111a2ca55814e56eb42186470c4adda4a04a4a84140690f4d68e8e1c06 script { use moveos_std::object::{Object}; use rooch_framework::coin_store::{Self, CoinStore}; - use rooch_framework::gas_coin::{Self, GasCoin}; + use rooch_framework::gas_coin::{Self, RGas}; - fun main(coin_store: &mut Object>) { + fun main(coin_store: &mut Object>) { let gas_coin = coin_store::withdraw(coin_store, 100); gas_coin::burn(gas_coin); } diff --git a/crates/rooch-indexer/src/tests/test_indexer.rs b/crates/rooch-indexer/src/tests/test_indexer.rs index 472db4f4ac..bbcb3d92c7 100644 --- a/crates/rooch-indexer/src/tests/test_indexer.rs +++ b/crates/rooch-indexer/src/tests/test_indexer.rs @@ -16,7 +16,7 @@ use moveos_types::transaction::{TransactionExecutionInfo, VerifiedMoveOSTransact use rand::random; use rooch_config::store_config::DEFAULT_DB_INDEXER_SUBDIR; use rooch_types::framework::coin_store::CoinStore; -use rooch_types::framework::gas_coin::GasCoin; +use rooch_types::framework::gas_coin::RGas; use rooch_types::indexer::event::{EventFilter, IndexerEvent}; use rooch_types::indexer::state::{IndexerObjectState, ObjectStateFilter, ObjectStateType}; use rooch_types::indexer::transaction::{IndexerTransaction, TransactionFilter}; @@ -158,14 +158,14 @@ async fn test_object_type_query() -> Result<()> { 0, 0, 0, - CoinStore::::new(100u64.into(), false), + CoinStore::::new(100u64.into(), false), ); let raw_obj = coin_store_obj.into_state(); let state = IndexerObjectState::new(raw_obj.metadata, 0, 0); let object_states = vec![state]; indexer_store.persist_or_update_object_states(object_states.clone())?; // filter by exact object type - let filter = ObjectStateFilter::ObjectType(CoinStore::::struct_tag()); + let filter = ObjectStateFilter::ObjectType(CoinStore::::struct_tag()); let query_object_states = indexer_reader.query_object_ids_with_filter( filter, None, @@ -176,7 +176,7 @@ async fn test_object_type_query() -> Result<()> { assert_eq!(query_object_states.len(), 1); // filter by object type and owner let filter = ObjectStateFilter::ObjectTypeWithOwner { - object_type: CoinStore::::struct_tag(), + object_type: CoinStore::::struct_tag(), filter_out: false, owner, }; diff --git a/crates/rooch-test-transaction-builder/src/lib.rs b/crates/rooch-test-transaction-builder/src/lib.rs index 126e99366d..65c0e60e36 100644 --- a/crates/rooch-test-transaction-builder/src/lib.rs +++ b/crates/rooch-test-transaction-builder/src/lib.rs @@ -15,7 +15,7 @@ use moveos_verifier::build::run_verifier; use rooch_types::crypto::RoochKeyPair; use rooch_types::error::RoochError; use rooch_types::framework::empty::Empty; -use rooch_types::framework::gas_coin::GasCoin; +use rooch_types::framework::gas_coin::RGas; use rooch_types::framework::transfer::TransferModule; use rooch_types::test_utils::{random_string, random_string_with_size}; use rooch_types::transaction::rooch::RoochTransactionData; @@ -78,7 +78,7 @@ impl TestTransactionBuilder { pub fn call_transfer_create(&self) -> MoveAction { TransferModule::create_transfer_coin_action( - GasCoin::struct_tag(), + RGas::struct_tag(), AccountAddress::random(), U256::from(100u128), ) diff --git a/crates/rooch-types/src/framework/coin.rs b/crates/rooch-types/src/framework/coin.rs index 3c60da04f3..8df2d97403 100644 --- a/crates/rooch-types/src/framework/coin.rs +++ b/crates/rooch-types/src/framework/coin.rs @@ -6,6 +6,7 @@ use move_core_types::language_storage::StructTag; use move_core_types::u256::U256; use move_core_types::{account_address::AccountAddress, ident_str, identifier::IdentStr}; use moveos_types::module_binding::{ModuleBinding, MoveFunctionCaller}; +use moveos_types::move_std::option::MoveOption; use moveos_types::move_std::string::MoveString; use moveos_types::move_types; use moveos_types::moveos_std::object::{self, ObjectID}; @@ -93,6 +94,7 @@ pub struct CoinInfo { coin_type: MoveString, name: MoveString, symbol: MoveString, + icon_url: MoveOption, decimals: u8, supply: U256, phantom: std::marker::PhantomData, @@ -125,6 +127,7 @@ where MoveString::type_layout(), MoveString::type_layout(), MoveString::type_layout(), + MoveOption::::type_layout(), move_core_types::value::MoveTypeLayout::U8, move_core_types::value::MoveTypeLayout::U256, ]) @@ -169,6 +172,9 @@ impl CoinInfo { pub fn symbol(&self) -> String { self.symbol.to_string() } + pub fn icon_url(&self) -> Option { + self.icon_url.clone().map(|v| v.to_string()).into() + } pub fn decimals(&self) -> u8 { self.decimals } diff --git a/crates/rooch-types/src/framework/gas_coin.rs b/crates/rooch-types/src/framework/gas_coin.rs index 90122d4e61..647f9f98d0 100644 --- a/crates/rooch-types/src/framework/gas_coin.rs +++ b/crates/rooch-types/src/framework/gas_coin.rs @@ -11,15 +11,15 @@ pub const MODULE_NAME: &IdentStr = ident_str!("gas_coin"); pub const DECIMALS: u8 = 18; #[derive(Debug, Clone)] -pub struct GasCoin; +pub struct RGas; -impl MoveStructType for GasCoin { +impl MoveStructType for RGas { const ADDRESS: AccountAddress = ROOCH_FRAMEWORK_ADDRESS; const MODULE_NAME: &'static IdentStr = MODULE_NAME; - const STRUCT_NAME: &'static IdentStr = ident_str!("GasCoin"); + const STRUCT_NAME: &'static IdentStr = ident_str!("RGas"); } -impl GasCoin { +impl RGas { pub fn scaling>(value: I) -> U256 { U256::from(10u64.pow(DECIMALS as u32)) * value.into() } diff --git a/crates/rooch/src/commands/account/commands/balance.rs b/crates/rooch/src/commands/account/commands/balance.rs index 8d5c19c5e6..2e5e0d7445 100644 --- a/crates/rooch/src/commands/account/commands/balance.rs +++ b/crates/rooch/src/commands/account/commands/balance.rs @@ -30,7 +30,7 @@ pub struct BalanceCommand { address: ParsedAddress, /// Struct name as `
::::` - /// Example: `0x3::gas_coin::GasCoin`, `0x123::Coin::Box<0x123::coin_box::FCoin>` + /// Example: `0x3::gas_coin::RGas`, `0x123::Coin::Box<0x123::coin_box::FCoin>` #[clap(long, value_parser=ParsedStructType::parse)] coin_type: Option, diff --git a/crates/rooch/src/commands/account/commands/transfer.rs b/crates/rooch/src/commands/account/commands/transfer.rs index e6a6ccd645..4e21ebca71 100644 --- a/crates/rooch/src/commands/account/commands/transfer.rs +++ b/crates/rooch/src/commands/account/commands/transfer.rs @@ -26,7 +26,7 @@ pub struct TransferCommand { to: ParsedAddress, /// Struct name as `
::::` - /// Example: `0x3::gas_coin::GasCoin`, `0x123::Coin::Box<0x123::coin_box::FCoin>` + /// Example: `0x3::gas_coin::RGas`, `0x123::Coin::Box<0x123::coin_box::FCoin>` #[clap(short = 'c', long, value_parser=ParsedStructType::parse)] coin_type: ParsedStructType, diff --git a/crates/testsuite/features/cmd.feature b/crates/testsuite/features/cmd.feature index a3cade8b0b..c69143c824 100644 --- a/crates/testsuite/features/cmd.feature +++ b/crates/testsuite/features/cmd.feature @@ -45,8 +45,8 @@ Feature: Rooch CLI integration tests # use nostr_public_key Then cmd: "account nullify -a {{$.account[-2].account0.nostr_public_key}}" - Then cmd: "rpc request --method rooch_getBalance --params '["{{$.address_mapping.default}}", "0x3::gas_coin::GasCoin"]' --json" - Then assert: "'{{$.rpc[-1].coin_type}}' == '0x3::gas_coin::GasCoin'" + Then cmd: "rpc request --method rooch_getBalance --params '["{{$.address_mapping.default}}", "0x3::gas_coin::RGas"]' --json" + Then assert: "'{{$.rpc[-1].coin_type}}' == '0x3::gas_coin::RGas'" Then assert: "'{{$.rpc[-1].balance}}' == '0'" # Get gas @@ -80,8 +80,8 @@ Feature: Rooch CLI integration tests # account balance Then cmd: "account balance" - Then cmd: "account balance --coin-type rooch_framework::gas_coin::GasCoin" - Then cmd: "rpc request --method rooch_getBalance --params '["{{$.address_mapping.default}}", "0x3::gas_coin::GasCoin"]' --json" + Then cmd: "account balance --coin-type rooch_framework::gas_coin::RGas" + Then cmd: "rpc request --method rooch_getBalance --params '["{{$.address_mapping.default}}", "0x3::gas_coin::RGas"]' --json" Then assert: "'{{$.rpc[-1].balance}}' != '0'" Then stop the server @@ -101,8 +101,8 @@ Feature: Rooch CLI integration tests Then assert: "{{$.state[-1][0].decoded_value.value.id}} == 4" Then cmd: "state --access-path /object/0x3::address_mapping::RoochToBitcoinAddressMapping" Then assert: "{{$.state[-1][0].object_type}} == '0x3::address_mapping::RoochToBitcoinAddressMapping'" - Then cmd: "state --access-path /object/0x3::coin::CoinInfo<0x3::gas_coin::GasCoin>" - Then assert: "{{$.state[-1][0].object_type}} == '0x3::coin::CoinInfo<0x3::gas_coin::GasCoin>'" + Then cmd: "state --access-path /object/0x3::coin::CoinInfo<0x3::gas_coin::RGas>" + Then assert: "{{$.state[-1][0].object_type}} == '0x3::coin::CoinInfo<0x3::gas_coin::RGas>'" Then stop the server @serial @@ -161,7 +161,7 @@ Feature: Rooch CLI integration tests # Sync states Then cmd: "object -t 0x3::coin::CoinInfo --limit 10 -d" Then assert: "{{$.object[-1].data[0].tx_order}} == 1" - Then assert: "{{$.object[-1].data[0].object_type}} == 0x3::coin::CoinInfo<0x3::gas_coin::GasCoin>" + Then assert: "{{$.object[-1].data[0].object_type}} == 0x3::coin::CoinInfo<0x3::gas_coin::RGas>" Then assert: "{{$.object[-1].has_next_page}} == false" Then cmd: "rpc request --method rooch_listFieldStates --params '["{{$.address_mapping.default}}", null, "10", {"descending": true,"showDisplay":false}]' --json" diff --git a/crates/testsuite/features/multisign.feature b/crates/testsuite/features/multisign.feature index 6f84f00515..2486d27ecf 100644 --- a/crates/testsuite/features/multisign.feature +++ b/crates/testsuite/features/multisign.feature @@ -15,7 +15,7 @@ Feature: Rooch CLI multisign integration tests Then assert: "'{{$.account[-1]}}' not_contains error" #transfer some gas to multisign account - Then cmd: "account transfer --to {{$.account[-1].multisign_address}} --amount 10000000000 --coin-type rooch_framework::gas_coin::GasCoin" + Then cmd: "account transfer --to {{$.account[-1].multisign_address}} --amount 10000000000 --coin-type rooch_framework::gas_coin::RGas" Then assert: "{{$.account[-1].execution_info.status.type}} == executed" # transaction diff --git a/docs/website/pages/build/getting-started/connect-to-rooch/connect-devnet.en-US.mdx b/docs/website/pages/build/getting-started/connect-to-rooch/connect-devnet.en-US.mdx index b868f769f8..6918f8844e 100644 --- a/docs/website/pages/build/getting-started/connect-to-rooch/connect-devnet.en-US.mdx +++ b/docs/website/pages/build/getting-started/connect-to-rooch/connect-devnet.en-US.mdx @@ -26,7 +26,7 @@ Note: The Developer Testnet automatically updates to the `main` branch of the [R ## Deploying the Example Contract -Currently, the Developer Testnet automatically assigns `GasCoin` to developers, allowing them to deploy contracts directly through commands. +Currently, the Developer Testnet automatically assigns `RGas` to developers, allowing them to deploy contracts directly through commands. ```bash git clone https://github.com/rooch-network/rooch.git diff --git a/docs/website/pages/build/getting-started/connect-to-rooch/connect-devnet.zh-CN.mdx b/docs/website/pages/build/getting-started/connect-to-rooch/connect-devnet.zh-CN.mdx index 165c7881ba..6926630155 100644 --- a/docs/website/pages/build/getting-started/connect-to-rooch/connect-devnet.zh-CN.mdx +++ b/docs/website/pages/build/getting-started/connect-to-rooch/connect-devnet.zh-CN.mdx @@ -26,7 +26,7 @@ rooch env list ## 部署 Example 合约 -当前,开发者测试网会自动给开发者分配 `GasCoin`,开发者可直接通过命令部署合约。 +当前,开发者测试网会自动给开发者分配 `RGas`,开发者可直接通过命令部署合约。 ```bash git clone https://github.com/rooch-network/rooch.git diff --git a/docs/website/pages/build/getting-started/first-dapp.en-US.mdx b/docs/website/pages/build/getting-started/first-dapp.en-US.mdx index e379bc6e18..d657830b63 100644 --- a/docs/website/pages/build/getting-started/first-dapp.en-US.mdx +++ b/docs/website/pages/build/getting-started/first-dapp.en-US.mdx @@ -59,7 +59,7 @@ rooch account balance Coin Type | Symbol | Decimals | Balance -------------------------------------------------------------------- -0x3::gas_coin::GasCoin | RGC | 8 | 1939625968 +0x3::gas_coin::RGas | RGAS | 8 | 1939625968 ``` [Get Rooch Gas Coin](./get-gas-coin.en-US) diff --git a/docs/website/pages/build/getting-started/first-dapp.zh-CN.mdx b/docs/website/pages/build/getting-started/first-dapp.zh-CN.mdx index 6bff75aa8d..731a4255ad 100644 --- a/docs/website/pages/build/getting-started/first-dapp.zh-CN.mdx +++ b/docs/website/pages/build/getting-started/first-dapp.zh-CN.mdx @@ -58,7 +58,7 @@ rooch account balance Coin Type | Symbol | Decimals | Balance -------------------------------------------------------------------- -0x3::gas_coin::GasCoin | RGC | 8 | 1939625968 +0x3::gas_coin::RGas | RGAS | 8 | 1939625968 ``` [获取 Rooch Gas Coin](./get-gas-coin.zh-CN) diff --git a/docs/website/pages/build/getting-started/first-token/coin-intro.en-US.mdx b/docs/website/pages/build/getting-started/first-token/coin-intro.en-US.mdx index d4bd6317cc..e59f9538af 100644 --- a/docs/website/pages/build/getting-started/first-token/coin-intro.en-US.mdx +++ b/docs/website/pages/build/getting-started/first-token/coin-intro.en-US.mdx @@ -25,6 +25,7 @@ This example will demonstrate the use of having a public type Coin. ```move module coins::fixed_supply_coin { + use std::option; use std::string; use moveos_std::signer; use moveos_std::object::{Self, Object}; @@ -44,6 +45,7 @@ module coins::fixed_supply_coin { let coin_info_obj = coin::register_extend( string::utf8(b"Fixed Supply Coin"), string::utf8(b"FSC"), + option::none(), DECIMALS, ); // Mint the total supply of coins, and store it to the treasury @@ -91,6 +93,7 @@ This example introduces the usage of the private type Coin. ```move module coins::private_coin { + use std::option; use std::string; use moveos_std::signer; use moveos_std::object::{Self, Object}; @@ -112,6 +115,7 @@ module coins::private_coin { let coin_info_obj = coin::register_extend( string::utf8(b"Private Coin"), string::utf8(b"PRC"), + option::none(), 1, ); object::transfer(coin_info_obj, @coins); diff --git a/docs/website/pages/build/getting-started/first-token/coin-intro.zh-CN.mdx b/docs/website/pages/build/getting-started/first-token/coin-intro.zh-CN.mdx index ea2cf1fcfb..46e7e2e0c7 100644 --- a/docs/website/pages/build/getting-started/first-token/coin-intro.zh-CN.mdx +++ b/docs/website/pages/build/getting-started/first-token/coin-intro.zh-CN.mdx @@ -25,6 +25,7 @@ ```move module coins::fixed_supply_coin { + use std::option; use std::string; use moveos_std::signer; use moveos_std::object::{Self, Object}; @@ -44,6 +45,7 @@ module coins::fixed_supply_coin { let coin_info_obj = coin::register_extend( string::utf8(b"Fixed Supply Coin"), string::utf8(b"FSC"), + option::none(), DECIMALS, ); // Mint the total supply of coins, and store it to the treasury @@ -91,6 +93,7 @@ module coins::fixed_supply_coin { ```move module coins::private_coin { + use std::option; use std::string; use moveos_std::signer; use moveos_std::object::{Self, Object}; @@ -112,6 +115,7 @@ module coins::private_coin { let coin_info_obj = coin::register_extend( string::utf8(b"Private Coin"), string::utf8(b"PRC"), + option::none(), 1, ); object::transfer(coin_info_obj, @coins); diff --git a/docs/website/pages/build/reference/rpc/json-rpc.en-US.mdx b/docs/website/pages/build/reference/rpc/json-rpc.en-US.mdx index 8fdc94b731..aaff1743f1 100644 --- a/docs/website/pages/build/reference/rpc/json-rpc.en-US.mdx +++ b/docs/website/pages/build/reference/rpc/json-rpc.en-US.mdx @@ -349,9 +349,9 @@ Response: "result": { "data": [ { - "coin_type": "0x3::gas_coin::GasCoin", + "coin_type": "0x3::gas_coin::RGas", "name": "Rooch Gas Coin", - "symbol": "RGC", + "symbol": "RGAS", "decimals": 18, "supply": "600000000000000000000", "balance": "99999999999997204086" @@ -375,7 +375,7 @@ curl --location 'https://dev-seed.rooch.network:443' --header 'Content-Type: app "id":101, "jsonrpc":"2.0", "method":"rooch_getBalance", - "params":["0xd9858821a52538c99f822d3f90ec798f76466bb7a1e82ebdb42d19b62a030069", "0x3::gas_coin::GasCoin"] + "params":["0xd9858821a52538c99f822d3f90ec798f76466bb7a1e82ebdb42d19b62a030069", "0x3::gas_coin::RGas"] }' | jq ``` @@ -385,9 +385,9 @@ Response: { "jsonrpc": "2.0", "result": { - "coin_type": "0x3::gas_coin::GasCoin", + "coin_type": "0x3::gas_coin::RGas", "name": "Rooch Gas Coin", - "symbol": "RGC", + "symbol": "RGAS", "decimals": 18, "supply": "300000000000000000000", "balance": "99999999999996463576" @@ -982,7 +982,7 @@ Response: "flag": 0, "value": { "abilities": 8, - "type": "0x3::coin_store::CoinStore<0x3::gas_coin::GasCoin>", + "type": "0x3::coin_store::CoinStore<0x3::gas_coin::RGas>", "value": { "balance": { "abilities": 4, @@ -991,7 +991,7 @@ Response: "value": "99999999999997204086" } }, - "coin_type": "0000000000000000000000000000000000000000000000000000000000000003::gas_coin::GasCoin", + "coin_type": "0000000000000000000000000000000000000000000000000000000000000003::gas_coin::RGas", "frozen": false } }, diff --git a/docs/website/pages/build/reference/rpc/json-rpc.zh-CN.mdx b/docs/website/pages/build/reference/rpc/json-rpc.zh-CN.mdx index 8a83a24b6e..b16dfbbad4 100644 --- a/docs/website/pages/build/reference/rpc/json-rpc.zh-CN.mdx +++ b/docs/website/pages/build/reference/rpc/json-rpc.zh-CN.mdx @@ -349,9 +349,9 @@ curl --location 'https://dev-seed.rooch.network:443' --header 'Content-Type: app "result": { "data": [ { - "coin_type": "0x3::gas_coin::GasCoin", + "coin_type": "0x3::gas_coin::RGas", "name": "Rooch Gas Coin", - "symbol": "RGC", + "symbol": "RGAS", "decimals": 18, "supply": "600000000000000000000", "balance": "99999999999997204086" @@ -375,7 +375,7 @@ curl --location 'https://dev-seed.rooch.network:443' --header 'Content-Type: app "id":101, "jsonrpc":"2.0", "method":"rooch_getBalance", - "params":["0xd9858821a52538c99f822d3f90ec798f76466bb7a1e82ebdb42d19b62a030069", "0x3::gas_coin::GasCoin"] + "params":["0xd9858821a52538c99f822d3f90ec798f76466bb7a1e82ebdb42d19b62a030069", "0x3::gas_coin::RGas"] }' | jq ``` @@ -385,9 +385,9 @@ curl --location 'https://dev-seed.rooch.network:443' --header 'Content-Type: app { "jsonrpc": "2.0", "result": { - "coin_type": "0x3::gas_coin::GasCoin", + "coin_type": "0x3::gas_coin::RGas", "name": "Rooch Gas Coin", - "symbol": "RGC", + "symbol": "RGAS", "decimals": 18, "supply": "300000000000000000000", "balance": "99999999999996463576" @@ -982,7 +982,7 @@ curl --location 'https://dev-seed.rooch.network:443' --header 'Content-Type: app "flag": 0, "value": { "abilities": 8, - "type": "0x3::coin_store::CoinStore<0x3::gas_coin::GasCoin>", + "type": "0x3::coin_store::CoinStore<0x3::gas_coin::RGas>", "value": { "balance": { "abilities": 4, @@ -991,7 +991,7 @@ curl --location 'https://dev-seed.rooch.network:443' --header 'Content-Type: app "value": "99999999999997204086" } }, - "coin_type": "0000000000000000000000000000000000000000000000000000000000000003::gas_coin::GasCoin", + "coin_type": "0000000000000000000000000000000000000000000000000000000000000003::gas_coin::RGas", "frozen": false } }, diff --git a/docs/website/pages/build/tutorial/counter.en-US.mdx b/docs/website/pages/build/tutorial/counter.en-US.mdx index 88b9d9a220..3563ad157b 100644 --- a/docs/website/pages/build/tutorial/counter.en-US.mdx +++ b/docs/website/pages/build/tutorial/counter.en-US.mdx @@ -210,7 +210,7 @@ Publish modules to address: rooch15veygsvpa5z6vxvym94e333ffhh7m7mq57xwj4h43zvzhl "op": { "type": "modify", "value": "0x01174f118fa37af78cd65c70d609e5a51caf374f143fb613be37ec448dbf6b82880000000000000000000000000000000000000000000000000000000000000000005350415253455f4d45524b4c455f504c414345484f4c4445525f484153480000000000000000000000000000000000000000000000000000a2e3da000000000000000000000000000000000000000000000000000000000000", - "value_type": "0x2::object::ObjectEntity<0x3::coin_store::CoinStore<0x3::gas_coin::GasCoin>>", + "value_type": "0x2::object::ObjectEntity<0x3::coin_store::CoinStore<0x3::gas_coin::RGas>>", "decoded_value": null, "display_fields": null }, @@ -274,7 +274,7 @@ Publish modules to address: rooch15veygsvpa5z6vxvym94e333ffhh7m7mq57xwj4h43zvzhl "op": { "type": "modify", "value": "0x01d97eb224c44cd666eacab1ac4ce648f47d3d7a0491abfa289e81a29708bb3c2da332444181ed05a61984d96b98c6294defedfb60a78ce956f588982bfc95b5ed005350415253455f4d45524b4c455f504c414345484f4c4445525f48415348000000000000000000004737cf06900100004737cf069001000032011b050000000000000000000000000000000000000000000000000000000000", - "value_type": "0x2::object::ObjectEntity<0x3::coin_store::CoinStore<0x3::gas_coin::GasCoin>>", + "value_type": "0x2::object::ObjectEntity<0x3::coin_store::CoinStore<0x3::gas_coin::RGas>>", "decoded_value": null, "display_fields": null }, @@ -381,7 +381,7 @@ The syntax is `rooch move run --function address_published_by_the_module::module "op": { "type": "modify", "value": "0x01174f118fa37af78cd65c70d609e5a51caf374f143fb613be37ec448dbf6b82880000000000000000000000000000000000000000000000000000000000000000005350415253455f4d45524b4c455f504c414345484f4c4445525f4841534800000000000000000000000000000000000000000000000000009a5fdf000000000000000000000000000000000000000000000000000000000000", - "value_type": "0x2::object::ObjectEntity<0x3::coin_store::CoinStore<0x3::gas_coin::GasCoin>>", + "value_type": "0x2::object::ObjectEntity<0x3::coin_store::CoinStore<0x3::gas_coin::RGas>>", "decoded_value": null, "display_fields": null }, @@ -414,7 +414,7 @@ The syntax is `rooch move run --function address_published_by_the_module::module "op": { "type": "modify", "value": "0x01d97eb224c44cd666eacab1ac4ce648f47d3d7a0491abfa289e81a29708bb3c2da332444181ed05a61984d96b98c6294defedfb60a78ce956f588982bfc95b5ed005350415253455f4d45524b4c455f504c414345484f4c4445525f48415348000000000000000000004737cf06900100004737cf06900100003a8516050000000000000000000000000000000000000000000000000000000000", - "value_type": "0x2::object::ObjectEntity<0x3::coin_store::CoinStore<0x3::gas_coin::GasCoin>>", + "value_type": "0x2::object::ObjectEntity<0x3::coin_store::CoinStore<0x3::gas_coin::RGas>>", "decoded_value": null, "display_fields": null }, diff --git a/docs/website/pages/build/tutorial/counter.zh-CN.mdx b/docs/website/pages/build/tutorial/counter.zh-CN.mdx index 511e022a86..7a67253387 100644 --- a/docs/website/pages/build/tutorial/counter.zh-CN.mdx +++ b/docs/website/pages/build/tutorial/counter.zh-CN.mdx @@ -210,7 +210,7 @@ Publish modules to address: rooch15veygsvpa5z6vxvym94e333ffhh7m7mq57xwj4h43zvzhl "op": { "type": "modify", "value": "0x01174f118fa37af78cd65c70d609e5a51caf374f143fb613be37ec448dbf6b82880000000000000000000000000000000000000000000000000000000000000000005350415253455f4d45524b4c455f504c414345484f4c4445525f484153480000000000000000000000000000000000000000000000000000a2e3da000000000000000000000000000000000000000000000000000000000000", - "value_type": "0x2::object::ObjectEntity<0x3::coin_store::CoinStore<0x3::gas_coin::GasCoin>>", + "value_type": "0x2::object::ObjectEntity<0x3::coin_store::CoinStore<0x3::gas_coin::RGas>>", "decoded_value": null, "display_fields": null }, @@ -274,7 +274,7 @@ Publish modules to address: rooch15veygsvpa5z6vxvym94e333ffhh7m7mq57xwj4h43zvzhl "op": { "type": "modify", "value": "0x01d97eb224c44cd666eacab1ac4ce648f47d3d7a0491abfa289e81a29708bb3c2da332444181ed05a61984d96b98c6294defedfb60a78ce956f588982bfc95b5ed005350415253455f4d45524b4c455f504c414345484f4c4445525f48415348000000000000000000004737cf06900100004737cf069001000032011b050000000000000000000000000000000000000000000000000000000000", - "value_type": "0x2::object::ObjectEntity<0x3::coin_store::CoinStore<0x3::gas_coin::GasCoin>>", + "value_type": "0x2::object::ObjectEntity<0x3::coin_store::CoinStore<0x3::gas_coin::RGas>>", "decoded_value": null, "display_fields": null }, @@ -381,7 +381,7 @@ Publish modules to address: rooch15veygsvpa5z6vxvym94e333ffhh7m7mq57xwj4h43zvzhl "op": { "type": "modify", "value": "0x01174f118fa37af78cd65c70d609e5a51caf374f143fb613be37ec448dbf6b82880000000000000000000000000000000000000000000000000000000000000000005350415253455f4d45524b4c455f504c414345484f4c4445525f4841534800000000000000000000000000000000000000000000000000009a5fdf000000000000000000000000000000000000000000000000000000000000", - "value_type": "0x2::object::ObjectEntity<0x3::coin_store::CoinStore<0x3::gas_coin::GasCoin>>", + "value_type": "0x2::object::ObjectEntity<0x3::coin_store::CoinStore<0x3::gas_coin::RGas>>", "decoded_value": null, "display_fields": null }, @@ -414,7 +414,7 @@ Publish modules to address: rooch15veygsvpa5z6vxvym94e333ffhh7m7mq57xwj4h43zvzhl "op": { "type": "modify", "value": "0x01d97eb224c44cd666eacab1ac4ce648f47d3d7a0491abfa289e81a29708bb3c2da332444181ed05a61984d96b98c6294defedfb60a78ce956f588982bfc95b5ed005350415253455f4d45524b4c455f504c414345484f4c4445525f48415348000000000000000000004737cf06900100004737cf06900100003a8516050000000000000000000000000000000000000000000000000000000000", - "value_type": "0x2::object::ObjectEntity<0x3::coin_store::CoinStore<0x3::gas_coin::GasCoin>>", + "value_type": "0x2::object::ObjectEntity<0x3::coin_store::CoinStore<0x3::gas_coin::RGas>>", "decoded_value": null, "display_fields": null }, diff --git a/examples/btc_holder_coin/sources/holder_coin.move b/examples/btc_holder_coin/sources/holder_coin.move index 72435514ac..fa132d99e6 100644 --- a/examples/btc_holder_coin/sources/holder_coin.move +++ b/examples/btc_holder_coin/sources/holder_coin.move @@ -3,6 +3,7 @@ module btc_holder_coin::holder_coin { + use std::option; use std::string; use moveos_std::timestamp; use moveos_std::tx_context; @@ -37,6 +38,7 @@ module btc_holder_coin::holder_coin { let coin_info_obj = coin::register_extend( string::utf8(b"BTC Holder Coin"), string::utf8(b"HDC"), + option::none(), DECIMALS, ); let coin_info_holder_obj = object::new_named_object(CoinInfoHolder { coin_info: coin_info_obj }); diff --git a/examples/btc_holder_farmer/sources/holder_farmer.move b/examples/btc_holder_farmer/sources/holder_farmer.move index 793f60fca6..6abfca10b7 100644 --- a/examples/btc_holder_farmer/sources/holder_farmer.move +++ b/examples/btc_holder_farmer/sources/holder_farmer.move @@ -193,6 +193,7 @@ module btc_holder_farmer::hold_farmer { let coin_info = coin::register_extend( string::utf8(name), string::utf8(symbol), + option::none(), decimals, ); account::move_resource_to(signer, FarmingAsset { diff --git a/examples/coins/sources/fixed_supply_coin.move b/examples/coins/sources/fixed_supply_coin.move index 16823d5025..d681b5255c 100644 --- a/examples/coins/sources/fixed_supply_coin.move +++ b/examples/coins/sources/fixed_supply_coin.move @@ -3,6 +3,7 @@ module coins::fixed_supply_coin { + use std::option; use std::string; use moveos_std::signer; @@ -25,9 +26,9 @@ module coins::fixed_supply_coin { fun init() { let coin_info_obj = coin::register_extend( - string::utf8(b"Fixed Supply Coin"), string::utf8(b"FSC"), + option::none(), DECIMALS, ); // Mint the total supply of coins, and store it to the treasury diff --git a/examples/coins/sources/private_coin.move b/examples/coins/sources/private_coin.move index 909df89ff7..9684c0af5d 100644 --- a/examples/coins/sources/private_coin.move +++ b/examples/coins/sources/private_coin.move @@ -3,6 +3,7 @@ module coins::private_coin { + use std::option; use std::string; use moveos_std::signer; use moveos_std::object::{Self, Object}; @@ -22,9 +23,9 @@ module coins::private_coin { fun init() { let coin_info_obj = coin::register_extend( - string::utf8(b"Private Coin"), string::utf8(b"PRC"), + option::none(), 1, ); object::transfer(coin_info_obj, @coins); diff --git a/examples/infinite_wand/sources/infinite_wand.move b/examples/infinite_wand/sources/infinite_wand.move index cc550b68b5..b904ce0538 100644 --- a/examples/infinite_wand/sources/infinite_wand.move +++ b/examples/infinite_wand/sources/infinite_wand.move @@ -3,6 +3,7 @@ module infinite_wand::infinite_wand { + use std::option; use std::string; use moveos_std::timestamp::now_milliseconds; use moveos_std::table::Table; @@ -53,6 +54,7 @@ module infinite_wand::infinite_wand { let coin_info_obj = coin::register_extend( string::utf8(b"PreToken of InfiniteGames DAO"), string::utf8(b"InfiniteGold"), + option::none(), DECIMALS, ); let admin_cap = object::new_named_object(AdminCap {}); diff --git a/examples/module_template/template/sources/fixed_supply_coin_template.move b/examples/module_template/template/sources/fixed_supply_coin_template.move index 85ef9031de..ceeab8155a 100644 --- a/examples/module_template/template/sources/fixed_supply_coin_template.move +++ b/examples/module_template/template/sources/fixed_supply_coin_template.move @@ -3,6 +3,7 @@ module template::coin_module_identifier_placeholder { + use std::option; use std::string; use moveos_std::signer; @@ -24,9 +25,9 @@ module template::coin_module_identifier_placeholder { fun init() { let coin_info_obj = coin::register_extend( - string::utf8(b"COIN_NAME_PLACEHOLDER"), string::utf8(b"COIN_SYMBOL_PLACEHOLDER"), + option::none(), DECIMALS, ); // Mint the total supply of coins, and store it to the treasury diff --git a/examples/steal_split/sources/steal_split.move b/examples/steal_split/sources/steal_split.move index 92e42d3ae9..577fce4765 100644 --- a/examples/steal_split/sources/steal_split.move +++ b/examples/steal_split/sources/steal_split.move @@ -108,7 +108,7 @@ module rooch_examples::rooch_examples { // Get address of account let account_address = signer::address_of(account); // Register and mint WGBCOIN - let coin_info = coin::register_extend(string::utf8(b"WGBCOIN"),string::utf8(b"WGB"), 8); + let coin_info = coin::register_extend(string::utf8(b"WGBCOIN"),string::utf8(b"WGB"), option::none(),8); let coin = coin::mint_extend(&mut coin_info, 1000 * 1000 * 1000); account_coin_store::do_accept_coin(account); account_coin_store::deposit_extend(account_address, coin); diff --git a/frameworks/framework-release/released/8/0x3/package.rpd b/frameworks/framework-release/released/8/0x3/package.rpd index 4be47305a44851a955bbedd4706ccba082b8a738..d45417b5c29ce33679b80b5e7bc7840e343d8e02 100644 GIT binary patch delta 1159 zcmXw1O=w(I6h7zNd*8k9y*uyCym|97NhXt-OeT}sHfpt*muArnv`M(RpEm)zr5foZnDMiq3S}1}m7mDY_bn|iUx#yhw-Sd50 z*XWmT=!=6#Pkfnt*tj2h01zWsvIj)|0OiNjQs2{U)R*NC()?joy_^20Sbh+Egu#~G zA6~c8-mu%MbgN>cI~5z>tGL&XUfdJ`8W_Wnv56t^)NzY^Xq7y)&}K9+v5OrMaXc9p znQpnlI3;4n-fn){E8=}g(fdfXi1#B`%9)`$8uchf2;#96QK&;Wf}oxlC6G_bMSfTw zmJP<)#u#HCB?9H`36OJX2Mr!cCpnQevaz%|TuR4NFKuTNStpy!#+ymnY)xgo$o;s` zck!TOq|ru)9=gMW(@h^yhlD<$5$G9>0z+9Gxxj~=TZ0*L$+5bW7uH{PgXV%;OFHiI zu}@t6P}Qv-|Dfd^FuG%O&*%oX7+s^OSP*gcV2mlHZg{bYHJ2~WyyC}U0DVd= zx~-FKH@}p1WC(qcQV9W2=qKYVNh=d`MBDj36X}wD`S9WvbGh8_V0t z<~#mFQ-%l$C6i+IEtFqlrhdXpsPE9X!d&rIy??x;!F8?dcluq7e>M_`MUkY)0}Tdz z2q3f|N*0+xWLbY*X8BMIYoLw>>}nFhRiSwp#;U% z?5q)DYI>A-sAxp&P(4;A_GZ&#FRSr{W3NS3Fl}y>69#}L(;DCuW!%>*d@QDi39a5Y z!X3UJ_@Qr0B|q|G-zzQ$r`^ftyI6N)=QdUXjg_jVN;TISa-&7=6Vn2c6=Y=s z{vYq*s`qg9ytIIVrkFk32o(-JSdAPT?M% ofJ6U!QHa5_jYDnOYW7Od2inP566d`qyPW_ delta 1264 zcmYjQO=w+J5T2QH?m73~bML$N-S_T$`F(jW$;(S>8?8UdO(G^CY1)E_t*FJuCQ(}m zmd2)ut|TaR-{knS@vqIog$oOzS}di43lVoN;-YRultOW%Ac_jk3kkY7A2V}i&U`ax z=Jw~beuJ(a7(e=U;c~}aqW~a62q@SuvVTxsqi*Lrx=8xA{7JfBc=PH*|5J>&%_jPP z26gj(D1$4Zb;4_jpSzX#(btK6dHnS?-=GVf7%)~aAbzzgL{_Rfg#pwUUFhDy9ucwJ z8#gWWe8Si#V#dafyTUya|?nUM*?n@Dcb3e8tI1h9X$Oq-q zoLD|2I~j*MD~!V^5h&}5K#tV9g{viv_BB9`rTu*S@IGXdqO_yjnO54uv@2CySNG&x9lxw>*D3!YnAUS4`-?#$xpv-ajxYZ$D)bm8>!%8ua$d+vM64f(Fs0OfcBq0S zyM1U3+if!Q9>(_S%=nrzpu>DUGers!07a%UO}VBhGbamb#NCBBFgVHs;lnT$4V4TG zQA+WSmjQ!WNcsOO3IBC(Vj$yh_h}f4K9&p(L7I_|iO6yWM}P_lk8&CV!=gw<(adgu z?I}MMRWn(Y(oq^383iH-`G$7uGUvovG;+wASC=KHMazcaFvGuL*B`HCBbY^0+9ku8 zsk|r4BDL%$83k%>ns=+`0%DsS$qJGLPY4o0+U%J~WxBO+WFuMo!QER7gAh|(5rePF zkFn_7!i%WCq)&wVt23{@Rgd_Wv=h9gH!%9hmHd_yapR(`MVCd0-Bjqtl?%Z$X^P!^ob%23`R+Mq zE^Yg3+x|P>;`@i@x025re}x_Z#0Zw`K9Su)`4u(Q&vXOzC-N6*{xpl;75{52-wD3N z;3K;?ylkcY(VkJIUn@4cS+Vi$N`CziuC0my4Gdw(IE*22*%6EEG)o>@XfYZX-NCkq z*zUvyGghuJj*FPFyTkAC3VR|cav!J`_Fm*jd7!V3Mm>lTf_TUw3iSvMAgD(N3FKpP zjvLE^vcWjn7-H<9M4+rS3UbP|(crY}FyR{MkQ?qVxe@2NRyvxt(@r`voVelUc-oEf ziCOIBZ_HxbNTZDoJb24&+xC z@B+s9iNiRv%F#XHs8j@t%*!?#NR_qdM#!E&CR0_{vK#I^H>6N3Y+RoinT9FMB1(4!ad+ywXDdhb-A22C2$h&}y;R!=mFDQiDeFO;?w#kaQRmhmX=3fMf3mmbE``HML=%l`!C?|9L>QBHzeWo2(~ PeZZ{Tjl6gs_3!@y+~S>H delta 1236 zcmYjQO=w(I6h7zN`|iE(Z{C}qH#2E6lgT7Alf*PywdN%iEyT38i3%0#LQ8(98p#jD zl!Bs>Qo&_S)VENJF$)(8f>_gqP(e@x7wRHixGF&@6gMseLBTU2p)T&n`Tx7;T-vp- z@7iyCiEoXbdM~@#amQ5v5FmKu4T$((l-HFxExL*w~ZzsutasZTa@+TJ$~0mU6JzhQ_)Vxma;ugea{0u^qvBpo2g@D4*rT z@~A8^K2$0*4xvP#xHAAb+*K7uOB$&+Kpu;FS^IE5vPe_Lw?j5si><^Ep!)p z3iV27cP1*=dJBDhNpTE^Y~@OH32jK89K#;LuE{H7_;iOuVoz+e%Qb3h+1X$tDw~oY z$FMCr&>JoEzS5@cJ7YLV{qn-<`PiFTURhbbIC*})xiF^|noBRNz8EewFHSB^FE-~U zmuFsT&aQ48zB!QmbQGW1xN^=(K6@PB@f@QdC94k4W(szUSl;I#f$>un=pG~E$lN=s>I#N>$- zq#N4QWXcM)Xrz!iyC(BiQOkzQZZ6OL^v32yc?4h>{wP4lcn(2q`R!!Pn%cn6qx+Wz^r&=feDH zO{rhhBhD3VdGG3V3_dZEg9(ykfdUN%Y;Zgv&qL1b^ERRifRTzCu&M#v)-R-p%M2xt zJv}(^*aYAl6#MhPVPC znMN04n_Jpublic fun icon_url<CoinType: key>(coin_info: &object::Object<coin::CoinInfo<CoinType>>): option::Option<string::String> +
public fun icon_url<CoinType: key>(coin_info: &coin::CoinInfo<CoinType>): option::Option<string::String>
 
@@ -456,7 +456,6 @@ Borrow the CoinInfo ## Function `upsert_icon_url` -Upsert icon_url asCoinType dynamic field This function is protected by private_generics, so it can only be called by the CoinType module. @@ -475,7 +474,7 @@ This function is protected by private_generics, so it can only be c
#[private_generics(#[CoinType])]
-public fun register_extend<CoinType: key>(name: string::String, symbol: string::String, decimals: u8): object::Object<coin::CoinInfo<CoinType>>
+public fun register_extend<CoinType: key>(name: string::String, symbol: string::String, icon_url: option::Option<string::String>, decimals: u8): object::Object<coin::CoinInfo<CoinType>>
 
diff --git a/frameworks/rooch-framework/doc/gas_coin.md b/frameworks/rooch-framework/doc/gas_coin.md index 7abdcafcaf..ed0394925b 100644 --- a/frameworks/rooch-framework/doc/gas_coin.md +++ b/frameworks/rooch-framework/doc/gas_coin.md @@ -6,7 +6,7 @@ This module defines Rooch Gas Coin. -- [Resource `GasCoin`](#0x3_gas_coin_GasCoin) +- [Resource `RGas`](#0x3_gas_coin_RGas) - [Constants](#@Constants_0) - [Function `decimals`](#0x3_gas_coin_decimals) - [Function `balance`](#0x3_gas_coin_balance) @@ -17,7 +17,8 @@ This module defines Rooch Gas Coin. - [Function `genesis_init`](#0x3_gas_coin_genesis_init) -
use 0x1::string;
+
use 0x1::option;
+use 0x1::string;
 use 0x2::object;
 use 0x2::signer;
 use 0x3::account_coin_store;
@@ -28,13 +29,14 @@ This module defines Rooch Gas Coin.
 
 
 
-
+
 
-## Resource `GasCoin`
+## Resource `RGas`
 
+RGas is the symbol of Rooch Gas Coin
 
 
-
struct GasCoin has store, key
+
struct RGas has store, key
 
@@ -81,7 +83,7 @@ This module defines Rooch Gas Coin. -
public fun burn(coin: coin::Coin<gas_coin::GasCoin>)
+
public fun burn(coin: coin::Coin<gas_coin::RGas>)
 
@@ -93,7 +95,7 @@ This module defines Rooch Gas Coin. deduct gas coin from the given account. -
public(friend) fun deduct_gas(addr: address, amount: u256): coin::Coin<gas_coin::GasCoin>
+
public(friend) fun deduct_gas(addr: address, amount: u256): coin::Coin<gas_coin::RGas>
 
diff --git a/frameworks/rooch-framework/doc/transaction_fee.md b/frameworks/rooch-framework/doc/transaction_fee.md index 69602342b8..b464fd27f2 100644 --- a/frameworks/rooch-framework/doc/transaction_fee.md +++ b/frameworks/rooch-framework/doc/transaction_fee.md @@ -72,7 +72,7 @@ Returns the gas factor of gas. -
public(friend) fun withdraw_fee(amount: u256): coin::Coin<gas_coin::GasCoin>
+
public(friend) fun withdraw_fee(amount: u256): coin::Coin<gas_coin::RGas>
 
@@ -83,5 +83,5 @@ Returns the gas factor of gas. -
public(friend) fun deposit_fee(gas_coin: coin::Coin<gas_coin::GasCoin>)
+
public(friend) fun deposit_fee(gas_coin: coin::Coin<gas_coin::RGas>)
 
diff --git a/frameworks/rooch-framework/sources/coin.move b/frameworks/rooch-framework/sources/coin.move index 7953b8f62f..e6553d7976 100644 --- a/frameworks/rooch-framework/sources/coin.move +++ b/frameworks/rooch-framework/sources/coin.move @@ -3,6 +3,7 @@ /// This module provides the foundation for typesafe Coins. module rooch_framework::coin { + use std::option; use std::option::Option; use std::string; use std::string::String; @@ -81,6 +82,8 @@ module rooch_framework::coin { /// Symbol of the coin, usually a shorter version of the name. /// For example, Singapore Dollar is SGD. symbol: string::String, + /// Icon url of the coin + icon_url: Option, /// Number of decimals used to get its user representation. /// For example, if `decimals` equals `2`, a balance of `505` coins should /// be displayed to a user as `5.05` (`505 / 10 ** 2`). @@ -156,8 +159,8 @@ module rooch_framework::coin { } /// Returns the icon url of coin. - public fun icon_url(coin_info: &Object>): Option { - *object::borrow_field, String, Option>(coin_info, string::utf8(b"icon_url")) + public fun icon_url(coin_info: &CoinInfo): Option { + coin_info.icon_url } /// Return true if the type `CoinType1` is same with `CoinType2` @@ -218,10 +221,9 @@ module rooch_framework::coin { // #[private_generics(CoinType)] - /// Upsert icon_url as`CoinType` dynamic field /// This function is protected by `private_generics`, so it can only be called by the `CoinType` module. public fun upsert_icon_url(coin_info_obj: &mut Object>, icon_url: String){ - object::upsert_field(coin_info_obj, string::utf8(b"icon_url"), icon_url); + object::borrow_mut(coin_info_obj).icon_url = option::some(icon_url); } @@ -229,9 +231,9 @@ module rooch_framework::coin { /// Creates a new Coin with given `CoinType` /// This function is protected by `private_generics`, so it can only be called by the `CoinType` module. public fun register_extend( - name: string::String, symbol: string::String, + icon_url: Option, decimals: u8, ): Object> { assert!( @@ -248,6 +250,7 @@ module rooch_framework::coin { coin_type, name, symbol, + icon_url, decimals, supply: 0u256, }; diff --git a/frameworks/rooch-framework/sources/gas_coin.move b/frameworks/rooch-framework/sources/gas_coin.move index 24131721a8..318870baf7 100644 --- a/frameworks/rooch-framework/sources/gas_coin.move +++ b/frameworks/rooch-framework/sources/gas_coin.move @@ -3,6 +3,7 @@ /// This module defines Rooch Gas Coin. module rooch_framework::gas_coin { + use std::option; use std::string; use moveos_std::signer; use moveos_std::object::{Self, Object}; @@ -14,8 +15,9 @@ module rooch_framework::gas_coin { friend rooch_framework::genesis; friend rooch_framework::transaction_validator; - //If not, we can remove `store` ability from GasCoin. - struct GasCoin has key, store {} + /// RGas is the symbol of Rooch Gas Coin + //If not, we can remove `store` ability from RGas. + struct RGas has key, store {} const DECIMALS: u8 = 8; public fun decimals() : u8 { @@ -23,39 +25,39 @@ module rooch_framework::gas_coin { } public fun balance(addr: address): u256 { - account_coin_store::balance(addr) + account_coin_store::balance(addr) } - fun borrow_mut_coin_info() : &mut Object> { - let signer = signer::module_signer(); - let coin_info_id = coin::coin_info_id(); - object::borrow_mut_object>(&signer, coin_info_id) + fun borrow_mut_coin_info() : &mut Object> { + let signer = signer::module_signer(); + let coin_info_id = coin::coin_info_id(); + object::borrow_mut_object>(&signer, coin_info_id) } - fun mint(amount: u256): Coin { + fun mint(amount: u256): Coin { let coin_info = borrow_mut_coin_info(); - coin::mint_extend(coin_info, amount) + coin::mint_extend(coin_info, amount) } #[test_only] - public fun mint_for_test(amount: u256) : Coin { + public fun mint_for_test(amount: u256) : Coin { mint(amount) } - public fun burn(coin: Coin) { + public fun burn(coin: Coin) { let coin_info = borrow_mut_coin_info(); - coin::burn_extend(coin_info, coin); + coin::burn_extend(coin_info, coin); } /// deduct gas coin from the given account. - public(friend) fun deduct_gas(addr: address, amount: u256):Coin { - account_coin_store::withdraw_extend(addr, amount) + public(friend) fun deduct_gas(addr: address, amount: u256):Coin { + account_coin_store::withdraw_extend(addr, amount) } /// Mint gas coin to the given account. public(friend) fun faucet(addr: address, amount: u256) { let coin = mint(amount); - account_coin_store::deposit_extend(addr, coin); + account_coin_store::deposit_extend(addr, coin); } #[test_only] @@ -74,9 +76,10 @@ module rooch_framework::gas_coin { /// Can only be called during genesis to initialize the Rooch coin. public(friend) fun genesis_init(_genesis_account: &signer){ - let coin_info_obj = coin::register_extend( + let coin_info_obj = coin::register_extend( string::utf8(b"Rooch Gas Coin"), - string::utf8(b"RGC"), + string::utf8(b"RGAS"), + option::none(), DECIMALS, // decimals ); object::transfer(coin_info_obj, @rooch_framework); diff --git a/frameworks/rooch-framework/sources/tests/account_coin_store_test.move b/frameworks/rooch-framework/sources/tests/account_coin_store_test.move index b7054a7522..7941f4a0cf 100644 --- a/frameworks/rooch-framework/sources/tests/account_coin_store_test.move +++ b/frameworks/rooch-framework/sources/tests/account_coin_store_test.move @@ -4,6 +4,7 @@ #[test_only] /// This test module is used to test the account_coin_store module. module rooch_framework::account_coin_store_test{ + use std::option; use std::signer; use std::string; @@ -26,6 +27,7 @@ module rooch_framework::account_coin_store_test{ coin::register_extend( string::utf8(b"Fake coin"), string::utf8(b"FCD"), + option::none(), decimals, ) } diff --git a/frameworks/rooch-framework/sources/tests/coin_store_test.move b/frameworks/rooch-framework/sources/tests/coin_store_test.move index 9e4aa4f6f4..9fd00a3ffe 100644 --- a/frameworks/rooch-framework/sources/tests/coin_store_test.move +++ b/frameworks/rooch-framework/sources/tests/coin_store_test.move @@ -4,6 +4,7 @@ #[test_only] /// This test module is used to test the coin store logic module rooch_framework::coin_store_test{ + use std::option; use std::signer; use std::string; @@ -24,6 +25,7 @@ module rooch_framework::coin_store_test{ coin::register_extend( string::utf8(b"Fake coin"), string::utf8(b"FCD"), + option::none(), decimals, ) } diff --git a/frameworks/rooch-framework/sources/tests/coin_test.move b/frameworks/rooch-framework/sources/tests/coin_test.move index c9c6cb7191..49d043c97b 100644 --- a/frameworks/rooch-framework/sources/tests/coin_test.move +++ b/frameworks/rooch-framework/sources/tests/coin_test.move @@ -4,6 +4,7 @@ #[test_only] /// This test module is used to test the coin logic in coin and account module. module rooch_framework::coin_test{ + use std::option; use std::string; use moveos_std::object::{Self, Object}; @@ -24,6 +25,7 @@ module rooch_framework::coin_test{ coin::register_extend( string::utf8(b"Fake coin"), string::utf8(b"FCD"), + option::none(), decimals, ) } @@ -38,9 +40,9 @@ module rooch_framework::coin_test{ let decimals = 9u8; let coin_info_obj = register_extend( - name, symbol, + option::none(), decimals, ); { @@ -78,17 +80,17 @@ module rooch_framework::coin_test{ rooch_framework::genesis::init_for_test(); let coin_info_obj = register_extend( - string::utf8(b"Fake coin"), string::utf8(b"FCD"), + option::none(), 9, ); object::transfer(coin_info_obj, @rooch_framework); let coin_info_obj = register_extend( - string::utf8(b"Fake coin"), string::utf8(b"FCD"), + option::none(), 9, ); object::transfer(coin_info_obj, @rooch_framework); diff --git a/frameworks/rooch-framework/sources/tests/gas_coin_test.move b/frameworks/rooch-framework/sources/tests/gas_coin_test.move index 872b01020e..2080a3e7f0 100644 --- a/frameworks/rooch-framework/sources/tests/gas_coin_test.move +++ b/frameworks/rooch-framework/sources/tests/gas_coin_test.move @@ -7,12 +7,12 @@ module rooch_framework::gas_coin_test{ use rooch_framework::account as account_entry; use rooch_framework::coin; - use rooch_framework::gas_coin::{Self, GasCoin}; + use rooch_framework::gas_coin::{Self, RGas}; #[test] fun test_gas_coin_init(){ rooch_framework::genesis::init_for_test(); - assert!(coin::is_registered(), 1000); + assert!(coin::is_registered(), 1000); } diff --git a/frameworks/rooch-framework/sources/tests/transfer_test.move b/frameworks/rooch-framework/sources/tests/transfer_test.move index a1441af1c3..799a4a2af9 100644 --- a/frameworks/rooch-framework/sources/tests/transfer_test.move +++ b/frameworks/rooch-framework/sources/tests/transfer_test.move @@ -9,7 +9,7 @@ module rooch_framework::transfer_test{ use std::option; use moveos_std::object::{Self, Object}; use rooch_framework::transfer; - use rooch_framework::gas_coin::{Self, GasCoin}; + use rooch_framework::gas_coin::{Self, RGas}; use rooch_framework::multichain_address::{Self, MultiChainAddress}; use rooch_framework::bitcoin_address; use rooch_framework::address_mapping; @@ -37,7 +37,7 @@ module rooch_framework::transfer_test{ let original_balance = gas_coin::balance(from); let amount = 11u256; - transfer::transfer_coin(&from_signer, to, amount); + transfer::transfer_coin(&from_signer, to, amount); assert!(gas_coin::balance(from) == original_balance - amount, 1001); assert!(gas_coin::balance(to) == amount, 1002); @@ -53,13 +53,13 @@ module rooch_framework::transfer_test{ let original_balance = gas_coin::balance(from); let amount = 11u256; - transfer::transfer_coin_to_multichain_address(&from_signer, multichain_address::multichain_id(&to), *multichain_address::raw_address(&to), amount); + transfer::transfer_coin_to_multichain_address(&from_signer, multichain_address::multichain_id(&to), *multichain_address::raw_address(&to), amount); assert!(gas_coin::balance(from) == original_balance - amount, 1002); assert!(gas_coin::balance(to_address) == amount, 1003); //transfer again - transfer::transfer_coin_to_multichain_address(&from_signer, multichain_address::multichain_id(&to), *multichain_address::raw_address(&to), amount); + transfer::transfer_coin_to_multichain_address(&from_signer, multichain_address::multichain_id(&to), *multichain_address::raw_address(&to), amount); assert!(gas_coin::balance(to_address) == amount*2, 1004); } @@ -78,7 +78,7 @@ module rooch_framework::transfer_test{ let to_rooch_address = bitcoin_address::to_rooch_address(&btc_address); let original_balance = gas_coin::balance(from); - transfer::transfer_coin_to_bitcoin_address(&from_signer, bitcoin_address_str, 11u256); + transfer::transfer_coin_to_bitcoin_address(&from_signer, bitcoin_address_str, 11u256); assert!(gas_coin::balance(from) == original_balance - 11u256, 1002); assert!(gas_coin::balance(to_rooch_address) == 11u256, 1003); } @@ -94,6 +94,7 @@ module rooch_framework::transfer_test{ coin::register_extend( string::utf8(b"Fake coin"), string::utf8(b"FCD"), + option::none(), decimals, ) } diff --git a/frameworks/rooch-framework/sources/transaction_fee.move b/frameworks/rooch-framework/sources/transaction_fee.move index 31d61ad130..85b567cc32 100644 --- a/frameworks/rooch-framework/sources/transaction_fee.move +++ b/frameworks/rooch-framework/sources/transaction_fee.move @@ -6,17 +6,17 @@ module rooch_framework::transaction_fee { use moveos_std::object::{Self, Object}; use rooch_framework::coin_store::{Self, CoinStore}; use rooch_framework::coin::Coin; - use rooch_framework::gas_coin::{GasCoin}; + use rooch_framework::gas_coin::{RGas}; friend rooch_framework::genesis; friend rooch_framework::transaction_validator; struct TransactionFeePool has key { - fee: Object>, + fee: Object>, } public(friend) fun genesis_init(_genesis_account: &signer) { - let fee_store = coin_store::create_coin_store(); + let fee_store = coin_store::create_coin_store(); let obj = object::new_named_object(TransactionFeePool{ fee: fee_store, }); @@ -34,17 +34,17 @@ module rooch_framework::transaction_fee { (gas_amount as u256) * (get_gas_factor() as u256) } - public(friend) fun withdraw_fee(amount: u256) : Coin { + public(friend) fun withdraw_fee(amount: u256) : Coin { let object_id = object::named_object_id(); let pool_object = object::borrow_mut_object_extend(object_id); let pool = object::borrow_mut(pool_object); - coin_store::withdraw(&mut pool.fee, amount) + coin_store::withdraw(&mut pool.fee, amount) } - public(friend) fun deposit_fee(gas_coin: Coin) { + public(friend) fun deposit_fee(gas_coin: Coin) { let object_id = object::named_object_id(); let pool_object = object::borrow_mut_object_extend(object_id); let pool = object::borrow_mut(pool_object); - coin_store::deposit(&mut pool.fee, gas_coin); + coin_store::deposit(&mut pool.fee, gas_coin); } } diff --git a/frameworks/rooch-framework/sources/transaction_validator.move b/frameworks/rooch-framework/sources/transaction_validator.move index ae81fbce60..2b3a4ac4b8 100644 --- a/frameworks/rooch-framework/sources/transaction_validator.move +++ b/frameworks/rooch-framework/sources/transaction_validator.move @@ -120,9 +120,9 @@ module rooch_framework::transaction_validator { //Auto create account if not exist if (!account::exists_at(sender)) { account_entry::create_account(sender); - //if the chain is local or dev, give the sender some RGC + //if the chain is local or dev, give the sender some RGAS if (chain_id::is_local_or_dev()) { - //10000 RGC + //10000 RGAS let init_gas = 1000_000_000_000u256; gas_coin::faucet(sender, init_gas); }; diff --git a/infra/rooch-portal-v2/src/sections/tx/view.tsx b/infra/rooch-portal-v2/src/sections/tx/view.tsx index 61dc56b80f..62b99f9124 100644 --- a/infra/rooch-portal-v2/src/sections/tx/view.tsx +++ b/infra/rooch-portal-v2/src/sections/tx/view.tsx @@ -264,7 +264,7 @@ export function TxView({ hash }: { hash: string }) { ROOCH_GAS_COIN_DECIMALS, 8 )}{' '} - RGC + RGAS )} diff --git a/moveos/moveos-types/src/move_types.rs b/moveos/moveos-types/src/move_types.rs index d3790f0596..1679082e6a 100644 --- a/moveos/moveos-types/src/move_types.rs +++ b/moveos/moveos-types/src/move_types.rs @@ -332,7 +332,7 @@ mod tests { ) .is_err()); assert!(parse_type_tag( - "0x900f053234b0ba66ad062b277896b28e049f2813d388da375efcd54b6e429dbe::coin::Coin<0000000000000000000000000000000000000000000000000000000000000003::gas_coin::GasCoin>" + "0x900f053234b0ba66ad062b277896b28e049f2813d388da375efcd54b6e429dbe::coin::Coin<0000000000000000000000000000000000000000000000000000000000000003::gas_coin::RGas>" ) .is_err()); } @@ -377,7 +377,7 @@ mod tests { assert_eq!(multi_generic.type_params.len(), 2); // nested generic - let nested_generic = parse_struct_tag("0x0000000000000000000000000000000000000000000000000000000000000001::complex::Type>>").unwrap(); + let nested_generic = parse_struct_tag("0x0000000000000000000000000000000000000000000000000000000000000001::complex::Type>>").unwrap(); assert_eq!( nested_generic.address, AccountAddress::from_hex_literal("0x1").unwrap() @@ -393,9 +393,9 @@ mod tests { assert_eq!(coin_struct.type_params.len(), 1); if let TypeTag::Struct(gas_coin_struct) = &coin_struct.type_params[0] { assert_eq!(gas_coin_struct.module.as_str(), "gas_coin"); - assert_eq!(gas_coin_struct.name.as_str(), "GasCoin"); + assert_eq!(gas_coin_struct.name.as_str(), "RGas"); } else { - panic!("Expected Struct TypeTag for GasCoin"); + panic!("Expected Struct TypeTag for RGas"); } } else { panic!("Expected Struct TypeTag for Coin"); diff --git a/moveos/moveos-types/src/moveos_std/object.rs b/moveos/moveos-types/src/moveos_std/object.rs index 4ca8d41a3b..f80cb8f31f 100644 --- a/moveos/moveos-types/src/moveos_std/object.rs +++ b/moveos/moveos-types/src/moveos_std/object.rs @@ -1101,14 +1101,14 @@ mod tests { type_params: vec![TypeTag::Struct(Box::new(StructTag { address: AccountAddress::from_str("0x3").unwrap(), module: ident_str!("gas_coin").to_owned(), - name: ident_str!("GasCoin").to_owned(), + name: ident_str!("RGas").to_owned(), type_params: vec![], }))], }; let coin_store_object_id = account_named_object_id(account, &struct_tag); //The object id generated by crates/rooch-framework-tests/tests/cases/coin_store/coin_store.move let object_id = ObjectID::from_str( - "0x5f065f9c2b57613760fc9065bf00f597d7273697699634c16eb3793ef741eec7", + "0x562409111a2ca55814e56eb42186470c4adda4a04a4a84140690f4d68e8e1c06", ) .unwrap(); assert_eq!(coin_store_object_id, object_id,); diff --git a/sdk/typescript/rooch-sdk/src/bcs/serializer.test.ts b/sdk/typescript/rooch-sdk/src/bcs/serializer.test.ts index 9f8665aae2..4793707666 100644 --- a/sdk/typescript/rooch-sdk/src/bcs/serializer.test.ts +++ b/sdk/typescript/rooch-sdk/src/bcs/serializer.test.ts @@ -96,13 +96,13 @@ describe('Serializer', () => { Struct: { address: '0x3', module: 'gas_coin', - name: 'GasCoin', + name: 'RGas', typeParams: [], }, }, ], } - const expectObjectID = '0xfcdeeab90012518f19a6879b1435d0294be6e911791fa618520d1a4d00757d84' + const expectObjectID = '0xfdda11f9cc18bb30973779eb3610329d7e0e3c6ecce05b4d77b5a839063bff66' const resultObjectID = Serializer.structTagToObjectID(testData) expect(resultObjectID).toBe(expectObjectID) }) diff --git a/sdk/typescript/rooch-sdk/test-e2e/case/coin.test.ts b/sdk/typescript/rooch-sdk/test-e2e/case/coin.test.ts index 0a8676c742..59e4c9c964 100644 --- a/sdk/typescript/rooch-sdk/test-e2e/case/coin.test.ts +++ b/sdk/typescript/rooch-sdk/test-e2e/case/coin.test.ts @@ -63,7 +63,7 @@ describe('Checkpoints Coin API', () => { it('Transfer gas coin should be success', async () => { const amount = BigInt(10000000) - const coinType = '0x3::gas_coin::GasCoin' + const coinType = '0x3::gas_coin::RGas' const [sender, recipient] = [testBox.keypair, Secp256k1Keypair.generate()] // get gas diff --git a/sdk/typescript/rooch-sdk/test-e2e/case/transfer.test.ts b/sdk/typescript/rooch-sdk/test-e2e/case/transfer.test.ts index 5668746b44..26d3b1eb11 100644 --- a/sdk/typescript/rooch-sdk/test-e2e/case/transfer.test.ts +++ b/sdk/typescript/rooch-sdk/test-e2e/case/transfer.test.ts @@ -20,7 +20,7 @@ describe('Checkpoints Transfer API', () => { it('Transfer gas coin should be success', async () => { const amount = BigInt(10000000) - const coinType = '0x3::gas_coin::GasCoin' + const coinType = '0x3::gas_coin::RGas' const [sender, recipient] = [testBox.keypair, Secp256k1Keypair.generate()] // get gas