mirror of
https://github.com/OffchainLabs/prysm.git
synced 2026-01-09 23:48:06 -05:00
Fix sync committee subscription to use subnet indices instead of committee indices (#15885)
Co-authored-by: james-prysm <90280386+james-prysm@users.noreply.github.com>
This commit is contained in:
@@ -597,7 +597,18 @@ func (s *Server) SubmitSyncCommitteeSubscription(w http.ResponseWriter, r *http.
|
|||||||
epochDuration := time.Duration(params.BeaconConfig().SlotsPerEpoch.Mul(params.BeaconConfig().SecondsPerSlot)) * time.Second
|
epochDuration := time.Duration(params.BeaconConfig().SlotsPerEpoch.Mul(params.BeaconConfig().SecondsPerSlot)) * time.Second
|
||||||
totalDuration := epochDuration * time.Duration(epochsToWatch)
|
totalDuration := epochDuration * time.Duration(epochsToWatch)
|
||||||
|
|
||||||
cache.SyncSubnetIDs.AddSyncCommitteeSubnets(pubkey48[:], startEpoch, sub.SyncCommitteeIndices, totalDuration)
|
subcommitteeSize := params.BeaconConfig().SyncCommitteeSize / params.BeaconConfig().SyncCommitteeSubnetCount
|
||||||
|
seen := make(map[uint64]bool)
|
||||||
|
var subnetIndices []uint64
|
||||||
|
|
||||||
|
for _, idx := range sub.SyncCommitteeIndices {
|
||||||
|
subnetIdx := idx / subcommitteeSize
|
||||||
|
if !seen[subnetIdx] {
|
||||||
|
seen[subnetIdx] = true
|
||||||
|
subnetIndices = append(subnetIndices, subnetIdx)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cache.SyncSubnetIDs.AddSyncCommitteeSubnets(pubkey48[:], startEpoch, subnetIndices, totalDuration)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1049,9 +1049,8 @@ func TestSubmitSyncCommitteeSubscription(t *testing.T) {
|
|||||||
s.SubmitSyncCommitteeSubscription(writer, request)
|
s.SubmitSyncCommitteeSubscription(writer, request)
|
||||||
assert.Equal(t, http.StatusOK, writer.Code)
|
assert.Equal(t, http.StatusOK, writer.Code)
|
||||||
subnets, _, _, _ := cache.SyncSubnetIDs.GetSyncCommitteeSubnets(pubkeys[1], 0)
|
subnets, _, _, _ := cache.SyncSubnetIDs.GetSyncCommitteeSubnets(pubkeys[1], 0)
|
||||||
require.Equal(t, 2, len(subnets))
|
require.Equal(t, 1, len(subnets))
|
||||||
assert.Equal(t, uint64(0), subnets[0])
|
assert.Equal(t, uint64(0), subnets[0])
|
||||||
assert.Equal(t, uint64(2), subnets[1])
|
|
||||||
})
|
})
|
||||||
t.Run("multiple", func(t *testing.T) {
|
t.Run("multiple", func(t *testing.T) {
|
||||||
cache.SyncSubnetIDs.EmptyAllCaches()
|
cache.SyncSubnetIDs.EmptyAllCaches()
|
||||||
@@ -1070,7 +1069,7 @@ func TestSubmitSyncCommitteeSubscription(t *testing.T) {
|
|||||||
assert.Equal(t, uint64(0), subnets[0])
|
assert.Equal(t, uint64(0), subnets[0])
|
||||||
subnets, _, _, _ = cache.SyncSubnetIDs.GetSyncCommitteeSubnets(pubkeys[1], 0)
|
subnets, _, _, _ = cache.SyncSubnetIDs.GetSyncCommitteeSubnets(pubkeys[1], 0)
|
||||||
require.Equal(t, 1, len(subnets))
|
require.Equal(t, 1, len(subnets))
|
||||||
assert.Equal(t, uint64(2), subnets[0])
|
assert.Equal(t, uint64(0), subnets[0])
|
||||||
})
|
})
|
||||||
t.Run("no body", func(t *testing.T) {
|
t.Run("no body", func(t *testing.T) {
|
||||||
request := httptest.NewRequest(http.MethodPost, "http://example.com", nil)
|
request := httptest.NewRequest(http.MethodPost, "http://example.com", nil)
|
||||||
|
|||||||
3
changelog/ttsao_fix-sync-committee-subnet-indices.md
Normal file
3
changelog/ttsao_fix-sync-committee-subnet-indices.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
### Fixed
|
||||||
|
|
||||||
|
- Fix sync committee subscription to use subnet indices instead of committee indices
|
||||||
Reference in New Issue
Block a user