special: backport old celo geth to latest eth-tracker codebase

This commit is contained in:
2024-11-20 10:20:20 +03:00
parent 0b5af2f938
commit 911f11eb38
25 changed files with 268 additions and 423 deletions

View File

@@ -6,11 +6,11 @@ import (
"os"
"time"
"github.com/ethereum/go-ethereum/common"
"github.com/celo-org/celo-blockchain/common"
"github.com/grassrootseconomics/celoutils/v3"
"github.com/grassrootseconomics/eth-tracker/internal/chain"
"github.com/grassrootseconomics/ethutils"
"github.com/lmittmann/w3"
"github.com/lmittmann/w3/module/eth"
"github.com/grassrootseconomics/w3-celo"
"github.com/grassrootseconomics/w3-celo/module/eth"
)
func bootstrapCache(
@@ -30,14 +30,14 @@ func bootstrapCache(
defer cancel()
for _, registry := range registries {
registryMap, err := chain.Provider().RegistryMap(ctx, ethutils.HexToAddress(registry))
registryMap, err := chain.Provider().RegistryMap(ctx, celoutils.HexToAddress(registry))
if err != nil {
lo.Error("could not fetch registry", "registry", registry, "error", err)
os.Exit(1)
}
for k, v := range registryMap {
if v != ethutils.ZeroAddress {
if v != celoutils.ZeroAddress {
if err := cache.Add(ctx, v.Hex()); err != nil {
return err
}
@@ -46,7 +46,7 @@ func bootstrapCache(
}
}
if accountIndex := registryMap[ethutils.AccountIndex]; accountIndex != ethutils.ZeroAddress {
if accountIndex := registryMap[celoutils.AccountIndex]; accountIndex != celoutils.ZeroAddress {
if err := cache.Add(ctx, accountIndex.Hex()); err != nil {
return err
}
@@ -67,7 +67,7 @@ func bootstrapCache(
}
for _, address := range accountIndexBatch {
if address != ethutils.ZeroAddress {
if address != celoutils.ZeroAddress {
if err := cache.Add(ctx, address.Hex()); err != nil {
return err
}
@@ -78,7 +78,7 @@ func bootstrapCache(
}
}
if tokenIndex := registryMap[ethutils.TokenIndex]; tokenIndex != ethutils.ZeroAddress {
if tokenIndex := registryMap[celoutils.TokenIndex]; tokenIndex != celoutils.ZeroAddress {
if err := cache.Add(ctx, tokenIndex.Hex()); err != nil {
return err
}
@@ -99,7 +99,7 @@ func bootstrapCache(
}
for _, address := range tokenIndexBatch {
if address != ethutils.ZeroAddress {
if address != celoutils.ZeroAddress {
if err := cache.Add(ctx, address.Hex()); err != nil {
return err
}
@@ -110,7 +110,7 @@ func bootstrapCache(
}
}
if poolIndex := registryMap[ethutils.PoolIndex]; poolIndex != ethutils.ZeroAddress {
if poolIndex := registryMap[celoutils.PoolIndex]; poolIndex != celoutils.ZeroAddress {
if err := cache.Add(ctx, poolIndex.Hex()); err != nil {
return err
}
@@ -130,7 +130,7 @@ func bootstrapCache(
break
}
for _, address := range poolIndexBatch {
if address != ethutils.ZeroAddress {
if address != celoutils.ZeroAddress {
if err := cache.Add(ctx, address.Hex()); err != nil {
return err
}
@@ -144,14 +144,14 @@ func bootstrapCache(
if err != nil {
return err
}
if priceQuoter != ethutils.ZeroAddress {
if priceQuoter != celoutils.ZeroAddress {
if err := cache.Add(ctx, priceQuoter.Hex()); err != nil {
return err
}
lo.Debug("cached pool index quoter", "pool", poolIndex.Hex(), "address", priceQuoter.Hex())
}
if poolTokenIndex != ethutils.ZeroAddress {
if poolTokenIndex != celoutils.ZeroAddress {
if err := cache.Add(ctx, poolTokenIndex.Hex()); err != nil {
return err
}
@@ -171,7 +171,7 @@ func bootstrapCache(
break
}
for _, address := range poolTokenIndexBatch {
if address != ethutils.ZeroAddress {
if address != celoutils.ZeroAddress {
if err := cache.Add(ctx, address.Hex()); err != nil {
return err
}
@@ -188,16 +188,16 @@ func bootstrapCache(
}
for _, address := range watchlist {
if err := cache.Add(ctx, ethutils.HexToAddress(address).Hex()); err != nil {
if err := cache.Add(ctx, celoutils.HexToAddress(address).Hex()); err != nil {
return err
}
}
for _, address := range blacklist {
if err := cache.Remove(ctx, ethutils.HexToAddress(address).Hex()); err != nil {
if err := cache.Remove(ctx, celoutils.HexToAddress(address).Hex()); err != nil {
return err
}
}
if err := cache.Remove(ctx, ethutils.ZeroAddress.Hex()); err != nil {
if err := cache.Remove(ctx, celoutils.ZeroAddress.Hex()); err != nil {
return err
}
cacheSize, err := cache.Size(ctx)

View File

@@ -1,121 +0,0 @@
package chain
// import (
// "context"
// "math/big"
// "net/http"
// "time"
// "github.com/ethereum/go-ethereum/common"
// "github.com/ethereum/go-ethereum/core/types"
// "github.com/ethereum/go-ethereum/rpc"
// "github.com/grassrootseconomics/ethutils"
// "github.com/lmittmann/w3"
// "github.com/lmittmann/w3/module/eth"
// "github.com/lmittmann/w3/w3types"
// )
// type (
// CeloRPCOpts struct {
// RPCEndpoint string
// ChainID int64
// }
// CeloRPC struct {
// provider *ethutils.Provider
// }
// )
// func NewRPCFetcher(o CeloRPCOpts) (Chain, error) {
// customRPCClient, err := lowTimeoutRPCClient(o.RPCEndpoint)
// if err != nil {
// return nil, err
// }
// chainProvider := ethutils.NewProvider(
// o.RPCEndpoint,
// o.ChainID,
// ethutils.WithClient(customRPCClient),
// )
// return &CeloRPC{
// provider: chainProvider,
// }, nil
// }
// func lowTimeoutRPCClient(rpcEndpoint string) (*w3.Client, error) {
// httpClient := &http.Client{
// Timeout: 10 * time.Second,
// }
// rpcClient, err := rpc.DialHTTPWithClient(
// rpcEndpoint,
// httpClient,
// )
// if err != nil {
// return nil, err
// }
// return w3.NewClient(rpcClient), nil
// }
// func (c *CeloRPC) GetBlocks(ctx context.Context, blockNumbers []uint64) ([]types.Block, error) {
// blocksCount := len(blockNumbers)
// calls := make([]w3types.RPCCaller, blocksCount)
// blocks := make([]types.Block, blocksCount)
// for i, v := range blockNumbers {
// calls[i] = eth.BlockByNumber(new(big.Int).SetUint64(v)).Returns(&blocks[i])
// }
// if err := c.provider.Client.CallCtx(ctx, calls...); err != nil {
// return nil, err
// }
// return blocks, nil
// }
// func (c *CeloRPC) GetBlock(ctx context.Context, blockNumber uint64) (*types.Block, error) {
// var block types.Block
// blockCall := eth.BlockByNumber(new(big.Int).SetUint64(blockNumber)).Returns(&block)
// if err := c.provider.Client.CallCtx(ctx, blockCall); err != nil {
// return nil, err
// }
// return &block, nil
// }
// func (c *CeloRPC) GetLatestBlock(ctx context.Context) (uint64, error) {
// var latestBlock big.Int
// latestBlockCall := eth.BlockNumber().Returns(&latestBlock)
// if err := c.provider.Client.CallCtx(ctx, latestBlockCall); err != nil {
// return 0, err
// }
// return latestBlock.Uint64(), nil
// }
// func (c *CeloRPC) GetTransaction(ctx context.Context, txHash common.Hash) (*types.Transaction, error) {
// var transaction types.Transaction
// if err := c.provider.Client.CallCtx(ctx, eth.Tx(txHash).Returns(&transaction)); err != nil {
// return nil, err
// }
// return &transaction, nil
// }
// func (c *CeloRPC) GetReceipts(ctx context.Context, blockNumber *big.Int) (types.Receipts, error) {
// var receipts types.Receipts
// if err := c.provider.Client.CallCtx(ctx, eth.BlockReceipts(blockNumber).Returns(&receipts)); err != nil {
// return nil, err
// }
// return receipts, nil
// }
// func (c *CeloRPC) Provider() *ethutils.Provider {
// return c.provider
// }

View File

@@ -1,98 +0,0 @@
package chain
// import (
// "context"
// "testing"
// "time"
// "github.com/stretchr/testify/require"
// )
// const (
// testRPCEndpoint = "https://celo.archive.grassecon.net"
// testChainID = 42220
// )
// func setupCeloRPC() (Chain, error) {
// opts := CeloRPCOpts{
// RPCEndpoint: testRPCEndpoint,
// ChainID: testChainID,
// }
// return NewRPCFetcher(opts)
// }
// func TestRPC_GetBlocks(t *testing.T) {
// rpcFetcher, err := setupCeloRPC()
// require.NoError(t, err)
// blockNumbers := []uint64{
// 19_600_000,
// 23_000_000,
// 27_000_000,
// }
// ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
// defer cancel()
// blocks, err := rpcFetcher.GetBlocks(ctx, blockNumbers)
// require.NoError(t, err)
// t.Logf("blocks %+v\n", blocks)
// }
// func TestRPC_GetBlock(t *testing.T) {
// rpcFetcher, err := setupCeloRPC()
// require.NoError(t, err)
// var blockNumber uint64 = 19_900_000
// ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
// defer cancel()
// block, err := rpcFetcher.GetBlock(ctx, blockNumber)
// require.NoError(t, err)
// t.Logf("block %+v\n", block)
// }
// func TestRPC_GetLatestBlock(t *testing.T) {
// rpcFetcher, err := setupCeloRPC()
// require.NoError(t, err)
// ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
// defer cancel()
// block, err := rpcFetcher.GetLatestBlock(ctx)
// require.NoError(t, err)
// t.Logf("block %+v\n", block)
// }
// func TestRPC_GetTransaction(t *testing.T) {
// rpcFetcher, err := setupCeloRPC()
// require.NoError(t, err)
// var blockNumber uint64 = 19_900_000
// ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
// defer cancel()
// block, err := rpcFetcher.GetBlock(ctx, blockNumber)
// require.NoError(t, err)
// require.NotNil(t, block)
// transaction, err := rpcFetcher.GetTransaction(ctx, block.Transactions()[0].Hash())
// require.NoError(t, err)
// t.Logf("transaction %+v\n", transaction)
// }
// func TestRPC_GetReceipts(t *testing.T) {
// rpcFetcher, err := setupCeloRPC()
// require.NoError(t, err)
// var blockNumber uint64 = 19_900_000
// ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
// defer cancel()
// block, err := rpcFetcher.GetBlock(ctx, blockNumber)
// require.NoError(t, err)
// require.NotNil(t, block)
// receipts, err := rpcFetcher.GetReceipts(ctx, block.Number())
// require.NoError(t, err)
// t.Logf("receipts %+v\n", receipts)
// }

View File

@@ -4,17 +4,17 @@ import (
"context"
"math/big"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/grassrootseconomics/ethutils"
"github.com/celo-org/celo-blockchain/common"
"github.com/celo-org/celo-blockchain/core/types"
"github.com/grassrootseconomics/celoutils/v3"
)
type Chain interface {
GetBlocks(context.Context, []uint64) ([]*types.Block, error)
GetBlocks(context.Context, []uint64) ([]types.Block, error)
GetBlock(context.Context, uint64) (*types.Block, error)
GetLatestBlock(context.Context) (uint64, error)
GetTransaction(context.Context, common.Hash) (*types.Transaction, error)
GetReceipts(context.Context, *big.Int) (types.Receipts, error)
// Expose provider until we eject from celoutils
Provider() *ethutils.Provider
Provider() *celoutils.Provider
}

View File

@@ -6,13 +6,13 @@ import (
"net/http"
"time"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/rpc"
"github.com/grassrootseconomics/ethutils"
"github.com/lmittmann/w3"
"github.com/lmittmann/w3/module/eth"
"github.com/lmittmann/w3/w3types"
"github.com/celo-org/celo-blockchain/common"
"github.com/celo-org/celo-blockchain/core/types"
"github.com/celo-org/celo-blockchain/rpc"
"github.com/grassrootseconomics/celoutils/v3"
"github.com/grassrootseconomics/w3-celo"
"github.com/grassrootseconomics/w3-celo/module/eth"
"github.com/grassrootseconomics/w3-celo/w3types"
)
type (
@@ -22,7 +22,7 @@ type (
}
EthRPC struct {
provider *ethutils.Provider
provider *celoutils.Provider
}
)
@@ -32,10 +32,10 @@ func NewRPCFetcher(o EthRPCOpts) (Chain, error) {
return nil, err
}
chainProvider := ethutils.NewProvider(
chainProvider := celoutils.NewProvider(
o.RPCEndpoint,
o.ChainID,
ethutils.WithClient(customRPCClient),
celoutils.WithClient(customRPCClient),
)
return &EthRPC{
@@ -48,7 +48,10 @@ func lowTimeoutRPCClient(rpcEndpoint string) (*w3.Client, error) {
Timeout: 10 * time.Second,
}
rpcClient, err := rpc.DialOptions(context.Background(), rpcEndpoint, rpc.WithHTTPClient(httpClient))
rpcClient, err := rpc.DialHTTPWithClient(
rpcEndpoint,
httpClient,
)
if err != nil {
return nil, err
}
@@ -56,10 +59,10 @@ func lowTimeoutRPCClient(rpcEndpoint string) (*w3.Client, error) {
return w3.NewClient(rpcClient), nil
}
func (c *EthRPC) GetBlocks(ctx context.Context, blockNumbers []uint64) ([]*types.Block, error) {
func (c *EthRPC) GetBlocks(ctx context.Context, blockNumbers []uint64) ([]types.Block, error) {
blocksCount := len(blockNumbers)
calls := make([]w3types.RPCCaller, blocksCount)
blocks := make([]*types.Block, blocksCount)
blocks := make([]types.Block, blocksCount)
for i, v := range blockNumbers {
calls[i] = eth.BlockByNumber(new(big.Int).SetUint64(v)).Returns(&blocks[i])
@@ -73,18 +76,18 @@ func (c *EthRPC) GetBlocks(ctx context.Context, blockNumbers []uint64) ([]*types
}
func (c *EthRPC) GetBlock(ctx context.Context, blockNumber uint64) (*types.Block, error) {
var block *types.Block
var block types.Block
blockCall := eth.BlockByNumber(new(big.Int).SetUint64(blockNumber)).Returns(&block)
if err := c.provider.Client.CallCtx(ctx, blockCall); err != nil {
return nil, err
}
return block, nil
return &block, nil
}
func (c *EthRPC) GetLatestBlock(ctx context.Context) (uint64, error) {
var latestBlock *big.Int
var latestBlock big.Int
latestBlockCall := eth.BlockNumber().Returns(&latestBlock)
if err := c.provider.Client.CallCtx(ctx, latestBlockCall); err != nil {
@@ -95,12 +98,12 @@ func (c *EthRPC) GetLatestBlock(ctx context.Context) (uint64, error) {
}
func (c *EthRPC) GetTransaction(ctx context.Context, txHash common.Hash) (*types.Transaction, error) {
var transaction *types.Transaction
var transaction types.Transaction
if err := c.provider.Client.CallCtx(ctx, eth.Tx(txHash).Returns(&transaction)); err != nil {
return nil, err
}
return transaction, nil
return &transaction, nil
}
func (c *EthRPC) GetReceipts(ctx context.Context, blockNumber *big.Int) (types.Receipts, error) {
@@ -113,6 +116,6 @@ func (c *EthRPC) GetReceipts(ctx context.Context, blockNumber *big.Int) (types.R
return receipts, nil
}
func (c *EthRPC) Provider() *ethutils.Provider {
func (c *EthRPC) Provider() *celoutils.Provider {
return c.provider
}

View File

@@ -3,10 +3,10 @@ package handler
import (
"context"
"github.com/ethereum/go-ethereum/common"
"github.com/celo-org/celo-blockchain/common"
"github.com/grassrootseconomics/eth-tracker/pkg/event"
"github.com/grassrootseconomics/eth-tracker/pkg/router"
"github.com/lmittmann/w3"
"github.com/grassrootseconomics/w3-celo"
)
const custodialRegistrationEventName = "CUSTODIAL_REGISTRATION"

View File

@@ -4,11 +4,11 @@ import (
"context"
"math/big"
"github.com/ethereum/go-ethereum/common"
"github.com/celo-org/celo-blockchain/common"
"github.com/grassrootseconomics/celoutils/v3"
"github.com/grassrootseconomics/eth-tracker/pkg/event"
"github.com/grassrootseconomics/eth-tracker/pkg/router"
"github.com/grassrootseconomics/ethutils"
"github.com/lmittmann/w3"
"github.com/grassrootseconomics/w3-celo"
)
const faucetGiveEventName = "FAUCET_GIVE"
@@ -71,15 +71,15 @@ func HandleFaucetGiveInputData() router.InputDataHandlerFunc {
faucetGiveEvent.Payload = map[string]any{
"recipient": to.Hex(),
"token": ethutils.ZeroAddress,
"token": celoutils.ZeroAddress,
"amount": "0",
}
return c(ctx, faucetGiveEvent)
case "de82efb4":
faucetGiveEvent.Payload = map[string]any{
"recipient": ethutils.ZeroAddress,
"token": ethutils.ZeroAddress,
"recipient": celoutils.ZeroAddress,
"token": celoutils.ZeroAddress,
"amount": "0",
}

View File

@@ -3,10 +3,10 @@ package handler
import (
"context"
"github.com/ethereum/go-ethereum/common"
"github.com/celo-org/celo-blockchain/common"
"github.com/grassrootseconomics/eth-tracker/pkg/event"
"github.com/grassrootseconomics/eth-tracker/pkg/router"
"github.com/lmittmann/w3"
"github.com/grassrootseconomics/w3-celo"
)
const indexAddEventName = "INDEX_ADD"

View File

@@ -3,10 +3,10 @@ package handler
import (
"context"
"github.com/ethereum/go-ethereum/common"
"github.com/celo-org/celo-blockchain/common"
"github.com/grassrootseconomics/eth-tracker/pkg/event"
"github.com/grassrootseconomics/eth-tracker/pkg/router"
"github.com/lmittmann/w3"
"github.com/grassrootseconomics/w3-celo"
)
const indexRemoveEventName = "INDEX_REMOVE"

View File

@@ -3,10 +3,10 @@ package handler
import (
"context"
"github.com/ethereum/go-ethereum/common"
"github.com/celo-org/celo-blockchain/common"
"github.com/grassrootseconomics/eth-tracker/pkg/event"
"github.com/grassrootseconomics/eth-tracker/pkg/router"
"github.com/lmittmann/w3"
"github.com/grassrootseconomics/w3-celo"
)
const ownershipEventName = "OWNERSHIP_TRANSFERRED"

View File

@@ -4,10 +4,10 @@ import (
"context"
"math/big"
"github.com/ethereum/go-ethereum/common"
"github.com/celo-org/celo-blockchain/common"
"github.com/grassrootseconomics/eth-tracker/pkg/event"
"github.com/grassrootseconomics/eth-tracker/pkg/router"
"github.com/lmittmann/w3"
"github.com/grassrootseconomics/w3-celo"
)
const poolDepositEventName = "POOL_DEPOSIT"

View File

@@ -4,10 +4,10 @@ import (
"context"
"math/big"
"github.com/ethereum/go-ethereum/common"
"github.com/celo-org/celo-blockchain/common"
"github.com/grassrootseconomics/eth-tracker/pkg/event"
"github.com/grassrootseconomics/eth-tracker/pkg/router"
"github.com/lmittmann/w3"
"github.com/grassrootseconomics/w3-celo"
)
const poolSwapEventName = "POOL_SWAP"

View File

@@ -4,10 +4,10 @@ import (
"context"
"math/big"
"github.com/ethereum/go-ethereum/common"
"github.com/celo-org/celo-blockchain/common"
"github.com/grassrootseconomics/eth-tracker/pkg/event"
"github.com/grassrootseconomics/eth-tracker/pkg/router"
"github.com/lmittmann/w3"
"github.com/grassrootseconomics/w3-celo"
)
const quoterPriceEventName = "QUOTER_PRICE_INDEX_UPDATED"

View File

@@ -6,7 +6,7 @@ import (
"github.com/grassrootseconomics/eth-tracker/pkg/event"
"github.com/grassrootseconomics/eth-tracker/pkg/router"
"github.com/lmittmann/w3"
"github.com/grassrootseconomics/w3-celo"
)
const sealEventName = "SEAL_STATE_CHANGE"

View File

@@ -4,10 +4,10 @@ import (
"context"
"math/big"
"github.com/ethereum/go-ethereum/common"
"github.com/celo-org/celo-blockchain/common"
"github.com/grassrootseconomics/eth-tracker/pkg/event"
"github.com/grassrootseconomics/eth-tracker/pkg/router"
"github.com/lmittmann/w3"
"github.com/grassrootseconomics/w3-celo"
)
const approveEventName = "TOKEN_APPROVE"

View File

@@ -4,10 +4,10 @@ import (
"context"
"math/big"
"github.com/ethereum/go-ethereum/common"
"github.com/celo-org/celo-blockchain/common"
"github.com/grassrootseconomics/eth-tracker/pkg/event"
"github.com/grassrootseconomics/eth-tracker/pkg/router"
"github.com/lmittmann/w3"
"github.com/grassrootseconomics/w3-celo"
)
const burnEventName = "TOKEN_BURN"

View File

@@ -4,10 +4,10 @@ import (
"context"
"math/big"
"github.com/ethereum/go-ethereum/common"
"github.com/celo-org/celo-blockchain/common"
"github.com/grassrootseconomics/eth-tracker/pkg/event"
"github.com/grassrootseconomics/eth-tracker/pkg/router"
"github.com/lmittmann/w3"
"github.com/grassrootseconomics/w3-celo"
)
const mintEventName = "TOKEN_MINT"

View File

@@ -4,10 +4,10 @@ import (
"context"
"math/big"
"github.com/ethereum/go-ethereum/common"
"github.com/celo-org/celo-blockchain/common"
"github.com/grassrootseconomics/eth-tracker/pkg/event"
"github.com/grassrootseconomics/eth-tracker/pkg/router"
"github.com/lmittmann/w3"
"github.com/grassrootseconomics/w3-celo"
)
const transferEventName = "TOKEN_TRANSFER"

View File

@@ -6,8 +6,8 @@ import (
"fmt"
"log/slog"
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/types"
"github.com/celo-org/celo-blockchain/common"
"github.com/celo-org/celo-blockchain/core/types"
"github.com/grassrootseconomics/eth-tracker/db"
"github.com/grassrootseconomics/eth-tracker/internal/cache"
"github.com/grassrootseconomics/eth-tracker/internal/chain"

View File

@@ -4,9 +4,9 @@ import (
"context"
"time"
"github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/event"
"github.com/celo-org/celo-blockchain"
"github.com/celo-org/celo-blockchain/core/types"
"github.com/celo-org/celo-blockchain/event"
)
type BlockQueueFn func(uint64) error
@@ -23,7 +23,7 @@ func (s *Syncer) Start() {
s.realtimeSub = event.ResubscribeErr(resubscribeInterval, s.resubscribeFn())
}
func (s *Syncer) receiveRealtimeBlocks(ctx context.Context, fn BlockQueueFn) (ethereum.Subscription, error) {
func (s *Syncer) receiveRealtimeBlocks(ctx context.Context, fn BlockQueueFn) (celo.Subscription, error) {
newHeadersReceiver := make(chan *types.Header, 1)
sub, err := s.ethClient.SubscribeNewHead(ctx, newHeadersReceiver)
s.logg.Info("realtime syncer connected to ws endpoint")

View File

@@ -4,8 +4,8 @@ import (
"context"
"log/slog"
"github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/ethclient"
"github.com/celo-org/celo-blockchain"
"github.com/celo-org/celo-blockchain/ethclient"
"github.com/grassrootseconomics/eth-tracker/db"
"github.com/grassrootseconomics/eth-tracker/internal/chain"
"github.com/grassrootseconomics/eth-tracker/internal/pool"
@@ -27,7 +27,7 @@ type (
db db.DB
ethClient *ethclient.Client
logg *slog.Logger
realtimeSub ethereum.Subscription
realtimeSub celo.Subscription
pool *pool.Pool
stats *stats.Stats
stopCh chan struct{}