Skip to main content

Tài Liệu Tham Khảo Thông Điệp Giao Dịch CrossFi

Hướng dẫn toàn diện này mô tả tất cả các trường có thể có cho các thông điệp giao dịch được hỗ trợ bởi CrossFi Chain. Nền tảng tích hợp nhiều module từ Cosmos SDK, Ethermint và các triển khai đặc thù của CrossFi.

Tổng Quan

CrossFi Chain hỗ trợ nhiều loại thông điệp giao dịch qua các module khác nhau:

  • Cosmos Base: Các thao tác coin cơ bản
  • Module Cosmos SDK: Authz, Bank, Distribution, Gov, Feegrant, Staking, Slashing, Vesting
  • Ethermint EVM: Giao dịch tương thích Ethereum
  • Module CrossFi: Chức năng gốc của CrossFi

Tổng số loại thông điệp được bao phủ: 35+

Mỗi loại thông điệp bao gồm:

  • Mô tả đầy đủ các tham số
  • Loại trường và ràng buộc
  • Ví dụ sử dụng
  • Điều kiện lỗi

Mục Lục


Cosmos Base

cosmos.base.v1beta1.Coin

Cấu trúc coin cơ bản được sử dụng trong tất cả các module để biểu diễn số lượng token.

Tham SốLoạiMô Tả
denomstringMệnh giá token (ví dụ mpx, xfi). Phải khớp với các mệnh giá đã đăng ký.
amountstringSố lượng token dưới dạng string biểu diễn số nguyên (ví dụ 1000000). Phải không âm.

Ngữ Cảnh Sử Dụng:

  • Được sử dụng trong MsgSend, MsgMultiSend cho chuyển tiền
  • Được sử dụng trong MsgDeposit cho tiền gửi quản trị
  • Được sử dụng trong các thao tác staking cho số lượng ủy quyền

Ví Dụ:

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

Module Authz

Module ủy quyền cho phép một tài khoản (người cấp quyền) ủy quyền cho tài khoản khác (người được cấp quyền) thực hiện các hành động nhất định thay mặt họ.

cosmos.authz.v1beta1.MsgGrant

Cấp ủy quyền từ người cấp quyền cho người được cấp quyền cho các loại thông điệp cụ thể.

Tham SốLoạiMô Tả
granterstringĐịa chỉ tài khoản cấp quyền (ví dụ mx1x7...).
granteestringĐịa chỉ tài khoản nhận quyền (ví dụ mx1y2...).
grantcosmos.authz.v1beta1.GrantĐối tượng grant chứa chi tiết ủy quyền và hết hạn.

Cấu Trúc Grant:

Tham SốLoạiMô Tả
authorizationgoogle.protobuf.AnyLoại ủy quyền (GenericAuthorization, SendAuthorization, v.v.).
expirationgoogle.protobuf.TimestampThời gian hết hạn tùy chọn ở định dạng UTC (ví dụ 2025-12-31T23:59:59Z).

Các Loại Ủy Quyền:

  1. GenericAuthorization

    • Cung cấp quyền không giới hạn cho loại thông điệp được chỉ định
    • msg: string - URL đầy đủ của loại thông điệp (ví dụ /cosmos.bank.v1beta1.MsgSend)
  2. SendAuthorization

    • Cho phép người được cấp quyền gửi coin với giới hạn chi tiêu
    • spend_limit: repeated Coin - Số coin tối đa có thể gửi
    • allow_list: repeated string - Danh sách tùy chọn các địa chỉ người nhận được phép
  3. StakeAuthorization

    • Cho phép các thao tác staking với hạn chế validator
    • validators: repeated string - Danh sách địa chỉ validator
    • authorization_type: AuthorizationType - Loại hành động staking (DELEGATE, UNDELEGATE, REDELEGATE)

cosmos.authz.v1beta1.MsgRevoke

Thu hồi ủy quyền đã cấp trước đó cho loại thông điệp cụ thể.

Tham SốLoạiMô Tả
granterstringĐịa chỉ tài khoản thu hồi quyền.
granteestringĐịa chỉ tài khoản mất quyền.
msg_type_urlstringURL loại thông điệp cần thu hồi (ví dụ /cosmos.bank.v1beta1.MsgSend).

