ETH Price: $1,613.44 (-3.57%)
 

More Info

Private Name Tags

TokenTracker

SkinCoin (SKIN) (@$0.001)

Multichain Info

1 address found via
Transaction Hash
Method
Block
From
To
Transfer222576292025-04-13 4:21:592 days ago1744518119IN
SkinCoin Token
0 ETH0.000024280.51600217
Approve221972172025-04-04 18:01:5910 days ago1743789719IN
SkinCoin Token
0 ETH0.000075431.61629599
Transfer221855792025-04-03 3:02:4712 days ago1743649367IN
SkinCoin Token
0 ETH0.000029980.63723017
Approve218141902025-02-10 6:00:3564 days ago1739167235IN
SkinCoin Token
0 ETH0.000070551.52437462
Approve217731072025-02-04 12:22:3570 days ago1738671755IN
SkinCoin Token
0 ETH0.000076621.64444967
Approve216558832025-01-19 3:35:1186 days ago1737257711IN
SkinCoin Token
0 ETH0.000201998.36267495
Approve214763682024-12-25 2:01:35111 days ago1735092095IN
SkinCoin Token
0 ETH0.000166193.5609855
Transfer214710712024-12-24 8:14:47112 days ago1735028087IN
SkinCoin Token
0 ETH0.00015265.09329473
Transfer214710702024-12-24 8:14:35112 days ago1735028075IN
SkinCoin Token
0 ETH0.00015835.28556167
Transfer214710552024-12-24 8:11:35112 days ago1735027895IN
SkinCoin Token
0 ETH0.000248775.28748907
Transfer214703622024-12-24 5:52:11112 days ago1735019531IN
SkinCoin Token
0 ETH0.000216434.17330384
Approve214345012024-12-19 5:32:23117 days ago1734586343IN
SkinCoin Token
0 ETH0.0004924910.55272497
Approve214283632024-12-18 8:56:11118 days ago1734512171IN
SkinCoin Token
0 ETH0.000443669.57535714
Transfer214169192024-12-16 18:37:23119 days ago1734374243IN
SkinCoin Token
0 ETH0.001265126.88174132
Transfer213965462024-12-13 22:22:47122 days ago1734128567IN
SkinCoin Token
0 ETH0.0012216925.96589007
Transfer213914202024-12-13 5:12:11123 days ago1734066731IN
SkinCoin Token
0 ETH0.0006157811.87361449
Approve213502252024-12-07 11:09:35129 days ago1733569775IN
SkinCoin Token
0 ETH0.0006142813.16241126
Transfer213379202024-12-05 17:55:35130 days ago1733421335IN
SkinCoin Token
0 ETH0.001657231.96155991
Approve213334322024-12-05 2:52:23131 days ago1733367143IN
SkinCoin Token
0 ETH0.0012168526.26953662
Approve213276092024-12-04 7:21:59132 days ago1733296919IN
SkinCoin Token
0 ETH0.000758916.40446139
Transfer213027082024-11-30 19:53:59135 days ago1732996439IN
SkinCoin Token
0 ETH0.0004943314.21573327
Transfer211848162024-11-14 8:43:23152 days ago1731573803IN
SkinCoin Token
0 ETH0.0013439125.90731083
Approve203002792024-07-13 21:30:11275 days ago1720906211IN
SkinCoin Token
0 ETH0.000123632.6683062
Transfer202404262024-07-05 12:52:47284 days ago1720183967IN
SkinCoin Token
0 ETH0.000364037.73314579
Transfer202403872024-07-05 12:44:47284 days ago1720183487IN
SkinCoin Token
0 ETH0.000354847.53805376
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:
SkinCoin

Compiler Version
v0.4.11+commit.68ef5810

Optimization Enabled:
Yes with 0 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2017-07-09
*/

