Added documentation to MixinStakingPoolRewards
This commit is contained in:
@@ -49,17 +49,17 @@ export class Simulation {
|
||||
await this._stakingWrapper.skipToNextEpochAsync();
|
||||
// everyone has been paid out into the vault. check balances.
|
||||
await this._assertVaultBalancesAsync(this._p);
|
||||
await this._withdrawRewardForOperatorsAsync(this._p);
|
||||
await this._withdrawRewardForStakingPoolMemberForOperatorsAsync(this._p);
|
||||
if (this._p.withdrawByUndelegating) {
|
||||
await this._withdrawRewardForDelegatorsAsync(this._p);
|
||||
await this._withdrawRewardForStakingPoolMemberForDelegatorsAsync(this._p);
|
||||
} else {
|
||||
await this._withdrawRewardForDelegatorsByUndelegatingAsync(this._p);
|
||||
await this._withdrawRewardForStakingPoolMemberForDelegatorsByUndelegatingAsync(this._p);
|
||||
}
|
||||
|
||||
// @TODO cleanup state and verify the staking contract is empty
|
||||
}
|
||||
|
||||
private async _withdrawRewardForDelegatorsByUndelegatingAsync(p: SimulationParams): Promise<void> {
|
||||
private async _withdrawRewardForStakingPoolMemberForDelegatorsByUndelegatingAsync(p: SimulationParams): Promise<void> {
|
||||
let delegatorIdx = 0;
|
||||
let poolIdx = 0;
|
||||
for (const numberOfDelegatorsInPool of p.numberOfDelegatorsPerPool) {
|
||||
@@ -88,7 +88,7 @@ export class Simulation {
|
||||
}
|
||||
}
|
||||
|
||||
private async _withdrawRewardForDelegatorsAsync(p: SimulationParams): Promise<void> {
|
||||
private async _withdrawRewardForStakingPoolMemberForDelegatorsAsync(p: SimulationParams): Promise<void> {
|
||||
let delegatorIdx = 0;
|
||||
let poolIdx = 0;
|
||||
for (const numberOfDelegatorsInPool of p.numberOfDelegatorsPerPool) {
|
||||
@@ -98,7 +98,7 @@ export class Simulation {
|
||||
const delegator = this._delegators[delegatorIdx];
|
||||
const delegatorAddress = delegator.getOwner();
|
||||
const initEthBalance = await this._stakingWrapper.getEthBalanceAsync(delegatorAddress);
|
||||
await this._stakingWrapper.withdrawTotalRewardAsync(poolId, delegatorAddress);
|
||||
await this._stakingWrapper.withdrawTotalRewardForStakingPoolMemberAsync(poolId, delegatorAddress);
|
||||
const finalEthBalance = await this._stakingWrapper.getEthBalanceAsync(delegatorAddress);
|
||||
const reward = finalEthBalance.minus(initEthBalance);
|
||||
const rewardTrimmed = StakingWrapper.trimFloat(
|
||||
@@ -228,7 +228,7 @@ export class Simulation {
|
||||
`expected balance in vault for pool with id ${poolId}`,
|
||||
).to.be.bignumber.equal(expectedRewardBalance);
|
||||
// check operator's balance
|
||||
const poolOperatorVaultBalance = await this._stakingWrapper.getRewardBalanceOfOperatorAsync(poolId);
|
||||
const poolOperatorVaultBalance = await this._stakingWrapper.getRewardBalanceOfStakingPoolOperatorAsync(poolId);
|
||||
const poolOperatorVaultBalanceTrimmed = StakingWrapper.trimFloat(
|
||||
StakingWrapper.toFloatingPoint(poolOperatorVaultBalance, 18),
|
||||
5,
|
||||
@@ -239,7 +239,7 @@ export class Simulation {
|
||||
`operator balance in vault for pool with id ${poolId}`,
|
||||
).to.be.bignumber.equal(expectedPoolOperatorVaultBalance);
|
||||
// check balance of pool members
|
||||
const membersVaultBalance = await this._stakingWrapper.getRewardBalanceOfPoolAsync(poolId);
|
||||
const membersVaultBalance = await this._stakingWrapper.getRewardBalanceOfStakingPoolMembersAsync(poolId);
|
||||
const membersVaultBalanceTrimmed = StakingWrapper.trimFloat(
|
||||
StakingWrapper.toFloatingPoint(membersVaultBalance, 18),
|
||||
5,
|
||||
@@ -253,7 +253,7 @@ export class Simulation {
|
||||
}
|
||||
}
|
||||
|
||||
private async _withdrawRewardForOperatorsAsync(p: SimulationParams): Promise<void> {
|
||||
private async _withdrawRewardForStakingPoolMemberForOperatorsAsync(p: SimulationParams): Promise<void> {
|
||||
// tslint:disable-next-line no-unused-variable
|
||||
for (const i of _.range(p.numberOfPools)) {
|
||||
// @TODO - we trim balances in here because payouts are accurate only to 5 decimal places.
|
||||
@@ -263,7 +263,7 @@ export class Simulation {
|
||||
const poolOperator = this._poolOperators[i];
|
||||
const poolOperatorAddress = poolOperator.getOwner();
|
||||
const initEthBalance = await this._stakingWrapper.getEthBalanceAsync(poolOperatorAddress);
|
||||
await this._stakingWrapper.withdrawTotalOperatorRewardAsync(poolId, poolOperatorAddress);
|
||||
await this._stakingWrapper.withdrawTotalRewardForStakingPoolOperatorAsync(poolId, poolOperatorAddress);
|
||||
const finalEthBalance = await this._stakingWrapper.getEthBalanceAsync(poolOperatorAddress);
|
||||
const reward = finalEthBalance.minus(initEthBalance);
|
||||
const rewardTrimmed = StakingWrapper.trimFloat(StakingWrapper.toFloatingPoint(reward, 18), 5);
|
||||
|
||||
@@ -525,73 +525,73 @@ export class StakingWrapper {
|
||||
return txReceipt;
|
||||
}
|
||||
///// REWARDS /////
|
||||
public async getRewardBalanceAsync(poolId: string): Promise<BigNumber> {
|
||||
const calldata = this.getStakingContract().getRewardBalance.getABIEncodedTransactionData(poolId);
|
||||
public async getTotalRewardBalanceOfStakingPoolAsync(poolId: string): Promise<BigNumber> {
|
||||
const calldata = this.getStakingContract().getTotalRewardBalanceOfStakingPool.getABIEncodedTransactionData(poolId);
|
||||
const returnData = await this._callAsync(calldata);
|
||||
const value = this.getStakingContract().getRewardBalance.getABIDecodedReturnData(returnData);
|
||||
const value = this.getStakingContract().getTotalRewardBalanceOfStakingPool.getABIDecodedReturnData(returnData);
|
||||
return value;
|
||||
}
|
||||
public async getRewardBalanceOfOperatorAsync(poolId: string): Promise<BigNumber> {
|
||||
const calldata = this.getStakingContract().getRewardBalanceOfOperator.getABIEncodedTransactionData(poolId);
|
||||
public async getRewardBalanceOfStakingPoolOperatorAsync(poolId: string): Promise<BigNumber> {
|
||||
const calldata = this.getStakingContract().getRewardBalanceOfStakingPoolOperator.getABIEncodedTransactionData(poolId);
|
||||
const returnData = await this._callAsync(calldata);
|
||||
const value = this.getStakingContract().getRewardBalanceOfOperator.getABIDecodedReturnData(returnData);
|
||||
const value = this.getStakingContract().getRewardBalanceOfStakingPoolOperator.getABIDecodedReturnData(returnData);
|
||||
return value;
|
||||
}
|
||||
public async getRewardBalanceOfPoolAsync(poolId: string): Promise<BigNumber> {
|
||||
const calldata = this.getStakingContract().getRewardBalanceOfPool.getABIEncodedTransactionData(poolId);
|
||||
public async getRewardBalanceOfStakingPoolMembersAsync(poolId: string): Promise<BigNumber> {
|
||||
const calldata = this.getStakingContract().getRewardBalanceOfStakingPoolMembers.getABIEncodedTransactionData(poolId);
|
||||
const returnData = await this._callAsync(calldata);
|
||||
const value = this.getStakingContract().getRewardBalanceOfPool.getABIDecodedReturnData(returnData);
|
||||
const value = this.getStakingContract().getRewardBalanceOfStakingPoolMembers.getABIDecodedReturnData(returnData);
|
||||
return value;
|
||||
}
|
||||
public async computeRewardBalanceAsync(poolId: string, owner: string): Promise<BigNumber> {
|
||||
const calldata = this.getStakingContract().computeRewardBalance.getABIEncodedTransactionData(poolId, owner);
|
||||
public async computeRewardBalanceOfStakingPoolMemberAsync(poolId: string, owner: string): Promise<BigNumber> {
|
||||
const calldata = this.getStakingContract().computeRewardBalanceOfStakingPoolMember.getABIEncodedTransactionData(poolId, owner);
|
||||
const returnData = await this._callAsync(calldata);
|
||||
const value = this.getStakingContract().computeRewardBalance.getABIDecodedReturnData(returnData);
|
||||
const value = this.getStakingContract().computeRewardBalanceOfStakingPoolMember.getABIDecodedReturnData(returnData);
|
||||
return value;
|
||||
}
|
||||
public async getShadowBalanceByPoolIdAsync(poolId: string): Promise<BigNumber> {
|
||||
const calldata = this.getStakingContract().getShadowBalanceByPoolId.getABIEncodedTransactionData(poolId);
|
||||
public async getTotalShadowBalanceOfStakingPoolAsync(poolId: string): Promise<BigNumber> {
|
||||
const calldata = this.getStakingContract().getTotalShadowBalanceOfStakingPool.getABIEncodedTransactionData(poolId);
|
||||
const returnData = await this._callAsync(calldata);
|
||||
const value = this.getStakingContract().getShadowBalanceByPoolId.getABIDecodedReturnData(returnData);
|
||||
const value = this.getStakingContract().getTotalShadowBalanceOfStakingPool.getABIDecodedReturnData(returnData);
|
||||
return value;
|
||||
}
|
||||
public async getShadowBalanceInPoolByOwnerAsync(owner: string, poolId: string): Promise<BigNumber> {
|
||||
const calldata = this.getStakingContract().getShadowBalanceInPoolByOwner.getABIEncodedTransactionData(
|
||||
public async getShadowBalanceOfStakingPoolMemberAsync(owner: string, poolId: string): Promise<BigNumber> {
|
||||
const calldata = this.getStakingContract().getShadowBalanceOfStakingPoolMember.getABIEncodedTransactionData(
|
||||
owner,
|
||||
poolId,
|
||||
);
|
||||
const returnData = await this._callAsync(calldata);
|
||||
const value = this.getStakingContract().getShadowBalanceInPoolByOwner.getABIDecodedReturnData(returnData);
|
||||
const value = this.getStakingContract().getShadowBalanceOfStakingPoolMember.getABIDecodedReturnData(returnData);
|
||||
return value;
|
||||
}
|
||||
public async withdrawOperatorRewardAsync(
|
||||
public async withdrawRewardForStakingPoolOperatorAsync(
|
||||
poolId: string,
|
||||
amount: BigNumber,
|
||||
operatorAddress: string,
|
||||
): Promise<TransactionReceiptWithDecodedLogs> {
|
||||
const calldata = this.getStakingContract().withdrawOperatorReward.getABIEncodedTransactionData(poolId, amount);
|
||||
const calldata = this.getStakingContract().withdrawRewardForStakingPoolOperator.getABIEncodedTransactionData(poolId, amount);
|
||||
const txReceipt = await this._executeTransactionAsync(calldata, operatorAddress);
|
||||
return txReceipt;
|
||||
}
|
||||
public async withdrawRewardAsync(
|
||||
public async withdrawRewardForStakingPoolMemberAsync(
|
||||
poolId: string,
|
||||
amount: BigNumber,
|
||||
owner: string,
|
||||
): Promise<TransactionReceiptWithDecodedLogs> {
|
||||
const calldata = this.getStakingContract().withdrawReward.getABIEncodedTransactionData(poolId, amount);
|
||||
const calldata = this.getStakingContract().withdrawRewardForStakingPoolMember.getABIEncodedTransactionData(poolId, amount);
|
||||
const txReceipt = await this._executeTransactionAsync(calldata, owner);
|
||||
return txReceipt;
|
||||
}
|
||||
public async withdrawTotalOperatorRewardAsync(
|
||||
public async withdrawTotalRewardForStakingPoolOperatorAsync(
|
||||
poolId: string,
|
||||
operatorAddress: string,
|
||||
): Promise<TransactionReceiptWithDecodedLogs> {
|
||||
const calldata = this.getStakingContract().withdrawTotalOperatorReward.getABIEncodedTransactionData(poolId);
|
||||
const calldata = this.getStakingContract().withdrawTotalRewardForStakingPoolOperator.getABIEncodedTransactionData(poolId);
|
||||
const txReceipt = await this._executeTransactionAsync(calldata, operatorAddress);
|
||||
return txReceipt;
|
||||
}
|
||||
public async withdrawTotalRewardAsync(poolId: string, owner: string): Promise<TransactionReceiptWithDecodedLogs> {
|
||||
const calldata = this.getStakingContract().withdrawTotalReward.getABIEncodedTransactionData(poolId);
|
||||
public async withdrawTotalRewardForStakingPoolMemberAsync(poolId: string, owner: string): Promise<TransactionReceiptWithDecodedLogs> {
|
||||
const calldata = this.getStakingContract().withdrawTotalRewardForStakingPoolMember.getABIEncodedTransactionData(poolId);
|
||||
const txReceipt = await this._executeTransactionAsync(calldata, owner);
|
||||
return txReceipt;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user