name: mvx_sdk_go_data description: MultiversX Go SDK的核心数据结构和类型。
MultiversX SDK-Go 数据结构
这些类型定义了与区块链交互的核心对象。
交易
data.Transaction 是所有网络交互的主要结构。
type Transaction struct {
Nonce uint64 `json:"nonce"`
Value string `json:"value"`
RcvAddr string `json:"receiver"`
SndAddr string `json:"sender"`
GasPrice uint64 `json:"gasPrice,omitempty"`
GasLimit uint64 `json:"gasLimit,omitempty"`
Data []byte `json:"data,omitempty"`
Signature string `json:"signature,omitempty"`
ChainID string `json:"chainID"`
Version uint32 `json:"version"`
Options uint32 `json:"options,omitempty"`
Guardian string `json:"guardian,omitempty"`
GuardianSignature string `json:"guardianSignature,omitempty"`
Relayer string `json:"relayer,omitempty"`
RelayerSignature string `json:"relayerSignature,omitempty"`
}
地址
type AddressWithType struct {
address []byte
hrp string // "erd" 通常
}
// 方法
// NewAddressFromBech32String(bech32)
// NewAddressFromBytes(bytes)
// AddressAsBech32String()
账户
type Account struct {
Address string `json:"address"`
Nonce uint64 `json:"nonce"`
Balance string `json:"balance"` // BigInt 字符串
Username string `json:"username"`
CodeHash string `json:"codeHash"`
RootHash string `json:"rootHash"`
DeveloperReward string `json:"developerReward"`
}
网络配置
type NetworkConfig struct {
ChainID string
MinGasLimit uint64
MinGasPrice uint64
GasPerDataByte uint64
GasPriceModifier float64
AdditionalGasForTxSize uint64
...
}
虚拟机查询
type VmValueRequest struct {
Address string `json:"scAddress"`
FuncName string `json:"funcName"`
CallValue string `json:"value"`
CallerAddr string `json:"caller"`
Args []string `json:"args"` // 十六进制编码的参数
}
type VmValuesResponseData struct {
ReturnData []string `json:"returnData"` // 十六进制编码的返回值
ReturnCode string `json:"returnCode"`
ReturnMessage string `json:"returnMessage"`
GasRemaining uint64 `json:"gasRemaining"`
GasRefund uint64 `json:"gasRefund"`
OutputAccounts map[string]*OutputAccount `json:"outputAccounts"`
}
最佳实践
- 使用
Value作为字符串:为了防止溢出(Go 的int64对于大额代币量来说太小)。 - Bech32 地址:API 期望 bech32 字符串,内部逻辑通常使用字节。
- 十六进制编码:
Data字段在检查浏览器时经常是十六进制编码的,但 SDK 期望字节/字符串。 - 选项位掩码:用于专门的事务(例如,受保护的)。