ETH Price: $3,151.48 (+3.06%)
Gas: 6 Gwei

Contract

0x1a136Ae98B49b92841562B6574D1F3F5b0044e4c
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Transfer55377572018-05-01 12:25:402181 days ago1525177540IN
0x1a136Ae9...5b0044e4c
0 ETH0.000147744
Transfer54894082018-04-23 2:54:482189 days ago1524452088IN
0x1a136Ae9...5b0044e4c
0 ETH0.000147484
Transfer54526302018-04-16 19:40:142196 days ago1523907614IN
0x1a136Ae9...5b0044e4c
0 ETH0.000036931
Mint53956842018-04-07 6:46:152205 days ago1523083575IN
0x1a136Ae9...5b0044e4c
0 ETH0.0010874440
Mint53899322018-04-06 7:44:152206 days ago1523000655IN
0x1a136Ae9...5b0044e4c
0 ETH0.0010848840
Mint53899262018-04-06 7:42:242206 days ago1523000544IN
0x1a136Ae9...5b0044e4c
0 ETH0.000081553
Transfer53876862018-04-05 23:00:432207 days ago1522969243IN
0x1a136Ae9...5b0044e4c
0 ETH0.0014774440
Approve53865602018-04-05 18:42:202207 days ago1522953740IN
0x1a136Ae9...5b0044e4c
0 ETH0.000090832
Transfer53838112018-04-05 7:34:032207 days ago1522913643IN
0x1a136Ae9...5b0044e4c
0 ETH0.0014774440
Mint53834192018-04-05 6:03:192207 days ago1522908199IN
0x1a136Ae9...5b0044e4c
0 ETH0.000081363
Mint53834022018-04-05 5:56:362207 days ago1522907796IN
0x1a136Ae9...5b0044e4c
0 ETH0.000081553
Mint53833882018-04-05 5:52:492207 days ago1522907569IN
0x1a136Ae9...5b0044e4c
0 ETH0.0002718610
Mint53833592018-04-05 5:44:442207 days ago1522907084IN
0x1a136Ae9...5b0044e4c
0 ETH0.0002718610
Mint53823492018-04-05 1:41:292207 days ago1522892489IN
0x1a136Ae9...5b0044e4c
0 ETH0.0002718610
Mint53822372018-04-05 1:16:532207 days ago1522891013IN
0x1a136Ae9...5b0044e4c
0 ETH0.0002712210
Mint53821452018-04-05 0:57:132207 days ago1522889833IN
0x1a136Ae9...5b0044e4c
0 ETH0.0005437220
Mint53821242018-04-05 0:51:352207 days ago1522889495IN
0x1a136Ae9...5b0044e4c
0 ETH0.000054372
Mint53820672018-04-05 0:37:212207 days ago1522888641IN
0x1a136Ae9...5b0044e4c
0 ETH0.000135935
Mint53820552018-04-05 0:33:112207 days ago1522888391IN
0x1a136Ae9...5b0044e4c
0 ETH0.000135615
Mint53820352018-04-05 0:29:042207 days ago1522888144IN
0x1a136Ae9...5b0044e4c
0 ETH0.000135935
Mint53820352018-04-05 0:29:042207 days ago1522888144IN
0x1a136Ae9...5b0044e4c
0 ETH0.000135935
Mint53820162018-04-05 0:25:592207 days ago1522887959IN
0x1a136Ae9...5b0044e4c
0 ETH0.000135935
Mint53819912018-04-05 0:19:382207 days ago1522887578IN
0x1a136Ae9...5b0044e4c
0 ETH0.000135935
Mint53819272018-04-05 0:04:432207 days ago1522886683IN
0x1a136Ae9...5b0044e4c
0 ETH0.0004077915
Mint53818792018-04-04 23:50:192208 days ago1522885819IN
0x1a136Ae9...5b0044e4c
0 ETH0.0004058715
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PoWAdvCoinToken

Compiler Version
v0.4.21+commit.dfe3193c

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-03-27
*/

pragma solidity ^0.4.18;

// ----------------------------------------------------------------------------
// 'PoWAdv Token' contract
// Mineable ERC20 Token using Proof Of Work
//
// Symbol      : POWA
// Name        : PoWAdv Token
// Total supply: 100,000,000.00
// Decimals    : 8
//
// ----------------------------------------------------------------------------

