如何使用 NFTScan NFT API 在 Starknet 网络上开发 Web3 应用

Starknet 是由以色列软件公司 StarkWare 开发的免许可的第 2 层网络。Starknet 作为以太坊上的 ZK Rollup 运行,帮助 dApp 使用 STARK 证明以更低的交易成本实现更大的计算规模。该网络允许智能合约与区块链上部署的其他合约进行交互,从而提高协议之间的可组合性。Starknet 与 Arbitrum、OP Mainnet、zkSync 并列为 2023 年最受欢迎的四大 Layer 2。

就 NFTScan 数据来看,截至 12 月 1 日,Starknet 网络上已累计发行 NFT 资产 15,009,965 枚,NFT Collection 18,111 个,产生交易记录 17,009,163 条,有过交互的钱包地址 2,468,080 个,总交易额 3,245.43 ETH。

Starknet NFTScan:

怎样访问 NFTScan NFT API

在开始使用 NFTScan API 之前,首先需要访问开发者网站并创建一个账户。前往 NFTScan 官方网站点击 NFTScan API “Sign Up”按钮进行注册。

登录后在 Dashboard(面板)上找到自己独有的 API KAY,将其复制。访问 API 文档,将自己的 API KEY 输进 API 文档的相应位置。根据文档的指引,就可以开始使用 API 服务了。在 API 文档中,开发者可以找到多种可供选择的接口模式,根据需求来选择最合适的接口。

在 Dashboard 中,开发人员还可以查看自己 API 使用情况的统计数据,帮助记录历史使用数据。不仅如此,NFTScan 还为每位注册开发者提供 1M CU 的 API 调用服务,用于请求所有的 NFT API 接口,并且 CU 永不过期,用完为止!

查 Starknet API 文档

在成功注册开发者账号获取 API Key 后,需要查看 NFTScan API 文档。API 文档包含了所有可以使用的 API 端点和参数,以及如何构建请求和处理响应的详细信息。请认真阅读 API 文档,并确保理解如何使用 API 来获取您需要的数据。NFTScan API 服务致力于帮助开发者改善获取 NFT 数据分析体验。

NFTScan 目前拥有全网最大最全的 NFT Collection 库,已支持 Ethereum、Solana、BNBChain、Bitcoin、TON、Polygon、zkSync、Aptos、Linea、Base、Avalanche、Arbitrum、OP Mainnet、Starknet、Scroll、Viction、Fantom、Moonbeam、PlatON、Cronos、Gnosis 21 条区块链的 NFT 全量数据,所涵盖的 NFT 数据全、种类丰富,提供一整套的接口来获得 ERC721 和 ERC1155 资产以及交易、项目、市场统计等信息,现在支持 60 多个针对 EVM 兼容链的公共接口,以及针对 Solana、Aptos、Bitcoin、TON 的一批相同模型的接口,很大程度上满足了开发者索引多种类型的 NFT 数据的需求。

Starknet NFT API 模型

主要包括了以下三个模型接口,包括里面一些 API 核心的字段的整体介绍和说明,方便开发者知道怎么去获取数据利用这些信息服务于自己正在构建的 Dapp 服务。

Assets API:"Assets"是 NFT 中最关键的数据字段,用于唯一标识和描述数字资产。开发者可以通过提取 Starknet 区块链上 NFT 的"Assets"数据来获取全面的了解,并构建相关应用。"Assets"对象提供了数字资产的唯一标识以及其整个生命周期的数据,为开发者理解和应用 NFT 提供了基础。

Transactions API:交易模型代表了区块链上一个 NFT 资产的全量交易数据,为开发者提供 NFT 的完整生命周期交易信息。包括 NFT 的 mint、转移、销售、和其他交易活动,为开发者提供了深入了解 NFT 资产在 Starknet 生态系统中的流动和演变过程的机会。NFTScan 不断地汇总来自各个区块链网络的 NFT 交易市场和相关交易合约信息,目前 NFTScan 已收录用于追踪和了解 NFT 市场的动态,同时也有助于开发者构建基于 NFT 的应用程序和工具。

