Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
EntranceRateBurnFee
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0 /* This file is part of the Enzyme Protocol. (c) Enzyme Council <[email protected]> For the full license information, please view the LICENSE file that was distributed with this source code. */ pragma solidity 0.6.12; import "./utils/EntranceRateFeeBase.sol"; /// @title EntranceRateBurnFee Contract /// @author Enzyme Council <[email protected]> /// @notice An EntranceRateFee that burns the fee shares contract EntranceRateBurnFee is EntranceRateFeeBase { constructor(address _feeManager) public EntranceRateFeeBase(_feeManager, IFeeManager.SettlementType.Burn) {} }
// SPDX-License-Identifier: MIT 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; } }
// SPDX-License-Identifier: GPL-3.0 /* This file is part of the Enzyme Protocol. (c) Enzyme Council <[email protected]> For the full license information, please view the LICENSE file that was distributed with this source code. */ pragma solidity 0.6.12; import "./IFeeManager.sol"; /// @title Fee Interface /// @author Enzyme Council <[email protected]> /// @notice Interface for all fees interface IFee { function activateForFund(address _comptrollerProxy, address _vaultProxy) external; function addFundSettings(address _comptrollerProxy, bytes calldata _settingsData) external; function payout(address _comptrollerProxy, address _vaultProxy) external returns (bool isPayable_); function getRecipientForFund(address _comptrollerProxy) external view returns (address recipient_); function settle( address _comptrollerProxy, address _vaultProxy, IFeeManager.FeeHook _hook, bytes calldata _settlementData, uint256 _gav ) external returns ( IFeeManager.SettlementType settlementType_, address payer_, uint256 sharesDue_ ); function settlesOnHook(IFeeManager.FeeHook _hook) external view returns (bool settles_, bool usesGav_); function update( address _comptrollerProxy, address _vaultProxy, IFeeManager.FeeHook _hook, bytes calldata _settlementData, uint256 _gav ) external; function updatesOnHook(IFeeManager.FeeHook _hook) external view returns (bool updates_, bool usesGav_); }
// SPDX-License-Identifier: GPL-3.0 /* This file is part of the Enzyme Protocol. (c) Enzyme Council <[email protected]> For the full license information, please view the LICENSE file that was distributed with this source code. */ pragma solidity 0.6.12; pragma experimental ABIEncoderV2; /// @title FeeManager Interface /// @author Enzyme Council <[email protected]> /// @notice Interface for the FeeManager interface IFeeManager { // No fees for the current release are implemented post-redeemShares enum FeeHook {Continuous, PreBuyShares, PostBuyShares, PreRedeemShares} enum SettlementType {None, Direct, Mint, Burn, MintSharesOutstanding, BurnSharesOutstanding} function invokeHook( FeeHook, bytes calldata, uint256 ) external; }
// SPDX-License-Identifier: GPL-3.0 /* This file is part of the Enzyme Protocol. (c) Enzyme Council <[email protected]> For the full license information, please view the LICENSE file that was distributed with this source code. */ pragma solidity 0.6.12; import "@openzeppelin/contracts/math/SafeMath.sol"; import "./FeeBase.sol"; /// @title EntranceRateFeeBase Contract /// @author Enzyme Council <[email protected]> /// @notice Calculates a fee based on a rate to be charged to an investor upon entering a fund abstract contract EntranceRateFeeBase is FeeBase { using SafeMath for uint256; event FundSettingsAdded(address indexed comptrollerProxy, uint256 rate); event Settled(address indexed comptrollerProxy, address indexed payer, uint256 sharesQuantity); uint256 private constant ONE_HUNDRED_PERCENT = 10000; IFeeManager.SettlementType private immutable SETTLEMENT_TYPE; mapping(address => uint256) private comptrollerProxyToRate; constructor(address _feeManager, IFeeManager.SettlementType _settlementType) public FeeBase(_feeManager) { require( _settlementType == IFeeManager.SettlementType.Burn || _settlementType == IFeeManager.SettlementType.Direct, "constructor: Invalid _settlementType" ); SETTLEMENT_TYPE = _settlementType; } // EXTERNAL FUNCTIONS /// @notice Add the initial fee settings for a fund /// @param _comptrollerProxy The ComptrollerProxy of the fund /// @param _settingsData Encoded settings to apply to the fee for a fund function addFundSettings(address _comptrollerProxy, bytes calldata _settingsData) public virtual override onlyFeeManager { uint256 rate = abi.decode(_settingsData, (uint256)); require(rate > 0, "addFundSettings: Fee rate must be >0"); require(rate < ONE_HUNDRED_PERCENT, "addFundSettings: Fee rate max exceeded"); comptrollerProxyToRate[_comptrollerProxy] = rate; emit FundSettingsAdded(_comptrollerProxy, rate); } /// @notice Settles the fee /// @param _comptrollerProxy The ComptrollerProxy of the fund /// @param _settlementData Encoded args to use in calculating the settlement /// @return settlementType_ The type of settlement /// @return payer_ The payer of shares due /// @return sharesDue_ The amount of shares due function settle( address _comptrollerProxy, address, IFeeManager.FeeHook, bytes calldata _settlementData, uint256 ) external override onlyFeeManager returns ( IFeeManager.SettlementType settlementType_, address payer_, uint256 sharesDue_ ) { uint256 sharesBought; (payer_, , sharesBought) = __decodePostBuySharesSettlementData(_settlementData); uint256 rate = comptrollerProxyToRate[_comptrollerProxy]; sharesDue_ = sharesBought.mul(rate).div(ONE_HUNDRED_PERCENT); if (sharesDue_ == 0) { return (IFeeManager.SettlementType.None, address(0), 0); } emit Settled(_comptrollerProxy, payer_, sharesDue_); return (SETTLEMENT_TYPE, payer_, sharesDue_); } /// @notice Gets whether the fee settles and requires GAV on a particular hook /// @param _hook The FeeHook /// @return settles_ True if the fee settles on the _hook /// @return usesGav_ True if the fee uses GAV during settle() for the _hook function settlesOnHook(IFeeManager.FeeHook _hook) external view override returns (bool settles_, bool usesGav_) { if (_hook == IFeeManager.FeeHook.PostBuyShares) { return (true, false); } return (false, false); } /////////////////// // STATE GETTERS // /////////////////// /// @notice Gets the `rate` variable for a fund /// @param _comptrollerProxy The ComptrollerProxy contract for the fund /// @return rate_ The `rate` variable value function getRateForFund(address _comptrollerProxy) external view returns (uint256 rate_) { return comptrollerProxyToRate[_comptrollerProxy]; } /// @notice Gets the `SETTLEMENT_TYPE` variable /// @return settlementType_ The `SETTLEMENT_TYPE` variable value function getSettlementType() external view returns (IFeeManager.SettlementType settlementType_) { return SETTLEMENT_TYPE; } }
// SPDX-License-Identifier: GPL-3.0 /* This file is part of the Enzyme Protocol. (c) Enzyme Council <[email protected]> For the full license information, please view the LICENSE file that was distributed with this source code. */ pragma solidity 0.6.12; import "../../IFee.sol"; /// @title FeeBase Contract /// @author Enzyme Council <[email protected]> /// @notice Abstract base contract for all fees abstract contract FeeBase is IFee { address internal immutable FEE_MANAGER; modifier onlyFeeManager { require(msg.sender == FEE_MANAGER, "Only the FeeManger can make this call"); _; } constructor(address _feeManager) public { FEE_MANAGER = _feeManager; } /// @notice Allows Fee to run logic during fund activation /// @dev Unimplemented by default, may be overrode. function activateForFund(address, address) external virtual override { return; } /// @notice Gets the recipient of the fee for a given fund /// @dev address(0) signifies the VaultProxy owner. /// Returns address(0) by default, can be overridden by fee. function getRecipientForFund(address) external view virtual override returns (address recipient_) { return address(0); } /// @notice Runs payout logic for a fee that utilizes shares outstanding as its settlement type /// @dev Returns false by default, can be overridden by fee function payout(address, address) external virtual override returns (bool) { return false; } /// @notice Update fee state after all settlement has occurred during a given fee hook /// @dev Unimplemented by default, can be overridden by fee function update( address, address, IFeeManager.FeeHook, bytes calldata, uint256 ) external virtual override { return; } /// @notice Gets whether the fee updates and requires GAV on a particular hook /// @return updates_ True if the fee updates on the _hook /// @return usesGav_ True if the fee uses GAV during update() for the _hook /// @dev Returns false values by default, can be overridden by fee function updatesOnHook(IFeeManager.FeeHook) external view virtual override returns (bool updates_, bool usesGav_) { return (false, false); } /// @notice Helper to parse settlement arguments from encoded data for PreBuyShares fee hook function __decodePreBuySharesSettlementData(bytes memory _settlementData) internal pure returns (address buyer_, uint256 investmentAmount_) { return abi.decode(_settlementData, (address, uint256)); } /// @notice Helper to parse settlement arguments from encoded data for PreRedeemShares fee hook function __decodePreRedeemSharesSettlementData(bytes memory _settlementData) internal pure returns ( address redeemer_, uint256 sharesQuantity_, bool forSpecificAssets_ ) { return abi.decode(_settlementData, (address, uint256, bool)); } /// @notice Helper to parse settlement arguments from encoded data for PostBuyShares fee hook function __decodePostBuySharesSettlementData(bytes memory _settlementData) internal pure returns ( address buyer_, uint256 investmentAmount_, uint256 sharesIssued_ ) { return abi.decode(_settlementData, (address, uint256, uint256)); } /////////////////// // STATE GETTERS // /////////////////// /// @notice Gets the `FEE_MANAGER` variable /// @return feeManager_ The `FEE_MANAGER` variable value function getFeeManager() external view returns (address feeManager_) { return FEE_MANAGER; } }
{ "evmVersion": "istanbul", "libraries": {}, "metadata": { "bytecodeHash": "ipfs", "useLiteralContent": true }, "optimizer": { "details": { "constantOptimizer": true, "cse": true, "deduplicate": true, "jumpdestRemover": true, "orderLiterals": true, "peephole": true, "yul": false }, "runs": 200 }, "remappings": [], "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_feeManager","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"comptrollerProxy","type":"address"},{"indexed":false,"internalType":"uint256","name":"rate","type":"uint256"}],"name":"FundSettingsAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"comptrollerProxy","type":"address"},{"indexed":true,"internalType":"address","name":"payer","type":"address"},{"indexed":false,"internalType":"uint256","name":"sharesQuantity","type":"uint256"}],"name":"Settled","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"activateForFund","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_comptrollerProxy","type":"address"},{"internalType":"bytes","name":"_settingsData","type":"bytes"}],"name":"addFundSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getFeeManager","outputs":[{"internalType":"address","name":"feeManager_","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_comptrollerProxy","type":"address"}],"name":"getRateForFund","outputs":[{"internalType":"uint256","name":"rate_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"getRecipientForFund","outputs":[{"internalType":"address","name":"recipient_","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSettlementType","outputs":[{"internalType":"enum IFeeManager.SettlementType","name":"settlementType_","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"payout","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_comptrollerProxy","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"enum IFeeManager.FeeHook","name":"","type":"uint8"},{"internalType":"bytes","name":"_settlementData","type":"bytes"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"settle","outputs":[{"internalType":"enum IFeeManager.SettlementType","name":"settlementType_","type":"uint8"},{"internalType":"address","name":"payer_","type":"address"},{"internalType":"uint256","name":"sharesDue_","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum IFeeManager.FeeHook","name":"_hook","type":"uint8"}],"name":"settlesOnHook","outputs":[{"internalType":"bool","name":"settles_","type":"bool"},{"internalType":"bool","name":"usesGav_","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"enum IFeeManager.FeeHook","name":"","type":"uint8"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"update","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum IFeeManager.FeeHook","name":"","type":"uint8"}],"name":"updatesOnHook","outputs":[{"internalType":"bool","name":"updates_","type":"bool"},{"internalType":"bool","name":"usesGav_","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60c060405234801561001057600080fd5b506040516109c53803806109c58339818101604052602081101561003357600080fd5b50516001600160601b0319606082901b16608052600360f81b60a0526001600160a01b0316600361093f610086600039806106ef528061072752508061040f52806105b6528061075c525061093f6000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806341892d7e1161007157806341892d7e1461026457806362780b3c1461032f5780637bdd5b1d14610371578063b78b48131461039a578063e337a91f146103dc578063f2d63826146103fc576100a9565b80630f5f6b4f146100ae578063233faf5f146101305780633146d058146101c3578063320f0ddd146101f15780633eecc2bf1461022c575b600080fd5b61012e600480360360408110156100c457600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100ef57600080fd5b82018360208201111561010157600080fd5b8035906020019184600183028401116401000000008311171561012357600080fd5b509092509050610404565b005b61012e600480360360a081101561014657600080fd5b6001600160a01b03823581169260208101359091169160ff604083013516919081019060808101606082013564010000000081111561018457600080fd5b82018360208201111561019657600080fd5b803590602001918460018302840111640100000000831117156101b857600080fd5b919350915035610551565b61012e600480360360408110156101d957600080fd5b506001600160a01b0381358116916020013516610559565b6102116004803603602081101561020757600080fd5b503560ff1661055d565b60408051921515835290151560208301528051918290030190f35b6102526004803603602081101561024257600080fd5b50356001600160a01b031661058c565b60408051918252519081900360200190f35b6102f7600480360360a081101561027a57600080fd5b6001600160a01b03823581169260208101359091169160ff60408301351691908101906080810160608201356401000000008111156102b857600080fd5b8201836020820111156102ca57600080fd5b803590602001918460018302840111640100000000831117156102ec57600080fd5b9193509150356105a7565b6040518084600581111561030757fe5b8152602001836001600160a01b03168152602001828152602001935050505060405180910390f35b6103556004803603602081101561034557600080fd5b50356001600160a01b031661071f565b604080516001600160a01b039092168252519081900360200190f35b610379610725565b6040518082600581111561038957fe5b815260200191505060405180910390f35b6103c8600480360360408110156103b057600080fd5b506001600160a01b0381358116916020013516610749565b604080519115158252519081900360200190f35b610211600480360360208110156103f257600080fd5b503560ff16610752565b61035561075a565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461046b5760405162461bcd60e51b815260040180806020018281038252602581526020018061087a6025913960400191505060405180910390fd5b60008282602081101561047d57600080fd5b50359050806104bd5760405162461bcd60e51b81526004018080602001828103825260248152602001806108e66024913960400191505060405180910390fd5b61271081106104fd5760405162461bcd60e51b81526004018080602001828103825260268152602001806108c06026913960400191505060405180910390fd5b6001600160a01b03841660008181526020818152604091829020849055815184815291517f90b7d1516011c1da1279f3ae0ed052b1416e7c373d4ec40cf515aa53c5f839df9281900390910190a250505050565b505050505050565b5050565b600080600283600381111561056e57fe5b14156105805750600190506000610587565b5060009050805b915091565b6001600160a01b031660009081526020819052604090205490565b60008080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106125760405162461bcd60e51b815260040180806020018281038252602581526020018061087a6025913960400191505060405180910390fd5b600061065387878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061077e92505050565b6001600160a01b038d166000908152602081905260409020549295509250610689905061271061068384846107b2565b90610812565b9250826106a25760008060009450945094505050610713565b836001600160a01b03168b6001600160a01b03167f7e79a2206061184e05985ae0578dec52f817756a441996f984cdc817efc25a68856040518082815260200191505060405180910390a37f0000000000000000000000000000000000000000000000000000000000000000945050505b96509650969350505050565b50600090565b7f000000000000000000000000000000000000000000000000000000000000000090565b60005b92915050565b600080915091565b7f000000000000000000000000000000000000000000000000000000000000000090565b600080600083806020019051606081101561079857600080fd5b508051602082015160409092015190969195509350915050565b6000826107c15750600061074c565b828202828482816107ce57fe5b041461080b5760405162461bcd60e51b815260040180806020018281038252602181526020018061089f6021913960400191505060405180910390fd5b9392505050565b6000808211610868576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161087157fe5b04939250505056fe4f6e6c7920746865204665654d616e6765722063616e206d616b6520746869732063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7761646446756e6453657474696e67733a204665652072617465206d617820657863656564656461646446756e6453657474696e67733a204665652072617465206d757374206265203e30a2646970667358221220003c199e0f8b751ad47510b741a5215defd0b3718f10418469b3e92653fd9d7264736f6c634300060c0033000000000000000000000000af0dffac1ce85c3fce4c2bf50073251f615eefc4
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806341892d7e1161007157806341892d7e1461026457806362780b3c1461032f5780637bdd5b1d14610371578063b78b48131461039a578063e337a91f146103dc578063f2d63826146103fc576100a9565b80630f5f6b4f146100ae578063233faf5f146101305780633146d058146101c3578063320f0ddd146101f15780633eecc2bf1461022c575b600080fd5b61012e600480360360408110156100c457600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100ef57600080fd5b82018360208201111561010157600080fd5b8035906020019184600183028401116401000000008311171561012357600080fd5b509092509050610404565b005b61012e600480360360a081101561014657600080fd5b6001600160a01b03823581169260208101359091169160ff604083013516919081019060808101606082013564010000000081111561018457600080fd5b82018360208201111561019657600080fd5b803590602001918460018302840111640100000000831117156101b857600080fd5b919350915035610551565b61012e600480360360408110156101d957600080fd5b506001600160a01b0381358116916020013516610559565b6102116004803603602081101561020757600080fd5b503560ff1661055d565b60408051921515835290151560208301528051918290030190f35b6102526004803603602081101561024257600080fd5b50356001600160a01b031661058c565b60408051918252519081900360200190f35b6102f7600480360360a081101561027a57600080fd5b6001600160a01b03823581169260208101359091169160ff60408301351691908101906080810160608201356401000000008111156102b857600080fd5b8201836020820111156102ca57600080fd5b803590602001918460018302840111640100000000831117156102ec57600080fd5b9193509150356105a7565b6040518084600581111561030757fe5b8152602001836001600160a01b03168152602001828152602001935050505060405180910390f35b6103556004803603602081101561034557600080fd5b50356001600160a01b031661071f565b604080516001600160a01b039092168252519081900360200190f35b610379610725565b6040518082600581111561038957fe5b815260200191505060405180910390f35b6103c8600480360360408110156103b057600080fd5b506001600160a01b0381358116916020013516610749565b604080519115158252519081900360200190f35b610211600480360360208110156103f257600080fd5b503560ff16610752565b61035561075a565b336001600160a01b037f000000000000000000000000af0dffac1ce85c3fce4c2bf50073251f615eefc4161461046b5760405162461bcd60e51b815260040180806020018281038252602581526020018061087a6025913960400191505060405180910390fd5b60008282602081101561047d57600080fd5b50359050806104bd5760405162461bcd60e51b81526004018080602001828103825260248152602001806108e66024913960400191505060405180910390fd5b61271081106104fd5760405162461bcd60e51b81526004018080602001828103825260268152602001806108c06026913960400191505060405180910390fd5b6001600160a01b03841660008181526020818152604091829020849055815184815291517f90b7d1516011c1da1279f3ae0ed052b1416e7c373d4ec40cf515aa53c5f839df9281900390910190a250505050565b505050505050565b5050565b600080600283600381111561056e57fe5b14156105805750600190506000610587565b5060009050805b915091565b6001600160a01b031660009081526020819052604090205490565b60008080336001600160a01b037f000000000000000000000000af0dffac1ce85c3fce4c2bf50073251f615eefc416146106125760405162461bcd60e51b815260040180806020018281038252602581526020018061087a6025913960400191505060405180910390fd5b600061065387878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061077e92505050565b6001600160a01b038d166000908152602081905260409020549295509250610689905061271061068384846107b2565b90610812565b9250826106a25760008060009450945094505050610713565b836001600160a01b03168b6001600160a01b03167f7e79a2206061184e05985ae0578dec52f817756a441996f984cdc817efc25a68856040518082815260200191505060405180910390a37f0000000000000000000000000000000000000000000000000000000000000003945050505b96509650969350505050565b50600090565b7f000000000000000000000000000000000000000000000000000000000000000390565b60005b92915050565b600080915091565b7f000000000000000000000000af0dffac1ce85c3fce4c2bf50073251f615eefc490565b600080600083806020019051606081101561079857600080fd5b508051602082015160409092015190969195509350915050565b6000826107c15750600061074c565b828202828482816107ce57fe5b041461080b5760405162461bcd60e51b815260040180806020018281038252602181526020018061089f6021913960400191505060405180910390fd5b9392505050565b6000808211610868576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161087157fe5b04939250505056fe4f6e6c7920746865204665654d616e6765722063616e206d616b6520746869732063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7761646446756e6453657474696e67733a204665652072617465206d617820657863656564656461646446756e6453657474696e67733a204665652072617465206d757374206265203e30a2646970667358221220003c199e0f8b751ad47510b741a5215defd0b3718f10418469b3e92653fd9d7264736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000af0dffac1ce85c3fce4c2bf50073251f615eefc4
-----Decoded View---------------
Arg [0] : _feeManager (address): 0xAf0DFFAC1CE85c3fCe4c2BF50073251F615EefC4
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000af0dffac1ce85c3fce4c2bf50073251f615eefc4
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.