cosmos.authz.v1beta1.MsgExec

Thực thi thông điệp thay mặt người cấp quyền sử dụng các ủy quyền đã cấp.

Tham SốLoạiMô Tả
granteestringĐịa chỉ tài khoản thực thi thông điệp.
msgsrepeated google.protobuf.AnyDanh sách thông điệp cần thực thi (ví dụ MsgSend).

Module Bank

Module bank xử lý chuyển tiền token và quản lý số dư.

cosmos.bank.v1beta1.MsgSend

Chuyển coin từ địa chỉ này sang địa chỉ khác.

Tham SốLoạiMô Tả
from_addressstring (cosmos.AddressString)Địa chỉ người gửi (ví dụ mx1x7...).
to_addressstring (cosmos.AddressString)Địa chỉ người nhận (ví dụ mx1y2...).
amountrepeated cosmos.base.v1beta1.CoinCoin cần chuyển. Không thể là null.

Ví Dụ:

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

Điều Kiện Lỗi:

  • Số dư không đủ trong tài khoản người gửi
  • Địa chỉ người nhận nằm trong danh sách đen
  • Mệnh giá coin không hợp lệ

cosmos.bank.v1beta1.MsgMultiSend

Gửi coin từ một hoặc nhiều đầu vào đến nhiều đầu ra.

Tham SốLoạiMô Tả
inputsrepeated InputNguồn đầu vào. Không thể là null.
outputsrepeated OutputĐích đầu ra.

Cấu Trúc Input:

Tham SốLoạiMô Tả
addressstringĐịa chỉ người gửi.
coinsrepeated cosmos.base.v1beta1.CoinCoin cần gửi.

Cấu Trúc Output:

Tham SốLoạiMô Tả
addressstringĐịa chỉ người nhận.
coinsrepeated cosmos.base.v1beta1.CoinCoin cần nhận.

Module Distribution

Quản lý phân phối phần thưởng giữa validator và delegator.

cosmos.distribution.v1beta1.MsgFundCommunityPool

Tài trợ pool cộng đồng trực tiếp từ một tài khoản.

Tham SốLoạiMô Tả
amountrepeated cosmos.base.v1beta1.CoinCoin cần chuyển vào pool cộng đồng.
depositorstringĐịa chỉ Bech32 tài trợ pool (ví dụ mx1x7...).

cosmos.distribution.v1beta1.MsgSetWithdrawAddress

Đặt địa chỉ khác để rút phần thưởng.

Tham SốLoạiMô Tả
delegator_addressstringĐịa chỉ Bech32 của delegator đặt địa chỉ rút.
withdraw_addressstringĐịa chỉ Bech32 nơi phần thưởng sẽ được gửi. Không thể là địa chỉ module.

cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward

Rút phần thưởng tích lũy từ validator cụ thể.

Tham SốLoạiMô Tả
delegator_addressstringĐịa chỉ Bech32 của delegator rút phần thưởng.
validator_addressstringĐịa chỉ Bech32 của validator (ví dụ mxvaloper1z3...).

cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission

Cho phép validator rút hoa hồng tích lũy.

Tham SốLoạiMô Tả
validator_addressstringĐịa chỉ Bech32 của validator (ví dụ mxvaloper1z3...).

Module Gov

Module quản trị cho phép đề xuất và bỏ phiếu trên chuỗi.

cosmos.gov.v1.MsgDeposit

Gửi coin vào đề xuất để giúp nó đạt đến giai đoạn bỏ phiếu.

Tham SốLoạiMô Tả
proposal_iduint64Định danh duy nhất của đề xuất.
depositorstringĐịa chỉ Bech32 gửi tiền (ví dụ mx1x7...).
amountrepeated CoinSố lượng tiền gửi.

cosmos.gov.v1.MsgSubmitProposal

Tạo đề xuất quản trị mới.

Tham SốLoạiMô Tả
messagesrepeated AnyThông điệp cần thực thi nếu đề xuất được thông qua.
initial_depositrepeated CoinTiền gửi ban đầu cho đề xuất.
proposerstringĐịa chỉ Bech32 của người đề xuất (ví dụ mx1x7...).
metadatastringSiêu dữ liệu tùy chọn cho đề xuất.
titlestringTiêu đề đề xuất.
summarystringMô tả ngắn gọn về đề xuất.