Collections API:NFTScan 获取与 NFT Collections 相关的描述、社交媒体及其他基本信息等都链下数据。NFTScan 通过各个区块链网络中最主流的 NFT 市场提供的 API 获取这些信息。此外当前地板价信息是基于 NFT 市场的订单信息的集中式数据,也是通过 API 可获取的。

Starknet NFT API 检索

1/Retrieve Assets 系列

  • Get NFTs by account(通过钱包地址检索 NFT)

  • Get all NFTs by account(检索钱包地址的所有 NFT,并根据合约地址对 NFT 进行分组,如果账户地址拥有的 NFT 总数超过 2000 个,则返回的 NFT 将限制在 2000 个以下。在这种情况下,开发者和用户可以通过分页查询请求按账户获取该账户地址拥有的所有 NFT)

  • Get minted NFTs by account(检索该钱包地址的 Mint 过的 NFT)

  • Get NFTs by contract(通过合约地址检索 NFT,并按 token_id 升序排序)

  • Get single NFT(检索单个 NFT)

  • Get multiple NFTs(同时检索多个合约地址的 NFT)

  • Search NFTs(该接口通过在请求正文中应用搜索筛选器来返回 NFT 资产列表。资产按 nftscan_id 升序排序)

  • Get NFTs by attributes(该接口返回一组属于具有属性的 NFT 合约地址的 NFT,NFT 按 token_id 升序排序)

  • Get all multi-chain NFTs by account(该接口返回账户地址拥有的所有多链 NFT,NFT 根据合约地址进行分组)

这里我们通过 Get single NFT 接口为“/v2/assets/{contract_address}/{token_id}”

来检索一个合约地址下的某单个 NFT Item 的详情信息,路径参数包括 contract_address/token_id 作为选择,这里我们查询的是地址 0x0727a63f78ee3f1bd18f78009067411ab369c31dece1ae22e16f567906409905 名称为 Starkpunks 且 token id 为 1 的 NFT。

点击 Try it 数据响应结果:该地址下一共返回 30 个 items,返回数据包括

1)查询的 NFT token id 为 1,在项目中的占比为 1,协议标准为 erc721,Mint 的钱包地址/当前的持有者地址,被铸造时的时间戳,Mint 的哈希地址及价格,Token URI 的地址。latest_trade_price(上次成交价)/latest_trade_symbol(上次成交价的货币),latest_trade_timestamp(上次成交时间戳)当前显示 null,返还数值空,表示该项目未进行过交易。

2)元数据:从该项目的元数据可以看出 Metadata 数据托管在 ipfs 上,格式为 image/png。

3)稀有度:对属性的描述,稀有度得分以及稀有度排名。

2/ Retrieve Transactions 系列

  • Get transactions by account(该接口返回钱包地址的 NFT 交易列表)

  • Get transactions by contract(该接口返回 NFT 合约地址的 NFT 交易列表)

  • Get transactions by NFT(该接口返回单个 NFT 的 NFT 交易列表)

  • Search transactions(该接口返回在请求正文中应用搜索过滤器来返回 NFT 交易列表)

  • Get transactions by to address(该接口返回按交易参数过滤的 NFT 交易列表)

  • Get transactions by hash(该接口返回根据交易哈希列表查询到的交易记录)

这里我们通过 Get transactions by NFT“/v2/transactions/{contract_address}/{token_id}”这个接口,检索某单个 NFT Item 的交易记录,查询参数可选择交易的 NFT 事件类型(Mint/Transfer/Sale/Burn),使用 ';' 分隔多个事件。同样这里我们检索 Starkpunks 且 token id 为 1 的 NFT。按照 Mint&Sale 的事件类型,结果响应数据包含这笔 NFT 交易的所有关键数据,如交易哈希值、From 和 To 地址、区块信息、消耗 Gas、交易时间戳等基础数据等 Mint&Sale NFT 交易事件的特征信息。

