Skip to content
This repository was archived by the owner on Oct 25, 2024. It is now read-only.

Commit 1f2047d

Browse files
committed
remove onForkchoiceUpdate
1 parent 29058c6 commit 1f2047d

File tree

3 files changed

+3
-137
lines changed

3 files changed

+3
-137
lines changed

builder/beacon_client.go

Lines changed: 3 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,6 @@ func (b *testBeaconClient) isValidator(pubkey PubkeyHex) bool {
2626
func (b *testBeaconClient) getProposerForNextSlot(requestedSlot uint64) (PubkeyHex, error) {
2727
return PubkeyHex(hexutil.Encode(b.validator.Pk)), nil
2828
}
29-
func (b *testBeaconClient) onForkchoiceUpdate() (uint64, error) {
30-
return b.slot, nil
31-
}
3229

3330
func (b *testBeaconClient) updateValidatorsMap() error {
3431
return nil
@@ -39,11 +36,9 @@ type BeaconClient struct {
3936
slotsInEpoch uint64
4037
secondsInSlot uint64
4138

42-
mu sync.Mutex
43-
currentEpoch uint64
44-
currentSlot uint64
45-
nextSlotProposer PubkeyHex
46-
slotProposerMap map[uint64]PubkeyHex
39+
mu sync.Mutex
40+
currentEpoch uint64
41+
slotProposerMap map[uint64]PubkeyHex
4742
}
4843

4944
func NewBeaconClient(endpoint string, slotsInEpoch uint64, secondsInSlot uint64) *BeaconClient {
@@ -127,42 +122,6 @@ func (b *BeaconClient) updateValidatorsMap() error {
127122
return nil
128123
}
129124

130-
/* Returns next slot's proposer pubkey */
131-
// TODO: what happens if no block for previous slot - should still get next slot
132-
func (b *BeaconClient) onForkchoiceUpdate() (uint64, error) {
133-
b.mu.Lock()
134-
defer b.mu.Unlock()
135-
136-
currentSlot, err := fetchCurrentSlot(b.endpoint)
137-
if err != nil {
138-
return 0, err
139-
}
140-
141-
nextSlot := currentSlot + 1
142-
143-
b.currentSlot = currentSlot
144-
nextSlotEpoch := nextSlot / b.slotsInEpoch
145-
146-
if nextSlotEpoch != b.currentEpoch {
147-
// TODO: this should be prepared in advance, possibly just fetch for next epoch in advance
148-
slotProposerMap, err := fetchEpochProposersMap(b.endpoint, nextSlotEpoch)
149-
if err != nil {
150-
return 0, err
151-
}
152-
153-
b.currentEpoch = nextSlotEpoch
154-
b.slotProposerMap = slotProposerMap
155-
}
156-
157-
nextSlotProposer, found := b.slotProposerMap[nextSlot]
158-
if !found {
159-
log.Error("inconsistent proposer mapping", "currentSlot", currentSlot, "slotProposerMap", b.slotProposerMap)
160-
return 0, errors.New("inconsistent proposer mapping")
161-
}
162-
b.nextSlotProposer = nextSlotProposer
163-
return nextSlot, nil
164-
}
165-
166125
func fetchCurrentSlot(endpoint string) (uint64, error) {
167126
headerRes := &struct {
168127
Data []struct {

builder/beacon_client_test.go

Lines changed: 0 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -174,95 +174,3 @@ func TestFetchEpochProposersMap(t *testing.T) {
174174
require.Equal(t, PubkeyHex("0x93247f2209abcacf57b75a51dafae777f9dd38bc7053d1af526f220a7489a6d3a2753e5f3e8b1cfe39b56f43611df74a"), proposersMap[1])
175175
require.Equal(t, PubkeyHex("0x93247f2209abcacf57b75a51dafae777f9dd38bc7053d1af526f220a7489a6d3a2753e5f3e8b1cfe39b56f43611df74b"), proposersMap[2])
176176
}
177-
178-
func TestOnForkchoiceUpdate(t *testing.T) {
179-
mbn := newMockBeaconNode()
180-
defer mbn.srv.Close()
181-
182-
mbn.headersResp = []byte(`{ "data": [ { "header": { "message": { "slot": "31", "proposer_index": "1" } } } ] }`)
183-
184-
mbn.proposerDuties[1] = []byte(`{
185-
"dependent_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2",
186-
"execution_optimistic": false,
187-
"data": [
188-
{
189-
"pubkey": "0x93247f2209abcacf57b75a51dafae777f9dd38bc7053d1af526f220a7489a6d3a2753e5f3e8b1cfe39b56f43611df74a",
190-
"validator_index": "1",
191-
"slot": "31"
192-
},
193-
{
194-
"pubkey": "0x93247f2209abcacf57b75a51dafae777f9dd38bc7053d1af526f220a7489a6d3a2753e5f3e8b1cfe39b56f43611df74b",
195-
"validator_index": "2",
196-
"slot": "32"
197-
},
198-
{
199-
"pubkey": "0x93247f2209abcacf57b75a51dafae777f9dd38bc7053d1af526f220a7489a6d3a2753e5f3e8b1cfe39b56f43611df74c",
200-
"validator_index": "3",
201-
"slot": "33"
202-
}
203-
]
204-
}`)
205-
206-
bc := NewBeaconClient(mbn.srv.URL, 32, 12)
207-
slot, err := bc.onForkchoiceUpdate()
208-
require.NoError(t, err)
209-
require.Equal(t, slot, uint64(32))
210-
211-
pubkeyHex, err := bc.getProposerForNextSlot(32)
212-
require.NoError(t, err)
213-
require.Equal(t, PubkeyHex("0x93247f2209abcacf57b75a51dafae777f9dd38bc7053d1af526f220a7489a6d3a2753e5f3e8b1cfe39b56f43611df74b"), pubkeyHex)
214-
215-
_, err = bc.getProposerForNextSlot(31)
216-
require.EqualError(t, err, "slot out of sync")
217-
218-
_, err = bc.getProposerForNextSlot(33)
219-
require.EqualError(t, err, "slot out of sync")
220-
221-
mbn.headersCode = 404
222-
mbn.headersResp = []byte(`{ "code": 404, "message": "State not found" }`)
223-
224-
slot, err = NewBeaconClient(mbn.srv.URL, 32, 12).onForkchoiceUpdate()
225-
require.EqualError(t, err, "State not found")
226-
require.Equal(t, slot, uint64(0))
227-
228-
// Check that client does not fetch new proposers if epoch did not change
229-
mbn.headersCode = 200
230-
mbn.headersResp = []byte(`{ "data": [ { "header": { "message": { "slot": "31", "proposer_index": "1" } } } ] }`)
231-
mbn.proposerDuties[1] = []byte(`{
232-
"data": [
233-
{
234-
"pubkey": "0x93247f2209abcacf57b75a51dafae777f9dd38bc7053d1af526f220a7489a6d3a2753e5f3e8b1cfe39b56f43611df74d",
235-
"validator_index": "4",
236-
"slot": "32"
237-
}
238-
]
239-
}`)
240-
241-
slot, err = bc.onForkchoiceUpdate()
242-
require.NoError(t, err, "")
243-
require.Equal(t, slot, uint64(32))
244-
245-
mbn.headersResp = []byte(`{ "data": [ { "header": { "message": { "slot": "63", "proposer_index": "1" } } } ] }`)
246-
mbn.proposerDuties[2] = []byte(`{
247-
"data": [
248-
{
249-
"pubkey": "0x93247f2209abcacf57b75a51dafae777f9dd38bc7053d1af526f220a7489a6d3a2753e5f3e8b1cfe39b56f43611df74d",
250-
"validator_index": "4",
251-
"slot": "64"
252-
}
253-
]
254-
}`)
255-
256-
slot, err = bc.onForkchoiceUpdate()
257-
require.NoError(t, err, "")
258-
require.Equal(t, slot, uint64(64))
259-
260-
pubkeyHex, err = bc.getProposerForNextSlot(64)
261-
require.NoError(t, err)
262-
require.Equal(t, PubkeyHex("0x93247f2209abcacf57b75a51dafae777f9dd38bc7053d1af526f220a7489a6d3a2753e5f3e8b1cfe39b56f43611df74d"), pubkeyHex)
263-
264-
// Check proposers map error is routed out
265-
mbn.headersResp = []byte(`{ "data": [ { "header": { "message": { "slot": "65", "proposer_index": "1" } } } ] }`)
266-
_, err = bc.onForkchoiceUpdate()
267-
require.EqualError(t, err, "inconsistent proposer mapping")
268-
}

builder/builder.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ type ValidatorData struct {
3232
type IBeaconClient interface {
3333
isValidator(pubkey PubkeyHex) bool
3434
getProposerForNextSlot(requestedSlot uint64) (PubkeyHex, error)
35-
onForkchoiceUpdate() (uint64, error)
3635
updateValidatorsMap() error
3736
}
3837

0 commit comments

Comments
 (0)