Skip to content

Commit f013732

Browse files
committed
use delta strategy on stakerOperators tables
1 parent c1ceb21 commit f013732

18 files changed

+551
-337
lines changed

pkg/rewards/11_goldActiveODOperatorSetRewards.go

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -254,33 +254,3 @@ func (rc *RewardsCalculator) DropTempActiveODOperatorSetRewardsTable(snapshotDat
254254
}
255255
return nil
256256
}
257-
258-
func (rc *RewardsCalculator) CopyTempActiveODOperatorSetRewardsToActiveODOperatorSetRewards(snapshotDate string, generatedRewardsSnapshotId uint64) error {
259-
rc.logger.Sugar().Infow("Copying temp active od operator set rewards to active od operator set rewards",
260-
zap.String("snapshotDate", snapshotDate),
261-
zap.Uint64("generatedRewardsSnapshotId", generatedRewardsSnapshotId),
262-
)
263-
tempTableName := rc.getTempActiveODOperatorSetRewardsTableName(snapshotDate, generatedRewardsSnapshotId)
264-
destTableName := rewardsUtils.RewardsTable_11_ActiveODOperatorSetRewards
265-
266-
query := `
267-
insert into {{.destTableName}} (avs, operator_set_id, operator, snapshot, token, amount_decimal, multiplier, strategy, duration, reward_hash, reward_submission_date, num_registered_snapshots, tokens_per_registered_snapshot_decimal, generated_rewards_snapshot_id)
268-
select avs, operator_set_id, operator, snapshot, token, amount_decimal, multiplier, strategy, duration, reward_hash, reward_submission_date, num_registered_snapshots, tokens_per_registered_snapshot_decimal, generated_rewards_snapshot_id from {{.tempTableName}}
269-
on conflict (reward_hash, operator_set_id, strategy, snapshot) do nothing
270-
`
271-
renderedQuery, err := rewardsUtils.RenderQueryTemplate(query, map[string]interface{}{
272-
"destTableName": destTableName,
273-
"tempTableName": tempTableName,
274-
})
275-
if err != nil {
276-
return fmt.Errorf("failed to render query template: %w", err)
277-
}
278-
res := rc.grm.Exec(renderedQuery)
279-
if res.Error != nil {
280-
rc.logger.Sugar().Errorw("Failed to copy temp active OD rewards to active OD rewards", "error", res.Error)
281-
return res.Error
282-
}
283-
284-
// return rc.DropTempActiveODOperatorSetRewardsTable(snapshotDate, generatedRewardsSnapshotId)
285-
return nil
286-
}

pkg/rewards/1_goldActiveRewards.go

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -173,33 +173,3 @@ func (r *RewardsCalculator) DropTempActiveRewardsTable(snapshotDate string, gene
173173
)
174174
return nil
175175
}
176-
177-
func (r *RewardsCalculator) CopyTempActiveRewardsToActiveRewards(snapshotDate string, generatedRewardsSnapshotId uint64) error {
178-
r.logger.Sugar().Infow("Copying temp active rewards to active rewards",
179-
zap.String("snapshotDate", snapshotDate),
180-
zap.Uint64("generatedRewardsSnapshotId", generatedRewardsSnapshotId),
181-
)
182-
tempTableName := r.getTempActiveRewardsTableName(snapshotDate, generatedRewardsSnapshotId)
183-
destTableName := rewardsUtils.RewardsTable_1_ActiveRewards
184-
185-
query := `
186-
insert into {{.destTableName}} (avs, snapshot, token, tokens_per_day, tokens_per_day_decimal, multiplier, strategy, reward_hash, reward_type, reward_submission_date, generated_rewards_snapshot_id)
187-
select avs, snapshot, token, tokens_per_day, tokens_per_day_decimal, multiplier, strategy, reward_hash, reward_type, reward_submission_date, generated_rewards_snapshot_id from {{.tempTableName}}
188-
on conflict (avs, reward_hash, strategy, snapshot) do nothing
189-
`
190-
renderedQuery, err := rewardsUtils.RenderQueryTemplate(query, map[string]interface{}{
191-
"destTableName": destTableName,
192-
"tempTableName": tempTableName,
193-
})
194-
if err != nil {
195-
return fmt.Errorf("failed to render query template: %w", err)
196-
}
197-
res := r.grm.Exec(renderedQuery)
198-
if res.Error != nil {
199-
r.logger.Sugar().Errorw("Failed to copy temp active rewards to active rewards", "error", res.Error)
200-
return res.Error
201-
}
202-
203-
// return r.DropTempActiveRewardsTable(snapshotDate, generatedRewardsSnapshotId)
204-
return nil
205-
}