cosmos.gov.v1.MsgVote

Bỏ phiếu cho một đề xuất.

Tham SốLoạiMô Tả
proposal_iduint64Định danh đề xuất.
voterstringĐịa chỉ Bech32 của người bỏ phiếu (ví dụ mx1x7...).
optionVoteOptionLựa chọn bỏ phiếu: YES, ABSTAIN, NO, NO_WITH_VETO.
metadatastringSiêu dữ liệu tùy chọn của phiếu bầu.

cosmos.gov.v1.MsgVoteWeighted

Bỏ phiếu có trọng số qua nhiều lựa chọn.

Tham SốLoạiMô Tả
proposal_iduint64Định danh đề xuất.
voterstringĐịa chỉ Bech32 của người bỏ phiếu.
optionsrepeated WeightedVoteOptionCác lựa chọn bỏ phiếu với trọng số.
metadatastringSiêu dữ liệu tùy chọn.

WeightedVoteOption:

Tham SốLoạiMô Tả
optionVoteOptionLựa chọn bỏ phiếu.
weightstringTrọng số phiếu bầu dưới dạng thập phân (ví dụ "0.5"). Tổng phải bằng 1.

Module Feegrant

Cho phép tài khoản trả phí giao dịch thay mặt người khác.

cosmos.feegrant.v1beta1.MsgGrantAllowance

Cấp hạn mức phí từ người cấp quyền cho người được cấp quyền.

Tham SốLoạiMô Tả
granterstringĐịa chỉ cung cấp hạn mức phí (ví dụ mx1x7...).
granteestringĐịa chỉ nhận hạn mức phí (ví dụ mx1y2...).
allowancegoogle.protobuf.AnyLoại hạn mức phí (BasicAllowance, PeriodicAllowance).

Các Loại Hạn Mức:

  1. BasicAllowance - Hạn mức đơn giản với giới hạn chi tiêu:

    • spend_limit: repeated Coin - Số tiền phí tối đa
    • expiration: Timestamp - Thời gian hết hạn tùy chọn
  2. PeriodicAllowance - Hạn mức được đặt lại định kỳ:

    • basic: BasicAllowance - Hạn mức cơ bản
    • period: Duration - Chu kỳ đặt lại
    • period_spend_limit: repeated Coin - Giới hạn mỗi chu kỳ

cosmos.feegrant.v1beta1.MsgRevokeAllowance

Thu hồi hạn mức phí đã cấp trước đó.

Tham SốLoạiMô Tả
granterstringĐịa chỉ thu hồi hạn mức (ví dụ mx1x7...).
granteestringĐịa chỉ mất hạn mức (ví dụ mx1y2...).

Module Staking

Triển khai cơ chế đồng thuận Proof-of-Stake.

cosmos.staking.v1beta1.MsgBeginRedelegate

Chuyển ủy quyền token từ validator này sang validator khác.

Tham SốLoạiMô Tả
delegator_addressstringĐịa chỉ delegator (ví dụ mx1x7...).
validator_src_addressstringValidator nguồn (ví dụ mxvaloper1y2...).
validator_dst_addressstringValidator đích (ví dụ mxvaloper1z3...).
amountcosmos.base.v1beta1.CoinSố lượng cần chuyển ủy quyền.

cosmos.staking.v1beta1.MsgCreateValidator

Tạo validator mới.

Tham SốLoạiMô Tả
descriptioncosmos.staking.v1beta1.DescriptionMô tả validator.
commissioncosmos.staking.v1beta1.CommissionRatesTỷ lệ hoa hồng.
min_self_delegationstringTự ủy quyền tối thiểu bằng mpx.
delegator_addressstringDelegator tạo validator (ví dụ mx1x7...).
validator_addressstringĐịa chỉ validator (ví dụ mxvaloper1y2...).
pubkeygoogle.protobuf.AnyKhóa công khai của validator.
valuecosmos.base.v1beta1.CoinSố lượng stake ban đầu.

Cấu Trúc Description:

Tham SốLoạiMô Tả
monikerstringTên validator.
identitystringDanh tính tùy chọn (ví dụ ID Keybase).
websitestringWebsite của validator.
security_contactstringEmail liên hệ bảo mật.
detailsstringChi tiết bổ sung về validator.

