如何通過opensea-js獲取OpenSea的數據

  • 2022 年 2 月 14 日
  • 筆記

OpenSea作為NFT最大的交易平台,隨著NFT的火熱之後,熱度也是出現翻天覆地的變化。作為開發人員肯定好奇有沒有可以與opensea交互的包來開發相關的工具或者快速獲取opensea的數據。別急,這裡就告訴同學們一個好用的庫opensea-js,下面就來說一下使用教程。

一.安裝

執行以下命令,從npm獲取安裝包:

npm install --save opensea-js

二.初始化程式碼

官方示例:

import * as Web3 from 'web3'
import { OpenSeaPort, Network } from 'opensea-js'

// This example provider won't let you make transactions, only read-only calls:
const provider = new Web3.providers.HttpProvider('//mainnet.infura.io')

const seaport = new OpenSeaPort(provider, {
  networkName: Network.Main,
  apiKey: YOUR_API_KEY
})

這裡需要說明官方程式碼樣例中僅使用了Web3的provider與鏈進行交互。如果最後需要提交交易的話是會報錯的,所以這裡推薦使用truffle官方的庫「hdwallet-provider」來進行初始化,通過對原有的Web3進行一層封裝以達到使用私鑰簽名並發送交易的目的,具體方法可以去npm網站搜索相應的包進行詳細查看。
使用程式碼如下:

const HDWalletProvider = require("@truffle/hdwallet-provider")
const { OpenSeaPort, Network } = require('opensea-js')

const privateKey = "YOUR_PRIVATE_KEY"
const provider = new HDWalletProvider({
                    privateKeys: [privateKey],
                    providerOrUrl: '//mainnet.infura.io'
                })

const seaport = new OpenSeaPort(provider, {
  networkName: Network.Main,
  apiKey: YOUR_API_KEY
})

看到這裡肯定有人好奇apiKey怎麼獲取到呢?這裡提供個網址,點擊進去按照要求輸入後申請即可,申請地址

三.購買NFT

購買NFT需要查詢相應的NFT的價格訂單數據,getOrders具體可以傳遞哪些參數,詳見OpenSea API parameters:

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

獲取到價格訂單數據後,就可以進行購買

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

四.其餘方法

opensea-js還包含其它的方法,具體的這裡不在進行描述,有需要的可以點擊鏈接轉到官方文檔看詳細說明,這裡不再贅述了。

其它

作為碼農,伺服器可以說跟我們簡直不可分割啊,推薦幾個自己親身使用過的雲伺服器平台給大家,有需要小夥伴可以自行查看:

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

2.騰訊云://curl.qcloud.com/jgwhoTBS