pkg/rewards/7_goldActiveODRewards.go

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -248,33 +248,3 @@ func (rc *RewardsCalculator) DropTempActiveODRewardsTable(snapshotDate string, g
248248
}
249249
return nil
250250
}
251-
252-
func (rc *RewardsCalculator) CopyTempActiveODRewardsToActiveODRewards(snapshotDate string, generatedRewardsSnapshotId uint64) error {
253-
rc.logger.Sugar().Infow("Copying temp active od rewards to active od rewards",
254-
"snapshotDate", snapshotDate,
255-
"generatedRewardsSnapshotId", generatedRewardsSnapshotId,
256-
)
257-
tempTableName := rc.getTempActiveODRewardsTableName(snapshotDate, generatedRewardsSnapshotId)
258-
destTableName := rewardsUtils.RewardsTable_7_ActiveODRewards
259-
260-
query := `
261-
insert into {{.destTableName}} (avs, operator, snapshot, token, amount_decimal, multiplier, strategy, duration, reward_hash, reward_submission_date, num_registered_snapshots, tokens_per_registered_snapshot_decimal, generated_rewards_snapshot_id)
262-
select avs, operator, snapshot, token, amount_decimal, multiplier, strategy, duration, reward_hash, reward_submission_date, num_registered_snapshots, tokens_per_registered_snapshot_decimal, generated_rewards_snapshot_id from {{.tempTableName}}
263-
on conflict (reward_hash, avs, operator, strategy, snapshot) do nothing
264-
`
265-
renderedQuery, err := rewardsUtils.RenderQueryTemplate(query, map[string]interface{}{
266-
"destTableName": destTableName,
267-
"tempTableName": tempTableName,
268-
})
269-
if err != nil {
270-
return fmt.Errorf("failed to render query template: %w", err)
271-
}
272-
res := rc.grm.Exec(renderedQuery)
273-
if res.Error != nil {
274-
rc.logger.Sugar().Errorw("Failed to copy temp active OD rewards to active OD rewards", "error", res.Error)
275-
return res.Error
276-
}
277-
278-
// return rc.DropTempActiveODRewardsTable(snapshotDate, generatedRewardsSnapshotId)
279-
return nil
280-
}

pkg/rewards/rewards.go

Lines changed: 70 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -576,6 +576,11 @@ func (rc *RewardsCalculator) calculateRewards(snapshotDate string) error {
576576
return err
577577
}
578578

