Cleaned up staking contract with wrappers
This commit is contained in:
@@ -18,440 +18,25 @@
|
||||
|
||||
pragma solidity ^0.5.9;
|
||||
|
||||
import "./immutable/MixinConstants.sol";
|
||||
import "./immutable/MixinStorage.sol";
|
||||
import "./core/MixinStake.sol";
|
||||
import "./core/MixinPools.sol";
|
||||
import "./core/MixinEpoch.sol";
|
||||
import "./core/MixinRewards.sol";
|
||||
import "./core/MixinFees.sol";
|
||||
import "./core/MixinExchange.sol";
|
||||
import "./wrappers/MixinStakeWrapper.sol";
|
||||
import "./wrappers/MixinStakeBalancesWrapper.sol";
|
||||
import "./wrappers/MixinPoolsWrapper.sol";
|
||||
import "./wrappers/MixinEpochWrapper.sol";
|
||||
import "./wrappers/MixinRewardsWrapper.sol";
|
||||
import "./wrappers/MixinFeesWrapper.sol";
|
||||
import "./wrappers/MixinExchangeWrapper.sol";
|
||||
|
||||
|
||||
contract Staking is
|
||||
//IStaking,
|
||||
//IStakingEvents,
|
||||
MixinConstants,
|
||||
MixinStorage,
|
||||
MixinExchange,
|
||||
MixinEpoch,
|
||||
MixinRewards,
|
||||
MixinStake,
|
||||
MixinPools,
|
||||
MixinFees
|
||||
MixinExchangeWrapper,
|
||||
MixinEpochWrapper,
|
||||
MixinRewardsWrapper,
|
||||
MixinStakeBalancesWrapper,
|
||||
MixinStakeWrapper,
|
||||
MixinPoolsWrapper,
|
||||
MixinFeesWrapper
|
||||
{
|
||||
|
||||
///// STAKE /////
|
||||
|
||||
function deposit(uint256 amount)
|
||||
external
|
||||
{
|
||||
_deposit(msg.sender, amount);
|
||||
}
|
||||
|
||||
function depositAndStake(uint256 amount)
|
||||
external
|
||||
{
|
||||
_depositAndStake(msg.sender, amount);
|
||||
}
|
||||
|
||||
function depositAndDelegate(bytes32 poolId, uint256 amount)
|
||||
external
|
||||
{
|
||||
_depositAndDelegate(msg.sender, poolId, amount);
|
||||
}
|
||||
|
||||
function activateStake(uint256 amount)
|
||||
external
|
||||
{
|
||||
_activateStake(msg.sender, amount);
|
||||
}
|
||||
|
||||
function activateAndDelegateStake(bytes32 poolId, uint256 amount)
|
||||
external
|
||||
{
|
||||
_activateAndDelegateStake(msg.sender, poolId, amount);
|
||||
}
|
||||
|
||||
function deactivateAndTimelockStake(uint256 amount)
|
||||
external
|
||||
{
|
||||
_deactivateAndTimelockStake(msg.sender, amount);
|
||||
}
|
||||
|
||||
function deactivateAndTimelockDelegatedStake(bytes32 poolId, uint256 amount)
|
||||
external
|
||||
{
|
||||
_deactivateAndTimelockDelegatedStake(msg.sender, poolId, amount);
|
||||
}
|
||||
|
||||
function withdraw(uint256 amount)
|
||||
external
|
||||
{
|
||||
_withdraw(msg.sender, amount);
|
||||
}
|
||||
|
||||
function forceTimelockSync(address owner)
|
||||
external
|
||||
{
|
||||
_forceTimelockSync(owner);
|
||||
}
|
||||
|
||||
///// STAKE BALANCES /////
|
||||
|
||||
function getTotalStake(address owner)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getTotalStake(owner);
|
||||
}
|
||||
|
||||
function getActivatedStake(address owner)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getActivatedStake(owner);
|
||||
}
|
||||
|
||||
function getDeactivatedStake(address owner)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getDeactivatedStake(owner);
|
||||
}
|
||||
|
||||
function getActivatableStake(address owner)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getActivatableStake(owner);
|
||||
}
|
||||
|
||||
function getWithdrawableStake(address owner)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getWithdrawableStake(owner);
|
||||
}
|
||||
|
||||
function getTimelockedStake(address owner)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getTimelockedStake(owner);
|
||||
}
|
||||
|
||||
function getStakeDelegatedByOwner(address owner)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getStakeDelegatedByOwner(owner);
|
||||
}
|
||||
|
||||
function getStakeDelegatedToPoolByOwner(address owner, bytes32 poolId)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getStakeDelegatedToPoolByOwner(owner, poolId);
|
||||
}
|
||||
|
||||
function getStakeDelegatedToPool(bytes32 poolId)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getStakeDelegatedToPool(poolId);
|
||||
}
|
||||
|
||||
|
||||
///// POOLS /////
|
||||
modifier onlyPoolOperator(bytes32 poolId) {
|
||||
require(
|
||||
msg.sender == _getPoolOperator(poolId),
|
||||
"ONLY_CALLABLE_BY_POOL_OPERATOR"
|
||||
);
|
||||
|
||||
_;
|
||||
}
|
||||
|
||||
function getNextPoolId()
|
||||
external
|
||||
returns (bytes32 nextPoolId)
|
||||
{
|
||||
nextPoolId = _getNextPoolId();
|
||||
return nextPoolId;
|
||||
}
|
||||
|
||||
function createPool(uint8 operatorShare)
|
||||
external
|
||||
returns (bytes32 poolId)
|
||||
{
|
||||
poolId = _createPool(msg.sender, operatorShare);
|
||||
return poolId;
|
||||
}
|
||||
|
||||
function addMakerToPool(
|
||||
bytes32 poolId,
|
||||
address makerAddress,
|
||||
bytes calldata makerSignature
|
||||
)
|
||||
external
|
||||
onlyPoolOperator(poolId)
|
||||
{
|
||||
_addMakerToPool(
|
||||
poolId,
|
||||
makerAddress,
|
||||
makerSignature,
|
||||
msg.sender
|
||||
);
|
||||
}
|
||||
|
||||
function removeMakerFromPool(bytes32 poolId, address makerAddress)
|
||||
external
|
||||
onlyPoolOperator(poolId)
|
||||
{
|
||||
_removeMakerFromPool(
|
||||
poolId,
|
||||
makerAddress,
|
||||
msg.sender
|
||||
);
|
||||
}
|
||||
|
||||
function getMakerPoolId(address makerAddress)
|
||||
external
|
||||
view
|
||||
returns (bytes32 makerId)
|
||||
{
|
||||
makerId = _getMakerPoolId(makerAddress);
|
||||
return makerId;
|
||||
}
|
||||
|
||||
function getMakerAddressesForPool(bytes32 makerId)
|
||||
external
|
||||
view
|
||||
returns (address[] memory makerAddresses)
|
||||
{
|
||||
makerAddresses = _getMakerAddressesForPool(makerId);
|
||||
return makerAddresses;
|
||||
}
|
||||
|
||||
///// EPOCHS /////
|
||||
|
||||
// @TODO - MixinAuthorizable
|
||||
function goToNextEpoch()
|
||||
external
|
||||
{
|
||||
_payRebates();
|
||||
_goToNextEpoch();
|
||||
}
|
||||
|
||||
function getEpochPeriodInSeconds()
|
||||
external
|
||||
view
|
||||
returns (uint64)
|
||||
{
|
||||
return _getEpochPeriodInSeconds();
|
||||
}
|
||||
|
||||
function getTimelockPeriodInEpochs()
|
||||
external
|
||||
view
|
||||
returns (uint64)
|
||||
{
|
||||
return _getTimelockPeriodInEpochs();
|
||||
}
|
||||
|
||||
function getCurrentEpochStartTimeInSeconds()
|
||||
external
|
||||
view
|
||||
returns (uint64)
|
||||
{
|
||||
return _getCurrentEpochStartTimeInSeconds();
|
||||
}
|
||||
|
||||
function getCurrentTimelockPeriodStartEpoch()
|
||||
external
|
||||
view
|
||||
returns (uint64)
|
||||
{
|
||||
return _getCurrentTimelockPeriodStartEpoch();
|
||||
}
|
||||
|
||||
function getCurrentEpochEndTimeInSeconds()
|
||||
external
|
||||
view
|
||||
returns (uint64)
|
||||
{
|
||||
return _getCurrentEpochEndTimeInSeconds();
|
||||
}
|
||||
|
||||
function getCurrentTimelockPeriodEndEpoch()
|
||||
external
|
||||
view
|
||||
returns (uint64)
|
||||
{
|
||||
return _getCurrentTimelockPeriodEndEpoch();
|
||||
}
|
||||
|
||||
function getCurrentEpoch()
|
||||
external
|
||||
view
|
||||
returns (uint64)
|
||||
{
|
||||
return _getCurrentEpoch();
|
||||
}
|
||||
|
||||
function getCurrentTimelockPeriod()
|
||||
external
|
||||
view
|
||||
returns (uint64)
|
||||
{
|
||||
return _getCurrentTimelockPeriod();
|
||||
}
|
||||
|
||||
///// REWARDS /////
|
||||
|
||||
function getRewardBalance(bytes32 poolId)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getRewardBalance(poolId);
|
||||
}
|
||||
|
||||
function getRewardBalanceOfOperator(bytes32 poolId)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getRewardBalanceOfOperator(poolId);
|
||||
}
|
||||
|
||||
function getRewardBalanceOfPool(bytes32 poolId)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getRewardBalanceOfPool(poolId);
|
||||
}
|
||||
|
||||
function computeRewardBalance(bytes32 poolId, address owner)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _computeRewardBalance(poolId, owner);
|
||||
}
|
||||
|
||||
function getShadowBalanceByPoolId(bytes32 poolId)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getShadowBalanceByPoolId(poolId);
|
||||
}
|
||||
|
||||
function getShadowBalanceInPoolByOwner(address owner, bytes32 poolId)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getShadowBalanceInPoolByOwner(owner, poolId);
|
||||
}
|
||||
|
||||
function withdrawOperatorReward(bytes32 poolId, uint256 amount)
|
||||
external
|
||||
onlyPoolOperator(poolId)
|
||||
{
|
||||
_withdrawOperatorReward(poolId, amount);
|
||||
}
|
||||
|
||||
function withdrawReward(bytes32 poolId, uint256 amount)
|
||||
external
|
||||
{
|
||||
_withdrawReward(poolId, msg.sender, amount);
|
||||
}
|
||||
|
||||
function withdrawTotalOperatorReward(bytes32 poolId)
|
||||
external
|
||||
onlyPoolOperator(poolId)
|
||||
returns (uint256)
|
||||
{
|
||||
return _withdrawTotalOperatorReward(poolId);
|
||||
}
|
||||
|
||||
function withdrawTotalReward(bytes32 poolId)
|
||||
external
|
||||
returns (uint256)
|
||||
{
|
||||
return _withdrawTotalReward(poolId, msg.sender);
|
||||
}
|
||||
|
||||
///// FEES /////
|
||||
modifier onlyExchange() {
|
||||
require(
|
||||
_isValidExchangeAddress(msg.sender),
|
||||
"ONLY_CALLABLE_BY_EXCHANGE"
|
||||
);
|
||||
_;
|
||||
}
|
||||
function payProtocolFee(address makerAddress)
|
||||
external
|
||||
payable
|
||||
onlyExchange
|
||||
{
|
||||
_payProtocolFee(makerAddress, msg.value);
|
||||
}
|
||||
|
||||
function getProtocolFeesThisEpochByPool(bytes32 poolId)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getProtocolFeesThisEpochByPool(poolId);
|
||||
}
|
||||
|
||||
function getTotalProtocolFeesThisEpoch()
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getTotalProtocolFeesThisEpoch();
|
||||
}
|
||||
|
||||
///// EXCHANGES /////
|
||||
// @TODO - Only by 0x multi-sig
|
||||
|
||||
function isValidExchangeAddress(address addr)
|
||||
external
|
||||
view
|
||||
returns (bool)
|
||||
{
|
||||
return _isValidExchangeAddress(addr);
|
||||
}
|
||||
|
||||
function addExchangeAddress(address addr)
|
||||
external
|
||||
{
|
||||
_addExchangeAddress(addr);
|
||||
}
|
||||
|
||||
function removeExchangeAddress(address addr)
|
||||
external
|
||||
{
|
||||
_removeExchangeAddress(addr);
|
||||
}
|
||||
|
||||
///// SETTERS /////
|
||||
|
||||
function setZrxVault(address _zrxVault)
|
||||
external
|
||||
{
|
||||
|
@@ -163,4 +163,11 @@ contract MixinFees is
|
||||
totalRewardsRecordedInVault
|
||||
);
|
||||
}
|
||||
|
||||
function _finalizeFees()
|
||||
internal
|
||||
{
|
||||
_payRebates();
|
||||
_goToNextEpoch();
|
||||
}
|
||||
}
|
46
contracts/staking/contracts/src/utils/modifiers.sol
Normal file
46
contracts/staking/contracts/src/utils/modifiers.sol
Normal file
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
|
||||
Copyright 2018 ZeroEx Intl.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
*/
|
||||
|
||||
pragma solidity ^0.5.5;
|
||||
|
||||
import "../core/MixinPools.sol";
|
||||
import "../core/MixinExchange.sol";
|
||||
|
||||
|
||||
contract Modifiers is
|
||||
MixinPools,
|
||||
MixinExchange
|
||||
{
|
||||
|
||||
modifier onlyPoolOperator(bytes32 poolId) {
|
||||
require(
|
||||
msg.sender == _getPoolOperator(poolId),
|
||||
"ONLY_CALLABLE_BY_POOL_OPERATOR"
|
||||
);
|
||||
|
||||
_;
|
||||
}
|
||||
|
||||
modifier onlyExchange() {
|
||||
require(
|
||||
_isValidExchangeAddress(msg.sender),
|
||||
"ONLY_CALLABLE_BY_EXCHANGE"
|
||||
);
|
||||
_;
|
||||
}
|
||||
}
|
@@ -0,0 +1,92 @@
|
||||
/*
|
||||
|
||||
Copyright 2018 ZeroEx Intl.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
*/
|
||||
|
||||
pragma solidity ^0.5.5;
|
||||
|
||||
import "../core/MixinEpoch.sol";
|
||||
|
||||
|
||||
contract MixinEpochWrapper is
|
||||
MixinEpoch
|
||||
{
|
||||
// @TODO - MixinAuthorizable
|
||||
|
||||
function getEpochPeriodInSeconds()
|
||||
external
|
||||
view
|
||||
returns (uint64)
|
||||
{
|
||||
return _getEpochPeriodInSeconds();
|
||||
}
|
||||
|
||||
function getTimelockPeriodInEpochs()
|
||||
external
|
||||
view
|
||||
returns (uint64)
|
||||
{
|
||||
return _getTimelockPeriodInEpochs();
|
||||
}
|
||||
|
||||
function getCurrentEpochStartTimeInSeconds()
|
||||
external
|
||||
view
|
||||
returns (uint64)
|
||||
{
|
||||
return _getCurrentEpochStartTimeInSeconds();
|
||||
}
|
||||
|
||||
function getCurrentTimelockPeriodStartEpoch()
|
||||
external
|
||||
view
|
||||
returns (uint64)
|
||||
{
|
||||
return _getCurrentTimelockPeriodStartEpoch();
|
||||
}
|
||||
|
||||
function getCurrentEpochEndTimeInSeconds()
|
||||
external
|
||||
view
|
||||
returns (uint64)
|
||||
{
|
||||
return _getCurrentEpochEndTimeInSeconds();
|
||||
}
|
||||
|
||||
function getCurrentTimelockPeriodEndEpoch()
|
||||
external
|
||||
view
|
||||
returns (uint64)
|
||||
{
|
||||
return _getCurrentTimelockPeriodEndEpoch();
|
||||
}
|
||||
|
||||
function getCurrentEpoch()
|
||||
external
|
||||
view
|
||||
returns (uint64)
|
||||
{
|
||||
return _getCurrentEpoch();
|
||||
}
|
||||
|
||||
function getCurrentTimelockPeriod()
|
||||
external
|
||||
view
|
||||
returns (uint64)
|
||||
{
|
||||
return _getCurrentTimelockPeriod();
|
||||
}
|
||||
}
|
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
|
||||
Copyright 2018 ZeroEx Intl.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
*/
|
||||
|
||||
pragma solidity ^0.5.5;
|
||||
|
||||
import "../core/MixinExchange.sol";
|
||||
|
||||
|
||||
contract MixinExchangeWrapper is
|
||||
MixinExchange
|
||||
{
|
||||
|
||||
// @TODO - Only by 0x multi-sig
|
||||
|
||||
function isValidExchangeAddress(address addr)
|
||||
external
|
||||
view
|
||||
returns (bool)
|
||||
{
|
||||
return _isValidExchangeAddress(addr);
|
||||
}
|
||||
|
||||
function addExchangeAddress(address addr)
|
||||
external
|
||||
{
|
||||
_addExchangeAddress(addr);
|
||||
}
|
||||
|
||||
function removeExchangeAddress(address addr)
|
||||
external
|
||||
{
|
||||
_removeExchangeAddress(addr);
|
||||
}
|
||||
}
|
@@ -0,0 +1,59 @@
|
||||
/*
|
||||
|
||||
Copyright 2018 ZeroEx Intl.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
*/
|
||||
|
||||
pragma solidity ^0.5.5;
|
||||
|
||||
import "../core/MixinFees.sol";
|
||||
import "../utils/Modifiers.sol";
|
||||
|
||||
|
||||
contract MixinFeesWrapper is
|
||||
MixinFees,
|
||||
Modifiers
|
||||
{
|
||||
|
||||
function payProtocolFee(address makerAddress)
|
||||
external
|
||||
payable
|
||||
onlyExchange
|
||||
{
|
||||
_payProtocolFee(makerAddress, msg.value);
|
||||
}
|
||||
|
||||
function getProtocolFeesThisEpochByPool(bytes32 poolId)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getProtocolFeesThisEpochByPool(poolId);
|
||||
}
|
||||
|
||||
function getTotalProtocolFeesThisEpoch()
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getTotalProtocolFeesThisEpoch();
|
||||
}
|
||||
|
||||
function finalizeFees()
|
||||
external
|
||||
{
|
||||
_finalizeFees();
|
||||
}
|
||||
}
|
@@ -0,0 +1,90 @@
|
||||
/*
|
||||
|
||||
Copyright 2018 ZeroEx Intl.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
*/
|
||||
|
||||
pragma solidity ^0.5.5;
|
||||
|
||||
import "../core/MixinPools.sol";
|
||||
import "../utils/Modifiers.sol";
|
||||
|
||||
|
||||
contract MixinPoolsWrapper is
|
||||
MixinPools,
|
||||
Modifiers
|
||||
{
|
||||
|
||||
function getNextPoolId()
|
||||
external
|
||||
returns (bytes32 nextPoolId)
|
||||
{
|
||||
nextPoolId = _getNextPoolId();
|
||||
return nextPoolId;
|
||||
}
|
||||
|
||||
function createPool(uint8 operatorShare)
|
||||
external
|
||||
returns (bytes32 poolId)
|
||||
{
|
||||
poolId = _createPool(msg.sender, operatorShare);
|
||||
return poolId;
|
||||
}
|
||||
|
||||
function addMakerToPool(
|
||||
bytes32 poolId,
|
||||
address makerAddress,
|
||||
bytes calldata makerSignature
|
||||
)
|
||||
external
|
||||
onlyPoolOperator(poolId)
|
||||
{
|
||||
_addMakerToPool(
|
||||
poolId,
|
||||
makerAddress,
|
||||
makerSignature,
|
||||
msg.sender
|
||||
);
|
||||
}
|
||||
|
||||
function removeMakerFromPool(bytes32 poolId, address makerAddress)
|
||||
external
|
||||
onlyPoolOperator(poolId)
|
||||
{
|
||||
_removeMakerFromPool(
|
||||
poolId,
|
||||
makerAddress,
|
||||
msg.sender
|
||||
);
|
||||
}
|
||||
|
||||
function getMakerPoolId(address makerAddress)
|
||||
external
|
||||
view
|
||||
returns (bytes32 makerId)
|
||||
{
|
||||
makerId = _getMakerPoolId(makerAddress);
|
||||
return makerId;
|
||||
}
|
||||
|
||||
function getMakerAddressesForPool(bytes32 makerId)
|
||||
external
|
||||
view
|
||||
returns (address[] memory makerAddresses)
|
||||
{
|
||||
makerAddresses = _getMakerAddressesForPool(makerId);
|
||||
return makerAddresses;
|
||||
}
|
||||
}
|
105
contracts/staking/contracts/src/wrappers/MixinRewardsWrapper.sol
Normal file
105
contracts/staking/contracts/src/wrappers/MixinRewardsWrapper.sol
Normal file
@@ -0,0 +1,105 @@
|
||||
/*
|
||||
|
||||
Copyright 2018 ZeroEx Intl.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
*/
|
||||
|
||||
pragma solidity ^0.5.5;
|
||||
|
||||
import "../core/MixinRewards.sol";
|
||||
import "../utils/Modifiers.sol";
|
||||
|
||||
|
||||
contract MixinRewardsWrapper is
|
||||
MixinRewards,
|
||||
Modifiers
|
||||
{
|
||||
|
||||
function getRewardBalance(bytes32 poolId)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getRewardBalance(poolId);
|
||||
}
|
||||
|
||||
function getRewardBalanceOfOperator(bytes32 poolId)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getRewardBalanceOfOperator(poolId);
|
||||
}
|
||||
|
||||
function getRewardBalanceOfPool(bytes32 poolId)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getRewardBalanceOfPool(poolId);
|
||||
}
|
||||
|
||||
function computeRewardBalance(bytes32 poolId, address owner)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _computeRewardBalance(poolId, owner);
|
||||
}
|
||||
|
||||
function getShadowBalanceByPoolId(bytes32 poolId)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getShadowBalanceByPoolId(poolId);
|
||||
}
|
||||
|
||||
function getShadowBalanceInPoolByOwner(address owner, bytes32 poolId)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getShadowBalanceInPoolByOwner(owner, poolId);
|
||||
}
|
||||
|
||||
function withdrawOperatorReward(bytes32 poolId, uint256 amount)
|
||||
external
|
||||
onlyPoolOperator(poolId)
|
||||
{
|
||||
_withdrawOperatorReward(poolId, amount);
|
||||
}
|
||||
|
||||
function withdrawReward(bytes32 poolId, uint256 amount)
|
||||
external
|
||||
{
|
||||
_withdrawReward(poolId, msg.sender, amount);
|
||||
}
|
||||
|
||||
function withdrawTotalOperatorReward(bytes32 poolId)
|
||||
external
|
||||
onlyPoolOperator(poolId)
|
||||
returns (uint256)
|
||||
{
|
||||
return _withdrawTotalOperatorReward(poolId);
|
||||
}
|
||||
|
||||
function withdrawTotalReward(bytes32 poolId)
|
||||
external
|
||||
returns (uint256)
|
||||
{
|
||||
return _withdrawTotalReward(poolId, msg.sender);
|
||||
}
|
||||
}
|
@@ -0,0 +1,99 @@
|
||||
/*
|
||||
|
||||
Copyright 2018 ZeroEx Intl.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
*/
|
||||
|
||||
pragma solidity ^0.5.5;
|
||||
|
||||
import "../core/MixinStakeBalances.sol";
|
||||
|
||||
|
||||
contract MixinStakeBalancesWrapper is
|
||||
MixinStakeBalances
|
||||
{
|
||||
|
||||
function getTotalStake(address owner)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getTotalStake(owner);
|
||||
}
|
||||
|
||||
function getActivatedStake(address owner)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getActivatedStake(owner);
|
||||
}
|
||||
|
||||
function getDeactivatedStake(address owner)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getDeactivatedStake(owner);
|
||||
}
|
||||
|
||||
function getActivatableStake(address owner)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getActivatableStake(owner);
|
||||
}
|
||||
|
||||
function getWithdrawableStake(address owner)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getWithdrawableStake(owner);
|
||||
}
|
||||
|
||||
function getTimelockedStake(address owner)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getTimelockedStake(owner);
|
||||
}
|
||||
|
||||
function getStakeDelegatedByOwner(address owner)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getStakeDelegatedByOwner(owner);
|
||||
}
|
||||
|
||||
function getStakeDelegatedToPoolByOwner(address owner, bytes32 poolId)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getStakeDelegatedToPoolByOwner(owner, poolId);
|
||||
}
|
||||
|
||||
function getStakeDelegatedToPool(bytes32 poolId)
|
||||
external
|
||||
view
|
||||
returns (uint256)
|
||||
{
|
||||
return _getStakeDelegatedToPool(poolId);
|
||||
}
|
||||
}
|
@@ -0,0 +1,81 @@
|
||||
/*
|
||||
|
||||
Copyright 2018 ZeroEx Intl.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
*/
|
||||
|
||||
pragma solidity ^0.5.5;
|
||||
|
||||
import "../core/MixinStake.sol";
|
||||
|
||||
|
||||
contract MixinStakeWrapper is
|
||||
MixinStake
|
||||
{
|
||||
|
||||
function deposit(uint256 amount)
|
||||
external
|
||||
{
|
||||
_deposit(msg.sender, amount);
|
||||
}
|
||||
|
||||
function depositAndStake(uint256 amount)
|
||||
external
|
||||
{
|
||||
_depositAndStake(msg.sender, amount);
|
||||
}
|
||||
|
||||
function depositAndDelegate(bytes32 poolId, uint256 amount)
|
||||
external
|
||||
{
|
||||
_depositAndDelegate(msg.sender, poolId, amount);
|
||||
}
|
||||
|
||||
function activateStake(uint256 amount)
|
||||
external
|
||||
{
|
||||
_activateStake(msg.sender, amount);
|
||||
}
|
||||
|
||||
function activateAndDelegateStake(bytes32 poolId, uint256 amount)
|
||||
external
|
||||
{
|
||||
_activateAndDelegateStake(msg.sender, poolId, amount);
|
||||
}
|
||||
|
||||
function deactivateAndTimelockStake(uint256 amount)
|
||||
external
|
||||
{
|
||||
_deactivateAndTimelockStake(msg.sender, amount);
|
||||
}
|
||||
|
||||
function deactivateAndTimelockDelegatedStake(bytes32 poolId, uint256 amount)
|
||||
external
|
||||
{
|
||||
_deactivateAndTimelockDelegatedStake(msg.sender, poolId, amount);
|
||||
}
|
||||
|
||||
function withdraw(uint256 amount)
|
||||
external
|
||||
{
|
||||
_withdraw(msg.sender, amount);
|
||||
}
|
||||
|
||||
function forceTimelockSync(address owner)
|
||||
external
|
||||
{
|
||||
_forceTimelockSync(owner);
|
||||
}
|
||||
}
|
@@ -274,7 +274,7 @@ export class StakingWrapper {
|
||||
}
|
||||
///// EPOCHS /////
|
||||
public async goToNextEpochAsync(): Promise<TransactionReceiptWithDecodedLogs> {
|
||||
const calldata = this.getStakingContract().goToNextEpoch.getABIEncodedTransactionData();
|
||||
const calldata = this.getStakingContract().finalizeFees.getABIEncodedTransactionData();
|
||||
const txReceipt = await this._executeTransactionAsync(calldata, undefined, new BigNumber(0), true);
|
||||
console.log(JSON.stringify(txReceipt, null , 4));
|
||||
//console.log((txReceipt.logs[0] as LogWithDecodedArgs<StakingEEventArgs>).args);
|
||||
|
Reference in New Issue
Block a user