Skip to main content

Referencia de Mensajes de Transacción de CrossFi

Esta guía completa describe todos los campos posibles para mensajes de transacción soportados por CrossFi Chain. La plataforma integra múltiples módulos de Cosmos SDK, Ethermint e implementaciones específicas de CrossFi.

Resumen​

CrossFi Chain soporta múltiples tipos de mensajes de transacción a través de diferentes módulos:

  • Cosmos Base: Operaciones fundamentales de monedas
  • Módulos Cosmos SDK: Authz, Bank, Distribution, Gov, Feegrant, Staking, Slashing, Vesting
  • Ethermint EVM: Transacciones compatibles con Ethereum
  • Módulos CrossFi: Funcionalidad nativa de CrossFi

Total de tipos de mensajes cubiertos: 35+

Cada tipo de mensaje incluye:

  • Descripciones completas de parámetros
  • Tipos de campos y restricciones
  • Ejemplos de uso
  • Condiciones de falla

Tabla de Contenidos​


Cosmos Base​

cosmos.base.v1beta1.Coin​

La estructura fundamental de moneda utilizada en todos los módulos para representar cantidades de tokens.

ParámetroTipoDescripción
denomstringDenominación del token (ej. mpx, xfi). Debe coincidir con denominaciones registradas.
amountstringCantidad de tokens como string representando entero (ej. 1000000). Debe ser no negativo.

Contexto de Uso:

  • Usado en MsgSend, MsgMultiSend para transferencias
  • Usado en MsgDeposit para depósitos de gobernanza
  • Usado en operaciones de staking para cantidades de delegación

Ejemplo:

{
"denom": "mpx",
"amount": "1000000"
}

Módulo Authz​

El módulo de autorización permite a una cuenta (otorgante) autorizar a otra cuenta (beneficiario) para ejecutar ciertas acciones en su nombre.

cosmos.authz.v1beta1.MsgGrant​

Otorga autorización del otorgante al beneficiario para tipos específicos de mensajes.

ParámetroTipoDescripción
granterstringDirección de la cuenta que otorga permiso (ej. mx1x7...).
granteestringDirección de la cuenta que recibe permiso (ej. mx1y2...).
grantcosmos.authz.v1beta1.GrantObjeto grant que contiene detalles de autorización y expiración.

Estructura Grant:

ParámetroTipoDescripción
authorizationgoogle.protobuf.AnyTipo de autorización (GenericAuthorization, SendAuthorization, etc.).
expirationgoogle.protobuf.TimestampTiempo de expiración opcional en formato UTC (ej. 2025-12-31T23:59:59Z).

Tipos de Autorización:

  1. GenericAuthorization

    • Proporciona permiso ilimitado para el tipo de mensaje especificado
    • msg: string - URL completa del tipo de mensaje (ej. /cosmos.bank.v1beta1.MsgSend)
  2. SendAuthorization

    • Permite al beneficiario enviar monedas con límites de gasto
    • spend_limit: repeated Coin - Máximas monedas que se pueden enviar
    • allow_list: repeated string - Lista opcional de direcciones de destinatarios permitidos
  3. StakeAuthorization

    • Permite operaciones de staking con restricciones de validador
    • validators: repeated string - Lista de direcciones de validadores
    • authorization_type: AuthorizationType - Tipo de acción de staking (DELEGATE, UNDELEGATE, REDELEGATE)

cosmos.authz.v1beta1.MsgRevoke​

Revoca autorización previamente otorgada para tipo específico de mensaje.

ParámetroTipoDescripción
granterstringDirección de cuenta que revoca permiso.
granteestringDirección de cuenta que pierde permiso.
msg_type_urlstringURL del tipo de mensaje a revocar (ej. /cosmos.bank.v1beta1.MsgSend).

cosmos.authz.v1beta1.MsgExec​

Ejecuta mensajes en nombre del otorgante usando autorizaciones otorgadas.

ParámetroTipoDescripción
granteestringDirección de cuenta que ejecuta mensajes.
msgsrepeated google.protobuf.AnyLista de mensajes a ejecutar (ej. MsgSend).

Módulo Bank​

