{"content":{"title":"如何使用 NFTScan NFT API 在 Polygon 网络上开发 Web3 应用","body":"<!--StartFragment-->\r\n\r\nPolygon 以前被称为 Matic Network，是一种扩展的解决方案，它提供多种工具来加快并降低区块链网络上交易的成本和复杂性。然而，其区块链上的大量活动使以太坊因增长的传输成本和拥挤的流量几乎瘫痪。Polygon 诞生的主要目的是帮助以太坊解决链中的拥塞问题，拥有大量侧链的多层次平台，以有效且具有成本效益的方式疏通主平台来扩展以太坊，并提供一个更简单的框架来构建互连网络。\r\n\r\n\r\n\r\n\r\n另一方面，Polygon 的另一个主要用途是改善用户体验。以太坊的手续费非常昂贵,普通用户无法负担且速度较慢。 Polygon 的高性能，低的手续费和速度可以解决一般的用户问题。Polygon 的 NFT 生态系统正在蓬勃发展，已经逐渐成为 Web2 公司 NFT 的首选目的地。\r\n\r\n\r\n\r\n\r\n就 NFTScan 数据来看，截至 11 月 3 日，Polygon 网络上已累计发行 NFT 资产 692,876,807 枚，NFT Collection 1,519,857 个，产生交易记录 2,472,505,127 条，有过交互的钱包地址 81,542,228 个，总交易额 974,589,451 MATIC。\r\n\r\n\r\n\r\nPolygon NFTScan：[https://polygon.nftscan.com/](https://xie.infoq.cn/link?target=https%3A%2F%2Fpolygon.nftscan.com%2F)\r\n\r\n\r\n\r\n\r\n![](https://static001.geekbang.org/infoq/f6/f6baa6f5df6e9a2bfc0ab67929b3d300.png)\r\n\r\n\r\n\r\n**怎样访问 NFTScan NFT API**\r\n\r\n\r\n\r\n\r\n**创建 NFTScan 开发者账号**\r\n\r\n在开始使用 NFTScan API 之前，首先需要访问开发者网站并创建一个账户。前往 NFTScan 官方网站点击 NFTScan API “Sign Up”按钮进行注册。\r\n\r\n[https://developer.nftscan.com/user/signup](https://xie.infoq.cn/link?target=https%3A%2F%2Fdeveloper.nftscan.com%2Fuser%2Fsignup)\r\n\r\n\r\n![](https://static001.geekbang.org/infoq/e7/e716243785661283940c7332ac4dd370.png)\r\n\r\n登录后在 Dashboard（面板）上找到自己独有的 API KAY，将其复制。访问 API 文档，将自己的 API KEY 输进 API 文档的相应位置。根据文档的指引，就可以开始使用 API 服务了。在 API 文档中，开发者可以找到多种可供选择的接口模式，根据需求来选择最合适的接口。\r\n\r\n![](https://static001.geekbang.org/infoq/2a/2a36dbcb7aa6c9b008a345724ab09686.png)\r\n\r\n在 Dashboard 中，开发人员还可以查看自己 API 使用情况的统计数据，帮助记录历史使用数据。不仅如此，NFTScan 还为每位注册开发者提供 1M CU 的 API 调用服务，用于请求所有的 NFT API 接口，并且 CU 永不过期，用完为止！\r\n\r\n\r\n\r\n\r\n**查看 Polygon NFT API 文档**\r\n\r\n\r\n\r\n\r\n在成功注册开发者账号获取 API Key 后，需要查看 NFTScan API 文档。API 文档包含了所有可以使用的 API 端点和参数，以及如何构建请求和处理响应的详细信息。请认真阅读 API 文档，并确保理解如何使用 API 来获取您需要的数据。NFTScan API 服务致力于帮助开发者改善获取 NFT 数据分析体验。\r\n\r\n\r\n\r\n\r\nNFTScan 目前拥有全网最大最全的 NFT Collection 库，已支持 Ethereum、Solana、BNBChain、Bitcoin、TON、Polygon、zkSync、Aptos、Linea、Base、Avalanche、Arbitrum、Optimism、Scroll、Fantom、Moonbeam、PlatON、Cronos、Gnosis 19 条区块链的 NFT 全量数据，所涵盖的 NFT 数据全、种类丰富，提供一整套的接口来获得 ERC721 和 ERC1155 资产以及交易、项目、市场统计等信息，现在支持 60 多个针对 EVM 兼容链的公共接口，以及针对 Solana、Aptos、Bitcoin、TON 的一批相同模型的接口，很大程度上满足了开发者索引多种类型的 NFT 数据的需求。\r\n\r\n\r\n\r\n\r\n![](https://static001.geekbang.org/infoq/6e/6e5ffe734d8eba168262ad2ad915bee0.png)\r\n\r\n\r\n\r\n\r\n**Polygon NFT API 模型**\r\n\r\n\r\n\r\n\r\n主要包括了以下三个模型接口，包括里面一些 API 核心的字段的整体介绍和说明，方便开发者知道怎么去获取数据利用这些信息服务于自己正在构建的 Dapp 服务。\r\n\r\n**Assets API**：\"Assets\"是 NFT 中最关键的数据字段，用于唯一标识和描述数字资产。开发者可以通过提取 Polygon 区块链上 NFT 的\"Assets\"数据来获取全面的了解，并构建相关应用。\"Assets\"对象提供了数字资产的唯一标识以及其整个生命周期的数据，为开发者理解和应用 NFT 提供了基础。\r\n\r\n**Transactions API**：交易模型代表了区块链上一个 NFT 资产的全量交易数据，为开发者提供 NFT 的完整生命周期交易信息。包括 NFT 的 mint、转移、销售、和其他交易活动，为开发者提供了深入了解 NFT 资产在 Polygon 生态系统中的流动和演变过程的机会。NFTScan 不断地汇总来自各个区块链网络的 NFT 交易市场和相关交易合约信息，目前 NFTScan 已收录用于追踪和了解 NFT 市场的动态，同时也有助于开发者构建基于 NFT 的应用程序和工具。\r\n\r\n**Collections API**：NFTScan 获取与 NFT Collections 相关的描述、社交媒体及其他基本信息等都链下数据。NFTScan 通过各个区块链网络中最主流的 NFT 市场提供的 API 获取这些信息。此外当前地板价信息是基于 NFT 市场的订单信息的集中式数据，也是通过 API 可获取的。\r\n\r\n\r\n\r\n\r\n![](https://static001.geekbang.org/infoq/19/196bf41534e0e0e1f54b10ec2cc4a149.png)\r\n\r\n\r\n\r\n\r\n**Polygon NFT API 检索**\r\n\r\n\r\n\r\n\r\n**1/Retrieve Assets 系列**\r\n\r\n* Get NFTs by account（通过钱包地址检索 NFT）\r\n* Get all NFTs by account（检索钱包地址的所有 NFT，并根据合约地址对 NFT 进行分组，如果账户地址拥有的 NFT 总数超过 2000 个，则返回的 NFT 将限制在 2000 个以下。在这种情况下，开发者和用户可以通过分页查询请求按账户获取该账户地址拥有的所有 NFT）\r\n* Get minted NFTs by account（检索该钱包地址的 Mint 过的 NFT）\r\n* Get NFTs by contract（通过合约地址检索 NFT，并按 token_id 升序排序）\r\n* Get single NFT（检索单个 NFT）\r\n* Get multiple NFTs（同时检索多个合约地址的 NFT）\r\n* Search NFTs（该接口通过在请求正文中应用搜索筛选器来返回 NFT 资产列表。资产按 nftscan_id 升序排序）\r\n* Get NFTs by attributes（该接口返回一组属于具有属性的 NFT 合约地址的 NFT，NFT 按 token_id 升序排序）\r\n* Get all multi-chain NFTs by account（该接口返回账户地址拥有的所有多链 NFT，NFT 根据合约地址进行分组）\r\n\r\n\r\n\r\n\r\n这里我们通过 **Get NFTs by contract** 接口为\r\n\r\n“/v2/assets/{contract_address}”\r\n\r\n来检索一个合约地址下的 NFT 详情信息，路径参数包括 contract_address 作为选择，这里我们查询的是 **Owlpha**下的 NFT。\r\n\r\n\r\n\r\n\r\n![](https://static001.geekbang.org/infoq/1b/1b23097da7ef49c31729bd6d5029c4bd.png)\r\n\r\n\r\n\r\n\r\n点击 Try it，数据返回如下，数据响应结果显示该 NFT Collection 所以 item 的基础数据及元数据信息，这里我们选择了 **Owlpha**，可以看到项目下一共 3333 个 Items，返回数据按照 token_id 进行排序，例如 id 为 0 的 item：\r\n\r\n\r\n\r\n1\\)单个 item 基础数据：\r\n\r\n0x12aa01f646fe5c993c66c9c86eddad4e514f6cbc 及名称为 **Owlpha**，这里查询的 NFT Token id 为 0，在项目中的占比为 1，协议标准为 erc721，Mint 时的钱包地址/持有者钱包地址，被铸造时的时间戳/Mint 的哈希地址/Token URI 的地址。\r\n\r\nlatest_trade_price(上次成交价)/latest_trade_symbol(上次成交价的货币)，latest_trade_timestamp(上次成交时间戳)当前显示 null，返还数值空，表示该项目未进行过交易。\r\n\r\n\r\n\r\n\r\n2\\)元数据：从该项目的元数据可以看出 Metadata 数据托管在 ipfs 上，格式为 image/png，存储路径以及为对该图片的细节特征描述。\r\n\r\n\r\n\r\n\r\n3\\)稀有度描述：得分为 0.9080396907866151，综合稀有度排名为 2494 名。​\r\n\r\n\r\n\r\n\r\n![](https://static001.geekbang.org/infoq/61/61af91281a924ab19e07766a4459e9d6.png)\r\n\r\n\r\n\r\n\r\n**2/ Retrieve Transactions 系列**\r\n\r\n* Get transactions by account（该接口返回钱包地址的 NFT 交易列表）\r\n* Get transactions by contract（该接口返回 NFT 合约地址的 NFT 交易列表）\r\n* Get transactions by NFT（该接口返回单个 NFT 的 NFT 交易列表）\r\n* Search transactions（该接口返回在请求正文中应用搜索过滤器来返回 NFT 交易列表）\r\n* Get transactions by to address（该接口返回按交易参数过滤的 NFT 交易列表）\r\n* Get transactions by hash（该接口返回根据交易哈希列表查询到的交易记录）\r\n\r\n\r\n\r\n\r\n这里我们通过 **Get transactions by contract**\r\n\r\n“/v2/transactions/{contract_address}”这个接口，检索某 NFT 合约地址的 NFT 交易记录，查询参数可选择交易的 NFT 事件类型（**Mint/Transfer/Sale/Burn**），使用 ';' 分隔多个事件。​\r\n\r\n同样这里我们检索 **Owlpha** 的 NFT 交易记录。按照 Mint 的事件类型，结果响应数据包含这个 NFT Collection 下所有的 Items Mint 的所有关键数据，如交易哈希值、From 和 To 地址、区块信息、消耗 Gas、交易时间戳等基础数据等 NFT 交易的特征信息。\r\n\r\n\r\n\r\n\r\n![](https://static001.geekbang.org/infoq/1a/1a201420d956a85ea9db598fcaa58ddf.png)\r\n\r\n\r\n\r\n\r\n**3/ Retrieve Collections 系列**\r\n\r\n* Get an NFT collection（根据 Collection 的合约地址查询详情，包括概览及按照描述对 Item 进行分类，持有者分布、平均价格、地板价等基本概括信息）\r\n* Search NFT collections（此接口通过在请求正文中应用搜索过滤器来返回 Collection 列表的信息，Collection 按部署块编号升序排序）\r\n* Get NFT collections by account（该接口返回具有给定账户地址的项目列表信息，Collection 按地板价从高到低排序）\r\n* Get NFT collections by ranking（该接口返回具有给定排序字段的项目列表信息，Collection 按给定的排序字段和给定的排序方向排序）\r\n\r\n\r\n\r\n\r\n这里我们通过接口 **Get an NFT collection**\r\n\r\n“/v2/collections/{contract_address}”检索地址为 \r\n\r\n0x12aa01f646fe5c993c66c9c86eddad4e514f6cbc 名称为 **Owlpha **的详情信息：\r\n\r\n\r\n\r\n\r\n![](https://static001.geekbang.org/infoq/9a/9ae70e5981defbc8383b3eef9d7f197c.png)\r\n\r\n\r\n\r\n\r\n**4/ Collection Statistics：Collection 统计分析系列**\r\n\r\n* Collection Statistics（该接口提供 NFT Collection 的分析统计概览数据）\r\n* Collection Trade Distribution（该接口主要提供项目交易分布）\r\n* Collection Trending Statistics（主要返回一个项目的 Trading 统计排序）\r\n* Collection Holding Amount Distribution（该接口可返回 NFT 项目持有量的分布信息）\r\n* Collection Holding Period Distribution（数据返回 NFT 项目持有期分布信息）\r\n* Collection Blue Chip Statistics（蓝筹项目统计概览数据）\r\n* Collection Blue Chip List（该项目涉及的蓝筹项目清单，可参考 NFTScan Blue Chip Collection）\r\n* Collection Top Holder（该 Collection 的顶级持有者分布）\r\n\r\n\r\n\r\n\r\n这里我们通过接口 **Collection Top Holder** \r\n\r\n“/v2/statistics/collection/holder/{contract_address}”主要返回一个 NFT Collection 下的持有量分布，可参考 NFTScan Holders：[https://www.nftscan.com/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d?module=Holders](https://xie.infoq.cn/link?target=https%3A%2F%2Fwww.nftscan.com%2F0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d%3Fmodule%3DHolders)\r\n\r\n\r\n\r\n\r\n\r\n![](https://static001.geekbang.org/infoq/ad/ad35089af72120d7af843f0e1002037f.png)\r\n\r\n\r\n\r\n\r\n**5/ Account Statistics 系列**\r\n\r\n* Account Overview Statistics（该接口返回账户地址的概览统计信息，参考 NFTScan Overview）\r\n* Account Holding Distribution（该接口返回账户地址的 NFT 持有分布统计信息，参考 NFTScan Portfolio）\r\n* Account Holding NFT Trending（该接口返回账户地址的 NFT 持有量或数量统计信息，参考 NFTScan Portfolio）\r\n\r\n\r\n\r\n\r\n**6/ Analytic Statistics 系列**\r\n\r\n该系列接口通常用于获取 NFTScan Polygon 网络上各与数据分析和统计有关的信息，如 Trade Ranking、Mint Amount 等这类接口允许开发者或用户查询、分析、和检索与特定数据集或指标相关的统计数据。可以用于各种用途，包括市场分析、趋势追踪、投资决策、以及了解特定数据的性质。\r\n\r\n参考：[https://polygon.nftscan.com/analytics](https://xie.infoq.cn/link?target=https%3A%2F%2Fpolygon.nftscan.com%2Fanalytics)\r\n\r\n\r\n\r\n\r\n\r\n![](https://static001.geekbang.org/infoq/30/3018a42f02c4f3af9c53796e3b25f284.png)\r\n\r\n\r\n\r\n\r\n**7/ Refresh Metadata**\r\n\r\n* Refresh NFT metadata\r\n* Refresh NFT metadata by contract\r\n\r\nRefresh Metadata 这类接口可以帮助开发者或用户提交后台刷新元数据任务，该任务审核后会刷新提交的指定 Item 或整个合约元数据。\r\n\r\n\r\n\r\n\r\n**8/ Other**\r\n\r\n* Get latest block number（返回 NFTScan 已到达的最新块号）\r\n* Get NFT amount by account（根据请求体中的搜索列表返回账户地址拥有的 ERC721 和 ERC1155 NFT 数量信息）\r\n* Get NFT owners by contract（返回 ERC721 NFT 合约地址的所有者列表，NFT 按 token_id 升序排序）\r\n* Get owners by an NFT（返回 ERC1155 NFT 的所有者列表， NFT 按 account_address 升序排序）\r\n\r\n\r\n\r\n**构建相关 NFT API 请求**\r\n\r\n当开发者在 NFTScan 的 API 文档中找到所需的 Polygon API 接口和参数后，可以使用他们选择的编程语言（例如 Python、Java、JavaScript 等）来编写 API 请求代码。以下是一个示例，演示如何使用 Python 来请求一个 NFT 合约地址的交易记录。在这个示例中，我们使用的合约地址是\r\n\r\n0x12aa01f646fe5c993c66c9c86eddad4e514f6cbc，\r\n\r\n并且使用 NFT 接口“/v2/transactions/{contract_address}”​\r\n\r\n\r\n`import requests\r\n\r\n# Define the API endpoint and contract address\r\napi_endpoint = \"https://api.nftscan.com/v2/transactions/\"\r\ncontract_address = \"0x12aa01f646fe5c993c66c9c86eddad4e514f6cbc\"  # Replace with the actual contract address\r\n\r\n# Make the API request\r\nresponse = requests.get(api_endpoint + contract_address)\r\n\r\n# Check the response status code\r\nif response.status_code == 200:\r\n    # Parse the JSON data from the API response\r\n    transactions = response.json()\r\n    # Process the transaction records for the NFT contract address...\r\n    for transaction in transactions:\r\n        print(\"Transaction Hash:\", transaction[\"hash\"])\r\n        print(\"Block Number:\", transaction[\"blockNumber\"])\r\n        # You can add more handling for transaction information...\r\nelse:\r\n    print(\"API request failed, status code:\", response.status_code)\r\n`\r\n\r\n在上述示例中，我们构建了 API 端点和合约地址，然后使用 requests.get 方法发起 GET 请求以获取 NFT 合约地址的交易记录。如果请求成功，开发者可以从 API 响应的 JSON 数据中提取交易信息并进行处理。\r\n\r\n***\r\n\r\n**About NFTScan**\r\n\r\n\r\n\r\n\r\n**NFTScan 成立于 2021 年初，总部位于香港，是全球领先的 NFT 数据基础设施服务商，目前已支持 Bitcoin、Ethereum、BNBChain、Polygon、Solana、TON、Arbitrum、Optimism、zkSync、Base、Scroll、Aptos 等在内的 19 条主流区块链网络。NFTScan 团队致力于为数以亿计的 Web3 用户提供简洁高效的 NFT 检索服务，为新一代金融科技公司提供安全稳定的多链 NFT 索引服务，用数据来推动 NFT 生态的繁荣发展！目前，NFTScan 在为包括 MetaMask、CMC、Binance NFT、Bybit、KuCoin、HashKey Group 、Mask、imToken、Enjin、Coin98 等在内的 5000+ 开发者提供多链 NFT API 数据服务！**\r\n\r\n<!--EndFragment-->"},"author":{"user":"https://learnblockchain.cn/people/10111","address":null},"history":"QmXadgyoz8WGbZ5G4gdAQ9fMLm7pKGwpjGmzxfj4CZgCFL","timestamp":1698993270,"version":1}