Cấu Trúc CommissionRates:

Tham SốLoạiMô Tả
ratestringTỷ lệ hoa hồng hiện tại (ví dụ "0.1" cho 10%).
max_ratestringTỷ lệ hoa hồng tối đa (ví dụ "0.2").
max_change_ratestringThay đổi hoa hồng tối đa hàng ngày (ví dụ "0.01").

cosmos.staking.v1beta1.MsgDelegate

Ủy quyền token cho validator.

Tham SốLoạiMô Tả
delegator_addressstringĐịa chỉ delegator (ví dụ mx1x7...).
validator_addressstringĐịa chỉ validator (ví dụ mxvaloper1y2...).
amountcosmos.base.v1beta1.CoinSố lượng cần ủy quyền.

cosmos.staking.v1beta1.MsgEditValidator

Cập nhật mô tả và hoa hồng của validator.

Tham SốLoạiMô Tả
descriptioncosmos.staking.v1beta1.DescriptionMô tả validator đã cập nhật.
validator_addressstringĐịa chỉ validator (ví dụ mxvaloper1y2...).
commission_ratestringTỷ lệ hoa hồng mới (tùy chọn).
min_self_delegationstringTự ủy quyền tối thiểu mới (tùy chọn).

cosmos.staking.v1beta1.MsgUndelegate

Hủy ủy quyền token từ validator.

Tham SốLoạiMô Tả
delegator_addressstringĐịa chỉ delegator (ví dụ mx1x7...).
validator_addressstringĐịa chỉ validator (ví dụ mxvaloper1y2...).
amountcosmos.base.v1beta1.CoinSố lượng cần hủy ủy quyền.

Module Slashing

cosmos.slashing.v1beta1.MsgUnjail

Thả tự do validator đã bị giam trước đó.

Tham SốLoạiMô Tả
validator_addrstringĐịa chỉ validator cần thả tự do.

Yêu Cầu:

  • Validator phải tồn tại và bị giam
  • Thời gian giam phải đã hết hạn
  • Validator phải có tự ủy quyền > 0
  • Validator không được đánh dấu là tombstoned

Module Vesting

cosmos.vesting.v1beta1.MsgCreateVestingAccount

Tạo tài khoản vesting với token bị khóa.

Tham SốLoạiMô Tả
from_addressstringĐịa chỉ tạo tài khoản vesting.
to_addressstringĐịa chỉ tài khoản vesting mới (chưa khởi tạo).
amountrepeated cosmos.base.v1beta1.CoinToken để vesting.
end_timeint64Timestamp UNIX khi vesting kết thúc.
delayedbooltrue=vesting trì hoãn, false=liên tục.

Các Loại Vesting:

  1. Vesting Trì Hoãn - Tất cả token được mở khóa cùng lúc khi đạt end_time:

    • Token vẫn hoàn toàn bị khóa cho đến thời gian cuối
    • Phù hợp cho các tình huống vesting cliff
    • Cơ chế mở khóa đơn giản
  2. Vesting Liên Tục - Token được mở khóa tuyến tính từ thời gian tạo đến end_time:

    • Giải phóng token dần dần theo thời gian
    • Mở khóa tỷ lệ
    • Phù hợp cho vesting nhân viên


Module Ethermint EVM

Lớp tương thích Máy Ảo Ethereum.

ethermint.evm.v1.MsgEthereumTx

Bao bọc giao dịch Ethereum để thực thi Cosmos.

Tham SốLoạiMô Tả
datagoogle.protobuf.AnyDữ liệu giao dịch (LegacyTx, AccessListTx, DynamicFeeTx).
sizedoubleKích thước giao dịch được cache (lỗi thời).
hashstringHash giao dịch ở định dạng hex.
fromstringĐịa chỉ người gửi ở định dạng Ethereum.

ethermint.evm.v1.LegacyTx

Định dạng giao dịch Ethereum cũ (trước EIP-1559).

Tham SốLoạiMô Tả
nonceuint64Số thứ tự tài khoản.
gas_pricestringGiá gas bằng wei dưới dạng string.
gasuint64Giới hạn gas cho giao dịch.
tostringĐịa chỉ người nhận (trống cho tạo contract).
valuestringSố lượng chuyển bằng wei.
databytesDữ liệu giao dịch hoặc mã contract.
vbytesTham số khôi phục chữ ký.
rbytesTham số chữ ký r.
sbytesTham số chữ ký s.

