Referência de Mensagens de Transação CrossFi
Este guia abrangente descreve todos os campos possíveis para mensagens de transação suportadas pela CrossFi Chain. A plataforma integra vários módulos do Cosmos SDK, Ethermint e implementações CrossFi específicas.
Visão geral
CrossFi Chain suporta vários tipos de mensagens de transação em diferentes módulos:
- Cosmos Base: Operações fundamentais de moedas
- Cosmos SDK Modules: Authz, Bank, Distribution, Gov, Feegrant, Staking, Slashing, Vesting
- Ethermint EVM: Transações compatíveis com Ethereum
- CrossFi Modules: Funcionalidade nativa CrossFi
Total de tipos de mensagens cobertos: 35+
Cada tipo de mensagem inclui:
- Descrições completas de parâmetros
- Tipos de campo e restrições
- Exemplos de uso
- Condições de falha
Sumário
🏦 Módulos Principais
🏛️ Governança e Staking
🌐 Funcionalidades Avançadas
Cosmos Base
Cosmos Base
A estrutura fundamental de moeda usada em todos os módulos para representar quantias de tokens.
| Parâmetro | Tipo | Descrição |
|---|---|---|
denom | string | Denominação de token (por exemplo, mpx, xfi). Deve corresponder às denominações cadastradas. |
amount | string | Quantidade do token como string representando um inteiro (por exemplo, 1000000). Deve ser não-negativa. |
Uso:**
- Usado em
MsgSend,MsgMultiSendpara transferências - Usado em
MsgDepositpara depósitos de governança - Usado em operações de staking para montantes de delegação
Exemplo:
{
"denom": "mpx",
"amount": "1000000"
}
Módulo Authz
O módulo de autorização permite que uma conta (grantor) autorize outra conta (grantee) a executar certas ações em seu nome.
cosmos.authz.v1beta1.MsgGrant
Concede autorização do grantor ao grantee para tipos específicos de mensagens.
| Parâmetro | Tipo | Descrição |
|---|---|---|
granter | string | Endereço da conta que concede permissão (p.ex., mx1x7...). |
grantee | string | Endereço da conta recebendo permissão (p.ex., mx1y2...). |
grant | cosmos.authz.v1beta1.Grant | Objeto de concessão contendo detalhes de autorização e expiração. |
Grant Structure:
| Parâmetro | Tipo | Descrição |
|---|---|---|
authorization | google.protobuf.Any | Tipo de autorização (GenericAuthorization, SendAuthorization, etc.). |
expiration | google.protobuf.Timestamp | Horário de expiração opcional em formato UTC (ex., 2025-12-31T23:59:59Z). |
Authorization Types:
-
Autorização Genérica
- Proporciona permissão ilimitada para o tipo de mensagem especificado
- msg: string - URL completo do tipo de mensagem (ex.:
/cosmos.bank.v1beta1.MsgSend)
-
SendAuthorization
- Permite que o grantee envie moedas com limites de gasto
- spend_limit: repetido Coin - Máximo de moedas que podem ser enviadas
- allow_list: repetida string - Lista opcional de endereços de destinatários permitidos
-
StakeAuthorization
- Permite operações de staking com restrições de validadores
- validators: repetida string - Lista de endereços de validadores
- authorization_type: AuthorizationType - Tipo de ação de staking (DELEGATE, UNDELEGATE, REDELEGATE)
cosmos.authz.v1beta1.MsgRevoke
Revoga autorização previamente concedida para tipo de mensagem específico.
| Parâmetro | Tipo | Descrição |
|---|---|---|
granter | string | Endereço da conta que revoga permissão. |
grantee | string | Endereço da conta perdendo permissão. |
msg_type_url | string | URL do tipo de mensagem a revogar (ex., /cosmos.bank.v1beta1.MsgSend). |
cosmos.authz.v1beta1.MsgExec
Executa mensagens em nome do grantor usando autorizações concedidas.
| Parâmetro | Tipo | Descrição |
|---|---|---|
grantee | string | Endereço da conta que executa as mensagens. |
msgs | repeated google.protobuf.Any | Lista de mensagens a executar (ex., MsgSend). |
Módulo Bancário
O módulo Bancário lida com transferências de tokens e gerenciamento de saldos.
cosmos.bank.v1beta1.MsgSend
Transfere moedas de um endereço para outro.
| Parâmetro | Tipo | Descrição |
|---|---|---|
from_address | string (cosmos.AddressString) | Endereço remetente (p.ex., mx1x7...). |
to_address | string (cosmos.AddressString) | Endereço do destinatário (p.ex., mx1y2...). |
amount | repeated cosmos.base.v1beta1.Coin | Moedas a transferir. Não pode ser nulo. |
Exemplo:
{
"from_address": "mx1x7...sender",
"to_address": "mx1y2...recipient",
"amount": [{"denom": "mpx", "amount": "1000000"}]
}
Condições de Falha:
- Saldo insuficiente na conta do remetente
- Endereço do destinatário está na lista negra
- Denominação de moeda inválida
cosmos.bank.v1beta1.MsgMultiSend
Envia moedas de uma ou mais entradas para várias saídas.
| Parâmetro | Tipo | Descrição |
|---|---|---|
inputs | entrada repetida | Fontes de entrada. Não podem ser nulos. |
outputs | Saídas repetidas | Destinos de saída. |
Estrutura de Entrada:
| Parâmetro | Tipo | Descrição |
|---|---|---|
address | string | Endereço do remetente. |
coins | repeated cosmos.base.v1beta1.Coin | Moedas a enviar. |
Estrutura de Saída:
| Parâmetro | Tipo | Descrição |
|---|---|---|
address | string | Endereço do destinatário. |
coins | repeated cosmos.base.v1beta1.Coin | Moedas a receber. |
Exemplo:
{
"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"}]
}
]
}
Módulo Distribuição
Gerencia a distribuição de recompensas entre validadores e delegadores.
cosmos.distribution.v1beta1.MsgFundCommunityPool
Financia o pool comunitário diretamente a partir de uma conta.
| Parâmetro | Tipo | Descrição |
|---|---|---|
amount | repeated cosmos.base.v1beta1.Coin | Moedas a transferir para o pool comunitário. |
depositor | string | Endereço Bech32 que financia o pool (p.ex., mx1x7...). |
cosmos.distribution.v1beta1.MsgSetWithdrawAddress
Define um endereço diferente para saques de recompensas.
| Parâmetro | Tipo | Descrição |
|---|---|---|
delegator_address | string | Endereço Bech32 do delegador definindo o endereço de retirada. |
withdraw_address | string | Endereço Bech32 para onde as recompensas serão enviadas. Não pode ser endereço de módulo. |
cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward
Retira as recompensas acumuladas de um validador específico.
| Parâmetro | Tipo | Descrição |
|---|---|---|
delegator_address | string | Endereço Bech32 do delegador que está retirando recompensas. |
validator_address | string | Endereço Bech32 do validador (ex., mxvaloper1z3...). |
cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission
Permite ao validador sacar a comissão acumulada.
| Parâmetro | Tipo | Descrição |
|---|---|---|
validator_address | string | Endereço Bech32 do validador (ex., mxvaloper1z3...). |
Módulo de Governança
O módulo de governança permite propostas e votações on-chain.
cosmos.gov.v1.MsgDeposit
Deposita moedas em uma proposta para ajudá-la a alcançar o período de votação.
| Parâmetro | Tipo | Descrição |
|---|---|---|
proposal_id | uint64 | Identificador único da proposta. |
depositor | string | Endereço Bech32 que faz o depósito (p.ex., mx1x7...). |
amount | repeated Coin | Depósito |
cosmos.gov.v1.MsgSubmitProposal
Cria uma nova proposta de governança.
| Parâmetro | Tipo | Descrição |
|---|---|---|
messages | repeated Any | Mensagens a serem executadas se a proposta for aprovada. |
initial_deposit | repeated Coin | Depósito inicial para a proposta. |
proposer | string | Endereço Bech32 do proponente (p.ex., mx1x7...). |
metadata | string | Metadados opcionais para a proposta. |
title | string | Título da proposta. |
summary | string | Descrição breve da proposta. |
cosmos.gov.v1.MsgVote
Vota em uma proposta.
| Parâmetro | Tipo | Descrição |
|---|---|---|
proposal_id | uint64 | Identificador da proposta. |
voter | string | Endereço Bech32 do votante (ex., mx1x7...). |
option | Opção de Voto | Escolha de voto: YES, ABSTAIN, NO, NO_WITH_VETO. |
metadata | string | Metadados opcionais de voto. |
cosmos.gov.v1.MsgVoteWeighted
Vota com peso entre várias opções.
| Parâmetro | Tipo | Descrição |
|---|---|---|
proposal_id | uint64 | Identificador da proposta. |
voter | string | Endereço Bech32 do votante. |
options | repeated WeightedVoteOption | Opções de voto com pesos. |
metadata | string | Metadados opcionais. |
WeightedVoteOption:
| Parâmetro | Tipo | Descrição |
|---|---|---|
option | VoteOption | Opção de voto. |
weight | string | Peso do voto como decimal (ex., "0.5"). A soma deve ser 1. |
Módulo Feegrant
Permite que contas paguem taxas de transação em nome de terceiros.
cosmos.feegrant.v1beta1.MsgGrantAllowance
Concede autorização de cobrança de taxas do grantor ao grantee.
| Parâmetro | Descrição | granter |
|---|---|---|
Endereço fornecendo autorização de taxas (por exemplo, mx1x7...). | expiration: Timestamp - Tempo de expiração opcional | Endereço fornecendo permissão de taxa (por exemplo, mx1x7...). |
| period: Duração - Período de redefinição | period_spend_limit: repetido Coin - Limite por período | cosmos.feegrant.v1beta1.MsgRevokeAllowance |
| Revoga a autorização de taxas concedida anteriormente. | Parâmetro | Descrição |
string
-
grantee- Endereço perdendo autorização (p.ex.,
mx1y2...). msg_type_url
- Endereço perdendo autorização (p.ex.,
-
URL do tipo de mensagem a revogar (ex.,
/cosmos.bank.v1beta1.MsgSend).- Executa mensagens em nome do grantor usando autorizações concedidas.
- Tipo
grantee
Endereço de conta executando mensagens.
repeated google.protobuf.Any
| Módulo Bank | cosmos.bank.v1beta1.MsgSend | string (cosmos.AddressString) |
|---|---|---|
Endereço remetente (p.ex., mx1x7...). | Endereço do destinatário (p.ex., mx1y2...). | repeated cosmos.base.v1beta1.Coin |
| Exemplo: | Condições de Falha: | Saldo insuficiente na conta do remetente |
Módulo Bancário
cosmos.bank.v1beta1.MsgSend
Parâmetro
Tipo
| Descrição | delegator_address | string |
|---|---|---|
Delegator address (p.ex., mx1x7...). | validator_src_address | string |
Origem do validador (p.ex., mxvaloper1y2...). | string | Destino do validador (p.ex., mxvaloper1z3...). |
amount | Quantidade a redelegar. | Cria um novo validador. |
| Tipo | description | Descrição do validador. |
commission
Taxas de comissão.
| string | string | Delegador criando validador (p.ex., mx1x7...). |
|---|---|---|
| string | pubkey | Chave pública do validador. |
value | cosmos.base.v1beta1.Coin | Description Structure: |
min_self_delegation | string | Autodelegação mínima em mpx. |
delegator_address | string | Delegador criando validador (por exemplo, mx1x7...). |
validator_address | string | Endereço do validador (por exemplo, mxvaloper1y2...). |
pubkey | google.protobuf.Any | Chave pública do validador. |
value | cosmos.base.v1beta1.Coin | Montante inicial de stake. |
Estrutura de Descrição:
| Parâmetro | Tipo | Descrição |
|---|---|---|
moniker | string | Nome do validador. |
identity | string | Identidade opcional (por exemplo, ID Keybase). |
website | string | Site do validador. |
security_contact | string | Email de contato de segurança. |
details | string | Detalhes adicionais do validador. |
Estrutura de Taxas de Comissão (CommissionRates Structure):
| Parâmetro | Tipo | Descrição |
|---|---|---|
rate | string | Taxa de comissão atual (ex., "0.1" para 10%). |
max_rate | string | Taxa máxima de comissão (ex., "0.2"). |
max_change_rate | string | Variação diária máxima de comissão (ex., "0.01"). |
cosmos.staking.v1beta1.MsgDelegate
Delegates tokens to a validator.
| Parâmetro | Tipo | Descrição |
|---|---|---|
delegator_address | string | Endereço do delegador (p.ex., mx1x7...). |
validator_address | string | Endereço do validador (p.ex., mxvaloper1y2...). |
amount | cosmos.base.v1beta1.Coin | Quantidade a delegar. |
cosmos.staking.v1beta1.MsgEditValidator
Atualiza a descrição e a comissão do validador.
| Parâmetro | Tipo | Descrição |
|---|---|---|
description | cosmos.staking.v1beta1.Description | Descrição do validador atualizada. |
validator_address | string | Endereço do validador (p.ex., mxvaloper1y2...). |
commission_rate | string | Nova taxa de comissão (opcional). |
min_self_delegation | string | Nova auto-delegação mínima (opcional). |
cosmos.staking.v1beta1.MsgUndelegate
Desdelegar tokens de um validador.
| Parâmetro | Tipo | Descrição |
|---|---|---|
delegator_address | string | Endereço do delegador (p.ex., mx1x7...). |
validator_address | string | Endereço do validador (p.ex., mxvaloper1y2...). |
amount | cosmos.base.v1beta1.Coin | Quantidade a desdelegar. |
Módulo Slashing
cosmos.slashing.v1beta1.MsgUnjail
Libera um validador previamente aprisionado.
| Parâmetro | Tipo | Descrição |
|---|---|---|
validator_addr | string | Endereço do validador a ser desencarcerado. |
Requisitos:
- O validador deve existir e estar aprisionado
- O período de aprisionamento já expirou
- O validador precisa ter auto-delegação > 0
- O validador não pode estar tombstoned
Módulo Vesting
cosmos.vesting.v1beta1.MsgCreateVestingAccount
Cria uma conta com vesting com tokens bloqueados.
| Parâmetro | Tipo | Descrição |
|---|---|---|
from_address | string | Endereço que cria a conta de vesting. |
to_address | string | Novo endereço de conta de vesting (não inicializado). |
amount | repeated cosmos.base.v1beta1.Coin | Tokens a vestir. |
end_time | int64 | Carimbo de tempo UNIX de término do vesting. |
delayed | bool | true=vesting atrasado, false=contínuo. |
Tipos de Vesting:
-
Vesting Atrasado - Todos os tokens desbloqueiam de uma vez quando
end_timeé atingido:- Tokens permanecem totalmente bloqueados até o fim do tempo
- Adequado para cenários de vesting em cliff
- Mecanismo simples de desbloqueio
-
Vesting Contínuo - Tokens desbloqueados de forma linear desde o tempo de criação até o
end_time:- Liberação gradual de tokens ao longo do tempo
- Desbloqueio proporcional
- Adequado para vesting de funcionários
Módulo Ethermint EVM
Camada de compatibilidade com Ethereum Virtual Machine.
ethermint.evm.v1.MsgEthereumTx
Envolve transação Ethereum para execução no Cosmos.
| Parâmetro | Tipo | Descrição |
|---|---|---|
data | google.protobuf.Any | Dados da transação (LegacyTx, AcessoListTx, DynamicFeeTx). |
size | double | Tamanho de transação em cache (obsoleto). |
hash | string | Hash da transação em formato hexadecimal. |
from | string | Endereço do remetente no formato Ethereum. |
ethermint.evm.v1.LegacyTx
Formato de transação Ethereum legada (pré-EIP-1559).
| Parâmetro | Tipo | Descrição |
|---|---|---|
nonce | uint64 | Número de sequência da conta. |
gas_price | string | Preço do gas em wei como string. |
gas | uint64 | Limite de gás para a transação. |
to | string | Endereço do destinatário (vazio para criação de contrato). |
value | string | Quantidade a transferir em wei. |
data | bytes | Dados da transação ou código do contrato. |
v | bytes | Parâmetro de recuperação da assinatura. |
r | bytes | Parâmetro de assinatura r. |
s | bytes | Parâmetro de assinatura s. |
ethermint.evm.v1.AccessListTx
Transação EIP-2930 com otimização de lista de acesso.
| Parâmetro | Tipo | Descrição |
|---|---|---|
chain_id | string | ID da cadeia Ethereum. |
nonce | uint64 | Número de sequência da conta. |
gas_price | string | Preço do gas em wei. |
gas | uint64 | Gas limit. |
to | string | Endereço do destinatário. |
value | string | Quantidade a transferir em wei. |
data | bytes | Dados da transação. |
accesses | repeated AccessTuple | Lista de acessos para otimização de gas. |
v | bytes | Parâmetro v da assinatura. |
r | bytes | Parâmetro de assinatura r. |
s | bytes | Parâmetro de assinatura s. |
Estrutura de AccessTuple:
| Parâmetro | Tipo | Descrição |
|---|---|---|
address | string | Endereço do contrato a acessar. |
storage_keys | repeated string | Chaves de armazenamento para acessar em formato hexadecimal. |
ethermint.evm.v1.DynamicFeeTx
Transação EIP-1559 com taxas dinâmicas.
| Parâmetro | Tipo | Descrição |
|---|---|---|
chain_id | string | ID da cadeia Ethereum. |
nonce | uint64 | Número de sequência da conta. |
gas_tip_cap | string | Taxa máxima de prioridade por gás em wei. |
gas_fee_cap | string | Taxa máxima por gás em wei. |
gas | uint64 | Limite de gás para a transação. |
to | string | Endereço do destinatário. |
value | string | Quantidade a transferir em wei. |
data | bytes | Dados da transação. |
accesses | repeated AccessTuple | Lista de acessos para otimização de gas. |
v | bytes | Parâmetro v da assinatura. |
r | bytes | Parâmetro de assinatura r. |
s | bytes | Parâmetro de assinatura s. |
CrossFi Módulos
Funcionalidade específica do CrossFi.
crossfi.erc20.v1.MsgConvertCoin
Converte moedas nativas do Cosmos em tokens ERC20.
| Parâmetro | Tipo | Descrição |
|---|---|---|
coin | cosmos.base.v1beta1.Coin | Moeda nativa a converter. |
receiver | string | Endereço do destinatário do token ERC20. |
sender | string | Endereço do remetente da moeda nativa. |
crossfi.treasury.MsgMint
Cria novos tokens no tesouro CrossFi.
| Parâmetro | Tipo | Descrição |
|---|---|---|
creator | string | Endereço Bech32 autorizado a cunhar tokens. |
amount | Coin | Quantidade e denominação a cunhar. |
Requisitos:
- O criador deve possuir permissões de cunhagem
- A quantia deve ser positiva
- A denominação deve ser suportada
crossfi.treasury.MsgBurn
Queima tokens em circulação.
| Parâmetro | Tipo | Descrição |
|---|---|---|
creator | string | Endereço Bech32 que inicia a queima. |
amount | Coin | Quantidade e denominação a queimar. |
Requisitos:
- O criador deve possuir tokens suficientes
- A quantia deve ser positiva
- A operação de queima é irreversível
Exemplos de Uso
Transferência Básica
Transferência simples de tokens usando MsgSend:
{
"@type": "/cosmos.bank.v1beta1.MsgSend",
"from_address": "mx1x7...sender",
"to_address": "mx1y2...recipient",
"amount": [
{
"denom": "mpx",
"amount": "1000000"
}
]
}
Governance Vote
Votando em uma proposta de governança:
{
"@type": "/cosmos.gov.v1.MsgVote",
"proposal_id": "1",
"voter": "mx1x7...voter",
"option": "VOTE_OPTION_YES",
"metadata": "Supporting this proposal"
}
Delegação de Staking
Delegando tokens para um validador:
{
"@type": "/cosmos.staking.v1beta1.MsgDelegate",
"delegator_address": "mx1x7...delegator",
"validator_address": "mxvaloper1y2...validator",
"amount": {
"denom": "mpx",
"amount": "5000000"
}
}
Tratamento de Erros
Cenários comuns de falha e suas causas:
Ensure addresses use correct Bech32 format:
- Account addresses: Start with
mx - Validator addresses: Start with
mxvaloper - Ethereum addresses: Start with
0x(40 hex characters)
Account lacks sufficient balance for:
- Transaction amount plus fees
- Minimum delegation requirements
- Gas costs for EVM transactions
Use supported denominations:
- mpx: Micro MPX (1 MPX = 1,000,000 mpx)
- xfi: CrossFi native token
- IBC denominations:
ibc/[hash]
For authz module operations:
- Ensure grant exists between granter and grantee
- Check grant has not expired
- Verify message type matches granted authorization
For staking operations:
- Verify validator address format (
mxvaloper...) - Ensure validator is not jailed or tombstoned
- Check validator exists in active or unbonding set
Recursos Adicionais
📚 Documentação
🔗 Recursos Externos
Este referência cobre todos os principais tipos de mensagens de transação suportadas pela CrossFi Chain. Para as atualizações mais recentes e tipos de mensagens adicionais, consulte a documentação da API XFI Scan ou explore as transações diretamente no XFI Scan.