如何利用 NFTScan NFT API 在 Bitcoin 网络上开发 Web3 应用
![如何利用 NFTScan NFT API 在 Bitcoin 网络上开发 Web3 应用](https://static001.geekbang.org/infoq/d1/d1c5fabea9838f69111affc065324d40.png)
2024 年 5 月 16 号,NFTScan 团队正式全面升级了 Bitcoin NFT 浏览器。此次 Bitcoin NFTScan 浏览器对 Ordinals 铭文板块进行了全面升级,优化了 NFT 数据解析以及来自不同交易市场的交易解析功能等等。
目前,NFTScan 开发者平台也已经同步更新了 Bitcoin 网络的 NFT API 数据服务,除了此前对外开放的多个 API 查询接口。NFTScan 作为 Bitcoin 生态的 NFT 基础设施,将持续不断地进行功能开发和服务开放,为 Bitcoin 生态内的开发者和 NFT 用户提供优质的 NFT API 数据服务和钱包地址 NFT 资产数据搜索查询服务。
对 Ordinals 铭文数据的全面升级,更新包括但不限于:
根据 Ordinals 官方最新协议全面优化 NFT 数据解析体系,确保铭文数据正确无遗漏;
新增收录 unisat 和 OKX 官方合集信息,Collection 归集维度更丰富;
新增交易市场交易解析,可区分来自 unisat、OKX 和 MagicEden 的 NFT 铭文买卖事件;
此次升级新增:“Retrieve BRC-20 Tick"、"Retrieve BRC-20 Balances"、"MerlinProtocol BRC-20 Indexer" 三个系列的 API 接口,满足各种业务场景下对 NFT 数据的索引需求。
![](https://static001.geekbang.org/infoq/22/2261138c4a707f28c349ed3aa6bfbefe.png)
怎样访问 NFTScan NFT API
1/ 创建 NFTScan 开发者账
在开始使用 NFTScan API 之前,首先需要访问开发者网站并创建一个账户。前往 NFTScan 官方网站点击 NFTScan API “Sign Up”按钮进行注册。https://developer.nftscan.com/user/signup
![](https://static001.geekbang.org/infoq/eb/eb519c19e6af3b9fbd9ffdecb5696244.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
登录后在 Dashboard(面板)上找到自己独有的 API KAY,将其复制。访问 API 文档,将自己的 API KEY 输进 API 文档的相应位置。根据文档的指引,就可以开始使用 API 服务了。在 API 文档中,开发者可以找到多种可供选择的接口模式,根据需求来选择最合适的接口。
![](https://static001.geekbang.org/infoq/f0/f0231e2323aa5d447fa2b907e88393ec.webp?x-oss-process=image%2Fresize%2Cp_80%2Fformat%2Cpng)
在 Dashboard 中,开发人员还可以查看自己 API 使用情况的统计数据,帮助记录历史使用数据。不仅如此,NFTScan 还为每位注册开发者提供 1M CU 的 API 调用服务,用于请求所有的 NFT API 接口,并且 CU 永不过期,用完为止!
查看 Bitcoin NFT API 文档
在成功注册开发者账号获取 API Key 后,需要查看 NFTScan API 文档。API 文档包含了所有可以使用的 API 端点和参数,以及如何构建请求和处理响应的详细信息。请认真阅读 API 文档,并确保理解如何使用 API 来获取您需要的数据。NFTScan API 服务致力于帮助开发者改善获取 NFT 数据分析体验。
NFTScan 目前拥有全网最大最全的 NFT Collection 库,已支持 Ethereum、Solana、BNBChain、Bitcoin、TON、Polygon、Polygon zkEVM、zkSync、Aptos、Linea、Base、Avalanche、Arbitrum、OP Mainnet、Starknet、Scroll、Blast、Viction、Fantom、Mantle、Moonbeam、PlatON、Cronos、Gnosis 24 条区块链的 NFT 全量数据,所涵盖的 NFT 数据全、种类丰富,提供一整套的接口来获得 ERC721 / ERC1155 / ERC20 资产以及交易、项目、市场统计等信息,现在支持 60 多个针对 EVM 兼容链的公共接口,以及针对 Solana、Aptos、Bitcoin、TON 的一批相同模型的接口,很大程度上满足了开发者索引多种类型的 NFT 数据的需求。
![](https://static001.geekbang.org/infoq/8c/8cd7d57923d22ed8efdb8191a124b846.png)
Bitcoin API 模型
主要包括了以下三个模型接口,包括里面一些 API 核心的字段的整体介绍和说明,方便开发者知道怎么去获取数据利用这些信息服务于自己正在构建的 Dapp 服务。
Assets API:"Assets"是 NFT 中最关键的数据字段,用于唯一标识和描述数字资产。开发者可以通过提取 BTC 区块链上 NFT 的"Assets"数据来获取全面的了解,并构建相关应用。
Transactions API:交易模型代表了区块链上一个 NFT 资产的全量交易数据,为开发者提供 NFT 的完整生命周期及深入了解 NFT 资产在 BTC 生态系统中的流动和演变过程的机会。NFTScan 不断地汇总来自各个区块链网络的 NFT 交易市场和相关交易合约信息,目前 NFTScan 已收录用于追踪和了解 NFT 市场的动态,同时也有助于开发者构建基于 NFT 的应用程序和工具。
Collections API:NFTScan 获取与 NFT Collections 相关的描述、社交媒体及其他基本信息等链下数据。此外当前地板价信息是基于 NFT 市场的订单信息的集中式数据,也是通过 API 可获取的。
![](https://static001.geekbang.org/infoq/95/95fc74f08fd4b50b16ef2a47779367ba.png)
新增 Bitcoin API 系列
1/ Retrieve BRC-20 Tick 系列
Get a BRC-20 tick(该接口返回 BRC-20 tick 的信息)
Search BRC-20 ticks(该接口通过在请求正文中应用搜索过滤器来返回 BRC-20 tick 列表的信息,tick 按块编号升序排序)
这里我们通过 Get a BRC-20 tick 接口为 “/btc/brc20/tick/{tick}” 来检索代币名称为 ordi 的详情信息,数据返回如下:
"tick":"ordi"
"inscription_id":"b61b0172d95e266c18aea0c624db987e971a5d6d4ebc2aaed85da4642d635735i0"
"supply":"21000000"
"minted":"21000000"
"limit_per_mint":"1000"
"decimal":18
"block_number":779832
"creator":"bc1pxaneaf3w4d27hl2y93fuft2xk6m4u3wc4rafevc6slgd7f5tq2dqyfgy06"
"timestamp":"1678248991000"
![](https://static001.geekbang.org/infoq/53/534474d9f61fd0037fc657f4089ac881.png)
2/ Retrieve BRC-20 Balances 系列
Get BRC-20 owners by tick
(该接口返回一组某 BRC-20 tick 的持有者数据)
Get BRC-20 ticks by account(该接口返回一组某 BRC-20 tick 的钱包地址数据)
Get single BRC-20 tick by account(该接口返回单个 BRC-20 tick 的钱包地址数据)
这里我们通过 Get BRC-20 owners by tick 接口为 “/btc/brc20/balance/{tick}” 来检索持有代币名称为 ordi 的 owners 详情信息,一共返回数据 12427 条:
![](https://static001.geekbang.org/infoq/ab/abb9932bfc79975fa67e6895a63ec4a0.png)
3/ MerlinProtocol BRC-20 Indexer 系列
Get ticker full history(获取某 tick 完整历史记录)
Get Address BRC-20 Summary(获取指定地址下持有的 BRC-20 摘要)
Get Transferable Inscriptions(按地址获取 BRC-20 的可转移铭文清单)
Get BRC-20 Holders(获取 BRC-20 持有者)
这里我们通过 Get Address BRC-20 Summary 接口为 “/btc/brc20/address/{address}/brc20/summary” 来检索指定地址下持有的全部 BRC-20 摘要,这里我们检索地址为 bc1qggf48ykykz996uv5vsp5p9m9zwetzq9run6s64hm6uqfn33nhq0ql9t85q,数据返回如下:
![](https://static001.geekbang.org/infoq/18/188178c943e55b82767e9919509f102d.png)
构建相关 NFT API 请求
开发者可以使用不同的语言来编写调用 NFTScan API 的代码如 Python、Java、JavaScript 等等 。例如在 Python 中,可以使用 requests 库来发起 API 请求;在 JavaScript 中可以使用 axios;在 Java 中可以用 OkHttp 或 Retrofit 等库。编写代码时,开发者只需组织好接口参数,如合约地址、API Key 等,调用对应的 NFTScan 接口,就可以方便地获取到标准化的 JSON 格式数据。
这里我们使用接口 Get Transferable Inscriptions:“/btc/brc20/address/{address}/brc20/{ticker}/transferable-inscriptions”
对 Bitcoin 链上地址 bc1qggf48ykykz996uv5vsp5p9m9zwetzq9run6s64hm6uqfn33nhq0ql9t85q 下的 ordi 代币 Transferable Inscriptions 详情数据进行调取,HTTP GET 请求访问 NFTScan 的 API 接口,使用 Python 的 requests 库,可以这样构建请求:
代码解析
函数定义:
get_transferable_inscriptions:一个接受 address、ticker 和 api_key 参数的函数,用于调用 NFTScan API 并返回 JSON 数据。
主程序:
使用 if __name__ == "__main__": 结构来确保脚本可以被直接运行。
定义需要查询的 Bitcoin 地址、BRC-20 代币 ticker 和 API 密钥。
调用 get_transferable_inscriptions 函数,并打印返回的 JSON 数据。
使用 try 和 except 块来捕获和处理可能的异常。
注意事项
将 "YOUR_API_KEY" 替换为实际 NFTScan API Key;
运行此脚本之前,请确保已经安装了 requests 库。
该脚本展示了如何调用 NFTScan API 获取 Bitcoin 链上某个地址下的 BRC-20 代币的可转让详细数据。如果你是 NFT 和 Web3 领域的开发者,欢迎使用 NFTScan 开发者平台提供的 Bitcoin 网络的 NFT API 数据服务,快速在 Bitcoin 网络上构建产品和协议!
评论