Overview
ETH Balance
0.2 ETH
Eth Value
$503.87 (@ $2,519.34/ETH)More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 1,138 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Create Miners | 16403606 | 597 days ago | IN | 0 ETH | 0.00162766 | ||||
Create Miners | 16353699 | 604 days ago | IN | 0 ETH | 0.00092623 | ||||
Claim Rewards | 16353493 | 604 days ago | IN | 0 ETH | 0.00032245 | ||||
Create Miners | 16351026 | 605 days ago | IN | 0 ETH | 0.00137558 | ||||
Create Miners | 16348085 | 605 days ago | IN | 0 ETH | 0.0010097 | ||||
Create Miners | 16345832 | 606 days ago | IN | 0 ETH | 0.00074572 | ||||
Create Miners | 16345832 | 606 days ago | IN | 0 ETH | 0.00073978 | ||||
Create Miners | 16345832 | 606 days ago | IN | 0 ETH | 0.00073978 | ||||
Create Miners | 16345832 | 606 days ago | IN | 0 ETH | 0.00074123 | ||||
Create Miners | 16345832 | 606 days ago | IN | 0 ETH | 0.00074123 | ||||
Create Miners | 16345832 | 606 days ago | IN | 0 ETH | 0.00147452 | ||||
Buy Miners | 16345832 | 606 days ago | IN | 0.15 ETH | 0.00081262 | ||||
Buy Miners | 16345831 | 606 days ago | IN | 0.15 ETH | 0.00077944 | ||||
Buy Miners | 16345829 | 606 days ago | IN | 0.15 ETH | 0.00075309 | ||||
Create Miners | 16344281 | 606 days ago | IN | 0 ETH | 0.00208633 | ||||
Create Miners | 16343309 | 606 days ago | IN | 0 ETH | 0.00297657 | ||||
Set Fee Receiver | 16342643 | 606 days ago | IN | 0 ETH | 0.00063303 | ||||
Claim Rewards | 16342631 | 606 days ago | IN | 0 ETH | 0.00155939 | ||||
Set Fee Receiver | 16342626 | 606 days ago | IN | 0 ETH | 0.00060662 | ||||
Claim Rewards | 16342611 | 606 days ago | IN | 0 ETH | 0.00146917 | ||||
Set Fee Receiver | 16342610 | 606 days ago | IN | 0 ETH | 0.00060365 | ||||
Claim Rewards | 16342604 | 606 days ago | IN | 0 ETH | 0.0013329 | ||||
Claim Rewards | 16342589 | 606 days ago | IN | 0 ETH | 0.00165492 | ||||
Claim Rewards | 16342577 | 606 days ago | IN | 0 ETH | 0.0018449 | ||||
Create Miners | 16342556 | 606 days ago | IN | 0 ETH | 0.00145055 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
16351016 | 605 days ago | 0.1 ETH | ||||
16345832 | 606 days ago | 0.006 ETH | ||||
16345831 | 606 days ago | 0.006 ETH | ||||
16345829 | 606 days ago | 0.006 ETH | ||||
16343989 | 606 days ago | 0.1 ETH | ||||
16342631 | 606 days ago | 0.93723774 ETH | ||||
16342631 | 606 days ago | 0.03905157 ETH | ||||
16342611 | 606 days ago | 0.03905157 ETH | ||||
16342604 | 606 days ago | 0.00000196 ETH | ||||
16342604 | 606 days ago | 0.00000008 ETH | ||||
16342589 | 606 days ago | 0.00000455 ETH | ||||
16342589 | 606 days ago | 0.00000018 ETH | ||||
16342577 | 606 days ago | 132.00623474 ETH | ||||
16342577 | 606 days ago | 5.50025978 ETH | ||||
16342523 | 606 days ago | 0.01434092 ETH | ||||
16342523 | 606 days ago | 0.00059753 ETH | ||||
16342513 | 606 days ago | 0.02421994 ETH | ||||
16342513 | 606 days ago | 0.00100916 ETH | ||||
16342504 | 606 days ago | 0.32035466 ETH | ||||
16342504 | 606 days ago | 0.01334811 ETH | ||||
16342498 | 606 days ago | 0.06427787 ETH | ||||
16342498 | 606 days ago | 0.00267824 ETH | ||||
16342495 | 606 days ago | 0.10013366 ETH | ||||
16342495 | 606 days ago | 0.00417223 ETH | ||||
16342482 | 606 days ago | 0.21746108 ETH |
Loading...
Loading
Contract Name:
EthFactory
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 10000 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT /** * * ███████╗████████╗██╗ ██╗ * ██╔════╝╚══██╔══╝██║ ██║ * █████╗ ██║ ███████║ * ██╔══╝ ██║ ██╔══██║ * ███████╗ ██║ ██║ ██║ * ╚══════╝ ╚═╝ ╚═╝ ╚═╝ * * ███████╗ █████╗ █████╗ ████████╗ █████╗ ██████╗ ██╗ ██╗ * ██╔════╝██╔══██╗██╔══██╗╚══██╔══╝██╔══██╗██╔══██╗╚██╗ ██╔╝ * █████╗ ███████║██║ ╚═╝ ██║ ██║ ██║██████╔╝ ╚████╔╝ * ██╔══╝ ██╔══██║██║ ██╗ ██║ ██║ ██║██╔══██╗ ╚██╔╝ * ██║ ██║ ██║╚█████╔╝ ██║ ╚█████╔╝██║ ██║ ██║ * ╚═╝ ╚═╝ ╚═╝ ╚════╝ ╚═╝ ╚════╝ ╚═╝ ╚═╝ ╚═╝ * */ /** * @title A mining contract used for compounding rewards. * @notice This contract allows users to create credits with ETH. Credits are then converted into miners which in turn creates more credits. Users may then either cash out credits * created by the miners or reinvest to create more credits and compound their returns. Participants may use referral codes to generate credits from other participants depositing funds * using their referral address. */ pragma solidity ^0.8.17; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/utils/math/Math.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; interface IEthPowerups { function calcNftMultiplier(address _address) external view returns (uint); } interface IEthFactory { function getLastCreated(address _address) external view returns (uint); } contract EthFactory is Ownable, ReentrancyGuard { constructor(address _feeReceiver, address nftAddress) { feeReceiver = payable(_feeReceiver); INFT = IEthPowerups(nftAddress); } receive() external payable {} /*|| === STATE VARIABLES === ||*/ uint private marketValue; uint private constant CREDITS_PER_1_MINER = 1080000; /// credits needed to create one miner uint public depositFee = 4; uint public withdrawFee = 4; uint public refPercent = 8; uint public minDeposit = 0.05 ether; /// Minimum eth a wallet can deposit uint public startingMax = 1 ether; /// Minimum max deposit uint public maxInterval = 1 ether; /// Increase by when new step is hit uint public stepInterval = 10 ether; /// Step length between each interval IEthPowerups public INFT; address payable public feeReceiver; bool private initialized = false; /*|| === MAPPINGS === ||*/ mapping(address => uint) private createdMiners; /// Miners are used to generate credits mapping(address => uint) private claimedCredits; /// credits generated from purchasing and referrals mapping(address => uint) private lastCreation; /// Latest timestamp credits were created mapping(address => address) public referral; /// Referral address code bound to deposit address mapping(address => uint) public investedEth; /// WEI a single wallet has deposited /*|| === EXTERNAL FUNCTIONS === ||*/ function setDepositFee(uint _depositFee) external onlyOwner { require(_depositFee < 6, "Too high"); depositFee = _depositFee; } function setWithdrawFee(uint _withdrawFee) external onlyOwner { require(_withdrawFee < 6, "Too high"); withdrawFee = _withdrawFee; } function setRefPercent(uint _refPercent) external onlyOwner { require(_refPercent < 20, "Too high"); refPercent = _refPercent; } function setMinDeposit(uint _minDeposit) external onlyOwner { minDeposit = _minDeposit; } function setStartingMax(uint _startingMax) external onlyOwner { startingMax = _startingMax; } function getBalance() public view returns (uint256) { return address(this).balance; } function setMaxInterval(uint _maxInterval) external onlyOwner { maxInterval = _maxInterval; } function setStepInterval(uint _stepInterval) external onlyOwner { stepInterval = _stepInterval; } function setFeeReceiver(address _feeReceiver) external onlyOwner { feeReceiver = payable(_feeReceiver); } function setNftContract(address _address) external onlyOwner { INFT = IEthPowerups(_address); } function ethRewards(address _address) external view returns (uint) { uint credits = getMyCredits(_address); uint rewards = calculateRewards(credits); return rewards; } function getMyMiners(address _address) external view returns (uint) { return createdMiners[_address]; } function getLastCreated(address _address) external view returns (uint) { return lastCreation[_address]; } /*|| === PUBLIC FUNCTIONS === ||*/ function startFactory() public payable onlyOwner { require(marketValue == 0); initialized = true; marketValue = 108000000000; } function buyMiners(address ref) public payable { require(initialized); if (address(this).balance < 100 ether) { uint maxDeposit = (address(this).balance / stepInterval) * maxInterval + startingMax; require(msg.value + investedEth[msg.sender] <= maxDeposit, "Max deposit"); } require(msg.value + investedEth[msg.sender] >= minDeposit, "Min deposit"); investedEth[msg.sender] += msg.value; /// Calculate miners bought uint creditsBought = calculateCredits(msg.value, address(this).balance - msg.value); /// Subtract miners bought from deposit fee creditsBought -= Math.mulDiv(creditsBought, depositFee, 100); /// Calculate fee in WEI and send to the receiver address uint fee = Math.mulDiv(msg.value, depositFee, 100); feeReceiver.transfer(fee); /// Add miners bought to claimed miners to prepare to activate claimedCredits[msg.sender] += creditsBought; createMiners(ref); } function createMiners(address ref) public { require(initialized); if (ref == msg.sender) { ref = feeReceiver; } if (referral[msg.sender] == address(0) && referral[msg.sender] != msg.sender) { referral[msg.sender] = ref; } uint credits = getMyCredits(msg.sender); /// Create miners from credits generated and bought uint newMiners = credits / CREDITS_PER_1_MINER; /// Add created miners to mapping createdMiners[msg.sender] += newMiners; /// Reset claimed credits claimedCredits[msg.sender] = 0; /// Reset last created time lastCreation[msg.sender] = block.timestamp; /// Send profit to referral address claimedCredits[referral[msg.sender]] += Math.mulDiv(credits, refPercent, 100); /// Boost market to nerf miners hoarding marketValue = marketValue + (credits / (5)); } function claimRewards() public nonReentrant { require(initialized); /// Get current credits uint credits = getMyCredits(msg.sender); /// Get rewards generated uint rewards = calculateRewards(credits); require(rewards > 0, "No rewards"); /// Calculate withdraw fees uint fee = Math.mulDiv(rewards, withdrawFee, 100); /// Reset claimed credits claimedCredits[msg.sender] = 0; /// Reset last created time lastCreation[msg.sender] = block.timestamp; /// Increase market value by the number of credits sold marketValue += credits; /// Transfer withdraw fee to fee receiver feeReceiver.transfer(fee); payable(msg.sender).transfer(rewards - fee); } function calculateRewards(uint rewards) public view returns (uint) { return calculateTrade(rewards, marketValue, address(this).balance); } function calculateCredits(uint eth, uint contractBalance) public view returns (uint) { return calculateTrade(eth, contractBalance, marketValue); } function calculateCreditsSimple(uint eth) public view returns (uint) { return calculateCredits(eth, address(this).balance); } function getMyCredits(address _address) public view returns (uint) { uint createdCredits = getCreditsSinceLastCreation(_address); return claimedCredits[_address] + createdCredits + Math.mulDiv(createdCredits, INFT.calcNftMultiplier(_address), 100); } function getCreditsSinceLastCreation(address _address) public view returns (uint) { uint secondsPassed = calculateMin(CREDITS_PER_1_MINER, (block.timestamp - lastCreation[_address])); return secondsPassed * createdMiners[_address]; } /*|| === PRIVATE FUNCTIONS === ||*/ function calculateTrade(uint x, uint y, uint z) private pure returns (uint) { return (10000 * z) / (5000 + (((10000 * y) + (5000 * x)) / x)); } function calculateMin(uint a, uint b) private pure returns (uint) { return a < b ? a : b; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^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() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { 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 { _transferOwnership(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"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^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 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) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (utils/math/Math.sol) pragma solidity ^0.8.0; /** * @dev Standard math utilities missing in the Solidity language. */ library Math { enum Rounding { Down, // Toward negative infinity Up, // Toward infinity Zero // Toward zero } /** * @dev Returns the largest of two numbers. */ function max(uint256 a, uint256 b) internal pure returns (uint256) { return a > b ? a : b; } /** * @dev Returns the smallest of two numbers. */ function min(uint256 a, uint256 b) internal pure returns (uint256) { return a < b ? a : b; } /** * @dev Returns the average of two numbers. The result is rounded towards * zero. */ function average(uint256 a, uint256 b) internal pure returns (uint256) { // (a + b) / 2 can overflow. return (a & b) + (a ^ b) / 2; } /** * @dev Returns the ceiling of the division of two numbers. * * This differs from standard division with `/` in that it rounds up instead * of rounding down. */ function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) { // (a + b - 1) / b can overflow on addition, so we distribute. return a == 0 ? 0 : (a - 1) / b + 1; } /** * @notice Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or denominator == 0 * @dev Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) * with further edits by Uniswap Labs also under MIT license. */ function mulDiv( uint256 x, uint256 y, uint256 denominator ) internal pure returns (uint256 result) { unchecked { // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2^256 and mod 2^256 - 1, then use // use the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256 // variables such that product = prod1 * 2^256 + prod0. uint256 prod0; // Least significant 256 bits of the product uint256 prod1; // Most significant 256 bits of the product assembly { let mm := mulmod(x, y, not(0)) prod0 := mul(x, y) prod1 := sub(sub(mm, prod0), lt(mm, prod0)) } // Handle non-overflow cases, 256 by 256 division. if (prod1 == 0) { return prod0 / denominator; } // Make sure the result is less than 2^256. Also prevents denominator == 0. require(denominator > prod1); /////////////////////////////////////////////// // 512 by 256 division. /////////////////////////////////////////////// // Make division exact by subtracting the remainder from [prod1 prod0]. uint256 remainder; assembly { // Compute remainder using mulmod. remainder := mulmod(x, y, denominator) // Subtract 256 bit number from 512 bit number. prod1 := sub(prod1, gt(remainder, prod0)) prod0 := sub(prod0, remainder) } // Factor powers of two out of denominator and compute largest power of two divisor of denominator. Always >= 1. // See https://cs.stackexchange.com/q/138556/92363. // Does not overflow because the denominator cannot be zero at this stage in the function. uint256 twos = denominator & (~denominator + 1); assembly { // Divide denominator by twos. denominator := div(denominator, twos) // Divide [prod1 prod0] by twos. prod0 := div(prod0, twos) // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one. twos := add(div(sub(0, twos), twos), 1) } // Shift in bits from prod1 into prod0. prod0 |= prod1 * twos; // Invert denominator mod 2^256. Now that denominator is an odd number, it has an inverse modulo 2^256 such // that denominator * inv = 1 mod 2^256. Compute the inverse by starting with a seed that is correct for // four bits. That is, denominator * inv = 1 mod 2^4. uint256 inverse = (3 * denominator) ^ 2; // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also works // in modular arithmetic, doubling the correct bits in each step. inverse *= 2 - denominator * inverse; // inverse mod 2^8 inverse *= 2 - denominator * inverse; // inverse mod 2^16 inverse *= 2 - denominator * inverse; // inverse mod 2^32 inverse *= 2 - denominator * inverse; // inverse mod 2^64 inverse *= 2 - denominator * inverse; // inverse mod 2^128 inverse *= 2 - denominator * inverse; // inverse mod 2^256 // Because the division is now exact we can divide by multiplying with the modular inverse of denominator. // This will give us the correct result modulo 2^256. Since the preconditions guarantee that the outcome is // less than 2^256, this is the final result. We don't need to compute the high bits of the result and prod1 // is no longer required. result = prod0 * inverse; return result; } } /** * @notice Calculates x * y / denominator with full precision, following the selected rounding direction. */ function mulDiv( uint256 x, uint256 y, uint256 denominator, Rounding rounding ) internal pure returns (uint256) { uint256 result = mulDiv(x, y, denominator); if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) { result += 1; } return result; } /** * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded down. * * Inspired by Henry S. Warren, Jr.'s "Hacker's Delight" (Chapter 11). */ function sqrt(uint256 a) internal pure returns (uint256) { if (a == 0) { return 0; } // For our first guess, we get the biggest power of 2 which is smaller than the square root of the target. // // We know that the "msb" (most significant bit) of our target number `a` is a power of 2 such that we have // `msb(a) <= a < 2*msb(a)`. This value can be written `msb(a)=2**k` with `k=log2(a)`. // // This can be rewritten `2**log2(a) <= a < 2**(log2(a) + 1)` // → `sqrt(2**k) <= sqrt(a) < sqrt(2**(k+1))` // → `2**(k/2) <= sqrt(a) < 2**((k+1)/2) <= 2**(k/2 + 1)` // // Consequently, `2**(log2(a) / 2)` is a good first approximation of `sqrt(a)` with at least 1 correct bit. uint256 result = 1 << (log2(a) >> 1); // At this point `result` is an estimation with one bit of precision. We know the true value is a uint128, // since it is the square root of a uint256. Newton's method converges quadratically (precision doubles at // every iteration). We thus need at most 7 iteration to turn our partial result with one bit of precision // into the expected uint128 result. unchecked { result = (result + a / result) >> 1; result = (result + a / result) >> 1; result = (result + a / result) >> 1; result = (result + a / result) >> 1; result = (result + a / result) >> 1; result = (result + a / result) >> 1; result = (result + a / result) >> 1; return min(result, a / result); } } /** * @notice Calculates sqrt(a), following the selected rounding direction. */ function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) { unchecked { uint256 result = sqrt(a); return result + (rounding == Rounding.Up && result * result < a ? 1 : 0); } } /** * @dev Return the log in base 2, rounded down, of a positive value. * Returns 0 if given 0. */ function log2(uint256 value) internal pure returns (uint256) { uint256 result = 0; unchecked { if (value >> 128 > 0) { value >>= 128; result += 128; } if (value >> 64 > 0) { value >>= 64; result += 64; } if (value >> 32 > 0) { value >>= 32; result += 32; } if (value >> 16 > 0) { value >>= 16; result += 16; } if (value >> 8 > 0) { value >>= 8; result += 8; } if (value >> 4 > 0) { value >>= 4; result += 4; } if (value >> 2 > 0) { value >>= 2; result += 2; } if (value >> 1 > 0) { result += 1; } } return result; } /** * @dev Return the log in base 2, following the selected rounding direction, of a positive value. * Returns 0 if given 0. */ function log2(uint256 value, Rounding rounding) internal pure returns (uint256) { unchecked { uint256 result = log2(value); return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0); } } /** * @dev Return the log in base 10, rounded down, of a positive value. * Returns 0 if given 0. */ function log10(uint256 value) internal pure returns (uint256) { uint256 result = 0; unchecked { if (value >= 10**64) { value /= 10**64; result += 64; } if (value >= 10**32) { value /= 10**32; result += 32; } if (value >= 10**16) { value /= 10**16; result += 16; } if (value >= 10**8) { value /= 10**8; result += 8; } if (value >= 10**4) { value /= 10**4; result += 4; } if (value >= 10**2) { value /= 10**2; result += 2; } if (value >= 10**1) { result += 1; } } return result; } /** * @dev Return the log in base 10, following the selected rounding direction, of a positive value. * Returns 0 if given 0. */ function log10(uint256 value, Rounding rounding) internal pure returns (uint256) { unchecked { uint256 result = log10(value); return result + (rounding == Rounding.Up && 10**result < value ? 1 : 0); } } /** * @dev Return the log in base 256, rounded down, of a positive value. * Returns 0 if given 0. * * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string. */ function log256(uint256 value) internal pure returns (uint256) { uint256 result = 0; unchecked { if (value >> 128 > 0) { value >>= 128; result += 16; } if (value >> 64 > 0) { value >>= 64; result += 8; } if (value >> 32 > 0) { value >>= 32; result += 4; } if (value >> 16 > 0) { value >>= 16; result += 2; } if (value >> 8 > 0) { result += 1; } } return result; } /** * @dev Return the log in base 10, following the selected rounding direction, of a positive value. * Returns 0 if given 0. */ function log256(uint256 value, Rounding rounding) internal pure returns (uint256) { unchecked { uint256 result = log256(value); return result + (rounding == Rounding.Up && 1 << (result * 8) < value ? 1 : 0); } } }
{ "optimizer": { "enabled": true, "runs": 10000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_feeReceiver","type":"address"},{"internalType":"address","name":"nftAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"INFT","outputs":[{"internalType":"contract IEthPowerups","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"ref","type":"address"}],"name":"buyMiners","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"eth","type":"uint256"},{"internalType":"uint256","name":"contractBalance","type":"uint256"}],"name":"calculateCredits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"eth","type":"uint256"}],"name":"calculateCreditsSimple","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rewards","type":"uint256"}],"name":"calculateRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"ref","type":"address"}],"name":"createMiners","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"ethRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeReceiver","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getCreditsSinceLastCreation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getLastCreated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getMyCredits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getMyMiners","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"investedEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"referral","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_depositFee","type":"uint256"}],"name":"setDepositFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeReceiver","type":"address"}],"name":"setFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxInterval","type":"uint256"}],"name":"setMaxInterval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minDeposit","type":"uint256"}],"name":"setMinDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setNftContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_refPercent","type":"uint256"}],"name":"setRefPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_startingMax","type":"uint256"}],"name":"setStartingMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stepInterval","type":"uint256"}],"name":"setStepInterval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_withdrawFee","type":"uint256"}],"name":"setWithdrawFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startFactory","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"startingMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stepInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526004600381905580556008600581905566b1a2bc2ec50000600655670de0b6b3a764000060078190559055678ac7230489e80000600955600b805460ff60a01b191690553480156200005557600080fd5b506040516200179a3803806200179a833981016040819052620000789162000126565b6200008333620000b9565b60018055600b80546001600160a01b039384166001600160a01b031991821617909155600a80549290931691161790556200015e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146200012157600080fd5b919050565b600080604083850312156200013a57600080fd5b620001458362000109565b9150620001556020840162000109565b90509250929050565b61162c806200016e6000396000f3fe6080604052600436106102535760003560e01c80639630fbf511610138578063d3ea4350116100b0578063de06aea11161007f578063efdcd97411610064578063efdcd974146106c2578063f17355df146106e2578063f2fde38b1461070257600080fd5b8063de06aea11461068c578063e941fa78146106ac57600080fd5b8063d3ea435014610609578063d79ac2fa14610629578063d88bf9f11461063f578063db5d2fa21461066c57600080fd5b8063b3f0067411610107578063c9b77242116100ec578063c9b77242146105b3578063cae774b3146105d3578063cf208fa4146105e957600080fd5b8063b3f0067414610566578063b6ac642a1461059357600080fd5b80639630fbf51461050b578063a0cf3e101461051e578063ae6ae4e31461053e578063b39b2c7d1461054657600080fd5b806359d5335b116101cb578063715018a61161019a5780638aab2c7e1161017f5780638aab2c7e1461047d5780638da5cb5b146104c05780638fcc9cfb146104eb57600080fd5b8063715018a6146104005780637247959a1461041557600080fd5b806359d5335b1461039e578063617263f9146103b457806367a52793146103ca5780636fa4f5f7146103e057600080fd5b806341b3d185116102225780634b634b06116102075780634b634b061461031b57806352f5ad771461035e57806353d0d24a1461037e57600080fd5b806341b3d185146102e5578063490ae210146102fb57600080fd5b806303021c871461025f57806312065fe014610281578063372500ab146102a35780633fb2827f146102b857600080fd5b3661025a57005b600080fd5b34801561026b57600080fd5b5061027f61027a366004611496565b610722565b005b34801561028d57600080fd5b50475b6040519081526020015b60405180910390f35b3480156102af57600080fd5b5061027f61072f565b3480156102c457600080fd5b506102906102d33660046114af565b60106020526000908152604090205481565b3480156102f157600080fd5b5061029060065481565b34801561030757600080fd5b5061027f610316366004611496565b6108bf565b34801561032757600080fd5b506102906103363660046114af565b73ffffffffffffffffffffffffffffffffffffffff166000908152600c602052604090205490565b34801561036a57600080fd5b5061027f6103793660046114af565b610936565b34801561038a57600080fd5b506102906103993660046114af565b610985565b3480156103aa57600080fd5b5061029060055481565b3480156103c057600080fd5b5061029060075481565b3480156103d657600080fd5b5061029060035481565b3480156103ec57600080fd5b5061027f6103fb366004611496565b6109ff565b34801561040c57600080fd5b5061027f610a76565b34801561042157600080fd5b506104586104303660046114af565b600f6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161029a565b34801561048957600080fd5b506102906104983660046114af565b73ffffffffffffffffffffffffffffffffffffffff166000908152600e602052604090205490565b3480156104cc57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610458565b3480156104f757600080fd5b5061027f610506366004611496565b610a88565b61027f6105193660046114af565b610a95565b34801561052a57600080fd5b506102906105393660046114e5565b610ce2565b61027f610cfa565b34801561055257600080fd5b50610290610561366004611496565b610d59565b34801561057257600080fd5b50600b546104589073ffffffffffffffffffffffffffffffffffffffff1681565b34801561059f57600080fd5b5061027f6105ae366004611496565b610d65565b3480156105bf57600080fd5b506102906105ce3660046114af565b610ddc565b3480156105df57600080fd5b5061029060085481565b3480156105f557600080fd5b5061027f610604366004611496565b610dfd565b34801561061557600080fd5b50610290610624366004611496565b610e0a565b34801561063557600080fd5b5061029060095481565b34801561064b57600080fd5b50600a546104589073ffffffffffffffffffffffffffffffffffffffff1681565b34801561067857600080fd5b5061027f6106873660046114af565b610e19565b34801561069857600080fd5b5061027f6106a7366004611496565b610ffe565b3480156106b857600080fd5b5061029060045481565b3480156106ce57600080fd5b5061027f6106dd3660046114af565b61100b565b3480156106ee57600080fd5b506102906106fd3660046114af565b61105a565b34801561070e57600080fd5b5061027f61071d3660046114af565b611143565b61072a6111fa565b600855565b61073761127b565b600b5474010000000000000000000000000000000000000000900460ff1661075e57600080fd5b60006107693361105a565b9050600061077682610e0a565b9050600081116107e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f20726577617264730000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006107f78260045460646112ee565b336000908152600d60209081526040808320839055600e909152812042905560028054929350859290919061082d908490611536565b9091555050600b5460405173ffffffffffffffffffffffffffffffffffffffff9091169082156108fc029083906000818181858888f19350505050158015610879573d6000803e3d6000fd5b50336108fc6108888385611549565b6040518115909202916000818181858888f193505050501580156108b0573d6000803e3d6000fd5b505050506108bd60018055565b565b6108c76111fa565b60068110610931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f546f6f206869676800000000000000000000000000000000000000000000000060448201526064016107de565b600355565b61093e6111fa565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600e602052604081205481906109c59062107ac0906109c09042611549565b6113ba565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600c60205260409020549091506109f8908261155c565b9392505050565b610a076111fa565b60148110610a71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f546f6f206869676800000000000000000000000000000000000000000000000060448201526064016107de565b600555565b610a7e6111fa565b6108bd60006113d0565b610a906111fa565b600655565b600b5474010000000000000000000000000000000000000000900460ff16610abc57600080fd5b68056bc75e2d63100000471015610b8057600060075460085460095447610ae391906115a2565b610aed919061155c565b610af79190611536565b336000908152601060205260409020549091508190610b169034611536565b1115610b7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d6178206465706f73697400000000000000000000000000000000000000000060448201526064016107de565b505b60065433600090815260106020526040902054610b9d9034611536565b1015610c05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d696e206465706f73697400000000000000000000000000000000000000000060448201526064016107de565b3360009081526010602052604081208054349290610c24908490611536565b9091555060009050610c3a346105398147611549565b9050610c4a8160035460646112ee565b610c549082611549565b90506000610c663460035460646112ee565b600b5460405191925073ffffffffffffffffffffffffffffffffffffffff169082156108fc029083906000818181858888f19350505050158015610cae573d6000803e3d6000fd5b50336000908152600d602052604081208054849290610cce908490611536565b90915550610cdd905083610e19565b505050565b6000610cf18383600254611445565b90505b92915050565b610d026111fa565b60025415610d0f57600080fd5b600b80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556419254d3800600255565b6000610cf48247610ce2565b610d6d6111fa565b60068110610dd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f546f6f206869676800000000000000000000000000000000000000000000000060448201526064016107de565b600455565b600080610de88361105a565b90506000610df582610e0a565b949350505050565b610e056111fa565b600755565b6000610cf48260025447611445565b600b5474010000000000000000000000000000000000000000900460ff16610e4057600080fd5b3373ffffffffffffffffffffffffffffffffffffffff821603610e785750600b5473ffffffffffffffffffffffffffffffffffffffff165b336000908152600f602052604090205473ffffffffffffffffffffffffffffffffffffffff16158015610ecf5750336000818152600f602052604090205473ffffffffffffffffffffffffffffffffffffffff1614155b15610f2257336000908152600f6020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555b6000610f2d3361105a565b90506000610f3e62107ac0836115a2565b336000908152600c6020526040812080549293508392909190610f62908490611536565b9091555050336000908152600d60209081526040808320839055600e9091529020429055600554610f9690839060646112ee565b336000908152600f602090815260408083205473ffffffffffffffffffffffffffffffffffffffff168352600d90915281208054909190610fd8908490611536565b90915550610fe990506005836115a2565b600254610ff69190611536565b600255505050565b6110066111fa565b600955565b6110136111fa565b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008061106683610985565b600a546040517f3b46f7db00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301529293506111089284921690633b46f7db90602401602060405180830381865afa1580156110dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110191906115dd565b60646112ee565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600d6020526040902054611139908390611536565b6109f89190611536565b61114b6111fa565b73ffffffffffffffffffffffffffffffffffffffff81166111ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107de565b6111f7816113d0565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107de565b6002600154036112e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107de565b6002600155565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036113465783828161133c5761133c611573565b04925050506109f8565b80841161135257600080fd5b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b60008183106113c95781610cf1565b5090919050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000836114548161138861155c565b6114608561271061155c565b61146a9190611536565b61147491906115a2565b61148090611388611536565b61148c8361271061155c565b610df591906115a2565b6000602082840312156114a857600080fd5b5035919050565b6000602082840312156114c157600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146109f857600080fd5b600080604083850312156114f857600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610cf457610cf4611507565b81810381811115610cf457610cf4611507565b8082028115828204841417610cf457610cf4611507565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826115d8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000602082840312156115ef57600080fd5b505191905056fea2646970667358221220c63cb8b038a09854b18edbec7ce7dd48964a93b500dcd413e7334aa1b593ac8064736f6c63430008110033000000000000000000000000cc2ae67b7f092f84360eb39b0cf261bdcb16e720000000000000000000000000ede9a157304ff2e19396c1c8c481255221d81bd3
Deployed Bytecode
0x6080604052600436106102535760003560e01c80639630fbf511610138578063d3ea4350116100b0578063de06aea11161007f578063efdcd97411610064578063efdcd974146106c2578063f17355df146106e2578063f2fde38b1461070257600080fd5b8063de06aea11461068c578063e941fa78146106ac57600080fd5b8063d3ea435014610609578063d79ac2fa14610629578063d88bf9f11461063f578063db5d2fa21461066c57600080fd5b8063b3f0067411610107578063c9b77242116100ec578063c9b77242146105b3578063cae774b3146105d3578063cf208fa4146105e957600080fd5b8063b3f0067414610566578063b6ac642a1461059357600080fd5b80639630fbf51461050b578063a0cf3e101461051e578063ae6ae4e31461053e578063b39b2c7d1461054657600080fd5b806359d5335b116101cb578063715018a61161019a5780638aab2c7e1161017f5780638aab2c7e1461047d5780638da5cb5b146104c05780638fcc9cfb146104eb57600080fd5b8063715018a6146104005780637247959a1461041557600080fd5b806359d5335b1461039e578063617263f9146103b457806367a52793146103ca5780636fa4f5f7146103e057600080fd5b806341b3d185116102225780634b634b06116102075780634b634b061461031b57806352f5ad771461035e57806353d0d24a1461037e57600080fd5b806341b3d185146102e5578063490ae210146102fb57600080fd5b806303021c871461025f57806312065fe014610281578063372500ab146102a35780633fb2827f146102b857600080fd5b3661025a57005b600080fd5b34801561026b57600080fd5b5061027f61027a366004611496565b610722565b005b34801561028d57600080fd5b50475b6040519081526020015b60405180910390f35b3480156102af57600080fd5b5061027f61072f565b3480156102c457600080fd5b506102906102d33660046114af565b60106020526000908152604090205481565b3480156102f157600080fd5b5061029060065481565b34801561030757600080fd5b5061027f610316366004611496565b6108bf565b34801561032757600080fd5b506102906103363660046114af565b73ffffffffffffffffffffffffffffffffffffffff166000908152600c602052604090205490565b34801561036a57600080fd5b5061027f6103793660046114af565b610936565b34801561038a57600080fd5b506102906103993660046114af565b610985565b3480156103aa57600080fd5b5061029060055481565b3480156103c057600080fd5b5061029060075481565b3480156103d657600080fd5b5061029060035481565b3480156103ec57600080fd5b5061027f6103fb366004611496565b6109ff565b34801561040c57600080fd5b5061027f610a76565b34801561042157600080fd5b506104586104303660046114af565b600f6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161029a565b34801561048957600080fd5b506102906104983660046114af565b73ffffffffffffffffffffffffffffffffffffffff166000908152600e602052604090205490565b3480156104cc57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610458565b3480156104f757600080fd5b5061027f610506366004611496565b610a88565b61027f6105193660046114af565b610a95565b34801561052a57600080fd5b506102906105393660046114e5565b610ce2565b61027f610cfa565b34801561055257600080fd5b50610290610561366004611496565b610d59565b34801561057257600080fd5b50600b546104589073ffffffffffffffffffffffffffffffffffffffff1681565b34801561059f57600080fd5b5061027f6105ae366004611496565b610d65565b3480156105bf57600080fd5b506102906105ce3660046114af565b610ddc565b3480156105df57600080fd5b5061029060085481565b3480156105f557600080fd5b5061027f610604366004611496565b610dfd565b34801561061557600080fd5b50610290610624366004611496565b610e0a565b34801561063557600080fd5b5061029060095481565b34801561064b57600080fd5b50600a546104589073ffffffffffffffffffffffffffffffffffffffff1681565b34801561067857600080fd5b5061027f6106873660046114af565b610e19565b34801561069857600080fd5b5061027f6106a7366004611496565b610ffe565b3480156106b857600080fd5b5061029060045481565b3480156106ce57600080fd5b5061027f6106dd3660046114af565b61100b565b3480156106ee57600080fd5b506102906106fd3660046114af565b61105a565b34801561070e57600080fd5b5061027f61071d3660046114af565b611143565b61072a6111fa565b600855565b61073761127b565b600b5474010000000000000000000000000000000000000000900460ff1661075e57600080fd5b60006107693361105a565b9050600061077682610e0a565b9050600081116107e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f20726577617264730000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006107f78260045460646112ee565b336000908152600d60209081526040808320839055600e909152812042905560028054929350859290919061082d908490611536565b9091555050600b5460405173ffffffffffffffffffffffffffffffffffffffff9091169082156108fc029083906000818181858888f19350505050158015610879573d6000803e3d6000fd5b50336108fc6108888385611549565b6040518115909202916000818181858888f193505050501580156108b0573d6000803e3d6000fd5b505050506108bd60018055565b565b6108c76111fa565b60068110610931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f546f6f206869676800000000000000000000000000000000000000000000000060448201526064016107de565b600355565b61093e6111fa565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600e602052604081205481906109c59062107ac0906109c09042611549565b6113ba565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600c60205260409020549091506109f8908261155c565b9392505050565b610a076111fa565b60148110610a71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f546f6f206869676800000000000000000000000000000000000000000000000060448201526064016107de565b600555565b610a7e6111fa565b6108bd60006113d0565b610a906111fa565b600655565b600b5474010000000000000000000000000000000000000000900460ff16610abc57600080fd5b68056bc75e2d63100000471015610b8057600060075460085460095447610ae391906115a2565b610aed919061155c565b610af79190611536565b336000908152601060205260409020549091508190610b169034611536565b1115610b7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d6178206465706f73697400000000000000000000000000000000000000000060448201526064016107de565b505b60065433600090815260106020526040902054610b9d9034611536565b1015610c05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d696e206465706f73697400000000000000000000000000000000000000000060448201526064016107de565b3360009081526010602052604081208054349290610c24908490611536565b9091555060009050610c3a346105398147611549565b9050610c4a8160035460646112ee565b610c549082611549565b90506000610c663460035460646112ee565b600b5460405191925073ffffffffffffffffffffffffffffffffffffffff169082156108fc029083906000818181858888f19350505050158015610cae573d6000803e3d6000fd5b50336000908152600d602052604081208054849290610cce908490611536565b90915550610cdd905083610e19565b505050565b6000610cf18383600254611445565b90505b92915050565b610d026111fa565b60025415610d0f57600080fd5b600b80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556419254d3800600255565b6000610cf48247610ce2565b610d6d6111fa565b60068110610dd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f546f6f206869676800000000000000000000000000000000000000000000000060448201526064016107de565b600455565b600080610de88361105a565b90506000610df582610e0a565b949350505050565b610e056111fa565b600755565b6000610cf48260025447611445565b600b5474010000000000000000000000000000000000000000900460ff16610e4057600080fd5b3373ffffffffffffffffffffffffffffffffffffffff821603610e785750600b5473ffffffffffffffffffffffffffffffffffffffff165b336000908152600f602052604090205473ffffffffffffffffffffffffffffffffffffffff16158015610ecf5750336000818152600f602052604090205473ffffffffffffffffffffffffffffffffffffffff1614155b15610f2257336000908152600f6020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790555b6000610f2d3361105a565b90506000610f3e62107ac0836115a2565b336000908152600c6020526040812080549293508392909190610f62908490611536565b9091555050336000908152600d60209081526040808320839055600e9091529020429055600554610f9690839060646112ee565b336000908152600f602090815260408083205473ffffffffffffffffffffffffffffffffffffffff168352600d90915281208054909190610fd8908490611536565b90915550610fe990506005836115a2565b600254610ff69190611536565b600255505050565b6110066111fa565b600955565b6110136111fa565b600b80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60008061106683610985565b600a546040517f3b46f7db00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86811660048301529293506111089284921690633b46f7db90602401602060405180830381865afa1580156110dd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110191906115dd565b60646112ee565b73ffffffffffffffffffffffffffffffffffffffff84166000908152600d6020526040902054611139908390611536565b6109f89190611536565b61114b6111fa565b73ffffffffffffffffffffffffffffffffffffffff81166111ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107de565b6111f7816113d0565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107de565b6002600154036112e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016107de565b6002600155565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036113465783828161133c5761133c611573565b04925050506109f8565b80841161135257600080fd5b600084868809600260036001881981018916988990049182028318808302840302808302840302808302840302808302840302808302840302918202909203026000889003889004909101858311909403939093029303949094049190911702949350505050565b60008183106113c95781610cf1565b5090919050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000836114548161138861155c565b6114608561271061155c565b61146a9190611536565b61147491906115a2565b61148090611388611536565b61148c8361271061155c565b610df591906115a2565b6000602082840312156114a857600080fd5b5035919050565b6000602082840312156114c157600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146109f857600080fd5b600080604083850312156114f857600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610cf457610cf4611507565b81810381811115610cf457610cf4611507565b8082028115828204841417610cf457610cf4611507565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826115d8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000602082840312156115ef57600080fd5b505191905056fea2646970667358221220c63cb8b038a09854b18edbec7ce7dd48964a93b500dcd413e7334aa1b593ac8064736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000cc2ae67b7f092f84360eb39b0cf261bdcb16e720000000000000000000000000ede9a157304ff2e19396c1c8c481255221d81bd3
-----Decoded View---------------
Arg [0] : _feeReceiver (address): 0xcc2AE67B7f092F84360eB39B0Cf261bdCb16E720
Arg [1] : nftAddress (address): 0xEdE9a157304fF2E19396C1c8C481255221D81bd3
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000cc2ae67b7f092f84360eb39b0cf261bdcb16e720
Arg [1] : 000000000000000000000000ede9a157304ff2e19396c1c8c481255221d81bd3
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $2,519.34 | 0.2 | $503.87 |
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.