Skip to content
This repository has been archived by the owner on Feb 17, 2024. It is now read-only.

Cyfrin/alchemy_sdk_py

Repository files navigation

alchemy_sdk_py (Beta)

An SDK to use the Alchemy API


Alchemy logo


Getting Started

Requirements

  • Python 3.7 or higher
    • You'll know you've done it right if you can run python3 --version in your terminal and see something like Python 3.10.6

Installation

pip3 install alchemy_sdk_py

Quickstart

Get an API Key

After installing, you'll need to sign up for an API key and set it as an ALCHEMY_API_KEY environment variable. You can place them in a .env file if you like just please don't push the .env file to GitHub.

.env

ALCHEMY_API_KEY="asdfasfsfasf

If you're unfamiliar with environment variables, you can use the API to set the key directly using the SDK - please don't do this in production code.

from alchemy_sdk_py import Alchemy

alchemy = Alchemy(api_key="asdfasfsfasf", network="eth_mainnet")

If you have your environment variable set, and you want to use eth mainnet, you can just do this:

from alchemy_sdk_py import Alchemy
alchemy = Alchemy()

You can also set the network ID using the chainId, or hex, and even update it later.

# For Goerli ETH
alchemy = Alchemy(network=5)
# For Polygon ("0x89" is hex for 137)
alchemy.set_network("0x89")

Useage

from alchemy_sdk_py import Alchemy

alchemy = Alchemy()

current_block_number = alchemy.get_current_block_number()
print(current_block_number)
# prints the current block number

With web3.py

from alchemy_sdk_py import Alchemy
from web3 import Web3

alchemy = Alchemy()

w3 = Web3(Web3.HTTPProvider(alchemy.base_url))

Get all ERC20, value, and NFT transfers for an address

The following code will get you every transfer in and out of a single wallet address.

from alchemy_sdk_py import Alchemy
alchemy = Alchemy()

address = "YOUR_ADDRESS_HERE"

transfers, page_key = alchemy.get_asset_transfers(from_address=address)
print(transfers)
# prints every transfer in or out that's ever happened on the address

Get contract metadata for any NFT

ENS = "0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85"
contract_metadata = alchemy.get_contract_metadata(ENS)

print(contract_metadata["contractMetadata"]["openSea"]["collectionName"])
# prints "ENS: Ethereum Name Service"

What's here and what's not

What this currently has

Just about everything in the Alchemy SDK section of the docs.

Currently not implemented

  • batchRequests
  • web sockets
  • Notify API & filters ie eth_newFilter
  • Async support
  • ENS Support for addresses
  • Double check the NFT, Transact, and Token docs for function
  • Trace API
  • Debug API