3/ Retrieve Collections 系列

  • Get an NFT collection(根据 Collection 的合约地址查询详情,包括概览及按照描述对 Item 进行分类,持有者分布、平均价格、地板价等基本概括信息)

  • Search NFT collections(此接口通过在请求正文中应用搜索过滤器来返回 Collection 列表的信息,Collection 按部署块编号升序排序)

  • Get NFT collections by account(该接口返回具有给定账户地址的项目列表信息,Collection 按地板价从高到低排序)

  • Get NFT collections by ranking(该接口返回具有给定排序字段的项目列表信息,Collection 按给定的排序字段和给定的排序方向排序)

这里我们通过接口 Get NFT collections by ranking

“/v2/collections/rankings” 检索 Starknet 网络上 NFT Collection Ranking 榜单, 查询参数检索字段包括:

volume/sales/average_price/floor_price/volume_change/average_price_change 等,这里我们选择 volume_total 字段进行检索,共返回 100 个 data 且每个 data 包含 35 个 items。

4/ Collection Statistics:Collection 统计分析系列

  • Collection Statistics(该接口提供 NFT Collection 的分析统计概览数据)

  • Collection Trade Distribution(该接口主要提供项目交易分布)

  • Collection Trending Statistics(主要返回一个项目的 Trading 统计排序)

  • Collection Holding Amount Distribution(该接口可返回 NFT 项目持有量的分布信息)

  • Collection Holding Period Distribution(数据返回 NFT 项目持有期分布信息)

  • Collection Blue Chip Statistics(蓝筹项目统计概览数据)

  • Collection Blue Chip List(该项目涉及的蓝筹项目清单,可参考 NFTScan Blue Chip Collection)

  • Collection Top Holder(该 Collection 的顶级持有者分布)

这里我们通过接口 Collection Statistics “/v2/statistics/collection/{contract_address}”主要返回一个 NFT Collection 的分析统计概览数据,可参考 Starknet 链上 Starkpunks 数据概览:

5/ Account Statistics 系列

  • Account Overview Statistics(该接口返回账户地址的概览统计信息,参考 NFTScan Overview)

  • Account Holding Distribution(该接口返回账户地址的 NFT 持有分布统计信息,参考 NFTScan Portfolio)

  • Account Holding NFT Trending(该接口返回账户地址的 NFT 持有量(或数量)统计信息,参考 NFTScan Portfolio)

6/ Analytic Statistics 系列

该系列接口通常用于获取 NFTScan Starknet 上各与数据分析和统计有关的信息,如 Trade Ranking、Mint Amount、Gas Ranking 等这类接口允许开发者或用户查询、分析、和检索与特定数据集或指标相关的统计数据。可以用于各种用途,包括市场分析、趋势追踪、投资决策、以及了解特定数据的性质。

7/ Refresh Metadata

  • Refresh NFT metadata

  • Refresh NFT metadata by contract

Refresh Metadata 这类接口可以帮助开发者或用户提交后台刷新元数据任务,该任务审核后会刷新提交的指定 Item 或整个合约元数据。

8/ Other

  • Get latest block number(返回 NFTScan 已到达的最新块号)

  • Get NFT amount by account(根据请求体中的搜索列表返回账户地址拥有的 ERC721 和 ERC1155 NFT 数量信息)

  • Get NFT owners by contract(返回 ERC721 NFT 合约地址的所有者列表,NFT 按 token_id 升序排序)

  • Get owners by an NFT(返回 ERC1155 NFT 的所有者列表, NFT 按 account_address 升序排序)

构建相关 NFT API 请求

调用 NFTScan 的 NFT API 对开发者极为简单。只需几个步骤,在详尽的文档中查找需要调用的接口,了解其请求方法、参数等。然后,选择一种自己熟悉的编程语言,如 JavaScript、Python 或 Java,并引入语言的请求库。并根据文档说明构造请求,配置接口请求地址、方法与请求参数。最后,利用语言库发出请求,接收并处理返回的 JSON 格式数据。在简单的参考文档即可完成调用的过程中,开发者无需关注复杂的技术细节,极低的使用门槛使获取 NFT 数据变得前所未有的容易。

