Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/blocknative/python-sdk
https://github.com/blocknative/python-sdk
Last synced: 5 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/blocknative/python-sdk
- Owner: blocknative
- Created: 2021-07-14T23:03:14.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-07-05T18:46:53.000Z (over 2 years ago)
- Last Synced: 2024-04-25T22:22:01.009Z (7 months ago)
- Language: Python
- Size: 2.83 MB
- Stars: 43
- Watchers: 16
- Forks: 17
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Blocknative Python SDK
## Install
VirtualEnv QuickStart
```bash
$ virtualenv bn
$ . ./bn/bin/activate
(bn) $ pip3 install --upgrade pip
(bn) $ pip3 install blocknative-sdk
(bn) $ curl 'https://raw.githubusercontent.com/blocknative/python-sdk/main/examples/subscribe.py' > subscribe.py
(bn) $ python3 subscribe.py myapikey.key
```Manual Install
```bash
python3 setup.py install
```## API Key
To get started using the Blocknative Python SDK you must first obtain an API Key. You can do so by heading over to [Blocknative.com](https://explorer.blocknative.com/account)!
## Usage
### Basic usage
```python
from blocknative.stream import Stream
import json# Initialize the stream
stream = Stream('')# Define your transaction handler which has the context of a specific subscription.
async def txn_handler(txn, unsubscribe):
# Output the transaction data to the console
print(json.dumps(txn, indent=4))# Define the address you want to watch
uniswap_v2_address = '0x7a250d5630b4cf539739df2c5dacb4c659f2488d'# Register the subscription
stream.subscribe_address(uniswap_v2_address, txn_handler)# Start the websocket connection and start receiving events!
stream.connect()
```### Unsubscribing
```python
from blocknative.stream import Stream
import json# Initialize the stream
stream = Stream('')# Define your transaction handler
async def txn_handler(txn, unsubscribe):
if txn['status'] == "confirmed":
# Output the transaction data to the console
print(json.dumps(txn, indent=4))# Unsubscribe from this subscription
unsubscribe()# Define the address you want to watch
uniswap_v2_address = '0x7a250d5630b4cf539739df2c5dacb4c659f2488d'# Register the subscription
stream.subscribe_address(uniswap_v2_address, txn_handler)# Start the websocket connection and start receiving events!
stream.connect()
```### Using Filters
```python
from blocknative.stream import Stream
import jsonstream = Stream('')
async def txn_handler(txn, unsubscribe):
# This will only get called with transactions that have status of 'confirmed'
# This is due to the global filter above
print(json.dumps(txn, indent=4))uniswap_v2_address = '0x7a250d5630b4cf539739df2c5dacb4c659f2488d'
filters = [{
'status': 'confirmed'
}]# Global filter will apply to all of these subscriptions
stream.subscribe_address(curve_fi_address, txn_handler, filter=filters)# Start the websocket connection and start receiving events!
stream.connect()
```### Using Global Filters
Similar as above but this time we use global filters which will apply to all subscriptions.
```python
from blocknative.stream import Stream
import jsonglobal_filters = [{
'status': 'confirmed'
}]stream = Stream('', global_filters=global_filters)
async def txn_handler(txn, unsubscribe):
# This will only get called with transactions that have status of 'confirmed'
# This is due to the global filter above
print(json.dumps(txn, indent=4))uniswap_v2_address = '0x7a250d5630b4cf539739df2c5dacb4c659f2488d'
curve_fi_address = '0xdf5e0e81dff6faf3a7e52ba697820c5e32d806a8'
sushi_swap_address = '0xd9e1ce17f2641f24ae83637ab66a2cca9c378b9f'# Global filter will apply to all of these subscriptions
stream.subscribe_address(curve_fi_address, txn_handler)
stream.subscribe_address(uniswap_v2_address, txn_handler)
stream.subscribe_address(sushi_swap_address, txn_handler)# Start the websocket connection and start receiving events!
stream.connect()
```### Connecting to Binance Smart Chain
```python
from blocknative.stream import Stream
import jsonBSC_NETWORK_ID = 56
# Initialize the stream - specify network_id `56` to connect to bsc main
stream = Stream('', network_id=BSC_NETWORK_ID)# Define your transaction handler which has the context of a specific subscription.
async def txn_handler(txn, unsubscribe):
# Output the transaction data to the console
print(json.dumps(txn, indent=4))# Define the address you want to watch
pancakeswap_v2_address = '0x10ed43c718714eb63d5aa57b78b54704e256024e'# Register the subscription
stream.subscribe_address(pancakeswap_v2_address, txn_handler)# Start the websocket connection and start receiving events!
stream.connect()
```