Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0.011555468961683102 ETH
Eth Value
$39.29 (@ $3,400.15/ETH)More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 9,504 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Governance | 12919064 | 1249 days ago | IN | 0 ETH | 0.00059045 | ||||
Redeem | 12908754 | 1250 days ago | IN | 0.01 ETH | 0.00836128 | ||||
Redeem | 12889505 | 1253 days ago | IN | 0.01 ETH | 0.00273349 | ||||
Redeem | 12864446 | 1257 days ago | IN | 0.01 ETH | 0.00608527 | ||||
Redeem | 12855153 | 1259 days ago | IN | 0.01 ETH | 0.00257588 | ||||
Redeem | 12847260 | 1260 days ago | IN | 0.01 ETH | 0.00275161 | ||||
Redeem | 12829453 | 1263 days ago | IN | 0.01 ETH | 0.00315515 | ||||
Redeem | 12829000 | 1263 days ago | IN | 0.01 ETH | 0.00521813 | ||||
Redeem | 12828893 | 1263 days ago | IN | 0.01 ETH | 0.00449002 | ||||
Redeem | 12828875 | 1263 days ago | IN | 0.01 ETH | 0.00436867 | ||||
Redeem | 12822929 | 1264 days ago | IN | 0.01 ETH | 0.00724347 | ||||
Redeem | 12821456 | 1264 days ago | IN | 0.01 ETH | 0.0032492 | ||||
Redeem | 12804668 | 1267 days ago | IN | 0.01 ETH | 0.00209114 | ||||
Redeem | 12800915 | 1267 days ago | IN | 0.01 ETH | 0.00138266 | ||||
Redeem | 12787547 | 1269 days ago | IN | 0.01 ETH | 0.0059835 | ||||
Resume | 12784169 | 1270 days ago | IN | 0 ETH | 0.00089196 | ||||
Transfer | 12784136 | 1270 days ago | IN | 1.69248052 ETH | 0.00073692 | ||||
Migrate To | 12784125 | 1270 days ago | IN | 0 ETH | 0.0023536 | ||||
Pause | 12784112 | 1270 days ago | IN | 0 ETH | 0.00136863 | ||||
Redeem | 12770626 | 1272 days ago | IN | 0.01 ETH | 0.00257545 | ||||
Redeem | 12769783 | 1272 days ago | IN | 0.01 ETH | 0.00225352 | ||||
Redeem | 12765120 | 1273 days ago | IN | 0.01 ETH | 0.00193028 | ||||
Redeem | 12762135 | 1273 days ago | IN | 0.01 ETH | 0.00210306 | ||||
Redeem | 12762125 | 1273 days ago | IN | 0.01 ETH | 0.00244144 | ||||
Redeem | 12762124 | 1273 days ago | IN | 0.01 ETH | 0.00273271 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
13196279 | 1206 days ago | 0.00006402 ETH | ||||
13195172 | 1206 days ago | 0.00140057 ETH | ||||
13137150 | 1215 days ago | 0.00872791 ETH | ||||
13137135 | 1215 days ago | 0.00871882 ETH | ||||
13137117 | 1215 days ago | 0.01166502 ETH | ||||
13137091 | 1215 days ago | 0.01166615 ETH | ||||
12942237 | 1245 days ago | 0.00282755 ETH | ||||
12919548 | 1249 days ago | 0.95639182 ETH | ||||
12918426 | 1249 days ago | 0.00026116 ETH | ||||
12917778 | 1249 days ago | 0.04801229 ETH | ||||
12915919 | 1249 days ago | 0.0731194 ETH | ||||
12915917 | 1249 days ago | 0.0987679 ETH | ||||
12915720 | 1249 days ago | 0.02095998 ETH | ||||
12915719 | 1249 days ago | 0.000002 ETH | ||||
12915718 | 1249 days ago | 0.02101407 ETH | ||||
12915716 | 1249 days ago | 0.2 ETH | ||||
12915152 | 1249 days ago | 0.00200823 ETH | ||||
12914742 | 1249 days ago | 0.09873437 ETH | ||||
12914739 | 1249 days ago | 0.09881666 ETH | ||||
12914514 | 1249 days ago | 0.0998 ETH | ||||
12914514 | 1249 days ago | 0.0998 ETH | ||||
12909386 | 1250 days ago | 0.00154182 ETH | ||||
12908864 | 1250 days ago | 0.0996 ETH | ||||
12908802 | 1250 days ago | 0.00541607 ETH | ||||
12908754 | 1250 days ago | 3.92429433 ETH |
Loading...
Loading
Contract Name:
CoFiXV2DAO
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-06-12 */ // File: contracts/interface/ICoFiXV2DAO.sol // SPDX-License-Identifier: GPL-3.0-or-later pragma solidity 0.6.12; interface ICoFiXV2DAO { function setGovernance(address gov) external; function start() external; // function addETHReward() external payable; event FlagSet(address gov, uint256 flag); event CoFiBurn(address gov, uint256 amount); } // File: contracts/interface/ICoFiXV2Controller.sol pragma solidity 0.6.12; interface ICoFiXV2Controller { event NewK(address token, uint256 K, uint256 sigma, uint256 T, uint256 ethAmount, uint256 erc20Amount, uint256 blockNum); event NewGovernance(address _new); event NewOracle(address _priceOracle); event NewKTable(address _kTable); event NewTimespan(uint256 _timeSpan); event NewKRefreshInterval(uint256 _interval); event NewKLimit(int128 maxK0); event NewGamma(int128 _gamma); event NewTheta(address token, uint32 theta); event NewK(address token, uint32 k); event NewCGamma(address token, uint32 gamma); function addCaller(address caller) external; function setCGamma(address token, uint32 gamma) external; function queryOracle(address token, uint8 op, bytes memory data) external payable returns (uint256 k, uint256 ethAmount, uint256 erc20Amount, uint256 blockNum, uint256 theta); function getKInfo(address token) external view returns (uint32 k, uint32 updatedAt, uint32 theta); function getLatestPriceAndAvgVola(address token) external payable returns (uint256, uint256, uint256, uint256); } // File: contracts/interface/ICoFiXV2Factory.sol pragma solidity 0.6.12; interface ICoFiXV2Factory { // All pairs: {ETH <-> ERC20 Token} event PairCreated(address indexed token, address pair, uint256); event NewGovernance(address _new); event NewController(address _new); event NewFeeReceiver(address _new); event NewFeeVaultForLP(address token, address feeVault); event NewVaultForLP(address _new); event NewVaultForTrader(address _new); event NewVaultForCNode(address _new); event NewDAO(address _new); /// @dev Create a new token pair for trading /// @param token the address of token to trade /// @param initToken0Amount the initial asset ratio (initToken0Amount:initToken1Amount) /// @param initToken1Amount the initial asset ratio (initToken0Amount:initToken1Amount) /// @return pair the address of new token pair function createPair( address token, uint256 initToken0Amount, uint256 initToken1Amount ) external returns (address pair); function getPair(address token) external view returns (address pair); function allPairs(uint256) external view returns (address pair); function allPairsLength() external view returns (uint256); function getTradeMiningStatus(address token) external view returns (bool status); function setTradeMiningStatus(address token, bool status) external; function getFeeVaultForLP(address token) external view returns (address feeVault); // for LPs function setFeeVaultForLP(address token, address feeVault) external; function setGovernance(address _new) external; function setController(address _new) external; function setFeeReceiver(address _new) external; function setVaultForLP(address _new) external; function setVaultForTrader(address _new) external; function setVaultForCNode(address _new) external; function setDAO(address _new) external; function getController() external view returns (address controller); function getFeeReceiver() external view returns (address feeReceiver); // For CoFi Holders function getVaultForLP() external view returns (address vaultForLP); function getVaultForTrader() external view returns (address vaultForTrader); function getVaultForCNode() external view returns (address vaultForCNode); function getDAO() external view returns (address dao); } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol pragma solidity >=0.6.0 <0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } // File: contracts/interface/ICoFiToken.sol pragma solidity 0.6.12; interface ICoFiToken is IERC20 { /// @dev An event thats emitted when a new governance account is set /// @param _new The new governance address event NewGovernance(address _new); /// @dev An event thats emitted when a new minter account is added /// @param _minter The new minter address added event MinterAdded(address _minter); /// @dev An event thats emitted when a minter account is removed /// @param _minter The minter address removed event MinterRemoved(address _minter); /// @dev Set governance address of CoFi token. Only governance has the right to execute. /// @param _new The new governance address function setGovernance(address _new) external; /// @dev Add a new minter account to CoFi token, who can mint tokens. Only governance has the right to execute. /// @param _minter The new minter address function addMinter(address _minter) external; /// @dev Remove a minter account from CoFi token, who can mint tokens. Only governance has the right to execute. /// @param _minter The minter address removed function removeMinter(address _minter) external; /// @dev mint is used to distribute CoFi token to users, minters are CoFi mining pools /// @param _to The receiver address /// @param _amount The amount of tokens minted function mint(address _to, uint256 _amount) external; } // File: @openzeppelin/contracts/utils/ReentrancyGuard.sol pragma solidity >=0.6.0 <0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor () internal { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } } // File: @openzeppelin/contracts/math/Math.sol pragma solidity >=0.6.0 <0.8.0; /** * @dev Standard math utilities missing in the Solidity language. */ library Math { /** * @dev Returns the largest of two numbers. */ function max(uint256 a, uint256 b) internal pure returns (uint256) { return a >= b ? a : b; } /** * @dev Returns the smallest of two numbers. */ function min(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } /** * @dev Returns the average of two numbers. The result is rounded towards * zero. */ function average(uint256 a, uint256 b) internal pure returns (uint256) { // (a + b) / 2 can overflow, so we distribute return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2); } } // File: contracts/lib/TransferHelper.sol pragma solidity 0.6.12; // helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false library TransferHelper { function safeApprove(address token, address to, uint value) internal { // bytes4(keccak256(bytes('approve(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED'); } function safeTransfer(address token, address to, uint value) internal { // bytes4(keccak256(bytes('transfer(address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED'); } function safeTransferFrom(address token, address from, address to, uint value) internal { // bytes4(keccak256(bytes('transferFrom(address,address,uint256)'))); (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED'); } function safeTransferETH(address to, uint value) internal { (bool success,) = to.call{value:value}(new bytes(0)); require(success, 'TransferHelper: ETH_TRANSFER_FAILED'); } } // File: @openzeppelin/contracts/math/SafeMath.sol pragma solidity >=0.6.0 <0.8.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b > a) return (false, 0); return (true, a - b); } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a / b); } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a % b); } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) return 0; uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: division by zero"); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "SafeMath: modulo by zero"); return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); return a - b; } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryDiv}. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); return a % b; } } // File: contracts/CoFiXV2DAO.sol pragma solidity 0.6.12; contract CoFiXV2DAO is ICoFiXV2DAO, ReentrancyGuard { using SafeMath for uint256; /* ========== STATE ============== */ uint8 public flag; uint32 public startedBlock; // uint32 public lastCollectingBlock; uint32 public lastBlock; uint128 public redeemedAmount; uint128 public quotaAmount; uint8 constant DAO_FLAG_UNINITIALIZED = 0; uint8 constant DAO_FLAG_INITIALIZED = 1; uint8 constant DAO_FLAG_ACTIVE = 2; uint8 constant DAO_FLAG_NO_STAKING = 3; uint8 constant DAO_FLAG_PAUSED = 4; uint8 constant DAO_FLAG_SHUTDOWN = 127; /* ========== PARAMETERS ============== */ uint256 constant DAO_REPURCHASE_PRICE_DEVIATION = 10; // price deviation < 5% uint256 constant _oracleFee = 0.01 ether; /* ========== ADDRESSES ============== */ address public cofiToken; address public factory; address public governance; /* ========== CONSTRUCTOR ========== */ receive() external payable { } constructor(address _cofiToken, address _factory) public { cofiToken = _cofiToken; factory = _factory; governance = msg.sender; flag = DAO_FLAG_INITIALIZED; } /* ========== MODIFIERS ========== */ modifier onlyGovernance() { require(msg.sender == governance, "CDAO: not governance"); _; } modifier whenActive() { require(flag == DAO_FLAG_ACTIVE, "CDAO: not active"); _; } /* ========== GOVERNANCE ========== */ function setGovernance(address _new) external override onlyGovernance { governance = _new; } function start() override external onlyGovernance { require(flag == DAO_FLAG_INITIALIZED, "CDAO: not initialized"); startedBlock = uint32(block.number); flag = DAO_FLAG_ACTIVE; emit FlagSet(address(msg.sender), uint256(DAO_FLAG_ACTIVE)); } function pause() external onlyGovernance { flag = DAO_FLAG_PAUSED; emit FlagSet(address(msg.sender), uint256(DAO_FLAG_PAUSED)); } function resume() external onlyGovernance { flag = DAO_FLAG_ACTIVE; emit FlagSet(address(msg.sender), uint256(DAO_FLAG_ACTIVE)); } function totalETHRewards() external view returns (uint256) { return address(this).balance; } function migrateTo(address _newDAO) external onlyGovernance { require(flag == DAO_FLAG_PAUSED, "CDAO: not paused"); if(address(this).balance > 0) { TransferHelper.safeTransferETH(_newDAO, address(this).balance); } // ICoFiXV2DAO(_newDAO).addETHReward{value: address(this).balance}(); uint256 _cofiTokenAmount = ICoFiToken(cofiToken).balanceOf(address(this)); if (_cofiTokenAmount > 0) { ICoFiToken(cofiToken).transfer(_newDAO, _cofiTokenAmount); } } function burnCofi(uint256 amount) external onlyGovernance { require(amount > 0, "CDAO: illegal amount"); uint256 _cofiTokenAmount = ICoFiToken(cofiToken).balanceOf(address(this)); require(_cofiTokenAmount >= amount, "CDAO: insufficient cofi"); ICoFiToken(cofiToken).transfer(address(0x1), amount); emit CoFiBurn(address(msg.sender), amount); } /* ========== MAIN ========== */ // function addETHReward() // override // external // payable // { } function redeem(uint256 amount) external payable nonReentrant whenActive { require(address(this).balance > 0, "CDAO: insufficient balance"); require (msg.value == _oracleFee, "CDAO: !oracleFee"); // check the repurchasing quota uint256 quota = quotaOf(); uint256 price; { // check if the price is steady (uint256 ethAmount, uint256 tokenAmount, uint256 avg, ) = ICoFiXV2Controller(ICoFiXV2Factory(factory).getController()) .getLatestPriceAndAvgVola{value: msg.value}(cofiToken); price = tokenAmount.mul(1e18).div(ethAmount); uint256 diff = price > avg ? (price - avg) : (avg - price); bool isDeviated = (diff.mul(100) < avg.mul(DAO_REPURCHASE_PRICE_DEVIATION))? false : true; require(isDeviated == false, "CDAO: price deviation"); // validate } // check if there is sufficient quota for repurchase require (amount <= quota, "CDAO: insufficient quota"); require (amount.mul(1e18) <= address(this).balance.mul(price), "CDAO: insufficient balance2"); redeemedAmount = uint128(amount.add(redeemedAmount)); quotaAmount = uint128(quota.sub(amount)); lastBlock = uint32(block.number); uint256 amountEthOut = amount.mul(1e18).div(price); // transactions ICoFiToken(cofiToken).transferFrom(address(msg.sender), address(this), amount); TransferHelper.safeTransferETH(msg.sender, amountEthOut); } function _quota() internal view returns (uint256 quota) { uint256 n = 100; uint256 intv = (lastBlock == 0) ? (block.number).sub(startedBlock) : (block.number).sub(uint256(lastBlock)); uint256 _acc = (n * intv > 30_000) ? 30_000 : (n * intv); // check if total amounts overflow uint256 total = _acc.mul(1e18).add(quotaAmount); if (total > uint256(30_000).mul(1e18)){ quota = uint256(30_000).mul(1e18); } else{ quota = total; } } /* ========== VIEWS ========== */ function quotaOf() public view returns (uint256 quota) { return _quota(); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_cofiToken","type":"address"},{"internalType":"address","name":"_factory","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"gov","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"CoFiBurn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"gov","type":"address"},{"indexed":false,"internalType":"uint256","name":"flag","type":"uint256"}],"name":"FlagSet","type":"event"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnCofi","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cofiToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"flag","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastBlock","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newDAO","type":"address"}],"name":"migrateTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"quotaAmount","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"quotaOf","outputs":[{"internalType":"uint256","name":"quota","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"redeem","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"redeemedAmount","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"resume","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_new","type":"address"}],"name":"setGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"start","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startedBlock","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalETHRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b506040516117b53803806117b58339818101604052604081101561003357600080fd5b50805160209091015160016000819055600380546001600160a01b039485166001600160a01b031991821617909155600480549490931693811693909317909155600580549092163317909155805460ff19168117905561171c806100996000396000f3fe6080604052600436106101125760003560e01c8063806b984f116100a5578063ab033ea911610074578063be9a655511610059578063be9a655514610340578063c45a015514610355578063db006a751461036a57610119565b8063ab033ea9146102eb578063bc472e291461032b57610119565b8063806b984f146102815780638456cb5914610296578063890eba68146102ab578063a7731842146102d657610119565b80634ddaf8f2116100e15780634ddaf8f2146101c05780635aa6e675146102005780635d941dd51461023e5780636d6577a41461025357610119565b8063046f7da21461011e5780631a57dffb146101355780631dec47fe1461015f5780633f83e9c81461019957610119565b3661011957005b600080fd5b34801561012a57600080fd5b50610133610387565b005b34801561014157600080fd5b506101336004803603602081101561015857600080fd5b503561045e565b34801561016b57600080fd5b506101746106f9565b604080516fffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101a557600080fd5b506101ae610711565b60408051918252519081900360200190f35b3480156101cc57600080fd5b50610133600480360360208110156101e357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610720565b34801561020c57600080fd5b50610215610948565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561024a57600080fd5b50610215610964565b34801561025f57600080fd5b50610268610980565b6040805163ffffffff9092168252519081900360200190f35b34801561028d57600080fd5b50610268610991565b3480156102a257600080fd5b506101336109a6565b3480156102b757600080fd5b506102c0610a7d565b6040805160ff9092168252519081900360200190f35b3480156102e257600080fd5b50610174610a86565b3480156102f757600080fd5b506101336004803603602081101561030e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610aab565b34801561033757600080fd5b506101ae610b5e565b34801561034c57600080fd5b50610133610b62565b34801561036157600080fd5b50610215610cc1565b6101336004803603602081101561038057600080fd5b5035610cdd565b60055473ffffffffffffffffffffffffffffffffffffffff1633146103f3576040805162461bcd60e51b815260206004820152601460248201527f4344414f3a206e6f7420676f7665726e616e6365000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600290811790915560408051338152602081019290925280517f5f136d3b405931da808102d65c5c331d1bfcbd4e7127777914d480cd106ca5ae9281900390910190a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146104ca576040805162461bcd60e51b815260206004820152601460248201527f4344414f3a206e6f7420676f7665726e616e6365000000000000000000000000604482015290519081900360640190fd5b6000811161051f576040805162461bcd60e51b815260206004820152601460248201527f4344414f3a20696c6c6567616c20616d6f756e74000000000000000000000000604482015290519081900360640190fd5b600354604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b15801561059057600080fd5b505afa1580156105a4573d6000803e3d6000fd5b505050506040513d60208110156105ba57600080fd5b5051905081811015610613576040805162461bcd60e51b815260206004820152601760248201527f4344414f3a20696e73756666696369656e7420636f6669000000000000000000604482015290519081900360640190fd5b600354604080517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600482015260248101859052905173ffffffffffffffffffffffffffffffffffffffff9092169163a9059cbb916044808201926020929091908290030181600087803b15801561068e57600080fd5b505af11580156106a2573d6000803e3d6000fd5b505050506040513d60208110156106b857600080fd5b5050604080513381526020810184905281517f6726e414a967f4e11d89271b4501038b28c3bf4ff8e3d8c1ccba8bbe517fbc8e929181900390910190a15050565b6002546fffffffffffffffffffffffffffffffff1681565b600061071b611308565b905090565b60055473ffffffffffffffffffffffffffffffffffffffff16331461078c576040805162461bcd60e51b815260206004820152601460248201527f4344414f3a206e6f7420676f7665726e616e6365000000000000000000000000604482015290519081900360640190fd5b60015460ff166004146107e6576040805162461bcd60e51b815260206004820152601060248201527f4344414f3a206e6f742070617573656400000000000000000000000000000000604482015290519081900360640190fd5b47156107f6576107f681476113ff565b600354604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b15801561086757600080fd5b505afa15801561087b573d6000803e3d6000fd5b505050506040513d602081101561089157600080fd5b50519050801561094457600354604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561091757600080fd5b505af115801561092b573d6000803e3d6000fd5b505050506040513d602081101561094157600080fd5b50505b5050565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b600154610100900463ffffffff1681565b60015465010000000000900463ffffffff1681565b60055473ffffffffffffffffffffffffffffffffffffffff163314610a12576040805162461bcd60e51b815260206004820152601460248201527f4344414f3a206e6f7420676f7665726e616e6365000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600490811790915560408051338152602081019290925280517f5f136d3b405931da808102d65c5c331d1bfcbd4e7127777914d480cd106ca5ae9281900390910190a1565b60015460ff1681565b600154690100000000000000000090046fffffffffffffffffffffffffffffffff1681565b60055473ffffffffffffffffffffffffffffffffffffffff163314610b17576040805162461bcd60e51b815260206004820152601460248201527f4344414f3a206e6f7420676f7665726e616e6365000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b4790565b60055473ffffffffffffffffffffffffffffffffffffffff163314610bce576040805162461bcd60e51b815260206004820152601460248201527f4344414f3a206e6f7420676f7665726e616e6365000000000000000000000000604482015290519081900360640190fd5b6001805460ff1614610c27576040805162461bcd60e51b815260206004820152601560248201527f4344414f3a206e6f7420696e697469616c697a65640000000000000000000000604482015290519081900360640190fd5b6001805460027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff9091166101004363ffffffff1602177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790915560408051338152602081019290925280517f5f136d3b405931da808102d65c5c331d1bfcbd4e7127777914d480cd106ca5ae9281900390910190a1565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b60026000541415610d35576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600081905560015460ff1614610d94576040805162461bcd60e51b815260206004820152601060248201527f4344414f3a206e6f742061637469766500000000000000000000000000000000604482015290519081900360640190fd5b60004711610de9576040805162461bcd60e51b815260206004820152601a60248201527f4344414f3a20696e73756666696369656e742062616c616e6365000000000000604482015290519081900360640190fd5b662386f26fc100003414610e44576040805162461bcd60e51b815260206004820152601060248201527f4344414f3a20216f7261636c6546656500000000000000000000000000000000604482015290519081900360640190fd5b6000610e4e610711565b9050600080600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633018205f6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ebe57600080fd5b505afa158015610ed2573d6000803e3d6000fd5b505050506040513d6020811015610ee857600080fd5b5051600354604080517fb859b41500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529051919092169163b859b41591349160248082019260809290919082900301818588803b158015610f6157600080fd5b505af1158015610f75573d6000803e3d6000fd5b50505050506040513d6080811015610f8c57600080fd5b50805160208201516040909201519094509092509050610fbe83610fb884670de0b6b3a7640000611522565b90611584565b93506000818511610fd157848203610fd5565b8185035b90506000610fe483600a611522565b610fef836064611522565b10610ffb576001610ffe565b60005b90508015611053576040805162461bcd60e51b815260206004820152601560248201527f4344414f3a20707269636520646576696174696f6e0000000000000000000000604482015290519081900360640190fd5b5050505050818311156110ad576040805162461bcd60e51b815260206004820152601860248201527f4344414f3a20696e73756666696369656e742071756f74610000000000000000604482015290519081900360640190fd5b6110b74782611522565b6110c984670de0b6b3a7640000611522565b111561111c576040805162461bcd60e51b815260206004820152601b60248201527f4344414f3a20696e73756666696369656e742062616c616e6365320000000000604482015290519081900360640190fd5b600154611149908490690100000000000000000090046fffffffffffffffffffffffffffffffff166115eb565b600180546fffffffffffffffffffffffffffffffff929092166901000000000000000000027fffffffffffffff00000000000000000000000000000000ffffffffffffffffff9092169190911790556111a28284611645565b600280546fffffffffffffffffffffffffffffffff929092167fffffffffffffffffffffffffffffffff000000000000000000000000000000009092169190911790556001805463ffffffff43811665010000000000027fffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffff90921691909117909155600090611243908390610fb8908790670de0b6b3a76400009061152216565b600354604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101889052905192935073ffffffffffffffffffffffffffffffffffffffff909116916323b872dd916064808201926020929091908290030181600087803b1580156112c657600080fd5b505af11580156112da573d6000803e3d6000fd5b505050506040513d60208110156112f057600080fd5b506112fd905033826113ff565b505060016000555050565b600154600090606490829065010000000000900463ffffffff161561134d5760015461134890439063ffffffff6501000000000090910481169061164516565b61136a565b60015461136a90439063ffffffff61010090910481169061164516565b905060006175308284021161138157818302611385565b6175305b6002549091506000906113bc906fffffffffffffffffffffffffffffffff166113b684670de0b6b3a7640000611522565b906115eb565b90506113d2617530670de0b6b3a7640000611522565b8111156113f4576113ed617530670de0b6b3a7640000611522565b94506113f8565b8094505b5050505090565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b6020831061147657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611439565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146114d8576040519150601f19603f3d011682016040523d82523d6000602084013e6114dd565b606091505b505090508061151d5760405162461bcd60e51b81526004018080602001828103825260238152602001806116c46023913960400191505060405180910390fd5b505050565b6000826115315750600061157e565b8282028284828161153e57fe5b041461157b5760405162461bcd60e51b81526004018080602001828103825260218152602001806116a36021913960400191505060405180910390fd5b90505b92915050565b60008082116115da576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816115e357fe5b049392505050565b60008282018381101561157b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008282111561169c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775472616e7366657248656c7065723a204554485f5452414e534645525f4641494c4544a26469706673582212203bc09006ee83e3e52f44a6a67ff9da36990c6ec777d2865ad36ff6669b3a765564736f6c634300060c00330000000000000000000000001a23a6bfbadb59fa563008c0fb7cf96dfcf34ea100000000000000000000000039816b841436a57729723d9da127805755d2cb51
Deployed Bytecode
0x6080604052600436106101125760003560e01c8063806b984f116100a5578063ab033ea911610074578063be9a655511610059578063be9a655514610340578063c45a015514610355578063db006a751461036a57610119565b8063ab033ea9146102eb578063bc472e291461032b57610119565b8063806b984f146102815780638456cb5914610296578063890eba68146102ab578063a7731842146102d657610119565b80634ddaf8f2116100e15780634ddaf8f2146101c05780635aa6e675146102005780635d941dd51461023e5780636d6577a41461025357610119565b8063046f7da21461011e5780631a57dffb146101355780631dec47fe1461015f5780633f83e9c81461019957610119565b3661011957005b600080fd5b34801561012a57600080fd5b50610133610387565b005b34801561014157600080fd5b506101336004803603602081101561015857600080fd5b503561045e565b34801561016b57600080fd5b506101746106f9565b604080516fffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101a557600080fd5b506101ae610711565b60408051918252519081900360200190f35b3480156101cc57600080fd5b50610133600480360360208110156101e357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610720565b34801561020c57600080fd5b50610215610948565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561024a57600080fd5b50610215610964565b34801561025f57600080fd5b50610268610980565b6040805163ffffffff9092168252519081900360200190f35b34801561028d57600080fd5b50610268610991565b3480156102a257600080fd5b506101336109a6565b3480156102b757600080fd5b506102c0610a7d565b6040805160ff9092168252519081900360200190f35b3480156102e257600080fd5b50610174610a86565b3480156102f757600080fd5b506101336004803603602081101561030e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610aab565b34801561033757600080fd5b506101ae610b5e565b34801561034c57600080fd5b50610133610b62565b34801561036157600080fd5b50610215610cc1565b6101336004803603602081101561038057600080fd5b5035610cdd565b60055473ffffffffffffffffffffffffffffffffffffffff1633146103f3576040805162461bcd60e51b815260206004820152601460248201527f4344414f3a206e6f7420676f7665726e616e6365000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600290811790915560408051338152602081019290925280517f5f136d3b405931da808102d65c5c331d1bfcbd4e7127777914d480cd106ca5ae9281900390910190a1565b60055473ffffffffffffffffffffffffffffffffffffffff1633146104ca576040805162461bcd60e51b815260206004820152601460248201527f4344414f3a206e6f7420676f7665726e616e6365000000000000000000000000604482015290519081900360640190fd5b6000811161051f576040805162461bcd60e51b815260206004820152601460248201527f4344414f3a20696c6c6567616c20616d6f756e74000000000000000000000000604482015290519081900360640190fd5b600354604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b15801561059057600080fd5b505afa1580156105a4573d6000803e3d6000fd5b505050506040513d60208110156105ba57600080fd5b5051905081811015610613576040805162461bcd60e51b815260206004820152601760248201527f4344414f3a20696e73756666696369656e7420636f6669000000000000000000604482015290519081900360640190fd5b600354604080517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600482015260248101859052905173ffffffffffffffffffffffffffffffffffffffff9092169163a9059cbb916044808201926020929091908290030181600087803b15801561068e57600080fd5b505af11580156106a2573d6000803e3d6000fd5b505050506040513d60208110156106b857600080fd5b5050604080513381526020810184905281517f6726e414a967f4e11d89271b4501038b28c3bf4ff8e3d8c1ccba8bbe517fbc8e929181900390910190a15050565b6002546fffffffffffffffffffffffffffffffff1681565b600061071b611308565b905090565b60055473ffffffffffffffffffffffffffffffffffffffff16331461078c576040805162461bcd60e51b815260206004820152601460248201527f4344414f3a206e6f7420676f7665726e616e6365000000000000000000000000604482015290519081900360640190fd5b60015460ff166004146107e6576040805162461bcd60e51b815260206004820152601060248201527f4344414f3a206e6f742070617573656400000000000000000000000000000000604482015290519081900360640190fd5b47156107f6576107f681476113ff565b600354604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b15801561086757600080fd5b505afa15801561087b573d6000803e3d6000fd5b505050506040513d602081101561089157600080fd5b50519050801561094457600354604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b15801561091757600080fd5b505af115801561092b573d6000803e3d6000fd5b505050506040513d602081101561094157600080fd5b50505b5050565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b600154610100900463ffffffff1681565b60015465010000000000900463ffffffff1681565b60055473ffffffffffffffffffffffffffffffffffffffff163314610a12576040805162461bcd60e51b815260206004820152601460248201527f4344414f3a206e6f7420676f7665726e616e6365000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600490811790915560408051338152602081019290925280517f5f136d3b405931da808102d65c5c331d1bfcbd4e7127777914d480cd106ca5ae9281900390910190a1565b60015460ff1681565b600154690100000000000000000090046fffffffffffffffffffffffffffffffff1681565b60055473ffffffffffffffffffffffffffffffffffffffff163314610b17576040805162461bcd60e51b815260206004820152601460248201527f4344414f3a206e6f7420676f7665726e616e6365000000000000000000000000604482015290519081900360640190fd5b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b4790565b60055473ffffffffffffffffffffffffffffffffffffffff163314610bce576040805162461bcd60e51b815260206004820152601460248201527f4344414f3a206e6f7420676f7665726e616e6365000000000000000000000000604482015290519081900360640190fd5b6001805460ff1614610c27576040805162461bcd60e51b815260206004820152601560248201527f4344414f3a206e6f7420696e697469616c697a65640000000000000000000000604482015290519081900360640190fd5b6001805460027fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000ff9091166101004363ffffffff1602177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790915560408051338152602081019290925280517f5f136d3b405931da808102d65c5c331d1bfcbd4e7127777914d480cd106ca5ae9281900390910190a1565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b60026000541415610d35576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600081905560015460ff1614610d94576040805162461bcd60e51b815260206004820152601060248201527f4344414f3a206e6f742061637469766500000000000000000000000000000000604482015290519081900360640190fd5b60004711610de9576040805162461bcd60e51b815260206004820152601a60248201527f4344414f3a20696e73756666696369656e742062616c616e6365000000000000604482015290519081900360640190fd5b662386f26fc100003414610e44576040805162461bcd60e51b815260206004820152601060248201527f4344414f3a20216f7261636c6546656500000000000000000000000000000000604482015290519081900360640190fd5b6000610e4e610711565b9050600080600080600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633018205f6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ebe57600080fd5b505afa158015610ed2573d6000803e3d6000fd5b505050506040513d6020811015610ee857600080fd5b5051600354604080517fb859b41500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529051919092169163b859b41591349160248082019260809290919082900301818588803b158015610f6157600080fd5b505af1158015610f75573d6000803e3d6000fd5b50505050506040513d6080811015610f8c57600080fd5b50805160208201516040909201519094509092509050610fbe83610fb884670de0b6b3a7640000611522565b90611584565b93506000818511610fd157848203610fd5565b8185035b90506000610fe483600a611522565b610fef836064611522565b10610ffb576001610ffe565b60005b90508015611053576040805162461bcd60e51b815260206004820152601560248201527f4344414f3a20707269636520646576696174696f6e0000000000000000000000604482015290519081900360640190fd5b5050505050818311156110ad576040805162461bcd60e51b815260206004820152601860248201527f4344414f3a20696e73756666696369656e742071756f74610000000000000000604482015290519081900360640190fd5b6110b74782611522565b6110c984670de0b6b3a7640000611522565b111561111c576040805162461bcd60e51b815260206004820152601b60248201527f4344414f3a20696e73756666696369656e742062616c616e6365320000000000604482015290519081900360640190fd5b600154611149908490690100000000000000000090046fffffffffffffffffffffffffffffffff166115eb565b600180546fffffffffffffffffffffffffffffffff929092166901000000000000000000027fffffffffffffff00000000000000000000000000000000ffffffffffffffffff9092169190911790556111a28284611645565b600280546fffffffffffffffffffffffffffffffff929092167fffffffffffffffffffffffffffffffff000000000000000000000000000000009092169190911790556001805463ffffffff43811665010000000000027fffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffff90921691909117909155600090611243908390610fb8908790670de0b6b3a76400009061152216565b600354604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101889052905192935073ffffffffffffffffffffffffffffffffffffffff909116916323b872dd916064808201926020929091908290030181600087803b1580156112c657600080fd5b505af11580156112da573d6000803e3d6000fd5b505050506040513d60208110156112f057600080fd5b506112fd905033826113ff565b505060016000555050565b600154600090606490829065010000000000900463ffffffff161561134d5760015461134890439063ffffffff6501000000000090910481169061164516565b61136a565b60015461136a90439063ffffffff61010090910481169061164516565b905060006175308284021161138157818302611385565b6175305b6002549091506000906113bc906fffffffffffffffffffffffffffffffff166113b684670de0b6b3a7640000611522565b906115eb565b90506113d2617530670de0b6b3a7640000611522565b8111156113f4576113ed617530670de0b6b3a7640000611522565b94506113f8565b8094505b5050505090565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b6020831061147657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611439565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146114d8576040519150601f19603f3d011682016040523d82523d6000602084013e6114dd565b606091505b505090508061151d5760405162461bcd60e51b81526004018080602001828103825260238152602001806116c46023913960400191505060405180910390fd5b505050565b6000826115315750600061157e565b8282028284828161153e57fe5b041461157b5760405162461bcd60e51b81526004018080602001828103825260218152602001806116a36021913960400191505060405180910390fd5b90505b92915050565b60008082116115da576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816115e357fe5b049392505050565b60008282018381101561157b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008282111561169c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775472616e7366657248656c7065723a204554485f5452414e534645525f4641494c4544a26469706673582212203bc09006ee83e3e52f44a6a67ff9da36990c6ec777d2865ad36ff6669b3a765564736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000001a23a6bfbadb59fa563008c0fb7cf96dfcf34ea100000000000000000000000039816b841436a57729723d9da127805755d2cb51
-----Decoded View---------------
Arg [0] : _cofiToken (address): 0x1a23a6BfBAdB59fa563008c0fB7cf96dfCF34Ea1
Arg [1] : _factory (address): 0x39816B841436a57729723d9DA127805755d2CB51
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000001a23a6bfbadb59fa563008c0fb7cf96dfcf34ea1
Arg [1] : 00000000000000000000000039816b841436a57729723d9da127805755d2cb51
Deployed Bytecode Sourcemap
21018:5899:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23219:158;;;;;;;;;;;;;:::i;:::-;;24081:399;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24081:399:0;;:::i;21330:26::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26817:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;23513:560;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23513:560:0;;;;:::i;21974:25::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21910:24;;;;;;;;;;;;;:::i;21186:27::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21264:23;;;;;;;;;;;;;:::i;23054:157::-;;;;;;;;;;;;;:::i;21159:17::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21294:29;;;;;;;;;;;;;:::i;22643:106::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22643:106:0;;;;:::i;23385:120::-;;;;;;;;;;;;;:::i;22757:289::-;;;;;;;;;;;;;:::i;21943:22::-;;;;;;;;;;;;;:::i;24637:1571::-;;;;;;;;;;;;;;;;-1:-1:-1;24637:1571:0;;:::i;23219:158::-;22415:10;;;;22401;:24;22393:57;;;;;-1:-1:-1;;;22393:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;23277:4:::1;:22:::0;;;::::1;21510:1;23277:22:::0;;::::1;::::0;;;23315:54:::1;::::0;;23331:10:::1;23315:54:::0;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;;;;;;;::::1;23219:158::o:0;24081:399::-;22415:10;;;;22401;:24;22393:57;;;;;-1:-1:-1;;;22393:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;24167:1:::1;24158:6;:10;24150:43;;;::::0;;-1:-1:-1;;;24150:43:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;24244:9;::::0;24233:46:::1;::::0;;;;;24273:4:::1;24233:46;::::0;::::1;::::0;;;24206:24:::1;::::0;24244:9:::1;;::::0;24233:31:::1;::::0;:46;;;;;::::1;::::0;;;;;;;;24244:9;24233:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;24233:46:0;;-1:-1:-1;24300:26:0;;::::1;;24292:62;;;::::0;;-1:-1:-1;;;24292:62:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;24378:9;::::0;24367:52:::1;::::0;;;;;24378:9;24367:52:::1;::::0;::::1;::::0;;;;;;;;;24378:9:::1;::::0;;::::1;::::0;24367:30:::1;::::0;:52;;;;;::::1;::::0;;;;;;;;;24378:9:::1;::::0;24367:52;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;24435:37:0::1;::::0;;24452:10:::1;24435:37:::0;;24367:52:::1;24435:37:::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;;::::1;22461:1;24081:399:::0;:::o;21330:26::-;;;;;;:::o;26817:95::-;26857:13;26896:8;:6;:8::i;:::-;26889:15;;26817:95;:::o;23513:560::-;22415:10;;;;22401;:24;22393:57;;;;;-1:-1:-1;;;22393:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;23597:4:::1;::::0;:23:::1;:4;21612:1;23597:23;23589:52;;;::::0;;-1:-1:-1;;;23589:52:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;23665:21;:25:::0;23662:119:::1;;23707:62;23738:7;23747:21;23707:30;:62::i;:::-;23910:9;::::0;23899:46:::1;::::0;;;;;23939:4:::1;23899:46;::::0;::::1;::::0;;;23872:24:::1;::::0;23910:9:::1;;::::0;23899:31:::1;::::0;:46;;;;;::::1;::::0;;;;;;;;23910:9;23899:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;23899:46:0;;-1:-1:-1;23960:20:0;;23956:110:::1;;24008:9;::::0;23997:57:::1;::::0;;;;;24008:9:::1;23997:57:::0;;::::1;;::::0;::::1;::::0;;;;;;;;;24008:9;;;::::1;::::0;23997:30:::1;::::0;:57;;;;;::::1;::::0;;;;;;;;24008:9:::1;::::0;23997:57;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;23956:110:0::1;22461:1;23513:560:::0;:::o;21974:25::-;;;;;;:::o;21910:24::-;;;;;;:::o;21186:27::-;;;;;;;;;:::o;21264:23::-;;;;;;;;;:::o;23054:157::-;22415:10;;;;22401;:24;22393:57;;;;;-1:-1:-1;;;22393:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;23111:4:::1;:22:::0;;;::::1;21612:1;23111:22:::0;;::::1;::::0;;;23149:54:::1;::::0;;23165:10:::1;23149:54:::0;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;;;;;;;::::1;23054:157::o:0;21159:17::-;;;;;;:::o;21294:29::-;;;;;;;;;:::o;22643:106::-;22415:10;;;;22401;:24;22393:57;;;;;-1:-1:-1;;;22393:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;22724:10:::1;:17:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;22643:106::o;23385:120::-;23476:21;23385:120;:::o;22757:289::-;22415:10;;;;22401;:24;22393:57;;;;;-1:-1:-1;;;22393:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;21459:1:::1;22833:4:::0;;:28:::1;:4;:28;22825:62;;;::::0;;-1:-1:-1;;;22825:62:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;22900:12;:35:::0;;21510:1:::1;22900:35:::0;;;::::1;;22922:12;22900:35;;;;22946:22:::0;::::1;::::0;::::1;::::0;;;22984:54:::1;::::0;;23000:10:::1;22984:54:::0;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;;;;;;;::::1;22757:289::o:0;21943:22::-;;;;;;:::o;24637:1571::-;10121:1;10727:7;;:19;;10719:63;;;;;-1:-1:-1;;;10719:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10121:1;10860:7;:18;;;22525:4:::1;::::0;:23:::1;:4;:23;22517:52;;;::::0;;-1:-1:-1;;;22517:52:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;24768:1:::2;24744:21;:25;24736:64;;;::::0;;-1:-1:-1;;;24736:64:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;21840:10;24820:9;:23;24811:53;;;::::0;;-1:-1:-1;;;24811:53:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;24918:13;24934:9;:7;:9::i;:::-;24918:25;;24956:13;25041:17:::0;25060:19:::2;25081:11:::0;25133:7:::2;;;;;;;;;;;25117:38;;;:40;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;25117:40:0;25224:9:::2;::::0;25098:136:::2;::::0;;;;;:107:::2;25224:9:::0;;::::2;25098:136;::::0;::::2;::::0;;;:107;;;::::2;::::0;::::2;::::0;25213:9:::2;::::0;25098:136;;;;;::::2;::::0;;;;;;;;;25213:9;25098:107;:136;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;25098:136:0;;::::2;::::0;::::2;::::0;;;;;;;;-1:-1:-1;25098:136:0;;-1:-1:-1;25098:136:0;-1:-1:-1;25257:36:0::2;25098:136:::0;25257:21:::2;25098:136:::0;25273:4:::2;25257:15;:21::i;:::-;:25:::0;::::2;:36::i;:::-;25249:44;;25310:12;25333:3;25325:5;:11;:43;;25362:5;25356:3;:11;25325:43;;;25348:3;25340:5;:11;25325:43;25310:58:::0;-1:-1:-1;25383:15:0::2;25418:39;:3:::0;21775:2:::2;25418:7;:39::i;:::-;25402:13;:4:::0;25411:3:::2;25402:8;:13::i;:::-;:55;25401:71;;25468:4;25401:71;;;25460:5;25401:71;25383:89:::0;-1:-1:-1;25495:19:0;::::2;25487:53;;;::::0;;-1:-1:-1;;;25487:53:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;22580:1;;;;;25657:5;25647:6;:15;;25638:53;;;::::0;;-1:-1:-1;;;25638:53:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;25731:32;:21;25757:5:::0;25731:25:::2;:32::i;:::-;25711:16;:6:::0;25722:4:::2;25711:10;:16::i;:::-;:52;;25702:93;;;::::0;;-1:-1:-1;;;25702:93:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;25844:14;::::0;25833:26:::2;::::0;:6;;25844:14;;::::2;;;25833:10;:26::i;:::-;25808:14;:52:::0;;::::2;::::0;;;::::2;::::0;::::2;::::0;;;::::2;::::0;;;::::2;::::0;;25893:17:::2;:5:::0;25903:6;25893:9:::2;:17::i;:::-;25871:11;:40:::0;;::::2;::::0;;;::::2;::::0;;;::::2;::::0;;;::::2;::::0;;;25922:32;;::::2;25941:12;25922:32:::0;::::2;::::0;::::2;::::0;;;::::2;::::0;;;::::2;::::0;;;25871:11:::2;::::0;25990:27:::2;::::0;26011:5;;25990:16:::2;::::0;:6;;26001:4:::2;::::0;25990:10:::2;:16;:::i;:27::-;26066:9;::::0;26055:78:::2;::::0;;;;;26098:10:::2;26055:78;::::0;::::2;::::0;26119:4:::2;26055:78:::0;;;;;;;;;;;;25967:50;;-1:-1:-1;26066:9:0::2;::::0;;::::2;::::0;26055:34:::2;::::0;:78;;;;;::::2;::::0;;;;;;;;;26066:9:::2;::::0;26055:78;::::2;;::::0;::::2;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;26144:56:0::2;::::0;-1:-1:-1;26175:10:0::2;26187:12:::0;26144:30:::2;:56::i;:::-;-1:-1:-1::0;;10077:1:0;11039:7;:22;-1:-1:-1;;24637:1571:0:o;26216:552::-;26331:9;;26257:13;;26301:3;;26257:13;;26331:9;;;;;:14;26330:106;;26425:9;;26398:38;;26399:12;;26425:9;;;;;;;;26398:18;:38;:::i;:::-;26330:106;;;26382:12;;26363:32;;26364:12;;26382;;;;;;;;26363:18;:32;:::i;:::-;26315:121;;26447:12;26474:6;26467:4;26463:1;:8;:17;26462:41;;26498:4;26494:1;:8;26462:41;;;26484:6;26462:41;26595:11;;26447:56;;-1:-1:-1;26560:13:0;;26576:31;;26595:11;;26576:14;26447:56;26585:4;26576:8;:14::i;:::-;:18;;:31::i;:::-;26560:47;-1:-1:-1;26630:25:0;26638:6;26650:4;26630:19;:25::i;:::-;26622:5;:33;26618:143;;;26679:25;26687:6;26699:4;26679:19;:25::i;:::-;26671:33;;26618:143;;;26744:5;26736:13;;26618:143;26216:552;;;;;:::o;13292:195::-;13400:12;;;13362;13400;;;;;;;;;13379:7;;;;13393:5;;13379:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13361:52;;;13432:7;13424:55;;;;-1:-1:-1;;;13424:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13292:195;;;:::o;17166:220::-;17224:7;17248:6;17244:20;;-1:-1:-1;17263:1:0;17256:8;;17244:20;17287:5;;;17291:1;17287;:5;:1;17311:5;;;;;:10;17303:56;;;;-1:-1:-1;;;17303:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17377:1;-1:-1:-1;17166:220:0;;;;;:::o;17864:153::-;17922:7;17954:1;17950;:5;17942:44;;;;;-1:-1:-1;;;17942:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;18008:1;18004;:5;;;;;;;17864:153;-1:-1:-1;;;17864:153:0:o;16287:179::-;16345:7;16377:5;;;16401:6;;;;16393:46;;;;;-1:-1:-1;;;16393:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;16749:158;16807:7;16840:1;16835;:6;;16827:49;;;;;-1:-1:-1;;;16827:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16894:5:0;;;16749:158::o
Swarm Source
ipfs://3bc09006ee83e3e52f44a6a67ff9da36990c6ec777d2865ad36ff6669b3a7655
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,400.15 | 0.0116 | $39.29 |
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.