这里我们请求检索 Starkpunks 合约地址下 token id 为 1 的 NFT Item 的详情信息,使用接口 Get single NFT “/v2/assets/{contract_address}/{token_id}”,检索地址为

0x0727a63f78ee3f1bd18f78009067411ab369c31dece1ae22e16f567906409905,HTTP GET 请求访问 NFTScan 的 API 端点,使用 Python 的 requests 库,可以这样构建请求:

import requests

# Define API endpoint, contract address, and token ID
api_endpoint = "https://api.nftscan.com/v2/assets"
contract_address = "0x0727a63f78ee3f1bd18f78009067411ab369c31d"
token_id = "1"

# Construct API request URL
url = f"{api_endpoint}/{contract_address}/{token_id}"

# Make an HTTP GET request
response = requests.get(url)

# Check if the request was successful
if response.status_code == 200:
    # Get the returned JSON data
    data = response.json()
    # Process the returned NFT details
    print("NFT Item Details:")
    print(data)  # This will print the retrieved NFT details, you can further process or extract information as needed
else:
    print("Request failed:", response.status_code)


About NFTScan

NFTScan 成立于 2021 年初,总部位于香港,是全球领先的 NFT 数据基础设施服务商,目前已支持 Bitcoin、Ethereum、BNBChain、Polygon、Solana、TON、Arbitrum、Optimism、zkSync、Aptos 等在内的 21 条主流区块链网络。NFTScan 团队致力于为数以亿计的 Web3 用户提供简洁高效的 NFT 检索服务,为新一代金融科技公司提供安全稳定的多链 NFT 索引服务,用数据来推动 NFT 生态的繁荣发展!目前,NFTScan 在为包括 CMC、Binance NFT、Bybit、KuCoin、HashKey Group 、Mask Network、imToken、Enjin、Coin98 等在内的 5000+ 开发者提供多链 NFT 数据支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/209854.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

简单说说vue中v-model和v-bind绑定数据的异同

