MultiversXGoSDK核心网络操作Skill mvx_sdk_go_core

本技能涵盖 MultiversX 区块链的 Go SDK 核心网络操作,包括代理配置、数据读取、VM 查询和分片协调。适用于区块链开发、智能合约交互和网络优化。关键词:MultiversX, Go SDK, 区块链, 网络操作, 智能合约, 代理, VM 查询, 分片。

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

name: mvx_sdk_go_core description: 用于 MultiversX Go SDK 的核心网络操作 - 代理, VM 查询。

MultiversX SDK-Go 核心网络操作

本技能涵盖 blockchain 包和网络交互。

代理 (网络客户端)

设置代理以与区块链交互:

import (
    "github.com/multiversx/mx-sdk-go/blockchain"
    "github.com/multiversx/mx-sdk-go/core/http"
)

// 配置代理
args := blockchain.ArgsProxy{
    ProxyURL:            "https://devnet-gateway.multiversx.com",
    Client:              http.NewHttpClientWrapper(nil, ""),
    SameScState:         false,
    ShouldBeSynced:      false,
    FinalityCheck:       false,
    CacheExpirationTime: time.Minute,
    EntityType:          core.Proxy,
}

proxy, err := blockchain.NewProxy(args)

数据读取

// 获取账户
address := data.NewAddressFromBech32String("erd1...")
account, err := proxy.GetAccount(ctx, address)
// account.Nonce, account.Balance

// 获取网络配置
config, err := proxy.GetNetworkConfig(ctx)

// 获取交易
tx, err := proxy.GetTransaction(ctx, "txHash", true)

VM 查询 (智能合约读取)

从智能合约读取状态,无需发送交易。

argsQuery := blockchain.ArgsVmQueryGetter{
    Proxy:   proxy,
    Timeout: 10 * time.Second,
}
vmQueryGetter, err := blockchain.NewVmQueryGetter(argsQuery)

// 执行查询
response, err := vmQueryGetter.ExecuteQueryReturningBytes(
    contractAddress,
    "getFunctionName",
    [][]byte{arg1, arg2}, // 参数作为字节切片
)

// response 是 [][]byte

分片协调

使用分片地址。

// 创建协调器
coordinator, err := blockchain.NewShardCoordinator(3, 0) // 3 个分片,当前 0

// 获取地址的分片
shardID := coordinator.ComputeId(address)

最佳实践

  1. 重用代理: 它维护连接池/缓存
  2. 上下文: 始终传递带有超时的上下文,避免挂起
  3. VM 查询: 推荐用于读取状态(即时、免费)
  4. 错误处理: 检查特定的网络错误