Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 394 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Release | 15395956 | 751 days ago | IN | 0 ETH | 0.00046629 | ||||
Release | 14946375 | 823 days ago | IN | 0 ETH | 0.00159908 | ||||
Release | 14833141 | 842 days ago | IN | 0 ETH | 0.0011122 | ||||
Release | 14250246 | 934 days ago | IN | 0 ETH | 0.0082269 | ||||
Release | 13947115 | 980 days ago | IN | 0 ETH | 0.01125258 | ||||
Release | 13931625 | 983 days ago | IN | 0 ETH | 0.00607245 | ||||
Release | 13924833 | 984 days ago | IN | 0 ETH | 0.00561341 | ||||
Release | 13923794 | 984 days ago | IN | 0 ETH | 0.00532093 | ||||
Release | 13881079 | 991 days ago | IN | 0 ETH | 0.00260231 | ||||
Release | 13881052 | 991 days ago | IN | 0 ETH | 0.00280347 | ||||
Release | 13881052 | 991 days ago | IN | 0 ETH | 0.00280347 | ||||
Release | 13874499 | 992 days ago | IN | 0 ETH | 0.00418283 | ||||
Release | 13867770 | 993 days ago | IN | 0 ETH | 0.00411712 | ||||
Release | 13866167 | 993 days ago | IN | 0 ETH | 0.00347439 | ||||
Release | 13863807 | 993 days ago | IN | 0 ETH | 0.00486343 | ||||
Release | 13862380 | 994 days ago | IN | 0 ETH | 0.00385485 | ||||
Release | 13857494 | 994 days ago | IN | 0 ETH | 0.00899761 | ||||
Release | 13856494 | 994 days ago | IN | 0 ETH | 0.00506141 | ||||
Release | 13856149 | 995 days ago | IN | 0 ETH | 0.00537048 | ||||
Release | 13855072 | 995 days ago | IN | 0 ETH | 0.00355011 | ||||
Release | 13854596 | 995 days ago | IN | 0 ETH | 0.00230849 | ||||
Release | 13853531 | 995 days ago | IN | 0 ETH | 0.00417174 | ||||
Release | 13852728 | 995 days ago | IN | 0 ETH | 0.00477411 | ||||
Release | 13852481 | 995 days ago | IN | 0 ETH | 0.00473038 | ||||
Release | 13852374 | 995 days ago | IN | 0 ETH | 0.00693532 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
12667052 | 1180 days ago | 187.36603286 ETH | ||||
12635285 | 1185 days ago | 0.2922785 ETH | ||||
12363121 | 1227 days ago | 0.03806774 ETH | ||||
12348783 | 1230 days ago | 0.06965443 ETH | ||||
12340256 | 1231 days ago | 0.27495157 ETH | ||||
12320587 | 1234 days ago | 0.03457432 ETH | ||||
12313255 | 1235 days ago | 0.1436192 ETH | ||||
12311941 | 1235 days ago | 0.05390694 ETH | ||||
12311639 | 1235 days ago | 0.03833011 ETH | ||||
12310341 | 1236 days ago | 0.16567841 ETH | ||||
12309184 | 1236 days ago | 0.30032159 ETH | ||||
12309176 | 1236 days ago | 2.30032159 ETH | ||||
12306853 | 1236 days ago | 0.07799234 ETH | ||||
12305510 | 1236 days ago | 0.36412974 ETH | ||||
12305242 | 1236 days ago | 0.21035216 ETH | ||||
12305232 | 1236 days ago | 1.33295882 ETH | ||||
12305159 | 1236 days ago | 0.19401669 ETH | ||||
12305030 | 1236 days ago | 0.15393725 ETH | ||||
12303395 | 1237 days ago | 0.1071715 ETH | ||||
12264728 | 1243 days ago | 0.69938873 ETH | ||||
12160421 | 1259 days ago | 974.54803973 ETH | ||||
12150607 | 1260 days ago | 0.43440381 ETH | ||||
12149072 | 1260 days ago | 0.32903392 ETH | ||||
12149072 | 1260 days ago | 157.5000003 ETH | ||||
12130257 | 1263 days ago | 0.22348166 ETH |
Loading...
Loading
Contract Name:
Presale
Compiler Version
v0.7.6+commit.7338295f
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.7.6; import {IERC20} from '@openzeppelin/contracts/token/ERC20/IERC20.sol'; import {SafeMath} from '@openzeppelin/contracts/math/SafeMath.sol'; import {Ownable} from '@openzeppelin/contracts/access/Ownable.sol'; import { AggregatorV3Interface } from '@chainlink/contracts/src/v0.6/interfaces/AggregatorV3Interface.sol'; contract Presale is Ownable { using SafeMath for uint256; // ERC20 tokens IERC20 public dpx; // Structure of each vest struct Vest { uint256 amount; // the amount of DPX the beneficiary will recieve uint256 released; // the amount of DPX released to the beneficiary bool ethTransferred; // whether the beneficiary has transferred the eth into the contract } // The mapping of vested beneficiary (beneficiary address => Vest) mapping(address => Vest) public vestedBeneficiaries; // beneficiary => eth deposited mapping(address => uint256) public ethDeposits; // Array of beneficiaries address[] public beneficiaries; // No. of beneficiaries uint256 public noOfBeneficiaries; // Whether the contract has been bootstrapped with the DPX bool public bootstrapped; // Start time of the the vesting uint256 public startTime; // The duration of the vesting uint256 public duration; // Price of each DPX token in usd (1e8 precision) uint256 public dpxPrice; // ETH/USD chainlink price aggregator AggregatorV3Interface internal priceFeed; constructor(address _priceFeedAddress, uint256 _dpxPrice) { require(_priceFeedAddress != address(0), 'Price feed address cannot be 0'); require(_dpxPrice > 0, 'DPX price has to be higher than 0'); priceFeed = AggregatorV3Interface(_priceFeedAddress); dpxPrice = _dpxPrice; addBeneficiary(0x0330414bBF9491445c102A2a8a14adB9b6a25384, uint256(5000).mul(1e18)); addBeneficiary(0x5FB8b9512684d451D4E585A1a0AabFB48A253C67, uint256(1000).mul(1e18)); addBeneficiary(0x9846338e0726d317280346c5003Db365745433D7, uint256(1200).mul(1e18)); addBeneficiary(0x2d9Bd03312814a34E6706bC81A3593788716d16a, uint256(500).mul(1e18)); addBeneficiary(0x9c5083dd4838E120Dbeac44C052179692Aa5dAC5, uint256(10000).mul(1e18)); addBeneficiary(0x0E6Aa54f683dFFC3D6BDb4057Bdb47cBc18975E7, uint256(10000).mul(1e18)); addBeneficiary(0x3E46bb5a8A10c9CA522df0b25036930cb45b0fb3, uint256(6000).mul(1e18)); addBeneficiary(0xE5442814c0d31bF9f67676B72838C0E64E9c7B4e, uint256(240).mul(1e18)); } /*---- EXTERNAL FUNCTIONS FOR OWNER ----*/ /** * @notice Bootstraps the presale contract * @param _startTime the time (as Unix time) at which point vesting starts * @param _duration duration in seconds of the period in which the tokens will vest * @param _dpxAddress address of dpx erc20 token */ function bootstrap( uint256 _startTime, uint256 _duration, address _dpxAddress ) external onlyOwner returns (bool) { require(_dpxAddress != address(0), 'DPX address is 0'); require(_duration > 0, 'Duration passed cannot be 0'); require(_startTime > block.timestamp, 'Start time cannot be before current time'); startTime = _startTime; duration = _duration; dpx = IERC20(_dpxAddress); uint256 totalDPXRequired; for (uint256 i = 0; i < beneficiaries.length; i = i + 1) { totalDPXRequired = totalDPXRequired.add(vestedBeneficiaries[beneficiaries[i]].amount); } require(totalDPXRequired > 0, 'Total DPX required cannot be 0'); dpx.transferFrom(msg.sender, address(this), totalDPXRequired); bootstrapped = true; emit Bootstrap(totalDPXRequired); return bootstrapped; } /** * @notice Adds a beneficiary to the contract. Only owner can call this. * @param _beneficiary the address of the beneficiary * @param _amount amount of DPX to be vested for the beneficiary */ function addBeneficiary(address _beneficiary, uint256 _amount) public onlyOwner returns (bool) { require(_beneficiary != address(0), 'Beneficiary cannot be a 0 address'); require(_amount > 0, 'Amount should be larger than 0'); require(!bootstrapped, 'Cannot add beneficiary as contract has been bootstrapped'); require(vestedBeneficiaries[_beneficiary].amount == 0, 'Cannot add the same beneficiary again'); beneficiaries.push(_beneficiary); vestedBeneficiaries[_beneficiary].amount = _amount; noOfBeneficiaries = noOfBeneficiaries.add(1); emit AddBeneficiary(_beneficiary, _amount); return true; } /** * @notice Updates beneficiary amount. Only owner can call this. * @param _beneficiary the address of the beneficiary * @param _amount amount of DPX to be vested for the beneficiary */ function updateBeneficiary(address _beneficiary, uint256 _amount) external onlyOwner { require(_beneficiary != address(0), 'Beneficiary cannot be a 0 address'); require(!bootstrapped, 'Cannot update beneficiary as contract has been bootstrapped'); require( vestedBeneficiaries[_beneficiary].amount != _amount, 'New amount cannot be the same as old amount' ); require( !vestedBeneficiaries[_beneficiary].ethTransferred, 'Beneficiary should have not transferred ETH' ); require(_amount > 0, 'Amount cannot be smaller or equal to 0'); require(vestedBeneficiaries[_beneficiary].amount != 0, 'Beneficiary has not been added'); vestedBeneficiaries[_beneficiary].amount = _amount; emit UpdateBeneficiary(_beneficiary, _amount); } /** * @notice Removes a beneficiary from the contract. Only owner can call this. * @param _beneficiary the address of the beneficiary * @return whether beneficiary was deleted */ function removeBeneficiary(address payable _beneficiary) external onlyOwner returns (bool) { require(_beneficiary != address(0), 'Beneficiary cannot be a 0 address'); require(!bootstrapped, 'Cannot remove beneficiary as contract has been bootstrapped'); if (vestedBeneficiaries[_beneficiary].ethTransferred) { _beneficiary.transfer(ethDeposits[_beneficiary]); } for (uint256 i = 0; i < beneficiaries.length; i = i + 1) { if (beneficiaries[i] == _beneficiary) { noOfBeneficiaries = noOfBeneficiaries.sub(1); delete beneficiaries[i]; delete vestedBeneficiaries[_beneficiary]; emit RemoveBeneficiary(_beneficiary); return true; } } return false; } /** * @notice Withdraws eth deposited into the contract. Only owner can call this. */ function withdraw() external onlyOwner { uint256 ethBalance = payable(address(this)).balance; payable(msg.sender).transfer(ethBalance); emit WithdrawEth(ethBalance); } /*---- EXTERNAL FUNCTIONS ----*/ /** * @notice Transfers eth from beneficiary to the contract. */ function transferEth() external payable returns (uint256 ethAmount) { require( !vestedBeneficiaries[msg.sender].ethTransferred, 'Beneficiary has already transferred ETH' ); require(vestedBeneficiaries[msg.sender].amount > 0, 'Sender is not a beneficiary'); uint256 ethPrice = getLatestPrice(); ethAmount = vestedBeneficiaries[msg.sender].amount.mul(dpxPrice).div(ethPrice); require(msg.value >= ethAmount, 'Incorrect ETH amount sent'); if (msg.value > ethAmount) { payable(msg.sender).transfer(msg.value.sub(ethAmount)); } ethDeposits[msg.sender] = ethAmount; vestedBeneficiaries[msg.sender].ethTransferred = true; emit TransferredEth(msg.sender, ethAmount, ethPrice); } /** * @notice Transfers vested tokens to beneficiary. */ function release() external returns (uint256 unreleased) { require(bootstrapped, 'Contract has not been bootstrapped'); require(vestedBeneficiaries[msg.sender].ethTransferred, 'Beneficiary has not transferred eth'); unreleased = releasableAmount(msg.sender); require(unreleased > 0, 'No releasable amount'); vestedBeneficiaries[msg.sender].released = vestedBeneficiaries[msg.sender].released.add( unreleased ); dpx.transfer(msg.sender, unreleased); emit TokensReleased(msg.sender, unreleased); } /*---- VIEWS ----*/ /** * @notice Calculates the amount that has already vested but hasn't been released yet. * @param beneficiary address of the beneficiary */ function releasableAmount(address beneficiary) public view returns (uint256) { return vestedAmount(beneficiary).sub(vestedBeneficiaries[beneficiary].released); } /** * @notice Calculates the amount that has already vested. * @param beneficiary address of the beneficiary */ function vestedAmount(address beneficiary) public view returns (uint256) { uint256 totalBalance = vestedBeneficiaries[beneficiary].amount; if (block.timestamp < startTime) { return 0; } else if (block.timestamp >= startTime.add(duration)) { return totalBalance; } else { uint256 halfTotalBalance = totalBalance.div(2); return halfTotalBalance.mul(block.timestamp.sub(startTime)).div(duration).add(halfTotalBalance); } } /** * @notice Returns the latest price for ETH/USD */ function getLatestPrice() public view returns (uint256) { (, int256 price, , , ) = priceFeed.latestRoundData(); return uint256(price); } /*---- EVENTS ----*/ event TokensReleased(address beneficiary, uint256 amount); event AddBeneficiary(address beneficiary, uint256 amount); event RemoveBeneficiary(address beneficiary); event UpdateBeneficiary(address beneficiary, uint256 amount); event TransferredEth(address beneficiary, uint256 ethAmount, uint256 ethPrice); event WithdrawEth(uint256 amount); event Bootstrap(uint256 totalDPXRequired); }
// 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 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: MIT pragma solidity >=0.6.0 <0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor () internal { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.6.0; interface AggregatorV3Interface { function decimals() external view returns (uint8); function description() external view returns (string memory); function version() external view returns (uint256); // getRoundData and latestRoundData should both raise "No data present" // if they do not have data to report, instead of returning unset values // which could be misinterpreted as actual reported values. function getRoundData(uint80 _roundId) external view returns ( uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound ); function latestRoundData() external view returns ( uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound ); }
// 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; } }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_priceFeedAddress","type":"address"},{"internalType":"uint256","name":"_dpxPrice","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"AddBeneficiary","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"totalDPXRequired","type":"uint256"}],"name":"Bootstrap","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"}],"name":"RemoveBeneficiary","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensReleased","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"ethAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethPrice","type":"uint256"}],"name":"TransferredEth","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"beneficiary","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"UpdateBeneficiary","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WithdrawEth","type":"event"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"addBeneficiary","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"beneficiaries","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_startTime","type":"uint256"},{"internalType":"uint256","name":"_duration","type":"uint256"},{"internalType":"address","name":"_dpxAddress","type":"address"}],"name":"bootstrap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"bootstrapped","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dpx","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dpxPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"duration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ethDeposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLatestPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"noOfBeneficiaries","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"beneficiary","type":"address"}],"name":"releasableAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"release","outputs":[{"internalType":"uint256","name":"unreleased","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_beneficiary","type":"address"}],"name":"removeBeneficiary","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transferEth","outputs":[{"internalType":"uint256","name":"ethAmount","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_beneficiary","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"updateBeneficiary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"beneficiary","type":"address"}],"name":"vestedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"vestedBeneficiaries","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"released","type":"uint256"},{"internalType":"bool","name":"ethTransferred","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604051620036d9380380620036d9833981810160405260408110156200003757600080fd5b810190808051906020019092919080519060200190929190505050600062000064620004a060201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620001a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f5072696365206665656420616464726573732063616e6e6f742062652030000081525060200191505060405180910390fd5b6000811162000201576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180620036b86021913960400191505060405180910390fd5b81600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060098190555062000292730330414bbf9491445c102a2a8a14adb9b6a2538462000286670de0b6b3a7640000611388620004a860201b6200278f1790919060201c565b6200053360201b60201c565b50620002dc735fb8b9512684d451d4e585a1a0aabfb48a253c67620002d0670de0b6b3a76400006103e8620004a860201b6200278f1790919060201c565b6200053360201b60201c565b5062000326739846338e0726d317280346c5003db365745433d76200031a670de0b6b3a76400006104b0620004a860201b6200278f1790919060201c565b6200053360201b60201c565b5062000370732d9bd03312814a34e6706bc81a3593788716d16a62000364670de0b6b3a76400006101f4620004a860201b6200278f1790919060201c565b6200053360201b60201c565b50620003ba739c5083dd4838e120dbeac44c052179692aa5dac5620003ae670de0b6b3a7640000612710620004a860201b6200278f1790919060201c565b6200053360201b60201c565b5062000404730e6aa54f683dffc3d6bdb4057bdb47cbc18975e7620003f8670de0b6b3a7640000612710620004a860201b6200278f1790919060201c565b6200053360201b60201c565b506200044e733e46bb5a8a10c9ca522df0b25036930cb45b0fb362000442670de0b6b3a7640000611770620004a860201b6200278f1790919060201c565b6200053360201b60201c565b506200049773e5442814c0d31bf9f67676b72838c0e64e9c7b4e6200048b670de0b6b3a764000060f0620004a860201b6200278f1790919060201c565b6200053360201b60201c565b505050620009d7565b600033905090565b600080831415620004bd57600090506200052d565b6000828402905082848281620004cf57fe5b041462000528576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806200365f6021913960400191505060405180910390fd5b809150505b92915050565b600062000545620004a060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166200056b6200092560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620005f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156200067d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806200363e6021913960400191505060405180910390fd5b60008211620006f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f416d6f756e742073686f756c64206265206c6172676572207468616e2030000081525060200191505060405180910390fd5b600660009054906101000a900460ff16156200075c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180620036806038913960400191505060405180910390fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414620007f9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180620036196025913960400191505060405180910390fd5b6004839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550620008c060016005546200094e60201b620028151790919060201c565b6005819055507f2cff1fbd97349296439d092211657ee417f89f6189b60a2ec990d7384c3bb82c8383604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a16001905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080828401905083811015620009cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b612c3280620009e76000396000f3fe6080604052600436106101355760003560e01c806386d1a69f116100ab578063b9d1ed4a1161006f578063b9d1ed4a146104d9578063bfb8aea91461053e578063ca5c7052146105b3578063efeb5e581461062e578063f2fde38b14610693578063fcb9b505146106e457610135565b806386d1a69f146103a65780638da5cb5b146103d15780638e15f4731461041257806396074e701461043d578063967a400d146104ae57610135565b80633ccfd60b116100fd5780633ccfd60b1461028757806343365f8c1461029e57806359633a1c146102df5780635985268614610346578063715018a61461036457806378e979251461037b57610135565b80630fb5a6b41461013a5780631726cbc8146101655780632edef73b146101ca57806335142c8c146101f5578063384711cc14610222575b600080fd5b34801561014657600080fd5b5061014f61073f565b6040518082815260200191505060405180910390f35b34801561017157600080fd5b506101b46004803603602081101561018857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610745565b6040518082815260200191505060405180910390f35b3480156101d657600080fd5b506101df6107ab565b6040518082815260200191505060405180910390f35b34801561020157600080fd5b5061020a6107b1565b60405180821515815260200191505060405180910390f35b34801561022e57600080fd5b506102716004803603602081101561024557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107c4565b6040518082815260200191505060405180910390f35b34801561029357600080fd5b5061029c6108b5565b005b3480156102aa57600080fd5b506102b3610a01565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102eb57600080fd5b5061032e6004803603602081101561030257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a27565b60405180821515815260200191505060405180910390f35b61034e610e44565b6040518082815260200191505060405180910390f35b34801561037057600080fd5b506103796111f3565b005b34801561038757600080fd5b50610390611360565b6040518082815260200191505060405180910390f35b3480156103b257600080fd5b506103bb611366565b6040518082815260200191505060405180910390f35b3480156103dd57600080fd5b506103e66116b5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561041e57600080fd5b506104276116de565b6040518082815260200191505060405180910390f35b34801561044957600080fd5b506104966004803603604081101561046057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117b9565b60405180821515815260200191505060405180910390f35b3480156104ba57600080fd5b506104c3611b8c565b6040518082815260200191505060405180910390f35b3480156104e557600080fd5b50610528600480360360208110156104fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b92565b6040518082815260200191505060405180910390f35b34801561054a57600080fd5b5061058d6004803603602081101561056157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611baa565b604051808481526020018381526020018215158152602001935050505060405180910390f35b3480156105bf57600080fd5b50610616600480360360608110156105d657600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611be1565b60405180821515815260200191505060405180910390f35b34801561063a57600080fd5b506106676004803603602081101561065157600080fd5b81019080803590602001909291905050506120d0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561069f57600080fd5b506106e2600480360360208110156106b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061210f565b005b3480156106f057600080fd5b5061073d6004803603604081101561070757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612301565b005b60085481565b60006107a4600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154610796846107c4565b61289d90919063ffffffff16565b9050919050565b60055481565b600660009054906101000a900460ff1681565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506007544210156108205760009150506108b0565b61083760085460075461281590919063ffffffff16565b421061084657809150506108b0565b600061085c60028361292090919063ffffffff16565b90506108ab8161089d60085461088f6108806007544261289d90919063ffffffff16565b8661278f90919063ffffffff16565b61292090919063ffffffff16565b61281590919063ffffffff16565b925050505b919050565b6108bd6129a9565b73ffffffffffffffffffffffffffffffffffffffff166108db6116b5565b73ffffffffffffffffffffffffffffffffffffffff1614610964576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60003073ffffffffffffffffffffffffffffffffffffffff163190503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156109c6573d6000803e3d6000fd5b507fb2a3fd05447b0260cac7f8db72bfb10790a24739428c6d3abe439e09fcac37f9816040518082815260200191505060405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610a316129a9565b73ffffffffffffffffffffffffffffffffffffffff16610a4f6116b5565b73ffffffffffffffffffffffffffffffffffffffff1614610ad8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612a8a6021913960400191505060405180910390fd5b600660009054906101000a900460ff1615610bc4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001806129d8603b913960400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff1615610ca0578173ffffffffffffffffffffffffffffffffffffffff166108fc600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549081150290604051600060405180830381858888f19350505050158015610c9e573d6000803e3d6000fd5b505b60005b600480549050811015610e39578273ffffffffffffffffffffffffffffffffffffffff1660048281548110610cd457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610e2e57610d31600160055461289d90919063ffffffff16565b60058190555060048181548110610d4457fe5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549060ff021916905550507f49ed5a425b7b67ea44959f73b24f6619d66c387d763a7217b9dc7980801b44b083604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a16001915050610e3f565b600181019050610ca3565b50600090505b919050565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff1615610eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180612a636027913960400191505060405180910390fd5b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411610fa4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f53656e646572206973206e6f7420612062656e6566696369617279000000000081525060200191505060405180910390fd5b6000610fae6116de565b90506110198161100b600954600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461278f90919063ffffffff16565b61292090919063ffffffff16565b915081341015611091576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f496e636f72726563742045544820616d6f756e742073656e740000000000000081525060200191505060405180910390fd5b813411156110f3573373ffffffffffffffffffffffffffffffffffffffff166108fc6110c6843461289d90919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156110f1573d6000803e3d6000fd5b505b81600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055507fba4b754d936ef03421029246a95f4fa3994d19dfdf96761d1aa82dc2a06bc411338383604051808473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a15090565b6111fb6129a9565b73ffffffffffffffffffffffffffffffffffffffff166112196116b5565b73ffffffffffffffffffffffffffffffffffffffff16146112a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60075481565b6000600660009054906101000a900460ff166113cd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612acc6022913960400191505060405180910390fd5b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16611472576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612aee6023913960400191505060405180910390fd5b61147b33610745565b9050600081116114f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4e6f2072656c65617361626c6520616d6f756e7400000000000000000000000081525060200191505060405180910390fd5b61154881600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461281590919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561162157600080fd5b505af1158015611635573d6000803e3d6000fd5b505050506040513d602081101561164b57600080fd5b8101908080519060200190929190505050507fc7798891864187665ac6dd119286e44ec13f014527aeeb2b8eb3fd413df931793382604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a190565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b15801561174957600080fd5b505afa15801561175d573d6000803e3d6000fd5b505050506040513d60a081101561177357600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050505050509150508091505090565b60006117c36129a9565b73ffffffffffffffffffffffffffffffffffffffff166117e16116b5565b73ffffffffffffffffffffffffffffffffffffffff161461186a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118f0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612a8a6021913960400191505060405180910390fd5b60008211611966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f416d6f756e742073686f756c64206265206c6172676572207468616e2030000081525060200191505060405180910390fd5b600660009054906101000a900460ff16156119cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180612b396038913960400191505060405180910390fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414611a67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612a3e6025913960400191505060405180910390fd5b6004839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550611b27600160055461281590919063ffffffff16565b6005819055507f2cff1fbd97349296439d092211657ee417f89f6189b60a2ec990d7384c3bb82c8383604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a16001905092915050565b60095481565b60036020528060005260406000206000915090505481565b60026020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900460ff16905083565b6000611beb6129a9565b73ffffffffffffffffffffffffffffffffffffffff16611c096116b5565b73ffffffffffffffffffffffffffffffffffffffff1614611c92576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d35576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f445058206164647265737320697320300000000000000000000000000000000081525060200191505060405180910390fd5b60008311611dab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4475726174696f6e207061737365642063616e6e6f742062652030000000000081525060200191505060405180910390fd5b428411611e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612b116028913960400191505060405180910390fd5b836007819055508260088190555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600080600090505b600480549050811015611f0057611ef36002600060048481548110611e7b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001548361281590919063ffffffff16565b9150600181019050611e5a565b5060008111611f77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f546f74616c204450582072657175697265642063616e6e6f742062652030000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561202857600080fd5b505af115801561203c573d6000803e3d6000fd5b505050506040513d602081101561205257600080fd5b8101908080519060200190929190505050506001600660006101000a81548160ff0219169083151502179055507fb5ca1ca1b7b47549eb8af476f3ef702fc63bcd8b8c01dc163b009bb818f97997816040518082815260200191505060405180910390a1600660009054906101000a900460ff169150509392505050565b600481815481106120e057600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6121176129a9565b73ffffffffffffffffffffffffffffffffffffffff166121356116b5565b73ffffffffffffffffffffffffffffffffffffffff16146121be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612244576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806129b26026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6123096129a9565b73ffffffffffffffffffffffffffffffffffffffff166123276116b5565b73ffffffffffffffffffffffffffffffffffffffff16146123b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612436576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612a8a6021913960400191505060405180910390fd5b600660009054906101000a900460ff161561249c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180612b71603b913960400191505060405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415612537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180612a13602b913960400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16156125dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180612bd2602b913960400191505060405180910390fd5b60008111612636576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612bac6026913960400191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156126ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f42656e656669636961727920686173206e6f74206265656e206164646564000081525060200191505060405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055507f8f58c1877847062a1a2cc850a91389b4fad163cff482c1f465d579aa5b87ef5c8282604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b6000808314156127a2576000905061280f565b60008284029050828482816127b357fe5b041461280a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612aab6021913960400191505060405180910390fd5b809150505b92915050565b600080828401905083811015612893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600082821115612915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b6000808211612997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b8183816129a057fe5b04905092915050565b60003390509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737343616e6e6f742072656d6f76652062656e656669636961727920617320636f6e747261637420686173206265656e20626f6f7473747261707065644e657720616d6f756e742063616e6e6f74206265207468652073616d65206173206f6c6420616d6f756e7443616e6e6f7420616464207468652073616d652062656e656669636961727920616761696e42656e65666963696172792068617320616c7265616479207472616e736665727265642045544842656e65666963696172792063616e6e6f74206265206120302061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420686173206e6f74206265656e20626f6f74737472617070656442656e656669636961727920686173206e6f74207472616e736665727265642065746853746172742074696d652063616e6e6f74206265206265666f72652063757272656e742074696d6543616e6e6f74206164642062656e656669636961727920617320636f6e747261637420686173206265656e20626f6f74737472617070656443616e6e6f74207570646174652062656e656669636961727920617320636f6e747261637420686173206265656e20626f6f747374726170706564416d6f756e742063616e6e6f7420626520736d616c6c6572206f7220657175616c20746f203042656e65666963696172792073686f756c642068617665206e6f74207472616e7366657272656420455448a2646970667358221220635b69fe3a72b9d48f685a62873a74353df8d15c7959846b005093b8a72772ca64736f6c6343000706003343616e6e6f7420616464207468652073616d652062656e656669636961727920616761696e42656e65666963696172792063616e6e6f74206265206120302061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7743616e6e6f74206164642062656e656669636961727920617320636f6e747261637420686173206265656e20626f6f7473747261707065644450582070726963652068617320746f20626520686967686572207468616e20300000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b8419000000000000000000000000000000000000000000000000000000012a05f200
Deployed Bytecode
0x6080604052600436106101355760003560e01c806386d1a69f116100ab578063b9d1ed4a1161006f578063b9d1ed4a146104d9578063bfb8aea91461053e578063ca5c7052146105b3578063efeb5e581461062e578063f2fde38b14610693578063fcb9b505146106e457610135565b806386d1a69f146103a65780638da5cb5b146103d15780638e15f4731461041257806396074e701461043d578063967a400d146104ae57610135565b80633ccfd60b116100fd5780633ccfd60b1461028757806343365f8c1461029e57806359633a1c146102df5780635985268614610346578063715018a61461036457806378e979251461037b57610135565b80630fb5a6b41461013a5780631726cbc8146101655780632edef73b146101ca57806335142c8c146101f5578063384711cc14610222575b600080fd5b34801561014657600080fd5b5061014f61073f565b6040518082815260200191505060405180910390f35b34801561017157600080fd5b506101b46004803603602081101561018857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610745565b6040518082815260200191505060405180910390f35b3480156101d657600080fd5b506101df6107ab565b6040518082815260200191505060405180910390f35b34801561020157600080fd5b5061020a6107b1565b60405180821515815260200191505060405180910390f35b34801561022e57600080fd5b506102716004803603602081101561024557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107c4565b6040518082815260200191505060405180910390f35b34801561029357600080fd5b5061029c6108b5565b005b3480156102aa57600080fd5b506102b3610a01565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102eb57600080fd5b5061032e6004803603602081101561030257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a27565b60405180821515815260200191505060405180910390f35b61034e610e44565b6040518082815260200191505060405180910390f35b34801561037057600080fd5b506103796111f3565b005b34801561038757600080fd5b50610390611360565b6040518082815260200191505060405180910390f35b3480156103b257600080fd5b506103bb611366565b6040518082815260200191505060405180910390f35b3480156103dd57600080fd5b506103e66116b5565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561041e57600080fd5b506104276116de565b6040518082815260200191505060405180910390f35b34801561044957600080fd5b506104966004803603604081101561046057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506117b9565b60405180821515815260200191505060405180910390f35b3480156104ba57600080fd5b506104c3611b8c565b6040518082815260200191505060405180910390f35b3480156104e557600080fd5b50610528600480360360208110156104fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b92565b6040518082815260200191505060405180910390f35b34801561054a57600080fd5b5061058d6004803603602081101561056157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611baa565b604051808481526020018381526020018215158152602001935050505060405180910390f35b3480156105bf57600080fd5b50610616600480360360608110156105d657600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611be1565b60405180821515815260200191505060405180910390f35b34801561063a57600080fd5b506106676004803603602081101561065157600080fd5b81019080803590602001909291905050506120d0565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561069f57600080fd5b506106e2600480360360208110156106b657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061210f565b005b3480156106f057600080fd5b5061073d6004803603604081101561070757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612301565b005b60085481565b60006107a4600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154610796846107c4565b61289d90919063ffffffff16565b9050919050565b60055481565b600660009054906101000a900460ff1681565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015490506007544210156108205760009150506108b0565b61083760085460075461281590919063ffffffff16565b421061084657809150506108b0565b600061085c60028361292090919063ffffffff16565b90506108ab8161089d60085461088f6108806007544261289d90919063ffffffff16565b8661278f90919063ffffffff16565b61292090919063ffffffff16565b61281590919063ffffffff16565b925050505b919050565b6108bd6129a9565b73ffffffffffffffffffffffffffffffffffffffff166108db6116b5565b73ffffffffffffffffffffffffffffffffffffffff1614610964576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60003073ffffffffffffffffffffffffffffffffffffffff163190503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156109c6573d6000803e3d6000fd5b507fb2a3fd05447b0260cac7f8db72bfb10790a24739428c6d3abe439e09fcac37f9816040518082815260200191505060405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610a316129a9565b73ffffffffffffffffffffffffffffffffffffffff16610a4f6116b5565b73ffffffffffffffffffffffffffffffffffffffff1614610ad8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610b5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612a8a6021913960400191505060405180910390fd5b600660009054906101000a900460ff1615610bc4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001806129d8603b913960400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff1615610ca0578173ffffffffffffffffffffffffffffffffffffffff166108fc600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549081150290604051600060405180830381858888f19350505050158015610c9e573d6000803e3d6000fd5b505b60005b600480549050811015610e39578273ffffffffffffffffffffffffffffffffffffffff1660048281548110610cd457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610e2e57610d31600160055461289d90919063ffffffff16565b60058190555060048181548110610d4457fe5b9060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008082016000905560018201600090556002820160006101000a81549060ff021916905550507f49ed5a425b7b67ea44959f73b24f6619d66c387d763a7217b9dc7980801b44b083604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a16001915050610e3f565b600181019050610ca3565b50600090505b919050565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff1615610eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180612a636027913960400191505060405180910390fd5b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015411610fa4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f53656e646572206973206e6f7420612062656e6566696369617279000000000081525060200191505060405180910390fd5b6000610fae6116de565b90506110198161100b600954600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461278f90919063ffffffff16565b61292090919063ffffffff16565b915081341015611091576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f496e636f72726563742045544820616d6f756e742073656e740000000000000081525060200191505060405180910390fd5b813411156110f3573373ffffffffffffffffffffffffffffffffffffffff166108fc6110c6843461289d90919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156110f1573d6000803e3d6000fd5b505b81600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160006101000a81548160ff0219169083151502179055507fba4b754d936ef03421029246a95f4fa3994d19dfdf96761d1aa82dc2a06bc411338383604051808473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390a15090565b6111fb6129a9565b73ffffffffffffffffffffffffffffffffffffffff166112196116b5565b73ffffffffffffffffffffffffffffffffffffffff16146112a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60075481565b6000600660009054906101000a900460ff166113cd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612acc6022913960400191505060405180910390fd5b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16611472576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612aee6023913960400191505060405180910390fd5b61147b33610745565b9050600081116114f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4e6f2072656c65617361626c6520616d6f756e7400000000000000000000000081525060200191505060405180910390fd5b61154881600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001015461281590919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010181905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561162157600080fd5b505af1158015611635573d6000803e3d6000fd5b505050506040513d602081101561164b57600080fd5b8101908080519060200190929190505050507fc7798891864187665ac6dd119286e44ec13f014527aeeb2b8eb3fd413df931793382604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a190565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a06040518083038186803b15801561174957600080fd5b505afa15801561175d573d6000803e3d6000fd5b505050506040513d60a081101561177357600080fd5b8101908080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291905050505050509150508091505090565b60006117c36129a9565b73ffffffffffffffffffffffffffffffffffffffff166117e16116b5565b73ffffffffffffffffffffffffffffffffffffffff161461186a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156118f0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612a8a6021913960400191505060405180910390fd5b60008211611966576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f416d6f756e742073686f756c64206265206c6172676572207468616e2030000081525060200191505060405180910390fd5b600660009054906101000a900460ff16156119cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526038815260200180612b396038913960400191505060405180910390fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414611a67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612a3e6025913960400191505060405180910390fd5b6004839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550611b27600160055461281590919063ffffffff16565b6005819055507f2cff1fbd97349296439d092211657ee417f89f6189b60a2ec990d7384c3bb82c8383604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a16001905092915050565b60095481565b60036020528060005260406000206000915090505481565b60026020528060005260406000206000915090508060000154908060010154908060020160009054906101000a900460ff16905083565b6000611beb6129a9565b73ffffffffffffffffffffffffffffffffffffffff16611c096116b5565b73ffffffffffffffffffffffffffffffffffffffff1614611c92576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611d35576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f445058206164647265737320697320300000000000000000000000000000000081525060200191505060405180910390fd5b60008311611dab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4475726174696f6e207061737365642063616e6e6f742062652030000000000081525060200191505060405180910390fd5b428411611e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180612b116028913960400191505060405180910390fd5b836007819055508260088190555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600080600090505b600480549050811015611f0057611ef36002600060048481548110611e7b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001548361281590919063ffffffff16565b9150600181019050611e5a565b5060008111611f77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f546f74616c204450582072657175697265642063616e6e6f742062652030000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561202857600080fd5b505af115801561203c573d6000803e3d6000fd5b505050506040513d602081101561205257600080fd5b8101908080519060200190929190505050506001600660006101000a81548160ff0219169083151502179055507fb5ca1ca1b7b47549eb8af476f3ef702fc63bcd8b8c01dc163b009bb818f97997816040518082815260200191505060405180910390a1600660009054906101000a900460ff169150509392505050565b600481815481106120e057600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6121176129a9565b73ffffffffffffffffffffffffffffffffffffffff166121356116b5565b73ffffffffffffffffffffffffffffffffffffffff16146121be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612244576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806129b26026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6123096129a9565b73ffffffffffffffffffffffffffffffffffffffff166123276116b5565b73ffffffffffffffffffffffffffffffffffffffff16146123b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612436576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612a8a6021913960400191505060405180910390fd5b600660009054906101000a900460ff161561249c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b815260200180612b71603b913960400191505060405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001541415612537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180612a13602b913960400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900460ff16156125dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180612bd2602b913960400191505060405180910390fd5b60008111612636576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180612bac6026913960400191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414156126ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f42656e656669636961727920686173206e6f74206265656e206164646564000081525060200191505060405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055507f8f58c1877847062a1a2cc850a91389b4fad163cff482c1f465d579aa5b87ef5c8282604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15050565b6000808314156127a2576000905061280f565b60008284029050828482816127b357fe5b041461280a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612aab6021913960400191505060405180910390fd5b809150505b92915050565b600080828401905083811015612893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600082821115612915576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b6000808211612997576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b8183816129a057fe5b04905092915050565b60003390509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737343616e6e6f742072656d6f76652062656e656669636961727920617320636f6e747261637420686173206265656e20626f6f7473747261707065644e657720616d6f756e742063616e6e6f74206265207468652073616d65206173206f6c6420616d6f756e7443616e6e6f7420616464207468652073616d652062656e656669636961727920616761696e42656e65666963696172792068617320616c7265616479207472616e736665727265642045544842656e65666963696172792063616e6e6f74206265206120302061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77436f6e747261637420686173206e6f74206265656e20626f6f74737472617070656442656e656669636961727920686173206e6f74207472616e736665727265642065746853746172742074696d652063616e6e6f74206265206265666f72652063757272656e742074696d6543616e6e6f74206164642062656e656669636961727920617320636f6e747261637420686173206265656e20626f6f74737472617070656443616e6e6f74207570646174652062656e656669636961727920617320636f6e747261637420686173206265656e20626f6f747374726170706564416d6f756e742063616e6e6f7420626520736d616c6c6572206f7220657175616c20746f203042656e65666963696172792073686f756c642068617665206e6f74207472616e7366657272656420455448a2646970667358221220635b69fe3a72b9d48f685a62873a74353df8d15c7959846b005093b8a72772ca64736f6c63430007060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b8419000000000000000000000000000000000000000000000000000000012a05f200
-----Decoded View---------------
Arg [0] : _priceFeedAddress (address): 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419
Arg [1] : _dpxPrice (uint256): 5000000000
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000005f4ec3df9cbd43714fe2740f5e3616155c5b8419
Arg [1] : 000000000000000000000000000000000000000000000000000000012a05f200
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.