Skip to content

Commit f05d4f7

Browse files
committed
Merge branch 'feeds-renaming' into 'main'
Add FTM and DAI renamings See merge request flarenetwork/ftso/ftso-scaling!154
2 parents 98a7611 + 5748562 commit f05d4f7

File tree

6 files changed

+72
-23
lines changed

6 files changed

+72
-23
lines changed

libs/fsp-rewards/src/constants.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ export const CALCULATIONS_FOLDER = () => {
333333
})(network);
334334
}
335335
};
336-
export const FEEDS_RENAMING_FILE = () => "libs/ftso-core/src/reward-calculation/feeds-renaming.json";
336+
export const FEEDS_RENAMING_FILE = () => "libs/fsp-rewards/src/reward-calculation/feeds-renaming.json";
337337
export const FUTURE_VOTING_ROUNDS = () => 30;
338338
// Used to limit querying of too old events and handling the missing event for the voting round
339339
export const COSTON_FAST_UPDATER_SWITCH_VOTING_ROUND_ID = 779191;

libs/fsp-rewards/src/reward-calculation/feeds-renaming.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,17 @@
44
"newName": "POL/USD",
55
"oldFeedId": "0x014d415449432f5553440000000000000000000000",
66
"newFeedId": "0x01504f4c2f55534400000000000000000000000000"
7+
},
8+
{
9+
"oldName": "FTM/USD",
10+
"newName": "S/USD",
11+
"oldFeedId": "0x0146544d2f55534400000000000000000000000000",
12+
"newFeedId": "0x01532f555344000000000000000000000000000000"
13+
},
14+
{
15+
"oldName": "DAI/USD",
16+
"newName": "USDS/USD",
17+
"oldFeedId": "0x014441492f55534400000000000000000000000000",
18+
"newFeedId": "0x01555344532f555344000000000000000000000000"
719
}
820
]

libs/fsp-rewards/src/reward-calculation/reward-calculation.ts

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import { DataAvailabilityStatus } from "../../../ftso-core/src/DataManager";
22
import { RewardEpochManager } from "../../../ftso-core/src/RewardEpochManager";
3-
import {
4-
FTSO2_PROTOCOL_ID
5-
} from "../../../ftso-core/src/constants";
3+
import { FTSO2_PROTOCOL_ID } from "../../../ftso-core/src/constants";
64
import { calculateMedianResults } from "../../../ftso-core/src/ftso-calculation/ftso-median";
75
import { RewardEpochDuration } from "../../../ftso-core/src/utils/RewardEpochDuration";
86
import { MedianCalculationResult } from "../../../ftso-core/src/voting-types";
@@ -28,7 +26,7 @@ import {
2826
FEEDS_RENAMING_FILE,
2927
FINALIZATION_VOTER_SELECTION_THRESHOLD_WEIGHT_BIPS,
3028
FTSO2_FAST_UPDATES_PROTOCOL_ID,
31-
PENALTY_FACTOR
29+
PENALTY_FACTOR,
3230
} from "../constants";
3331
import { FUFeedValue } from "../data-calculation-interfaces";
3432
import { IPartialRewardOfferForRound } from "../utils/PartialRewardOffer";
@@ -285,9 +283,7 @@ export async function partialRewardClaimsForVotingRound(
285283
}
286284
}
287285
const fuFeedValueMap = new Map<string, FUFeedValue>();
288-
if (
289-
rewardEpochInfo.fuInflationRewardsOffered.feedConfigurations.length > data.fastUpdatesData.feedValues.length
290-
) {
286+
if (rewardEpochInfo.fuInflationRewardsOffered.feedConfigurations.length > data.fastUpdatesData.feedValues.length) {
291287
throw new Error("Critical error: Feed configurations contain more feeds then feed values");
292288
}
293289
// if new feeds are introduced during the voting round, they are ignored
@@ -377,8 +373,8 @@ export async function partialRewardClaimsForVotingRound(
377373
data.fdcData.firstSuccessfulFinalization,
378374
data.fdcData.finalizations,
379375
data,
380-
new Set(data.eligibleFinalizers),
381-
new Set(data.eligibleFinalizers),
376+
new Set(data.eligibleFinalizersFdc),
377+
new Set(data.eligibleFinalizersFdc),
382378
RewardTypePrefix.FDC_FINALIZATION
383379
);
384380

@@ -393,9 +389,10 @@ export async function partialRewardClaimsForVotingRound(
393389
rewardEpochInfo,
394390
data,
395391
PENALTY_FACTOR(),
392+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
396393
data.dataForCalculations.votersWeightsMap!,
397394
RewardTypePrefix.FDC_OFFENDERS
398-
)
395+
);
399396