// ----------------------------------------------------------------------------
// Safe maths
// ----------------------------------------------------------------------------
library SafeMath {
    function add(uint a, uint b) internal pure returns (uint c) {
        c = a + b;
        require(c >= a);
    }

    function sub(uint a, uint b) internal pure returns (uint c) {
        require(b <= a);
        c = a - b;
    }

    function mul(uint a, uint b) internal pure returns (uint c) {
        c = a * b;
        require(a == 0 || c / a == b);
    }

    function div(uint a, uint b) internal pure returns (uint c) {
        require(b > 0);
        c = a / b;
    }
}

library ExtendedMath {
    //return the smaller of the two inputs (a or b)
    function limitLessThan(uint a, uint b) internal pure returns (uint c) {
        if(a > b) return b;
        return a;
    }
}

// ----------------------------------------------------------------------------
// ERC Token Standard #20 Interface
// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md
// ----------------------------------------------------------------------------
contract ERC20Interface {
    function totalSupply() public constant returns (uint);
    function balanceOf(address tokenOwner) public constant returns (uint balance);
    function allowance(address tokenOwner, address spender) public constant returns (uint remaining);
    function transfer(address to, uint tokens) public returns (bool success);
    function approve(address spender, uint tokens) public returns (bool success);
    function transferFrom(address from, address to, uint tokens) public returns (bool success);

    event Transfer(address indexed from, address indexed to, uint tokens);
    event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
}

// ----------------------------------------------------------------------------
// Contract function to receive approval and execute function in one call
//
// Borrowed from MiniMeToken
// ----------------------------------------------------------------------------
contract ApproveAndCallFallBack {
    function receiveApproval(address from, uint256 tokens, address token, bytes data) public;
}

// ----------------------------------------------------------------------------
// Owned contract
// ----------------------------------------------------------------------------
contract Owned {
    address public owner;
    address public newOwner;

    event OwnershipTransferred(address indexed _from, address indexed _to);

    function Owned() public {
        owner = msg.sender;
    }

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }

    function transferOwnership(address _newOwner) public onlyOwner {
        newOwner = _newOwner;
    }

    function acceptOwnership() public {
        require(msg.sender == newOwner);
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
        newOwner = address(0);
    }
}