pragma solidity ^0.4.11;
library SafeMath {
  function mul(uint a, uint b) internal returns (uint) {
    uint c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }
  function div(uint a, uint b) internal returns (uint) {
    assert(b > 0);
    uint c = a / b;
    assert(a == b * c + a % b);
    return c;
  }
  function sub(uint a, uint b) internal returns (uint) {
    assert(b <= a);
    return a - b;
  }
  function add(uint a, uint b) internal returns (uint) {
    uint c = a + b;
    assert(c >= a);
    return c;
  }
  function max64(uint64 a, uint64 b) internal constant returns (uint64) {
    return a >= b ? a : b;
  }
  function min64(uint64 a, uint64 b) internal constant returns (uint64) {
    return a < b ? a : b;
  }
  function max256(uint256 a, uint256 b) internal constant returns (uint256) {
    return a >= b ? a : b;
  }
  function min256(uint256 a, uint256 b) internal constant returns (uint256) {
    return a < b ? a : b;
  }
  function assert(bool assertion) internal {
    if (!assertion) {
      throw;
    }
  }
}
contract Ownable {
    address public owner;
    function Ownable() {
        owner = msg.sender;
    }
    modifier onlyOwner {
        if (msg.sender != owner) throw;
        _;
    }
    function transferOwnership(address newOwner) onlyOwner {
        if (newOwner != address(0)) {
            owner = newOwner;
        }
    }
}
/*
 * Pausable
 * Abstract contract that allows children to implement an
 * emergency stop mechanism.
 */
contract Pausable is Ownable {
  bool public stopped;
  modifier stopInEmergency {
    if (stopped) {
      throw;
    }
    _;
  }
  
  modifier onlyInEmergency {
    if (!stopped) {
      throw;
    }
    _;
  }
  // called by the owner on emergency, triggers stopped state
  function emergencyStop() external onlyOwner {
    stopped = true;
  }
  // called by the owner on end of emergency, returns to normal state
  function release() external onlyOwner onlyInEmergency {
    stopped = false;
  }
}
contract ERC20Basic {
  uint public totalSupply;
  function balanceOf(address who) constant returns (uint);
  function transfer(address to, uint value);
  event Transfer(address indexed from, address indexed to, uint value);
}
contract ERC20 is ERC20Basic {
  function allowance(address owner, address spender) constant returns (uint);
  function transferFrom(address from, address to, uint value);
  function approve(address spender, uint value);
  event Approval(address indexed owner, address indexed spender, uint value);
}
/*
 * PullPayment
 * Base contract supporting async send for pull payments.
 * Inherit from this contract and use asyncSend instead of send.
 */
contract PullPayment {
  using SafeMath for uint;
  
  mapping(address => uint) public payments;
  event LogRefundETH(address to, uint value);
  /**
  *  Store sent amount as credit to be pulled, called by payer 
  **/
  function asyncSend(address dest, uint amount) internal {
    payments[dest] = payments[dest].add(amount);
  }
  // withdraw accumulated balance, called by payee
  function withdrawPayments() {
    address payee = msg.sender;
    uint payment = payments[payee];
    
    if (payment == 0) {
      throw;
    }
    if (this.balance < payment) {
      throw;
    }
    payments[payee] = 0;
    if (!payee.send(payment)) {
      throw;
    }
    LogRefundETH(payee,payment);
  }
}
contract BasicToken is ERC20Basic {
  
  using SafeMath for uint;
  
  mapping(address => uint) balances;
  
  /*
   * Fix for the ERC20 short address attack  
  */
  modifier onlyPayloadSize(uint size) {
     if(msg.data.length < size + 4) {
       throw;
     }
     _;
  }
  function transfer(address _to, uint _value) onlyPayloadSize(2 * 32) {
    balances[msg.sender] = balances[msg.sender].sub(_value);
    balances[_to] = balances[_to].add(_value);
    Transfer(msg.sender, _to, _value);
  }
  function balanceOf(address _owner) constant returns (uint balance) {
    return balances[_owner];
  }
}
contract StandardToken is BasicToken, ERC20 {
  mapping (address => mapping (address => uint)) allowed;
  function transferFrom(address _from, address _to, uint _value) onlyPayloadSize(3 * 32) {
    var _allowance = allowed[_from][msg.sender];
    // Check is not needed because sub(_allowance, _value) will already throw if this condition is not met
    // if (_value > _allowance) throw;
    balances[_to] = balances[_to].add(_value);
    balances[_from] = balances[_from].sub(_value);
    allowed[_from][msg.sender] = _allowance.sub(_value);
    Transfer(_from, _to, _value);
  }
  function approve(address _spender, uint _value) {
    // To change the approve amount you first have to reduce the addresses`
    //  allowance to zero by calling `approve(_spender, 0)` if it is not
    //  already 0 to mitigate the race condition described here:
    //  https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
    if ((_value != 0) && (allowed[msg.sender][_spender] != 0)) throw;
    allowed[msg.sender][_spender] = _value;
    Approval(msg.sender, _spender, _value);
  }
  function allowance(address _owner, address _spender) constant returns (uint remaining) {
    return allowed[_owner][_spender];
  }
}
/**
 *  SkinCoin token contract. Implements
 */
