Compare commits

..

2 Commits

Author SHA1 Message Date
16ddf2b2ce release: v2.2.0-stable 2025-01-20 15:59:33 +03:00
1f52616f97 release: v2.1.1-stable 2025-01-08 11:45:01 +03:00
7 changed files with 28 additions and 123 deletions

View File

@@ -2,18 +2,21 @@
![GitHub Tag](https://img.shields.io/github/v/tag/grassrootseconomics/eth-indexer)
A lightweight Postgres chain indexer designed to couple with [eth-tracker](https://github.com/grassrootseconomics/eth-tracker) to index all relevant GE related blockchain data on any EVM chain.
A lightweight Postgres chain indexer designed to couple with
[eth-tracker](https://github.com/grassrootseconomics/eth-tracker) to index all
relevant GE related blockchain data on any EVM chain.
## Getting Started
### Prerequisites
* Git
* Docker
* Postgres server
* Access to a `eth-tracker` instance
- Git
- Docker
- Postgres server
- Access to a `eth-tracker` instance
See [docker-compose.yaml](dev/docker-compose.yaml) for an example on how to run and deploy a single instance.
See [docker-compose.yaml](dev/docker-compose.yaml) for an example on how to run
and deploy a single instance.
### 1. Build the Docker image
@@ -34,7 +37,9 @@ For an example, see `dev/docker-compose.postgres.yaml`.
### 3. Update config values
See `.env.example` on how to override default values defined in `config.toml` using env variables. Alternatively, mount your own config.toml either during build time or Docker runtime.
See `.env.example` on how to override default values defined in `config.toml`
using env variables. Alternatively, mount your own config.toml either during
build time or Docker runtime.
```bash
# Override only specific config values
@@ -44,10 +49,10 @@ mv .env.example .env
Special env variables:
* DEV=*
Refer to [`config.toml`](config.toml) to understand different config value settings.
- DEV=*
Refer to [`config.toml`](config.toml) to understand different config value
settings.
### 4. Run the indexer
@@ -58,4 +63,4 @@ docker compose up
## License
[AGPL-3.0](LICENSE).
[AGPL-3.0](LICENSE).

View File

@@ -12,12 +12,12 @@ import (
"syscall"
"time"
"github.com/grassrootseconomics/eth-indexer/internal/api"
"github.com/grassrootseconomics/eth-indexer/internal/cache"
"github.com/grassrootseconomics/eth-indexer/internal/handler"
"github.com/grassrootseconomics/eth-indexer/internal/store"
"github.com/grassrootseconomics/eth-indexer/internal/sub"
"github.com/grassrootseconomics/eth-indexer/internal/util"
"github.com/grassrootseconomics/eth-indexer/v2/internal/api"
"github.com/grassrootseconomics/eth-indexer/v2/internal/cache"
"github.com/grassrootseconomics/eth-indexer/v2/internal/handler"
"github.com/grassrootseconomics/eth-indexer/v2/internal/store"
"github.com/grassrootseconomics/eth-indexer/v2/internal/sub"
"github.com/grassrootseconomics/eth-indexer/v2/internal/util"
"github.com/grassrootseconomics/ethutils"
"github.com/knadh/koanf/v2"
)

View File

@@ -1,8 +1,8 @@
package main
import (
"github.com/grassrootseconomics/eth-indexer/internal/handler"
"github.com/grassrootseconomics/eth-indexer/pkg/router"
"github.com/grassrootseconomics/eth-indexer/v2/internal/handler"
"github.com/grassrootseconomics/eth-indexer/v2/pkg/router"
)
func bootstrapRouter(handlerContainer *handler.Handler) *router.Router {

View File

@@ -1,100 +0,0 @@
package main
import (
"context"
"flag"
"log/slog"
"os"
"time"
"github.com/grassrootseconomics/eth-indexer/internal/store"
"github.com/grassrootseconomics/eth-indexer/internal/util"
"github.com/grassrootseconomics/ethutils"
"github.com/jackc/pgx/v5/pgxpool"
"github.com/knadh/koanf/v2"
"github.com/lmittmann/w3"
)
const (
insertOwnerQuery = `INSERT INTO ownership_change(
new_owner
contract_address
) VALUES ($1, $2) ON CONFLICT DO NOTHING`
getTokens = `SELECT contract_address FROM tokens`
getPools = `SELECT contract_address FROM pools`
)
var (
build = "dev"
confFlag string
migrationsFolderFlag string
queriesFlag string
lo *slog.Logger
ko *koanf.Koanf
dbPool *pgxpool.Pool
)
func init() {
flag.StringVar(&confFlag, "config", "config.toml", "Config file location")
flag.StringVar(&migrationsFolderFlag, "migrations", "migrations/", "Migrations folder location")
flag.StringVar(&queriesFlag, "queries", "queries.sql", "Queries file location")
flag.Parse()
lo = util.InitLogger()
ko = util.InitConfig(lo, confFlag)
lo.Info("starting owners bootstrapper", "build", build)
}
func main() {
var ownerGetter = w3.MustNewFunc("owner()", "address")
chainProvider := ethutils.NewProvider(ko.MustString("chain.rpc_endpoint"), ko.MustInt64("chain.chainid"))
var err error
dbPool, err = newPgStore()
if err != nil {
lo.Error("could not initialize postgres store", "error", err)
os.Exit(1)
}
ctx, cancel := context.WithTimeout(context.Background(), time.Minute*5)
defer cancel()
// TODO: get all tokens and pools
}
func newPgStore() (*pgxpool.Pool, error) {
store, err := store.NewPgStore(store.PgOpts{
Logg: lo,
DSN: ko.MustString("postgres.dsn"),
MigrationsFolderPath: migrationsFolderFlag,
QueriesFolderPath: queriesFlag,
})
if err != nil {
lo.Error("could not initialize postgres store", "error", err)
os.Exit(1)
}
return store.Pool(), nil
}
func insertOwnershipChange(ctx context.Context, owner string, contractAddress string) error {
_, err := dbPool.Exec(
ctx,
insertOwnerQuery,
owner,
contractAddress,
)
if err != nil {
return err
}
return nil
}

2
go.mod
View File

@@ -1,4 +1,4 @@
module github.com/grassrootseconomics/eth-indexer
module github.com/grassrootseconomics/eth-indexer/v2
go 1.23.3

View File

@@ -3,8 +3,8 @@ package handler
import (
"log/slog"
"github.com/grassrootseconomics/eth-indexer/internal/cache"
"github.com/grassrootseconomics/eth-indexer/internal/store"
"github.com/grassrootseconomics/eth-indexer/v2/internal/cache"
"github.com/grassrootseconomics/eth-indexer/v2/internal/store"
"github.com/grassrootseconomics/ethutils"
)

View File

@@ -6,7 +6,7 @@ import (
"log/slog"
"time"
"github.com/grassrootseconomics/eth-indexer/pkg/router"
"github.com/grassrootseconomics/eth-indexer/v2/pkg/router"
"github.com/nats-io/nats.go"
"github.com/nats-io/nats.go/jetstream"
)