bch-api
This is a REST API server, written in node.js JavaScript, using Express.js framework. The purpose of this code is to create a REST API server that provides a common interface for working with a Bitcoin Cash full node and various indexers. See this article to learn about the 'Cash Stack'. Visit FullStack.cash, sign up for a free account, and use this REST API right away with the bch-js JavaScript library.
This repository is intended to be paired with bch-js, an npm JavaScript library for building Bitcoin Cash apps.
Both bch-api and bch-js are part of the 'Cash Stack' full stack of BCH software.
Have questions? Need help? Join our community support: Telegram channel
Features
The following features set this repository apart from rest.bitcoin.com:
- Fine grain access is controlled with a JWT token using this back end auth server and this front end. Can be used to monetize access to the REST API.
- Typescript removed and ES8 JavaScript used instead.
npm audit fix
frequently run to fix dependencies.
Live Demo
You can test a live demo of the REST API by running the bch-js examples. Rate limits are 20 requests per minute, but you can increase them to 100 with a paid account. You can bootstrap your own REST API server by downloading and installing the infrastructure listed on the CashStrap page.
Configure bch-js
The live servers can be used by bch-js by settings the restURL
config property to one of these servers:
- BCHN Mainnet REST API server: https://bchn.fullstack.cash/v4/
- ABC Mainnet REST API server: https://abc.fullstack.cash/v4/
- Testnet3 REST API server: https://testnet3.fullstack.cash/v4/
- Check server status: https://metrics.fullstack.cash
Installation
There are two installation paths, depending if you want a development or production environment. You'll also need to set up the underlying infrastructure described on this page.
This code targets the Ubuntu 18.04 LTS Linux OS or higher.
Development
This is a standard node.js project. The installation is as follows:
- Clone this repository:
git clone https://github.com/Permissionless-Software-Foundation/bch-api && cd bch-api
- Install dependencies:
npm install
- Customize the start-dev-example.sh shell script to point to the required infrastructure. Start the bch-api REST API by running this script:
./start-dev-example.sh
Production
For a production environment, a Docker container is provided in the docker directory. One for mainnet and one for testnet. Again, these containers target the Ubuntu 18.04 LTS Linux OS.
-
Install Docker and Docker Compose by following the commands on this Dev Ops page.
-
Customize the bash script for your installation.
-
Build the Docker container with:
docker-compose build --no-cache
- Run the Docker container with:
docker-compose up
Rate Limits
The rate limits for api.fullstack.cash are controlled by a JWT token. You can increase your rate limits by purchasing a JWT token. If you're using bch-js, check the readme for instructions on increasing rate limits. For interacting with bch-api directly, you can then include the JWT token in the HTTP header like this:
Authorization: Token <JWT token>
cURL example
Here is an example using curl for using the JWT token when making a call to the REST API:
export BCHJSTOKEN=eyJhbGciOiJ....
curl "https://bchn.fullstack.cash/v4/electrumx/balance/bitcoincash:qr69kyzha07dcecrsvjwsj4s6slnlq4r8c30lxnur3" -X GET -H "Content-Type: application/json" -H "Authorization: Token ${BCHJSTOKEN}"
Support
Have questions? Need help? Join our community support Telegram channel
IPFS
Copies of this repository will occasionally be uploaded and hosted on IPFS:
License
MIT a