contract SkinCoin is StandardToken, Ownable {
  string public constant name = "SkinCoin";
  string public constant symbol = "SKIN";
  uint public constant decimals = 6;
  // Constructor
  function SkinCoin() {
      totalSupply = 1000000000000000;
      balances[msg.sender] = totalSupply; // Send all tokens to owner
  }
  /**
   *  Burn away the specified amount of SkinCoin tokens
   */
  function burn(uint _value) onlyOwner returns (bool) {
    balances[msg.sender] = balances[msg.sender].sub(_value);
    totalSupply = totalSupply.sub(_value);
    Transfer(msg.sender, 0x0, _value);
    return true;
  }
}
/*
  Crowdsale Smart Contract for the skincoin.org project
  This smart contract collects ETH, and in return emits SkinCoin tokens to the backers
*/
contract Crowdsale is Pausable, PullPayment {
    
    using SafeMath for uint;
    struct Backer {
        uint weiReceived; // Amount of Ether given
        uint coinSent;
    }
    /*
    * Constants
    */
    /* Minimum number of SkinCoin to sell */
    uint public constant MIN_CAP = 30000000000000; // 30,000,000 SkinCoins
    /* Maximum number of SkinCoin to sell */
    uint public constant MAX_CAP = 600000000000000; // 600,000,000 SkinCoins
    /* Minimum amount to invest */
    uint public constant MIN_INVEST_ETHER = 100 finney;
    /* Crowdsale period */
    uint private constant CROWDSALE_PERIOD = 30 days;
    /* Number of SkinCoins per Ether */
    uint public constant COIN_PER_ETHER = 6000000000; // 6,000 SkinCoins
    /*
    * Variables
    */
    /* SkinCoin contract reference */
    SkinCoin public coin;
    /* Multisig contract that will receive the Ether */
    address public multisigEther;
    /* Number of Ether received */
    uint public etherReceived;
    /* Number of SkinCoins sent to Ether contributors */
    uint public coinSentToEther;
    /* Crowdsale start time */
    uint public startTime;
    /* Crowdsale end time */
    uint public endTime;
    /* Is crowdsale still on going */
    bool public crowdsaleClosed;
    /* Backers Ether indexed by their Ethereum address */
    mapping(address => Backer) public backers;
    /*
    * Modifiers
    */
    modifier minCapNotReached() {
        if ((now < endTime) || coinSentToEther >= MIN_CAP ) throw;
        _;
    }
    modifier respectTimeFrame() {
        if ((now < startTime) || (now > endTime )) throw;
        _;
    }
    /*
     * Event
    */
    event LogReceivedETH(address addr, uint value);
    event LogCoinsEmited(address indexed from, uint amount);
    /*
     * Constructor
    */
    function Crowdsale(address _skinCoinAddress, address _to) {
        coin = SkinCoin(_skinCoinAddress);
        multisigEther = _to;
    }
    /* 
     * The fallback function corresponds to a donation in ETH
     */
    function() stopInEmergency respectTimeFrame payable {
        receiveETH(msg.sender);
    }
    /* 
     * To call to start the crowdsale
     */
    function start() onlyOwner {
        if (startTime != 0) throw; // Crowdsale was already started
        startTime = now ;            
        endTime =  now + CROWDSALE_PERIOD;    
    }
    /*
     *  Receives a donation in Ether
    */
    function receiveETH(address beneficiary) internal {
        if (msg.value < MIN_INVEST_ETHER) throw; // Don't accept funding under a predefined threshold
        
        uint coinToSend = bonus(msg.value.mul(COIN_PER_ETHER).div(1 ether)); // Compute the number of SkinCoin to send
        if (coinToSend.add(coinSentToEther) > MAX_CAP) throw;    
        Backer backer = backers[beneficiary];
        coin.transfer(beneficiary, coinToSend); // Transfer SkinCoins right now 
        backer.coinSent = backer.coinSent.add(coinToSend);
        backer.weiReceived = backer.weiReceived.add(msg.value); // Update the total wei collected during the crowdfunding for this backer    
        etherReceived = etherReceived.add(msg.value); // Update the total wei collected during the crowdfunding
        coinSentToEther = coinSentToEther.add(coinToSend);
        // Send events
        LogCoinsEmited(msg.sender ,coinToSend);
        LogReceivedETH(beneficiary, etherReceived); 
    }
    
    /*
     *Compute the SkinCoin bonus according to the investment period
     */
    function bonus(uint amount) internal constant returns (uint) {
        if (now < startTime.add(2 days)) return amount.add(amount.div(5));   // bonus 20%
        return amount;
    }
    /*  
     * Finalize the crowdsale, should be called after the refund period
    */
    function finalize() onlyOwner public {
        if (now < endTime) { // Cannot finalise before CROWDSALE_PERIOD or before selling all coins
            if (coinSentToEther == MAX_CAP) {
            } else {
                throw;
            }
        }
        if (coinSentToEther < MIN_CAP && now < endTime + 15 days) throw; // If MIN_CAP is not reached donors have 15days to get refund before we can finalise
        if (!multisigEther.send(this.balance)) throw; // Move the remaining Ether to the multisig address
        
        uint remains = coin.balanceOf(this);
        if (remains > 0) { // Burn the rest of SkinCoins
            if (!coin.burn(remains)) throw ;
        }
        crowdsaleClosed = true;
    }
    /*  
    * Failsafe drain
    */
    function drain() onlyOwner {
        if (!owner.send(this.balance)) throw;
    }
    /**
     * Allow to change the team multisig address in the case of emergency.
     */
    function setMultisig(address addr) onlyOwner public {
        if (addr == address(0)) throw;
        multisigEther = addr;
    }
    /**
     * Manually back SkinCoin owner address.
     */
    function backSkinCoinOwner() onlyOwner public {
        coin.transferOwnership(owner);
    }
    /**
     * Transfer remains to owner in case if impossible to do min invest
     */
    function getRemainCoins() onlyOwner public {
        var remains = MAX_CAP - coinSentToEther;
        uint minCoinsToSell = bonus(MIN_INVEST_ETHER.mul(COIN_PER_ETHER) / (1 ether));
        if(remains > minCoinsToSell) throw;
        Backer backer = backers[owner];
        coin.transfer(owner, remains); // Transfer SkinCoins right now 
        backer.coinSent = backer.coinSent.add(remains);
        coinSentToEther = coinSentToEther.add(remains);
        // Send events
        LogCoinsEmited(this ,remains);
        LogReceivedETH(owner, etherReceived); 
    }
    /* 
     * When MIN_CAP is not reach:
     * 1) backer call the "approve" function of the SkinCoin token contract with the amount of all SkinCoins they got in order to be refund
     * 2) backer call the "refund" function of the Crowdsale contract with the same amount of SkinCoins
     * 3) backer call the "withdrawPayments" function of the Crowdsale contract to get a refund in ETH
     */
    function refund(uint _value) minCapNotReached public {
        
        if (_value != backers[msg.sender].coinSent) throw; // compare value from backer balance
        coin.transferFrom(msg.sender, address(this), _value); // get the token back to the crowdsale contract
        if (!coin.burn(_value)) throw ; // token sent for refund are burnt
        uint ETHToSend = backers[msg.sender].weiReceived;
        backers[msg.sender].weiReceived=0;
        if (ETHToSend > 0) {
            asyncSend(msg.sender, ETHToSend); // pull payment to get refund in ETH
        }
    }
}

