Skip to content

Commit

Permalink
Fix dependent root retrival genesis case (#14053)
Browse files Browse the repository at this point in the history
* Fix dependent root retrival genesis case

* Remove print
  • Loading branch information
terencechain authored May 28, 2024
1 parent 2d15e53 commit 43c7659
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 15 deletions.
36 changes: 28 additions & 8 deletions beacon-chain/rpc/eth/validator/handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -708,10 +708,20 @@ func (s *Server) GetAttesterDuties(w http.ResponseWriter, r *http.Request) {
})
}

dependentRoot, err := attestationDependentRoot(st, requestedEpoch)
if err != nil {
httputil.HandleError(w, "Could not get dependent root: "+err.Error(), http.StatusInternalServerError)
return
var dependentRoot []byte
if requestedEpoch == 0 {
r, err := s.BeaconDB.GenesisBlockRoot(ctx)
if err != nil {
httputil.HandleError(w, "Could not get genesis block root: "+err.Error(), http.StatusInternalServerError)
return
}
dependentRoot = r[:]
} else {
dependentRoot, err = attestationDependentRoot(st, requestedEpoch)
if err != nil {
httputil.HandleError(w, "Could not get dependent root: "+err.Error(), http.StatusInternalServerError)
return
}
}
isOptimistic, err := s.OptimisticModeFetcher.IsOptimistic(ctx)
if err != nil {
Expand Down Expand Up @@ -822,10 +832,20 @@ func (s *Server) GetProposerDuties(w http.ResponseWriter, r *http.Request) {
}
}

dependentRoot, err := proposalDependentRoot(st, requestedEpoch)
if err != nil {
httputil.HandleError(w, "Could not get dependent root: "+err.Error(), http.StatusInternalServerError)
return
var dependentRoot []byte
if requestedEpoch == 0 {
r, err := s.BeaconDB.GenesisBlockRoot(ctx)
if err != nil {
httputil.HandleError(w, "Could not get genesis block root: "+err.Error(), http.StatusInternalServerError)
return
}
dependentRoot = r[:]
} else {
dependentRoot, err = proposalDependentRoot(st, requestedEpoch)
if err != nil {
httputil.HandleError(w, "Could not get dependent root: "+err.Error(), http.StatusInternalServerError)
return
}
}
isOptimistic, err := s.OptimisticModeFetcher.IsOptimistic(ctx)
if err != nil {
Expand Down
19 changes: 12 additions & 7 deletions beacon-chain/rpc/eth/validator/handlers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1443,6 +1443,9 @@ func TestGetAttesterDuties(t *testing.T) {
chain := &mockChain.ChainService{
State: bs, Root: genesisRoot[:], Slot: &chainSlot,
}
db := dbutil.SetupDB(t)
require.NoError(t, db.SaveGenesisBlockRoot(context.Background(), genesisRoot))

s := &Server{
Stater: &testutil.MockStater{
StatesBySlot: map[primitives.Slot]state.BeaconState{
Expand All @@ -1453,6 +1456,7 @@ func TestGetAttesterDuties(t *testing.T) {
TimeFetcher: chain,
SyncChecker: &mockSync.Sync{IsSyncing: false},
OptimisticModeFetcher: chain,
BeaconDB: db,
}

t.Run("single validator", func(t *testing.T) {
Expand Down Expand Up @@ -1619,7 +1623,6 @@ func TestGetAttesterDuties(t *testing.T) {
blk.Block.Slot = 31
root, err := blk.Block.HashTreeRoot()
require.NoError(t, err)
db := dbutil.SetupDB(t)
util.SaveBlock(t, ctx, db, blk)
require.NoError(t, db.SaveGenesisBlockRoot(ctx, root))

Expand All @@ -1632,6 +1635,7 @@ func TestGetAttesterDuties(t *testing.T) {
TimeFetcher: chain,
OptimisticModeFetcher: chain,
SyncChecker: &mockSync.Sync{IsSyncing: false},
BeaconDB: db,
}

var body bytes.Buffer
Expand Down Expand Up @@ -1693,6 +1697,9 @@ func TestGetProposerDuties(t *testing.T) {
pubKeys[i] = deposits[i].Data.PublicKey
}

db := dbutil.SetupDB(t)
require.NoError(t, db.SaveGenesisBlockRoot(context.Background(), genesisRoot))

t.Run("ok", func(t *testing.T) {
bs, err := transition.GenesisBeaconState(context.Background(), deposits, 0, eth1Data)
require.NoError(t, err, "Could not set up genesis state")
Expand All @@ -1710,6 +1717,7 @@ func TestGetProposerDuties(t *testing.T) {
SyncChecker: &mockSync.Sync{IsSyncing: false},
PayloadIDCache: cache.NewPayloadIDCache(),
TrackedValidatorsCache: cache.NewTrackedValidatorsCache(),
BeaconDB: db,
}

request := httptest.NewRequest(http.MethodGet, "http://www.example.com/eth/v1/validator/duties/proposer/{epoch}", nil)
Expand Down Expand Up @@ -1751,6 +1759,7 @@ func TestGetProposerDuties(t *testing.T) {
SyncChecker: &mockSync.Sync{IsSyncing: false},
PayloadIDCache: cache.NewPayloadIDCache(),
TrackedValidatorsCache: cache.NewTrackedValidatorsCache(),
BeaconDB: db,
}

request := httptest.NewRequest(http.MethodGet, "http://www.example.com/eth/v1/validator/duties/proposer/{epoch}", nil)
Expand Down Expand Up @@ -1793,6 +1802,7 @@ func TestGetProposerDuties(t *testing.T) {
SyncChecker: &mockSync.Sync{IsSyncing: false},
PayloadIDCache: cache.NewPayloadIDCache(),
TrackedValidatorsCache: cache.NewTrackedValidatorsCache(),
BeaconDB: db,
}

currentEpoch := slots.ToEpoch(bs.Slot())
Expand All @@ -1809,7 +1819,6 @@ func TestGetProposerDuties(t *testing.T) {
assert.StringContains(t, fmt.Sprintf("Request epoch %d can not be greater than next epoch %d", currentEpoch+2, currentEpoch+1), e.Message)
})
t.Run("execution optimistic", func(t *testing.T) {
ctx := context.Background()
bs, err := transition.GenesisBeaconState(context.Background(), deposits, 0, eth1Data)
require.NoError(t, err, "Could not set up genesis state")
// Set state to non-epoch start slot.
Expand All @@ -1819,11 +1828,6 @@ func TestGetProposerDuties(t *testing.T) {
blk := util.NewBeaconBlock()
blk.Block.ParentRoot = parentRoot[:]
blk.Block.Slot = 31
root, err := blk.Block.HashTreeRoot()
require.NoError(t, err)
db := dbutil.SetupDB(t)
util.SaveBlock(t, ctx, db, blk)
require.NoError(t, db.SaveGenesisBlockRoot(ctx, root))

chainSlot := primitives.Slot(0)
chain := &mockChain.ChainService{
Expand All @@ -1837,6 +1841,7 @@ func TestGetProposerDuties(t *testing.T) {
SyncChecker: &mockSync.Sync{IsSyncing: false},
PayloadIDCache: cache.NewPayloadIDCache(),
TrackedValidatorsCache: cache.NewTrackedValidatorsCache(),
BeaconDB: db,
}

request := httptest.NewRequest(http.MethodGet, "http://www.example.com/eth/v1/validator/duties/proposer/{epoch}", nil)
Expand Down

0 comments on commit 43c7659

Please sign in to comment.