yellowstone-grpc/examples/python
lvboudre d0bbfbba23
examples: added python example (#333)
2024-05-06 16:48:22 -04:00
..
README.md examples: added python example (#333) 2024-05-06 16:48:22 -04:00
helloworld_geyser.py examples: added python example (#333) 2024-05-06 16:48:22 -04:00
requirements.txt examples: added python example (#333) 2024-05-06 16:48:22 -04:00

README.md

Python example

Instruction

This Python example uses grpc.io library. It assumes your CA trust store on your machine allows trust the CA from your RPC endpoint.

Installation

Create a virtual environment and install its dependencies:

$ python -m venv venv
$ . venv/bin/activate
(venv) $ python -m pip install -U pip
(venv) $ python -m pip install -r requirements.txt

Launch the helloworld_geyser

Print the usage:

(venv) $ python helloworld_geyser.py --help
Usage: helloworld_geyser.py [OPTIONS]

  Simple program to get the latest solana slot number

Options:
  --rpc-fqdn TEXT  Fully Qualified domain name of your RPC endpoint
  --x-token TEXT   x-token to authenticate each gRPC call
  --help           Show this message and exit.
  • rpc-fqdn: is the fully qualified domain name without the https://, such as index.rpcpool.com.
  • x-token : is the x-token to authenticate yourself to the RPC node.

Here is a full example:

(venv) $ python helloworld_geyser.py --rpc-fqdn 'index.rpcpool.com' --x-token '2625ae71-0823-41b3-b3bc-4ff89d762d52'
slot: 264236514

NOTE: 2625ae71-0823-41b3-b3bc-4ff89d762d52 is a fake x-token, you need to provide your own token.

Generate gRPC service and request signatures

The library grpcio generates the stubs for you.

From the directory of helloword_geyser.py you can generate all the stubs and data types using the following command:

(venv) $ python -m grpc_tools.protoc -I../../yellowstone-grpc-proto/proto/ --python_out=. --pyi_out=. --grpc_python_out=. ../../yellowstone-grpc-proto/proto/*

This will generate:

  • geyser_pb2.py
  • geyser_pb2.pyi
  • geyser_pb2_grpc.py
  • solana_storage_pb2.py
  • solana_storage_pb2.pyi
  • solana_storage_pb2_grpc.py

Which you can then import into your code.

Useful documentation for grpcio authentication process