Files
dodo-contractV2/contracts/lib/FeeRateModel.sol
2021-01-12 18:12:42 +08:00

51 lines
1.6 KiB
Solidity

/*
Copyright 2020 DODO ZOO.
SPDX-License-Identifier: Apache-2.0
*/
pragma solidity 0.6.9;
pragma experimental ABIEncoderV2;
import {ReentrancyGuard} from "../lib/ReentrancyGuard.sol";
import {InitializableOwnable} from "../lib/InitializableOwnable.sol";
interface IFeeRateModel {
function getFeeRate(address trader) external view returns (uint256);
function init(address owner, uint256 feeRate) external;
function setFeeRate(uint256 newFeeRate) external;
}
contract FeeRateModel is ReentrancyGuard,InitializableOwnable {
//DEFAULT
uint256 public _FEE_RATE_;
mapping(address => uint256) feeMapping;
event Log(string str, bool result);
function init(address owner, uint256 feeRate) external {
initOwner(owner);
_FEE_RATE_ = feeRate;
}
function setSpecificFeeRate(address trader, uint256 feeRate, address logicContractAddr) external onlyOwner {
bool r;
(r, ) = logicContractAddr.delegatecall(abi.encodeWithSignature("setSpecificFeeRate(address,uint256)", trader,feeRate));
emit Log("delegatecall return ", r);
}
function setFeeRate(uint256 newFeeRate, address logicContractAddr) external onlyOwner {
bool r;
(r, ) = logicContractAddr.delegatecall(abi.encodeWithSignature("setFeeRate(uint256)", newFeeRate));
emit Log("delegatecall return ", r);
}
function getFeeRate(address trader) external view returns (uint256) {
uint256 feeRate = feeMapping[trader];
if(feeRate == 0)
return _FEE_RATE_;
return feeRate;
}
}