MultiversXSDK-Go交易构建技能Skill mvx_sdk_go_builders

本技能专注于使用MultiversX SDK-Go中的构建器工具,进行区块链交易的构建、签名和管理。涵盖基础交易、智能合约交互、ESDT令牌传输和中继交易等场景,适用于区块链开发者、量化交易专家和DApp开发者。关键词包括:MultiversX, Go SDK, 交易构建, 签名, 区块链, 智能合约, ESDT, 中继交易, 量化金融。

DApp开发 0 次安装 0 次浏览 更新于 3/21/2026

name: mvx_sdk_go_builders description: 使用Go SDK中的构建器进行交易构建和签名。

MultiversX SDK-Go 构建器

使用 TxBuilder 来构建和签名交易。

交易构建器

import (
    "github.com/multiversx/mx-sdk-go/builders"
    "github.com/multiversx/mx-sdk-go/core"
    "github.com/multiversx/mx-sdk-go/data"
)

// 初始化
txBuilder, err := builders.NewTxBuilder(core.Marshalizer)

// 手动交易构建
tx := &data.Transaction{
    Nonce:    nonce,
    Value:    "1000000000000000000", // 1 EGLD
    RcvAddr:  receiverAddressString,
    SndAddr:  senderAddressString,
    GasPrice: 1000000000,
    GasLimit: 50000,
    Data:     []byte("备忘录"),
    ChainID:  "D",
    Version:  1,
}

// 签名交易
err = txBuilder.ApplySignature(tx, privateKey)
// tx.Signature, tx.SenderUsername 被更新

合约构建器(高级)

有特定的构建器用于智能合约交互(通常是生成的代码或自定义实现),但核心模式是:

  1. 创建 data.Transaction 结构体
  2. 填充字段(Data = 端点@参数1@参数2)
  3. 使用 TxBuilder 签名

令牌传输

ESDT传输需要特定的数据字段。

// 原生EGLD
tx.Value = "1000000000000000000"
tx.Data = []byte("")

// ESDT传输
// 函数:ESDTTransfer
// 参数:令牌标识符(十六进制),金额(十六进制)
tx.Value = "0"
tx.Data = []byte("ESDTTransfer@" + hexTokenId + "@" + hexAmount)

中继V3交易

构建中继调用的内部交易。

// 内部交易(用户)
innerTx := &data.Transaction{...}
// 签名内部交易
signature, _ := userPrivateKey.Sign(innerTxBytes)

// 中继者交易
relayerTx := &data.Transaction{
    Sender: relayerAddress,
    Data: []byte("relayedTx@" + innerTxBytesHex + "@" + signatureHex),
    ...
}

数据序列化

SDK使用 Marshalizer 接口(通常是JSON)。

import "github.com/multiversx/mx-sdk-go/core"

bytes, err := core.Marshalizer.Marshal(tx)

最佳实践

  1. 构建前验证字段
  2. 使用正确的ChainID(‘1’, ‘D’, ‘T’)
  3. Value 字段中将大整数处理为字符串
  4. Gas限制估计是手动的或通过代理模拟