579+
if err = rc.removeTempGoldTables(snapshotDate, snapshot.Id); err != nil {
580+
rc.logger.Sugar().Errorw("Failed to remove temp gold tables", "error", err)
581+
return err
582+
}
583+
579584
if err = rc.UpdateRewardSnapshotStatus(snapshotDate, storage.RewardSnapshotStatusCompleted); err != nil {
580585
rc.logger.Sugar().Errorw("Failed to update reward snapshot status", "error", err)
581586
return err
@@ -787,21 +792,77 @@ func (rc *RewardsCalculator) generateGoldTables(snapshotDate string, generatedSn
787792
return err
788793
}
789794

790-
// ------------------------------------------------------------------------
791-
// Copy temp tables to final tables
792-
// ------------------------------------------------------------------------
793-
if err := rc.CopyTempActiveRewardsToActiveRewards(snapshotDate, generatedSnapshotId); err != nil {
794-
rc.logger.Sugar().Errorw("Failed to copy temp active rewards to active rewards", "error", err)
795+
return nil
796+
}
797+
798+
func (rc *RewardsCalculator) removeTempGoldTables(snapshotDate string, generatedSnapshotId uint64) error {
799+
if err := rc.DropTempActiveRewardsTable(snapshotDate, generatedSnapshotId); err != nil {
800+
rc.logger.Sugar().Errorw("Failed to drop temp active rewards table", "error", err)
801+
return err
802+
}
803+
804+
if err := rc.DropTempStakerRewardAmountsTable(snapshotDate, generatedSnapshotId); err != nil {
805+
rc.logger.Sugar().Errorw("Failed to drop temp staker reward amounts table", "error", err)
806+
return err
807+
}
808+
809+
if err := rc.DropTempOperatorRewardAmountsTable(snapshotDate, generatedSnapshotId); err != nil {
810+
rc.logger.Sugar().Errorw("Failed to drop temp operator reward amounts table", "error", err)
811+
return err
812+
}
813+
814+
if err := rc.DropTempRewardsForAllTable(snapshotDate, generatedSnapshotId); err != nil {
815+
rc.logger.Sugar().Errorw("Failed to drop temp rewards for all table", "error", err)
816+
return err
817+
}
818+
819+
if err := rc.DropTempRfaeStakersTable(snapshotDate, generatedSnapshotId); err != nil {
820+
rc.logger.Sugar().Errorw("Failed to drop temp rfae stakers table", "error", err)
821+
return err
822+
}
823+
824+
if err := rc.DropTempRfaeOperatorsTable(snapshotDate, generatedSnapshotId); err != nil {
825+
rc.logger.Sugar().Errorw("Failed to drop temp rfae operators table", "error", err)
826+
return err
827+
}
828+
829+
if err := rc.DropTempActiveODRewardsTable(snapshotDate, generatedSnapshotId); err != nil {
830+
rc.logger.Sugar().Errorw("Failed to drop temp active od rewards table", "error", err)
831+
return err
832+
}
833+
834+
if err := rc.DropTempOperatorODRewardAmountsTable(snapshotDate, generatedSnapshotId); err != nil {
835+
rc.logger.Sugar().Errorw("Failed to drop temp operator od reward amounts table", "error", err)
836+
return err
837+
}
838+
839+
if err := rc.DropTempStakerODRewardAmountsTable(snapshotDate, generatedSnapshotId); err != nil {
840+
rc.logger.Sugar().Errorw("Failed to drop temp staker od reward amounts table", "error", err)
841+
return err
842+
}
843+
844+
if err := rc.DropTempAvsODRewardAmountsTable(snapshotDate, generatedSnapshotId); err != nil {
845+
rc.logger.Sugar().Errorw("Failed to drop temp avs od reward amounts table", "error", err)
846+
return err
847+
}
848+
849+
if err := rc.DropTempActiveODOperatorSetRewardsTable(snapshotDate, generatedSnapshotId); err != nil {
850+
rc.logger.Sugar().Errorw("Failed to drop temp active od operator set rewards table", "error", err)
851+
return err
852+
}
853+
854+
if err := rc.DropTempOperatorODOperatorSetRewardAmountsTable(snapshotDate, generatedSnapshotId); err != nil {
855+
rc.logger.Sugar().Errorw("Failed to drop temp operator od operator set reward amounts table", "error", err)
795856
return err
796857
}
797858

798-
if err := rc.CopyTempActiveODRewardsToActiveODRewards(snapshotDate, generatedSnapshotId); err != nil {
799-
rc.logger.Sugar().Errorw("Failed to copy temp active od rewards to active od rewards", "error", err)
859+
if err := rc.DropTempStakerODOperatorSetRewardAmountsTable(snapshotDate, generatedSnapshotId); err != nil {
860+
rc.logger.Sugar().Errorw("Failed to drop temp staker od operator set reward amounts table", "error", err)
800861
return err
801862
}
802863

803-
if err := rc.CopyTempActiveODOperatorSetRewardsToActiveODOperatorSetRewards(snapshotDate, generatedSnapshotId); err != nil {
804-
rc.logger.Sugar().Errorw("Failed to copy temp active od operator set rewards to active od operator set rewards", "error", err)
864+
if err := rc.DropTempAvsODOperatorSetRewardAmountsTable(snapshotDate, generatedSnapshotId); err != nil {
865+
rc.logger.Sugar().Errorw("Failed to drop temp avs od operator set reward amounts table", "error", err)
805866
return err
806867
}
807868

pkg/rewards/stakerOperators/10_stakerODOperatorSetStrategyPayouts.go

Lines changed: 41 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
package stakerOperators
22

33
import (
4+
"fmt"
5+
6+
"github.com/Layr-Labs/sidecar/internal/config"
47
"github.com/Layr-Labs/sidecar/pkg/rewardsUtils"
8+
"go.uber.org/zap"
59
)
610

711
const _10_stakerODOperatorSetStrategyPayoutQuery = `
@@ -19,7 +23,6 @@ select
1923
reward_hash,
2024
snapshot
2125
from {{.stakerODOperatorSetRewardAmountsTable}}
22-
where generated_rewards_snapshot_id = {{.generatedRewardsSnapshotId}}
2326
`
2427

2528
func (sog *StakerOperatorsGenerator) GenerateAndInsert10StakerODOperatorSetStrategyPayouts(cutoffDate string, generatedRewardsSnapshotId uint64) error {
@@ -33,21 +36,24 @@ func (sog *StakerOperatorsGenerator) GenerateAndInsert10StakerODOperatorSetStrat
3336
return nil
3437
}
3538

36-
allTableNames := rewardsUtils.GetGoldTableNames(cutoffDate)
37-
destTableName := allTableNames[rewardsUtils.Sot_10_StakerODOperatorSetStrategyPayouts]
39+
destTableName := sog.getTempStakerODOperatorSetStrategyPayoutTableName(cutoffDate, generatedRewardsSnapshotId)
3840

39-
sog.logger.Sugar().Infow("Generating and inserting 10_stakerODOperatorSetStrategyPayouts",
41+
sog.logger.Sugar().Infow("Generating temp 10_stakerODOperatorSetStrategyPayouts",
4042
"cutoffDate", cutoffDate,
43+
"destTableName", destTableName,
4144
)
4245

43-
if err := rewardsUtils.DropTableIfExists(sog.db, destTableName, sog.logger); err != nil {
44-
sog.logger.Sugar().Errorw("Failed to drop table", "error", err)
46+
// Drop existing temp table
47+
if err := sog.DropTempStakerODOperatorSetStrategyPayoutTable(cutoffDate, generatedRewardsSnapshotId); err != nil {
48+
sog.logger.Sugar().Errorw("Failed to drop existing temp staker OD operator set strategy payout table", "error", err)
4549
return err
4650
}
4751

52+
tempStakerODOperatorSetRewardAmountsTable := sog.getTempStakerODOperatorSetRewardAmountsTableName(cutoffDate, generatedRewardsSnapshotId)
53+
4854
query, err := rewardsUtils.RenderQueryTemplate(_10_stakerODOperatorSetStrategyPayoutQuery, map[string]interface{}{
4955
"destTableName": destTableName,
50-
"stakerODOperatorSetRewardAmountsTable": rewardsUtils.RewardsTable_13_StakerODOperatorSetRewardAmounts,
56+
"stakerODOperatorSetRewardAmountsTable": tempStakerODOperatorSetRewardAmountsTable,
5157
"generatedRewardsSnapshotId": generatedRewardsSnapshotId,
5258
})
5359
if err != nil {
@@ -58,8 +64,34 @@ func (sog *StakerOperatorsGenerator) GenerateAndInsert10StakerODOperatorSetStrat
5864
res := sog.db.Exec(query)
5965

6066
if res.Error != nil {
61-
sog.logger.Sugar().Errorw("Failed to generate 10_stakerODOperatorSetStrategyPayouts", "error", res.Error)
62-
return err
67+
sog.logger.Sugar().Errorw("Failed to generate temp 10_stakerODOperatorSetStrategyPayouts", "error", res.Error)
68+
return res.Error
6369
}
6470
return nil
6571
}
72+
73+
func (sog *StakerOperatorsGenerator) getTempStakerODOperatorSetStrategyPayoutTableName(cutoffDate string, generatedRewardSnapshotId uint64) string {
74+
camelDate := config.KebabToSnakeCase(cutoffDate)
75+
return fmt.Sprintf("tmp_staker_operators_10_staker_od_operator_set_strategy_payout_%s_%d", camelDate, generatedRewardSnapshotId)
76+
}
77+
78+
func (sog *StakerOperatorsGenerator) DropTempStakerODOperatorSetStrategyPayoutTable(cutoffDate string, generatedRewardsSnapshotId uint64) error {
79+
tempTableName := sog.getTempStakerODOperatorSetStrategyPayoutTableName(cutoffDate, generatedRewardsSnapshotId)
80+
81+
query := fmt.Sprintf("DROP TABLE IF EXISTS %s", tempTableName)
82+
res := sog.db.Exec(query)
83+
if res.Error != nil {
84+
sog.logger.Sugar().Errorw("Failed to drop temp staker OD operator set strategy payout table", "error", res.Error)
85+
return res.Error
86+
}
87+
sog.logger.Sugar().Infow("Successfully dropped temp staker OD operator set strategy payout table",
88+
zap.String("tempTableName", tempTableName),
89+
zap.Uint64("generatedRewardsSnapshotId", generatedRewardsSnapshotId),
90+
)
91+
return nil
92+
}
93+
94+
func (sog *StakerOperatorsGenerator) getTempStakerODOperatorSetRewardAmountsTableName(cutoffDate string, generatedRewardSnapshotId uint64) string {
95+
camelDate := config.KebabToSnakeCase(cutoffDate)
96+
return fmt.Sprintf("tmp_rewards_gold_13_staker_od_operator_set_reward_amounts_%s_%d", camelDate, generatedRewardSnapshotId)
97+
}

pkg/rewards/stakerOperators/11_avsODOperatorSetStrategyPayouts.go

Lines changed: 41 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
package stakerOperators
22

33
import (
4+
"fmt"
5+
6+
"github.com/Layr-Labs/sidecar/internal/config"
47
"github.com/Layr-Labs/sidecar/pkg/rewardsUtils"
8+
"go.uber.org/zap"
59
)
610

711
const _11_avsODOperatorSetStrategyPayoutQuery = `
@@ -15,7 +19,6 @@ select
1519
operator,
1620
avs_tokens
1721
from {{.avsODOperatorSetRewardAmountsTable}}
18-
where generated_rewards_snapshot_id = {{.generatedRewardsSnapshotId}}
1922
`
2023

2124
func (sog *StakerOperatorsGenerator) GenerateAndInsert11AvsODOperatorSetStrategyPayouts(cutoffDate string, generatedRewardsSnapshotId uint64) error {
@@ -29,21 +32,24 @@ func (sog *StakerOperatorsGenerator) GenerateAndInsert11AvsODOperatorSetStrategy
2932
return nil
3033
}
3134

32-
allTableNames := rewardsUtils.GetGoldTableNames(cutoffDate)
33-
destTableName := allTableNames[rewardsUtils.Sot_11_AvsODOperatorSetStrategyPayouts]
35+
destTableName := sog.getTempAvsODOperatorSetStrategyPayoutTableName(cutoffDate, generatedRewardsSnapshotId)
3436

35-
sog.logger.Sugar().Infow("Generating and inserting 11_avsODOperatorSetStrategyPayouts",
37+
sog.logger.Sugar().Infow("Generating temp 11_avsODOperatorSetStrategyPayouts",
3638
"cutoffDate", cutoffDate,
39+
"destTableName", destTableName,
3740
)
3841

39-
if err := rewardsUtils.DropTableIfExists(sog.db, destTableName, sog.logger); err != nil {
40-
sog.logger.Sugar().Errorw("Failed to drop table", "error", err)
42+
// Drop existing temp table
43+
if err := sog.DropTempAvsODOperatorSetStrategyPayoutTable(cutoffDate, generatedRewardsSnapshotId); err != nil {
44+
sog.logger.Sugar().Errorw("Failed to drop existing temp AVS OD operator set strategy payout table", "error", err)
4145
return err
4246
}
4347

48+
tempAvsODOperatorSetRewardAmountsTable := sog.getTempAvsODOperatorSetRewardAmountsTableName(cutoffDate, generatedRewardsSnapshotId)
49+
4450
query, err := rewardsUtils.RenderQueryTemplate(_11_avsODOperatorSetStrategyPayoutQuery, map[string]interface{}{
4551
"destTableName": destTableName,
46-
"avsODOperatorSetRewardAmountsTable": rewardsUtils.RewardsTable_14_AvsODOperatorSetRewardAmounts,
52+
"avsODOperatorSetRewardAmountsTable": tempAvsODOperatorSetRewardAmountsTable,
4753
"generatedRewardsSnapshotId": generatedRewardsSnapshotId,
4854
})
4955
if err != nil {
@@ -54,8 +60,34 @@ func (sog *StakerOperatorsGenerator) GenerateAndInsert11AvsODOperatorSetStrategy
5460
res := sog.db.Exec(query)
5561

5662
if res.Error != nil {
57-
sog.logger.Sugar().Errorw("Failed to generate 11_avsODOperatorSetStrategyPayouts", "error", res.Error)
58-
return err
63+
sog.logger.Sugar().Errorw("Failed to generate temp 11_avsODOperatorSetStrategyPayouts", "error", res.Error)
64+
return res.Error
5965
}
6066
return nil
6167
}
68+
69+
func (sog *StakerOperatorsGenerator) getTempAvsODOperatorSetStrategyPayoutTableName(cutoffDate string, generatedRewardSnapshotId uint64) string {
70+
camelDate := config.KebabToSnakeCase(cutoffDate)
71+
return fmt.Sprintf("tmp_staker_operators_11_avs_od_operator_set_strategy_payout_%s_%d", camelDate, generatedRewardSnapshotId)
72+
}
73+
74+
func (sog *StakerOperatorsGenerator) DropTempAvsODOperatorSetStrategyPayoutTable(cutoffDate string, generatedRewardsSnapshotId uint64) error {
75+
tempTableName := sog.getTempAvsODOperatorSetStrategyPayoutTableName(cutoffDate, generatedRewardsSnapshotId)
76+
77+
query := fmt.Sprintf("DROP TABLE IF EXISTS %s", tempTableName)
78+
res := sog.db.Exec(query)
79+
if res.Error != nil {
80+
sog.logger.Sugar().Errorw("Failed to drop temp AVS OD operator set strategy payout table", "error", res.Error)
81+
return res.Error
82+
}
83+
sog.logger.Sugar().Infow("Successfully dropped temp AVS OD operator set strategy payout table",
84+
zap.String("tempTableName", tempTableName),
85+
zap.Uint64("generatedRewardsSnapshotId", generatedRewardsSnapshotId),
86+
)
87+
return nil
88+
}
89+
90+
func (sog *StakerOperatorsGenerator) getTempAvsODOperatorSetRewardAmountsTableName(cutoffDate string, generatedRewardSnapshotId uint64) string {
91+
camelDate := config.KebabToSnakeCase(cutoffDate)
92+
return fmt.Sprintf("tmp_rewards_gold_14_avs_od_operator_set_reward_amounts_%s_%d", camelDate, generatedRewardSnapshotId)
93+
}

0 commit comments

Comments
 (0)