-
- Takes block and tx from LCD and stores into the database in a usable form
- Stores issuance, network and staking information to database every minute
- Collect & cache validator info and store in db
- Calculate validator daily return
- Collect & cache proposal info
-
- Serves data via RESTFul API
Node.jsv16.x or laterPostgreSQLv12.x or later
$ git clone https://github.com/terra-money/fcd.gitnpm iFCD requires PostgreSQL as a backend database and TypeORM as an ORM.
postgres=> CREATE DATABASE fcd OWNER terra;
Table schema has to be synced before running Collector by setting synchronize to true. There is many way to configure TypeORM. Example is below:
ormconfig.js
module.exports = {
name: 'default',
type: 'postgres',
host: 'localhost',
database: 'fcd',
username: 'terra',
password: '<password>',
synchronize: true
}You shall not use CLI method, and it is good to disable synchronize option after the first sync.
| Name | Description | Default | Module(s) |
|---|---|---|---|
| CHAIN_ID | Chain ID of Terra network | bombay-12 | API, Collector |
| INITIAL_HEIGHT | The initial height of network. (Define 4724001 for Columbus-5) | Collector | |
| LCD_URI | LCD URI for Terra network | https://bombay-lcd.terra.dev | API, Collector |
| RPC_URI | RPC URI for Terra network | required: http://x.x.x.x:26657 | API, Collector |
| USE_LOG_FILE | Write logs to logs directory | false | API, Collector |
| SENTRY_DSN | Sentry DSN for error management (optional) | API, Collector | |
| SERVER_PORT | Listening port for API server | 3060 | API |
| FCD_URI | FCD URI for Terra network | https://bombay-fcd.terra.dev | API |
| DISABLE_API | Disable REST APIs | false | API |
| EXCLUDED_ROUTES | List of regular expression string for excluding routes | [] | API |
| MIN_GAS_PRICES | Minimum gas price by denom object | {"uluna": "5.0"} | API |
| TOKEN_NETWORK | Network specifier for whitelisted tokens | required: mainnet / testnet | API |
In Terra, we use direnv for managing environment variable for development. See sample of .envrc
- Collector
npm run coldev
- API
npm run dev
- Test
npm run test- Tests are designed to use testnet
- Collector
npm run collector
- API
npm run start
apiDoc (https://apidocjs.com)
- Generate by
npm run apidoc - Access UI from:
http://localhost:3060/apidoc
Swagger 2.0 (https://swagger.io)
- Generate by
npm run swagger - Access UI from:
http://localhost:3060/swagger - Access the definition from:
http://localhost:3060/static/swagger.json
Generate swagger for AWS api gateway
npm run swagger -- --apigateway- Generated file can be directly imported to aws api gateway
- NB : its uses empty schema for response object as api gateway support object and properties name only having alphanum.
npm run mergeswagger -- -o filename- Combined swagger file will be saved in
staticdirectory in projectroot - If no filename provided as command line argument then default saved file name is
combined-swagger.json - To generate combined swagger for AWS API Gateway add
--apigatewayparameter