MultiversXSDK-JS代币操作Skill mvx_sdk_js_tokens

这个技能用于处理 MultiversX 区块链上的代币操作,包括 ESDT、NFT 和 SFT 的转移、发行、角色管理和查询,通过 TypeScript/JavaScript SDK 实现。关键词:MultiversX, 区块链, 代币, SDK, JavaScript, TypeScript, 代币转移, 代币发行, NFT, SFT, 角色管理, 代币查询。

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

name: mvx_sdk_js_tokens description: 用于 MultiversX TypeScript/JavaScript SDK 的代币操作 (ESDT/NFT/SFT)。

MultiversX SDK-JS 代币操作

这个技能涵盖 ESDT (可替换代币)、NFT 和 SFT 代币操作。

代币转移

原生 EGLD 转移

const controller = entrypoint.createTransfersController();

const tx = await controller.createTransactionForTransfer(account, nonce, {
    receiver: Address.newFromBech32("erd1..."),
    nativeAmount: 1000000000000000000n  // 1 EGLD (18 位小数)
});

ESDT 代币转移

import { TokenTransfer } from "@multiversx/sdk-core";

const tx = await controller.createTransactionForTransfer(account, nonce, {
    receiver: receiverAddress,
    tokenTransfers: [
        TokenTransfer.fungibleFromBigInteger("TOKEN-abc123", 1000000n)
    ]
});

NFT/SFT 转移

const tx = await controller.createTransactionForTransfer(account, nonce, {
    receiver: receiverAddress,
    tokenTransfers: [
        TokenTransfer.nftFromBigInteger("NFT-abc123", 1n, 1n)  // nonce=1, quantity=1
    ]
});

代币发行

发行可替换代币

const controller = entrypoint.createTokenManagementController();

const tx = await controller.createTransactionForIssuingFungible(account, nonce, {
    tokenName: "MyToken",
    tokenTicker: "MTK",
    initialSupply: 1_000_000_000000n,  // 带小数位
    numDecimals: 6n,
    canFreeze: false,
    canWipe: true,
    canPause: false,
    canChangeOwner: true,
    canUpgrade: true,
    canAddSpecialRoles: true
});

const txHash = await entrypoint.sendTransaction(tx);
const outcome = await controller.awaitCompletedIssueFungible(txHash);
const tokenIdentifier = outcome[0].tokenIdentifier;

发行半可替换代币

const tx = await controller.createTransactionForIssuingSemiFungible(account, nonce, {
    tokenName: "MySFT",
    tokenTicker: "SFT",
    canFreeze: false,
    canWipe: true,
    canPause: false,
    canTransferNFTCreateRole: true,
    canChangeOwner: true,
    canUpgrade: true,
    canAddSpecialRoles: true
});

注册和设置 NFT 角色

const tx = await controller.createTransactionForRegisteringAndSettingRoles(account, nonce, {
    tokenName: "MyNFT",
    tokenTicker: "MNFT",
    tokenType: "NonFungibleESDT"
});

代币角色管理

// 设置特殊角色
const tx = await controller.createTransactionForSettingSpecialRole(account, nonce, {
    tokenIdentifier: "TOKEN-abc123",
    user: userAddress,
    addRoleLocalMint: true,
    addRoleLocalBurn: true
});

代币查询

const provider = entrypoint.createNetworkProvider();

// 获取特定代币
const token = await provider.getTokenOfAccount(address, "TOKEN-abc123");

// 获取所有可替换代币
const tokens = await provider.getFungibleTokensOfAccount(address);

// 获取所有 NFT
const nfts = await provider.getNonFungibleTokensOfAccount(address);

最佳实践

  1. 小数位: EGLD 有 18 位小数,自定义代币各不相同
  2. 代币标识符: 格式为 TICKER-hexhash (例如 USDC-a1b2c3)
  3. NFT nonces: 从 1 开始,每次铸造递增
  4. Gas: 代币操作需要约 60,000,000+ gas