// ----------------------------------------------------------------------------
// ERC20 Token, with the addition of symbol, name and decimals and an
// initial fixed supply
// ----------------------------------------------------------------------------
contract PoWAdvCoinToken is ERC20Interface, Owned {
    using SafeMath for uint;
    using ExtendedMath for uint;

    string public symbol;
    string public  name;
    uint8 public decimals;
    uint public _totalSupply;

    uint public latestDifficultyPeriodStarted;
    uint public firstValidBlockNumber;

    uint public epochCount; //number of 'blocks' mined

    uint public _BLOCKS_PER_READJUSTMENT = 16;
    // avg ETH block period is ~10sec this is 60 roughly block per 10min
    uint public _TARGET_EPOCH_PER_PEDIOD = _BLOCKS_PER_READJUSTMENT * 60; 
    uint public _BLOCK_REWARD = (250 * 10**uint(8));
    //a little number
    uint public  _MINIMUM_TARGET = 2**16;
    //a big number is easier ; just find a solution that is smaller
    uint public  _MAXIMUM_TARGET = 2**234;

    uint public miningTarget;
    bytes32 public challengeNumber;   //generate a new one when a new reward is minted

    bool locked = false;

    mapping(bytes32 => bytes32) solutionForChallenge;

    uint public tokensMinted;

    mapping(address => uint) balances;
    mapping(address => mapping(address => uint)) allowed;

    event Mint(address indexed from, uint reward_amount, uint epochCount, bytes32 newChallengeNumber);

    // ------------------------------------------------------------------------
    // Constructor
    // ------------------------------------------------------------------------
    function PoWAdvCoinToken() public onlyOwner {

        symbol = "POWA";
        name = "PoWAdv Token";
        decimals = 8;
        _totalSupply = 100000000 * 10**uint(decimals);

        if(locked) 
			revert();
			
        locked = true;
        tokensMinted = 0;
        miningTarget = _MAXIMUM_TARGET;
        latestDifficultyPeriodStarted = block.number;
        firstValidBlockNumber =  5349511;
        _startNewMiningEpoch();

        // Sum of tokens mined before hard fork, will be distributed manually
        epochCount = 3071;
        balances[owner] = epochCount * _BLOCK_REWARD;
        tokensMinted = epochCount * _BLOCK_REWARD;
    }
 
	function mint(uint256 nonce, bytes32 challenge_digest) public returns (bool success) {

        require(block.number > firstValidBlockNumber);
            
		//the PoW must contain work that includes a recent ethereum block hash (challenge number) and the msg.sender's address to prevent MITM attacks
		bytes32 digest = keccak256(challengeNumber, msg.sender, nonce);

		//the challenge digest must match the expected
		if (digest != challenge_digest) 
			revert();

		//the digest must be smaller than the target
		if(uint256(digest) > discountedMiningTarget(msg.sender)) 
			revert();

		//only allow one reward for each challenge
		bytes32 solution = solutionForChallenge[challengeNumber];
		solutionForChallenge[challengeNumber] = digest;
		if(solution != 0x0) 
			revert();  //prevent the same answer from awarding twice

		uint reward_amount = _BLOCK_REWARD;

		balances[msg.sender] = balances[msg.sender].add(reward_amount);

        tokensMinted = tokensMinted.add(reward_amount);
        
		assert(tokensMinted <= _totalSupply);
	
		_startNewMiningEpoch();

		emit Mint(msg.sender, reward_amount, epochCount, challengeNumber);

		return true;
	}

    //a new 'block' to be mined
    function _startNewMiningEpoch() internal {
		epochCount = epochCount.add(1);

		//every so often, readjust difficulty. Dont readjust when deploying
		if(epochCount % _BLOCKS_PER_READJUSTMENT == 0)
			_reAdjustDifficulty();
		
		//make the latest ethereum block hash a part of the next challenge for PoW to prevent pre-mining future blocks
		//do this last since this is a protection mechanism in the mint() function
		challengeNumber = block.blockhash(block.number - 1);
    }

    function _reAdjustDifficulty() internal {

        uint ethBlocksSinceLastDifficultyPeriod = block.number - latestDifficultyPeriodStarted;

        //we want miners to spend 10 minutes to mine each 'block', about 60 ethereum blocks = one POWA epoch
        uint targetEthBlocksPerDiffPeriod = _TARGET_EPOCH_PER_PEDIOD; //should be X times slower than ethereum

        //if there were less eth blocks passed in time than expected
        if(ethBlocksSinceLastDifficultyPeriod < targetEthBlocksPerDiffPeriod)
        {
			uint excess_block_pct = (targetEthBlocksPerDiffPeriod.mul(100)).div(ethBlocksSinceLastDifficultyPeriod);
			uint excess_block_pct_extra = excess_block_pct.sub(100).limitLessThan(1000);
		
			//make it harder
			miningTarget = miningTarget.sub(miningTarget.div(2000).mul(excess_block_pct_extra));   //by up to 50 %
        }else{
			uint shortage_block_pct = (ethBlocksSinceLastDifficultyPeriod.mul(100)).div(targetEthBlocksPerDiffPeriod);
			uint shortage_block_pct_extra = shortage_block_pct.sub(100).limitLessThan(1000); //always between 0 and 1000

			//make it easier
			miningTarget = miningTarget.add(miningTarget.div(2000).mul(shortage_block_pct_extra));  //by up to 50 %
        }

        latestDifficultyPeriodStarted = block.number;

        if(miningTarget < _MINIMUM_TARGET) //very difficult
        {
			miningTarget = _MINIMUM_TARGET;
        }

        if(miningTarget > _MAXIMUM_TARGET) //very easy
        {
			miningTarget = _MAXIMUM_TARGET;
        }
    }

    //this is a recent ethereum block hash, used to prevent pre-mining future blocks
    function getChallengeNumber() public constant returns (bytes32) {
        return challengeNumber;
    }

    //the number of zeroes the digest of the PoW solution requires.  Auto adjusts
     function getMiningDifficulty() public constant returns (uint) {
        return _MAXIMUM_TARGET.div(miningTarget);
    }

	function getMiningTarget() public constant returns (uint) {
		return miningTarget;
	}
	
    function discountedMiningTarget(address solver) public constant returns (uint256 discountedDiff) {
        // the number of coins owned
        uint256 minerBalance = uint256(balanceOf(solver));
         
        if(minerBalance <= 2 * _BLOCK_REWARD)
            return getMiningTarget();
            
        // the number of full block rewards owned
        uint256 minerDiscount = uint256(minerBalance.div(_BLOCK_REWARD));
            
        discountedDiff = miningTarget.mul(minerDiscount.mul(minerDiscount));
        
        if(discountedDiff > _MAXIMUM_TARGET) //very easy
            discountedDiff = _MAXIMUM_TARGET;
      
        return discountedDiff;
    }
    
    function discountedMiningDifficulty(address solver) public constant returns (uint256 discountedDiff) {
        return _MAXIMUM_TARGET.div(discountedMiningTarget(solver));
    }

    // ------------------------------------------------------------------------
    // Total supply
    // ------------------------------------------------------------------------
    function totalSupply() public constant returns (uint) {
        return _totalSupply - balances[address(0)];
    }

    // ------------------------------------------------------------------------
    // Get the token balance for account `tokenOwner`
    // ------------------------------------------------------------------------
    function balanceOf(address tokenOwner) public constant returns (uint balance) {
        return balances[tokenOwner];
    }

    // ------------------------------------------------------------------------
    // Transfer the balance from token owner's account to `to` account
    // - Owner's account must have sufficient balance to transfer
    // - 0 value transfers are not allowed
    // ------------------------------------------------------------------------
    function transfer(address to, uint tokens) public returns (bool success) {
        require(to != 0);
        balances[msg.sender] = balances[msg.sender].sub(tokens);
        balances[to] = balances[to].add(tokens);
        emit Transfer(msg.sender, to, tokens);
        return true;
    }

    // ------------------------------------------------------------------------
    // Token owner can approve for `spender` to transferFrom(...) `tokens`
    // from the token owner's account
    //
    // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20-token-standard.md
    // recommends that there are no checks for the approval double-spend attack
    // as this should be implemented in user interfaces
    // ------------------------------------------------------------------------
    function approve(address spender, uint tokens) public returns (bool success) {
        allowed[msg.sender][spender] = tokens;
        emit Approval(msg.sender, spender, tokens);
        return true;
    }


    // ------------------------------------------------------------------------
    // Transfer `tokens` from the `from` account to the `to` account
    //
    // The calling account must already have sufficient tokens approve(...)-d
    // for spending from the `from` account and
    // - From account must have sufficient balance to transfer
    // - Spender must have sufficient allowance to transfer
    // - 0 value transfers are allowed
    // ------------------------------------------------------------------------
    function transferFrom(address from, address to, uint tokens) public returns (bool success) {
        balances[from] = balances[from].sub(tokens);
        allowed[from][msg.sender] = allowed[from][msg.sender].sub(tokens);
        balances[to] = balances[to].add(tokens);
        emit Transfer(from, to, tokens);
        return true;
    }

    // ------------------------------------------------------------------------
    // Returns the amount of tokens approved by the owner that can be
    // transferred to the spender's account
    // ------------------------------------------------------------------------
    function allowance(address tokenOwner, address spender) public constant returns (uint remaining) {
        return allowed[tokenOwner][spender];
    }

    // ------------------------------------------------------------------------
    // Token owner can approve for `spender` to transferFrom(...) `tokens`
    // from the token owner's account. The `spender` contract function
    // `receiveApproval(...)` is then executed
    // ------------------------------------------------------------------------
    function approveAndCall(address spender, uint tokens, bytes data) public returns (bool success) {
        allowed[msg.sender][spender] = tokens;
        emit Approval(msg.sender, spender, tokens);
        ApproveAndCallFallBack(spender).receiveApproval(msg.sender, tokens, this, data);
        return true;
    }

    // ------------------------------------------------------------------------
    // Don't accept ETH
    // ------------------------------------------------------------------------
    function () public payable {
        revert();
    }

    // ------------------------------------------------------------------------
    // Owner can transfer out any accidentally sent ERC20 tokens
    // ------------------------------------------------------------------------
    function transferAnyERC20Token(address tokenAddress, uint tokens) public onlyOwner returns (bool success) {
        return ERC20Interface(tokenAddress).transfer(owner, tokens);
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMiningDifficulty","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"nonce","type":"uint256"},{"name":"challenge_digest","type":"bytes32"}],"name":"mint","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"solver","type":"address"}],"name":"discountedMiningTarget","outputs":[{"name":"discountedDiff","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getMiningTarget","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getChallengeNumber","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_BLOCK_REWARD","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokensMinted","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"epochCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_MAXIMUM_TARGET","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"miningTarget","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"challengeNumber","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"_TARGET_EPOCH_PER_PEDIOD","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_BLOCKS_PER_READJUSTMENT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"firstValidBlockNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"solver","type":"address"}],"name":"discountedMiningDifficulty","outputs":[{"name":"discountedDiff","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"},{"name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"latestDifficultyPeriodStarted","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferAnyERC20Token","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"_MINIMUM_TARGET","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"reward_amount","type":"uint256"},{"indexed":false,"name":"epochCount","type":"uint256"},{"indexed":false,"name":"newChallengeNumber","type":"bytes32"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tokenOwner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Approval","type":"event"}]

6060604052601060098190556103c0600a556405d21dba00600b5562010000600c557d040000000000000000000000000000000000000000000000000000000000600d55805460ff1916905534156200005757600080fd5b60008054600160a060020a03338116600160a060020a031990921682179283905591909116146200008757600080fd5b60408051908101604052600481527f504f57410000000000000000000000000000000000000000000000000000000060208201526002908051620000d092916020019062000460565b5060408051908101604052600c81527f506f5741647620546f6b656e0000000000000000000000000000000000000000602082015260039080516200011a92916020019062000460565b506004805460ff1916600817908190556305f5e10060ff918216600a0a0260055560105416156200014a57600080fd5b6010805460ff191660011790556000601255600d54600e55436006556251a0876007556200018564010000000062000f21620001bc82021704565b610bff6008818155600b805460008054600160a060020a031681526013602052604090209302909255905490540260125562000505565b600854620001da90600164010000000062000f116200021882021704565b600881905560095490811515620001ed57fe5b0615156200020d576200020d64010000000062000f9b6200022f82021704565b600019430140600f55565b818101828110156200022957600080fd5b92915050565b600654600a544391909103906000808080848610156200031f576200027e866200026987606464010000000062000f61620003e582021704565b9064010000000062000ef06200040d82021704565b9350620002b76103e8620002a286606464010000000062000f866200043082021704565b90640100000000620010d06200044682021704565b925062000316620002fe84620002e96107d0600e546200040d6401000000000262000ef0179091906401000000009004565b9064010000000062000f61620003e582021704565b600e549064010000000062000f866200043082021704565b600e55620003b1565b6200033f856200026988606464010000000062000f61620003e582021704565b9150620003636103e8620002a284606464010000000062000f866200043082021704565b9050620003ad6200039582620002e96107d0600e546200040d6401000000000262000ef0179091906401000000009004565b600e549064010000000062000f116200021882021704565b600e555b43600655600c54600e541015620003c957600c54600e555b600d54600e541115620003dd57600d54600e555b505050505050565b818102821580620004015750818382811515620003fe57fe5b04145b15156200022957600080fd5b60008082116200041c57600080fd5b81838115156200042857fe5b049392505050565b6000828211156200044057600080fd5b50900390565b6000818311156200045957508062000229565b5090919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004a357805160ff1916838001178555620004d3565b82800160010185558215620004d3579182015b82811115620004d3578251825591602001919060010190620004b6565b50620004e1929150620004e5565b5090565b6200050291905b80821115620004e15760008155600101620004ec565b90565b61111480620005156000396000f3006060604052600436106101875763ffffffff60e060020a60003504166306fdde03811461018c578063095ea7b31461021657806317da485f1461024c5780631801fbe51461027157806318160ddd1461028a578063185a62841461029d57806323b872dd146102bc578063313ce567146102e457806332e997081461030d5780633eaaf86b146103205780634ef37628146103335780635e4b587b146103465780636de9f32b1461035957806370a082311461036c57806379ba50971461038b578063829965cc146103a057806387a2a9d6146103b35780638a769d35146103c65780638ae0368b146103d95780638da5cb5b146103ec57806395d89b411461041b578063a9059cbb1461042e578063b1483eee14610450578063b5ade81b14610463578063b7dc8a3214610476578063bbfbe6b614610489578063cae9ca51146104a8578063cb9ae7071461050d578063d4ee1d9014610520578063dc39d06d14610533578063dc6e9cf914610555578063dd62ed3e14610568578063f2fde38b1461058d575b600080fd5b341561019757600080fd5b61019f6105ac565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101db5780820151838201526020016101c3565b50505050905090810190601f1680156102085780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561022157600080fd5b610238600160a060020a036004351660243561064a565b604051901515815260200160405180910390f35b341561025757600080fd5b61025f6106b7565b60405190815260200160405180910390f35b341561027c57600080fd5b6102386004356024356106d5565b341561029557600080fd5b61025f610841565b34156102a857600080fd5b61025f600160a060020a0360043516610873565b34156102c757600080fd5b610238600160a060020a03600435811690602435166044356108f0565b34156102ef57600080fd5b6102f7610a03565b60405160ff909116815260200160405180910390f35b341561031857600080fd5b61025f610a0c565b341561032b57600080fd5b61025f610a12565b341561033e57600080fd5b61025f610a18565b341561035157600080fd5b61025f610a1e565b341561036457600080fd5b61025f610a24565b341561037757600080fd5b61025f600160a060020a0360043516610a2a565b341561039657600080fd5b61039e610a45565b005b34156103ab57600080fd5b61025f610ad3565b34156103be57600080fd5b61025f610ad9565b34156103d157600080fd5b61025f610adf565b34156103e457600080fd5b61025f610ae5565b34156103f757600080fd5b6103ff610aeb565b604051600160a060020a03909116815260200160405180910390f35b341561042657600080fd5b61019f610afa565b341561043957600080fd5b610238600160a060020a0360043516602435610b65565b341561045b57600080fd5b61025f610c3b565b341561046e57600080fd5b61025f610c41565b341561048157600080fd5b61025f610c47565b341561049457600080fd5b61025f600160a060020a0360043516610c4d565b34156104b357600080fd5b61023860048035600160a060020a03169060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610c6a95505050505050565b341561051857600080fd5b61025f610dcd565b341561052b57600080fd5b6103ff610dd3565b341561053e57600080fd5b610238600160a060020a0360043516602435610de2565b341561056057600080fd5b61025f610e75565b341561057357600080fd5b61025f600160a060020a0360043581169060243516610e7b565b341561059857600080fd5b61039e600160a060020a0360043516610ea6565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106425780601f1061061757610100808354040283529160200191610642565b820191906000526020600020905b81548152906001019060200180831161062557829003601f168201915b505050505081565b600160a060020a03338116600081815260146020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60006106d0600e54600d54610ef090919063ffffffff16565b905090565b600080600080600754431115156106eb57600080fd5b600f543387604051928352600160a060020a03919091166c010000000000000000000000000260208301526034820152605401604051908190039020925084831461073557600080fd5b61073e33610873565b83111561074a57600080fd5b600f5460009081526011602052604090208054908490559150811561076e57600080fd5b50600b54600160a060020a03331660009081526013602052604090205461079b908263ffffffff610f1116565b600160a060020a0333166000908152601360205260409020556012546107c7908263ffffffff610f1116565b60128190556005549011156107d857fe5b6107e0610f21565b33600160a060020a03167fcf6fbb9dcea7d07263ab4f5c3a92f53af33dffc421d9d121e1c74b307e68189d82600854600f5460405192835260208301919091526040808301919091526060909101905180910390a250600195945050505050565b6000805260136020527f8fa6efc3be94b5b348b21fea823fe8d100408cee9b7f90524494500445d8ff6c546005540390565b600080600061088184610a2a565b600b54909250600202821161089f57610898610a0c565b92506108e9565b600b546108b390839063ffffffff610ef016565b90506108d76108c8828063ffffffff610f6116565b600e549063ffffffff610f6116565b9250600d548311156108e957600d5492505b5050919050565b600160a060020a038316600090815260136020526040812054610919908363ffffffff610f8616565b600160a060020a038086166000908152601360209081526040808320949094556014815283822033909316825291909152205461095c908363ffffffff610f8616565b600160a060020a03808616600090815260146020908152604080832033851684528252808320949094559186168152601390915220546109a2908363ffffffff610f1116565b600160a060020a03808516600081815260136020526040908190209390935591908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060019392505050565b60045460ff1681565b600e5490565b60055481565b600f5490565b600b5481565b60125481565b600160a060020a031660009081526013602052604090205490565b60015433600160a060020a03908116911614610a6057600080fd5b600154600054600160a060020a0391821691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b60085481565b600d5481565b600e5481565b600f5481565b600054600160a060020a031681565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106425780601f1061061757610100808354040283529160200191610642565b6000600160a060020a0383161515610b7c57600080fd5b600160a060020a033316600090815260136020526040902054610ba5908363ffffffff610f8616565b600160a060020a033381166000908152601360205260408082209390935590851681522054610bda908363ffffffff610f1116565b600160a060020a0380851660008181526013602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a350600192915050565b600a5481565b60095481565b60075481565b60006106b1610c5b83610873565b600d549063ffffffff610ef016565b600160a060020a03338116600081815260146020908152604080832094881680845294909152808220869055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259086905190815260200160405180910390a383600160a060020a0316638f4ffcb1338530866040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610d65578082015183820152602001610d4d565b50505050905090810190601f168015610d925780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1515610db357600080fd5b5af11515610dc057600080fd5b5060019695505050505050565b60065481565b600154600160a060020a031681565b6000805433600160a060020a03908116911614610dfe57600080fd5b600054600160a060020a038085169163a9059cbb91168460405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610e5857600080fd5b5af11515610e6557600080fd5b5050506040518051949350505050565b600c5481565b600160a060020a03918216600090815260146020908152604080832093909416825291909152205490565b60005433600160a060020a03908116911614610ec157600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000808211610efe57600080fd5b8183811515610f0957fe5b049392505050565b818101828110156106b157600080fd5b600854610f3590600163ffffffff610f1116565b600881905560095490811515610f4757fe5b061515610f5657610f56610f9b565b600019430140600f55565b818102821580610f7b5750818382811515610f7857fe5b04145b15156106b157600080fd5b600082821115610f9557600080fd5b50900390565b600654600a5443919091039060008080808486101561103d57610fd586610fc987606463ffffffff610f6116565b9063ffffffff610ef016565b9350610ffa6103e8610fee86606463ffffffff610f8616565b9063ffffffff6110d016565b92506110356110268461101a6107d0600e54610ef090919063ffffffff16565b9063ffffffff610f6116565b600e549063ffffffff610f8616565b600e5561109e565b61105285610fc988606463ffffffff610f6116565b915061106b6103e8610fee84606463ffffffff610f8616565b905061109a61108b8261101a6107d0600e54610ef090919063ffffffff16565b600e549063ffffffff610f1116565b600e555b43600655600c54600e5410156110b557600c54600e555b600d54600e5411156110c857600d54600e555b505050505050565b6000818311156110e15750806106b1565b50909190505600a165627a7a72305820c4ff3c36a186cbd33b2e942b7a1cfb84e5d4297fac0dc43d1c8b5cf8659eca1f0029

Deployed Bytecode

0x6060604052600436106101875763ffffffff60e060020a60003504166306fdde03811461018c578063095ea7b31461021657806317da485f1461024c5780631801fbe51461027157806318160ddd1461028a578063185a62841461029d57806323b872dd146102bc578063313ce567146102e457806332e997081461030d5780633eaaf86b146103205780634ef37628146103335780635e4b587b146103465780636de9f32b1461035957806370a082311461036c57806379ba50971461038b578063829965cc146103a057806387a2a9d6146103b35780638a769d35146103c65780638ae0368b146103d95780638da5cb5b146103ec57806395d89b411461041b578063a9059cbb1461042e578063b1483eee14610450578063b5ade81b14610463578063b7dc8a3214610476578063bbfbe6b614610489578063cae9ca51146104a8578063cb9ae7071461050d578063d4ee1d9014610520578063dc39d06d14610533578063dc6e9cf914610555578063dd62ed3e14610568578063f2fde38b1461058d575b600080fd5b341561019757600080fd5b61019f6105ac565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101db5780820151838201526020016101c3565b50505050905090810190601f1680156102085780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561022157600080fd5b610238600160a060020a036004351660243561064a565b604051901515815260200160405180910390f35b341561025757600080fd5b61025f6106b7565b60405190815260200160405180910390f35b341561027c57600080fd5b6102386004356024356106d5565b341561029557600080fd5b61025f610841565b34156102a857600080fd5b61025f600160a060020a0360043516610873565b34156102c757600080fd5b610238600160a060020a03600435811690602435166044356108f0565b34156102ef57600080fd5b6102f7610a03565b60405160ff909116815260200160405180910390f35b341561031857600080fd5b61025f610a0c565b341561032b57600080fd5b61025f610a12565b341561033e57600080fd5b61025f610a18565b341561035157600080fd5b61025f610a1e565b341561036457600080fd5b61025f610a24565b341561037757600080fd5b61025f600160a060020a0360043516610a2a565b341561039657600080fd5b61039e610a45565b005b34156103ab57600080fd5b61025f610ad3565b34156103be57600080fd5b61025f610ad9565b34156103d157600080fd5b61025f610adf565b34156103e457600080fd5b61025f610ae5565b34156103f757600080fd5b6103ff610aeb565b604051600160a060020a03909116815260200160405180910390f35b341561042657600080fd5b61019f610afa565b341561043957600080fd5b610238600160a060020a0360043516602435610b65565b341561045b57600080fd5b61025f610c3b565b341561046e57600080fd5b61025f610c41565b341561048157600080fd5b61025f610c47565b341561049457600080fd5b61025f600160a060020a0360043516610c4d565b34156104b357600080fd5b61023860048035600160a060020a03169060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610c6a95505050505050565b341561051857600080fd5b61025f610dcd565b341561052b57600080fd5b6103ff610dd3565b341561053e57600080fd5b610238600160a060020a0360043516602435610de2565b341561056057600080fd5b61025f610e75565b341561057357600080fd5b61025f600160a060020a0360043581169060243516610e7b565b341561059857600080fd5b61039e600160a060020a0360043516610ea6565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106425780601f1061061757610100808354040283529160200191610642565b820191906000526020600020905b81548152906001019060200180831161062557829003601f168201915b505050505081565b600160a060020a03338116600081815260146020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b60006106d0600e54600d54610ef090919063ffffffff16565b905090565b600080600080600754431115156106eb57600080fd5b600f543387604051928352600160a060020a03919091166c010000000000000000000000000260208301526034820152605401604051908190039020925084831461073557600080fd5b61073e33610873565b83111561074a57600080fd5b600f5460009081526011602052604090208054908490559150811561076e57600080fd5b50600b54600160a060020a03331660009081526013602052604090205461079b908263ffffffff610f1116565b600160a060020a0333166000908152601360205260409020556012546107c7908263ffffffff610f1116565b60128190556005549011156107d857fe5b6107e0610f21565b33600160a060020a03167fcf6fbb9dcea7d07263ab4f5c3a92f53af33dffc421d9d121e1c74b307e68189d82600854600f5460405192835260208301919091526040808301919091526060909101905180910390a250600195945050505050565b6000805260136020527f8fa6efc3be94b5b348b21fea823fe8d100408cee9b7f90524494500445d8ff6c546005540390565b600080600061088184610a2a565b600b54909250600202821161089f57610898610a0c565b92506108e9565b600b546108b390839063ffffffff610ef016565b90506108d76108c8828063ffffffff610f6116565b600e549063ffffffff610f6116565b9250600d548311156108e957600d5492505b5050919050565b600160a060020a038316600090815260136020526040812054610919908363ffffffff610f8616565b600160a060020a038086166000908152601360209081526040808320949094556014815283822033909316825291909152205461095c908363ffffffff610f8616565b600160a060020a03808616600090815260146020908152604080832033851684528252808320949094559186168152601390915220546109a2908363ffffffff610f1116565b600160a060020a03808516600081815260136020526040908190209390935591908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060019392505050565b60045460ff1681565b600e5490565b60055481565b600f5490565b600b5481565b60125481565b600160a060020a031660009081526013602052604090205490565b60015433600160a060020a03908116911614610a6057600080fd5b600154600054600160a060020a0391821691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b60085481565b600d5481565b600e5481565b600f5481565b600054600160a060020a031681565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106425780601f1061061757610100808354040283529160200191610642565b6000600160a060020a0383161515610b7c57600080fd5b600160a060020a033316600090815260136020526040902054610ba5908363ffffffff610f8616565b600160a060020a033381166000908152601360205260408082209390935590851681522054610bda908363ffffffff610f1116565b600160a060020a0380851660008181526013602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a350600192915050565b600a5481565b60095481565b60075481565b60006106b1610c5b83610873565b600d549063ffffffff610ef016565b600160a060020a03338116600081815260146020908152604080832094881680845294909152808220869055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259086905190815260200160405180910390a383600160a060020a0316638f4ffcb1338530866040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a0316815260200180602001828103825283818151815260200191508051906020019080838360005b83811015610d65578082015183820152602001610d4d565b50505050905090810190601f168015610d925780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b1515610db357600080fd5b5af11515610dc057600080fd5b5060019695505050505050565b60065481565b600154600160a060020a031681565b6000805433600160a060020a03908116911614610dfe57600080fd5b600054600160a060020a038085169163a9059cbb91168460405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b1515610e5857600080fd5b5af11515610e6557600080fd5b5050506040518051949350505050565b600c5481565b600160a060020a03918216600090815260146020908152604080832093909416825291909152205490565b60005433600160a060020a03908116911614610ec157600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000808211610efe57600080fd5b8183811515610f0957fe5b049392505050565b818101828110156106b157600080fd5b600854610f3590600163ffffffff610f1116565b600881905560095490811515610f4757fe5b061515610f5657610f56610f9b565b600019430140600f55565b818102821580610f7b5750818382811515610f7857fe5b04145b15156106b157600080fd5b600082821115610f9557600080fd5b50900390565b600654600a5443919091039060008080808486101561103d57610fd586610fc987606463ffffffff610f6116565b9063ffffffff610ef016565b9350610ffa6103e8610fee86606463ffffffff610f8616565b9063ffffffff6110d016565b92506110356110268461101a6107d0600e54610ef090919063ffffffff16565b9063ffffffff610f6116565b600e549063ffffffff610f8616565b600e5561109e565b61105285610fc988606463ffffffff610f6116565b915061106b6103e8610fee84606463ffffffff610f8616565b905061109a61108b8261101a6107d0600e54610ef090919063ffffffff16565b600e549063ffffffff610f1116565b600e555b43600655600c54600e5410156110b557600c54600e555b600d54600e5411156110c857600d54600e555b505050505050565b6000818311156110e15750806106b1565b50909190505600a165627a7a72305820c4ff3c36a186cbd33b2e942b7a1cfb84e5d4297fac0dc43d1c8b5cf8659eca1f0029

Swarm Source

bzzr://c4ff3c36a186cbd33b2e942b7a1cfb84e5d4297fac0dc43d1c8b5cf8659eca1f

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.