2023-01-11 09:13:59 +01:00
|
|
|
# cic-chain-events
|
|
|
|
|
|
|
|
![GitHub release (latest by date)](https://img.shields.io/github/v/release/grassrootseconomics/cic-chain-events)
|
2023-01-11 09:25:35 +01:00
|
|
|
![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/grassrootseconomics/cic-chain-events/build.yaml)
|
2023-01-11 10:29:16 +01:00
|
|
|
[![Go Report Card](https://goreportcard.com/badge/github.com/grassrootseconomics/cic-chain-events)](https://goreportcard.com/report/github.com/grassrootseconomics/cic-chain-events)
|
2023-01-11 09:13:59 +01:00
|
|
|
|
|
|
|
> CIC Chain Events
|
|
|
|
|
2023-01-19 13:27:29 +01:00
|
|
|
Filters live (and past) transactions on Celo and emits relevant events to a NATS JetStream sink for further processing/indexing.
|
2023-01-11 10:29:16 +01:00
|
|
|
|
2023-01-19 13:19:50 +01:00
|
|
|
## Prerequisites
|
2023-01-11 09:13:59 +01:00
|
|
|
|
2023-01-19 13:19:50 +01:00
|
|
|
- Linux OS (amd64) or Docker
|
|
|
|
- Postgres >= 14
|
|
|
|
- Celo geth with GraphQL API enabled
|
|
|
|
- NATS server with JetStream enabled
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
|
|
The provided `docker-compose.yaml` is the fastest way to get up and running. Bring up the Postgres and NATS conatiners with `docker-compose up -d`
|
|
|
|
|
|
|
|
### 1. Run migrations
|
|
|
|
|
|
|
|
Run the SQL migrations inside the `migrations` folder with `psql` or [`tern`](https://github.com/jackc/tern) (recommended).
|
|
|
|
|
|
|
|
### 2. Update the config
|
|
|
|
|
|
|
|
The base config is described in `config.toml`. Values can be overriden with env variables e.g. to disable metrics, set `METRICS_GO_PROCESS=false`.
|
|
|
|
|
|
|
|
### 3. Start the service
|
|
|
|
|
2023-01-19 13:27:29 +01:00
|
|
|
**Compiling the binary**
|
2023-01-19 13:19:50 +01:00
|
|
|
|
|
|
|
Run `make build` or download pre-compiled binaries from the [releases](https://github.com/grassrootseconomics/cic-chain-events/releases) page.
|
|
|
|
|
|
|
|
Then start the service with `./cic-chain-events`
|
|
|
|
|
|
|
|
Optional flags:
|
|
|
|
|
|
|
|
- `-config` - `config.toml` file path
|
|
|
|
- `-debug` - Enable/disable debug level logs
|
|
|
|
- `-queries` - `queries.sql` file path
|
|
|
|
|
2023-01-19 13:27:29 +01:00
|
|
|
**Docker**
|
2023-01-19 13:19:50 +01:00
|
|
|
|
|
|
|
To pull the pre-built docker image:
|
|
|
|
|
|
|
|
`docker pull ghcr.io/grassrootseconomics/cic-chain-events/cic-chain-events:latest`
|
|
|
|
|
|
|
|
Or to build it:
|
|
|
|
|
|
|
|
`DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 docker-compose -f docker-compose.build.yaml build --progress plain`
|
|
|
|
|
|
|
|
### 4. NATS JetStream consumer
|
|
|
|
|
|
|
|
A consumer with the following NATS JetStream config is required:
|
|
|
|
|
|
|
|
- Durable
|
|
|
|
- Stream: `CHAIN.*` (See `config.toml` for stream subjects)
|
|
|
|
|
|
|
|
[Benthos](https://benthos.dev) (Benthos can act as a JetStream consumer) example.
|
|
|
|
|
|
|
|
```yaml
|
|
|
|
# config.yaml
|
|
|
|
input:
|
|
|
|
label: jetstream
|
|
|
|
nats_jetstream:
|
|
|
|
urls:
|
|
|
|
- nats://127.0.0.1:4222
|
|
|
|
subject: "CHAIN.*"
|
|
|
|
durable: benthos
|
|
|
|
deliver: all
|
|
|
|
output:
|
|
|
|
stdout:
|
|
|
|
codec: lines
|
|
|
|
```
|
|
|
|
|
|
|
|
Then run:
|
|
|
|
|
|
|
|
`benthos -c config.yaml`
|
|
|
|
|
|
|
|
## Functionality
|
|
|
|
|
|
|
|
[Read more here](docs/functionality.md).
|
2023-01-11 10:29:16 +01:00
|
|
|
|
|
|
|
## License
|
|
|
|
|
2023-01-19 13:19:50 +01:00
|
|
|
[AGPL-3.0](LICENSE).
|