update feeratemodel & test case

This commit is contained in:
杨新刚
2021-01-12 18:12:42 +08:00
parent b283a1c1f9
commit fa5180bcd8
9 changed files with 209 additions and 11 deletions

View File

@@ -8,6 +8,7 @@
pragma solidity 0.6.9;
pragma experimental ABIEncoderV2;
import {ReentrancyGuard} from "../lib/ReentrancyGuard.sol";
import {InitializableOwnable} from "../lib/InitializableOwnable.sol";
interface IFeeRateModel {
@@ -16,23 +17,28 @@ interface IFeeRateModel {
function setFeeRate(uint256 newFeeRate) external;
}
contract FeeRateModel is InitializableOwnable {
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) external onlyOwner {
require(trader != address(0), "INVALID ADDRESS!");
feeMapping[trader] = 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) external onlyOwner {
_FEE_RATE_ = newFeeRate;
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) {

View File

@@ -0,0 +1,30 @@
/*
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";
contract FeeRateModelLogic is ReentrancyGuard,InitializableOwnable {
//DEFAULT
uint256 public _FEE_RATE_;
mapping(address => uint256) feeMapping;
event Log(string str, bool result);
function setSpecificFeeRate(address trader, uint256 feeRate) external onlyOwner {
require(trader != address(0), "INVALID ADDRESS!");
feeMapping[trader] = feeRate;
}
function setFeeRate(uint256 newFeeRate) external onlyOwner {
_FEE_RATE_ = newFeeRate;
}
}

View File

@@ -0,0 +1,31 @@
/*
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";
//for test update
contract FeeRateModelLogicUpdate is ReentrancyGuard ,InitializableOwnable{
//DEFAULT
uint256 public _FEE_RATE_;
mapping(address => uint256) feeMapping;
event Log(string str, bool result);
function setSpecificFeeRate(address trader, uint256 feeRate) external onlyOwner {
require(trader != address(0), "INVALID ADDRESS!");
feeMapping[trader] = 0;
}
function setFeeRate(uint256 newFeeRate) external onlyOwner {
_FEE_RATE_ = _FEE_RATE_+ newFeeRate;
}
}