如何从Etherscan获取NFT-Token的所有集合名称及相关链上信息?
以太坊NFT信息(含集合名称)查询方案
一、通过Etherscan获取的实现方案
所有符合ERC721/ERC1155标准的NFT合约都默认实现了返回集合名称的name()公开读方法,Etherscan直接提供了合约方法的可视化调用入口和API调用能力:
- 单合约手动查询:在Etherscan搜索框输入目标NFT的合约地址,进入合约详情页后切换到「Contract」标签,选择
Read Contract功能区,找到name()方法点击调用,即可直接拿到该NFT集合的官方名称,同区域还能查询symbol、totalSupply等其他NFT相关基础信息。 - 批量程序化查询:可以调用Etherscan的合约读接口,参数传入目标合约地址、
name方法对应的ABI片段即可直接返回字符串格式的集合名称,无需自己对接链上节点。
二、直接从以太坊区块链读取的实现方案
直接调用链上合约的name()方法即可获取对应NFT集合名称,无需依赖第三方平台,具体实现步骤如下:
- 准备可用的以太坊主网RPC节点地址,可以选择公开RPC服务或者自行部署的全节点。
- 任选常用的以太坊开发库即可实现调用,以下是Ethers.js的最简实现示例:
const { ethers } = require("ethers"); // 连接以太坊主网RPC节点 const provider = new ethers.providers.JsonRpcProvider("替换为你的RPC地址"); // 只需要传入name方法对应的ABI片段即可,无需全量合约ABI const nftPartialAbi = [ "function name() view returns (string)" ]; // 实例化NFT合约对象,替换为目标NFT的合约地址 const nftContract = new ethers.Contract("替换为目标NFT合约地址", nftPartialAbi, provider); // 调用方法获取集合名称 async function fetchCollectionName() { const collectionName = await nftContract.name(); console.log("NFT集合名称:", collectionName); } fetchCollectionName();
- 如果需要获取全链所有NFT集合的名称,可先扫描链上所有合约部署交易,筛选出符合ERC721/ERC1155标准的合约地址列表,再批量调用上述
name()方法即可。
注意事项
- 极小部分非标准NFT合约未实现
name()方法,这类集合的名称需要结合链上元数据或者第三方标注补充。 - 全链批量扫描对RPC节点的请求配额要求较高,建议搭配本地节点或者高配额RPC服务使用。
内容的提问来源于stack exchange,提问作者Amin
相关产品推荐
相关产品推荐

