Thank you for your interest in contributing! Here are some guidelines to help you get started.
- Fork the repository and clone your fork
- Install Go 1.24+ and required services (see README)
- Run
go mod downloadto install dependencies - Copy
configs/config.example.yamltoconfigs/config.yamland configure
- Create a feature branch from
main - Make your changes
- Run tests:
go test ./... - Run the linter:
golangci-lint run - Commit with a descriptive message following Conventional Commits
- Open a pull request
Use the conventional commit format:
feat: add support for Avalanche chain
fix: handle nil pointer in TRON fee calculation
docs: update configuration examples
refactor: extract common worker logic
- Create an indexer implementation in
internal/indexer/indexer_<chain>.go - Implement the
Indexerinterface defined ininternal/indexer/indexer.go - Add RPC client logic in
internal/rpc/<chain>/ - Register the chain type in the manager
- Add configuration examples in
configs/config.example.yaml - Add tests for the new chain indexer
- Follow standard Go conventions (
gofmt,go vet) - Use
slogfor structured logging - Handle errors explicitly — prefer fail-fast over silent swallowing
- Write table-driven tests where applicable
- Use GitHub Issues for bug reports and feature requests
- Include reproduction steps, expected vs actual behavior, and relevant logs
- For security vulnerabilities, email the maintainers directly instead of opening a public issue
Please read and follow our Code of Conduct.