name: mvx_sdk_go_interactors description: 用于在 Go 中与区块链交互的组件(钱包、事务交互器、Nonce 处理器)。
MultiversX SDK-Go 交互器
钱包管理
加载密钥和地址。
import "github.com/multiversx/mx-sdk-go/interactors"
wallet := interactors.NewWallet()
// 加载 PEM 文件
privateKey, err := wallet.LoadPrivateKeyFromPemFile("wallet.pem")
// 加载 Keystore 文件
privateKey, err := wallet.LoadPrivateKeyFromKeystoreFile("wallet.json", "password")
// 获取地址
address, err := wallet.GetAddressFromPrivateKey(privateKey)
bech32Address := address.AddressAsBech32String()
事务 Nonce 处理器 (V3)
自动获取和递增 nonce。推荐的管理 nonce 的方式。
import "github.com/multiversx/mx-sdk-go/interactors/nonceHandlerV3"
// 初始化处理器
args := nonceHandlerV3.ArgsAddressNonceHandler{
Proxy: proxy,
Address: address,
}
handler, err := nonceHandlerV3.NewAddressNonceHandler(args)
// 获取初始 Nonce
nonce, err := handler.GetNonce(ctx)
// 应用 Nonce 到事务并递增
handler.ApplyNonceAndGasPrice(tx) // 设置 tx.Nonce = 当前值,然后递增内部计数器
事务交互器
用于发送事务的高级包装器。
import "github.com/multiversx/mx-sdk-go/interactors"
// 设置
txInteractor, err := interactors.NewTransactionInteractor(proxy, txBuilder)
// 发送事务
txHash, err := txInteractor.SendTransaction(ctx, tx, privateKey)
// 发送多个事务
txHashes, err := txInteractor.SendTransactions(ctx, txs, privateKey)
创建钱包实例
// 辅助函数创建新密钥对
privateKey, publicKey := wallet.GeneratePrivateKey()
最佳实践
- 使用 NonceHandlerV3 进行稳健的 nonce 管理,尤其是在并发环境中
- 使用 TransactionInteractor 简化签名和发送流程
- 安全密钥管理 - 避免硬编码私钥