Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 6 additions & 8 deletions src/mappings/bondingManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@ import { store } from "@graphprotocol/graph-ts";
import {
convertToDecimal,
createOrLoadDelegator,
createOrLoadPool,
createOrLoadProtocol,
createOrLoadRound,
createOrLoadTransactionFromEvent,
createOrLoadTranscoder,
EMPTY_ADDRESS,
getBlockNum,
makeEventId,
makePoolId,
makeUnbondingLockId,
MAXIMUM_VALUE_UINT256,
ONE_BI,
Expand All @@ -36,7 +36,6 @@ import {
BondEvent,
EarningsClaimedEvent,
ParameterUpdateEvent,
Pool,
RebondEvent,
RewardEvent,
TranscoderActivatedEvent,
Expand Down Expand Up @@ -483,8 +482,7 @@ export function reward(event: Reward): void {
event.block.timestamp.toI32()
);
let round = createOrLoadRound(getBlockNum());
let poolId = makePoolId(event.params.transcoder.toHex(), round.id);
let pool = Pool.load(poolId);
let pool = createOrLoadPool(round.id, event.params.transcoder.toHex());
let protocol = createOrLoadProtocol();

delegate.delegatedAmount = delegate.delegatedAmount.plus(
Expand All @@ -496,13 +494,13 @@ export function reward(event: Reward): void {
);
transcoder.lastRewardRound = round.id;

pool!.rewardTokens = convertToDecimal(event.params.amount);
pool!.feeShare = transcoder.feeShare;
pool!.rewardCut = transcoder.rewardCut;
pool.rewardTokens = convertToDecimal(event.params.amount);
pool.feeShare = transcoder.feeShare;
pool.rewardCut = transcoder.rewardCut;

transcoder.save();
delegate.save();
pool!.save();
pool.save();
protocol.save();

createOrLoadTransactionFromEvent(event);
Expand Down
17 changes: 2 additions & 15 deletions src/mappings/roundsManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { Address, BigDecimal, BigInt, log } from "@graphprotocol/graph-ts";
import {
convertToDecimal,
createOrLoadDay,
createOrLoadPool,
createOrLoadProtocol,
createOrLoadRound,
createOrLoadTransactionFromEvent,
Expand All @@ -13,7 +14,6 @@ import {
getLptPriceEth,
getTimestampForDaysPast,
makeEventId,
makePoolId,
ONE_BD,
ONE_BI,
PERC_DIVISOR,
Expand All @@ -32,7 +32,6 @@ import {
BroadcasterDay,
NewRoundEvent,
ParameterUpdateEvent,
Pool,
Transcoder,
TranscoderDay,
} from "../types/schema";
Expand Down Expand Up @@ -76,8 +75,6 @@ export function newRound(event: NewRound): void {
round.totalActiveStake = totalActiveStake;
round.save();

let poolId: string;
let pool: Pool;
let protocol = createOrLoadProtocol();

// Activate all transcoders pending activation
Expand Down Expand Up @@ -127,17 +124,7 @@ export function newRound(event: NewRound): void {
// reward() for a given round, we store its reward tokens inside this Pool
// entry in a field called "rewardTokens". If "rewardTokens" is null for a
// given transcoder and round then we know the transcoder failed to call reward()
poolId = makePoolId(currentTranscoder.toHex(), round.id);
pool = new Pool(poolId);
pool.round = round.id;
pool.delegate = currentTranscoder.toHex();
pool.fees = ZERO_BD;
if (transcoder) {
pool.totalStake = transcoder.totalStake;
pool.rewardCut = transcoder.rewardCut;
pool.feeShare = transcoder.feeShare;
}
pool.save();
createOrLoadPool(round.id, currentTranscoder.toHex());

currentTranscoder =
bondingManager.getNextTranscoderInPool(currentTranscoder);
Expand Down
14 changes: 5 additions & 9 deletions src/mappings/ticketBroker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import {
createOrLoadBroadcaster,
createOrLoadBroadcasterDay,
createOrLoadDay,
createOrLoadPool,
createOrLoadProtocol,
createOrLoadRound,
createOrLoadTransactionFromEvent,
Expand All @@ -12,12 +13,10 @@ import {
getBlockNum,
getEthPriceUsd,
makeEventId,
makePoolId,
ZERO_BD,
} from "../../utils/helpers";
import {
DepositFundedEvent,
Pool,
ReserveClaimedEvent,
ReserveFundedEvent,
WinningTicketRedeemedEvent,
Expand All @@ -42,8 +41,6 @@ export function winningTicketRedeemed(event: WinningTicketRedeemed): void {
let faceValue = convertToDecimal(event.params.faceValue);
let ethPrice = getEthPriceUsd();
let faceValueUSD = faceValue.times(ethPrice);
let poolId = makePoolId(event.params.recipient.toHex(), round.id);
let pool = Pool.load(poolId);

createOrLoadTransactionFromEvent(event);

Expand Down Expand Up @@ -102,7 +99,7 @@ export function winningTicketRedeemed(event: WinningTicketRedeemed): void {
// Update transcoder's fee volume
let transcoder = createOrLoadTranscoder(
event.params.recipient.toHex(),
event.block.timestamp.toI32()
timestamp
);
transcoder.totalVolumeETH = transcoder.totalVolumeETH.plus(faceValue);
transcoder.totalVolumeUSD = transcoder.totalVolumeUSD.plus(faceValueUSD);
Expand All @@ -122,10 +119,9 @@ export function winningTicketRedeemed(event: WinningTicketRedeemed): void {
protocol.save();

// update the transcoder pool fees
if (pool) {
pool.fees = pool.fees.plus(faceValue);
pool.save();
}
let pool = createOrLoadPool(round.id, event.params.recipient.toHex());
pool.fees = pool.fees.plus(faceValue);
pool.save();

day.totalSupply = protocol.totalSupply;
day.totalActiveStake = protocol.totalActiveStake;
Expand Down
28 changes: 28 additions & 0 deletions utils/helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import {
Day,
Delegator,
LivepeerAccount,
Pool,
Protocol,
Round,
Transaction,
Expand Down Expand Up @@ -51,6 +52,33 @@ export function makePoolId(transcoderAddress: string, roundId: string): string {
return leftPad(roundId, 10) + "-" + transcoderAddress;
}

export function createOrLoadPool(roundId: string, transcoderAddress: string): Pool {
let poolId = makePoolId(transcoderAddress, roundId);
let pool = Pool.load(poolId);

if (pool == null) {
pool = new Pool(poolId);
pool.round = roundId;
pool.delegate = transcoderAddress;
pool.fees = ZERO_BD;
let transcoder = Transcoder.load(transcoderAddress);

if (transcoder) {
pool.totalStake = transcoder.totalStake;
pool.rewardCut = transcoder.rewardCut;
pool.feeShare = transcoder.feeShare;
} else {
// Failsafe: the Transcoder should exist, but default the non-nullable
// fields if it is missing so save() cannot abort.
pool.totalStake = ZERO_BD;
pool.rewardCut = ZERO_BI;
pool.feeShare = ZERO_BI;
}
pool.save();
}
return pool;
}

// Make a derived share ID from a delegator address
export function makeShareId(delegatorAddress: string, roundId: string): string {
return leftPad(roundId, 10) + "-" + delegatorAddress;
Expand Down