Skip to main content

A Python aiohttp wrapper client to subscribe to the Ethereum JSON-RPC PubSub endpoints.

Project description

Sub3

A Python aiohttp wrapper client to subscribe to the Ethereum JSON-RPC PubSub endpoints.

Installation

Sub3 can be installed using pip as follows:

$ pip install sub3

Usage

Refer to the full documentation for the in-depth usage.

Prerequisite

  • The URL to a node that has a WebSocket port opened. This can be either from a provider like infura or through a self-hosted Geth/Nethermind node.

Create a basic subscription

The basic subscription will just print the data as received. It can be tested by doing the following:

>>> from sub3 import RPCMaker, Sub3

#RPCMaker is for easy formatting of JSON-RPC calls
>>> rpc = RPCMaker.new_heads()

>>> sub = Sub3("ws://localhost:8546", rpc)
>>> sub.start()
#Connection to the node
connected

#Successful answer from the JSONRPC request
{"jsonrpc":"2.0","id":"1","result":"0x1aaa6ce63bae0597ceadd723fd05e6db"}

#Starts receiving data
{
 "jsonrpc":"2.0",
 "method":"eth_subscription",
 "params":{"subscription":"0x1aaa6ce63bae0597ceadd723fd05e6db",
 "result":{"parentHash":"0x65906581" [...]}
 }

Sub-classing

The data processing can easily be customized by sub-classing the Sub3 class like so:

from sub3 import Sub3

class NewClient(Sub3):

    async def on_data(self, data):
        # add your own data processing logic

    async def on_closed(self, error):
        # add your processing of `closed` message

    async def on_error(self, error):
        # add your processing of `error` message

rpc = RPCMaker.new_heads()

sub = NewClient("ws://localhost:8546", rpc)

sub.start()

History

0.0.3 (2022-07-09)

  • First release on PyPI.

1.0.0 (2022-07-09)

  • First automated release on Pypi

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Sub3-1.0.0.tar.gz (35.2 kB view hashes)

Uploaded Source

Built Distribution

Sub3-1.0.0-py2.py3-none-any.whl (6.9 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page