Skip to content

Commit 8c5d0c6

Browse files
authored
Merge pull request #844 from rocket-pool/hardcode-premerge-receipt
Hardcode pre-merge receipt for mainnet interval 0
2 parents 580243a + 4db122b commit 8c5d0c6

3 files changed

Lines changed: 66 additions & 0 deletions

File tree

bindings/rewards/rewards.go

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package rewards
22

33
import (
4+
"context"
45
"fmt"
56
"math/big"
67
"sync"
@@ -230,6 +231,15 @@ func SubmitRewardSnapshot(rp *rocketpool.RocketPool, submission RewardSubmission
230231

231232
// Get the event info for a rewards snapshot using the Atlas getter
232233
func GetRewardsEvent(rp *rocketpool.RocketPool, index uint64, rocketRewardsPoolAddresses []common.Address, opts *bind.CallOpts) (bool, RewardsEvent, error) {
234+
// Check if the client is requesting interval 0 on mainnet, then return the hardcoded RewardsEvent
235+
data, ok, err := getMainnetInterval0RewardsEvent(rp, index)
236+
if err != nil {
237+
return false, RewardsEvent{}, err
238+
}
239+
if ok {
240+
return true, data, nil
241+
}
242+
233243
// Get contracts
234244
rocketRewardsPool, err := getRocketRewardsPool(rp, opts)
235245
if err != nil {
@@ -317,6 +327,48 @@ func GetRewardsEvent(rp *rocketpool.RocketPool, index uint64, rocketRewardsPoolA
317327
return true, eventData, nil
318328
}
319329

330+
// Check if the client is requesting interval 0 on mainnet, then return the hardcoded RewardsEvent
331+
func getMainnetInterval0RewardsEvent(rp *rocketpool.RocketPool, index uint64) (RewardsEvent, bool, error) {
332+
if index != 0 {
333+
return RewardsEvent{}, false, nil
334+
}
335+
// Check if the ec is synced to mainnet
336+
chainID, err := rp.Client.ChainID(context.Background())
337+
if err != nil {
338+
return RewardsEvent{}, false, fmt.Errorf("error getting chainID: %w", err)
339+
}
340+
if chainID.Cmp(big.NewInt(1)) != 0 {
341+
return RewardsEvent{}, false, nil
342+
}
343+
344+
// Hardcoded RewardsEvent for interval 0 on mainnet
345+
treasuryRPL := new(big.Int)
346+
treasuryRPL.SetString("10633670478560109530497", 10)
347+
trustedNodeRPL := new(big.Int)
348+
trustedNodeRPL.SetString("10633670478560109529794", 10)
349+
nodeRPL := new(big.Int)
350+
nodeRPL.SetString("49623795566613844471758", 10)
351+
352+
eventDataInterval_0 := RewardsEvent{
353+
Index: big.NewInt(0),
354+
ExecutionBlock: big.NewInt(15451078),
355+
ConsensusBlock: big.NewInt(4598879),
356+
IntervalsPassed: big.NewInt(1),
357+
TreasuryRPL: treasuryRPL,
358+
TrustedNodeRPL: []*big.Int{trustedNodeRPL},
359+
NodeRPL: []*big.Int{nodeRPL},
360+
NodeETH: []*big.Int{big.NewInt(0)},
361+
UserETH: big.NewInt(0),
362+
MerkleRoot: common.HexToHash("0xb839fa0f5842bf3c8f19091361889fb0f1cb399d64b8da476d372b7de7a93463"),
363+
MerkleTreeCID: "bafybeidrck3sz24acv32h56xdb7ruarxq52oci32del7moxqtief3do73y",
364+
IntervalStartTime: time.Unix(1659591339, 0),
365+
IntervalEndTime: time.Unix(1662010539, 0),
366+
SubmissionTime: time.Unix(1662011717, 0),
367+
}
368+
369+
return eventDataInterval_0, true, nil
370+
}
371+
320372
// Get contracts
321373
var rocketRewardsPoolLock sync.Mutex
322374

bindings/rocketpool/ec-interface.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,4 +102,7 @@ type ExecutionClient interface {
102102
// SyncProgress retrieves the current progress of the sync algorithm. If there's
103103
// no sync currently running, it returns nil.
104104
SyncProgress(ctx context.Context) (*ethereum.SyncProgress, error)
105+
106+
// ChainID retrieves the current chain ID
107+
ChainID(ctx context.Context) (*big.Int, error)
105108
}

shared/services/ec-manager.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,17 @@ func (p *ExecutionClientManager) SyncProgress(ctx context.Context) (*ethereum.Sy
328328
return result.(*ethereum.SyncProgress), err
329329
}
330330

331+
// BlockNumber returns the most recent block number
332+
func (p *ExecutionClientManager) ChainID(ctx context.Context) (*big.Int, error) {
333+
result, err := p.runFunction(func(client *ethclient.Client) (interface{}, error) {
334+
return client.ChainID(ctx)
335+
})
336+
if err != nil {
337+
return nil, err
338+
}
339+
return result.(*big.Int), err
340+
}
341+
331342
/// ==================
332343
/// Internal functions
333344
/// ==================

0 commit comments

Comments
 (0)