Mike Rolish e14d642acd fix(pyth-lazer-agent): Support jrpc string ids 1 month ago
..
config d8e680e924 Update config.toml 1 month ago
src e14d642acd fix(pyth-lazer-agent): Support jrpc string ids 1 month ago
.dockerignore 6fd4328f82 pyth-lazer-agent fixes, tests, ci 5 months ago
.gitignore 6fd4328f82 pyth-lazer-agent fixes, tests, ci 5 months ago
Cargo.toml e14d642acd fix(pyth-lazer-agent): Support jrpc string ids 1 month ago
Dockerfile e27eb2b284 fix(pyth-lazer-agent): logging tweaks, cargo update, Dockerfile fix 5 months ago
README.md e9233ff40f chore(pyth-lazer-agent) Update README.md and config sample (#2956) 3 months ago

README.md

pyth-lazer-agent

pyth-lazer-agent is intended to be run by Lazer publishers analogous to pyth-agent for pythnet publishers. Currently, it retains the existing Lazer publishing interface, but will batch and sign transactions before publishing them to Lazer.

Keypair

You will need to generate an ed25519 keypair and provide the pubkey to the Lazer team. solana-keygen is the recommended utility.

solana-keygen new -o /path/to/keypair.json
solana-keygen pubkey /path/to/keypair.json

pyth-lazer-agent will need to configure access to this keypair file to sign transactions.

Build and run

From cargo

# Download the cargo package
cargo install pyth-lazer-agent

# Add .cargo/bin to PATH
export PATH="$PATH:~/.cargo/bin"

# Run the agent
pyth-lazer-agent --help

From source

Please check rust-toolchain to see the version of Rust needed to build (currently 1.88). You will also need SSL and CA certificates. cargo build should then work as usual.

Docker

See the included Dockerfile to build an image yourself.

Container

We also publish images to the GitHub Container Registry. The latest will be available at ghcr.io/pyth-network/pyth-lazer-agent:latest.

Configure

The agent takes a single --config CLI option, pointing at config/config.toml by default. Configuration is currently minimal:

relayer_urls = ["wss://relayer-0.pyth-lazer.dourolabs.app/v1/transaction", "wss://relayer-1.pyth-lazer.dourolabs.app/v1/transaction"]
publish_keypair_path = "/path/to/keypair.json"
authorization_token = "your_token"
listen_address = "0.0.0.0:8910"
publish_interval_duration = "25ms"
enable_update_deduplication = false
  • relayers_urls: The Lazer team will provide these.
  • publish_keypair_path: The keypair file generated with solana-keygen or similar.
  • authorization_token: The Lazer team will provide this or instruct that it can be omitted.
  • listen_address: The local port the agent will be listening on; can be anything you want.
  • publisher_interval: The agent will batch and send transaction bundles at this interval. The Lazer team will provide guidance here.
  • enable_update_deduplication: The agent will deduplicate updates based inside each batch before sending it to Lazer.