Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
This contract has been partially verified via Sourcify.
View contract in Sourcify repository
- Contract name:
- FeeRateModel
- Optimization enabled
- true
- Compiler version
- v0.6.9+commit.3e3065ac
- Optimization runs
- 200
- EVM Version
- istanbul
- Verified at
- 2026-04-19T01:18:19.724705Z
FeeRateModel.sol
// File: contracts/lib/InitializableOwnable.sol
/*
Copyright 2020 DODO ZOO.
SPDX-License-Identifier: Apache-2.0
*/
pragma solidity 0.6.9;
pragma experimental ABIEncoderV2;
/**
* @title Ownable
* @author DODO Breeder
*
* @notice Ownership related functions
*/
contract InitializableOwnable {
address public _OWNER_;
address public _NEW_OWNER_;
bool internal _INITIALIZED_;
// ============ Events ============
event OwnershipTransferPrepared(address indexed previousOwner, address indexed newOwner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
// ============ Modifiers ============
modifier notInitialized() {
require(!_INITIALIZED_, "DODO_INITIALIZED");
_;
}
modifier onlyOwner() {
require(msg.sender == _OWNER_, "NOT_OWNER");
_;
}
// ============ Functions ============
function initOwner(address newOwner) public notInitialized {
_INITIALIZED_ = true;
_OWNER_ = newOwner;
}
function transferOwnership(address newOwner) public onlyOwner {
emit OwnershipTransferPrepared(_OWNER_, newOwner);
_NEW_OWNER_ = newOwner;
}
function claimOwnership() public {
require(msg.sender == _NEW_OWNER_, "INVALID_CLAIM");
emit OwnershipTransferred(_OWNER_, _NEW_OWNER_);
_OWNER_ = _NEW_OWNER_;
_NEW_OWNER_ = address(0);
}
}
// File: contracts/lib/FeeRateModel.sol
interface IFeeRateImpl {
function getFeeRate(address pool, address trader) external view returns (uint256);
}
interface IFeeRateModel {
function getFeeRate(address trader) external view returns (uint256);
}
contract FeeRateModel is InitializableOwnable {
address public feeRateImpl;
function setFeeProxy(address _feeRateImpl) public onlyOwner {
feeRateImpl = _feeRateImpl;
}
function getFeeRate(address trader) external view returns (uint256) {
if(feeRateImpl == address(0))
return 0;
return IFeeRateImpl(feeRateImpl).getFeeRate(msg.sender,trader);
}
}
Compiler Settings
{"remappings":[],"optimizer":{"runs":200,"enabled":true},"metadata":{"bytecodeHash":"ipfs"},"libraries":{},"evmVersion":"istanbul","compilationTarget":{"FeeRateModel.sol":"FeeRateModel"}}
Contract ABI
[{"type":"event","name":"OwnershipTransferPrepared","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"_NEW_OWNER_","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"_OWNER_","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"claimOwnership","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"feeRateImpl","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getFeeRate","inputs":[{"type":"address","name":"trader","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"initOwner","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setFeeProxy","inputs":[{"type":"address","name":"_feeRateImpl","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]}]
Contract Creation Code
0x608060405234801561001057600080fd5b506104df806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80634e71e0c81161005b5780634e71e0c8146100db5780638198edbf146100e35780638456db1514610103578063f2fde38b1461010b57610088565b80630d0092971461008d57806316048bc4146100a257806325be0be1146100c057806339b96500146100d3575b600080fd5b6100a061009b3660046103b8565b61011e565b005b6100aa610187565b6040516100b791906103fe565b60405180910390f35b6100a06100ce3660046103b8565b610196565b6100aa6101e2565b6100a06101f1565b6100f66100f13660046103b8565b61027f565b6040516100b791906104a0565b6100aa610324565b6100a06101193660046103b8565b610333565b600154600160a01b900460ff16156101515760405162461bcd60e51b815260040161014890610453565b60405180910390fd5b6001805460ff60a01b1916600160a01b179055600080546001600160a01b039092166001600160a01b0319909216919091179055565b6000546001600160a01b031681565b6000546001600160a01b031633146101c05760405162461bcd60e51b81526004016101489061047d565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b031681565b6001546001600160a01b0316331461021b5760405162461bcd60e51b81526004016101489061042c565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6002546000906001600160a01b031661029a5750600061031f565b60025460405163848cc30360e01b81526001600160a01b039091169063848cc303906102cc9033908690600401610412565b60206040518083038186803b1580156102e457600080fd5b505afa1580156102f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031c91906103e6565b90505b919050565b6001546001600160a01b031681565b6000546001600160a01b0316331461035d5760405162461bcd60e51b81526004016101489061047d565b600080546040516001600160a01b03808516939216917fdcf55418cee3220104fef63f979ff3c4097ad240c0c43dcb33ce837748983e6291a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000602082840312156103c9578081fd5b81356001600160a01b03811681146103df578182fd5b9392505050565b6000602082840312156103f7578081fd5b5051919050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6020808252600d908201526c494e56414c49445f434c41494d60981b604082015260600190565b60208082526010908201526f1113d113d7d25392551250531256915160821b604082015260600190565b6020808252600990820152682727aa2fa7aba722a960b91b604082015260600190565b9081526020019056fea26469706673582212202f3ff0cba6b346fc8560fb66b6485c561ceedd231428bf9fe29a33db982c91c464736f6c63430006090033
Deployed ByteCode
0x608060405234801561001057600080fd5b50600436106100885760003560e01c80634e71e0c81161005b5780634e71e0c8146100db5780638198edbf146100e35780638456db1514610103578063f2fde38b1461010b57610088565b80630d0092971461008d57806316048bc4146100a257806325be0be1146100c057806339b96500146100d3575b600080fd5b6100a061009b3660046103b8565b61011e565b005b6100aa610187565b6040516100b791906103fe565b60405180910390f35b6100a06100ce3660046103b8565b610196565b6100aa6101e2565b6100a06101f1565b6100f66100f13660046103b8565b61027f565b6040516100b791906104a0565b6100aa610324565b6100a06101193660046103b8565b610333565b600154600160a01b900460ff16156101515760405162461bcd60e51b815260040161014890610453565b60405180910390fd5b6001805460ff60a01b1916600160a01b179055600080546001600160a01b039092166001600160a01b0319909216919091179055565b6000546001600160a01b031681565b6000546001600160a01b031633146101c05760405162461bcd60e51b81526004016101489061047d565b600280546001600160a01b0319166001600160a01b0392909216919091179055565b6002546001600160a01b031681565b6001546001600160a01b0316331461021b5760405162461bcd60e51b81526004016101489061042c565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6002546000906001600160a01b031661029a5750600061031f565b60025460405163848cc30360e01b81526001600160a01b039091169063848cc303906102cc9033908690600401610412565b60206040518083038186803b1580156102e457600080fd5b505afa1580156102f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031c91906103e6565b90505b919050565b6001546001600160a01b031681565b6000546001600160a01b0316331461035d5760405162461bcd60e51b81526004016101489061047d565b600080546040516001600160a01b03808516939216917fdcf55418cee3220104fef63f979ff3c4097ad240c0c43dcb33ce837748983e6291a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000602082840312156103c9578081fd5b81356001600160a01b03811681146103df578182fd5b9392505050565b6000602082840312156103f7578081fd5b5051919050565b6001600160a01b0391909116815260200190565b6001600160a01b0392831681529116602082015260400190565b6020808252600d908201526c494e56414c49445f434c41494d60981b604082015260600190565b60208082526010908201526f1113d113d7d25392551250531256915160821b604082015260600190565b6020808252600990820152682727aa2fa7aba722a960b91b604082015260600190565b9081526020019056fea26469706673582212202f3ff0cba6b346fc8560fb66b6485c561ceedd231428bf9fe29a33db982c91c464736f6c63430006090033