400397
allRewardClaims.push(...fdCFinalizationRewardClaims);
401398
allRewardClaims.push(...fdcSigningRewardClaims);
@@ -450,6 +447,14 @@ export async function prepareDataForRewardCalculations(
450447
const eligibleFinalizationRewardVotersInGracePeriod = new Set(
451448
randomVoterSelector.randomSelectThresholdWeightVoters(initialHash)
452449
);
450+
const initialHashFdc = RandomVoterSelector.initialHashSeed(
451+
rewardEpoch.signingPolicy.seed,
452+
FDC_PROTOCOL_ID,
453+
votingRoundId
454+
);
455+
const eligibleFinalizationRewardVotersInGracePeriodFdc = new Set(
456+
randomVoterSelector.randomSelectThresholdWeightVoters(initialHashFdc)
457+
);
453458

454459
const randomData = calculateRandom(rewardDataForCalculations.dataForCalculations);
455460
const calculationResults = [
@@ -463,6 +468,7 @@ export async function prepareDataForRewardCalculations(
463468
medianResults,
464469
randomData,
465470
[...eligibleFinalizationRewardVotersInGracePeriod],
471+
[...eligibleFinalizationRewardVotersInGracePeriodFdc],
466472
false,
467473
calculationFolder
468474
);
@@ -515,6 +521,15 @@ export async function prepareDataForRewardCalculationsForRange(
515521
randomVoterSelector.randomSelectThresholdWeightVoters(initialHash)
516522
);
517523

524+
const initialHashFdc = RandomVoterSelector.initialHashSeed(
525+
rewardEpoch.signingPolicy.seed,
526+
FDC_PROTOCOL_ID,
527+
votingRoundId
528+
);
529+
const eligibleFinalizationRewardVotersInGracePeriodFdc = new Set(
530+
randomVoterSelector.randomSelectThresholdWeightVoters(initialHashFdc)
531+
);
532+
518533
const randomData = calculateRandom(rewardDataForCalculations.dataForCalculations);
519534
const calculationResults = [
520535
MerkleTreeStructs.fromRandomCalculationResult(randomData),
@@ -533,6 +548,7 @@ export async function prepareDataForRewardCalculationsForRange(
533548
medianResults,
534549
randomData,
535550
[...eligibleFinalizationRewardVotersInGracePeriod],
551+
[...eligibleFinalizationRewardVotersInGracePeriodFdc],
536552
tempRewardEpochFolder,
537553
calculationFolder
538554
);

libs/fsp-rewards/src/utils/stat-info/reward-calculation-data.ts

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,22 @@ import { RelayMessage } from "../../../../ftso-core/src/fsp-utils/RelayMessage";
44
import { ISignaturePayload } from "../../../../ftso-core/src/fsp-utils/SignaturePayload";
55
import { GenericSubmissionData, ParsedFinalizationData } from "../../../../ftso-core/src/IndexerClient";
66
import { VoterWeights } from "../../../../ftso-core/src/RewardEpoch";
7-
import { Address, Feed, MedianCalculationResult, MessageHash, RandomCalculationResult } from "../../../../ftso-core/src/voting-types";
7+
import {
8+
Address,
9+
Feed,
10+
MedianCalculationResult,
11+
MessageHash,
12+
RandomCalculationResult,
13+
} from "../../../../ftso-core/src/voting-types";
814
import { IRevealData } from "../../../../ftso-core/src/data/RevealData";
915
import { bigIntReplacer, bigIntReviver } from "../../../../ftso-core/src/utils/big-number-serialization";
1016
import { REWARD_CALCULATION_DATA_FILE, TEMP_REWARD_EPOCH_FOLDER_PREFIX } from "./constants";
1117
import { RewardEpochInfo } from "./reward-epoch-info";
12-
import {CALCULATIONS_FOLDER} from "../../constants";
18+
import { CALCULATIONS_FOLDER } from "../../constants";
1319
import {
1420
DataForRewardCalculation,
1521
FastUpdatesDataForVotingRound,
16-
SFDCDataForVotingRound
22+
SFDCDataForVotingRound,
1723
} from "../../data-calculation-interfaces";
1824

1925
export interface RevealRecords {
@@ -68,7 +74,7 @@ export function prepareDataForCalculations(rewardEpochId: number, data: DataForR
6874
voterMedianVotingWeights,
6975
randomGenerationBenchingWindow: data.dataForCalculations.randomGenerationBenchingWindow,
7076
benchingWindowRevealOffenders: [...data.dataForCalculations.benchingWindowRevealOffenders],
71-
feedOrder: data.dataForCalculations.feedOrder
77+
feedOrder: data.dataForCalculations.feedOrder,
7278
};
7379
return result;
7480
}
@@ -97,7 +103,10 @@ export interface SDataForRewardCalculation {
97103
fdcData?: SFDCDataForVotingRound;
98104
// usually added after results of the next voting round are known
99105
nextVotingRoundRandomResult?: string;
106+
// eligible finalizers for FTSO Scaling
100107
eligibleFinalizers: string[];
108+
// eligible finalizers for FDC
109+
eligibleFinalizersFdc: string[];
101110
// not serialized, reconstructed on augmentation
102111
signaturesMap?: Map<MessageHash, GenericSubmissionData<ISignaturePayload>[]>;
103112
}
@@ -120,6 +129,7 @@ export function serializeDataForRewardCalculation(
120129
medianResults: MedianCalculationResult[],
121130
randomResult: RandomCalculationResult,
122131
eligibleFinalizationRewardVotersInGracePeriod: string[],
132+
eligibleFinalizationRewardVotersInGracePeriodFdc: string[],
123133
tempRewardEpochFolder = false,
124134
calculationFolder = CALCULATIONS_FOLDER()
125135
): void {
@@ -142,7 +152,6 @@ export function serializeDataForRewardCalculation(
142152
hashSignatures.push(hashRecord);
143153
}
144154

145-
146155
let fdcData: SFDCDataForVotingRound | undefined;
147156

148157
if (rewardCalculationData.fdcData) {
@@ -165,7 +174,7 @@ export function serializeDataForRewardCalculation(
165174
consensusBitVote: rewardCalculationData.fdcData.consensusBitVote,
166175
consensusBitVoteIndices: rewardCalculationData.fdcData.consensusBitVoteIndices,
167176
fdcOffenders: rewardCalculationData.fdcData.fdcOffenders,
168-
}
177+
};
169178
}
170179

171180
for (const finalization of rewardCalculationData.finalizations) {
@@ -183,8 +192,9 @@ export function serializeDataForRewardCalculation(
183192
medianCalculationResults: medianResults,
184193
randomResult: simplifyRandomCalculationResult(randomResult),
185194
eligibleFinalizers: eligibleFinalizationRewardVotersInGracePeriod,
195+
eligibleFinalizersFdc: eligibleFinalizationRewardVotersInGracePeriodFdc,
186196
fastUpdatesData: rewardCalculationData.fastUpdatesData,
187-
fdcData
197+
fdcData,
188198
};
189199
writeFileSync(rewardCalculationsDataPath, JSON.stringify(data, bigIntReplacer));
190200
}
@@ -294,17 +304,14 @@ export function augmentDataForRewardCalculation(
294304
/**
295305
* After deserialization, the data is augmented with additional maps and sets for easier access.
296306
*/
297-
export function augmentFdcDataForRewardCalculation(
298-
data: SFDCDataForVotingRound,
299-
): void {
307+
export function augmentFdcDataForRewardCalculation(data: SFDCDataForVotingRound): void {
300308
const signaturesMap = new Map<string, GenericSubmissionData<ISignaturePayload>[]>();
301309
for (const hashSignature of data.signatures) {
302310
signaturesMap.set(hashSignature.hash, hashSignature.signatures);
303311
}
304312
data.signaturesMap = signaturesMap;
305313
}
306314

307-
308315
export function deserializeDataForRewardCalculation(
309316
rewardEpochId: number,
310317
votingRoundId: number,

libs/fsp-rewards/src/utils/stat-info/reward-calculation-status.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { existsSync, readFileSync, writeFileSync } from "fs";
22
import path from "path/posix";
33
import { RewardEpoch } from "../../../../ftso-core/src/RewardEpoch";
44
import { STATUS_FILE, TEMP_REWARD_EPOCH_FOLDER_PREFIX } from "./constants";
5-
import {CALCULATIONS_FOLDER} from "../../constants";
5+
import { CALCULATIONS_FOLDER } from "../../constants";
66

77
export enum RewardCalculationStatus {
88
PENDING = "PENDING",

scripts/get-passes.sh

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
NETWORK=$1
2+
REWARD_EPOCH_ID=$2
3+
# check if parameters are passed
4+
if [ -z "$NETWORK" ] || [ -z "$REWARD_EPOCH_ID" ]; then
5+
echo "Provide the network and reward epoch id as parameters"
6+
exit 1
7+
fi
8+
9+
wget "https://raw.githubusercontent.com/flare-foundation/fsp-rewards/refs/heads/main/$NETWORK/$REWARD_EPOCH_ID/passes.json"
10+
mkdir -p calculations
11+
mkdir -p calculations/$NETWORK
12+
mkdir -p calculations/$NETWORK/$REWARD_EPOCH_ID
13+
rm -f calculations/$NETWORK/$REWARD_EPOCH_ID/passes.json
14+
mv passes.json calculations/$NETWORK/$REWARD_EPOCH_ID/passes.json

0 commit comments

Comments
 (0)