CrossFi Transaction Messages Reference
This comprehensive guide describes all possible fields for transaction messages supported by CrossFi Chain. The platform integrates multiple modules from Cosmos SDK, Ethermint, and CrossFi-specific implementations.
Overview
CrossFi Chain supports multiple transaction message types across different modules:
- Cosmos Base: Fundamental coin operations
- Cosmos SDK Modules: Authz, Bank, Distribution, Gov, Feegrant, Staking, Slashing, Vesting
- Ethermint EVM: Ethereum-compatible transactions
- CrossFi Modules: Native CrossFi functionality
Total message types covered: 35+
Each message type includes:
- Complete parameter descriptions
- Field types and constraints
- Usage examples
- Failure conditions
Table of Contents
🏦 Core Modules
🏛️ Governance & Staking
🌐 Advanced Features
Cosmos Base
cosmos.base.v1beta1.Coin
The fundamental coin structure used across all modules for representing token amounts.
Parameter | Type | Description |
---|---|---|
denom | string | Token denomination (e.g., mpx , xfi ). Must match registered denominations. |
amount | string | Token amount as string representing integer (e.g., 1000000 ). Must be non-negative. |
Usage Context:
- Used in
MsgSend
,MsgMultiSend
for transfers - Used in
MsgDeposit
for governance deposits - Used in staking operations for delegation amounts
Example:
{
"denom": "mpx",
"amount": "1000000"
}
Authz Module
Authorization module allows one account (granter) to authorize another account (grantee) to execute certain actions on their behalf.
cosmos.authz.v1beta1.MsgGrant
Grants authorization from granter to grantee for specific message types.
Parameter | Type | Description |
---|---|---|
granter | string | Address of the account granting permission (e.g., mx1x7... ). |
grantee | string | Address of the account receiving permission (e.g., mx1y2... ). |
grant | cosmos.authz.v1beta1.Grant | Grant object containing authorization details and expiration. |
Grant Structure:
Parameter | Type | Description |
---|---|---|
authorization | google.protobuf.Any | Authorization type (GenericAuthorization, SendAuthorization, etc.). |
expiration | google.protobuf.Timestamp | Optional expiration time in UTC format (e.g., 2025-12-31T23:59:59Z ). |
Authorization Types:
-
GenericAuthorization
- Provides unlimited permission for specified message type
- msg: string - Full message type URL (e.g.,
/cosmos.bank.v1beta1.MsgSend
)
-
SendAuthorization
- Allows grantee to send coins with spending limits
- spend_limit: repeated Coin - Maximum coins that can be sent
- allow_list: repeated string - Optional list of allowed recipient addresses
-
StakeAuthorization
- Permits staking operations with validator restrictions
- validators: repeated string - List of validator addresses
- authorization_type: AuthorizationType - Type of staking action (DELEGATE, UNDELEGATE, REDELEGATE)
cosmos.authz.v1beta1.MsgRevoke
Revokes previously granted authorization for specific message type.
Parameter | Type | Description |
---|---|---|
granter | string | Address of account revoking permission. |
grantee | string | Address of account losing permission. |
msg_type_url | string | Message type URL to revoke (e.g., /cosmos.bank.v1beta1.MsgSend ). |
cosmos.authz.v1beta1.MsgExec
Executes messages on behalf of granter using granted authorizations.
Parameter | Type | Description |
---|---|---|
grantee | string | Address of account executing messages. |
msgs | repeated google.protobuf.Any | List of messages to execute (e.g., MsgSend ). |
Bank Module
The bank module handles token transfers and balance management.
cosmos.bank.v1beta1.MsgSend
Transfers coins from one address to another.
Parameter | Type | Description |
---|---|---|
from_address | string (cosmos.AddressString) | Sender address (e.g., mx1x7... ). |
to_address | string (cosmos.AddressString) | Recipient address (e.g., mx1y2... ). |
amount | repeated cosmos.base.v1beta1.Coin | Coins to transfer. Cannot be null. |
Example:
{
"from_address": "mx1x7...sender",
"to_address": "mx1y2...recipient",
"amount": [{"denom": "mpx", "amount": "1000000"}]
}
Failure Conditions:
- Insufficient balance in sender account
- Recipient address is blacklisted
- Invalid coin denomination
cosmos.bank.v1beta1.MsgMultiSend
Sends coins from one or multiple inputs to multiple outputs.
Parameter | Type | Description |
---|---|---|
inputs | repeated Input | Input sources. Cannot be null. |
outputs | repeated Output | Output destinations. |
Input Structure:
Parameter | Type | Description |
---|---|---|
address | string | Sender address. |
coins | repeated cosmos.base.v1beta1.Coin | Coins to send. |
Output Structure:
Parameter | Type | Description |
---|---|---|
address | string | Recipient address. |
coins | repeated cosmos.base.v1beta1.Coin | Coins to receive. |
Example:
{
"inputs": [
{
"address": "mx1x7...sender",
"coins": [{"denom": "mpx", "amount": "2000000"}]
}
],
"outputs": [
{
"address": "mx1y2...recipient1",
"coins": [{"denom": "mpx", "amount": "1000000"}]
},
{
"address": "mx1z3...recipient2",
"coins": [{"denom": "mpx", "amount": "1000000"}]
}
]
}
Distribution Module
Manages reward distribution between validators and delegators.
cosmos.distribution.v1beta1.MsgFundCommunityPool
Funds the community pool directly from an account.
Parameter | Type | Description |
---|---|---|
amount | repeated cosmos.base.v1beta1.Coin | Coins to transfer to community pool. |
depositor | string | Bech32 address funding the pool (e.g., mx1x7... ). |
cosmos.distribution.v1beta1.MsgSetWithdrawAddress
Sets a different address for reward withdrawals.
Parameter | Type | Description |
---|---|---|
delegator_address | string | Bech32 address of delegator setting withdraw address. |
withdraw_address | string | Bech32 address where rewards will be sent. Cannot be module address. |
cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward
Withdraws accumulated rewards from a specific validator.
Parameter | Type | Description |
---|---|---|
delegator_address | string | Bech32 address of delegator withdrawing rewards. |
validator_address | string | Bech32 address of validator (e.g., mxvaloper1z3... ). |
cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission
Allows validator to withdraw accumulated commission.
Parameter | Type | Description |
---|---|---|
validator_address | string | Bech32 address of validator (e.g., mxvaloper1z3... ). |
Gov Module
Governance module enables on-chain proposals and voting.
cosmos.gov.v1.MsgDeposit
Deposits coins into a proposal to help it reach voting period.
Parameter | Type | Description |
---|---|---|
proposal_id | uint64 | Unique proposal identifier. |
depositor | string | Bech32 address making deposit (e.g., mx1x7... ). |
amount | repeated Coin | Deposit amount. |
cosmos.gov.v1.MsgSubmitProposal
Creates a new governance proposal.
Parameter | Type | Description |
---|---|---|
messages | repeated Any | Messages to execute if proposal passes. |
initial_deposit | repeated Coin | Initial deposit for proposal. |
proposer | string | Bech32 address of proposer (e.g., mx1x7... ). |
metadata | string | Optional metadata for proposal. |
title | string | Proposal title. |
summary | string | Brief proposal description. |
cosmos.gov.v1.MsgVote
Casts a vote on a proposal.
Parameter | Type | Description |
---|---|---|
proposal_id | uint64 | Proposal identifier. |
voter | string | Bech32 address of voter (e.g., mx1x7... ). |
option | VoteOption | Vote choice: YES , ABSTAIN , NO , NO_WITH_VETO . |
metadata | string | Optional vote metadata. |
cosmos.gov.v1.MsgVoteWeighted
Casts weighted votes across multiple options.
Parameter | Type | Description |
---|---|---|
proposal_id | uint64 | Proposal identifier. |
voter | string | Bech32 address of voter. |
options | repeated WeightedVoteOption | Vote options with weights. |
metadata | string | Optional metadata. |
WeightedVoteOption:
Parameter | Type | Description |
---|---|---|
option | VoteOption | Vote choice. |
weight | string | Vote weight as decimal (e.g., "0.5"). Sum must equal 1. |
Feegrant Module
Allows accounts to pay transaction fees on behalf of others.
cosmos.feegrant.v1beta1.MsgGrantAllowance
Grants fee allowance from granter to grantee.
Parameter | Type | Description |
---|---|---|
granter | string | Address providing fee allowance (e.g., mx1x7... ). |
grantee | string | Address receiving fee allowance (e.g., mx1y2... ). |
allowance | google.protobuf.Any | Fee allowance type (BasicAllowance, PeriodicAllowance). |
Allowance Types:
-
BasicAllowance - Simple spending limit allowance:
- spend_limit: repeated Coin - Maximum fee amount
- expiration: Timestamp - Optional expiration time
-
PeriodicAllowance - Allowance that resets periodically:
- basic: BasicAllowance - Base allowance
- period: Duration - Reset period
- period_spend_limit: repeated Coin - Per-period limit
cosmos.feegrant.v1beta1.MsgRevokeAllowance
Revokes previously granted fee allowance.
Parameter | Type | Description |
---|---|---|
granter | string | Address revoking allowance (e.g., mx1x7... ). |
grantee | string | Address losing allowance (e.g., mx1y2... ). |
Staking Module
Implements Proof-of-Stake consensus mechanism.
cosmos.staking.v1beta1.MsgBeginRedelegate
Redelegates tokens from one validator to another.
Parameter | Type | Description |
---|---|---|
delegator_address | string | Delegator address (e.g., mx1x7... ). |
validator_src_address | string | Source validator (e.g., mxvaloper1y2... ). |
validator_dst_address | string | Destination validator (e.g., mxvaloper1z3... ). |
amount | cosmos.base.v1beta1.Coin | Amount to redelegate. |
cosmos.staking.v1beta1.MsgCreateValidator
Creates a new validator.
Parameter | Type | Description |
---|---|---|
description | cosmos.staking.v1beta1.Description | Validator description. |
commission | cosmos.staking.v1beta1.CommissionRates | Commission rates. |
min_self_delegation | string | Minimum self-delegation in mpx . |
delegator_address | string | Delegator creating validator (e.g., mx1x7... ). |
validator_address | string | Validator address (e.g., mxvaloper1y2... ). |
pubkey | google.protobuf.Any | Validator public key. |
value | cosmos.base.v1beta1.Coin | Initial stake amount. |
Description Structure:
Parameter | Type | Description |
---|---|---|
moniker | string | Validator name. |
identity | string | Optional identity (e.g., Keybase ID). |
website | string | Validator website. |
security_contact | string | Security contact email. |
details | string | Additional validator details. |
CommissionRates Structure:
Parameter | Type | Description |
---|---|---|
rate | string | Current commission rate (e.g., "0.1" for 10%). |
max_rate | string | Maximum commission rate (e.g., "0.2"). |
max_change_rate | string | Maximum daily commission change (e.g., "0.01"). |
cosmos.staking.v1beta1.MsgDelegate
Delegates tokens to a validator.
Parameter | Type | Description |
---|---|---|
delegator_address | string | Delegator address (e.g., mx1x7... ). |
validator_address | string | Validator address (e.g., mxvaloper1y2... ). |
amount | cosmos.base.v1beta1.Coin | Amount to delegate. |
cosmos.staking.v1beta1.MsgEditValidator
Updates validator description and commission.
Parameter | Type | Description |
---|---|---|
description | cosmos.staking.v1beta1.Description | Updated validator description. |
validator_address | string | Validator address (e.g., mxvaloper1y2... ). |
commission_rate | string | New commission rate (optional). |
min_self_delegation | string | New minimum self-delegation (optional). |
cosmos.staking.v1beta1.MsgUndelegate
Undelegates tokens from a validator.
Parameter | Type | Description |
---|---|---|
delegator_address | string | Delegator address (e.g., mx1x7... ). |
validator_address | string | Validator address (e.g., mxvaloper1y2... ). |
amount | cosmos.base.v1beta1.Coin | Amount to undelegate. |
Slashing Module
cosmos.slashing.v1beta1.MsgUnjail
Unjails a previously jailed validator.
Parameter | Type | Description |
---|---|---|
validator_addr | string | Validator address to unjail. |
Requirements:
- Validator must exist and be jailed
- Jail period must have expired
- Validator must have self-delegation > 0
- Validator must not be tombstoned