Photon — это основной индексатор ZK Compression в блокчейне Solana. Он предлагает возможности быстрой индексации, поддержку моментальных снимков и гибкие возможности базы данных для удовлетворения локальных и производственных развертываний.
sudo apt install -y build-essential pkg-config libssl-dev
photon-indexer
: cargo install photon-indexer
photon
photon --rpc-url=https://api.devnet.solana.com
photon --rpc-url=https://api.devnet.solana.com --grpc-url= < grpc_url >
photon --db-url=postgres://postgres@localhost/postgres
photon --start-slot=123
photon --help
Photon поддерживает снимки для быстрой загрузки.
photon-snapshot-loader --snapshot-dir= ~ /snapshot --snapshot-server-url=https://photon-devnet-snapshot.helius-rpc.com
photon --snapshot-dir= ~ /snapshot --rpc-url=https://api.devnet.solana.com --db-url=postgres://postgres@localhost/postgres
Создайте локальный снимок:
photon-snapshotter --snapshot-dir= ~ /snapshot
Храните снимки в корзине R2:
photon-snapshotter --r2-bucket=some-bucket --r2-prefix=prefix
Примечание. При использовании R2 установите переменные среды R2_ACCESS_KEY
, R2_ACCOUNT_ID
и R2_SECRET_KEY
.
Photon поддерживает как Postgres, так и SQLite. По умолчанию он использует базу данных SQLite в памяти.
Чтобы использовать пользовательскую базу данных:
export DATABASE_URL= " postgres://postgres@localhost/postgres "
photon-migration up
photon --db-url= $DATABASE_URL
export MAINNET_RPC_URL=https://api.mainnet-beta.solana.com
export DEVNET_RPC_URL=https://api.devnet.solana.com
export TEST_DATABASE_URL= " postgres://postgres@localhost/postgres "
npm install -g @apidevtools/swagger-cli
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
docker run -p 3001:3001 docker.io/pmantica1/light-prover:1
cargo test
Примечание. Все миграции выполняются автоматически во время тестов как для Postgres, так и для SQLite.
cargo install sea-orm-cli --version 0.10.6
sea-orm-cli generate entity -o src/dao/generated
Сгенерируйте схемы OpenAPI:
cargo run --bin=photon-openapi
Для поддержки или вопросов, пожалуйста, откройте вопрос на Github или свяжитесь с Discord Helius.