mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2024-12-22 19:40:37 +00:00
d55757500f
* Initial spec rewrite * Finish adding merkle tree implementation * Last bits * Move reverse function * Add comments * Add deposit tree snapshot * Add deposit tree * Add comments + cleanup * Fixes * Add missing errors * Small fixes * Add unhandled error * Cleanup * Fix unsafe file.Close * Add missing comments * Small fixes * Address some of deepSource' compaints * Add depositCount check * Add finalizedDeposit check * Replace pointer magic with copy() * Add test for slice reversal * add back bytes method * Add package level description * Remove zerohash gen and add additional checks * Add additional comments * Small lint fixes * Forgot an error * Small fixes * Move Uint64ToBytesLittleEndian32 + test * Fix uint subtraction issue * Move mixInLength below error handling * Fix * Fix deposit root * integrate 4881 * edits * added in deposit tree fetcher * add file * Add remaining fetcher functions * Add new file for inserter functions * Fixes and additional funcs * Cleanup * Add * Graph * pushed up edits * fix up * Updates * Add EIP4881 toggle flag * Add interfaces * Fix tests * More changes * Fix * Remove generated graph * Fix spacing * Changes * Fixes * Changes * Test Fix * gaz * Fix a couple tests * Fix last tests * define protos * proto methods * pushed * regen * Add proto funcs * builds * pushin up * Fix and cleanup * Fix spectest * General cleanup * add 4881 to e2e * Remove debug statements + remove test skip * Implement first set of missing methods * Replace Zerohashes + cleanup * gazelle * fmt * Put back defensive check * Add error logs * InsertFinalizedDeposits: return an error * Remove logging * Radek' Review * Lint fixes * build * Remove cancel * Update beacon-chain/deterministic-genesis/service.go Co-authored-by: Raul Jordan <raul@prysmaticlabs.com> * Update beacon-chain/cache/depositsnapshot/deposit_inserter.go Co-authored-by: Raul Jordan <raul@prysmaticlabs.com> * Cleanup * Fix panic when DepositSnapshot is nil on init * Gofmt * Fix RootEquivalence test * Gofmt * Add missing comments * Nishant' review * Add Insert benchmarks * fix up copy method * Fix deep copy * Fix conflicts * Return error * Fix linter issues * add in migration logic * Cleanup + tests * fix * Fix incorrect index in test * Fix linter * Gofmt * fix it * fixes for off by 1 * gaz * fix cast * fix it * remove ErrZeroIndex * Fix merkle_tree_test * add fallback * add fix for insertion bug * add many fixes * fix empty snapshot * clean up * use feature * remove check * fix failing tests * skip it * fix test * fix test again * fix for the last time * Apply suggestions from code review Co-authored-by: Radosław Kapka <rkapka@wp.pl> * fix it * remove cancel * fix for voting * addressing more comments * fix err * potuz's review * one more test * fix bad test * make 4881 part of dev mode * add workaround for new trie * comment * preston's review * james's review * add comment * james review * preston's review * remove skipped test * gaz --------- Co-authored-by: rauljordan <raul@prysmaticlabs.com> Co-authored-by: nisdas <nishdas93@gmail.com> Co-authored-by: Radosław Kapka <rkapka@wp.pl> Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
96 lines
2.8 KiB
Go
96 lines
2.8 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"flag"
|
|
"fmt"
|
|
"math"
|
|
"time"
|
|
|
|
"github.com/prysmaticlabs/prysm/v4/config/params"
|
|
"github.com/prysmaticlabs/prysm/v4/consensus-types/blocks"
|
|
"github.com/prysmaticlabs/prysm/v4/consensus-types/interfaces"
|
|
"github.com/prysmaticlabs/prysm/v4/consensus-types/primitives"
|
|
v1alpha1 "github.com/prysmaticlabs/prysm/v4/proto/prysm/v1alpha1"
|
|
"github.com/prysmaticlabs/prysm/v4/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, prater=1616508000")
|
|
)
|
|
|
|
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()
|
|
}
|