ethermint.evm.v1.AccessListTx

Giao dịch EIP-2930 với tối ưu hóa danh sách truy cập.

Tham SốLoạiMô Tả
chain_idstringID chuỗi Ethereum.
nonceuint64Số thứ tự tài khoản.
gas_pricestringGiá gas bằng wei.
gasuint64Giới hạn gas.
tostringĐịa chỉ người nhận.
valuestringSố lượng chuyển bằng wei.
databytesDữ liệu giao dịch.
accessesrepeated AccessTupleDanh sách truy cập để tối ưu gas.
vbytesTham số chữ ký v.
rbytesTham số chữ ký r.
sbytesTham số chữ ký s.

Cấu Trúc AccessTuple:

Tham SốLoạiMô Tả
addressstringĐịa chỉ contract cần truy cập.
storage_keysrepeated stringKhóa lưu trữ cần truy cập ở định dạng hex.

ethermint.evm.v1.DynamicFeeTx

Giao dịch EIP-1559 với phí động.

Tham SốLoạiMô Tả
chain_idstringID chuỗi Ethereum.
nonceuint64Số thứ tự tài khoản.
gas_tip_capstringPhí ưu tiên tối đa mỗi gas bằng wei.
gas_fee_capstringPhí tối đa mỗi gas bằng wei.
gasuint64Giới hạn gas.
tostringĐịa chỉ người nhận.
valuestringSố lượng chuyển bằng wei.
databytesDữ liệu giao dịch.
accessesrepeated AccessTupleDanh sách truy cập.
vbytesTham số chữ ký v.
rbytesTham số chữ ký r.
sbytesTham số chữ ký s.

Module CrossFi

Chức năng đặc thù của CrossFi.

crossfi.erc20.v1.MsgConvertCoin

Chuyển đổi coin gốc Cosmos thành token ERC20.

Tham SốLoạiMô Tả
coincosmos.base.v1beta1.CoinCoin gốc cần chuyển đổi.
receiverstringĐịa chỉ người nhận token ERC20.
senderstringĐịa chỉ người gửi coin gốc.

crossfi.treasury.MsgMint

Đúc token mới trong kho bạc CrossFi.

Tham SốLoạiMô Tả
creatorstringĐịa chỉ Bech32 được ủy quyền đúc token.
amountCoinSố lượng và mệnh giá cần đúc.

Yêu Cầu:

  • Người tạo phải có quyền đúc
  • Số lượng phải dương
  • Mệnh giá phải được hỗ trợ

crossfi.treasury.MsgBurn

Đốt token khỏi lưu thông.

Tham SốLoạiMô Tả
creatorstringĐịa chỉ Bech32 khởi tạo việc đốt.
amountCoinSố lượng và mệnh giá cần đốt.

Yêu Cầu:

  • Người tạo phải sở hữu đủ token
  • Số lượng phải dương
  • Thao tác đốt không thể hoàn tác

Ví Dụ Sử Dụng

Chuyển Tiền Cơ Bản

Chuyển token đơn giản sử dụng MsgSend:

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

Bỏ Phiếu Quản Trị

Bỏ phiếu cho đề xuất quản trị:

{
"@type": "/cosmos.gov.v1.MsgVote",
"proposal_id": "1",
"voter": "mx1x7...voter",
"option": "VOTE_OPTION_YES",
"metadata": "Ủng hộ đề xuất này"
}

Ủy Quyền Staking

Ủy quyền token cho validator:

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

Xử Lý Lỗi

Các tình huống lỗi thường gặp và nguyên nhân:

Lỗi Xác Thực Giao Dịch
Lỗi Đặc Thù Module

Tài Nguyên Bổ Sung


thông tin

Tài liệu tham khảo này bao phủ tất cả các loại thông điệp giao dịch chính được hỗ trợ bởi CrossFi Chain. Để cập nhật mới nhất và các loại thông điệp bổ sung, tham khảo tài liệu API XFI Scan hoặc khám phá giao dịch trực tiếp trên XFI Scan.