Skip to content

Commit

Permalink
Merge branch 'master' into exit-and-slashing-index
Browse files Browse the repository at this point in the history
  • Loading branch information
pk910 committed Jun 12, 2024
2 parents ef13ff3 + dbd8847 commit b0272f7
Show file tree
Hide file tree
Showing 20 changed files with 382 additions and 327 deletions.
42 changes: 35 additions & 7 deletions db/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package db
import (
"embed"
"fmt"
"sync"
"time"

"github.com/jmoiron/sqlx"
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 @@ -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
26 changes: 13 additions & 13 deletions db/deposits.go
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ func GetDeposits(offset uint64, limit uint32) []*dbtypes.Deposit {
deposits := []*dbtypes.Deposit{}
err := ReaderDb.Select(&deposits, sql.String(), args...)
if err != nil {
logger.Errorf("Error while fetching deposit txs: %v", err)
logger.Errorf("Error while fetching deposits: %v", err)
return nil
}
return deposits
Expand Down Expand Up @@ -201,18 +201,18 @@ func GetDepositTxsFiltered(offset uint64, limit uint32, finalizedBlock uint64, f
}
if filter.WithOrphaned == 0 {
args = append(args, finalizedBlock)
fmt.Fprintf(&sql, " %v (block_number > $%v OR orphaned = 0)", filterOp, len(args))
fmt.Fprintf(&sql, " %v (block_number > $%v OR orphaned = false)", filterOp, len(args))
filterOp = "AND"
} else if filter.WithOrphaned == 2 {
args = append(args, finalizedBlock)
fmt.Fprintf(&sql, " %v (block_number < $%v AND orphaned = 1)", filterOp, len(args))
fmt.Fprintf(&sql, " %v (block_number < $%v AND orphaned = true)", filterOp, len(args))
filterOp = "AND"
}
if filter.WithValid == 0 {
fmt.Fprintf(&sql, " %v valid_signature = 1", filterOp)
fmt.Fprintf(&sql, " %v valid_signature = true", filterOp)
filterOp = "AND"
} else if filter.WithValid == 2 {
fmt.Fprintf(&sql, " %v valid_signature = 0", filterOp)
fmt.Fprintf(&sql, " %v valid_signature = false", filterOp)
filterOp = "AND"
}

Expand All @@ -227,8 +227,8 @@ func GetDepositTxsFiltered(offset uint64, limit uint32, finalizedBlock uint64, f
null AS withdrawalcredentials,
0 AS amount,
null AS signature,
0 AS valid_signature,
0 AS orphaned,
false AS valid_signature,
false AS orphaned,
null AS tx_hash,
null AS tx_sender,
null AS tx_target
Expand All @@ -248,7 +248,7 @@ func GetDepositTxsFiltered(offset uint64, limit uint32, finalizedBlock uint64, f
depositTxs := []*dbtypes.DepositTx{}
err := ReaderDb.Select(&depositTxs, sql.String(), args...)
if err != nil {
logger.Errorf("Error while fetching deposit txs: %v", err)
logger.Errorf("Error while fetching filtered deposit txs: %v", err)
return nil, 0, err
}

Expand Down Expand Up @@ -292,10 +292,10 @@ func GetDepositsFiltered(offset uint64, limit uint32, filter *dbtypes.DepositFil
filterOp = "AND"
}
if filter.WithOrphaned == 0 {
fmt.Fprintf(&sql, " %v orphaned = 0", filterOp)
fmt.Fprintf(&sql, " %v orphaned = false", filterOp)
filterOp = "AND"
} else if filter.WithOrphaned == 2 {
fmt.Fprintf(&sql, " %v orphaned = 1", filterOp)
fmt.Fprintf(&sql, " %v orphaned = true", filterOp)
filterOp = "AND"
}

Expand All @@ -306,14 +306,14 @@ func GetDepositsFiltered(offset uint64, limit uint32, filter *dbtypes.DepositFil
count(*) AS slot_number,
0 AS slot_index,
null AS slot_root,
0 AS orphaned,
false AS orphaned,
null AS publickey,
null AS withdrawalcredentials,
0 AS amount
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 All @@ -326,7 +326,7 @@ func GetDepositsFiltered(offset uint64, limit uint32, filter *dbtypes.DepositFil
deposits := []*dbtypes.Deposit{}
err := ReaderDb.Select(&deposits, sql.String(), args...)
if err != nil {
logger.Errorf("Error while fetching deposit txs: %v", err)
logger.Errorf("Error while fetching filtered deposits: %v", err)
return nil, 0, err
}

Expand Down
10 changes: 6 additions & 4 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ go 1.21

require (
dario.cat/mergo v1.0.0
github.com/attestantio/go-eth2-client v0.21.3
github.com/attestantio/go-eth2-client v0.21.6
github.com/aws/aws-sdk-go-v2 v1.26.1
github.com/aws/aws-sdk-go-v2/config v1.27.11
github.com/aws/aws-sdk-go-v2/credentials v1.17.11
Expand All @@ -21,6 +21,7 @@ require (
github.com/lib/pq v1.10.9
github.com/mattn/go-sqlite3 v1.14.22
github.com/mitchellh/mapstructure v1.5.0
github.com/pk910/dynamic-ssz v0.0.3
github.com/pressly/goose/v3 v3.20.0
github.com/protolambda/bls12-381-util v0.1.0
github.com/protolambda/zrnt v0.32.3
Expand All @@ -31,9 +32,9 @@ require (
github.com/sirupsen/logrus v1.9.3
github.com/tdewolff/minify v2.3.6+incompatible
github.com/urfave/negroni v1.0.0
golang.org/x/crypto v0.22.0
golang.org/x/crypto v0.23.0
golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f
golang.org/x/text v0.14.0
golang.org/x/text v0.15.0
golang.org/x/time v0.5.0
gopkg.in/yaml.v3 v3.0.1
)
Expand Down Expand Up @@ -112,10 +113,11 @@ require (
golang.org/x/mod v0.17.0 // indirect
golang.org/x/net v0.24.0 // indirect
golang.org/x/sync v0.7.0 // indirect
golang.org/x/sys v0.19.0 // indirect
golang.org/x/sys v0.20.0 // indirect
golang.org/x/tools v0.20.0 // indirect
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect
google.golang.org/protobuf v1.33.0 // indirect
gopkg.in/Knetic/govaluate.v3 v3.0.0 // indirect
gopkg.in/cenkalti/backoff.v1 v1.1.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
rsc.io/tmplfunc v0.0.3 // indirect
Expand Down
23 changes: 14 additions & 9 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDO
github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8=
github.com/VictoriaMetrics/fastcache v1.12.1 h1:i0mICQuojGDL3KblA7wUNlY5lOK6a4bwt3uRKnkZU40=
github.com/VictoriaMetrics/fastcache v1.12.1/go.mod h1:tX04vaqcNoQeGLD+ra5pU5sWkuxnzWhEzLwhP9w653o=
github.com/attestantio/go-eth2-client v0.21.3 h1:m4Tzgb5AZkcjvtpmeZSiFireIhdZVK/fSAntJKAH8qM=
github.com/attestantio/go-eth2-client v0.21.3/go.mod h1:vhb0ZoQ6bz0kkoyxVbHDRrZTOJbwlY6udFkwfwrJZTE=
github.com/attestantio/go-eth2-client v0.21.6 h1:eLhQ/OFHPhWrT7LYERL1Z6EPOoec6fJeDHsjjn73KBg=
github.com/attestantio/go-eth2-client v0.21.6/go.mod h1:d7ZPNrMX8jLfIgML5u7QZxFo2AukLM+5m08iMaLdqb8=
github.com/aws/aws-sdk-go-v2 v1.26.1 h1:5554eUqIYVWpU0YmeeYZ0wU64H2VLBs8TlhRB2L+EkA=
github.com/aws/aws-sdk-go-v2 v1.26.1/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM=
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.2 h1:x6xsQXGSmW6frevwDA+vi/wqhp1ct18mVXYN08/93to=
Expand Down Expand Up @@ -322,6 +322,8 @@ github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE=
github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs=
github.com/pk910/dynamic-ssz v0.0.3 h1:fCWzFowq9P6SYCc7NtJMkZcIHk+r5hSVD+32zVi6Aio=
github.com/pk910/dynamic-ssz v0.0.3/go.mod h1:b6CrLaB2X7pYA+OSEEbkgXDEcRnjLOZIxZTsMuO/Y9c=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
Expand Down Expand Up @@ -451,8 +453,8 @@ golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5y
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ=
golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30=
golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M=
golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI=
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f h1:99ci1mjWVBWwJiEKYY6jWa4d2nTQVIEhZIptnrVb1XY=
golang.org/x/exp v0.0.0-20240416160154-fe59bbe5cc7f/go.mod h1:/lliqkxwWAhPjf5oSOIJup2XcqJaw8RGS6k3TGEc7GI=
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
Expand Down Expand Up @@ -504,16 +506,16 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o=
golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q=
golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk=
golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw=
golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
Expand All @@ -522,8 +524,9 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
Expand All @@ -548,6 +551,8 @@ golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSm
golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90=
google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
gopkg.in/Knetic/govaluate.v3 v3.0.0 h1:18mUyIt4ZlRlFZAAfVetz4/rzlJs9yhN+U02F4u1AOc=
gopkg.in/Knetic/govaluate.v3 v3.0.0/go.mod h1:csKLBORsPbafmSCGTEh3U7Ozmsuq8ZSIlKk1bcqph0E=
gopkg.in/cenkalti/backoff.v1 v1.1.0 h1:Arh75ttbsvlpVA7WtVpH4u9h6Zl46xuptxqLxPiSo4Y=
gopkg.in/cenkalti/backoff.v1 v1.1.0/go.mod h1:J6Vskwqd+OMVJl8C33mmtxTBs2gyzfv7UDAkHu8BrjI=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
Expand Down
35 changes: 35 additions & 0 deletions handlers/deposits.go
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,41 @@ func buildDepositsPageData(firstEpoch uint64, pageSize uint64) (*models.Deposits
Time: utils.SlotToTime(deposit.SlotNumber),
Orphaned: deposit.Orphaned,
}

if deposit.Index != nil {
depositData.HasIndex = true
depositData.Index = *deposit.Index
}

validator := validatorSetRsp[phase0.BLSPubKey(deposit.PublicKey)]
if validator == nil {
depositData.ValidatorStatus = "Deposited"
} else {
if strings.HasPrefix(validator.Status.String(), "pending") {
depositData.ValidatorStatus = "Pending"
} else if validator.Status == v1.ValidatorStateActiveOngoing {
depositData.ValidatorStatus = "Active"
depositData.ShowUpcheck = true
} else if validator.Status == v1.ValidatorStateActiveExiting {
depositData.ValidatorStatus = "Exiting"
depositData.ShowUpcheck = true
} else if validator.Status == v1.ValidatorStateActiveSlashed {
depositData.ValidatorStatus = "Slashed"
depositData.ShowUpcheck = true
} else if validator.Status == v1.ValidatorStateExitedUnslashed {
depositData.ValidatorStatus = "Exited"
} else if validator.Status == v1.ValidatorStateExitedSlashed {
depositData.ValidatorStatus = "Slashed"
} else {
depositData.ValidatorStatus = validator.Status.String()
}

if depositData.ShowUpcheck {
depositData.UpcheckActivity = validatorActivityMap[uint64(validator.Index)]
depositData.UpcheckMaximum = uint8(validatorActivityMax)
}
}

pageData.IncludedDeposits = append(pageData.IncludedDeposits, depositData)
}
pageData.IncludedDepositCount = uint64(len(pageData.IncludedDeposits))
Expand Down
2 changes: 2 additions & 0 deletions handlers/slots.go
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@ func buildSlotsPageData(firstSlot uint64, pageSize uint64) (*models.SlotsPageDat
Ts: utils.SlotToTime(slot),
Finalized: finalized,
Status: uint8(dbSlot.Status),
Scheduled: slot >= currentSlot,
Synchronized: dbSlot.SyncParticipation != -1,
Proposer: dbSlot.Proposer,
ProposerName: services.GlobalBeaconService.GetValidatorName(dbSlot.Proposer),
Expand All @@ -166,6 +167,7 @@ func buildSlotsPageData(firstSlot uint64, pageSize uint64) (*models.SlotsPageDat
slotData.WithEthBlock = true
slotData.EthBlockNumber = *dbSlot.EthBlockNumber
}

pageData.Slots = append(pageData.Slots, slotData)
blockCount++
buildSlotsPageSlotGraph(pageData, slotData, &maxOpenFork, openForks, isFirstPage)
Expand Down
Loading

0 comments on commit b0272f7

Please sign in to comment.