You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取ESDT对应NFT品牌下全量NFT列表及通过rust SDK批量发EGLD

解答内容

概念澄清:NFT品牌与ESDT的区别

你所说的NFT品牌就是链上的NFT Collection,它不等同于ESDT,但是属于ESDT标准体系的一部分:ESDT是MultiversX链的原生代币标准,覆盖了同质化代币、半同质化代币、NFT、MetaESDT等多种代币类型,NFT Collection本质是标记了NonFungible属性的特殊ESDT品类,每一枚单独的NFT都是该Collection下带有唯一nonce编号的具体实例。

获取指定Collection下所有已发行NFT的方法

你可以直接通过链上节点的查询接口,过滤你创建的Collection的唯一标识符,拉取该标识符下所有带有有效nonce的NFT实例即可。如果是你自己发行的Collection,也可以直接遍历你发行时生成的所有nonce编号,每个编号对应唯一NFT。

Rust SDK 编程获取NFT列表的实现

使用MultiversX Rust SDK操作时,核心逻辑是调用网关的账户代币查询接口,按Collection标识符筛选即可,参考代码片段如下:

use multiversx_sdk::gateway::GatewayProxy;
use multiversx_sdk::wallet::Address;

async fn fetch_collection_nfts(
    collection_identifier: &str,
    collection_owner: &Address
) -> Result<Vec<EsdtToken>, Box<dyn std::error::Error>> {
    // 初始化网关,网关地址替换为你使用的节点地址即可
    let gateway = GatewayProxy::new("替换为你的MultiversX网关地址".to_string());
    let all_owner_tokens = gateway.get_account_esdts(collection_owner).await?;
    // 筛选对应Collection的NFT实例
    let collection_nfts = all_owner_tokens
        .into_iter()
        .filter(|token| {
            token.token_identifier == collection_identifier 
            && token.token_type == "NonFungible"
        })
        .collect();
    Ok(collection_nfts)
}

其中collection_identifier就是你创建NFT品牌时生成的唯一串号,格式一般为XXX-abc123。

批量给NFT持有者发送EGLD的高效方案

最高效的实现是用MultiversX原生支持的批量转账功能,比单独逐笔发交易的成本和耗时低一个数量级:

  • 先从你获取到的NFT列表中,提取每枚NFT的当前持有者地址,先做去重处理,避免给同一地址重复转账
  • 把去重后的地址列表按每100个一组拆分,这是单笔批量转账支持的最大地址数
  • 每组构造一笔批量EGLD转账交易,单组交易仅需支付一次基础gas费,确认速度和单笔转账完全一致。

内容的提问来源于stack exchange,提问作者Moebius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 11:54:02