Contract Security Audit

Contract ABI

API
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"}]

6060604052341561000c57fe5b5b5b60038054600160a060020a03191633600160a060020a03161790555b66038d7ea4c680006000818155600160a060020a0333168152600160205260409020555b5b6107e98061005e6000396000f3006060604052361561009e5763ffffffff60e060020a60003504166306fdde0381146100a0578063095ea7b31461013057806318160ddd1461015157806323b872dd14610173578063313ce5671461019a57806342966c68146101bc57806370a08231146101e35780638da5cb5b1461021157806395d89b411461023d578063a9059cbb146102cd578063dd62ed3e146102ee578063f2fde38b14610322575bfe5b34156100a857fe5b6100b0610340565b6040805160208082528351818301528351919283929083019185019080838382156100f6575b8051825260208311156100f657601f1990920191602091820191016100d6565b505050905090810190601f1680156101225780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561013857fe5b61014f600160a060020a0360043516602435610365565b005b341561015957fe5b610161610405565b60408051918252519081900360200190f35b341561017b57fe5b61014f600160a060020a036004358116906024351660443561040b565b005b34156101a257fe5b61016161051d565b60408051918252519081900360200190f35b34156101c457fe5b6101cf600435610522565b604080519115158252519081900360200190f35b34156101eb57fe5b610161600160a060020a03600435166105d3565b60408051918252519081900360200190f35b341561021957fe5b6102216105f2565b60408051600160a060020a039092168252519081900360200190f35b341561024557fe5b6100b0610601565b6040805160208082528351818301528351919283929083019185019080838382156100f6575b8051825260208311156100f657601f1990920191602091820191016100d6565b505050905090810190601f1680156101225780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102d557fe5b61014f600160a060020a0360043516602435610622565b005b34156102f657fe5b610161600160a060020a03600435811690602435166106de565b60408051918252519081900360200190f35b341561032a57fe5b61014f600160a060020a036004351661070b565b005b604080518082019091526008815260c160020a6729b5b4b721b7b4b702602082015281565b80158015906103985750600160a060020a0333811660009081526002602090815260408083209386168352929052205415155b156103a35760006000fd5b600160a060020a03338116600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35b5050565b60005481565b60006060606436101561041e5760006000fd5b600160a060020a038086166000908152600260209081526040808320338516845282528083205493881683526001909152902054909250610465908463ffffffff61075716565b600160a060020a03808616600090815260016020526040808220939093559087168152205461049a908463ffffffff61077316565b600160a060020a0386166000908152600160205260409020556104c3828463ffffffff61077316565b600160a060020a0380871660008181526002602090815260408083203386168452825291829020949094558051878152905192881693919260008051602061079e833981519152929181900390910190a35b5b5050505050565b600681565b60035460009033600160a060020a039081169116146105415760006000fd5b600160a060020a03331660009081526001602052604090205461056a908363ffffffff61077316565b600160a060020a03331660009081526001602052604081209190915554610597908363ffffffff61077316565b6000908155604080518481529051600160a060020a0333169160008051602061079e833981519152919081900360200190a35060015b5b919050565b600160a060020a0381166000908152600160205260409020545b919050565b600354600160a060020a031681565b604080518082019091526004815260e160020a6329a5a4a702602082015281565b604060443610156106335760006000fd5b600160a060020a03331660009081526001602052604090205461065c908363ffffffff61077316565b600160a060020a033381166000908152600160205260408082209390935590851681522054610691908363ffffffff61075716565b600160a060020a0380851660008181526001602090815260409182902094909455805186815290519193339093169260008051602061079e83398151915292918290030190a35b5b505050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60035433600160a060020a039081169116146107275760006000fd5b600160a060020a038116156107525760038054600160a060020a031916600160a060020a0383161790555b5b5b50565b60008282016107688482101561078c565b8091505b5092915050565b60006107818383111561078c565b508082035b92915050565b8015156107525760006000fd5b5b505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820dcd73a7dc10e751871b22500ac39d1ef1d5338a3d40720276808cf53bf01be8f0029

