{"content":{"title":"如何使用 NFTScan 的 TON API 实现 NFT 应用开发?","body":"<!--StartFragment-->\r\n\r\n上周 NFTScan 开发者平台已上线了 TON 网络的 NFT API 服务，TON（The Open Network）是由 Telegram 团队打造的一条 Layer 1 高性能公链，采用自己的 TVM 虚拟机，与 EVM 不兼容。通过先进的技术架构实现每秒百万级 TPS 的高速处理，并支持智能合约和 DApp 开发。TON 采用了分片机制提升扩展性，同时通过数据分片等方式保证网络安全，旨在建立一个高速、安全、可扩展的去中心化网络，为构建 Web 3.0 生态打下坚实基础。 \r\n\r\n\r\n\r\n\r\n目前 TON 网络上已累计发行 NFT 资产 1,204,487 枚，NFT Collection 10,123 个，产生交易记录 2,888,936 条，有过交互的钱包地址 762,453 个，总交易额 15,083,265 TON。目前除了兼容 EVM 的 15 条链， NFTScan 还支持了另外 4 条是非 EVM 区块链：Bitcoin、Aptos、Solana。\r\n\r\n\r\n\r\n\r\nTON NFTScan ：[https://ton.nftscan.com/chart](https://xie.infoq.cn/link?target=https%3A%2F%2Fton.nftscan.com%2Fchart)\r\n\r\n\r\n\r\n\r\n\r\n![](https://static001.geekbang.org/infoq/cd/cd877647ed9d94de3a90fd8c1ac232bc.png)\r\n\r\n\r\n\r\n\r\n**怎样访问 NFTScan NFT API**\r\n\r\n**创建 NFTScan 开发者账号**\r\n\r\n在开始使用 NFTScan API 之前，首先需要访问开发者网站并创建一个账户。前往 NFTScan 官方网站点击 NFTScan API “Sign Up”按钮进行注册。[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\r\n\r\n\r\n![](https://static001.geekbang.org/infoq/e7/e716243785661283940c7332ac4dd370.png)\r\n\r\n\r\n\r\n\r\n登录后在 Dashboard（面板）上找到自己独有的 API KAY，将其复制。访问 API 文档，将自己的 API KEY 输进 API 文档的相应位置。根据文档的指引，就可以开始使用 API 服务了。在 API 文档中，开发者可以找到多种可供选择的接口模式，根据需求来选择最合适的接口。\r\n\r\n\r\n\r\n\r\n![](https://static001.geekbang.org/infoq/2a/2a36dbcb7aa6c9b008a345724ab09686.png)\r\n\r\n\r\n\r\n\r\n在 Dashboard 中，开发人员还可以查看自己 API 使用情况的统计数据，帮助记录历史使用数据。不仅如此，NFTScan 还为每位注册开发者提供 1M CU 的 API 调用服务，用于请求所有的 NFT API 接口，并且 CU 永不过期，用完为止！\r\n\r\n\r\n\r\n\r\n**查看 TON 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**TON API** 主要包括了以下五个类型接口：\r\n\r\nRetrieve Asset/Retrieve Transaction/Retrieve Collection/Statistics/Refresh Metadata，包括里面一些 API 核心的字段的整体介绍和说明，方便开发者知道怎么去获取数据利用这些信息服务于自己正在构建的 Dapp 服务。\r\n\r\n**Retrieve Asset 系列**：\r\n\r\n1. **Get NFTs by account：**/ton/account/own/{account_address}\r\n2. **Get all NFTs by account：**/ton/account/own/all/{account_address}\r\n3. **Get minted NFTs by account：**/sol/account/mint/{account_address}\r\n4. **Get NFTs by contract：**/ton/assets/collection/{contract}\r\n5. **Get single NFT：**/ton/assets/{token_address}\r\n6. **Get multiple NFTs：**/ton/assets/batch\r\n\r\n这个类型的 API 为开发者提供了简单高效的方式去获取各种 NFT 数据，包括根据用户账户或合约地址获取相关 NFT 列表，获取单个或多个 NFT 的详细信息等。开发者可以通过这类接口直接获取链上 NFT 的基础信息、元数据等，无需自己提取和处理链上原始数据。这类接口减轻了链上数据复杂度，大大降低获取 NFT 细节数据的难度，是开发基于 TON NFT 的 DApp、数据分析等应用的重要基础。\r\n\r\n**Retrieve Transaction 系列：**\r\n\r\n1. **Get transactions by account：**/ton/transactions/account/{account_address}\r\n2. **Get transactions by contract：**/ton/transactions/collection/{contract}\r\n3. **Get transactions by NFT：**/ton/transactions/{token_address}\r\n\r\n这类型的接口可以方便获取 TON NFT 在链上发生的各种交易信息，包括根据账户、集合、资产地址等获取该 NFT 的历史交易记录，返回每笔交易的关键数据。这类接口提供链上原始的区块事件数据，开发者无需处理链上提取，就可以通过简单的接口调用获得需要的 TON NFT 交易数据。获得这些数据后，开发者可以基于此实现数据分析、交易系统等应用。\r\n\r\n**Retrieve Collection 系列：**\r\n\r\n1. **Get an NFT collection：**/ton/collections/{collection}\r\n2. **Search NFT collections：**/ton/collections/filters\r\n\r\n通过指定集合地址或过滤条件搜索 NFT Collection，返回匹配条件的集合列表。开发者可以利用这些接口获得任意项目的概况及列表，并基于此开发应用程序，例如数据分析平台可以统计每个集合的情况，可以展示热门 NFT Collection 的信息。\r\n\r\n**Statistics 系列：**\r\n\r\n1. **Trade Ranking：**/ton/statistics/ranking/trade\r\n2. **Collection Statistics：**/ton/statistics/collection/{collection}\r\n\r\nTrade Ranking 接口可以获取 TON 链上 NFT 交易排行榜，Collection Statistics 接口可以通过指定项目地址，获取该集合的关键统计数据等。这些统计类接口可以大幅简化开发者获取 NFT 数据来进行统计分析的工作，构建 NFT 交易分析平台，或者为 NFT 应用提供关键的统计参数。\r\n\r\n**1. Refresh Metadata**：/ton/refresh/metadata\r\n\r\n这个接口用来提交刷新指定 NFT 资产的元数据后台任务。\r\n\r\n\r\n\r\n\r\n![](https://static001.geekbang.org/infoq/b0/b0b628904b41fbfe8064c2c77d6305b5.png)\r\n\r\n\r\n\r\n\r\n**查询相关 API **\r\n\r\n\r\n\r\n\r\n**1/ Get NFTs by contract：**/ton/assets/contract/{contract_address}\r\n\r\n通过 NFTScan TON API 的该接口，开发者可以通过检索一个 NFT 合约地址，并返回整个 Contract 的一组 NFT 信息列表，NFT 按代币地址升序排列。\r\n\r\n这里我们输入合约地址：EQCA14o1-VWhS2efqoh\\_9M1b_A9DtKTuoqfmkn83AbJzwnPi\r\n\r\n\r\n\r\n\r\n![](https://static001.geekbang.org/infoq/85/85dfefc32e76f8ed53d44b3ec34819e4.png)\r\n\r\n\r\n\r\n\r\n点击 Try it 将返回该合约地址下的所有 NFT 资产的详细信息返回数据等等，数据默认分页返回，可通过 limit 和 cursor 参数控制每页数量和页码，返回数据包括每个 NFT 的 token address、token id、metadata、owner 地址等数据。返回数据默认分页返回，可通过 limit 和 cursor 参数控制每页数量和页码，灵活获取不同粒度的 NFT 数据。获得返回的数据后，开发者可以构建应用展示 NFT 详情,或者提取数据进行后续分析处理。\r\n\r\n\r\n\r\n\r\n可以看到该合约地址下共有 102185 个 Items，数据显示如下：\r\n\r\n\r\n\r\n\r\n![](https://static001.geekbang.org/infoq/41/4183486021b727d46cdc79a5a73f7660.png)\r\n\r\n\r\n\r\n\r\n**2/ Get transactions by account：**/ton/transactions/account/{account_address}\r\n\r\n通过调用该接口并输入账户地址，查询参数可选择指定 NFT 合约地址进行查询，开发者可以轻松获得该钱包地址作为 sender 或 receiver 参与的所有历史 NFT 转账交易数据，包括每笔交易的区块高度、时间戳、Token ID、交易价格、交易类型等信息。这里我们查询的地址为：\r\n\r\nEQBwPvcqbRCICLo3cWOiFPO1QdmNZBcYAfpvwEaxjr9hKP-R\r\n\r\n\r\n\r\n\r\n![](https://static001.geekbang.org/infoq/f1/f195bc86beac8b841220180085351ad7.png)\r\n\r\n\r\n\r\n\r\n**3/ Trade Ranking: **/ton/statistics/ranking/trade\r\n\r\n该接口可以帮助开发者快速获取 TON 生态中 NFT 项目的 Ranking 排名数据。该接口会返回按照筛选条件如交易额从高到低排列的一组数据。通过该排名列表，开发者可以清晰地看到交易最活跃的 NFT 项目，判断不同项目的流动性情况，确定潜力项目或需要更多研究的项目。\r\n\r\n我们可以查看查询参数 time：15m/30m/1h/6h/12h/1d/7d/30d；排序字段：volume/sales/floor_price/average_price 等进行条件筛选的 NFT 交易排名数据统计，可参考 TON NFTScan Trading\r\n\r\n\r\n\r\n![](https://static001.geekbang.org/infoq/e0/e0a1eaabedea4aa484bab65556bd63fc.png)\r\n\r\n\r\n\r\n\r\n**构建相关 API 请求**\r\n\r\n\r\n\r\n\r\n开发者在 NFTScan 的 API 文档中找到所需的 TON API 接口和参数后，可以使用选择的编程语言(如 Python、Java、JavaScript 等)编写 API 请求代码。下面是一些通用的步骤，以及一个示例来说明如何使用 Python 编写 TON API 请求代码:\r\n\r\n\r\n\r\n\r\n1、首先，导入所选编程语言中的 HTTP 请求库。在 Python 中，通常会使用 requests 库\r\n\r\n2、定义 NFTScan API 的基本 URL 和所需的参数。在 API 文档中找到合适的接口和参数\r\n\r\n3、将参数添加到基本 URL 和端点中，构建完整的 API 请求 URL\r\n\r\n4、使用所选编程语言的 HTTP 库发起请求，通常是一个 GET 请求\r\n\r\n5、检查 HTTP 响应的状态码，通常状态码为 200 表示请求成功\r\n\r\n\r\n\r\n\r\n![](https://static001.geekbang.org/infoq/fa/fa04c1eb90eb45842797db0d2d0f2285.png)\r\n\r\n\r\n\r\n\r\n这些通用步骤可以用于与 NFTScan API 或其他类似的 API 进行交互，根据 API 文档中提供的信息来构建和发起请求，以及处理返回的数据。\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、Aptos 等在内的 19 条主流区块链网络。NFTScan 团队致力于为数以亿计的 Web3 用户提供简洁高效的 NFT 检索服务，为新一代金融科技公司提供安全稳定的多链 NFT 索引服务，用数据来推动 NFT 生态的繁荣发展！目前，NFTScan 在为包括 CMC、Binance NFT、Bybit、KuCoin、HashKey Group 、Mask Network、imToken、Enjin、Coin98 等在内的 5000+ 开发者提供多链 NFT 数据支持！**\r\n\r\n<!--EndFragment-->"},"author":{"user":"https://learnblockchain.cn/people/10111","address":null},"history":null,"timestamp":1697795709,"version":1}