BlockAtlas is a clean explorer API and transaction observer for cryptocurrencies.
BlockAtlas connects to nodes or explorer APIs of the supported coins and maps transaction data, account transaction history and market data into a generic, easy to work with JSON format. It is in production use at the Trust Wallet app, the official cryptocurrency wallet of Binance. The observer API watches the chain for new transactions and generates notifications by webhooks.
- Go Toolchain versions 1.13+
- Redis instance (Transaction Observer only)
# Download source to $GOPATH
go get -u github.com/trustwallet/blockatlas
cd $(go env GOPATH)/src/github.com/trustwallet/blockatlas
# Start API server at port 8420
go build -o blockatlas . && ./blockatlas api :8420
# Start Observer
go build -o blockatlas . && ./blockatlas observer
# Start sync worker for market prices and rates
go build -o blockatlas . && ./blockatlas sync-markets
From Docker Hub:
docker run -it -p 8420:8420 trustwallet/blockatlas
Build and run from local Dockerfile:
docker build -t blockatlas .
docker run -p 8420:8420 blockatlas
Block Atlas can run just fine without configuration. By default, all coins offering public RPC/explorer APIs are enabled.
If you want to use custom RPC endpoints, or enable coins without public RPC (like Nimiq),
you can configure Block Atlas over config.yml
or environment variables.
Config is loaded from config.yml
if it exists in the working directory.
The repository includes a default config for reference with all available config options.
Example (config.yml
):
nimiq:
api: http://localhost:8648
#...
The rest gets loaded from environment variables.
Every config option is available under the ATLAS_
prefix.
Nested keys are joined via _
(Example nimiq.api
=> NIMIQ_API
)
Example:
ATLAS_NIMIQ_API=http://localhost:8648
Swagger API docs provided at path /swagger/index.html
-
After creating a new route, add comments to your API source code, See Declarative Comments Format.
-
Download Swag for Go by using:
$ go get -u github.com/swaggo/swag/cmd/swag
-
Run the Swag in your Go project root folder.
$ swag init
The Blockatlas can collect and expose by expvar's
, metrics about the application healthy and clients and server requests.
Prometheus or another service can collect metrics provided from the /metrics
endpoint.
To protect the route, you can set the environment variables METRICS_API_TOKEN
, and this route starts to require the auth bearer token.
If you'd like to add support for a new blockchain, feel free to file a pull request. Note that most tokens that run on top of other chains are already supported and don't require code changes (e.g. ERC-20).
The best way to submit feedback and report bugs is to open a GitHub issue. Please be sure to include your operating system, version number, and steps to reproduce reported bugs.
More resources for developers are in CONTRIBUTING.md.