bring DPPOracleAdmin back
This commit is contained in:
142
contracts/DODOPrivatePool/impl/DPPOracle/DPPOracleAdmin.sol
Normal file
142
contracts/DODOPrivatePool/impl/DPPOracle/DPPOracleAdmin.sol
Normal file
@@ -0,0 +1,142 @@
|
||||
/*
|
||||
|
||||
Copyright 2021 DODO ZOO.
|
||||
SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
*/
|
||||
|
||||
pragma solidity 0.6.9;
|
||||
pragma experimental ABIEncoderV2;
|
||||
|
||||
import {IDPPOracle} from "../../intf/IDPPOracle.sol";
|
||||
import {IDODOApproveProxy} from "../../../SmartRoute/DODOApproveProxy.sol";
|
||||
import {InitializableOwnable} from "../../../lib/InitializableOwnable.sol";
|
||||
|
||||
/**
|
||||
* @title DPPOracleAdmin
|
||||
* @author DODO Breeder
|
||||
*
|
||||
* @notice Admin of Oracle DODOPrivatePool
|
||||
*/
|
||||
contract DPPOracleAdmin is InitializableOwnable {
|
||||
address public _DPP_;
|
||||
address public _OPERATOR_;
|
||||
address public _DODO_APPROVE_PROXY_;
|
||||
uint256 public _FREEZE_TIMESTAMP_;
|
||||
|
||||
|
||||
modifier notFreezed() {
|
||||
require(block.timestamp >= _FREEZE_TIMESTAMP_, "ADMIN_FREEZED");
|
||||
_;
|
||||
}
|
||||
|
||||
function init(
|
||||
address owner,
|
||||
address dpp,
|
||||
address operator,
|
||||
address dodoApproveProxy
|
||||
) external {
|
||||
initOwner(owner);
|
||||
_DPP_ = dpp;
|
||||
_OPERATOR_ = operator;
|
||||
_DODO_APPROVE_PROXY_ = dodoApproveProxy;
|
||||
}
|
||||
|
||||
function sync() external notFreezed onlyOwner {
|
||||
IDPPOracle(_DPP_).ratioSync();
|
||||
}
|
||||
|
||||
function setFreezeTimestamp(uint256 timestamp) external notFreezed onlyOwner {
|
||||
_FREEZE_TIMESTAMP_ = timestamp;
|
||||
}
|
||||
|
||||
function setOperator(address newOperator) external notFreezed onlyOwner {
|
||||
_OPERATOR_ = newOperator;
|
||||
}
|
||||
|
||||
function retrieve(
|
||||
address payable to,
|
||||
address token,
|
||||
uint256 amount
|
||||
) external notFreezed onlyOwner {
|
||||
IDPPOracle(_DPP_).retrieve(to, token, amount);
|
||||
}
|
||||
|
||||
function changeOracle(address newOracle) external onlyOwner notFreezed {
|
||||
IDPPOracle(_DPP_).changeOracle(newOracle);
|
||||
}
|
||||
|
||||
function enableOracle() external onlyOwner notFreezed {
|
||||
IDPPOracle(_DPP_).enableOracle();
|
||||
}
|
||||
|
||||
function disableOracle(uint256 newI) external onlyOwner notFreezed {
|
||||
IDPPOracle(_DPP_).disableOracle(newI);
|
||||
}
|
||||
|
||||
function tuneParameters(
|
||||
uint256 newLpFeeRate,
|
||||
uint256 newI,
|
||||
uint256 newK,
|
||||
uint256 minBaseReserve,
|
||||
uint256 minQuoteReserve
|
||||
) external onlyOwner notFreezed returns (bool) {
|
||||
return
|
||||
IDPPOracle(_DPP_).tuneParameters(
|
||||
newLpFeeRate,
|
||||
newI,
|
||||
newK,
|
||||
minBaseReserve,
|
||||
minQuoteReserve
|
||||
);
|
||||
}
|
||||
|
||||
function tunePrice(
|
||||
uint256 newI,
|
||||
uint256 minBaseReserve,
|
||||
uint256 minQuoteReserve
|
||||
) external onlyOwner notFreezed returns (bool) {
|
||||
return
|
||||
IDPPOracle(_DPP_).tunePrice(
|
||||
newI,
|
||||
minBaseReserve,
|
||||
minQuoteReserve
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
function reset(
|
||||
address operator,
|
||||
uint256 newLpFeeRate,
|
||||
uint256 newI,
|
||||
uint256 newK,
|
||||
uint256 baseOutAmount,
|
||||
uint256 quoteOutAmount,
|
||||
uint256 minBaseReserve,
|
||||
uint256 minQuoteReserve
|
||||
) external notFreezed returns (bool) {
|
||||
require(
|
||||
msg.sender == _OWNER_ ||
|
||||
(IDODOApproveProxy(_DODO_APPROVE_PROXY_).isAllowedProxy(msg.sender) &&
|
||||
operator == _OPERATOR_),
|
||||
"RESET FORBIDDEN!"
|
||||
); // only allow owner directly call or operator call via DODODppProxy
|
||||
return
|
||||
IDPPOracle(_DPP_).reset(
|
||||
_OWNER_, //only support asset transfer out to owner
|
||||
newLpFeeRate,
|
||||
newI,
|
||||
newK,
|
||||
baseOutAmount,
|
||||
quoteOutAmount,
|
||||
minBaseReserve,
|
||||
minQuoteReserve
|
||||
);
|
||||
}
|
||||
|
||||
// ============ Admin Version Control ============
|
||||
|
||||
function version() external pure returns (string memory) {
|
||||
return "DPPOracle Admin 1.1.0";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user