OpenSea作为NFT最大的交易平台,随着NFT的火热之后,热度也是出现翻天覆地的变化。作为开发人员肯定好奇有没有可以与opensea交互的包来开发相关的工具或者快速获取opensea的数据。别急,这里就告诉同学们一个好用的库opensea-js,下面就来说一下使用教程。

一.安装

执行以下命令,从npm获取安装包:

  1. npm install --save opensea-js

二.初始化代码

官方示例:

  1. import * as Web3 from 'web3'
  2. import { OpenSeaPort, Network } from 'opensea-js'
  3. // This example provider won't let you make transactions, only read-only calls:
  4. const provider = new Web3.providers.HttpProvider('https://mainnet.infura.io')
  5. const seaport = new OpenSeaPort(provider, {
  6. networkName: Network.Main,
  7. apiKey: YOUR_API_KEY
  8. })

这里需要说明官方代码样例中仅使用了Web3的provider与链进行交互。如果最后需要提交交易的话是会报错的,所以这里推荐使用truffle官方的库“hdwallet-provider”来进行初始化,通过对原有的Web3进行一层封装以达到使用私钥签名并发送交易的目的,具体方法可以去npm网站搜索相应的包进行详细查看。

使用代码如下:

  1. const HDWalletProvider = require("@truffle/hdwallet-provider")
  2. const { OpenSeaPort, Network } = require('opensea-js')
  3. const privateKey = "YOUR_PRIVATE_KEY"
  4. const provider = new HDWalletProvider({
  5. privateKeys: [privateKey],
  6. providerOrUrl: 'https://mainnet.infura.io'
  7. })
  8. const seaport = new OpenSeaPort(provider, {
  9. networkName: Network.Main,
  10. apiKey: YOUR_API_KEY
  11. })

看到这里肯定有人好奇apiKey怎么获取到呢?这里提供个网址,点击进去按照要求输入后申请即可,申请地址

三.购买NFT

购买NFT需要查询相应的NFT的价格订单数据,getOrders具体可以传递哪些参数,详见OpenSea API parameters:

  1. // Get offers (bids), a.k.a. orders where `side == 0`
  2. const { orders, count } = await seaport.api.getOrders({
  3. asset_contract_address: tokenAddress,
  4. token_id: token_id,
  5. side: OrderSid.Sell
  6. })

获取到价格订单数据后,就可以进行购买

  1. const accountAddress = "0x..." // The buyer's wallet address, also the taker
  2. const transactionHash = await this.props.seaport.fulfillOrder({
  3. order,
  4. accountAddress
  5. })

四.其余方法

opensea-js还包含其它的方法,具体的这里不在进行描述,有需要的可以点击链接转到官方文档看详细说明,这里不再赘述了。

其它

作为码农,服务器可以说跟我们简直不可分割啊,推荐几个自己亲身使用过的云服务器平台给大家,有需要小伙伴可以自行查看:

1.阿里云:https://www.aliyun.com/?source=5176.11533457&userCode=mszy7nm5

2.腾讯云:https://curl.qcloud.com/jgwhoTBS

如何通过opensea-js获取OpenSea的数据的更多相关文章

  1. js获取地址栏参数数据

    // 获取指定地址栏数据//name:参数名 function GetQueryString(name, url) { var reg = new RegExp("(^|&)&quo ...

  2. js获取表单数据

    var modelObj = {}; var modelFieldsArray = $('#AddMusicCategory').serializeArray(); $.each(modelField ...

  3. 学习笔记-vue.js获取file文件数据

    在vue中file不能像其他input一样使用 v-model 双向数据绑定,因为文件选择是只读,只能用onchange监控值得变化. 所有需要使用v-on:change去监控. 例1: <in ...

  4. 《项目经验》--通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中

      先看一下我要实现的功能界面:   这个界面的功能在图中已有展现,课程分配(教师教授哪门课程)在之前的页面中已做好.这个页面主要实现的是授课,即给老师教授的课程分配学生.此页面实现功能的步骤已在页面 ...

  5. 通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中

    摘自:http://blog.csdn.net/mazhaojuan/article/details/8592015 通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来 ...

  6. js获取div中的文本框数据

    通过div得到div里的所有数据 大神的世界无需解释,当然不是说我,当我看到这些代码的时候我惊呆了! 这是一个工具方法js: js: /* * 获取指定对象下的所有input.textarea值 * ...

  7. js获取当前页面的URL并且截取?之后的数据,返回json

    js获取当前页面的URL并且截取'?'之后的数据,返回json格式的数据 最近想要把学到的东西整理一下,以后方便查找,也是一种自我累积,如果有错误或者更好的,欢迎提出! 这篇文档主要是写关于获取页面的 ...

  8. js前端对后台数据的获取,如果是汉字则需要添上引号

    js前端对后台数据的获取,如果是汉字则需要添上引号

  9. html中通过js获取接口JSON格式数据解析以及跨域问题

    前言:本人自学前端开发,一直想研究下js获取接口数据在html的实现,顺利地找到了获取数据的方法,但是有部分接口在调用中出现无法展示数据.经查,发现时跨域的问题,花费了一通时间,随笔记录下过程,以方便 ...

随机推荐

  1. 第10组 Alpha冲刺 (4/6)(组长)

    1.1基本情况 ·队名:今晚不睡觉 ·组长博客:https://www.cnblogs.com/cpandbb/p/13982696.html ·作业博客:https://edu.cnblogs.co ...

  2. HDU-2032.杨辉三角(C语言描述)

    Problem Description 还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 ...

  3. 数组内sizeof与strlen的区别

    1.数组在内存中是连续存放的,地址呈4个字节递增 2.数组的定义需要初始化,否则输出会已随机值输出 3.strlen()和sizeof()之间无关联:strlen():是求字符串长度的----只能针对 ...

  4. PCx安装使用

    PCx安装使用 注意:不要到Mittleman的网页下给的那个网站去下载,版本太老,只能在REDHAT操作系统上编译,且不能运行 mkdir PCx cd PCx/ git clone https:/ ...

  5. Java将引入新的对象类型来解决内存利用问题

    2022年Java将有什么新的特性和改进,我相信很多Java开发者都想知道.结合Java语言架构师布莱恩·格茨(Brian Goetz)最近的一些分享,胖哥给大家爆个料.老规矩,点赞走起. Valha ...

  6. 【刷题-LeetCode】164 Maximum Gap

    Maximum Gap Given an unsorted array, find the maximum difference between the successive elements in ...

  7. 【记录一个问题】用ndk的gcc命令行无法编译C++11的lambda等语法的代码

    /Users/ahfu/code/android/android-ndk-r14b/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_6 ...

  8. golang中float类型转换成int类型

    package main import ( "fmt" "strconv" ) func f2i(f float64) int { i, _ := strcon ...

  9. golang中的标准库flag

    Go语言内置的flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简单. os.Args 如果你只是简单的想要获取命令行参数,可以像下面的代码示例一样使用os.Args来获取命令行参数. ...

  10. 只要一行代码,实现五种 CSS 经典布局

    常用的页面布局,其实就那么几个.下面我会介绍5个经典布局,只要掌握了它们,就能应对绝大多数常规页面. 这几个布局都是自适应的,自动适配桌面设备和移动设备.代码实现很简单,核心代码只有一行,有很大的学习 ...