Skip to content

Commit 08050b7

Browse files
committed
refactor(execution layer): extract el indexing in its own packages
1 parent de92991 commit 08050b7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+8187
-6930
lines changed

backend/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@ local_deployment/.env
77
__gitignore
88
cmd/playground
99
pkg/api/docs/swagger.json
10+
/internal/contracts/openzeppelin/
1011
coverage.out

backend/cmd/eth1indexer/main.go

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ import (
1717
"time"
1818

1919
"github.com/gobitfly/beaconchain/pkg/commons/db"
20+
"github.com/gobitfly/beaconchain/pkg/commons/db2/data"
21+
"github.com/gobitfly/beaconchain/pkg/commons/db2/database"
22+
"github.com/gobitfly/beaconchain/pkg/commons/db2/metadataupdates"
2023
"github.com/gobitfly/beaconchain/pkg/commons/erc20"
2124
"github.com/gobitfly/beaconchain/pkg/commons/log"
2225
"github.com/gobitfly/beaconchain/pkg/commons/metrics"
@@ -25,6 +28,7 @@ import (
2528
"github.com/gobitfly/beaconchain/pkg/commons/types"
2629
"github.com/gobitfly/beaconchain/pkg/commons/utils"
2730
"github.com/gobitfly/beaconchain/pkg/commons/version"
31+
"github.com/gobitfly/beaconchain/pkg/executionlayer"
2832

2933
"github.com/coocood/freecache"
3034
"github.com/ethereum/go-ethereum/common"
@@ -180,28 +184,27 @@ func Run() {
180184
return
181185
}
182186

183-
transforms := make([]func(blk *types.Eth1Block, cache *freecache.Cache) (*types.BulkMutations, *types.BulkMutations, error), 0)
184-
transforms = append(transforms,
185-
bt.TransformBlock,
186-
bt.TransformTx,
187-
bt.TransformItx,
188-
bt.TransformBlobTx,
189-
bt.TransformERC20,
190-
bt.TransformERC721,
191-
bt.TransformERC1155,
192-
bt.TransformUncle,
193-
bt.TransformWithdrawals,
194-
bt.TransformEnsNameRegistered,
195-
bt.TransformContract)
196-
197187
cache := freecache.NewCache(100 * 1024 * 1024) // 100 MB limit
198188

189+
bigtable, err := database.NewBigTable(utils.Config.Bigtable.Project, utils.Config.Bigtable.Instance, nil)
190+
if err != nil {
191+
log.Fatal(err, "error connecting to bigtable", 0)
192+
}
193+
194+
indexer := executionlayer.NewIndexer(
195+
executionlayer.NewAdaptorV1(
196+
data.NewStore(database.Wrap(bigtable, data.Table)),
197+
metadataupdates.NewStore(database.Wrap(bigtable, metadataupdates.Table), cache),
198+
),
199+
executionlayer.AllTransformers...,
200+
)
201+
199202
if *block != 0 {
200203
err = IndexFromNode(bt, client, *block, *block, *concurrencyBlocks, *traceMode)
201204
if err != nil {
202205
log.Fatal(err, "error indexing from node", 0, map[string]interface{}{"block": *block, "concurrency": *concurrencyBlocks})
203206
}
204-
err = bt.IndexEventsWithTransformers(*block, *block, transforms, *concurrencyData, cache)
207+
err = bt.IndexEventsWithIndexer(*block, *block, indexer, *concurrencyData)
205208
if err != nil {
206209
log.Fatal(err, "error indexing from bigtable", 0)
207210
}
@@ -237,7 +240,7 @@ func Run() {
237240
}
238241

239242
if *endData != 0 && *startData < *endData {
240-
err = bt.IndexEventsWithTransformers(*startData, *endData, transforms, *concurrencyData, cache)
243+
err = bt.IndexEventsWithIndexer(*startData, *endData, indexer, *concurrencyData)
241244
if err != nil {
242245
log.Fatal(err, "error indexing from bigtable", 0)
243246
}
@@ -340,7 +343,7 @@ func Run() {
340343
endBlock = int64(lastBlockFromNode)
341344
}
342345

343-
err = bt.IndexEventsWithTransformers(startBlock, endBlock, transforms, *concurrencyData, cache)
346+
err = bt.IndexEventsWithIndexer(startBlock, endBlock, indexer, *concurrencyData)
344347
if err != nil {
345348
log.Error(err, "error indexing from bigtable", 0, map[string]interface{}{"start": startBlock, "end": endBlock, "concurrency": *concurrencyData})
346349
cache.Clear()

backend/cmd/misc/main.go

Lines changed: 36 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,16 @@ package misc
33
import (
44
"bytes"
55
"context"
6-
"os"
7-
86
"database/sql"
97
"encoding/base64"
108
"encoding/json"
9+
"flag"
1110
"fmt"
1211
"math"
1312
"math/big"
1413
"net/http"
14+
"os"
15+
"slices"
1516
"strconv"
1617
"strings"
1718
"sync"
@@ -23,28 +24,31 @@ import (
2324
"github.com/davecgh/go-spew/spew"
2425
"github.com/ethereum/go-ethereum/common"
2526
"github.com/go-redis/redis/v8"
27+
_ "github.com/jackc/pgx/v5/stdlib"
28+
"github.com/pkg/errors"
29+
utilMath "github.com/protolambda/zrnt/eth2/util/math"
30+
go_ens "github.com/wealdtech/go-ens/v3"
31+
"golang.org/x/sync/errgroup"
32+
"google.golang.org/api/option"
33+
2634
"github.com/gobitfly/beaconchain/cmd/misc/commands"
2735
"github.com/gobitfly/beaconchain/cmd/misc/misctypes"
2836
"github.com/gobitfly/beaconchain/pkg/commons/cache"
2937
"github.com/gobitfly/beaconchain/pkg/commons/db"
38+
"github.com/gobitfly/beaconchain/pkg/commons/db2/data"
39+
"github.com/gobitfly/beaconchain/pkg/commons/db2/database"
40+
"github.com/gobitfly/beaconchain/pkg/commons/db2/metadataupdates"
3041
"github.com/gobitfly/beaconchain/pkg/commons/log"
3142
"github.com/gobitfly/beaconchain/pkg/commons/rpc"
3243
"github.com/gobitfly/beaconchain/pkg/commons/types"
3344
"github.com/gobitfly/beaconchain/pkg/commons/utils"
3445
"github.com/gobitfly/beaconchain/pkg/commons/version"
3546
"github.com/gobitfly/beaconchain/pkg/consapi"
47+
"github.com/gobitfly/beaconchain/pkg/executionlayer"
3648
edb "github.com/gobitfly/beaconchain/pkg/exporter/db"
3749
"github.com/gobitfly/beaconchain/pkg/exporter/modules"
3850
"github.com/gobitfly/beaconchain/pkg/exporter/services"
3951
"github.com/gobitfly/beaconchain/pkg/notification"
40-
_ "github.com/jackc/pgx/v5/stdlib"
41-
"github.com/pkg/errors"
42-
utilMath "github.com/protolambda/zrnt/eth2/util/math"
43-
go_ens "github.com/wealdtech/go-ens/v3"
44-
"golang.org/x/sync/errgroup"
45-
"google.golang.org/api/option"
46-
47-
"flag"
4852

4953
"github.com/Gurpartap/storekit-go"
5054
)
@@ -1607,8 +1611,6 @@ func indexOldEth1Blocks(startBlock uint64, endBlock uint64, batchSize uint64, co
16071611
return
16081612
}
16091613

1610-
transforms := make([]func(blk *types.Eth1Block, cache *freecache.Cache) (*types.BulkMutations, *types.BulkMutations, error), 0)
1611-
16121614
log.Infof("transformerFlag: %v", transformerFlag)
16131615
transformerList := strings.Split(transformerFlag, ",")
16141616
if transformerFlag == "all" {
@@ -1618,42 +1620,29 @@ func indexOldEth1Blocks(startBlock uint64, endBlock uint64, batchSize uint64, co
16181620
return
16191621
}
16201622
log.Infof("transformers: %v", transformerList)
1621-
importENSChanges := false
1622-
/**
1623-
* Add additional transformers you want to sync to this switch case
1624-
**/
1625-
for _, t := range transformerList {
1626-
switch t {
1627-
case "TransformBlock":
1628-
transforms = append(transforms, bt.TransformBlock)
1629-
case "TransformTx":
1630-
transforms = append(transforms, bt.TransformTx)
1631-
case "TransformBlobTx":
1632-
transforms = append(transforms, bt.TransformBlobTx)
1633-
case "TransformItx":
1634-
transforms = append(transforms, bt.TransformItx)
1635-
case "TransformERC20":
1636-
transforms = append(transforms, bt.TransformERC20)
1637-
case "TransformERC721":
1638-
transforms = append(transforms, bt.TransformERC721)
1639-
case "TransformERC1155":
1640-
transforms = append(transforms, bt.TransformERC1155)
1641-
case "TransformWithdrawals":
1642-
transforms = append(transforms, bt.TransformWithdrawals)
1643-
case "TransformUncle":
1644-
transforms = append(transforms, bt.TransformUncle)
1645-
case "TransformEnsNameRegistered":
1646-
transforms = append(transforms, bt.TransformEnsNameRegistered)
1647-
importENSChanges = true
1648-
case "TransformContract":
1649-
transforms = append(transforms, bt.TransformContract)
1650-
default:
1651-
log.Error(nil, "Invalid transformer flag %v", 0)
1652-
return
1653-
}
1654-
}
16551623

1624+
bigtable, err := database.NewBigTable(utils.Config.Bigtable.Project, utils.Config.Bigtable.Instance, nil)
1625+
if err != nil {
1626+
log.Fatal(err, "error connecting to bigtable", 0)
1627+
}
16561628
cache := freecache.NewCache(100 * 1024 * 1024) // 100 MB limit
1629+
transforms, err := executionlayer.TransformerFromList(transformerList)
1630+
if err != nil {
1631+
log.Error(nil, err.Error(), 0)
1632+
return
1633+
}
1634+
indexer := executionlayer.NewIndexer(
1635+
executionlayer.NewAdaptorV1(
1636+
data.NewStore(database.Wrap(bigtable, data.Table)),
1637+
metadataupdates.NewStore(database.Wrap(bigtable, metadataupdates.Table), cache),
1638+
),
1639+
transforms...,
1640+
)
1641+
1642+
importENSChanges := false
1643+
if slices.Contains(transformerList, "TransformEnsNameRegistered") {
1644+
importENSChanges = true
1645+
}
16571646

16581647
to := endBlock
16591648
if endBlock == math.MaxInt64 {
@@ -1672,7 +1661,7 @@ func indexOldEth1Blocks(startBlock uint64, endBlock uint64, batchSize uint64, co
16721661
toBlock := utilMath.MinU64(to, from+blockCount-1)
16731662

16741663
log.Infof("indexing blocks %v to %v in data table ...", from, toBlock)
1675-
err := bt.IndexEventsWithTransformers(int64(from), int64(toBlock), transforms, int64(concurrency), cache)
1664+
err := bt.IndexEventsWithIndexer(int64(from), int64(toBlock), indexer, int64(concurrency))
16761665
if err != nil {
16771666
log.Error(err, "error indexing from bigtable", 0)
16781667
}

backend/internal/contracts/Context.sol

Lines changed: 0 additions & 28 deletions
This file was deleted.

backend/internal/contracts/ERC1155.go

Lines changed: 1069 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)