ETH Price: $2,006.73 (+1.69%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve217551492025-02-02 0:07:47380 days ago1738454867IN
0x012c5bA2...F6E528392
0 ETH0.000094132.03328647

Advanced mode:
Parent Transaction Hash Method Block
From
To
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AspyrReflect

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.19;

import "@openzeppelin/contracts/security/ReentrancyGuard.sol";

/**
 * @title ASPYR Reflect Token
 * @notice 
 *  - Total supply = 50M (no future minting)
 *  - 4% reflection on each transfer (proportionally redistributed to all holders)
 *  - Two-of-two "multisig-like" for major actions (burning)
 *  - Supply-based 5-phase ICO
 *  - Trustless 50/50 ETH split
 *
 *  This code is for DEMONSTRATION ONLY and NOT AUDITED.
 */
contract AspyrReflect is ReentrancyGuard {
    // -------------------------------------------------------
    // Basic Info
    // -------------------------------------------------------
    string private constant _NAME = "ASPYR Network";
    string private constant _SYMBOL = "ASPYR";
    uint8 private constant _DECIMALS = 18;

    // -------------------------------------------------------
    // Reflection Mechanics
    // -------------------------------------------------------
    uint256 private constant MAX = type(uint256).max;

    uint256 private constant _tTotal = 50_000_000 * 10**_DECIMALS;  // 50 million
    uint256 private _rTotal = (MAX - (MAX % _tTotal)); // reflection total

    // 4% reflection fee on each transfer
    uint256 public constant REFLECTION_FEE = 4; // in percent

    // Mapping of addresses' reflected balances
    mapping(address => uint256) private _rOwned;
    mapping(address => mapping(address => uint256)) private _allowances;

    // -------------------------------------------------------
    // Two-of-two Governance
    // -------------------------------------------------------
    address public owner1;
    address public owner2;

    bool public isBurnProposed;
    address public burnProposer;
    address public proposedBurnFrom;
    uint256 public proposedBurnAmount;

    modifier onlyOwners() {
        require(msg.sender == owner1 || msg.sender == owner2, "Not an authorized owner");
        _;
    }

    // -------------------------------------------------------
    // ICO Supply-Based Phases
    // (21M total if fully sold)
    // -------------------------------------------------------
    uint256[5] public phaseSupply = [
        5_000_000 * 10**_DECIMALS, 
        4_000_000 * 10**_DECIMALS, 
        3_000_000 * 10**_DECIMALS, 
        4_000_000 * 10**_DECIMALS, 
        5_000_000 * 10**_DECIMALS
    ];
    uint256[5] public phaseRate = [1000, 900, 800, 700, 600]; // tokens per ETH
    uint256 public currentPhase; // 0..4

    // -------------------------------------------------------
    // Constructor
    // -------------------------------------------------------
    constructor(address _owner1, address _owner2) {
        require(_owner1 != address(0), "Invalid owner1");
        require(_owner2 != address(0), "Invalid owner2");

        owner1 = _owner1;
        owner2 = _owner2;

        // Initially, all tokens belong to the contract
        _rOwned[address(this)] = _rTotal;
    }

    // -------------------------------------------------------
    // ERC20-Like Public Functions
    // -------------------------------------------------------
    function name() public pure returns (string memory) {
        return _NAME;
    }

    function symbol() public pure returns (string memory) {
        return _SYMBOL;
    }

    function decimals() public pure returns (uint8) {
        return _DECIMALS;
    }

    function totalSupply() public pure returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }

    function allowance(address owner, address spender) public view returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function transfer(address recipient, uint256 amount) public returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function transferFrom(address from, address recipient, uint256 amount) public returns (bool) {
        _transfer(from, recipient, amount);

        uint256 currentAllowance = _allowances[from][msg.sender];
        require(currentAllowance >= amount, "transfer amount exceeds allowance");
        unchecked {
            _approve(from, msg.sender, currentAllowance - amount);
        }
        return true;
    }

    // -------------------------------------------------------
    // Reflection Internal Functions
    // -------------------------------------------------------
    function reflectionFromToken(uint256 tAmount) public view returns (uint256) {
        require(tAmount <= _tTotal, "Amount > total supply");
        uint256 currentRate = _getReflectionRate();
        return tAmount * currentRate;
    }

    function tokenFromReflection(uint256 rAmount) public view returns (uint256) {
        require(rAmount <= _rTotal, "rAmount > _rTotal");
        uint256 currentRate = _getReflectionRate();
        return rAmount / currentRate;
    }

    function _getReflectionRate() private view returns (uint256) {
        return _rTotal / _tTotal;
    }

    function _transfer(address sender, address recipient, uint256 tAmount) private {
        require(sender != address(0), "transfer from zero address");
        require(recipient != address(0), "transfer to zero address");
        require(tAmount > 0, "transfer amount > 0");

        uint256 currentRate = _getReflectionRate();
        uint256 rAmount = tAmount * currentRate;

        uint256 tFee = (tAmount * REFLECTION_FEE) / 100;
        uint256 tTransferAmount = tAmount - tFee;

        uint256 rFee = tFee * currentRate;
        uint256 rTransferAmount = rAmount - rFee;

        _rOwned[sender] -= rAmount;
        _rOwned[recipient] += rTransferAmount;
        _rTotal -= rFee;

        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "approve from zero address");
        require(spender != address(0), "approve to zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    // -------------------------------------------------------
    // Two-of-two Burn Logic
    // -------------------------------------------------------
    function proposeBurn(address from, uint256 tAmount) external onlyOwners {
        require(!isBurnProposed, "Burn proposal active");
        require(from != address(0), "Cannot burn from zero address");
        require(tAmount > 0, "Burn > 0");
        require(balanceOf(from) >= tAmount, "Insufficient balance to burn");

        burnProposer = msg.sender;
        proposedBurnFrom = from;
        proposedBurnAmount = tAmount;
        isBurnProposed = true;
    }

    function confirmBurn() external onlyOwners {
        require(isBurnProposed, "No burn proposal");
        require(msg.sender != burnProposer, "Same owner cannot confirm burn");

        uint256 currentRate = _getReflectionRate();
        uint256 rAmount = proposedBurnAmount * currentRate;

        _rOwned[proposedBurnFrom] -= rAmount;
        _rTotal -= rAmount;

        isBurnProposed = false;
        burnProposer = address(0);
        proposedBurnFrom = address(0);
        proposedBurnAmount = 0;

        emit Transfer(proposedBurnFrom, address(0), 0);
    }

    // -------------------------------------------------------
    // Supply-Based 5-Phase ICO
    // -------------------------------------------------------
    function buyTokens() external payable nonReentrant {
        require(currentPhase < 5, "All ICO phases ended");
        require(msg.value > 0, "No ETH sent");

        uint256 leftoverEth = msg.value;
        uint256 tokensPurchasedTotal = 0;

        while (leftoverEth > 0 && currentPhase < 5) {
            uint256 rate = phaseRate[currentPhase];
            uint256 possibleTokens = leftoverEth * rate;
            uint256 phaseLeft = phaseSupply[currentPhase];

            if (possibleTokens <= phaseLeft) {
                phaseSupply[currentPhase] -= possibleTokens;
                tokensPurchasedTotal += possibleTokens;
                leftoverEth = 0;
            } else {
                tokensPurchasedTotal += phaseLeft;
                leftoverEth -= (phaseLeft / rate); 
                phaseSupply[currentPhase] = 0;
                currentPhase++;
            }
        }

        require(tokensPurchasedTotal > 0, "No tokens purchased");
        _tokenTransferFromContract(msg.sender, tokensPurchasedTotal);

        if (leftoverEth > 0 && currentPhase == 5) {
            payable(msg.sender).transfer(leftoverEth);
        }
    }

    function _tokenTransferFromContract(address recipient, uint256 tAmount) private {
        uint256 currentRate = _getReflectionRate();
        uint256 rAmount = tAmount * currentRate;

        require(_rOwned[address(this)] >= rAmount, "Contract has insufficient tokens");

        _rOwned[address(this)] -= rAmount;
        _rOwned[recipient] += rAmount;

        emit Transfer(address(this), recipient, tAmount);
    }

    // -------------------------------------------------------
    // Trustless 50/50 ETH Split
    // -------------------------------------------------------
    function withdrawAndSplitETH() external onlyOwners nonReentrant {
        uint256 bal = address(this).balance;
        require(bal > 0, "No ETH to split");

        uint256 half = bal / 2;
        payable(owner1).transfer(half);
        payable(owner2).transfer(address(this).balance);
    }

    // -------------------------------------------------------
    // Receive / Fallback
    // -------------------------------------------------------
    receive() external payable {
        // accept ETH
    }

    fallback() external payable {
        revert("fallback not supported");
    }

    // -------------------------------------------------------
    // ERC20 Events
    // -------------------------------------------------------
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.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;
    }

    /**
     * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a
     * `nonReentrant` function in the call stack.
     */
    function _reentrancyGuardEntered() internal view returns (bool) {
        return _status == _ENTERED;
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "remappings": []
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_owner1","type":"address"},{"internalType":"address","name":"_owner2","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"REFLECTION_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnProposer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTokens","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"confirmBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentPhase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"isBurnProposed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner2","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"phaseRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"phaseSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"proposeBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proposedBurnAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proposedBurnFrom","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawAndSplitETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a620003fe565b62000022906302faf08062000416565b620000309060001962000430565b6200003e9060001962000453565b6001556040518060a001604052806012600a6200005c9190620003fe565b6200006b90624c4b4062000416565b81526020016200007e6012600a620003fe565b6200008d90623d090062000416565b8152602001620000a06012600a620003fe565b620000af90622dc6c062000416565b8152602001620000c26012600a620003fe565b620000d190623d090062000416565b8152602001620000e46012600a620003fe565b620000f390624c4b4062000416565b90526200010590600990600562000258565b506040805160a0810182526103e881526103846020820152610320918101919091526102bc606082015261025860808201526200014790600e9060056200029b565b503480156200015557600080fd5b5060405162001aa438038062001aa4833981016040819052620001789162000486565b60016000556001600160a01b038216620001ca5760405162461bcd60e51b815260206004820152600e60248201526d496e76616c6964206f776e65723160901b60448201526064015b60405180910390fd5b6001600160a01b038116620002135760405162461bcd60e51b815260206004820152600e60248201526d24b73b30b634b21037bbb732b91960911b6044820152606401620001c1565b600480546001600160a01b039384166001600160a01b0319918216179091556005805492909316911617905560015430600090815260026020526040902055620004be565b826005810192821562000289579160200282015b82811115620002895782518255916020019190600101906200026c565b5062000297929150620002d2565b5090565b826005810192821562000289579160200282015b8281111562000289578251829061ffff16905591602001919060010190620002af565b5b80821115620002975760008155600101620002d3565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000340578160001904821115620003245762000324620002e9565b808516156200033257918102915b93841c939080029062000304565b509250929050565b6000826200035957506001620003f8565b816200036857506000620003f8565b81600181146200038157600281146200038c57620003ac565b6001915050620003f8565b60ff841115620003a057620003a0620002e9565b50506001821b620003f8565b5060208310610133831016604e8410600b8410161715620003d1575081810a620003f8565b620003dd8383620002ff565b8060001904821115620003f457620003f4620002e9565b0290505b92915050565b60006200040f60ff84168362000348565b9392505050565b8082028115828204841417620003f857620003f8620002e9565b6000826200044e57634e487b7160e01b600052601260045260246000fd5b500690565b81810381811115620003f857620003f8620002e9565b80516001600160a01b03811681146200048157600080fd5b919050565b600080604083850312156200049a57600080fd5b620004a58362000469565b9150620004b56020840162000469565b90509250929050565b6115d680620004ce6000396000f3fe60806040526004361061016a5760003560e01c806352709725116100d1578063a9059cbb1161008a578063d0febe4c11610064578063d0febe4c1461047e578063dd62ed3e14610486578063e0c6a23f146104cc578063e5eb0ab5146104ec57610171565b8063a9059cbb14610429578063af09940d14610449578063bfda08231461046957610171565b8063527097251461036557806370a082311461038557806373688914146103a557806378f053da146103c557806395d89b41146103e55780639dddcbc91461041357610171565b8063245ff1ae11610123578063245ff1ae146102a45780632d838119146102c5578063313ce567146102e55780633657ee0a146103015780633b4f7c5a1461031857806348040ac91461035057610171565b8063055ad42e146101b757806306fdde03146101e0578063095ea7b31461021f5780631392c0861461024f57806318160ddd1461026f57806323b872dd1461028457610171565b3661017157005b60405162461bcd60e51b815260206004820152601660248201527519985b1b189858dac81b9bdd081cdd5c1c1bdc9d195960521b60448201526064015b60405180910390fd5b3480156101c357600080fd5b506101cd60135481565b6040519081526020015b60405180910390f35b3480156101ec57600080fd5b5060408051808201909152600d81526c4153505952204e6574776f726b60981b60208201525b6040516101d7919061129b565b34801561022b57600080fd5b5061023f61023a366004611305565b61050c565b60405190151581526020016101d7565b34801561025b57600080fd5b506101cd61026a36600461132f565b610523565b34801561027b57600080fd5b506101cd6105a3565b34801561029057600080fd5b5061023f61029f366004611348565b6105c4565b3480156102b057600080fd5b5060055461023f90600160a01b900460ff1681565b3480156102d157600080fd5b506101cd6102e036600461132f565b610667565b3480156102f157600080fd5b50604051601281526020016101d7565b34801561030d57600080fd5b506103166106c5565b005b34801561032457600080fd5b50600654610338906001600160a01b031681565b6040516001600160a01b0390911681526020016101d7565b34801561035c57600080fd5b506101cd600481565b34801561037157600080fd5b50600554610338906001600160a01b031681565b34801561039157600080fd5b506101cd6103a0366004611384565b61087c565b3480156103b157600080fd5b50600454610338906001600160a01b031681565b3480156103d157600080fd5b506101cd6103e036600461132f565b61089e565b3480156103f157600080fd5b5060408051808201909152600581526420a9a82ca960d91b6020820152610212565b34801561041f57600080fd5b506101cd60085481565b34801561043557600080fd5b5061023f610444366004611305565b6108b5565b34801561045557600080fd5b506101cd61046436600461132f565b6108c2565b34801561047557600080fd5b506103166108d2565b6103166109ea565b34801561049257600080fd5b506101cd6104a136600461139f565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156104d857600080fd5b506103166104e7366004611305565b610c19565b3480156104f857600080fd5b50600754610338906001600160a01b031681565b6000610519338484610dda565b5060015b92915050565b60006105316012600a6114cc565b61053f906302faf0806114db565b8211156105865760405162461bcd60e51b8152602060048201526015602482015274416d6f756e74203e20746f74616c20737570706c7960581b60448201526064016101ae565b6000610590610ee7565b905061059c81846114db565b9392505050565b60006105b16012600a6114cc565b6105bf906302faf0806114db565b905090565b60006105d1848484610f10565b6001600160a01b03841660009081526003602090815260408083203384529091529020548281101561064f5760405162461bcd60e51b815260206004820152602160248201527f7472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636044820152606560f81b60648201526084016101ae565b61065c8533858403610dda565b506001949350505050565b60006001548211156106af5760405162461bcd60e51b81526020600482015260116024820152701c905b5bdd5b9d080f8817dc951bdd185b607a1b60448201526064016101ae565b60006106b9610ee7565b905061059c81846114f2565b6004546001600160a01b03163314806106e857506005546001600160a01b031633145b6107045760405162461bcd60e51b81526004016101ae90611514565b600554600160a01b900460ff166107505760405162461bcd60e51b815260206004820152601060248201526f139bc8189d5c9b881c1c9bdc1bdcd85b60821b60448201526064016101ae565b6006546001600160a01b031633036107aa5760405162461bcd60e51b815260206004820152601e60248201527f53616d65206f776e65722063616e6e6f7420636f6e6669726d206275726e000060448201526064016101ae565b60006107b4610ee7565b90506000816008546107c691906114db565b6007546001600160a01b03166000908152600260205260408120805492935083929091906107f590849061154b565b92505081905550806001600082825461080e919061154b565b90915550506005805460ff60a01b19169055600680546001600160a01b03199081169091556007805490911690556000600881905560405181815281907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b03811660009081526002602052604081205461051d90610667565b600e81600581106108ae57600080fd5b0154905081565b6000610519338484610f10565b600981600581106108ae57600080fd5b6004546001600160a01b03163314806108f557506005546001600160a01b031633145b6109115760405162461bcd60e51b81526004016101ae90611514565b610919611131565b47806109595760405162461bcd60e51b815260206004820152600f60248201526e139bc8115512081d1bc81cdc1b1a5d608a1b60448201526064016101ae565b60006109666002836114f2565b6004546040519192506001600160a01b03169082156108fc029083906000818181858888f193505050501580156109a1573d6000803e3d6000fd5b506005546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156109db573d6000803e3d6000fd5b5050506109e86001600055565b565b6109f2611131565b600560135410610a3b5760405162461bcd60e51b8152602060048201526014602482015273105b1b081250d3c81c1a185cd95cc8195b99195960621b60448201526064016101ae565b60003411610a795760405162461bcd60e51b815260206004820152600b60248201526a139bc8115512081cd95b9d60aa1b60448201526064016101ae565b3460005b600082118015610a8f57506005601354105b15610b79576000600e60135460058110610aab57610aab61155e565b015490506000610abb82856114db565b90506000600960135460058110610ad457610ad461155e565b01549050808211610b205781600960135460058110610af557610af561155e565b016000828254610b05919061154b565b90915550610b1590508285611574565b935060009450610b71565b610b2a8185611574565b9350610b3683826114f2565b610b40908661154b565b94506000600960135460058110610b5957610b5961155e565b015560138054906000610b6b83611587565b91905055505b505050610a7d565b60008111610bbf5760405162461bcd60e51b8152602060048201526013602482015272139bc81d1bdad95b9cc81c1d5c98da185cd959606a1b60448201526064016101ae565b610bc9338261118a565b600082118015610bdb57506013546005145b15610c0d57604051339083156108fc029084906000818181858888f193505050501580156109db573d6000803e3d6000fd5b50506109e86001600055565b6004546001600160a01b0316331480610c3c57506005546001600160a01b031633145b610c585760405162461bcd60e51b81526004016101ae90611514565b600554600160a01b900460ff1615610ca95760405162461bcd60e51b81526020600482015260146024820152734275726e2070726f706f73616c2061637469766560601b60448201526064016101ae565b6001600160a01b038216610cff5760405162461bcd60e51b815260206004820152601d60248201527f43616e6e6f74206275726e2066726f6d207a65726f206164647265737300000060448201526064016101ae565b60008111610d3a5760405162461bcd60e51b815260206004820152600860248201526704275726e203e20360c41b60448201526064016101ae565b80610d448361087c565b1015610d925760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e742062616c616e636520746f206275726e0000000060448201526064016101ae565b600680546001600160a01b03199081163317909155600780546001600160a01b039490941693909116929092179091556008556005805460ff60a01b1916600160a01b179055565b6001600160a01b038316610e305760405162461bcd60e51b815260206004820152601960248201527f617070726f76652066726f6d207a65726f20616464726573730000000000000060448201526064016101ae565b6001600160a01b038216610e865760405162461bcd60e51b815260206004820152601760248201527f617070726f766520746f207a65726f206164647265737300000000000000000060448201526064016101ae565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610ef56012600a6114cc565b610f03906302faf0806114db565b6001546105bf91906114f2565b6001600160a01b038316610f665760405162461bcd60e51b815260206004820152601a60248201527f7472616e736665722066726f6d207a65726f206164647265737300000000000060448201526064016101ae565b6001600160a01b038216610fbc5760405162461bcd60e51b815260206004820152601860248201527f7472616e7366657220746f207a65726f2061646472657373000000000000000060448201526064016101ae565b600081116110025760405162461bcd60e51b815260206004820152601360248201527207472616e7366657220616d6f756e74203e203606c1b60448201526064016101ae565b600061100c610ee7565b9050600061101a82846114db565b90506000606461102b6004866114db565b61103591906114f2565b90506000611043828661154b565b9050600061105185846114db565b9050600061105f828661154b565b6001600160a01b038a1660009081526002602052604081208054929350879290919061108c90849061154b565b90915550506001600160a01b038816600090815260026020526040812080548392906110b9908490611574565b9250508190555081600160008282546110d2919061154b565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161111e91815260200190565b60405180910390a3505050505050505050565b6002600054036111835760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101ae565b6002600055565b6000611194610ee7565b905060006111a282846114db565b306000908152600260205260409020549091508111156112045760405162461bcd60e51b815260206004820181905260248201527f436f6e74726163742068617320696e73756666696369656e7420746f6b656e7360448201526064016101ae565b306000908152600260205260408120805483929061122390849061154b565b90915550506001600160a01b03841660009081526002602052604081208054839290611250908490611574565b90915550506040518381526001600160a01b0385169030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b600060208083528351808285015260005b818110156112c8578581018301518582016040015282016112ac565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461130057600080fd5b919050565b6000806040838503121561131857600080fd5b611321836112e9565b946020939093013593505050565b60006020828403121561134157600080fd5b5035919050565b60008060006060848603121561135d57600080fd5b611366846112e9565b9250611374602085016112e9565b9150604084013590509250925092565b60006020828403121561139657600080fd5b61059c826112e9565b600080604083850312156113b257600080fd5b6113bb836112e9565b91506113c9602084016112e9565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611423578160001904821115611409576114096113d2565b8085161561141657918102915b93841c93908002906113ed565b509250929050565b60008261143a5750600161051d565b816114475750600061051d565b816001811461145d576002811461146757611483565b600191505061051d565b60ff841115611478576114786113d2565b50506001821b61051d565b5060208310610133831016604e8410600b84101617156114a6575081810a61051d565b6114b083836113e8565b80600019048211156114c4576114c46113d2565b029392505050565b600061059c60ff84168361142b565b808202811582820484141761051d5761051d6113d2565b60008261150f57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526017908201527f4e6f7420616e20617574686f72697a6564206f776e6572000000000000000000604082015260600190565b8181038181111561051d5761051d6113d2565b634e487b7160e01b600052603260045260246000fd5b8082018082111561051d5761051d6113d2565b600060018201611599576115996113d2565b506001019056fea26469706673582212205c29ce8828e221758293c068e89a98e286a3b92051a36263058387662b3c65a964736f6c634300081300330000000000000000000000001cf926b88514b447feebb244f14aa2b5cf528a2e000000000000000000000000dfdab98ef21417861e7402a53f07c589b99e027c

Deployed Bytecode

0x60806040526004361061016a5760003560e01c806352709725116100d1578063a9059cbb1161008a578063d0febe4c11610064578063d0febe4c1461047e578063dd62ed3e14610486578063e0c6a23f146104cc578063e5eb0ab5146104ec57610171565b8063a9059cbb14610429578063af09940d14610449578063bfda08231461046957610171565b8063527097251461036557806370a082311461038557806373688914146103a557806378f053da146103c557806395d89b41146103e55780639dddcbc91461041357610171565b8063245ff1ae11610123578063245ff1ae146102a45780632d838119146102c5578063313ce567146102e55780633657ee0a146103015780633b4f7c5a1461031857806348040ac91461035057610171565b8063055ad42e146101b757806306fdde03146101e0578063095ea7b31461021f5780631392c0861461024f57806318160ddd1461026f57806323b872dd1461028457610171565b3661017157005b60405162461bcd60e51b815260206004820152601660248201527519985b1b189858dac81b9bdd081cdd5c1c1bdc9d195960521b60448201526064015b60405180910390fd5b3480156101c357600080fd5b506101cd60135481565b6040519081526020015b60405180910390f35b3480156101ec57600080fd5b5060408051808201909152600d81526c4153505952204e6574776f726b60981b60208201525b6040516101d7919061129b565b34801561022b57600080fd5b5061023f61023a366004611305565b61050c565b60405190151581526020016101d7565b34801561025b57600080fd5b506101cd61026a36600461132f565b610523565b34801561027b57600080fd5b506101cd6105a3565b34801561029057600080fd5b5061023f61029f366004611348565b6105c4565b3480156102b057600080fd5b5060055461023f90600160a01b900460ff1681565b3480156102d157600080fd5b506101cd6102e036600461132f565b610667565b3480156102f157600080fd5b50604051601281526020016101d7565b34801561030d57600080fd5b506103166106c5565b005b34801561032457600080fd5b50600654610338906001600160a01b031681565b6040516001600160a01b0390911681526020016101d7565b34801561035c57600080fd5b506101cd600481565b34801561037157600080fd5b50600554610338906001600160a01b031681565b34801561039157600080fd5b506101cd6103a0366004611384565b61087c565b3480156103b157600080fd5b50600454610338906001600160a01b031681565b3480156103d157600080fd5b506101cd6103e036600461132f565b61089e565b3480156103f157600080fd5b5060408051808201909152600581526420a9a82ca960d91b6020820152610212565b34801561041f57600080fd5b506101cd60085481565b34801561043557600080fd5b5061023f610444366004611305565b6108b5565b34801561045557600080fd5b506101cd61046436600461132f565b6108c2565b34801561047557600080fd5b506103166108d2565b6103166109ea565b34801561049257600080fd5b506101cd6104a136600461139f565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156104d857600080fd5b506103166104e7366004611305565b610c19565b3480156104f857600080fd5b50600754610338906001600160a01b031681565b6000610519338484610dda565b5060015b92915050565b60006105316012600a6114cc565b61053f906302faf0806114db565b8211156105865760405162461bcd60e51b8152602060048201526015602482015274416d6f756e74203e20746f74616c20737570706c7960581b60448201526064016101ae565b6000610590610ee7565b905061059c81846114db565b9392505050565b60006105b16012600a6114cc565b6105bf906302faf0806114db565b905090565b60006105d1848484610f10565b6001600160a01b03841660009081526003602090815260408083203384529091529020548281101561064f5760405162461bcd60e51b815260206004820152602160248201527f7472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636044820152606560f81b60648201526084016101ae565b61065c8533858403610dda565b506001949350505050565b60006001548211156106af5760405162461bcd60e51b81526020600482015260116024820152701c905b5bdd5b9d080f8817dc951bdd185b607a1b60448201526064016101ae565b60006106b9610ee7565b905061059c81846114f2565b6004546001600160a01b03163314806106e857506005546001600160a01b031633145b6107045760405162461bcd60e51b81526004016101ae90611514565b600554600160a01b900460ff166107505760405162461bcd60e51b815260206004820152601060248201526f139bc8189d5c9b881c1c9bdc1bdcd85b60821b60448201526064016101ae565b6006546001600160a01b031633036107aa5760405162461bcd60e51b815260206004820152601e60248201527f53616d65206f776e65722063616e6e6f7420636f6e6669726d206275726e000060448201526064016101ae565b60006107b4610ee7565b90506000816008546107c691906114db565b6007546001600160a01b03166000908152600260205260408120805492935083929091906107f590849061154b565b92505081905550806001600082825461080e919061154b565b90915550506005805460ff60a01b19169055600680546001600160a01b03199081169091556007805490911690556000600881905560405181815281907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b03811660009081526002602052604081205461051d90610667565b600e81600581106108ae57600080fd5b0154905081565b6000610519338484610f10565b600981600581106108ae57600080fd5b6004546001600160a01b03163314806108f557506005546001600160a01b031633145b6109115760405162461bcd60e51b81526004016101ae90611514565b610919611131565b47806109595760405162461bcd60e51b815260206004820152600f60248201526e139bc8115512081d1bc81cdc1b1a5d608a1b60448201526064016101ae565b60006109666002836114f2565b6004546040519192506001600160a01b03169082156108fc029083906000818181858888f193505050501580156109a1573d6000803e3d6000fd5b506005546040516001600160a01b03909116904780156108fc02916000818181858888f193505050501580156109db573d6000803e3d6000fd5b5050506109e86001600055565b565b6109f2611131565b600560135410610a3b5760405162461bcd60e51b8152602060048201526014602482015273105b1b081250d3c81c1a185cd95cc8195b99195960621b60448201526064016101ae565b60003411610a795760405162461bcd60e51b815260206004820152600b60248201526a139bc8115512081cd95b9d60aa1b60448201526064016101ae565b3460005b600082118015610a8f57506005601354105b15610b79576000600e60135460058110610aab57610aab61155e565b015490506000610abb82856114db565b90506000600960135460058110610ad457610ad461155e565b01549050808211610b205781600960135460058110610af557610af561155e565b016000828254610b05919061154b565b90915550610b1590508285611574565b935060009450610b71565b610b2a8185611574565b9350610b3683826114f2565b610b40908661154b565b94506000600960135460058110610b5957610b5961155e565b015560138054906000610b6b83611587565b91905055505b505050610a7d565b60008111610bbf5760405162461bcd60e51b8152602060048201526013602482015272139bc81d1bdad95b9cc81c1d5c98da185cd959606a1b60448201526064016101ae565b610bc9338261118a565b600082118015610bdb57506013546005145b15610c0d57604051339083156108fc029084906000818181858888f193505050501580156109db573d6000803e3d6000fd5b50506109e86001600055565b6004546001600160a01b0316331480610c3c57506005546001600160a01b031633145b610c585760405162461bcd60e51b81526004016101ae90611514565b600554600160a01b900460ff1615610ca95760405162461bcd60e51b81526020600482015260146024820152734275726e2070726f706f73616c2061637469766560601b60448201526064016101ae565b6001600160a01b038216610cff5760405162461bcd60e51b815260206004820152601d60248201527f43616e6e6f74206275726e2066726f6d207a65726f206164647265737300000060448201526064016101ae565b60008111610d3a5760405162461bcd60e51b815260206004820152600860248201526704275726e203e20360c41b60448201526064016101ae565b80610d448361087c565b1015610d925760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e742062616c616e636520746f206275726e0000000060448201526064016101ae565b600680546001600160a01b03199081163317909155600780546001600160a01b039490941693909116929092179091556008556005805460ff60a01b1916600160a01b179055565b6001600160a01b038316610e305760405162461bcd60e51b815260206004820152601960248201527f617070726f76652066726f6d207a65726f20616464726573730000000000000060448201526064016101ae565b6001600160a01b038216610e865760405162461bcd60e51b815260206004820152601760248201527f617070726f766520746f207a65726f206164647265737300000000000000000060448201526064016101ae565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610ef56012600a6114cc565b610f03906302faf0806114db565b6001546105bf91906114f2565b6001600160a01b038316610f665760405162461bcd60e51b815260206004820152601a60248201527f7472616e736665722066726f6d207a65726f206164647265737300000000000060448201526064016101ae565b6001600160a01b038216610fbc5760405162461bcd60e51b815260206004820152601860248201527f7472616e7366657220746f207a65726f2061646472657373000000000000000060448201526064016101ae565b600081116110025760405162461bcd60e51b815260206004820152601360248201527207472616e7366657220616d6f756e74203e203606c1b60448201526064016101ae565b600061100c610ee7565b9050600061101a82846114db565b90506000606461102b6004866114db565b61103591906114f2565b90506000611043828661154b565b9050600061105185846114db565b9050600061105f828661154b565b6001600160a01b038a1660009081526002602052604081208054929350879290919061108c90849061154b565b90915550506001600160a01b038816600090815260026020526040812080548392906110b9908490611574565b9250508190555081600160008282546110d2919061154b565b92505081905550876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161111e91815260200190565b60405180910390a3505050505050505050565b6002600054036111835760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101ae565b6002600055565b6000611194610ee7565b905060006111a282846114db565b306000908152600260205260409020549091508111156112045760405162461bcd60e51b815260206004820181905260248201527f436f6e74726163742068617320696e73756666696369656e7420746f6b656e7360448201526064016101ae565b306000908152600260205260408120805483929061122390849061154b565b90915550506001600160a01b03841660009081526002602052604081208054839290611250908490611574565b90915550506040518381526001600160a01b0385169030907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505050565b600060208083528351808285015260005b818110156112c8578581018301518582016040015282016112ac565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461130057600080fd5b919050565b6000806040838503121561131857600080fd5b611321836112e9565b946020939093013593505050565b60006020828403121561134157600080fd5b5035919050565b60008060006060848603121561135d57600080fd5b611366846112e9565b9250611374602085016112e9565b9150604084013590509250925092565b60006020828403121561139657600080fd5b61059c826112e9565b600080604083850312156113b257600080fd5b6113bb836112e9565b91506113c9602084016112e9565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611423578160001904821115611409576114096113d2565b8085161561141657918102915b93841c93908002906113ed565b509250929050565b60008261143a5750600161051d565b816114475750600061051d565b816001811461145d576002811461146757611483565b600191505061051d565b60ff841115611478576114786113d2565b50506001821b61051d565b5060208310610133831016604e8410600b84101617156114a6575081810a61051d565b6114b083836113e8565b80600019048211156114c4576114c46113d2565b029392505050565b600061059c60ff84168361142b565b808202811582820484141761051d5761051d6113d2565b60008261150f57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526017908201527f4e6f7420616e20617574686f72697a6564206f776e6572000000000000000000604082015260600190565b8181038181111561051d5761051d6113d2565b634e487b7160e01b600052603260045260246000fd5b8082018082111561051d5761051d6113d2565b600060018201611599576115996113d2565b506001019056fea26469706673582212205c29ce8828e221758293c068e89a98e286a3b92051a36263058387662b3c65a964736f6c63430008130033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000001cf926b88514b447feebb244f14aa2b5cf528a2e000000000000000000000000dfdab98ef21417861e7402a53f07c589b99e027c

-----Decoded View---------------
Arg [0] : _owner1 (address): 0x1Cf926b88514B447fEEBb244F14aa2b5CF528a2E
Arg [1] : _owner2 (address): 0xdFdAB98ef21417861e7402a53F07c589B99e027c

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000001cf926b88514b447feebb244f14aa2b5cf528a2e
Arg [1] : 000000000000000000000000dfdab98ef21417861e7402a53f07c589b99e027c


Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.