diff --git a/rocketpool/watchtower/submit-network-balances.go b/rocketpool/watchtower/submit-network-balances.go index 1b5e5f626..16f1178d8 100644 --- a/rocketpool/watchtower/submit-network-balances.go +++ b/rocketpool/watchtower/submit-network-balances.go @@ -392,19 +392,22 @@ func (t *submitNetworkBalances) getNetworkBalances(elBlockHeader *types.Header, return nil }) - // Get megapool balance details - wg.Go(func() error { - megapoolBalanceDetails = make([]megapoolBalanceDetail, len(state.MegapoolDetails)) - i := 0 - for megapoolAddress, megapoolDetails := range state.MegapoolDetails { - megapoolBalanceDetails[i], err = t.getMegapoolBalanceDetails(megapoolAddress, state, megapoolDetails) - if err != nil { - return fmt.Errorf("error getting megapool balance details: %w", err) + // if Saturn is deployed + if state.IsSaturnDeployed { + // Get megapool balance details + wg.Go(func() error { + megapoolBalanceDetails = make([]megapoolBalanceDetail, len(state.MegapoolDetails)) + i := 0 + for megapoolAddress, megapoolDetails := range state.MegapoolDetails { + megapoolBalanceDetails[i], err = t.getMegapoolBalanceDetails(megapoolAddress, state, megapoolDetails) + if err != nil { + return fmt.Errorf("error getting megapool balance details: %w", err) + } + i += 1 } - i += 1 - } - return nil - }) + return nil + }) + } // Get distributor balance details wg.Go(func() error { diff --git a/shared/services/rewards/generator.go b/shared/services/rewards/generator.go index ffbeb01b6..65a8103b6 100644 --- a/shared/services/rewards/generator.go +++ b/shared/services/rewards/generator.go @@ -159,6 +159,7 @@ func NewTreeGenerator(logger *log.ColorLogger, logPrefix string, rp RewardsExecu testnetStartInterval: TestnetV11Interval, devnetStartInterval: DevnetV11Interval, generator: v11_generator, + requiresSaturn: true, }, { rewardsRulesetVersion: 10, @@ -166,12 +167,14 @@ func NewTreeGenerator(logger *log.ColorLogger, logPrefix string, rp RewardsExecu testnetStartInterval: TestnetV10Interval, devnetStartInterval: 0, generator: v10_generator, + requiresSaturn: false, }, { rewardsRulesetVersion: 9, mainnetStartInterval: MainnetV9Interval, testnetStartInterval: 0, generator: v9_generator, + requiresSaturn: false, }, } @@ -198,18 +201,18 @@ func NewTreeGenerator(logger *log.ColorLogger, logPrefix string, rp RewardsExecu return int(b.rewardsRulesetVersion) - int(a.rewardsRulesetVersion) }) - // The first ruleset whose startInterval is at most t.index is the one to use + // The first ruleset whose startInterval is at most t.index is the one to use, but if it requires Saturn and saturn is not yet deployed, use the next one that doesn't require Saturn for _, info := range rewardsIntervalInfos { startInterval, err := info.GetStartInterval(network) if err != nil { return nil, fmt.Errorf("error getting start interval for rewards period %d: %w", t.index, err) } - if !foundGenerator && startInterval <= t.index { + if !foundGenerator && startInterval <= t.index && (!info.requiresSaturn || state.IsSaturnDeployed) { t.generatorImpl = info.generator foundGenerator = true } - if !foundApproximator && startInterval <= t.index { + if !foundApproximator && startInterval <= t.index && (!info.requiresSaturn || state.IsSaturnDeployed) { t.approximatorImpl = info.generator foundApproximator = true } diff --git a/shared/services/rewards/rewards-interval-info.go b/shared/services/rewards/rewards-interval-info.go index 38817ba02..659aded10 100644 --- a/shared/services/rewards/rewards-interval-info.go +++ b/shared/services/rewards/rewards-interval-info.go @@ -12,6 +12,7 @@ type rewardsIntervalInfo struct { devnetStartInterval uint64 testnetStartInterval uint64 generator treeGeneratorImpl + requiresSaturn bool } func (r *rewardsIntervalInfo) GetStartInterval(network cfgtypes.Network) (uint64, error) { diff --git a/shared/services/state/network-state.go b/shared/services/state/network-state.go index b144e145b..90ca1208b 100644 --- a/shared/services/state/network-state.go +++ b/shared/services/state/network-state.go @@ -312,8 +312,8 @@ func (m *NetworkStateManager) createNetworkState(slotNumber uint64) (*NetworkSta return nil, fmt.Errorf("error getting all megapool details: %w", err) } } + m.logLine("4/7 - Retrieved megapool validator details (%s so far)", time.Since(start)) } - m.logLine("4/7 - Retrieved megapool validator details (%s so far)", time.Since(start)) // Calculate avg node fees and distributor shares for _, details := range state.NodeDetails { @@ -555,8 +555,9 @@ func (m *NetworkStateManager) createNetworkStateForNode(slotNumber uint64, nodeA return nil, fmt.Errorf("error getting all megapool details: %w", err) } } + m.logLine("%d/%d - Retrieved megapool validator details (total time: %s)", currentStep, steps, time.Since(start)) } - m.logLine("%d/%d - Retrieved megapool validator details (total time: %s)", currentStep, steps, time.Since(start)) + currentStep++ return state, nil