El módulo bank maneja transferencias de tokens y gestión de balances.

cosmos.bank.v1beta1.MsgSend​

Transfiere monedas de una dirección a otra.

ParámetroTipoDescripción
from_addressstring (cosmos.AddressString)Dirección del remitente (ej. mx1x7...).
to_addressstring (cosmos.AddressString)Dirección del destinatario (ej. mx1y2...).
amountrepeated cosmos.base.v1beta1.CoinMonedas a transferir. No puede ser null.

Ejemplo:

{
"from_address": "mx1x7...sender",
"to_address": "mx1y2...recipient",
"amount": [{"denom": "mpx", "amount": "1000000"}]
}

Condiciones de Falla:

  • Balance insuficiente en cuenta del remitente
  • Dirección del destinatario está en lista negra
  • Denominación de moneda inválida

cosmos.bank.v1beta1.MsgMultiSend​

Envía monedas de una o múltiples entradas a múltiples salidas.

ParámetroTipoDescripción
inputsrepeated InputFuentes de entrada. No puede ser null.
outputsrepeated OutputDestinos de salida.

Estructura Input:

ParámetroTipoDescripción
addressstringDirección del remitente.
coinsrepeated cosmos.base.v1beta1.CoinMonedas a enviar.

Estructura Output:

ParámetroTipoDescripción
addressstringDirección del destinatario.
coinsrepeated cosmos.base.v1beta1.CoinMonedas a recibir.

Módulo Distribution​

Gestiona la distribución de recompensas entre validadores y delegadores.

cosmos.distribution.v1beta1.MsgFundCommunityPool​

Financia el pool comunitario directamente desde una cuenta.

ParámetroTipoDescripción
amountrepeated cosmos.base.v1beta1.CoinMonedas a transferir al pool comunitario.
depositorstringDirección Bech32 que financia el pool (ej. mx1x7...).

cosmos.distribution.v1beta1.MsgSetWithdrawAddress​

Establece una dirección diferente para retiros de recompensas.

ParámetroTipoDescripción
delegator_addressstringDirección Bech32 del delegador que establece dirección de retiro.
withdraw_addressstringDirección Bech32 donde se enviarán las recompensas. No puede ser dirección de módulo.

cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward​

Retira recompensas acumuladas de un validador específico.

ParámetroTipoDescripción
delegator_addressstringDirección Bech32 del delegador que retira recompensas.
validator_addressstringDirección Bech32 del validador (ej. mxvaloper1z3...).

cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission​

Permite al validador retirar comisión acumulada.

ParámetroTipoDescripción
validator_addressstringDirección Bech32 del validador (ej. mxvaloper1z3...).

Módulo Gov​

El módulo de gobernanza habilita propuestas y votación en cadena.

cosmos.gov.v1.MsgDeposit​

Deposita monedas en una propuesta para ayudarla a alcanzar el período de votación.

ParámetroTipoDescripción
proposal_iduint64Identificador único de propuesta.
depositorstringDirección Bech32 que hace depósito (ej. mx1x7...).
amountrepeated CoinCantidad de depósito.

cosmos.gov.v1.MsgSubmitProposal​

Crea una nueva propuesta de gobernanza.

ParámetroTipoDescripción
messagesrepeated AnyMensajes a ejecutar si la propuesta pasa.
initial_depositrepeated CoinDepósito inicial para la propuesta.
proposerstringDirección Bech32 del proponente (ej. mx1x7...).
metadatastringMetadatos opcionales para la propuesta.
titlestringTítulo de la propuesta.
summarystringBreve descripción de la propuesta.

cosmos.gov.v1.MsgVote​

Emite un voto sobre una propuesta.

ParámetroTipoDescripción
proposal_iduint64Identificador de propuesta.
voterstringDirección Bech32 del votante (ej. mx1x7...).
optionVoteOptionOpción de voto: YES, ABSTAIN, NO, NO_WITH_VETO.
metadatastringMetadatos opcionales del voto.

cosmos.gov.v1.MsgVoteWeighted​

Emite votos ponderados a través de múltiples opciones.

