mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-01-08 07:03:58 -05:00
remove eth1voting tool (#15415)
This commit is contained in:
3
changelog/pvl-rm-eth1voting-tool.md
Normal file
3
changelog/pvl-rm-eth1voting-tool.md
Normal file
@@ -0,0 +1,3 @@
|
||||
### Removed
|
||||
|
||||
- Removed //tools/eth1voting tool. This is no longer needed as the beacon chain no longer uses eth1data voting since Electra.
|
||||
@@ -1,29 +0,0 @@
|
||||
load("@io_bazel_rules_go//go:def.bzl", "go_binary")
|
||||
load("@prysm//tools/go:def.bzl", "go_library")
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = [
|
||||
"main.go",
|
||||
"votes.go",
|
||||
],
|
||||
importpath = "github.com/OffchainLabs/prysm/v6/tools/eth1voting",
|
||||
visibility = ["//visibility:private"],
|
||||
deps = [
|
||||
"//config/params:go_default_library",
|
||||
"//consensus-types/blocks:go_default_library",
|
||||
"//consensus-types/interfaces:go_default_library",
|
||||
"//consensus-types/primitives:go_default_library",
|
||||
"//encoding/bytesutil:go_default_library",
|
||||
"//proto/prysm/v1alpha1:go_default_library",
|
||||
"//time/slots:go_default_library",
|
||||
"@org_golang_google_grpc//:go_default_library",
|
||||
"@org_golang_x_sync//errgroup:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
go_binary(
|
||||
name = "eth1voting",
|
||||
embed = [":go_default_library"],
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
||||
@@ -1,60 +0,0 @@
|
||||
# eth1voting
|
||||
|
||||
This tool can be used to query a Prysm node to print eth1voting information.
|
||||
|
||||
Flags:
|
||||
```
|
||||
-beacon string
|
||||
gRPC address of the Prysm beacon node (default "127.0.0.1:4000")
|
||||
-genesis uint
|
||||
Genesis time. mainnet=1606824023, holesky=1695902400 (default 1606824023)
|
||||
```
|
||||
|
||||
Usage:
|
||||
```
|
||||
bazel run //tools/eth1voting -- -beacon=127.0.0.1:4000 -genesis=1606824023
|
||||
```
|
||||
|
||||
Example response
|
||||
```
|
||||
Looking back from current epoch 71132 back to 71104
|
||||
Next period starts at epoch 71168 (3h50m1.542950367s)
|
||||
====Eth1Data Voting Report====
|
||||
|
||||
Total votes: 732
|
||||
|
||||
Block Hashes
|
||||
0xd3c1132b8cebb601872a32277af708ec0f026b74e814956b0f1456516234c48e=656
|
||||
0x6b418e33ac6a7d181408af0306c475adff9ea28a43b97e1f85e82070988f9288=11
|
||||
0x1957243971efcd4897e219769b235807f7c2fb726efb78917478416c7ecccf4a=1
|
||||
0x8e13121c1e4e86c134cf89dbb43971fd7e17d5388a88b6e8cfd2271a403dd80f=1
|
||||
0x38d0c96aa2d7dc31b26923637023f0ec1bfa2c661f6194f39bad8862b4a8d8a0=63
|
||||
|
||||
Deposit Roots
|
||||
0x7145788308cae4edce32d919d55363b9bf33e26598ce08d591da1b973fa3f5bc=638
|
||||
0x1cd4bea86b7d65ddd49541f828cf2e7b0068cd00bb7e4888aaf4630b11b15b15=11
|
||||
0x3abb67c5bba4d0c3cbf7f2aacbd01b8fcf59840c8ce36f82e8d03bb51a987677=1
|
||||
0xf44e4b56d4190d89d897e5641d0cea3a8adbfd419d1258a9180732f0a0caee26=64
|
||||
0xdd868cee8ef3eaee5a6707fc2e68682a8d7d77fdc349cf1fd8f8f88303a1faa8=18
|
||||
|
||||
Deposit Counts
|
||||
66629=638
|
||||
66623=11
|
||||
66624=1
|
||||
66627=64
|
||||
66628=18
|
||||
|
||||
Votes
|
||||
deposit_root:"݆\x8c\xee\x8e\xf3\xea\xeeZg\x07\xfc.hh*\x8d}w\xfd\xc3I\xcf\x1f\xd8\xf8\xf8\x83\x03\xa1\xfa\xa8" deposit_count:66628 block_hash:"\xd3\xc1\x13+\x
|
||||
8c\xeb\xb6\x01\x87*2'z\xf7\x08\xec\x0f\x02kt\xe8\x14\x95k\x0f\x14VQb4Ď"=18
|
||||
deposit_root:"qEx\x83\x08\xca\xe4\xed\xce2\xd9\x19\xd5Sc\xb9\xbf3\xe2e\x98\xce\x08Ց\xda\x1b\x97?\xa3\xf5\xbc" deposit_count:66629 block_hash:"\xd3\xc1\x13+\
|
||||
x8c\xeb\xb6\x01\x87*2'z\xf7\x08\xec\x0f\x02kt\xe8\x14\x95k\x0f\x14VQb4Ď"=638
|
||||
deposit_root:"\x1cԾ\xa8k}e\xddԕA\xf8(\xcf.{\x00h\xcd\x00\xbb~H\x88\xaa\xf4c\x0b\x11\xb1[\x15" deposit_count:66623 block_hash:"kA\x8e3\xacj}\x18\x14\x08\xaf\
|
||||
x03\x06\xc4u\xad\xff\x9e\xa2\x8aC\xb9~\x1f\x85\xe8 p\x98\x8f\x92\x88"=11
|
||||
deposit_root:":\xbbgŻ\xa4\xd0\xc3\xcb\xf7\xf2\xaa\xcb\xd0\x1b\x8f\xcfY\x84\x0c\x8c\xe3o\x82\xe8\xd0;\xb5\x1a\x98vw" deposit_count:66624 block_hash:"\x19W$9q
|
||||
\xef\xcdH\x97\xe2\x19v\x9b#X\x07\xf7\xc2\xfbrn\xfbx\x91txAl~\xcc\xcfJ"=1
|
||||
deposit_root:"\xf4NKV\xd4\x19\r\x89ؗ\xe5d\x1d\x0c\xea:\x8a\xdb\xfdA\x9d\x12X\xa9\x18\x072\xf0\xa0\xca\xee&" deposit_count:66627 block_hash:"\x8e\x13\x12\x1c\
|
||||
x1eN\x86\xc14ω۴9q\xfd~\x17\xd58\x8a\x88\xb6\xe8\xcf\xd2'\x1a@=\xd8\x0f"=1
|
||||
deposit_root:"\xf4NKV\xd4\x19\r\x89ؗ\xe5d\x1d\x0c\xea:\x8a\xdb\xfdA\x9d\x12X\xa9\x18\x072\xf0\xa0\xca\xee&" deposit_count:66627 block_hash:"8\xd0\xc9j\xa2\xd
|
||||
7\xdc1\xb2i#cp#\xf0\xec\x1b\xfa,f\x1fa\x94b\xb4\xa8ؠ"=63
|
||||
```
|
||||
@@ -1,95 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"flag"
|
||||
"fmt"
|
||||
"math"
|
||||
"time"
|
||||
|
||||
"github.com/OffchainLabs/prysm/v6/config/params"
|
||||
"github.com/OffchainLabs/prysm/v6/consensus-types/blocks"
|
||||
"github.com/OffchainLabs/prysm/v6/consensus-types/interfaces"
|
||||
"github.com/OffchainLabs/prysm/v6/consensus-types/primitives"
|
||||
v1alpha1 "github.com/OffchainLabs/prysm/v6/proto/prysm/v1alpha1"
|
||||
"github.com/OffchainLabs/prysm/v6/time/slots"
|
||||
"golang.org/x/sync/errgroup"
|
||||
"google.golang.org/grpc"
|
||||
)
|
||||
|
||||
var (
|
||||
beacon = flag.String("beacon", "127.0.0.1:4000", "gRPC address of the Prysm beacon node")
|
||||
genesis = flag.Uint64("genesis", 1606824023, "Genesis time. mainnet=1606824023, holesky=1695902400")
|
||||
)
|
||||
|
||||
func main() {
|
||||
flag.Parse()
|
||||
ctx := context.Background()
|
||||
|
||||
cc, err := grpc.DialContext(ctx, *beacon, grpc.WithInsecure(), grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(math.MaxInt64)))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
c := v1alpha1.NewBeaconChainClient(cc)
|
||||
g, ctx := errgroup.WithContext(ctx)
|
||||
v := newVotes()
|
||||
|
||||
current := slots.ToEpoch(slots.CurrentSlot(*genesis))
|
||||
start := current.Div(uint64(params.BeaconConfig().EpochsPerEth1VotingPeriod)).Mul(uint64(params.BeaconConfig().EpochsPerEth1VotingPeriod))
|
||||
nextStart := start.AddEpoch(params.BeaconConfig().EpochsPerEth1VotingPeriod)
|
||||
|
||||
fmt.Printf("Looking back from current epoch %d back to %d\n", current, start)
|
||||
nextStartSlot, err := slots.EpochStart(nextStart)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
nextStartTime, err := slots.ToTime(*genesis, nextStartSlot)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
fmt.Printf("Next period starts at epoch %d (%s)\n", nextStart, time.Until(nextStartTime))
|
||||
|
||||
for i := primitives.Epoch(0); i < current.Sub(uint64(start)); i++ {
|
||||
j := i
|
||||
g.Go(func() error {
|
||||
resp, err := c.ListBeaconBlocks(ctx, &v1alpha1.ListBlocksRequest{
|
||||
QueryFilter: &v1alpha1.ListBlocksRequest_Epoch{Epoch: current.Sub(uint64(j))},
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, c := range resp.GetBlockContainers() {
|
||||
v.Insert(wrapBlock(c))
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
if err := g.Wait(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
fmt.Println(v.Report())
|
||||
}
|
||||
|
||||
func wrapBlock(b *v1alpha1.BeaconBlockContainer) interfaces.ReadOnlyBeaconBlock {
|
||||
var err error
|
||||
var wb interfaces.ReadOnlySignedBeaconBlock
|
||||
switch bb := b.Block.(type) {
|
||||
case *v1alpha1.BeaconBlockContainer_Phase0Block:
|
||||
wb, err = blocks.NewSignedBeaconBlock(bb.Phase0Block)
|
||||
case *v1alpha1.BeaconBlockContainer_AltairBlock:
|
||||
wb, err = blocks.NewSignedBeaconBlock(bb.AltairBlock)
|
||||
case *v1alpha1.BeaconBlockContainer_BellatrixBlock:
|
||||
wb, err = blocks.NewSignedBeaconBlock(bb.BellatrixBlock)
|
||||
case *v1alpha1.BeaconBlockContainer_CapellaBlock:
|
||||
wb, err = blocks.NewSignedBeaconBlock(bb.CapellaBlock)
|
||||
case *v1alpha1.BeaconBlockContainer_BlindedCapellaBlock:
|
||||
wb, err = blocks.NewSignedBeaconBlock(bb.BlindedCapellaBlock)
|
||||
}
|
||||
if err != nil {
|
||||
panic("no block")
|
||||
}
|
||||
return wb.Block()
|
||||
}
|
||||
@@ -1,91 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"sync"
|
||||
|
||||
"github.com/OffchainLabs/prysm/v6/consensus-types/interfaces"
|
||||
"github.com/OffchainLabs/prysm/v6/encoding/bytesutil"
|
||||
v1alpha1 "github.com/OffchainLabs/prysm/v6/proto/prysm/v1alpha1"
|
||||
)
|
||||
|
||||
type votes struct {
|
||||
l sync.RWMutex
|
||||
|
||||
hashes map[[32]byte]uint
|
||||
roots map[[32]byte]uint
|
||||
counts map[uint64]uint
|
||||
votes map[[32]byte]*v1alpha1.Eth1Data
|
||||
voteCounts map[[32]byte]uint
|
||||
total uint
|
||||
}
|
||||
|
||||
func newVotes() *votes {
|
||||
return &votes{
|
||||
hashes: make(map[[32]byte]uint),
|
||||
roots: make(map[[32]byte]uint),
|
||||
counts: make(map[uint64]uint),
|
||||
votes: make(map[[32]byte]*v1alpha1.Eth1Data),
|
||||
voteCounts: make(map[[32]byte]uint),
|
||||
}
|
||||
}
|
||||
|
||||
func (v *votes) Insert(blk interfaces.ReadOnlyBeaconBlock) {
|
||||
v.l.Lock()
|
||||
defer v.l.Unlock()
|
||||
|
||||
e1d := blk.Body().Eth1Data()
|
||||
htr, err := e1d.HashTreeRoot()
|
||||
if err != nil {
|
||||
panic(err) // lint:nopanic -- Panic is OK for this tool.
|
||||
}
|
||||
v.hashes[bytesutil.ToBytes32(e1d.BlockHash)]++
|
||||
v.roots[bytesutil.ToBytes32(e1d.DepositRoot)]++
|
||||
v.counts[e1d.DepositCount]++
|
||||
v.votes[htr] = e1d
|
||||
v.voteCounts[htr]++
|
||||
v.total++
|
||||
}
|
||||
|
||||
func (v *votes) Report() string {
|
||||
v.l.RLock()
|
||||
defer v.l.RUnlock()
|
||||
format := `====Eth1Data Voting Report====
|
||||
|
||||
Total votes: %d
|
||||
|
||||
Block Hashes
|
||||
%s
|
||||
Deposit Roots
|
||||
%s
|
||||
Deposit Counts
|
||||
%s
|
||||
Votes
|
||||
%s
|
||||
`
|
||||
var blockHashes string
|
||||
for r, cnt := range v.hashes {
|
||||
blockHashes += fmt.Sprintf("%#x=%d\n", r, cnt)
|
||||
}
|
||||
var depositRoots string
|
||||
for r, cnt := range v.roots {
|
||||
depositRoots += fmt.Sprintf("%#x=%d\n", r, cnt)
|
||||
}
|
||||
var depositCounts string
|
||||
for dc, cnt := range v.counts {
|
||||
depositCounts += fmt.Sprintf("%d=%d\n", dc, cnt)
|
||||
}
|
||||
var votes string
|
||||
for htr, e1d := range v.votes {
|
||||
votes += fmt.Sprintf("%s=%d\n", e1d.String(), v.voteCounts[htr])
|
||||
}
|
||||
|
||||
return fmt.Sprintf(
|
||||
format,
|
||||
v.total,
|
||||
blockHashes,
|
||||
depositRoots,
|
||||
depositCounts,
|
||||
votes,
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user