v6.0.0
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:
- OpenSea APIs
- 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 toOPENSEA_API_KEY
Network
enum renamed toChain
apiConfig.networkName
renamed toapiConfig.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