Overview
ETH Balance
4 wei
Eth Value
Less Than $0.01 (@ $2,006.68/ETH)Latest 25 from a total of 38 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Drip | 12492371 | 1750 days ago | IN | 0 ETH | 0.00472047 | ||||
| Drip | 12492050 | 1750 days ago | IN | 0 ETH | 0.00761444 | ||||
| Drip | 12490016 | 1750 days ago | IN | 0 ETH | 0.00358187 | ||||
| Drip | 12482996 | 1752 days ago | IN | 0 ETH | 0.00234837 | ||||
| Drip | 12480468 | 1752 days ago | IN | 0 ETH | 0.00370047 | ||||
| Drip | 12478408 | 1752 days ago | IN | 0 ETH | 0.00706986 | ||||
| Drip | 12478408 | 1752 days ago | IN | 0 ETH | 0.00661416 | ||||
| Drip | 12478405 | 1752 days ago | IN | 0 ETH | 0.01366804 | ||||
| Drip | 12468760 | 1754 days ago | IN | 0 ETH | 0.00545583 | ||||
| Drip | 12468460 | 1754 days ago | IN | 0 ETH | 0.0087056 | ||||
| Drip | 12467428 | 1754 days ago | IN | 0 ETH | 0.00427941 | ||||
| Drip | 12467382 | 1754 days ago | IN | 0 ETH | 0.00794653 | ||||
| Drip | 12466119 | 1754 days ago | IN | 0 ETH | 0.00749952 | ||||
| Drip | 12466116 | 1754 days ago | IN | 0 ETH | 0.01189845 | ||||
| Drip | 12465767 | 1754 days ago | IN | 0 ETH | 0.0158219 | ||||
| Drip | 12465440 | 1754 days ago | IN | 0 ETH | 0.0355815 | ||||
| Drip | 12465167 | 1754 days ago | IN | 0 ETH | 0.033852 | ||||
| Drip | 12465167 | 1754 days ago | IN | 0 ETH | 0.142326 | ||||
| Drip | 12464883 | 1754 days ago | IN | 0 ETH | 0.0284652 | ||||
| Drip | 12463781 | 1755 days ago | IN | 0 ETH | 0.00460187 | ||||
| Drip | 12462920 | 1755 days ago | IN | 0 ETH | 0.007812 | ||||
| Drip | 12462920 | 1755 days ago | IN | 0 ETH | 0.01314143 | ||||
| Drip | 12450307 | 1757 days ago | IN | 0 ETH | 0.00199075 | ||||
| Drip | 12447437 | 1757 days ago | IN | 0 ETH | 0.00443582 | ||||
| Drip | 12398915 | 1765 days ago | IN | 0 ETH | 0.0044121 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| - | 13123828 | 1652 days ago | 14,135.01929419 ETH | ||||
| - | 13123828 | 1652 days ago | 75,000 ETH | ||||
| - | 13123828 | 1652 days ago | 75,000 ETH | ||||
| - | 13122539 | 1652 days ago | 1 wei | ||||
| - | 13116095 | 1653 days ago | 1 wei | ||||
| - | 13109628 | 1654 days ago | 1 wei | ||||
| - | 13103195 | 1655 days ago | 1 wei | ||||
| - | 13096662 | 1656 days ago | 1 wei | ||||
| - | 13090274 | 1657 days ago | 1 wei | ||||
| - | 13083706 | 1658 days ago | 1 wei | ||||
| - | 13077286 | 1659 days ago | 1 wei | ||||
| - | 13070762 | 1660 days ago | 1 wei | ||||
| - | 13064272 | 1661 days ago | 1 wei | ||||
| - | 13057897 | 1662 days ago | 1 wei | ||||
| - | 13051357 | 1663 days ago | 1 wei | ||||
| - | 13044907 | 1664 days ago | 1 wei | ||||
| - | 13038408 | 1665 days ago | 36 ETH | ||||
| - | 13033834 | 1666 days ago | 633.15 ETH | ||||
| - | 13031930 | 1666 days ago | 121 ETH | ||||
| - | 13025438 | 1667 days ago | 1 wei | ||||
| - | 13018988 | 1668 days ago | 1 wei | ||||
| - | 13012528 | 1669 days ago | 169 ETH | ||||
| - | 13006047 | 1670 days ago | 397.50375114 ETH | ||||
| - | 12999602 | 1671 days ago | 421.26611328 ETH | ||||
| - | 12993117 | 1672 days ago | 1,393.87447834 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
EthPCVDripper
Compiler Version
v0.6.6+commit.6c089d02
Contract Source Code (Solidity Standard Json-Input format)
pragma solidity ^0.6.0;
pragma experimental ABIEncoderV2;
import "../refs/CoreRef.sol";
import "../utils/Timed.sol";
/// @title a PCV dripper
/// @author Fei Protocol
contract EthPCVDripper is CoreRef, Timed {
using Address for address payable;
/// @notice target address to drip to
address payable public target;
/// @notice amount to drip after each window
uint256 public amountToDrip;
event Dripped(uint256 amount);
event Withdrawal(address indexed to, uint256 amount);
/// @notice ETH PCV Dripper constructor
/// @param _core Fei Core for reference
/// @param _target address to drip to
/// @param _frequency frequency of dripping
/// @param _amountToDrip amount to drip on each drip
constructor(
address _core,
address payable _target,
uint256 _frequency,
uint256 _amountToDrip
) public CoreRef(_core) Timed(_frequency) {
target = _target;
amountToDrip = _amountToDrip;
// start timer
_initTimed();
}
receive() external payable {}
/// @notice withdraw ETH from the PCV dripper
/// @param amount of tokens withdrawn
/// @param to the address to send PCV to
function withdrawETH(address payable to, uint256 amount)
external
onlyPCVController
{
to.sendValue(amount);
emit Withdrawal(to, amount);
}
/// @notice drip ETH to target
function drip()
external
afterTime
whenNotPaused
{
require(isTargetBalanceLow(), "EthPCVDripper: target balance too high");
// reset timer
_initTimed();
// drip
target.sendValue(amountToDrip);
emit Dripped(amountToDrip);
}
/// @notice checks whether the target balance is less than the drip amount
function isTargetBalanceLow() public view returns(bool) {
return target.balance < amountToDrip;
}
}pragma solidity ^0.6.0;
pragma experimental ABIEncoderV2;
import "./ICoreRef.sol";
import "@openzeppelin/contracts/utils/Pausable.sol";
import "@openzeppelin/contracts/utils/Address.sol";
/// @title A Reference to Core
/// @author Fei Protocol
/// @notice defines some modifiers and utilities around interacting with Core
abstract contract CoreRef is ICoreRef, Pausable {
ICore private _core;
/// @notice CoreRef constructor
/// @param core Fei Core to reference
constructor(address core) public {
_core = ICore(core);
}
modifier ifMinterSelf() {
if (_core.isMinter(address(this))) {
_;
}
}
modifier ifBurnerSelf() {
if (_core.isBurner(address(this))) {
_;
}
}
modifier onlyMinter() {
require(_core.isMinter(msg.sender), "CoreRef: Caller is not a minter");
_;
}
modifier onlyBurner() {
require(_core.isBurner(msg.sender), "CoreRef: Caller is not a burner");
_;
}
modifier onlyPCVController() {
require(
_core.isPCVController(msg.sender),
"CoreRef: Caller is not a PCV controller"
);
_;
}
modifier onlyGovernor() {
require(
_core.isGovernor(msg.sender),
"CoreRef: Caller is not a governor"
);
_;
}
modifier onlyGuardianOrGovernor() {
require(
_core.isGovernor(msg.sender) ||
_core.isGuardian(msg.sender),
"CoreRef: Caller is not a guardian or governor"
);
_;
}
modifier onlyFei() {
require(msg.sender == address(fei()), "CoreRef: Caller is not FEI");
_;
}
modifier onlyGenesisGroup() {
require(
msg.sender == _core.genesisGroup(),
"CoreRef: Caller is not GenesisGroup"
);
_;
}
modifier postGenesis() {
require(
_core.hasGenesisGroupCompleted(),
"CoreRef: Still in Genesis Period"
);
_;
}
modifier nonContract() {
require(!Address.isContract(msg.sender), "CoreRef: Caller is a contract");
_;
}
/// @notice set new Core reference address
/// @param core the new core address
function setCore(address core) external override onlyGovernor {
_core = ICore(core);
emit CoreUpdate(core);
}
/// @notice set pausable methods to paused
function pause() public override onlyGuardianOrGovernor {
_pause();
}
/// @notice set pausable methods to unpaused
function unpause() public override onlyGuardianOrGovernor {
_unpause();
}
/// @notice address of the Core contract referenced
/// @return ICore implementation address
function core() public view override returns (ICore) {
return _core;
}
/// @notice address of the Fei contract referenced by Core
/// @return IFei implementation address
function fei() public view override returns (IFei) {
return _core.fei();
}
/// @notice address of the Tribe contract referenced by Core
/// @return IERC20 implementation address
function tribe() public view override returns (IERC20) {
return _core.tribe();
}
/// @notice fei balance of contract
/// @return fei amount held
function feiBalance() public view override returns (uint256) {
return fei().balanceOf(address(this));
}
/// @notice tribe balance of contract
/// @return tribe amount held
function tribeBalance() public view override returns (uint256) {
return tribe().balanceOf(address(this));
}
function _burnFeiHeld() internal {
fei().burn(feiBalance());
}
function _mintFei(uint256 amount) internal {
fei().mint(address(this), amount);
}
}pragma solidity ^0.6.0;
pragma experimental ABIEncoderV2;
import "../core/ICore.sol";
/// @title CoreRef interface
/// @author Fei Protocol
interface ICoreRef {
// ----------- Events -----------
event CoreUpdate(address indexed _core);
// ----------- Governor only state changing api -----------
function setCore(address core) external;
function pause() external;
function unpause() external;
// ----------- Getters -----------
function core() external view returns (ICore);
function fei() external view returns (IFei);
function tribe() external view returns (IERC20);
function feiBalance() external view returns (uint256);
function tribeBalance() external view returns (uint256);
}pragma solidity ^0.6.0;
pragma experimental ABIEncoderV2;
import "./IPermissions.sol";
import "../token/IFei.sol";
/// @title Core Interface
/// @author Fei Protocol
interface ICore is IPermissions {
// ----------- Events -----------
event FeiUpdate(address indexed _fei);
event TribeUpdate(address indexed _tribe);
event GenesisGroupUpdate(address indexed _genesisGroup);
event TribeAllocation(address indexed _to, uint256 _amount);
event GenesisPeriodComplete(uint256 _timestamp);
// ----------- Governor only state changing api -----------
function init() external;
// ----------- Governor only state changing api -----------
function setFei(address token) external;
function setTribe(address token) external;
function setGenesisGroup(address _genesisGroup) external;
function allocateTribe(address to, uint256 amount) external;
// ----------- Genesis Group only state changing api -----------
function completeGenesisGroup() external;
// ----------- Getters -----------
function fei() external view returns (IFei);
function tribe() external view returns (IERC20);
function genesisGroup() external view returns (address);
function hasGenesisGroupCompleted() external view returns (bool);
}pragma solidity ^0.6.0;
pragma experimental ABIEncoderV2;
/// @title Permissions interface
/// @author Fei Protocol
interface IPermissions {
// ----------- Governor only state changing api -----------
function createRole(bytes32 role, bytes32 adminRole) external;
function grantMinter(address minter) external;
function grantBurner(address burner) external;
function grantPCVController(address pcvController) external;
function grantGovernor(address governor) external;
function grantGuardian(address guardian) external;
function revokeMinter(address minter) external;
function revokeBurner(address burner) external;
function revokePCVController(address pcvController) external;
function revokeGovernor(address governor) external;
function revokeGuardian(address guardian) external;
// ----------- Revoker only state changing api -----------
function revokeOverride(bytes32 role, address account) external;
// ----------- Getters -----------
function isBurner(address _address) external view returns (bool);
function isMinter(address _address) external view returns (bool);
function isGovernor(address _address) external view returns (bool);
function isGuardian(address _address) external view returns (bool);
function isPCVController(address _address) external view returns (bool);
}pragma solidity ^0.6.2;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
/// @title FEI stablecoin interface
/// @author Fei Protocol
interface IFei is IERC20 {
// ----------- Events -----------
event Minting(
address indexed _to,
address indexed _minter,
uint256 _amount
);
event Burning(
address indexed _to,
address indexed _burner,
uint256 _amount
);
event IncentiveContractUpdate(
address indexed _incentivized,
address indexed _incentiveContract
);
// ----------- State changing api -----------
function burn(uint256 amount) external;
function permit(
address owner,
address spender,
uint256 value,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) external;
// ----------- Burner only state changing api -----------
function burnFrom(address account, uint256 amount) external;
// ----------- Minter only state changing api -----------
function mint(address account, uint256 amount) external;
// ----------- Governor only state changing api -----------
function setIncentiveContract(address account, address incentive) external;
// ----------- Getters -----------
function incentiveContract(address account) external view returns (address);
}pragma solidity ^0.6.0;
pragma experimental ABIEncoderV2;
import "@openzeppelin/contracts/utils/SafeCast.sol";
/// @title an abstract contract for timed events
/// @author Fei Protocol
abstract contract Timed {
using SafeCast for uint256;
/// @notice the start timestamp of the timed period
uint256 public startTime;
/// @notice the duration of the timed period
uint256 public duration;
event DurationUpdate(uint256 _duration);
event TimerReset(uint256 _startTime);
constructor(uint256 _duration) public {
_setDuration(_duration);
}
modifier duringTime() {
require(isTimeStarted(), "Timed: time not started");
require(!isTimeEnded(), "Timed: time ended");
_;
}
modifier afterTime() {
require(isTimeEnded(), "Timed: time not ended");
_;
}
/// @notice return true if time period has ended
function isTimeEnded() public view returns (bool) {
return remainingTime() == 0;
}
/// @notice number of seconds remaining until time is up
/// @return remaining
function remainingTime() public view returns (uint256) {
return duration - timeSinceStart(); // duration always >= timeSinceStart which is on [0,d]
}
/// @notice number of seconds since contract was initialized
/// @return timestamp
/// @dev will be less than or equal to duration
function timeSinceStart() public view returns (uint256) {
if (!isTimeStarted()) {
return 0; // uninitialized
}
uint256 _duration = duration;
// solhint-disable-next-line not-rely-on-time
uint256 timePassed = block.timestamp - startTime; // block timestamp always >= startTime
return timePassed > _duration ? _duration : timePassed;
}
function isTimeStarted() public view returns (bool) {
return startTime != 0;
}
function _initTimed() internal {
// solhint-disable-next-line not-rely-on-time
startTime = block.timestamp;
// solhint-disable-next-line not-rely-on-time
emit TimerReset(block.timestamp);
}
function _setDuration(uint _duration) internal {
duration = _duration;
emit DurationUpdate(_duration);
}
}// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;
import "./Context.sol";
/**
* @dev Contract module which allows children to implement an emergency stop
* mechanism that can be triggered by an authorized account.
*
* This module is used through inheritance. It will make available the
* modifiers `whenNotPaused` and `whenPaused`, which can be applied to
* the functions of your contract. Note that they will not be pausable by
* simply including this module, only once the modifiers are put in place.
*/
abstract contract Pausable is Context {
/**
* @dev Emitted when the pause is triggered by `account`.
*/
event Paused(address account);
/**
* @dev Emitted when the pause is lifted by `account`.
*/
event Unpaused(address account);
bool private _paused;
/**
* @dev Initializes the contract in unpaused state.
*/
constructor () internal {
_paused = false;
}
/**
* @dev Returns true if the contract is paused, and false otherwise.
*/
function paused() public view virtual returns (bool) {
return _paused;
}
/**
* @dev Modifier to make a function callable only when the contract is not paused.
*
* Requirements:
*
* - The contract must not be paused.
*/
modifier whenNotPaused() {
require(!paused(), "Pausable: paused");
_;
}
/**
* @dev Modifier to make a function callable only when the contract is paused.
*
* Requirements:
*
* - The contract must be paused.
*/
modifier whenPaused() {
require(paused(), "Pausable: not paused");
_;
}
/**
* @dev Triggers stopped state.
*
* Requirements:
*
* - The contract must not be paused.
*/
function _pause() internal virtual whenNotPaused {
_paused = true;
emit Paused(_msgSender());
}
/**
* @dev Returns to normal state.
*
* Requirements:
*
* - The contract must be paused.
*/
function _unpause() internal virtual whenPaused {
_paused = false;
emit Unpaused(_msgSender());
}
}// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;
/*
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with GSN meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address payable) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}// SPDX-License-Identifier: MIT
pragma solidity >=0.6.2 <0.8.0;
/**
* @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
* ====
*/
function isContract(address account) internal view returns (bool) {
// This method relies on extcodesize, which returns 0 for contracts in
// construction, since the code is only stored at the end of the
// constructor execution.
uint256 size;
// solhint-disable-next-line no-inline-assembly
assembly { size := extcodesize(account) }
return size > 0;
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
// solhint-disable-next-line avoid-low-level-calls, avoid-call-value
(bool success, ) = recipient.call{ value: amount }("");
require(success, "Address: unable to send value, recipient may have reverted");
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain`call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason, it is bubbled up by this
* function (like regular Solidity function calls).
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
* `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*
* _Available since v3.1._
*/
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
/**
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
* with `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
require(isContract(target), "Address: call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.call{ value: value }(data);
return _verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.staticcall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
require(isContract(target), "Address: delegate call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.delegatecall(data);
return _verifyCallResult(success, returndata, errorMessage);
}
function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
if (success) {
return returndata;
} else {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
// solhint-disable-next-line no-inline-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}// SPDX-License-Identifier: MIT
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);
}// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;
/**
* @dev Wrappers over Solidity's uintXX/intXX casting operators with added overflow
* checks.
*
* Downcasting from uint256/int256 in Solidity does not revert on overflow. This can
* easily result in undesired exploitation or bugs, since developers usually
* assume that overflows raise errors. `SafeCast` restores this intuition by
* reverting the transaction when such 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.
*
* Can be combined with {SafeMath} and {SignedSafeMath} to extend it to smaller types, by performing
* all math on `uint256` and `int256` and then downcasting.
*/
library SafeCast {
/**
* @dev Returns the downcasted uint128 from uint256, reverting on
* overflow (when the input is greater than largest uint128).
*
* Counterpart to Solidity's `uint128` operator.
*
* Requirements:
*
* - input must fit into 128 bits
*/
function toUint128(uint256 value) internal pure returns (uint128) {
require(value < 2**128, "SafeCast: value doesn\'t fit in 128 bits");
return uint128(value);
}
/**
* @dev Returns the downcasted uint64 from uint256, reverting on
* overflow (when the input is greater than largest uint64).
*
* Counterpart to Solidity's `uint64` operator.
*
* Requirements:
*
* - input must fit into 64 bits
*/
function toUint64(uint256 value) internal pure returns (uint64) {
require(value < 2**64, "SafeCast: value doesn\'t fit in 64 bits");
return uint64(value);
}
/**
* @dev Returns the downcasted uint32 from uint256, reverting on
* overflow (when the input is greater than largest uint32).
*
* Counterpart to Solidity's `uint32` operator.
*
* Requirements:
*
* - input must fit into 32 bits
*/
function toUint32(uint256 value) internal pure returns (uint32) {
require(value < 2**32, "SafeCast: value doesn\'t fit in 32 bits");
return uint32(value);
}
/**
* @dev Returns the downcasted uint16 from uint256, reverting on
* overflow (when the input is greater than largest uint16).
*
* Counterpart to Solidity's `uint16` operator.
*
* Requirements:
*
* - input must fit into 16 bits
*/
function toUint16(uint256 value) internal pure returns (uint16) {
require(value < 2**16, "SafeCast: value doesn\'t fit in 16 bits");
return uint16(value);
}
/**
* @dev Returns the downcasted uint8 from uint256, reverting on
* overflow (when the input is greater than largest uint8).
*
* Counterpart to Solidity's `uint8` operator.
*
* Requirements:
*
* - input must fit into 8 bits.
*/
function toUint8(uint256 value) internal pure returns (uint8) {
require(value < 2**8, "SafeCast: value doesn\'t fit in 8 bits");
return uint8(value);
}
/**
* @dev Converts a signed int256 into an unsigned uint256.
*
* Requirements:
*
* - input must be greater than or equal to 0.
*/
function toUint256(int256 value) internal pure returns (uint256) {
require(value >= 0, "SafeCast: value must be positive");
return uint256(value);
}
/**
* @dev Returns the downcasted int128 from int256, reverting on
* overflow (when the input is less than smallest int128 or
* greater than largest int128).
*
* Counterpart to Solidity's `int128` operator.
*
* Requirements:
*
* - input must fit into 128 bits
*
* _Available since v3.1._
*/
function toInt128(int256 value) internal pure returns (int128) {
require(value >= -2**127 && value < 2**127, "SafeCast: value doesn\'t fit in 128 bits");
return int128(value);
}
/**
* @dev Returns the downcasted int64 from int256, reverting on
* overflow (when the input is less than smallest int64 or
* greater than largest int64).
*
* Counterpart to Solidity's `int64` operator.
*
* Requirements:
*
* - input must fit into 64 bits
*
* _Available since v3.1._
*/
function toInt64(int256 value) internal pure returns (int64) {
require(value >= -2**63 && value < 2**63, "SafeCast: value doesn\'t fit in 64 bits");
return int64(value);
}
/**
* @dev Returns the downcasted int32 from int256, reverting on
* overflow (when the input is less than smallest int32 or
* greater than largest int32).
*
* Counterpart to Solidity's `int32` operator.
*
* Requirements:
*
* - input must fit into 32 bits
*
* _Available since v3.1._
*/
function toInt32(int256 value) internal pure returns (int32) {
require(value >= -2**31 && value < 2**31, "SafeCast: value doesn\'t fit in 32 bits");
return int32(value);
}
/**
* @dev Returns the downcasted int16 from int256, reverting on
* overflow (when the input is less than smallest int16 or
* greater than largest int16).
*
* Counterpart to Solidity's `int16` operator.
*
* Requirements:
*
* - input must fit into 16 bits
*
* _Available since v3.1._
*/
function toInt16(int256 value) internal pure returns (int16) {
require(value >= -2**15 && value < 2**15, "SafeCast: value doesn\'t fit in 16 bits");
return int16(value);
}
/**
* @dev Returns the downcasted int8 from int256, reverting on
* overflow (when the input is less than smallest int8 or
* greater than largest int8).
*
* Counterpart to Solidity's `int8` operator.
*
* Requirements:
*
* - input must fit into 8 bits.
*
* _Available since v3.1._
*/
function toInt8(int256 value) internal pure returns (int8) {
require(value >= -2**7 && value < 2**7, "SafeCast: value doesn\'t fit in 8 bits");
return int8(value);
}
/**
* @dev Converts an unsigned uint256 into a signed int256.
*
* Requirements:
*
* - input must be less than or equal to maxInt256.
*/
function toInt256(uint256 value) internal pure returns (int256) {
require(value < 2**255, "SafeCast: value doesn't fit in an int256");
return int256(value);
}
}{
"metadata": {
"useLiteralContent": true
},
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_core","type":"address"},{"internalType":"address payable","name":"_target","type":"address"},{"internalType":"uint256","name":"_frequency","type":"uint256"},{"internalType":"uint256","name":"_amountToDrip","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_core","type":"address"}],"name":"CoreUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Dripped","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_duration","type":"uint256"}],"name":"DurationUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_startTime","type":"uint256"}],"name":"TimerReset","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawal","type":"event"},{"inputs":[],"name":"amountToDrip","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"core","outputs":[{"internalType":"contract ICore","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"drip","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"duration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fei","outputs":[{"internalType":"contract IFei","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feiBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTargetBalanceLow","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTimeEnded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTimeStarted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"remainingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"core","type":"address"}],"name":"setCore","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeSinceStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tribe","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tribeBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60806040523480156200001157600080fd5b50604051620010de380380620010de833981016040819052620000349162000116565b600080546001600160a81b0319166101006001600160a01b03871602179055816200005f8162000094565b50600380546001600160a01b0319166001600160a01b03851617905560048190556200008a620000d6565b5050505062000184565b60028190556040517fef01a748b5b8a4f1d48b88861f6d361d7391ad2bbed27ff97d762889ca80d73790620000cb90839062000162565b60405180910390a150565b4260018190556040517fd1dbb2ce8081405078443ef34dae718285114121a39370b14ef01b9d2b0a2083916200010c9162000162565b60405180910390a1565b600080600080608085870312156200012c578384fd5b845162000139816200016b565b60208601519094506200014c816200016b565b6040860151606090960151949790965092505050565b90815260200190565b6001600160a01b03811681146200018157600080fd5b50565b610f4a80620001946000396000f3fe6080604052600436106101225760003560e01c80638456cb59116100a0578063b490589711610064578063b4905897146102b1578063b86677fe146102c6578063d4b83992146102db578063dbfa9e6b146102f0578063f2f4eb261461030557610129565b80638456cb591461023b5780639a9ba4da146102505780639f678cca14610272578063acc4bd0814610287578063ae951b2e1461029c57610129565b80635c975abb116100e75780635c975abb146101c757806367fc6dea146101dc5780636b6dff0a146101f157806378e9792514610206578063800096301461021b57610129565b8062d89b331461012e5780630fb5a6b4146101595780632a8f76031461017b5780633f4ba83a146101905780634782f779146101a757610129565b3661012957005b600080fd5b34801561013a57600080fd5b5061014361031a565b6040516101509190610cb2565b60405180910390f35b34801561016557600080fd5b5061016e610323565b6040516101509190610ef3565b34801561018757600080fd5b5061016e610329565b34801561019c57600080fd5b506101a561032f565b005b3480156101b357600080fd5b506101a56101c2366004610c1f565b61046c565b3480156101d357600080fd5b5061014361056a565b3480156101e857600080fd5b5061016e610573565b3480156101fd57600080fd5b5061016e6105a7565b34801561021257600080fd5b5061016e610631565b34801561022757600080fd5b506101a5610236366004610bfc565b610637565b34801561024757600080fd5b506101a5610727565b34801561025c57600080fd5b50610265610859565b6040516101509190610c9e565b34801561027e57600080fd5b506101a56108e0565b34801561029357600080fd5b5061016e6109b1565b3480156102a857600080fd5b506101436109c4565b3480156102bd57600080fd5b5061016e6109d4565b3480156102d257600080fd5b506102656109de565b3480156102e757600080fd5b50610265610a2d565b3480156102fc57600080fd5b50610143610a3c565b34801561031157600080fd5b50610265610a50565b60015415155b90565b60025481565b60045481565b600054604051631c86b03760e31b81526101009091046001600160a01b03169063e43581b890610363903390600401610c9e565b60206040518083038186803b15801561037b57600080fd5b505afa15801561038f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b39190610c4a565b8061043d5750600054604051630c68ba2160e01b81526101009091046001600160a01b031690630c68ba21906103ed903390600401610c9e565b60206040518083038186803b15801561040557600080fd5b505afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d9190610c4a565b6104625760405162461bcd60e51b815260040161045990610d1a565b60405180910390fd5b61046a610a64565b565b6000546040516330c34a1f60e11b81526101009091046001600160a01b031690636186943e906104a0903390600401610c9e565b60206040518083038186803b1580156104b857600080fd5b505afa1580156104cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f09190610c4a565b61050c5760405162461bcd60e51b815260040161045990610d67565b6105256001600160a01b0383168263ffffffff610ac816565b816001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b658260405161055e9190610ef3565b60405180910390a25050565b60005460ff1690565b600061057d61031a565b61058957506000610320565b600254600154420381811161059e57806105a0565b815b9250505090565b60006105b16109de565b6001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016105dc9190610c9e565b60206040518083038186803b1580156105f457600080fd5b505afa158015610608573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062c9190610c86565b905090565b60015481565b600054604051631c86b03760e31b81526101009091046001600160a01b03169063e43581b89061066b903390600401610c9e565b60206040518083038186803b15801561068357600080fd5b505afa158015610697573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106bb9190610c4a565b6106d75760405162461bcd60e51b815260040161045990610eb2565b60008054610100600160a81b0319166101006001600160a01b03841690810291909117825560405190917fad9400e618eb1344fde53db22397a1b82c765527ecbba3a5c86bcac15090828b91a250565b600054604051631c86b03760e31b81526101009091046001600160a01b03169063e43581b89061075b903390600401610c9e565b60206040518083038186803b15801561077357600080fd5b505afa158015610787573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ab9190610c4a565b806108355750600054604051630c68ba2160e01b81526101009091046001600160a01b031690630c68ba21906107e5903390600401610c9e565b60206040518083038186803b1580156107fd57600080fd5b505afa158015610811573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108359190610c4a565b6108515760405162461bcd60e51b815260040161045990610d1a565b61046a610b69565b60008060019054906101000a90046001600160a01b03166001600160a01b0316639a9ba4da6040518163ffffffff1660e01b815260040160206040518083038186803b1580156108a857600080fd5b505afa1580156108bc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062c9190610c6a565b6108e86109c4565b6109045760405162461bcd60e51b815260040161045990610ceb565b61090c61056a565b156109295760405162461bcd60e51b815260040161045990610e42565b610931610a3c565b61094d5760405162461bcd60e51b815260040161045990610e6c565b610955610bc4565b600454600354610976916001600160a01b039091169063ffffffff610ac816565b7f7de59a92c9386255180c28ede4b61edb9b7b2ac96855ac634151489cef21bad66004546040516109a79190610ef3565b60405180910390a1565b60006109bb610573565b60025403905090565b60006109ce6109b1565b15905090565b60006105b1610859565b60008060019054906101000a90046001600160a01b03166001600160a01b031663b86677fe6040518163ffffffff1660e01b815260040160206040518083038186803b1580156108a857600080fd5b6003546001600160a01b031681565b6004546003546001600160a01b0316311090565b60005461010090046001600160a01b031690565b610a6c61056a565b610a885760405162461bcd60e51b815260040161045990610cbd565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610abb610bf8565b6040516109a79190610c9e565b80471015610ae85760405162461bcd60e51b815260040161045990610e0b565b6000826001600160a01b031682604051610b0190610320565b60006040518083038185875af1925050503d8060008114610b3e576040519150601f19603f3d011682016040523d82523d6000602084013e610b43565b606091505b5050905080610b645760405162461bcd60e51b815260040161045990610dae565b505050565b610b7161056a565b15610b8e5760405162461bcd60e51b815260040161045990610e42565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610abb610bf8565b4260018190556040517fd1dbb2ce8081405078443ef34dae718285114121a39370b14ef01b9d2b0a2083916109a791610ef3565b3390565b600060208284031215610c0d578081fd5b8135610c1881610efc565b9392505050565b60008060408385031215610c31578081fd5b8235610c3c81610efc565b946020939093013593505050565b600060208284031215610c5b578081fd5b81518015158114610c18578182fd5b600060208284031215610c7b578081fd5b8151610c1881610efc565b600060208284031215610c97578081fd5b5051919050565b6001600160a01b0391909116815260200190565b901515815260200190565b60208082526014908201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604082015260600190565b602080825260159082015274151a5b59590e881d1a5b59481b9bdd08195b991959605a1b604082015260600190565b6020808252602d908201527f436f72655265663a2043616c6c6572206973206e6f742061206775617264696160408201526c371037b91033b7bb32b93737b960991b606082015260800190565b60208082526027908201527f436f72655265663a2043616c6c6572206973206e6f7420612050435620636f6e6040820152663a3937b63632b960c91b606082015260800190565b6020808252603a908201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260408201527f6563697069656e74206d61792068617665207265766572746564000000000000606082015260800190565b6020808252601d908201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604082015260600190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b60208082526026908201527f457468504356447269707065723a207461726765742062616c616e636520746f6040820152650de40d0d2ced60d31b606082015260800190565b60208082526021908201527f436f72655265663a2043616c6c6572206973206e6f74206120676f7665726e6f6040820152603960f91b606082015260800190565b90815260200190565b6001600160a01b0381168114610f1157600080fd5b5056fea264697066735822122017db6ec4d005d37a97caa567682db6049528311104eb3394606581d67488aeeb64736f6c634300060600330000000000000000000000008d5ed43dca8c2f7dfb20cf7b53cc7e593635d7b9000000000000000000000000a08a721dfb595753fff335636674d76c455b275c0000000000000000000000000000000000000000000000000000000000000e1000000000000000000000000000000000000000000000010f0cf064dd59200000
Deployed Bytecode
0x6080604052600436106101225760003560e01c80638456cb59116100a0578063b490589711610064578063b4905897146102b1578063b86677fe146102c6578063d4b83992146102db578063dbfa9e6b146102f0578063f2f4eb261461030557610129565b80638456cb591461023b5780639a9ba4da146102505780639f678cca14610272578063acc4bd0814610287578063ae951b2e1461029c57610129565b80635c975abb116100e75780635c975abb146101c757806367fc6dea146101dc5780636b6dff0a146101f157806378e9792514610206578063800096301461021b57610129565b8062d89b331461012e5780630fb5a6b4146101595780632a8f76031461017b5780633f4ba83a146101905780634782f779146101a757610129565b3661012957005b600080fd5b34801561013a57600080fd5b5061014361031a565b6040516101509190610cb2565b60405180910390f35b34801561016557600080fd5b5061016e610323565b6040516101509190610ef3565b34801561018757600080fd5b5061016e610329565b34801561019c57600080fd5b506101a561032f565b005b3480156101b357600080fd5b506101a56101c2366004610c1f565b61046c565b3480156101d357600080fd5b5061014361056a565b3480156101e857600080fd5b5061016e610573565b3480156101fd57600080fd5b5061016e6105a7565b34801561021257600080fd5b5061016e610631565b34801561022757600080fd5b506101a5610236366004610bfc565b610637565b34801561024757600080fd5b506101a5610727565b34801561025c57600080fd5b50610265610859565b6040516101509190610c9e565b34801561027e57600080fd5b506101a56108e0565b34801561029357600080fd5b5061016e6109b1565b3480156102a857600080fd5b506101436109c4565b3480156102bd57600080fd5b5061016e6109d4565b3480156102d257600080fd5b506102656109de565b3480156102e757600080fd5b50610265610a2d565b3480156102fc57600080fd5b50610143610a3c565b34801561031157600080fd5b50610265610a50565b60015415155b90565b60025481565b60045481565b600054604051631c86b03760e31b81526101009091046001600160a01b03169063e43581b890610363903390600401610c9e565b60206040518083038186803b15801561037b57600080fd5b505afa15801561038f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b39190610c4a565b8061043d5750600054604051630c68ba2160e01b81526101009091046001600160a01b031690630c68ba21906103ed903390600401610c9e565b60206040518083038186803b15801561040557600080fd5b505afa158015610419573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043d9190610c4a565b6104625760405162461bcd60e51b815260040161045990610d1a565b60405180910390fd5b61046a610a64565b565b6000546040516330c34a1f60e11b81526101009091046001600160a01b031690636186943e906104a0903390600401610c9e565b60206040518083038186803b1580156104b857600080fd5b505afa1580156104cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f09190610c4a565b61050c5760405162461bcd60e51b815260040161045990610d67565b6105256001600160a01b0383168263ffffffff610ac816565b816001600160a01b03167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b658260405161055e9190610ef3565b60405180910390a25050565b60005460ff1690565b600061057d61031a565b61058957506000610320565b600254600154420381811161059e57806105a0565b815b9250505090565b60006105b16109de565b6001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016105dc9190610c9e565b60206040518083038186803b1580156105f457600080fd5b505afa158015610608573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062c9190610c86565b905090565b60015481565b600054604051631c86b03760e31b81526101009091046001600160a01b03169063e43581b89061066b903390600401610c9e565b60206040518083038186803b15801561068357600080fd5b505afa158015610697573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106bb9190610c4a565b6106d75760405162461bcd60e51b815260040161045990610eb2565b60008054610100600160a81b0319166101006001600160a01b03841690810291909117825560405190917fad9400e618eb1344fde53db22397a1b82c765527ecbba3a5c86bcac15090828b91a250565b600054604051631c86b03760e31b81526101009091046001600160a01b03169063e43581b89061075b903390600401610c9e565b60206040518083038186803b15801561077357600080fd5b505afa158015610787573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ab9190610c4a565b806108355750600054604051630c68ba2160e01b81526101009091046001600160a01b031690630c68ba21906107e5903390600401610c9e565b60206040518083038186803b1580156107fd57600080fd5b505afa158015610811573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108359190610c4a565b6108515760405162461bcd60e51b815260040161045990610d1a565b61046a610b69565b60008060019054906101000a90046001600160a01b03166001600160a01b0316639a9ba4da6040518163ffffffff1660e01b815260040160206040518083038186803b1580156108a857600080fd5b505afa1580156108bc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062c9190610c6a565b6108e86109c4565b6109045760405162461bcd60e51b815260040161045990610ceb565b61090c61056a565b156109295760405162461bcd60e51b815260040161045990610e42565b610931610a3c565b61094d5760405162461bcd60e51b815260040161045990610e6c565b610955610bc4565b600454600354610976916001600160a01b039091169063ffffffff610ac816565b7f7de59a92c9386255180c28ede4b61edb9b7b2ac96855ac634151489cef21bad66004546040516109a79190610ef3565b60405180910390a1565b60006109bb610573565b60025403905090565b60006109ce6109b1565b15905090565b60006105b1610859565b60008060019054906101000a90046001600160a01b03166001600160a01b031663b86677fe6040518163ffffffff1660e01b815260040160206040518083038186803b1580156108a857600080fd5b6003546001600160a01b031681565b6004546003546001600160a01b0316311090565b60005461010090046001600160a01b031690565b610a6c61056a565b610a885760405162461bcd60e51b815260040161045990610cbd565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa610abb610bf8565b6040516109a79190610c9e565b80471015610ae85760405162461bcd60e51b815260040161045990610e0b565b6000826001600160a01b031682604051610b0190610320565b60006040518083038185875af1925050503d8060008114610b3e576040519150601f19603f3d011682016040523d82523d6000602084013e610b43565b606091505b5050905080610b645760405162461bcd60e51b815260040161045990610dae565b505050565b610b7161056a565b15610b8e5760405162461bcd60e51b815260040161045990610e42565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610abb610bf8565b4260018190556040517fd1dbb2ce8081405078443ef34dae718285114121a39370b14ef01b9d2b0a2083916109a791610ef3565b3390565b600060208284031215610c0d578081fd5b8135610c1881610efc565b9392505050565b60008060408385031215610c31578081fd5b8235610c3c81610efc565b946020939093013593505050565b600060208284031215610c5b578081fd5b81518015158114610c18578182fd5b600060208284031215610c7b578081fd5b8151610c1881610efc565b600060208284031215610c97578081fd5b5051919050565b6001600160a01b0391909116815260200190565b901515815260200190565b60208082526014908201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604082015260600190565b602080825260159082015274151a5b59590e881d1a5b59481b9bdd08195b991959605a1b604082015260600190565b6020808252602d908201527f436f72655265663a2043616c6c6572206973206e6f742061206775617264696160408201526c371037b91033b7bb32b93737b960991b606082015260800190565b60208082526027908201527f436f72655265663a2043616c6c6572206973206e6f7420612050435620636f6e6040820152663a3937b63632b960c91b606082015260800190565b6020808252603a908201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260408201527f6563697069656e74206d61792068617665207265766572746564000000000000606082015260800190565b6020808252601d908201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604082015260600190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b60208082526026908201527f457468504356447269707065723a207461726765742062616c616e636520746f6040820152650de40d0d2ced60d31b606082015260800190565b60208082526021908201527f436f72655265663a2043616c6c6572206973206e6f74206120676f7665726e6f6040820152603960f91b606082015260800190565b90815260200190565b6001600160a01b0381168114610f1157600080fd5b5056fea264697066735822122017db6ec4d005d37a97caa567682db6049528311104eb3394606581d67488aeeb64736f6c63430006060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000008d5ed43dca8c2f7dfb20cf7b53cc7e593635d7b9000000000000000000000000a08a721dfb595753fff335636674d76c455b275c0000000000000000000000000000000000000000000000000000000000000e1000000000000000000000000000000000000000000000010f0cf064dd59200000
-----Decoded View---------------
Arg [0] : _core (address): 0x8d5ED43dCa8C2F7dFB20CF7b53CC7E593635d7b9
Arg [1] : _target (address): 0xa08A721dFB595753FFf335636674D76C455B275C
Arg [2] : _frequency (uint256): 3600
Arg [3] : _amountToDrip (uint256): 5000000000000000000000
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000008d5ed43dca8c2f7dfb20cf7b53cc7e593635d7b9
Arg [1] : 000000000000000000000000a08a721dfb595753fff335636674d76c455b275c
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000e10
Arg [3] : 00000000000000000000000000000000000000000000010f0cf064dd59200000
Deployed Bytecode Sourcemap
170:1718:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;1805:90:6;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1805:90:6;;;:::i;:::-;;;;;;;;;;;;;;;;386:23;;5:9:-1;2:2;;;27:1;24;17:12;2:2;386:23:6;;;:::i;:::-;;;;;;;;380:27:2;;5:9:-1;2:2;;;27:1;24;17:12;2:2;380:27:2;;;:::i;2605:85:3:-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2605:85:3;;;:::i;:::-;;1191:172:2;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;1191:172:2;;;;;;;;:::i;1052:84:10:-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1052:84:10;;;:::i;1402:397:6:-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1402:397:6;;;:::i;3562:119:3:-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3562:119:3;;;:::i;306:24:6:-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;306:24:6;;;:::i;2287:129:3:-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;2287:129:3;;;;;;;;:::i;2469:81::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2469:81:3;;;:::i;2992:86::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2992:86:3;;;:::i;:::-;;;;;;;;1403:293:2;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1403:293:2;;;:::i;1092:161:6:-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1092:161:6;;;:::i;905:94::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;905:94:6;;;:::i;3365:115:3:-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3365:115:3;;;:::i;3195:92::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3195:92:3;;;:::i;297:29:2:-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;297:29:2;;;:::i;1779:107::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1779:107:2;;;:::i;2797:82:3:-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;2797:82:3;;;:::i;1805:90:6:-;1874:9;;:14;;1805:90;;:::o;386:23::-;;;;:::o;380:27:2:-;;;;:::o;2605:85:3:-;1436:5;;:28;;-1:-1:-1;;;1436:28:3;;:5;;;;-1:-1:-1;;;;;1436:5:3;;:16;;:28;;1453:10;;1436:28;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1436:28:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1436:28:3;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1436:28:3;;;;;;;;;:72;;;-1:-1:-1;1480:5:3;;:28;;-1:-1:-1;;;1480:28:3;;:5;;;;-1:-1:-1;;;;;1480:5:3;;:16;;:28;;1497:10;;1480:28;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1480:28:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1480:28:3;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1480:28:3;;;;;;;;;1415:164;;;;-1:-1:-1;;;1415:164:3;;;;;;;;;;;;;;;;;2673:10:::1;:8;:10::i;:::-;2605:85::o:0;1191:172:2:-;1083:5:3;;:33;;-1:-1:-1;;;1083:33:3;;:5;;;;-1:-1:-1;;;;;1083:5:3;;:21;;:33;;1105:10;;1083:33;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1083:33:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1083:33:3;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1083:33:3;;;;;;;;;1062:119;;;;-1:-1:-1;;;1062:119:3;;;;;;;;;1301:20:2::1;-1:-1:-1::0;;;;;1301:12:2;::::1;1314:6:::0;1301:20:::1;:12;:20;:::i;:::-;1346:2;-1:-1:-1::0;;;;;1335:22:2::1;;1350:6;1335:22;;;;;;;;;;;;;;;1191:172:::0;;:::o;1052:84:10:-;1099:4;1122:7;;;1052:84;:::o;1402:397:6:-;1449:7;1473:15;:13;:15::i;:::-;1468:72;;-1:-1:-1;1511:1:6;1504:8;;1468:72;1569:8;;1680:9;;1662:15;:27;1745:22;;;:47;;1782:10;1745:47;;;1770:9;1745:47;1738:54;;;;1402:397;:::o;3562:119:3:-;3616:7;3642;:5;:7::i;:::-;-1:-1:-1;;;;;3642:17:3;;3668:4;3642:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3642:32:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3642:32:3;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3642:32:3;;;;;;;;;3635:39;;3562:119;:::o;306:24:6:-;;;;:::o;2287:129:3:-;1260:5;;:28;;-1:-1:-1;;;1260:28:3;;:5;;;;-1:-1:-1;;;;;1260:5:3;;:16;;:28;;1277:10;;1260:28;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1260:28:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1260:28:3;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1260:28:3;;;;;;;;;1239:108;;;;-1:-1:-1;;;1239:108:3;;;;;;;;;2359:5:::1;:19:::0;;-1:-1:-1;;;;;;2359:19:3::1;;-1:-1:-1::0;;;;;2359:19:3;::::1;::::0;;::::1;::::0;;;::::1;::::0;;2393:16:::1;::::0;2359:19;;2393:16:::1;::::0;::::1;2287:129:::0;:::o;2469:81::-;1436:5;;:28;;-1:-1:-1;;;1436:28:3;;:5;;;;-1:-1:-1;;;;;1436:5:3;;:16;;:28;;1453:10;;1436:28;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1436:28:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1436:28:3;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1436:28:3;;;;;;;;;:72;;;-1:-1:-1;1480:5:3;;:28;;-1:-1:-1;;;1480:28:3;;:5;;;;-1:-1:-1;;;;;1480:5:3;;:16;;:28;;1497:10;;1480:28;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;1480:28:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1480:28:3;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;1480:28:3;;;;;;;;;1415:164;;;;-1:-1:-1;;;1415:164:3;;;;;;;;;2535:8:::1;:6;:8::i;2992:86::-:0;3037:4;3060:5;;;;;;;;;-1:-1:-1;;;;;3060:5:3;-1:-1:-1;;;;;3060:9:3;;:11;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;3060:11:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3060:11:3;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3060:11:3;;;;;;;;1403:293:2;789:13:6;:11;:13::i;:::-;781:47;;;;-1:-1:-1;;;781:47:6;;;;;;;;;1366:8:10::1;:6;:8::i;:::-;1365:9;1357:38;;;;-1:-1:-1::0;;;1357:38:10::1;;;;;;;;;1493:20:2::2;:18;:20::i;:::-;1485:71;;;;-1:-1:-1::0;;;1485:71:2::2;;;;;;;;;1588:12;:10;:12::i;:::-;1642;::::0;1625:6:::2;::::0;:30:::2;::::0;-1:-1:-1;;;;;1625:6:2;;::::2;::::0;:30:::2;:16;:30;:::i;:::-;1669:21;1677:12;;1669:21;;;;;;;;;;;;;;;1403:293::o:0;1092:161:6:-;1138:7;1175:16;:14;:16::i;:::-;1164:8;;:27;1157:34;;1092:161;:::o;905:94::-;949:4;972:15;:13;:15::i;:::-;:20;;-1:-1:-1;905:94:6;:::o;3365:115:3:-;3417:7;3443:5;:3;:5::i;3195:92::-;3242:6;3267:5;;;;;;;;;-1:-1:-1;;;;;3267:5:3;-1:-1:-1;;;;;3267:11:3;;:13;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;297:29:2;;;-1:-1:-1;;;;;297:29:2;;:::o;1779:107::-;1868:12;;1851:6;;-1:-1:-1;;;;;1851:6:2;:14;:29;1779:107;:::o;2797:82:3:-;2843:5;2867;;;;-1:-1:-1;;;;;2867:5:3;;2797:82::o;2064:117:10:-;1631:8;:6;:8::i;:::-;1623:41;;;;-1:-1:-1;;;1623:41:10;;;;;;;;;2132:5:::1;2122:15:::0;;-1:-1:-1;;2122:15:10::1;::::0;;2152:22:::1;2161:12;:10;:12::i;:::-;2152:22;;;;;;;2056:391:8::0;2170:6;2145:21;:31;;2137:73;;;;-1:-1:-1;;;2137:73:8;;;;;;;;;2299:12;2317:9;-1:-1:-1;;;;;2317:14:8;2340:6;2317:35;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;2298:54:8;;;2370:7;2362:78;;;;-1:-1:-1;;;2362:78:8;;;;;;;;;2056:391;;;:::o;1817:115:10:-;1366:8;:6;:8::i;:::-;1365:9;1357:38;;;;-1:-1:-1;;;1357:38:10;;;;;;;;;1876:7:::1;:14:::0;;-1:-1:-1;;1876:14:10::1;1886:4;1876:14;::::0;;1905:20:::1;1912:12;:10;:12::i;1901:234:6:-:0;2008:15;1996:9;:27;;;2101;;;;;;;;598:104:9;685:10;598:104;:::o;1042:241:-1:-;;1146:2;1134:9;1125:7;1121:23;1117:32;1114:2;;;-1:-1;;1152:12;1114:2;85:6;72:20;97:33;124:5;97:33;;;1204:63;1108:175;-1:-1;;;1108:175;1290:382;;;1419:2;1407:9;1398:7;1394:23;1390:32;1387:2;;;-1:-1;;1425:12;1387:2;230:6;217:20;242:41;277:5;242:41;;;1477:71;1585:2;1624:22;;;;831:20;;-1:-1;;;1381:291;1679:257;;1791:2;1779:9;1770:7;1766:23;1762:32;1759:2;;;-1:-1;;1797:12;1759:2;376:6;370:13;16086:5;14064:13;14057:21;16064:5;16061:32;16051:2;;-1:-1;;16097:12;1943:291;;2072:2;2060:9;2051:7;2047:23;2043:32;2040:2;;;-1:-1;;2078:12;2040:2;528:6;522:13;540:47;581:5;540:47;;2535:263;;2650:2;2638:9;2629:7;2625:23;2621:32;2618:2;;;-1:-1;;2656:12;2618:2;-1:-1;979:13;;2612:186;-1:-1;2612:186;7871:213;-1:-1;;;;;14374:54;;;;3041:45;;7989:2;7974:18;;7960:124;8579:201;14064:13;;14057:21;3283:34;;8691:2;8676:18;;8662:118;9523:407;9714:2;9728:47;;;4029:2;9699:18;;;13726:19;-1:-1;;;13766:14;;;4045:43;4107:12;;;9685:245;9937:407;10128:2;10142:47;;;4358:2;10113:18;;;13726:19;-1:-1;;;13766:14;;;4374:44;4437:12;;;10099:245;10351:407;10542:2;10556:47;;;4688:2;10527:18;;;13726:19;4724:34;13766:14;;;4704:55;-1:-1;;;4779:12;;;4772:37;4828:12;;;10513:245;10765:407;10956:2;10970:47;;;5079:2;10941:18;;;13726:19;5115:34;13766:14;;;5095:55;-1:-1;;;5170:12;;;5163:31;5213:12;;;10927:245;11179:407;11370:2;11384:47;;;5464:2;11355:18;;;13726:19;5500:34;13766:14;;;5480:55;5569:28;5555:12;;;5548:50;5617:12;;;11341:245;11593:407;11784:2;11798:47;;;5868:2;11769:18;;;13726:19;5904:31;13766:14;;;5884:52;5955:12;;;11755:245;12007:407;12198:2;12212:47;;;6206:2;12183:18;;;13726:19;-1:-1;;;13766:14;;;6222:39;6280:12;;;12169:245;12421:407;12612:2;12626:47;;;6531:2;12597:18;;;13726:19;6567:34;13766:14;;;6547:55;-1:-1;;;6622:12;;;6615:30;6664:12;;;12583:245;12835:407;13026:2;13040:47;;;7220:2;13011:18;;;13726:19;7256:34;13766:14;;;7236:55;-1:-1;;;7311:12;;;7304:25;7348:12;;;12997:245;13249:213;7445:37;;;13367:2;13352:18;;13338:124;15741:117;-1:-1;;;;;14374:54;;15800:35;;15790:2;;15849:1;;15839:12;15790:2;15784:74;
Swarm Source
ipfs://17db6ec4d005d37a97caa567682db6049528311104eb3394606581d67488aeeb
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Token Allocations
ETH
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $2,006.62 | 0.000000000000000004 | <$0.000001 |
Loading...
Loading
Loading...
Loading
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.