* devnet: snapshot * refactor: pass struct through pipeline fllters * refactor: replace timer with ticker * refactor: filters, jetstream emitter * add register filter * update gas filter * refactor: remove RPC fetcher support  | 
			||
|---|---|---|
| .github | ||
| cmd | ||
| docs | ||
| internal | ||
| migrations | ||
| pkg/fetch | ||
| .deepsource.toml | ||
| .env.example | ||
| .gitignore | ||
| .goreleaser.yaml | ||
| config.toml | ||
| docker-compose.build.yaml | ||
| docker-compose.yaml | ||
| Dockerfile | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| Makefile | ||
| queries.sql | ||
| README.md | ||
cic-chain-events
CIC Chain Events
Filters live (and past) transactions on Celo and emits relevant events to a NATS JetStream sink for further processing/indexing.
Prerequisites
- 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 (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
Compiling the binary
Run make build or download pre-compiled binaries from the releases page.
Then start the service with ./cic-chain-events
Optional flags:
-config-config.tomlfile path-debug- Enable/disable debug level logs-queries-queries.sqlfile path
Docker
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.*(Seeconfig.tomlfor stream subjects) 
Benthos (Benthos can act as a JetStream consumer) example.
# 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