ParámetroTypeDescripción
proposal_iduint64Identificador de propuesta.
voterstringDirección Bech32 del votante.
optionsrepeated WeightedVoteOptionOpciones de voto con pesos.
metadatastringMetadatos opcionales.

WeightedVoteOption:

ParámetroTipoDescripción
optionVoteOptionOpción de voto.
weightstringPeso del voto como decimal (ej. "0.5"). La suma debe ser 1.

Módulo Feegrant​

Permite a las cuentas pagar tarifas de transacción en nombre de otros.

cosmos.feegrant.v1beta1.MsgGrantAllowance​

Otorga asignación de tarifas del otorgante al beneficiario.

ParámetroTipoDescripción
granterstringDirección que proporciona asignación de tarifa (ej. mx1x7...).
granteestringDirección que recibe asignación de tarifa (ej. mx1y2...).
allowancegoogle.protobuf.AnyTipo de asignación de tarifa (BasicAllowance, PeriodicAllowance).

Tipos de Asignación:

  1. BasicAllowance - Asignación simple con límite de gasto:

    • spend_limit: repeated Coin - Cantidad máxima de tarifa
    • expiration: Timestamp - Tiempo de expiración opcional
  2. PeriodicAllowance - Asignación que se reinicia periódicamente:

    • basic: BasicAllowance - Asignación base
    • period: Duration - Período de reinicio
    • period_spend_limit: repeated Coin - Límite por período

cosmos.feegrant.v1beta1.MsgRevokeAllowance​

Revoca asignación de tarifa previamente otorgada.

ParámetroTipoDescripción
granterstringDirección que revoca asignación (ej. mx1x7...).
granteestringDirección que pierde asignación (ej. mx1y2...).

Módulo Staking​

Implementa el mecanismo de consenso Proof-of-Stake.

cosmos.staking.v1beta1.MsgBeginRedelegate​

Redelega tokens de un validador a otro.

ParámetroTipoDescripción
delegator_addressstringDirección del delegador (ej. mx1x7...).
validator_src_addressstringValidador fuente (ej. mxvaloper1y2...).
validator_dst_addressstringValidador destino (ej. mxvaloper1z3...).
amountcosmos.base.v1beta1.CoinCantidad a redelegar.

cosmos.staking.v1beta1.MsgCreateValidator​

Crea un nuevo validador.

ParámetroTipoDescripción
descriptioncosmos.staking.v1beta1.DescriptionDescripción del validador.
commissioncosmos.staking.v1beta1.CommissionRatesTasas de comisión.
min_self_delegationstringMínima auto-delegación en mpx.
delegator_addressstringDelegador que crea validador (ej. mx1x7...).
validator_addressstringDirección del validador (ej. mxvaloper1y2...).
pubkeygoogle.protobuf.AnyClave pública del validador.
valuecosmos.base.v1beta1.CoinCantidad de stake inicial.

Estructura Description:

ParámetroTipoDescripción
monikerstringNombre del validador.
identitystringIdentidad opcional (ej. ID de Keybase).
websitestringSitio web del validador.
security_contactstringEmail de contacto de seguridad.
detailsstringDetalles adicionales del validador.

Estructura CommissionRates:

ParámetroTipoDescripción
ratestringTasa de comisión actual (ej. "0.1" para 10%).
max_ratestringTasa de comisión máxima (ej. "0.2").
max_change_ratestringCambio máximo diario de comisión (ej. "0.01").

cosmos.staking.v1beta1.MsgDelegate​

Delega tokens a un validador.

ParámetroTipoDescripción
delegator_addressstringDirección del delegador (ej. mx1x7...).
validator_addressstringDirección del validador (ej. mxvaloper1y2...).
amountcosmos.base.v1beta1.CoinCantidad a delegar.

cosmos.staking.v1beta1.MsgEditValidator​

Actualiza descripción y comisión del validador.

ParámetroTipoDescripción
descriptioncosmos.staking.v1beta1.DescriptionDescripción actualizada del validador.
validator_addressstringDirección del validador (ej. mxvaloper1y2...).
commission_ratestringNueva tasa de comisión (opcional).
min_self_delegationstringNueva mínima auto-delegación (opcional).

