System Accounts & Blocked Addresses
Special-purpose accounts that manage network funds and core protocol functions, which are restricted from normal user interactions.
The Maroo network utilizes several system accounts, known as module accounts, to programmatically manage tokens for core functionalities like staking rewards, fee collection, and governance. These accounts do not have private keys and are controlled solely by their respective module's logic. To ensure protocol stability and security, these module accounts, along with Ethereum precompile addresses, are designated as 'blocked addresses', preventing them from receiving direct token transfers from users.
Module Account Permissions
Each module account has specific permissions that define its capabilities. These are defined in
config/marood_config.go. Key examples include:mintmodule: Hasminterpermission to create newaokrwtokens for block rewards.stakingmodule pools: Haveburnerandstakingpermissions to manage the lifecycle of bondedamarootokens.govmodule: Hasburnerpermission to destroy tokens from deposits of failed governance proposals.erc20module: Hasminterandburnerpermissions to lock Cosmos-native tokens and mint their ERC20 representations, and vice-versa.
Blocked Address List
The
1. All Module Accounts: The addresses derived from the names of all registered modules (e.g.,
2. Ethereum Native Precompiles: The first set of addresses (e.g.,
3. Maroo Static Precompiles: The addresses for Maroo's custom precompiles (PCL, Identity, etc.) and other available precompiles from the Cosmos EVM.
BlockedAddresses function generates a comprehensive map of addresses that cannot be the recipient of a standard bank.Send transaction. This list is crucial for preventing accidental loss of funds and exploits. It includes:1. All Module Accounts: The addresses derived from the names of all registered modules (e.g.,
auth, gov, staking, evm).2. Ethereum Native Precompiles: The first set of addresses (e.g.,
0x00...01 to 0x00...09) reserved by Ethereum for cryptographic functions.3. Maroo Static Precompiles: The addresses for Maroo's custom precompiles (PCL, Identity, etc.) and other available precompiles from the Cosmos EVM.
Developer Implications
When developing smart contracts or applications on Maroo, it's important to be aware of this list. Attempting to send tokens directly to a blocked address using a standard transfer function will result in a failed transaction. Interactions with these systems must be done through the proper channels, such as staking via the staking module's messages or interacting with precompiles through contract calls, not direct transfers.