Skip to content

Commit

Permalink
Added some events to StakeManager
Browse files Browse the repository at this point in the history
  • Loading branch information
ironbeer committed Nov 11, 2022
1 parent 8b0b021 commit 761adbf
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 14 deletions.
4 changes: 4 additions & 0 deletions contracts/IStakeManager.sol
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,16 @@ interface IStakeManager {
**********/

event AddedRewardBalance(uint256 amount);
event ValidatorJoined(address validator);
event ValidatorActivated(address indexed validator, uint256[] epochs);
event ValidatorDeactivated(address indexed validator, uint256[] epochs);
event ValidatorSlashed(address indexed validator);
event ValidatorJailed(address indexed validator, uint256 until);
event OperatorUpdated(address indexed validator, address oldOperator, address newOperator);
event Staked(address indexed staker, address indexed validator, Token.Type token, uint256 amount);
event Unstaked(address indexed staker, address indexed validator, Token.Type token, uint256 amount);
event ClaimedCommissions(address indexed validator, uint256 amount);
event ClaimedRewards(address indexed staker, address validator, uint256 amount);

/***********
* Structs *
Expand Down
28 changes: 20 additions & 8 deletions contracts/StakeManager.sol
Original file line number Diff line number Diff line change
Expand Up @@ -169,21 +169,31 @@ contract StakeManager is IStakeManager, System {
* @inheritdoc IStakeManager
*/
function joinValidator(address operator) external {
if (!allowlist.containsAddress(msg.sender)) {
address owner = msg.sender;
if (!allowlist.containsAddress(owner)) {
revert UnauthorizedValidator();
}

validators[msg.sender].join(operator);
validatorOwners.push(msg.sender);
operatorToOwner[operator] = msg.sender;
validators[owner].join(operator);
validatorOwners.push(owner);
operatorToOwner[operator] = owner;

emit ValidatorJoined(owner);
}

/**
* @inheritdoc IStakeManager
*/
function updateOperator(address operator) external validatorExists(msg.sender) {
validators[msg.sender].updateOperator(operator);
operatorToOwner[operator] = msg.sender;
address owner = msg.sender;

Validator storage validator = validators[owner];
address oldOperator = validator.operator;

validator.updateOperator(operator);
operatorToOwner[operator] = owner;

emit OperatorUpdated(owner, oldOperator, operator);
}

/**
Expand Down Expand Up @@ -216,7 +226,8 @@ contract StakeManager is IStakeManager, System {
* @inheritdoc IStakeManager
*/
function claimCommissions(address validator, uint256 epochs) external validatorExists(validator) {
validators[validator].claimCommissions(environment, epochs);
uint256 amount = validators[validator].claimCommissions(environment, epochs);
emit ClaimedCommissions(validator, amount);
}

/************************
Expand Down Expand Up @@ -276,7 +287,8 @@ contract StakeManager is IStakeManager, System {
address validator,
uint256 epochs
) external validatorExists(validator) stakerExists(staker) {
stakers[staker].claimRewards(environment, validators[validator], epochs);
uint256 amount = stakers[staker].claimRewards(environment, validators[validator], epochs);
emit ClaimedRewards(staker, validator, amount);
}

/******************
Expand Down
3 changes: 2 additions & 1 deletion contracts/lib/Staker.sol
Original file line number Diff line number Diff line change
Expand Up @@ -76,12 +76,13 @@ library Staker {
IEnvironment environment,
IStakeManager.Validator storage validator,
uint256 epochs
) internal {
) internal returns (uint256) {
(uint256 rewards, uint256 lastClaim) = getRewards(staker, environment, validator, epochs);
staker.lastClaimReward[validator.owner] = lastClaim;
if (rewards > 0) {
Token.transfers(Token.Type.OAS, staker.signer, rewards);
}
return rewards;
}

function claimUnstakes(IStakeManager.Staker storage staker, IEnvironment environment) internal {
Expand Down
3 changes: 2 additions & 1 deletion contracts/lib/Validator.sol
Original file line number Diff line number Diff line change
Expand Up @@ -86,12 +86,13 @@ library Validator {
IStakeManager.Validator storage validator,
IEnvironment environment,
uint256 epochs
) internal {
) internal returns (uint256) {
(uint256 commissions, uint256 lastClaim) = getCommissions(validator, environment, epochs);
validator.lastClaimCommission = lastClaim;
if (commissions > 0) {
Token.transfers(Token.Type.OAS, validator.owner, commissions);
}
return commissions;
}

function slash(
Expand Down
17 changes: 13 additions & 4 deletions test/StakeManager.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import {
WOASAddress,
SOASAddress,
TestERC20Bytecode,
toBNWei,
} from './helpers'

const initialEnv: EnvironmentValue = {
Expand Down Expand Up @@ -256,7 +257,9 @@ describe('StakeManager', () => {
tx = validator.joinValidator(owner.address)
await expect(tx).to.revertedWith('SameAsOwner()')

await validator.joinValidator()
await expect(await validator.joinValidator())
.to.emit(stakeManager, 'ValidatorJoined')
.withArgs(validator.owner.address)

tx = validator.joinValidator()
await expect(tx).to.revertedWith('AlreadyJoined()')
Expand All @@ -275,7 +278,9 @@ describe('StakeManager', () => {
await expect(tx).to.revertedWith('SameAsOwner()')

// from owner
await validator.updateOperator(newOperator.address)
await expect(await validator.updateOperator(newOperator.address))
.to.emit(stakeManager, 'OperatorUpdated')
.withArgs(validator.owner.address, validator.operator.address, newOperator.address)
expect((await validator.getInfo()).operator).to.equal(newOperator.address)

// from operator
Expand Down Expand Up @@ -414,7 +419,9 @@ describe('StakeManager', () => {
await toNextEpoch()

// from owner
await validator.claimCommissions(owner)
await expect(await validator.claimCommissions(owner))
.to.emit(stakeManager, 'ClaimedCommissions')
.withArgs(validator.owner.address, toBNWei('0.005707762557077625'))
await expectBalance(stakeManager, '499.994292237442922375', '250', '250')
await expectBalance(validator.owner, '10000.005707762557077625', '0', '0')

Expand Down Expand Up @@ -955,7 +962,9 @@ describe('StakeManager', () => {
await staker2.expectRewards('0.17408675', validator1, 99)
await validator1.expectCommissions('0.21347031', 99)

await staker1.claimRewards(validator1, 5)
await expect(await staker1.claimRewards(validator1, 5))
.to.emit(stakeManager, 'ClaimedRewards')
.withArgs(staker1.address, validator1.owner.address, toBNWei('0.069063926940639267'))
await staker2.claimRewards(validator1, 5)
await validator1.claimCommissions(undefined, 5)

Expand Down

0 comments on commit 761adbf

Please sign in to comment.