cosmos.staking.v1beta1.MsgUndelegate​

Desdelega tokens de un validador.

ParámetroTipoDescripción
delegator_addressstringDirección del delegador (ej. mx1x7...).
validator_addressstringDirección del validador (ej. mxvaloper1y2...).
amountcosmos.base.v1beta1.CoinCantidad a desdelegar.

Módulo Slashing​

cosmos.slashing.v1beta1.MsgUnjail​

Libera de prisión a un validador previamente encarcelado.

ParámetroTipoDescripción
validator_addrstringDirección del validador a liberar.

Requisitos:

  • El validador debe existir y estar encarcelado
  • El período de prisión debe haber expirado
  • El validador debe tener auto-delegación > 0
  • El validador no debe estar marcado como tombstoned

Módulo Vesting​

cosmos.vesting.v1beta1.MsgCreateVestingAccount​

Crea una cuenta vesting con tokens bloqueados.

ParámetroTipoDescripción
from_addressstringDirección que crea cuenta vesting.
to_addressstringNueva dirección de cuenta vesting (no inicializada).
amountrepeated cosmos.base.v1beta1.CoinTokens para vesting.
end_timeint64Timestamp UNIX cuando termina el vesting.
delayedbooltrue=vesting diferido, false=continuo.

Tipos de Vesting:

  1. Vesting Diferido - Todos los tokens se desbloquean a la vez cuando se alcanza end_time:

    • Los tokens permanecen completamente bloqueados hasta el tiempo final
    • Adecuado para escenarios de vesting cliff
    • Mecanismo de desbloqueo simple
  2. Vesting Continuo - Los tokens se desbloquean linealmente desde el tiempo de creación hasta end_time:

    • Liberación gradual de tokens en el tiempo
    • Desbloqueo proporcional
    • Adecuado para vesting de empleados


Módulo Ethermint EVM​

Capa de compatibilidad de Máquina Virtual Ethereum.

ethermint.evm.v1.MsgEthereumTx​

Envuelve transacción Ethereum para ejecución Cosmos.

ParámetroTipoDescripción
datagoogle.protobuf.AnyDatos de transacción (LegacyTx, AccessListTx, DynamicFeeTx).
sizedoubleTamaño de transacción en caché (obsoleto).
hashstringHash de transacción en formato hex.
fromstringDirección del remitente en formato Ethereum.

ethermint.evm.v1.LegacyTx​

Formato de transacción Ethereum legacy (pre-EIP-1559).

ParámetroTipoDescripción
nonceuint64Número de secuencia de cuenta.
gas_pricestringPrecio de gas en wei como string.
gasuint64Límite de gas para transacción.
tostringDirección del destinatario (vacía para creación de contrato).
valuestringCantidad a transferir en wei.
databytesDatos de transacción o código de contrato.
vbytesParámetro de recuperación de firma.
rbytesParámetro de firma r.
sbytesParámetro de firma s.

ethermint.evm.v1.AccessListTx​

Transacción EIP-2930 con optimización de lista de acceso.

ParámetroTipoDescripción
chain_idstringID de cadena Ethereum.
nonceuint64Número de secuencia de cuenta.
gas_pricestringPrecio de gas en wei.
gasuint64Límite de gas.
tostringDirección del destinatario.
valuestringCantidad de transferencia en wei.
databytesDatos de transacción.
accessesrepeated AccessTupleLista de acceso para optimización de gas.
vbytesParámetro de firma v.
rbytesParámetro de firma r.
sbytesParámetro de firma s.

Estructura AccessTuple:

ParámetroTipoDescripción
addressstringDirección de contrato a acceder.
storage_keysrepeated stringClaves de almacenamiento a acceder en formato hex.

ethermint.evm.v1.DynamicFeeTx​

Transacción EIP-1559 con tarifas dinámicas.

