Skip to content

v6.0.0

Compare
Choose a tag to compare
@JoshuaSchmidt-OpenSea JoshuaSchmidt-OpenSea released this 31 May 23:05
e02313f

Overview

The SDK contained a lot of legacy code from deprecated dependencies and pre-Seaport contracts. OpenSea audited every dependency, function, and utility in the codebase to delete as much code as possible.

Now, this SDK will be focused on functions and convenience wrappers for 2 use cases:

  1. OpenSea APIs
  2. Seaport interactions specifically for creating OpenSea orders

Provider Consistency

In previous versions, the SDK had a random mix of Web3 and ethers usage. Now, the SDK has created consistency by only using ethers. This makes instantiating an instance of the SDK much simpler. As a read-only example:

import { ethers } from 'ethers'
import { OpenSeaSDK, Network } from 'opensea-js'

// This example provider won't let you make transactions, only read-only calls:
const provider = new ethers.providers.JsonRpcProvider('https://mainnet.infura.io')
const openseaSDK = new OpenSeaSDK(provider, {
  networkName: Network.Main,
  apiKey: YOUR_API_KEY
})

Big Number Consistency

The SDK had a random mix of bignumber.js, BN.js, and ethers.BigNumber with many utility functions to convert between the various types. This system was ripe for hidden, uncaught bugs. Now, the SDK only uses ethers built in BigNumber.

For more information on this type see the Ethers BigNumber documentation.

Naming Changes

Types

  • Network -> Chain
  • WyvernSchemaName -> TokenStandard
  • WyvernNFTAsset -> NFTAsset
  • WyvernFTAsset -> FungibleAsset
  • WyvernAsset -> AssetType
  • WyvernBundle -> Bundle

Functions

  • getAssetBalance -> getBalance

Initial Config

There was a config called networkName which has been renamed to chain

Public Functions Removed

These functions were a mix of broken, deprecated, or rarely used. If anything was removed that was heavily relied upon by the web3 ecosystem, make sure to comment in the discussions for this release. OpenSea is open to adding back functions that the community needs if there is sufficient support for it and no better alternative.

Wyvern Functions

The following functions still existed in the code base from the legacy Wyvern functions and are now removed.

  • _initializeProxy
  • _getProxy
  • _approveAll
  • _getApprovedTokenCount
  • _ownsAssetOnChain
  • revokeAuthenticatedProxyAccess
  • isAuthenticatedProxyRevoked
  • unrevokeAuthenticatedProxyAccess
  • approveFungibleToken
  • unapproveFungibleToken
  • approveSemiOrNonFungibleToken
  • isAssetTransferrable
  • transfer
  • transferAll
  • _correctGasAmount
  • gasIncreaseFactor (property)

Deprecated

The following functions were previously marked as deprecated and are now removed.

  • _createEmailWhitelistEntry
  • api.postAssetWhitelist
  • _computeGasPrice
  • getFungibleTokens
  • gasPriceAddition (property): only used by _computeGasPrice

Wrapped NFTs

Utility functions existed in the SDK for wrapping NFTs into their corresponding WrappedNFT ERC20 tokens, purchasing Wrapped NFTS, and liquidating NFTs. If users still have a need for these types of transactions, they should learn to use the Uniswap API.

  • getQuoteFromUniswap
  • liquidateAssets
  • purchaseAssets
  • unwrapAssets
  • wrapAssets

Utility/Convenience Functions

These methods were superfluous and have been removed.

  • getTokenBalance: This has been replaced by getBalance
  • getCurrentGasPrice: Can directly use ethers provider.getGasPrice()
  • _getBuyFeeParameters: Unused
  • api.put: There are no put methods on the API

Additionally, these methods were wrappers on Seaport and can still be called by using sdkInstance.seaport_v1_5

  • getDomain
  • getDomains
  • getNumberOfDomains
  • setDomain

Renamed Functions and Properties

  • Env var API_KEY renamed to OPENSEA_API_KEY
  • Network enum renamed to Chain
  • apiConfig.networkName renamed to apiConfig.chain

Integration Tests

Integration test coverage has been dramatically improved. As of now, the integration tests include:

  • getAsset
  • getCollection
  • createBuyOrder
  • createSellOrder
  • createCollectionOffer
  • wrapEth
  • unwrapEth

For more information on integration tests, see the README

Dependencies Removed

By removing the following dependencies, the package size was reduced by XX%.

  • axios
  • ethereumjs-abi
  • ethereumjs-util
  • safe-buffer
  • web3
  • wyvern-js
  • ajv
  • lodash
  • bignumber.js
  • fbemitter

There are now only 3 dependencies left! From 15 in opensea-js v5.

Compilation Target & Browser Build

The compilation target has been bumped from es5 to es6 and a browser build is now outputted to lib/bundle.js.

TypeScript Compiler Config

esModuleInterop and allowSyntheticDefaultImports are now disabled by default. See reasoning here: https://www.semver-ts.org/#module-interop