MultiversXSDK-JS核心操作技能Skill mvx_sdk_js_core

这个技能是关于 MultiversX 区块链的 TypeScript/JavaScript SDK 核心操作,专注于网络入口点、网络提供者和交易生命周期管理。关键词包括 MultiversX, SDK, TypeScript, JavaScript, 区块链, 核心操作, 网络入口点, 网络提供者, 交易, DApp开发, 链开发, 便于搜索和SEO。

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

名称: mvx_sdk_js_core 描述: MultiversX TypeScript/JavaScript 核心 SDK 操作 - 入口点、网络提供者和交易。

MultiversX SDK-JS 核心操作

此技能涵盖 @multiversx/sdk-core v15 库的基础构建块。

入口点

特定于网络的客户端,简化常见操作:

入口点 网络 默认 URL
DevnetEntrypoint 开发网 https://devnet-api.multiversx.com
TestnetEntrypoint 测试网 https://testnet-api.multiversx.com
MainnetEntrypoint 主网 https://api.multiversx.com
LocalnetEntrypoint 本地网 http://localhost:7950
import { DevnetEntrypoint } from "@multiversx/sdk-core";

// 默认 API
const entrypoint = new DevnetEntrypoint();

// 自定义 API
const entrypoint = new DevnetEntrypoint({ url: "https://custom-api.com" });

// 代理模式(网关)
const entrypoint = new DevnetEntrypoint({ 
    url: "https://devnet-gateway.multiversx.com", 
    kind: "proxy" 
});

入口点方法

方法 描述
createAccount() 创建新账户实例
createNetworkProvider() 获取底层网络提供者
recallAccountNonce(address) 从网络获取当前随机数
sendTransaction(tx) 广播单个交易
sendTransactions(txs) 广播多个交易
getTransaction(txHash) 通过哈希获取交易
awaitCompletedTransaction(txHash) 等待交易完成

网络提供者

底层网络访问:

提供者 用例
ApiNetworkProvider 标准 API 查询(推荐)
ProxyNetworkProvider 通过网关直接节点交互
const provider = entrypoint.createNetworkProvider();

// 或手动实例化
import { ApiNetworkProvider } from "@multiversx/sdk-core";

const api = new ApiNetworkProvider("https://devnet-api.multiversx.com", {
    clientName: "my-app",
    requestsOptions: { timeout: 10000 }
});

提供者方法

方法 描述
getNetworkConfig() 链 ID、气体设置等
getNetworkStatus() 当前纪元、随机数等
getBlock(blockHash) 获取区块数据
getAccount(address) 账户余额、随机数
getAccountStorage(address) 合约存储
getTransaction(txHash) 交易详情
awaitTransactionCompletion(txHash) 等待交易完成
queryContract(query) VM 查询(只读)

交易生命周期

// 1. 创建账户并同步随机数
const account = await Account.newFromPem("wallet.pem");
account.nonce = await entrypoint.recallAccountNonce(account.address);

// 2. 创建交易(通过控制器)
const controller = entrypoint.createTransfersController();
const tx = await controller.createTransactionForTransfer(
    account, 
    account.getNonceThenIncrement(),
    { receiver, nativeAmount: 1000000000000000000n }
);

// 3. 发送
const txHash = await entrypoint.sendTransaction(tx);

// 4. 等待完成
const result = await entrypoint.awaitCompletedTransaction(txHash);
console.log("状态:", result.status);

最佳实践

  1. 创建交易前始终同步随机数
  2. 关键操作使用 awaitCompletedTransaction
  3. 处理错误 - 网络调用可能失败
  4. 长操作使用适当超时
  5. 可能时批量交易使用 sendTransactions()