名称: 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);
最佳实践
- 创建交易前始终同步随机数
- 关键操作使用
awaitCompletedTransaction
- 处理错误 - 网络调用可能失败
- 长操作使用适当超时
- 可能时批量交易使用
sendTransactions()