- Added
TransactNamespace.sendGasOptimizedTransaction()
. Instead of sending a single transaction that might not get mined, this method allows you to send the same transaction multiple times, with different gas prices and gas limits. This should result in lower fees paid.
- Fixed a typo with the
AlchemySettings.batchRequests
property.
- Added support for ENS resolution to the
NotifyNamespace
andWebsocketNamespace
methods. - Added the
batchRequests
setting inAlchemySettings
. Enabling this setting will automatically batch and send json-rpc requests to reduce network overhead. - Included new export for the
Interface
class from ethers to simplify encoding ABI when usingeth_call
. - Added support for the
NftNamespace.getNftMetadataBatch()
method to fetch metadata for multiple NFTs in a single call. - Added support for the
NftNamespace.getNftSales()
method to fetch NFT sales across different marketplaces. Thanks @xeno097!
- Fixed a bug where
AlchemyConfig.getWebsocketProvider()
was not exported as a public method. This method allows you get the underlyingWebsocketProvider
that is implemented by ethers. - Added the
NftNamespace.summarizeNftAttributes()
method to get the summary of attribute prevalence for all NFTs in a contract. - Added the
NftNamespace.searchContractMetadata()
method to search for a keyword across ERC721 and ERC1155 contract metadata. - Added support for ENS resolution on several
CoreNamespace
methods. You should now be able to pass in an ENS domain into any param that requires an owner address. - Added the
CoreNamespace.resolveName()
andCoreNamespace.lookupAddress()
methods to resolve and lookup ENS domains and their owner addresses. - Fixed a bug where the
Accept-Encoding
header was incorrectly included in requests that originated from the browser (#174). - Added the
openSea
response toNftNamespace.getContractMetadata()
to match the REST endpoint (#162).
- Added the
NotifyNamespace
to the top-levelAlchemy
object. TheNotifyNamespace
is used to perform CRUD operations on webhooks in the Notify API. - Added the
alchemy_minedTransactions
subscription event to theWebsocketNamespace
. This subscription emits full transaction objects or hashes that are mined on the network based on provided filters. - Added the
NftNamespace.computeRarity()
method to get the rarity attributes of the provided NFT. Thanks @xeno097!
- Added the
AIDROPS
enum toNftNamespace.getNftsForOwner()
. - Added the
spamInfo
field to the response forgetNftsForOwner()
andgetNftsForContract()
. - Fixed a bug where type declarations were not available when using
NodeNext
module resolution. Thanks @quentinverlhac! - Marked Ropsten, Rinkeby, and Kovan
Network
enums as deprecated. Please switch over to Goerli.
- POTENTIALLY BREAKING: Fixed a typing bug where the
totalSupply
field in anNftContract
should have typestring
instead ofnumber
. - Updated the
Nft
class to include the contract metadata in theNft.contract
field. - Added commonly used utility methods from ethers.js into a top-level
Utils
export. - Added the
NftNamespace.verifyNftOwnership()
method to replace the deprecatedcheckNftOwnership()
method. - Added
Contract
andContractFactory
exports from ethers into the top-level exports.
- Added support for
withTokenBalances
inNftNamespace.getOwnersForContract()
. - Added support for the
erc20
token type and pagination forCoreNamespace.getTokenBalances()
. - Added
bytes
field to theMedia
object in the NFT metadata responses to indicate the size of the media in bytes. Note that thesize
field is not supported by the backend and will be removed in the next version.
- Added a
size
field to theMedia
object in the NFT metadata responses to indicate the size of the media in bytes. - Bumped
@ethersproject
dependencies tov5.7.0
to supportsafe
andfinalized
blocks.
- Added support for the
pageSize
parameter inGetNftsForOwnerOptions
to specify the number of NFTs fetched when usingalchemy.nft.getNftsForOwner()
. - Added support for a Wallet object. This object is identical to the Ethers
Wallet
class. - Added support for Arbitrum Goerli network via the
Network.ARB_GOERLI
enum. - Added support for the AStar Mainnet network via the
Network.ASTAR_MAINNET
enum. - Added typed request/response overloads for
CoreNamespace.getAssetTransfers()
for when thewithMetadata
param is true. - Added support the
tokenUriTimeoutInMs
parameter ongetNftsForOwner()
,getNftMetadata()
, andgetNftsForContract()
.
- Added the
transact
namespace for functionality relating to sending transactions. This includes the Flashbots methodssendPrivateTransaction
andcancelPrivateTransaction
.
- Removed the deprecated
TOKEN
enum fromAssetTransfersCategory
. - Added support for Optimism Goerli network via the
Network.OPT_GOERLI
enum. - Added the
pageSize
parameter inGetNftsForContractOptions
to specify the number of NFTs fetched when usingalchemy.nft.getNftsForContract
. - Added correct
withMetadata
typing toAssetTransfersResponse
.
- Added an optional
url
setting toAlchemySettings
to allow specifying a custom hardcoded URL to send all requests to. - Fixed a bug where the SDK would incorrectly include a gzip header in browser environments
- Top level package has moved from
@alch/alchemy-sdk
toalchemy-sdk
for convenience. New command to install isnpm install alchemy-sdk
- Updated instantiation syntax:
initializeAlchemy(settings)
is nownew Alchemy(settings)
- Added three namespaces under the Alchemy object:
core
,nft
, andws
. All Ethers.js provider methods and Alchemy Enhanced APIs (other than NFT) are undercore
. - Moved top-level methods under the Alchemy object. Instead of
getNftsByOwner(alchemy, 'vitalik.eth')
, now methods are called usingalchemy.nft.getNftsByOwner('vitalik.eth')
- Ethers.js Alchemy Provider methods are now directly embedded under
alchemy.core
- Ethers.js WebSocket Provider methods are now directly embedded under
alchemy.ws
- The settings object is now a config module under
alchemy.config
. - If necessary, the full Ethers.js Provider is now available under
alchemy.config.getProvider()
as a promise to reduce bundle size. - If necessary, the full WebSocket Provider is now available under
alchemy.config.getWebSocketProvider()
as a promise to reduce bundle size. - Dynamic imports for large methods (in particular, Ethers.js methods) are now supported. Initial package size for the Alchemy SDK is 20kB, and will only download Ethers.js packages when a relevant method is called.
- Methods including Collection in the NFT package have been renamed to
Contract
: for instance,getNftsForCollection
is nowgetNftsForContract
.