Skip to content

module account

Some modules have their own module accounts. Think of it as a wallet that can only be controlled by this module. Below is a table of modules, their respective wallet addresses and permissions:

List of module accounts

Name Address Permissions
claims dst15cvq3ljql6utxseh0zau9m8ve2j8erz89m5wkz none
erc20 dst1glht96kr2rseywuvhhay894qw7ekuc4qg9z5nw minter burner
fee_collector dst17xpfvakm2amg962yls6f84z3kell8c5ljcjw34 none
incentives dst1krxwf5e308jmclyhfd9u92kp369l083wn67k4q minter burner
inflation dst1d4e35hk3gk4k6t5gh02dcm923z8ck86qygxf38 minter
transfer dst1yl6hdjhmkf37639730gffanpzndzdpmhv788dt minter burner
bonded_tokens_pool dst1fl48vsnmsdzcv85q5d2q4z5ajdha8yu3h6cprl burner staking
not_bonded_tokens_pool dst1tygms3xhhs3yv487phx3dw4a95jn7t7lr6ys4t burner staking
gov dst10d07y265gmmuvt4z0w9aw880jnsr700jcrztvm burner
distribution dst1jv65s3grqf6v6jl3dp4t6c9t9rk99cd8974jnh] none
evm dst1vqu8rska6swzdmnhf90zuv0xmelej4lq0n56wq minter burner
ibc dst1a53udazy8ayufvy0s434pfwjcedzqv345dnt3x minter burner
chat dst1x8sx7lvfl6ue5rnvptl7rxr53samt0h4zxqkwg minter burner
chat_burn dst1g7z9fjg8zyrj68a6rtqkfgldvjjjc3n7sucath burner
gateway dst1f6j7u6875p2cvyrgjr0d2uecyzah0kgexwhr3g none
pledge dst1nhta6gsf9x9l2pd2m5qg6lya0h3m0pjy4vtd35 minter burner
contract dst1ejpjr43ht3y56pplm5pxpusmcrk9rkkvevc88d none
stakeContractDeploy dst16vxjegtg3k5fvqcc55yd6cele9hx0nhv3lxzf0 none
tokenFactoryContractDeploy dst10dkh3rvhgcj2vj4h36msncnkr5ps668x9uuva0 none

Account Permissions

  • burner authority means that the account has the authority to burn or burn tokens.
  • The minter permission indicates that this account has permission to mint or create new tokens.
  • The staking permission means that the account has the right to stake tokens on behalf of its owner.

IBC module account

Additionally, there are module accounts associated with IBC transfers. For each IBC connection, there is an account of type ModuleAccount, which is used to host the transferred coins when Daodst is the source chain. Their address is derived using the first 20 bytes of the SHA256 checksum of the account name, following ADR 028:

// accountName is composed by the current version the IBC tranfer module supports (in this case, ics20-1), the portID (transfer) and the channelID
accountName := Version + "\0" + portID + "/" + channelID
addr := sha256.Sum256(accountName)[:20]

// example for channel-0
addr := sha256.Sum256("ics20-1\0transfer/channel-0")[:20]

This can be done using the GetEscrowAccount function on IBC-go.

📣 Tip : These hosting accounts are not listed when executing the query:

stcd q auth module-accounts

This happens because the GetModuleAccount function used in the query only Consider accounts on permAddrs map of AccountKeeper.

This address mapping is set at compile time and cannot be changed at runtime.