Skip to content

About

A backend for Stellar wallet applications

Resources

Code of conduct

Contributing

Security policy

Stars

29 stars

Watchers

15 watching

Forks

Latest commit

 

History

356 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

wallet-backend

CI Release Image Go License

A Stellar indexer for wallets: every transaction, operation and balance change for every account, plus current balances for every asset and token, served over GraphQL.

  • Run it against your own stellar-rpc and PostgreSQL. One process ingests the ledger, another serves the API.
  • Ask for an account and get its transactions, operations, state changes and balances with cursor pagination.
  • Balances cover XLM, classic assets, Stellar Asset Contracts, SEP-41 tokens and liquidity pool shares.

Docs on main describe unreleased behavior. For the version you run, read the docs at its tag: https://github.com/stellar/wallet-backend/tree/<TAG>/docs.

Requirements

Component Version
PostgreSQL with the TimescaleDB extension 17 with TimescaleDB 2.28 or newer
stellar-rpc for the same network 28.x or 29.x
Container image public.ecr.aws/stellar/wallet-backend:<TAG>
Go (source builds only) see go.mod
Hardware runbook: 4 CPU / 16 GiB for the pubnet ingester, 8 CPU / 32 GiB and 1 TB SSD for a year of pubnet history in PostgreSQL; a fraction of that for testnet

Quickstart

Testnet, one machine, the published image. Needs Docker with Compose v2.

git clone https://github.com/stellar/wallet-backend.git
cd wallet-backend
docker compose up

Compose starts TimescaleDB, a testnet stellar-rpc, runs the migrations, then starts ingestion and the API. The first start downloads a checkpoint from the history archive and loads balances before ingesting live ledgers; watch the ingest logs. Ingestion is healthy when this returns {"status":"ok", ...}:

curl -s localhost:8002/health

Query the API:

curl -s -X POST localhost:8001/graphql/query \
  -H 'Content-Type: application/json' \
  -d '{"query":"{ accountByAddress(address: \"GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H\") { address balances(first: 5) { edges { node { __typename } } } } }"}'

Pin a release with WALLET_BACKEND_VERSION=v1.0.0 docker compose up. For mainnet and real deployments, read Deploying wallet-backend.

Documentation

I want to Read
Try it end to end on testnet Getting started
Deploy it: database, ingestion, protocols, API, backfill Deploying wallet-backend
Fill SEP-41 balances and history, or add a protocol on upgrade Protocols
Upgrade between releases Upgrading
Operate it: sizing, alerts, failures Runbook, Observability
Look up a flag or environment variable Configuration reference
Query the API GraphQL guide, schema reference
Sign requests from any language Request authentication
Use the Go client Go client
Understand how it works Architecture
Contribute CONTRIBUTING, contributor docs
See every page Docs index

Stability

Releases follow semantic versioning from v1.0.0. Within a major version:

  • A GraphQL field or enum value is removed only after it has been marked @deprecated for at least one minor release.
  • Flag and environment variable names do not change.
  • Database migrations are forward-only; upgrading is migrate up with the new binary.

Release notes list the stellar-rpc, protocol, PostgreSQL and TimescaleDB versions each release was tested with. See Releasing for the cadence.

Support

Bugs and feature requests: GitHub Issues. Questions: see SUPPORT.md.

License

Apache 2.0

About

A backend for Stellar wallet applications

Resources

Code of conduct

Contributing

Security policy

Stars

29 stars

Watchers

15 watching

Forks

Releases

Packages

Used by

Contributors

Languages