Skip to content

Commit

Permalink
improve logic
Browse files Browse the repository at this point in the history
  • Loading branch information
marc-aurele-besner committed Sep 18, 2024
1 parent bf27c99 commit b0c3120
Showing 1 changed file with 71 additions and 48 deletions.
119 changes: 71 additions & 48 deletions indexers/gemini-3g/testnet-rewards/src/mappings/mappingHandlers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -306,8 +306,6 @@ export async function handleOperatorRewardedEvent(
const operatorId = _operatorId.toString();
const reward = BigInt(_reward.toString());

await updateData(blockNumber);

const operator = await checkAndGetOperator(
operatorId,
"0",
Expand All @@ -319,54 +317,79 @@ export async function handleOperatorRewardedEvent(

await checkAndGetOperatorReward(operatorId, reward, blockNumber);

const operatorStates = await OperatorState.getByOperatorId(operatorId);
if (!operatorStates) {
logger.warn("Operator states not found");
return;
}
const operatorState = operatorStates[0];

if (operatorState.currentTotalShares >= BigInt(0)) {
const nominators = await Nominator.getByOperatorId(operatorId);

if (nominators) {
for (const nominator of nominators) {
const nominatorDepositStates =
await NominatorDepositState.getByNominatorId(nominator.nominatorId);
if (nominatorDepositStates) {
const sortedNominatorDepositStates = nominatorDepositStates.sort(
(a, b) => b.updatedAt - a.updatedAt
const [_operators, _nominators] = await Promise.all([
api.query.domains.operators.entries(),
api.query.domains.nominators.entries(),
]);

logger.info("_operators" + stringify(_operators));
logger.info("_nominators" + stringify(_nominators));

const operatorState = _operators
.map(([_header, _data]) => {
const [operatorId] = _header.toHuman() as [string];

const { currentDomainId, currentTotalStake, totalShares } =
_data.toPrimitive() as {
signingKey: string;
currentDomainId: number;
nextDomainId: number;
minimumNominatorStake: string;
nominationTax: number;
currentTotalStake: string;
currentEpochRewards: number;
totalShares: string;
status: string;
};
logger.info(
"operatorId: " +
stringify({ operatorId }) +
" currentTotalStake: " +
stringify({ currentTotalStake }) +
" totalShares: " +
stringify({ totalShares })
);
return { operatorId, currentDomainId, currentTotalStake, totalShares };
})
.find((op) => op.operatorId === operatorId);
logger.info("___operators" + stringify(operatorState));

if (operatorState) {
const operatorTotalShares = BigInt(operatorState.totalShares);
if (operatorTotalShares >= BigInt(0)) {
_nominators.forEach(async ([_header, _data]) => {
const [_nOpId, accountId] = _header.toHuman() as [string, string];
if (operatorId !== _nOpId) return;
const { shares } = _data.toPrimitive() as { shares: string };
const nominatorShares = BigInt(shares);

logger.info(
"operatorId: " +
stringify({ _nOpId }) +
" accountId: " +
stringify({ accountId }) +
" shares: " +
stringify({ shares })
);
const rewardTimeTotalShare = reward * operatorTotalShares;

if (rewardTimeTotalShare >= nominatorShares) {
const nominatorRewardAmount = rewardTimeTotalShare / nominatorShares;

const nominatorReward = await checkAndGetNominatorReward(
`${operatorId}-${accountId}`,
operatorId,
nominatorRewardAmount,
reward,
operatorTotalShares,
nominatorShares,
blockNumber
);
const latestNominatorDepositState = sortedNominatorDepositStates[0];

const rewardTimeTotalShare =
reward * operatorState.currentTotalShares;
const nominatorShares = latestNominatorDepositState
? latestNominatorDepositState.shares
: operatorState.currentTotalShares;

if (rewardTimeTotalShare >= nominatorShares) {
const nominatorRewardAmount =
rewardTimeTotalShare / nominatorShares;

const nominatorReward = await checkAndGetNominatorReward(
nominator.nominatorId,
operatorId,
nominatorRewardAmount,
reward,
operatorState.currentTotalShares,
nominatorShares,
blockNumber
);
logger.info("nominatorReward: " + nominatorReward.toString());
} else
logger.warn(
"Current total shares is less than reward * nominator.currentTotalShares"
);
}
}
logger.info("nominatorReward: " + nominatorReward.toString());
} else logger.warn("Current total shares is 0");
});
}
} else logger.warn("Current total shares is 0");
}
}

export const loadStaticData = async () => {
Expand Down

0 comments on commit b0c3120

Please sign in to comment.