Deployed Bytecode

0x6060604052361561009e5763ffffffff60e060020a60003504166306fdde0381146100a0578063095ea7b31461013057806318160ddd1461015157806323b872dd14610173578063313ce5671461019a57806342966c68146101bc57806370a08231146101e35780638da5cb5b1461021157806395d89b411461023d578063a9059cbb146102cd578063dd62ed3e146102ee578063f2fde38b14610322575bfe5b34156100a857fe5b6100b0610340565b6040805160208082528351818301528351919283929083019185019080838382156100f6575b8051825260208311156100f657601f1990920191602091820191016100d6565b505050905090810190601f1680156101225780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561013857fe5b61014f600160a060020a0360043516602435610365565b005b341561015957fe5b610161610405565b60408051918252519081900360200190f35b341561017b57fe5b61014f600160a060020a036004358116906024351660443561040b565b005b34156101a257fe5b61016161051d565b60408051918252519081900360200190f35b34156101c457fe5b6101cf600435610522565b604080519115158252519081900360200190f35b34156101eb57fe5b610161600160a060020a03600435166105d3565b60408051918252519081900360200190f35b341561021957fe5b6102216105f2565b60408051600160a060020a039092168252519081900360200190f35b341561024557fe5b6100b0610601565b6040805160208082528351818301528351919283929083019185019080838382156100f6575b8051825260208311156100f657601f1990920191602091820191016100d6565b505050905090810190601f1680156101225780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102d557fe5b61014f600160a060020a0360043516602435610622565b005b34156102f657fe5b610161600160a060020a03600435811690602435166106de565b60408051918252519081900360200190f35b341561032a57fe5b61014f600160a060020a036004351661070b565b005b604080518082019091526008815260c160020a6729b5b4b721b7b4b702602082015281565b80158015906103985750600160a060020a0333811660009081526002602090815260408083209386168352929052205415155b156103a35760006000fd5b600160a060020a03338116600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35b5050565b60005481565b60006060606436101561041e5760006000fd5b600160a060020a038086166000908152600260209081526040808320338516845282528083205493881683526001909152902054909250610465908463ffffffff61075716565b600160a060020a03808616600090815260016020526040808220939093559087168152205461049a908463ffffffff61077316565b600160a060020a0386166000908152600160205260409020556104c3828463ffffffff61077316565b600160a060020a0380871660008181526002602090815260408083203386168452825291829020949094558051878152905192881693919260008051602061079e833981519152929181900390910190a35b5b5050505050565b600681565b60035460009033600160a060020a039081169116146105415760006000fd5b600160a060020a03331660009081526001602052604090205461056a908363ffffffff61077316565b600160a060020a03331660009081526001602052604081209190915554610597908363ffffffff61077316565b6000908155604080518481529051600160a060020a0333169160008051602061079e833981519152919081900360200190a35060015b5b919050565b600160a060020a0381166000908152600160205260409020545b919050565b600354600160a060020a031681565b604080518082019091526004815260e160020a6329a5a4a702602082015281565b604060443610156106335760006000fd5b600160a060020a03331660009081526001602052604090205461065c908363ffffffff61077316565b600160a060020a033381166000908152600160205260408082209390935590851681522054610691908363ffffffff61075716565b600160a060020a0380851660008181526001602090815260409182902094909455805186815290519193339093169260008051602061079e83398151915292918290030190a35b5b505050565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b60035433600160a060020a039081169116146107275760006000fd5b600160a060020a038116156107525760038054600160a060020a031916600160a060020a0383161790555b5b5b50565b60008282016107688482101561078c565b8091505b5092915050565b60006107818383111561078c565b508082035b92915050565b8015156107525760006000fd5b5b505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820dcd73a7dc10e751871b22500ac39d1ef1d5338a3d40720276808cf53bf01be8f0029

Swarm Source

bzzr://dcd73a7dc10e751871b22500ac39d1ef1d5338a3d40720276808cf53bf01be8f

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
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.