Skip to content

Commit

Permalink
brought out create butckes in backend.go (0xPolygonHermez#22)
Browse files Browse the repository at this point in the history
  • Loading branch information
V-Staykov authored Dec 15, 2023
1 parent 5e226bc commit 38178cf
Show file tree
Hide file tree
Showing 6 changed files with 48 additions and 35 deletions.
19 changes: 19 additions & 0 deletions eth/backend.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ import (
"github.com/ledgerwatch/erigon/p2p/enode"
"github.com/ledgerwatch/erigon/params"
"github.com/ledgerwatch/erigon/rpc"
"github.com/ledgerwatch/erigon/smt/pkg/db"
"github.com/ledgerwatch/erigon/sync_stages"
"github.com/ledgerwatch/erigon/turbo/engineapi"
"github.com/ledgerwatch/erigon/turbo/services"
Expand All @@ -108,6 +109,7 @@ import (
stages2 "github.com/ledgerwatch/erigon/turbo/stages"
"github.com/ledgerwatch/erigon/turbo/stages/headerdownload"
"github.com/ledgerwatch/erigon/zk/datastream/client"
"github.com/ledgerwatch/erigon/zk/hermez_db"
"github.com/ledgerwatch/erigon/zk/syncer"
"github.com/ledgerwatch/erigon/zkevm/etherman"
)
Expand Down Expand Up @@ -674,6 +676,23 @@ func New(stack *node.Node, config *ethconfig.Config) (*Ethereum, error) {

backend.ethBackendRPC, backend.miningRPC, backend.stateChangesClient = ethBackendRPC, miningRPC, stateDiffClient

tx, err := backend.chainDB.BeginRw(ctx)
if err != nil {
return nil, err
}
// create buckets
if err := hermez_db.CreateHermezBuckets(tx); err != nil {
return nil, err
}

if err := db.CreateEriDbBuckets(tx); err != nil {
return nil, err
}

if err := tx.Commit(); err != nil {
return nil, err
}

if backend.config.Zk != nil {
cfg := backend.config.Zk

Expand Down
17 changes: 11 additions & 6 deletions smt/pkg/db/mdbx.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,13 @@ import (
"math/big"

"fmt"
"strings"

"github.com/ledgerwatch/erigon-lib/kv"
"github.com/ledgerwatch/erigon/ethdb"
"github.com/ledgerwatch/erigon/ethdb/olddb"
"github.com/ledgerwatch/erigon/smt/pkg/utils"
"github.com/ledgerwatch/log/v3"
"strings"
)

type SmtDbTx interface {
Expand All @@ -32,26 +33,30 @@ type EriDb struct {
tx SmtDbTx
}

func NewEriDb(tx kv.RwTx) (*EriDb, error) {
func CreateEriDbBuckets(tx kv.RwTx) error {
err := tx.CreateBucket(TableSmt)
if err != nil {
return &EriDb{}, err
return err
}

err = tx.CreateBucket(TableLastRoot)
if err != nil {
return &EriDb{}, err
return err
}

err = tx.CreateBucket(TableAccountValues)
if err != nil {
return &EriDb{}, err
return err
}

return nil
}

func NewEriDb(tx kv.RwTx) *EriDb {
return &EriDb{
kvTx: tx,
tx: tx,
}, nil
}
}

func (m *EriDb) OpenBatch(quitCh <-chan struct{}) {
Expand Down
9 changes: 5 additions & 4 deletions smt/pkg/db/mdbx_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,18 @@ package db

import (
"context"
"math/big"
"testing"

"github.com/ledgerwatch/erigon-lib/kv/mdbx"
"github.com/ledgerwatch/erigon/smt/pkg/utils"
"github.com/stretchr/testify/assert"
"math/big"
"testing"
)

func TestEriDb(t *testing.T) {
dbi, _ := mdbx.NewTemporaryMdbx()
tx, _ := dbi.BeginRw(context.Background())
db, _ := NewEriDb(tx)
db := NewEriDb(tx)

// The key and value we're going to test
key := utils.NodeKey{1, 2, 3, 4}
Expand All @@ -32,7 +33,7 @@ func TestEriDb(t *testing.T) {
func TestEriDbBatch(t *testing.T) {
dbi, _ := mdbx.NewTemporaryMdbx()
tx, _ := dbi.BeginRw(context.Background())
db, _ := NewEriDb(tx)
db := NewEriDb(tx)

// The key and value we're going to test
key := utils.NodeKey{1, 2, 3, 4}
Expand Down
4 changes: 2 additions & 2 deletions smt/pkg/smt/entity_storage_mdbx_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ func runGenesisTestMdbx(tb testing.TB, filename string) {
if err != nil {
tb.Fatal("Failed to open db: ", err)
}
sdb, _ := db2.NewEriDb(tx)
sdb := db2.NewEriDb(tx)

smt := NewSMT(sdb)

Expand Down Expand Up @@ -306,6 +306,6 @@ func getTempMdbx() (*db2.EriDb, kv.RwDB, error) {
if err != nil {
return nil, nil, err
}
sdb, _ := db2.NewEriDb(tx)
sdb := db2.NewEriDb(tx)
return sdb, dbi, nil
}
24 changes: 9 additions & 15 deletions zk/hermez_db/db.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (

"github.com/ledgerwatch/erigon-lib/common"
"github.com/ledgerwatch/erigon-lib/kv"
"github.com/ledgerwatch/log/v3"

dstypes "github.com/ledgerwatch/erigon/zk/datastream/types"
"github.com/ledgerwatch/erigon/zk/types"
Expand Down Expand Up @@ -39,44 +38,39 @@ func NewHermezDb(tx kv.RwTx) (*HermezDb, error) {
db := &HermezDb{tx: tx}
db.HermezDbReader = NewHermezDbReader(tx)

err := db.CreateBuckets()
if err != nil {
log.Warn("failed to create buckets", "err", err)
}

return db, nil
}

func (db *HermezDb) CreateBuckets() error {
err := db.tx.CreateBucket(L1VERIFICATIONS)
func CreateHermezBuckets(tx kv.RwTx) error {
err := tx.CreateBucket(L1VERIFICATIONS)
if err != nil {
return err
}
err = db.tx.CreateBucket(L1SEQUENCES)
err = tx.CreateBucket(L1SEQUENCES)
if err != nil {
return err
}
err = db.tx.CreateBucket(FORKIDS)
err = tx.CreateBucket(FORKIDS)
if err != nil {
return err
}
err = db.tx.CreateBucket(BLOCKBATCHES)
err = tx.CreateBucket(BLOCKBATCHES)
if err != nil {
return err
}
err = db.tx.CreateBucket(GLOBAL_EXIT_ROOTS)
err = tx.CreateBucket(GLOBAL_EXIT_ROOTS)
if err != nil {
return err
}
err = db.tx.CreateBucket(GLOBAL_EXIT_ROOTS_BATCHES)
err = tx.CreateBucket(GLOBAL_EXIT_ROOTS_BATCHES)
if err != nil {
return err
}
err = db.tx.CreateBucket(TX_PRICE_PERCENTAGE)
err = tx.CreateBucket(TX_PRICE_PERCENTAGE)
if err != nil {
return err
}
err = db.tx.CreateBucket(STATE_ROOTS)
err = tx.CreateBucket(STATE_ROOTS)
if err != nil {
return err
}
Expand Down
10 changes: 2 additions & 8 deletions zk/stages/stage_interhashes.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,10 +116,7 @@ func SpawnZkIntermediateHashesStage(s *sync_stages.StageState, u sync_stages.Unw

shouldRegenerate := to > s.BlockNumber && to-s.BlockNumber > cfg.zk.RebuildTreeAfter

eridb, err := db2.NewEriDb(tx)
if err != nil {
return trie.EmptyRoot, err
}
eridb := db2.NewEriDb(tx)
smt := smt.NewSMT(eridb)

if s.BlockNumber == 0 || shouldRegenerate {
Expand Down Expand Up @@ -453,10 +450,7 @@ func unwindZkSMT(logPrefix string, from, to uint64, db kv.RwTx, cfg ZkInterHashe
log.Info(fmt.Sprintf("[%s] Unwind trie hashes started", logPrefix))
defer log.Info(fmt.Sprintf("[%s] Unwind ended", logPrefix))

eridb, err := db2.NewEriDb(db)
if err != nil {
return trie.EmptyRoot, err
}
eridb := db2.NewEriDb(db)
dbSmt := smt.NewSMT(eridb)

log.Info(fmt.Sprintf("[%s]", logPrefix), "last root", libcommon.BigToHash(dbSmt.LastRoot()))
Expand Down

0 comments on commit 38178cf

Please sign in to comment.