vue的模板采用DOM模板,也就是说它的模板可以当做DOM节点运行,在浏览器下不报错,绑定数据有三种方式,一种是插值,也就是{{name}}的形式,一种是属性绑定 v-bind,还有一种是双向绑定 v-model。{{na…

Postman Post请求上传文件

Postman Post请求上传文件 一、选择post请求方式,输入请求地址 二、填写Headers Key:Content-Type Value:multipart/form-data [{"key":"Content-Type","value":"multipart/form-data","de…

校园局域网规划与设计(cisco仿真模拟)

摘 要 随着网络技术的发展,校园网的建设已经进入到一个蓬勃发展的阶段。校园网的建成和使用,对于提高教学和科研的质量、改善教学和科研条件、加快学校的信息化进程,开展多媒体教学与研究以及使教学多出人才、科研多出成果有着十分重要而深远…

深入理解前端路由:构建现代 Web 应用的基石(上)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

Hdoop学习笔记(HDP)-Part.13 安装Ranger

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

MySQL的系统信息函数

系统信息函数让你更好的使用MySQL数据库 1、version()函数 查看MySQL系统版本信息号 select version();2、connection_id()函数 查看当前登入用户的连接次数 直接调用CONNECTION_ID()函数--不需任何参数--就可以看到当下连接MySQL服务器的连接次数,不同时间段该…

Jmeter性能测试 —— 压力模式

压力模式 性能测试中的压力模式有两种。 第一种是并发用户模式(虚拟用户模式)并发用户是指虚拟并发用户数,从业务角度,也可以理解为同时在线的用户数。 从客户端的角度出发,摸底业务系统各节点能同时承载的在线用户数…

shell 脚本批量处理文件后缀名

shell 脚本批量处理文件后缀名 flumes收集日常完成后会对收集的文件添加.COMPLETED后缀名。 我仍然使用原文件名,于是萌生了编写 shell 脚本批量删除文件后缀名的想法。 效果很好,但整个脚本功能太多单一,如果想按需修改文件后缀名呢&#xf…

07-原型模式-C语言实现

UML图&#xff1a; 代码实现&#xff1a; #include <stdio.h> #include <stdlib.h> #include <string.h>// 原型接口 typedef struct {void* (*clone)(void*); } Prototype;// 具体原型类 typedef struct {Prototype prototype;char* name;int age; } Concr…

MyBatis-逆向工程

1.简单生成 1.添加依赖和插件 <dependencies><!-- MyBatis核心依赖包 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.9</version></dependency><!-- MySQL驱动…

熬夜会秃头——Beta冲刺总结随笔

这个作业属于哪个课程2301-计算机学院-软件工程社区-CSDN社区云这个作业要求在哪里团队作业—beta冲刺事后诸葛亮-CSDN社区这个作业的目标总结Beta冲刺团队名称熬夜会秃头团队置顶集合随笔链接熬夜会秃头——Beta冲刺置顶随笔-CSDN社区 目录 一、Beta冲刺开始前设立的任务完成…

前端面试高频考点—事件循环Event loop

目录 事件循环 执行步骤 概念讲解 主线程 微任务(micro task) 宏任务(macro task) Event Loop经典例题 这段代码的执行结果是什么&#xff1f; 正确答案&#xff1a; 具体流程&#xff1a; 事件循环 主线程从"任务队列"中读取执行事件&#xff0c;这个过程…

设计模式---第四篇

系列文章目录 文章目录 系列文章目录前言一、说说策略模式在我们生活的场景?二、知道责任链模式吗?三、了解过适配器模式么?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给…

文献速递:人工智能在健康和医学中

人工智能在健康和医学中 01 文献速递介绍 这篇文章详细探讨了人工智能&#xff08;AI&#xff09;在医学领域的最新进展、挑战和未来发展的机遇。 1.医学AI算法的最新进展&#xff1a; **AI在医疗实践中的应用&#xff1a;**虽然AI系统在多项回顾性医学研究中表现出色&…

解决 MapBox addMapStyle 失败,主动刷新地图

应用场景&#xff1a; 底图加载后&#xff0c;边界的图层有时能加载&#xff0c;有时加载不上&#xff0c;在点击或者拖拽移动后可加载成功 最后解决方案&#xff1a; 在子组件中写一个延迟函数&#xff0c;模拟手动点击效果 created(){setTimeout(() > {if ( !this.isLoa…

华为云obs在java中的使用

1、申请obs服务。 申请完成后&#xff0c;会获得以下几个配置信息&#xff1a; AK"****************************"; SK"******************************************************"; ENDPOINT"obs.*************************"; BUCKET_NAME&q…

go学习之goroutine和channel

文章目录 一、goroutine(协程)1.goroutine入门2.goroutine基本介绍-1.进程和线程说明-2.程序、进程和线程的关系示意图-3.Go协程和Go主线程 3.案例说明4.小结5.MPG模式基本介绍6.设置Golang运行的CPU数7.协程并发&#xff08;并行&#xff09;资源竞争的问题8.全局互斥锁解决资…

LeetCode | 100. 相同的树

LeetCode | 100. 相同的树 OJ链接 判断两个节点是否等于空&#xff0c;两个都等于空就直接返回true如果一个等于空&#xff0c;另一个不等于空&#xff0c;说明false然后再判断两个树的值是否相等最后递归p的左&#xff0c;q的左&#xff0c;p的右&#xff0c;q的右 bool isS…

SQL注入漏洞的检测及防御方法

SQL注入&#xff08;SQL Injection&#xff09;是一种广泛存在于Web应用程序中的严重安全漏洞&#xff0c;它允许攻击者在不得到授权的情况下访问、修改或删除数据库中的数据。这是一种常见的攻击方式&#xff0c;因此数据库开发者、Web开发者和安全专业人员需要了解它&#xf…

【python】保存excel

正确安装了pandas和openpyxl库。 可以通过在命令行中输入以下命令来检查&#xff1a; pip show pandas pip show openpyxl 可以使用pip安装 pip install pandas pip install openpyxl#更新 pip install --upgrade pandas pip install --upgrade openpyxl 保存excel …