ParámetroTipoDescripción
chain_idstringID de cadena Ethereum.
nonceuint64Número de secuencia de cuenta.
gas_tip_capstringTarifa de prioridad máxima por gas en wei.
gas_fee_capstringTarifa máxima por gas en wei.
gasuint64Límite de gas.
tostringDirección del destinatario.
valuestringCantidad de transferencia en wei.
databytesDatos de transacción.
accessesrepeated AccessTupleLista de acceso.
vbytesParámetro de firma v.
rbytesParámetro de firma r.
sbytesParámetro de firma s.

Módulos CrossFi​

Funcionalidad específica de CrossFi.

crossfi.erc20.v1.MsgConvertCoin​

Convierte monedas nativas Cosmos a tokens ERC20.

ParámetroTipoDescripción
coincosmos.base.v1beta1.CoinMoneda nativa a convertir.
receiverstringDirección destinataria del token ERC20.
senderstringDirección remitente de moneda nativa.

crossfi.treasury.MsgMint​

Acuña nuevos tokens en el tesoro CrossFi.

ParámetroTipoDescripción
creatorstringDirección Bech32 autorizada para acuñar tokens.
amountCoinCantidad y denominación a acuñar.

Requisitos:

  • El creador debe tener permisos de acuñación
  • La cantidad debe ser positiva
  • La denominación debe ser soportada

crossfi.treasury.MsgBurn​

Quema tokens de circulación.

ParámetroTipoDescripción
creatorstringDirección Bech32 que inicia la quema.
amountCoinCantidad y denominación a quemar.

Requisitos:

  • El creador debe poseer tokens suficientes
  • La cantidad debe ser positiva
  • La operación de quema es irreversible

Ejemplos de Uso​

Transferencia Básica​

Transferencia simple de tokens usando MsgSend:

{
"@type": "/cosmos.bank.v1beta1.MsgSend",
"from_address": "mx1x7...sender",
"to_address": "mx1y2...recipient",
"amount": [
{
"denom": "mpx",
"amount": "1000000"
}
]
}

Voto de Gobernanza​

Votando en una propuesta de gobernanza:

{
"@type": "/cosmos.gov.v1.MsgVote",
"proposal_id": "1",
"voter": "mx1x7...voter",
"option": "VOTE_OPTION_YES",
"metadata": "Apoyando esta propuesta"
}

Delegación de Staking​

Delegando tokens a un validador:

{
"@type": "/cosmos.staking.v1beta1.MsgDelegate",
"delegator_address": "mx1x7...delegator",
"validator_address": "mxvaloper1y2...validator",
"amount": {
"denom": "mpx",
"amount": "5000000"
}
}

Manejo de Errores​

Escenarios comunes de falla y sus causas:

▶Errores de Validación de Transacciones
▶¿Formato de dirección inválido?

Asegúrate de que las direcciones usen el formato Bech32 correcto:

  • Direcciones de cuenta: Comienzan con mx
  • Direcciones de validador: Comienzan con mxvaloper
  • Direcciones Ethereum: Comienzan con 0x (40 caracteres hex)
▶¿Error de fondos insuficientes?

La cuenta carece de balance suficiente para:

  • Cantidad de transacción más tarifas
  • Requisitos mínimos de delegación
  • Costos de gas para transacciones EVM
▶¿Denominación inválida?

Usa denominaciones soportadas:

  • mpx: Micro MPX (1 MPX = 1,000,000 mpx)
  • xfi: Token nativo CrossFi
  • Denominaciones IBC: ibc/[hash]
▶Errores Específicos de Módulos
▶¿Autorización no encontrada?

Para operaciones del módulo authz:

  • Asegúrate de que existe un grant entre otorgante y beneficiario
  • Verifica que el grant no haya expirado
  • Verifica que el tipo de mensaje coincida con la autorización otorgada
▶¿Validador no encontrado?

Para operaciones de staking:

  • Verifica el formato de dirección del validador (mxvaloper...)
  • Asegúrate de que el validador no esté encarcelado o tombstoned
  • Verifica que el validador existe en el conjunto activo o unbonding

Recursos Adicionales​


información

Esta referencia cubre todos los tipos principales de mensajes de transacción soportados por CrossFi Chain. Para las últimas actualizaciones y tipos de mensajes adicionales, consulta la documentación de la API XFI Scan o explora transacciones directamente en XFI Scan.