More Info
Private Name Tags
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Loading...
Loading
Minimal Proxy Contract for 0x7f4b6f10c34470ebddf5e7ab049d8dffb01f8a6f
Contract Name:
Sickle
Compiler Version
v0.8.19+commit.7dd6d404
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.17;import { SickleStorage } from "contracts/base/SickleStorage.sol";import { Multicall } from "contracts/base/Multicall.sol";import { SickleRegistry } from "contracts/SickleRegistry.sol";/// @title Sickle contract/// @author vfat.tools/// @notice Sickle facilitates farming and interactions with Masterchef/// contracts/// @dev Base contract inheriting from all the other "manager" contractscontract Sickle is SickleStorage, Multicall {/// @notice Function to receive ETHreceive() external payable { }/// @param sickleRegistry_ Address of the SickleRegistry contractconstructor(SickleRegistry sickleRegistry_) initializer Multicall(sickleRegistry_) {_Sickle_initialize(address(0), address(0));}/// @param sickleOwner_ Address of the Sickle ownerfunction initialize(address sickleOwner_,
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.17;import { Initializable } from"@openzeppelin/contracts/proxy/utils/Initializable.sol";library SickleStorageEvents {event ApprovedAddressChanged(address newApproved);}/// @title SickleStorage contract/// @author vfat.tools/// @notice Base storage of the Sickle contract/// @dev This contract needs to be inherited by stub contracts meant to be used/// with `delegatecall`abstract contract SickleStorage is Initializable {/// ERRORS ////// @notice Thrown when the caller is not the owner of the Sickle contracterror NotOwnerError(); // 0x74a21527/// @notice Thrown when the caller is not a strategy contract or the/// Flashloan Stuberror NotStrategyError(); // 0x4581ba62/// STORAGE ///
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.17;import { SickleStorage } from "contracts/base/SickleStorage.sol";import { SickleRegistry } from "contracts/SickleRegistry.sol";/// @title Multicall contract/// @author vfat.tools/// @notice Enables calling multiple methods in a single call to the contractabstract contract Multicall is SickleStorage {/// ERRORS ///error MulticallParamsMismatchError(); // 0xc1e637c9/// @notice Thrown when the target contract is not whitelisted/// @param target Address of the non-whitelisted targeterror TargetNotWhitelisted(address target); // 0x47ccabe7/// @notice Thrown when the caller is not whitelisted/// @param caller Address of the non-whitelisted callererror CallerNotWhitelisted(address caller); // 0x252c8273/// STORAGE ////// @notice Address of the SickleRegistry contract/// @dev Needs to be immutable so that it's accessible for Sickle proxies
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.17;import { Admin } from "contracts/base/Admin.sol";library SickleRegistryEvents {event CollectorChanged(address newCollector);event FeesUpdated(bytes32[] feeHashes, uint256[] feesInBP);event ReferralCodeCreated(bytes32 indexed code, address indexed referrer);// Multicall caller and target whitelist status changesevent CallerStatusChanged(address caller, bool isWhitelisted);event TargetStatusChanged(address target, bool isWhitelisted);}/// @title SickleRegistry contract/// @author vfat.tools/// @notice Manages the whitelisted contracts and the collector addresscontract SickleRegistry is Admin {/// ERRORS ///error ArrayLengthMismatch(); // 0xa24a13a6error FeeAboveMaxLimit(); // 0xd6cf7b5eerror InvalidReferralCode(); // 0xe55b4629/// STORAGE ///
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.8.1) (proxy/utils/Initializable.sol)pragma solidity ^0.8.2;import "../../utils/Address.sol";/*** @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed* behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an* external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer* function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.** The initialization functions use a version number. Once a version number is used, it is consumed and cannot be* reused. This mechanism prevents re-execution of each "step" but allows the creation of new initialization steps in* case an upgrade adds a module that needs to be initialized.** For example:** [.hljs-theme-light.nopadding]* ```* contract MyToken is ERC20Upgradeable {* function initialize() initializer public {* __ERC20_init("MyToken", "MTK");* }* }
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.17;/// @title Admin contract/// @author vfat.tools/// @notice Provides an administration mechanism allowing restricted functionsabstract contract Admin {/// ERRORS ////// @notice Thrown when the caller is not the adminerror NotAdminError(); //0xb5c42b3b/// EVENTS ////// @notice Emitted when a new admin is set/// @param oldAdmin Address of the old admin/// @param newAdmin Address of the new adminevent AdminSet(address oldAdmin, address newAdmin);/// STORAGE ////// @notice Address of the current adminaddress public admin;/// MODIFIERS ///
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)pragma solidity ^0.8.1;/*** @dev Collection of functions related to the address type*/library Address {/*** @dev Returns true if `account` is a contract.** [IMPORTANT]* ====* It is unsafe to assume that an address for which this function returns* false is an externally-owned account (EOA) and not a contract.** Among others, `isContract` will return false for the following* types of addresses:** - an externally-owned account* - a contract in construction* - an address where a contract will be created* - an address where a contract lived, but was destroyed* ====*
1234567891011121314151617181920212223242526{"remappings": ["solmate/=lib/solmate/src/","@openzeppelin/=lib/openzeppelin-contracts/","@uniswap/v3-periphery/=lib/v3-periphery/","@uniswap/v3-core/=lib/v3-core/","@morpho-blue/=lib/morpho-blue/src/","ds-test/=lib/solmate/lib/ds-test/src/","forge-std/=lib/forge-std/src/","morpho-blue/=lib/morpho-blue/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer": {"enabled": true,"runs": 200},"metadata": {"useLiteralContent": false,"bytecodeHash": "ipfs","appendCBOR": true},"outputSelection": {"*": {"*": ["evm.bytecode","evm.deployedBytecode",
Contract ABI
API[{"inputs":[{"internalType":"contract SickleRegistry","name":"sickleRegistry_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"CallerNotWhitelisted","type":"error"},{"inputs":[],"name":"MulticallParamsMismatchError","type":"error"},{"inputs":[],"name":"NotOwnerError","type":"error"},{"inputs":[],"name":"NotStrategyError","type":"error"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"TargetNotWhitelisted","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[],"name":"approved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sickleOwner_","type":"address"},{"internalType":"address","name":"approved_","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"name":"isOwnerOrApproved","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"name":"multicall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"registry","outputs":[{"internalType":"contract SickleRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newApproved","type":"address"}],"name":"setApproved","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 35 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
SONIC | 100.00% | $91.34 | 0.1623 | $14.82 |
Loading...
Loading
Loading...
Loading
[ 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.