Skip to content

Commit

Permalink
Merge branch 'master' into peer-das
Browse files Browse the repository at this point in the history
  • Loading branch information
pk910 committed Jun 18, 2024
2 parents 41b58c1 + d64de3a commit 26114d7
Show file tree
Hide file tree
Showing 61 changed files with 4,955 additions and 798 deletions.
4 changes: 4 additions & 0 deletions cmd/dora-explorer/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -90,13 +90,17 @@ func startFrontend() {
router.HandleFunc("/slots/filtered", handlers.SlotsFiltered).Methods("GET")
router.HandleFunc("/slot/{slotOrHash}", handlers.Slot).Methods("GET")
router.HandleFunc("/slot/{root}/blob/{commitment}", handlers.SlotBlob).Methods("GET")
router.HandleFunc("/mev/blocks", handlers.MevBlocks).Methods("GET")

router.HandleFunc("/search", handlers.Search).Methods("GET")
router.HandleFunc("/search/{type}", handlers.SearchAhead).Methods("GET")
router.HandleFunc("/validators", handlers.Validators).Methods("GET")
router.HandleFunc("/validators/activity", handlers.ValidatorsActivity).Methods("GET")
router.HandleFunc("/validators/deposits", handlers.Deposits).Methods("GET")
router.HandleFunc("/validators/initiated_deposits", handlers.InitiatedDeposits).Methods("GET")
router.HandleFunc("/validators/included_deposits", handlers.IncludedDeposits).Methods("GET")
router.HandleFunc("/validators/voluntary_exits", handlers.VoluntaryExits).Methods("GET")
router.HandleFunc("/validators/slashings", handlers.Slashings).Methods("GET")
router.HandleFunc("/validator/{idxOrPubKey}", handlers.Validator).Methods("GET")
router.HandleFunc("/validator/{index}/slots", handlers.ValidatorSlots).Methods("GET")

Expand Down
9 changes: 7 additions & 2 deletions config/holesky.names.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
795000-894999: "nethermind"
895000-994999: "nimbus"
995000-1094999: "p2p.org"
1095000-1104999: "protolambda"
#1095000-1104999: "protolambda" # exited
1105000-1204999: "prysm"
1205000-1209999: "ralexstokes"
1210000-1309999: "rockawayx"
Expand All @@ -45,7 +45,12 @@
1552771-1562771: "ef_devops"

"withdrawal:0x00000000001d2f94eB88124eEC6E1af72225c52F": "CryptoDevHub"
"withdrawal:0xfaB9DEFD76285c4ED83cbFf9bc880E367a358319": "Cubist"
"withdrawal:0x428614Fb30e3007e5d628D09e8BDB0CE9720FAdB": "Huawei"
"withdrawal:0xF0179dEC45a37423EAD4FaD5fCb136197872EAd9": "Lido"
"withdrawal:0x55fbd2d6643de2e436409b193812bd1ed1c70765": "Obol Network"
"withdrawal:0x0efB35a6D6b14e7F5eEEbAD10A2145A68C99772D": "Frax Finance"

"depositor:0x42a53EB005A09131c0E54125B0d8Ee0DF77c694E": "Cosmostation"
"depositor:0x548CA64e4B0aA42ea59ADbdD84495a4A16c2a234": "Northstake.dk"
"depositor:0x462f0560e473e1545Fd4d0680C02c499aaf01711": "H20Nodes"
"depositor:0x90403bcc417F6bC1F064C7Fc18439fD7421CFD4B": "Linkriver"
46 changes: 37 additions & 9 deletions db/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@ package db
import (
"embed"
"fmt"
"sync"
"time"

_ "github.com/glebarez/go-sqlite"
"github.com/jmoiron/sqlx"
_ "github.com/lib/pq"
_ "github.com/mattn/go-sqlite3"
"github.com/pressly/goose/v3"
"github.com/sirupsen/logrus"

Expand All @@ -29,8 +30,9 @@ var DBPGX *pgxpool.Conn

// DB is a pointer to the explorer-database
var DbEngine dbtypes.DBEngineType
var WriterDb *sqlx.DB
var ReaderDb *sqlx.DB
var writerDb *sqlx.DB
var writerMutex sync.Mutex

var logger = logrus.StandardLogger().WithField("module", "db")

Expand Down Expand Up @@ -64,7 +66,7 @@ func mustInitSqlite(config *types.SqliteDatabaseConfig) (*sqlx.DB, *sqlx.DB) {
}

logger.Infof("initializing sqlite connection to %v with %v/%v conn limit", config.File, config.MaxIdleConns, config.MaxOpenConns)
dbConn, err := sqlx.Open("sqlite3", fmt.Sprintf("%s?cache=shared", config.File))
dbConn, err := sqlx.Open("sqlite", fmt.Sprintf("%s?_pragma=journal_mode(WAL)", config.File))
if err != nil {
utils.LogFatal(err, "error opening sqlite database", 0)
}
Expand Down Expand Up @@ -131,22 +133,22 @@ func MustInitDB() {
if utils.Config.Database.Engine == "sqlite" {
sqliteConfig := (*types.SqliteDatabaseConfig)(&utils.Config.Database.Sqlite)
DbEngine = dbtypes.DBEngineSqlite
WriterDb, ReaderDb = mustInitSqlite(sqliteConfig)
writerDb, ReaderDb = mustInitSqlite(sqliteConfig)
} else if utils.Config.Database.Engine == "pgsql" {
readerConfig := (*types.PgsqlDatabaseConfig)(&utils.Config.Database.Pgsql)
writerConfig := (*types.PgsqlDatabaseConfig)(&utils.Config.Database.PgsqlWriter)
if writerConfig.Host == "" {
writerConfig = readerConfig
}
DbEngine = dbtypes.DBEnginePgsql
WriterDb, ReaderDb = mustInitPgsql(writerConfig, readerConfig)
writerDb, ReaderDb = mustInitPgsql(writerConfig, readerConfig)
} else {
logger.Fatalf("unknown database engine type: %s", utils.Config.Database.Engine)
}
}

func MustCloseDB() {
err := WriterDb.Close()
err := writerDb.Close()
if err != nil {
logger.Errorf("Error closing writer db connection: %v", err)
}
Expand All @@ -156,6 +158,32 @@ func MustCloseDB() {
}
}

func RunDBTransaction(handler func(tx *sqlx.Tx) error) error {
if DbEngine == dbtypes.DBEngineSqlite {
writerMutex.Lock()
defer writerMutex.Unlock()
}

tx, err := writerDb.Beginx()
if err != nil {
return fmt.Errorf("error starting db transactions: %v", err)
}

defer tx.Rollback()

err = handler(tx)
if err != nil {
return err
}

err = tx.Commit()
if err != nil {
return fmt.Errorf("error committing db transaction: %v", err)
}

return nil
}

func ApplyEmbeddedDbSchema(version int64) error {
var engineDialect string
var schemaDirectory string
Expand All @@ -176,15 +204,15 @@ func ApplyEmbeddedDbSchema(version int64) error {
}

if version == -2 {
if err := goose.Up(WriterDb.DB, schemaDirectory); err != nil {
if err := goose.Up(writerDb.DB, schemaDirectory); err != nil {
return err
}
} else if version == -1 {
if err := goose.UpByOne(WriterDb.DB, schemaDirectory); err != nil {
if err := goose.UpByOne(writerDb.DB, schemaDirectory); err != nil {
return err
}
} else {
if err := goose.UpTo(WriterDb.DB, schemaDirectory, version); err != nil {
if err := goose.UpTo(writerDb.DB, schemaDirectory, version); err != nil {
return err
}
}
Expand Down
42 changes: 11 additions & 31 deletions db/deposits.go
Original file line number Diff line number Diff line change
Expand Up @@ -141,33 +141,6 @@ func GetDepositTxs(firstIndex uint64, limit uint32) []*dbtypes.DepositTx {
return depositTxs
}

func GetDeposits(offset uint64, limit uint32) []*dbtypes.Deposit {
var sql strings.Builder
args := []any{}
fmt.Fprint(&sql, `
SELECT
deposit_index, slot_number, slot_index, slot_root, orphaned, publickey, withdrawalcredentials, amount
FROM deposits
`)
args = append(args, limit)
fmt.Fprintf(&sql, `
ORDER BY slot_number DESC, slot_index DESC
LIMIT $%v
`, len(args))
if offset > 0 {
args = append(args, offset)
fmt.Fprintf(&sql, " OFFSET $%v ", len(args))
}

deposits := []*dbtypes.Deposit{}
err := ReaderDb.Select(&deposits, sql.String(), args...)
if err != nil {
logger.Errorf("Error while fetching deposits: %v", err)
return nil
}
return deposits
}

func GetDepositTxsFiltered(offset uint64, limit uint32, finalizedBlock uint64, filter *dbtypes.DepositTxFilter) ([]*dbtypes.DepositTx, uint64, error) {
var sql strings.Builder
args := []any{}
Expand All @@ -184,6 +157,11 @@ func GetDepositTxsFiltered(offset uint64, limit uint32, finalizedBlock uint64, f
fmt.Fprintf(&sql, " %v tx_sender = $%v", filterOp, len(args))
filterOp = "AND"
}
if len(filter.TargetAddress) > 0 {
args = append(args, filter.TargetAddress)
fmt.Fprintf(&sql, " %v tx_target = $%v", filterOp, len(args))
filterOp = "AND"
}
if len(filter.PublicKey) > 0 {
args = append(args, filter.PublicKey)
fmt.Fprintf(&sql, " %v publickey = $%v", filterOp, len(args))
Expand Down Expand Up @@ -255,7 +233,7 @@ func GetDepositTxsFiltered(offset uint64, limit uint32, finalizedBlock uint64, f
return depositTxs[1:], depositTxs[0].Index, nil
}

func GetDepositsFiltered(offset uint64, limit uint32, filter *dbtypes.DepositFilter) ([]*dbtypes.Deposit, uint64, error) {
func GetDepositsFiltered(offset uint64, limit uint32, finalizedBlock uint64, filter *dbtypes.DepositFilter) ([]*dbtypes.Deposit, uint64, error) {
var sql strings.Builder
args := []any{}
fmt.Fprint(&sql, `
Expand Down Expand Up @@ -292,10 +270,12 @@ func GetDepositsFiltered(offset uint64, limit uint32, filter *dbtypes.DepositFil
filterOp = "AND"
}
if filter.WithOrphaned == 0 {
fmt.Fprintf(&sql, " %v orphaned = false", filterOp)
args = append(args, finalizedBlock)
fmt.Fprintf(&sql, " %v (slot_number > $%v OR orphaned = false)", filterOp, len(args))
filterOp = "AND"
} else if filter.WithOrphaned == 2 {
fmt.Fprintf(&sql, " %v orphaned = true", filterOp)
args = append(args, finalizedBlock)
fmt.Fprintf(&sql, " %v (slot_number > $%v OR orphaned = true)", filterOp, len(args))
filterOp = "AND"
}

Expand All @@ -313,7 +293,7 @@ func GetDepositsFiltered(offset uint64, limit uint32, filter *dbtypes.DepositFil
FROM cte
UNION ALL SELECT * FROM (
SELECT * FROM cte
ORDER BY deposit_index DESC
ORDER BY slot_number DESC, deposit_index DESC
LIMIT $%v
`, len(args))

Expand Down
Loading

0 comments on commit 26114d7

Please sign in to comment.