ETH Price: $2,325.36 (-4.96%)

Contract

0x6888a16eA9792c15A4DCF2f6C623D055c8eDe792
 
Transaction Hash
Method
Block
From
To
Approve190697032024-01-23 13:35:23254 days ago1706016923IN
0x6888a16e...5c8eDe792
0 ETH0.0005234219.77347879
Transfer188370162023-12-21 21:47:11286 days ago1703195231IN
0x6888a16e...5c8eDe792
0 ETH0.0018381237.30108842
Transfer184020882023-10-21 23:53:23347 days ago1697932403IN
0x6888a16e...5c8eDe792
0 ETH0.000265558.18851453
Approve176133732023-07-03 12:14:23458 days ago1688386463IN
0x6888a16e...5c8eDe792
0 ETH0.0027264555.65660583
Transfer167501512023-03-03 19:48:11579 days ago1677872891IN
0x6888a16e...5c8eDe792
0 ETH0.0018784337.94355011
Transfer163877492023-01-12 2:30:47630 days ago1673490647IN
0x6888a16e...5c8eDe792
0 ETH0.0006254119.29922418
Transfer163877452023-01-12 2:29:59630 days ago1673490599IN
0x6888a16e...5c8eDe792
0 ETH0.0009992718.41302748
Transfer160239902022-11-22 7:14:23681 days ago1669101263IN
0x6888a16e...5c8eDe792
0 ETH0.000495310
Transfer155483842022-09-16 19:54:35747 days ago1663358075IN
0x6888a16e...5c8eDe792
0 ETH0.0005231210.5643014
Approve154262652022-08-28 6:37:50767 days ago1661668670IN
0x6888a16e...5c8eDe792
0 ETH0.00034637.06940189
Approve152373042022-07-29 12:20:36797 days ago1659097236IN
0x6888a16e...5c8eDe792
0 ETH0.0007304815
Transfer152372672022-07-29 12:11:46797 days ago1659096706IN
0x6888a16e...5c8eDe792
0 ETH0.0009739617.93876121
Transfer151272842022-07-12 10:28:28814 days ago1657621708IN
0x6888a16e...5c8eDe792
0 ETH0.0005230110.56723624
Transfer148760472022-05-31 1:52:39856 days ago1653961959IN
0x6888a16e...5c8eDe792
0 ETH0.0012292924.83725117
Transfer142693442022-02-24 14:31:12952 days ago1645713072IN
0x6888a16e...5c8eDe792
0 ETH0.0038014270
Transfer142004222022-02-13 22:10:24962 days ago1644790224IN
0x6888a16e...5c8eDe792
0 ETH0.0022015867.96282208
Transfer137854362021-12-11 18:21:081026 days ago1639246868IN
0x6888a16e...5c8eDe792
0 ETH0.0031291884.10435566
Transfer137854342021-12-11 18:20:021026 days ago1639246802IN
0x6888a16e...5c8eDe792
0 ETH0.0028412676.39048549
Approve137283282021-12-02 16:17:251036 days ago1638461845IN
0x6888a16e...5c8eDe792
0 ETH0.00617514126.05674289
Approve129932542021-08-09 20:58:401150 days ago1628542720IN
0x6888a16e...5c8eDe792
0 ETH0.0019578772.9326125
Approve129932542021-08-09 20:58:401150 days ago1628542720IN
0x6888a16e...5c8eDe792
0 ETH0.0036286174.07294672
Approve129672472021-08-05 20:58:201154 days ago1628197100IN
0x6888a16e...5c8eDe792
0 ETH0.0011160841.5936238
Approve129672372021-08-05 20:55:541154 days ago1628196954IN
0x6888a16e...5c8eDe792
0 ETH0.0021693444.29495269
Transfer129153592021-07-28 16:04:071163 days ago1627488247IN
0x6888a16e...5c8eDe792
0 ETH0.0018075246
Approve129140332021-07-28 10:58:571163 days ago1627469937IN
0x6888a16e...5c8eDe792
0 ETH0.0013118726.78
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
46832142017-12-06 3:40:542493 days ago1512531654  Contract Creation0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SigToken

Compiler Version
v0.4.15+commit.bbb8e64f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-02-23
*/

pragma solidity ^0.4.15;

/**
  * Math operations with safety checks
  */
library SafeMath {
    function safeMul(uint a, uint b) internal returns (uint) {
        uint c = a * b;
        assert(a == 0 || c / a == b);
        return c;
    }

    function safeDiv(uint a, uint b) internal returns (uint) {
        assert(b > 0);
        uint c = a / b;
        assert(a == b * c + a % b);
        return c;
    }

    function safeSub(uint a, uint b) internal returns (uint) {
        assert(b <= a);
        return a - b;
    }

    function safeAdd(uint a, uint b) internal returns (uint) {
        uint c = a + b;
        assert(c>=a && c>=b);
        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;
    }
}


/*
  * ERC20 interface
  * see https://github.com/ethereum/EIPs/issues/20
  */
contract ERC20 {
    uint public totalSupply;
    function balanceOf(address who) constant returns (uint);
    function allowance(address owner, address spender) constant returns (uint);

    function transfer(address to, uint value) returns (bool ok);
    function transferFrom(address from, address to, uint value) returns (bool ok);
    function approve(address spender, uint value) returns (bool ok);
    event Transfer(address indexed from, address indexed to, uint value);
    event Approval(address indexed owner, address indexed spender, uint value);
}



/**
  * Standard ERC20 token with Short Hand Attack and approve() race condition mitigation.
  *
  * Based on code by FirstBlood:
  * https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
  */
contract StandardToken is ERC20
{
    using SafeMath for uint;

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

    // Interface marker
    bool public constant isToken = true;

    /**
      * Fix for the ERC20 short address attack
      *
      * http://vessenes.com/the-erc20-short-address-attack-explained/
      */
    modifier onlyPayloadSize(uint size) {
        require(msg.data.length == size + 4);
        _;
    }

    function transfer(address _to, uint _value)
        onlyPayloadSize(2 * 32)
        returns (bool success)
    {
        balances[msg.sender] = balances[msg.sender].safeSub(_value);
        balances[_to] = balances[_to].safeAdd(_value);

        Transfer(msg.sender, _to, _value);
        return true;
    }

    function transferFrom(address from, address to, uint value)
        returns (bool success)
    {
        uint _allowance = allowed[from][msg.sender];

        // Check is not needed because _allowance.safeSub(value) will throw if this condition is not met
        // if (value > _allowance) throw;

        balances[to] = balances[to].safeAdd(value);
        balances[from] = balances[from].safeSub(value);
        allowed[from][msg.sender] = _allowance.safeSub(value);

        Transfer(from, to, value);
        return true;
    }

    function balanceOf(address account)
        constant
        returns (uint balance)
    {
        return balances[account];
    }

    function approve(address spender, uint value)
        returns (bool success)
    {
        // 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);
        return true;
    }

    function allowance(address account, address spender)
        constant
        returns (uint remaining)
    {
        return allowed[account][spender];
    }
}



/**
  * Upgrade target interface inspired by Lunyr.
  *
  * Upgrade agent transfers tokens to a new contract.
  * Upgrade agent itself can be the token contract, or just a middle man contract doing the heavy lifting.
  */
contract UpgradeTarget
{
    uint public originalSupply;

    /** Interface marker */
    function isUpgradeTarget() public constant returns (bool) {
        return true;
    }

    function upgradeFrom(address _from, uint256 _value) public;
}


/**
  * A token upgrade mechanism where users can opt-in amount of tokens to the next smart contract revision.
  *
  * First envisioned by Golem and Lunyr projects.
  */
contract UpgradeableToken is StandardToken
{
    /** Contract / person who can set the upgrade path. This can be the same as team multisig wallet, as what it is with its default value. */
    address public upgradeMaster;

    /** The next contract where the tokens will be migrated. */
    UpgradeTarget public upgradeTarget;

    /** How many tokens we have upgraded by now. */
    uint256 public totalUpgraded;

    /**
      * Upgrade states.
      *
      * - NotAllowed: The child contract has not reached a condition where the upgrade can bgun
      * - WaitingForAgent: Token allows upgrade, but we don't have a new agent yet
      * - ReadyToUpgrade: The agent is set, but not a single token has been upgraded yet
      * - Upgrading: Upgrade agent is set and the balance holders can upgrade their tokens
      *
      */
    enum UpgradeState {Unknown, NotAllowed, WaitingForAgent, ReadyToUpgrade, Upgrading}

    /**
      * Somebody has upgraded some of his tokens.
      */
    event LogUpgrade(address indexed _from, address indexed _to, uint256 _value);

    /**
      * New upgrade agent available.
      */
    event LogSetUpgradeTarget(address agent);

    /**
      * Do not allow construction without upgrade master set.
      */
    function UpgradeableToken(address _upgradeMaster) {
        upgradeMaster = _upgradeMaster;
    }

    /**
      * Allow the token holder to upgrade some of their tokens to a new contract.
      */
    function upgrade(uint256 value) public {
        UpgradeState state = getUpgradeState();
        require(state == UpgradeState.ReadyToUpgrade || state == UpgradeState.Upgrading);

        // Validate input value.
        require(value > 0);

        balances[msg.sender] = balances[msg.sender].safeSub(value);

        // Take tokens out from circulation
        totalSupply   = totalSupply.safeSub(value);
        totalUpgraded = totalUpgraded.safeAdd(value);

        // Upgrade agent reissues the tokens
        upgradeTarget.upgradeFrom(msg.sender, value);
        LogUpgrade(msg.sender, upgradeTarget, value);
    }

    /**
      * Set an upgrade targget that handles the process of letting users opt-in to the new token contract.
      */
    function setUpgradeTarget(address target) external {
        require(canUpgrade());
        require(target != 0x0);
        require(msg.sender == upgradeMaster); // Only a master can designate the next target
        require(getUpgradeState() != UpgradeState.Upgrading); // Upgrade has already begun

        upgradeTarget = UpgradeTarget(target);

        require(upgradeTarget.isUpgradeTarget()); // Bad interface
        require(upgradeTarget.originalSupply() == totalSupply); // Make sure that token supplies match in source and target

        LogSetUpgradeTarget(upgradeTarget);
    }

    /**
      * Get the state of the token upgrade.
      */
    function getUpgradeState() public constant returns (UpgradeState) {
        if (!canUpgrade()) return UpgradeState.NotAllowed;
        else if (address(upgradeTarget) == 0x00) return UpgradeState.WaitingForAgent;
        else if (totalUpgraded == 0) return UpgradeState.ReadyToUpgrade;
        else return UpgradeState.Upgrading;
    }

    /**
      * Change the upgrade master.
      *
      * This allows us to set a new owner for the upgrade mechanism.
      */
    function setUpgradeMaster(address master) public {
        require(master != 0x0);
        require(msg.sender == upgradeMaster);

        upgradeMaster = master;
    }

    /**
      * Child contract can enable to provide the condition when the upgrade can begun.
      */
    function canUpgrade() public constant returns (bool) {
        return true;
    }
}

contract MintableToken is StandardToken
{
    address public mintMaster;

    event LogMintTokens(address recipient, uint amount, uint newBalance, uint totalSupply);
    event LogUnmintTokens(address hodler, uint amount, uint newBalance, uint totalSupply);
    event LogSetMintMaster(address oldMintMaster, address newMintMaster);

    function MintableToken(address _mintMaster) {
        mintMaster = _mintMaster;
    }

    function setMintMaster(address newMintMaster)
        returns (bool ok)
    {
        require(msg.sender == mintMaster);

        address oldMintMaster = mintMaster;
        mintMaster = newMintMaster;

        LogSetMintMaster(oldMintMaster, mintMaster);
        return true;
    }

    function mintTokens(address recipient, uint amount)
        returns (bool ok)
    {
        require(msg.sender == mintMaster);
        require(amount > 0);

        balances[recipient] = balances[recipient].safeAdd(amount);
        totalSupply = totalSupply.safeAdd(amount);

        LogMintTokens(recipient, amount, balances[recipient], totalSupply);
        Transfer(address(0), recipient, amount);
        return true;
    }

    function unmintTokens(address hodler, uint amount)
        returns (bool ok)
    {
        require(msg.sender == mintMaster);
        require(amount > 0);
        require(balances[hodler] >= amount);

        balances[hodler] = balances[hodler].safeSub(amount);
        totalSupply = totalSupply.safeSub(amount);

        LogUnmintTokens(hodler, amount, balances[hodler], totalSupply);
        Transfer(hodler, address(0), amount);
        return true;
    }
}


contract SigToken is UpgradeableToken, MintableToken
{
    string public name = "Signals";
    string public symbol = "SIG";
    uint8 public decimals = 18;

    address public crowdsaleContract;
    bool public crowdsaleCompleted;

    function SigToken()
        UpgradeableToken(msg.sender)
        MintableToken(msg.sender)
    {
        crowdsaleContract = msg.sender;
        totalSupply = 0; // we mint during the crowdsale, so totalSupply must start at 0
    }

    function transfer(address _to, uint _value)
        returns (bool success)
    {
        require(crowdsaleCompleted);
        return StandardToken.transfer(_to, _value);
    }

    function transferFrom(address from, address to, uint value)
        returns (bool success)
    {
        require(crowdsaleCompleted);
        return StandardToken.transferFrom(from, to, value);
    }

    function approve(address spender, uint value)
        returns (bool success)
    {
        require(crowdsaleCompleted);
        return StandardToken.approve(spender, value);
    }

    // This is called to unlock tokens once the crowdsale (and subsequent audit + legal process) are
    // completed.  We don't want people buying tokens during the sale and then immediately starting
    // to trade them.  See Crowdsale::finalizeCrowdsale().
    function setCrowdsaleCompleted() {
        require(msg.sender == crowdsaleContract);
        require(crowdsaleCompleted == false);

        crowdsaleCompleted = true;
    }

    /**
     * ERC20 approveAndCall extension
     *
     * Approves and then calls the receiving contract
     */
    function approveAndCall(address _spender, uint256 _value, bytes _extraData)
        public
        returns (bool success)
    {
        require(crowdsaleCompleted);

        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);

        //call the receiveApproval function on the contract you want to be notified. This crafts the function signature manually so one doesn't have to include a contract in here just for this.
        //receiveApproval(address _from, uint256 _value, address _tokenContract, bytes _extraData)
        //it is assumed when one does this that the call *should* succeed, otherwise one would use vanilla approve instead.
        require(_spender.call(bytes4(bytes32(keccak256("receiveApproval(address,uint256,address,bytes)"))), msg.sender, _value, this, _extraData));
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"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":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleCompleted","outputs":[{"name":"","type":"bool"}],"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":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"crowdsaleContract","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"upgrade","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"setCrowdsaleCompleted","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"upgradeMaster","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getUpgradeState","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"canUpgrade","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"hodler","type":"address"},{"name":"amount","type":"uint256"}],"name":"unmintTokens","outputs":[{"name":"ok","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalUpgraded","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"},{"name":"_extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"target","type":"address"}],"name":"setUpgradeTarget","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newMintMaster","type":"address"}],"name":"setMintMaster","outputs":[{"name":"ok","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"mintMaster","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"isToken","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"}],"name":"mintTokens","outputs":[{"name":"ok","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"upgradeTarget","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"master","type":"address"}],"name":"setUpgradeMaster","outputs":[],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"recipient","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"newBalance","type":"uint256"},{"indexed":false,"name":"totalSupply","type":"uint256"}],"name":"LogMintTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"hodler","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"newBalance","type":"uint256"},{"indexed":false,"name":"totalSupply","type":"uint256"}],"name":"LogUnmintTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldMintMaster","type":"address"},{"indexed":false,"name":"newMintMaster","type":"address"}],"name":"LogSetMintMaster","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"LogUpgrade","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"agent","type":"address"}],"name":"LogSetUpgradeTarget","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"},{"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"}]

60606040526040805190810160405260078082527f5369676e616c730000000000000000000000000000000000000000000000000060208301529080516200004c9291602001906200011a565b5060408051908101604052600381527f534947000000000000000000000000000000000000000000000000000000000060208201526008908051620000969291602001906200011a565b506009805460ff191660121790553415620000b057600080fd5b5b335b335b60038054600160a060020a031916600160a060020a0383161790555b5060068054600160a060020a031916600160a060020a0383161790555b506009805461010060a860020a03191661010033600160a060020a031602179055600080555b620001c4565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200015d57805160ff19168380011785556200018d565b828001600101855582156200018d579182015b828111156200018d57825182559160200191906001019062000170565b5b506200019c929150620001a0565b5090565b620001c191905b808211156200019c5760008155600101620001a7565b5090565b90565b61156380620001d46000396000f300606060405236156101385763ffffffff60e060020a60003504166306fdde03811461013d578063095ea7b3146101c85780631088f03f146101fe57806318160ddd1461022557806323b872dd1461024a578063313ce5671461028657806331616395146102af57806345977d03146102de5780635afd7627146102f6578063600440cb1461030b57806370a082311461033a5780638444b3911461036b57806395d89b41146103a25780639738968c1461042d578063a9059cbb14610454578063af9afe731461048a578063c752ff62146104c0578063cae9ca51146104e5578063cd3265a31461055e578063ce5c073d1461057f578063d991c58f146105b2578063dd62ed3e146105e1578063eefa597b14610618578063f0dda65c1461063f578063fe537a8214610675578063ffeb7d75146106a4575b600080fd5b341561014857600080fd5b6101506106c5565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561018d5780820151818401525b602001610174565b50505050905090810190601f1680156101ba5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101d357600080fd5b6101ea600160a060020a0360043516602435610763565b604051901515815260200160405180910390f35b341561020957600080fd5b6101ea610791565b604051901515815260200160405180910390f35b341561023057600080fd5b6102386107a1565b60405190815260200160405180910390f35b341561025557600080fd5b6101ea600160a060020a03600435811690602435166044356107a7565b604051901515815260200160405180910390f35b341561029157600080fd5b6102996107d7565b60405160ff909116815260200160405180910390f35b34156102ba57600080fd5b6102c26107e0565b604051600160a060020a03909116815260200160405180910390f35b34156102e957600080fd5b6102f46004356107f4565b005b341561030157600080fd5b6102f4610961565b005b341561031657600080fd5b6102c26109c0565b604051600160a060020a03909116815260200160405180910390f35b341561034557600080fd5b610238600160a060020a03600435166109cf565b60405190815260200160405180910390f35b341561037657600080fd5b61037e6109ee565b6040518082600481111561038e57fe5b60ff16815260200191505060405180910390f35b34156103ad57600080fd5b610150610a3b565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561018d5780820151818401525b602001610174565b50505050905090810190601f1680156101ba5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561043857600080fd5b6101ea610ad9565b604051901515815260200160405180910390f35b341561045f57600080fd5b6101ea600160a060020a0360043516602435610adf565b604051901515815260200160405180910390f35b341561049557600080fd5b6101ea600160a060020a0360043516602435610b0d565b604051901515815260200160405180910390f35b34156104cb57600080fd5b610238610c6a565b60405190815260200160405180910390f35b34156104f057600080fd5b6101ea60048035600160a060020a03169060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610c7095505050505050565b604051901515815260200160405180910390f35b341561056957600080fd5b6102f4600160a060020a0360043516610e2a565b005b341561058a57600080fd5b6101ea600160a060020a0360043516610fe3565b604051901515815260200160405180910390f35b34156105bd57600080fd5b6102c2611087565b604051600160a060020a03909116815260200160405180910390f35b34156105ec57600080fd5b610238600160a060020a0360043581169060243516611096565b60405190815260200160405180910390f35b341561062357600080fd5b6101ea6110c3565b604051901515815260200160405180910390f35b341561064a57600080fd5b6101ea600160a060020a03600435166024356110c8565b604051901515815260200160405180910390f35b341561068057600080fd5b6102c26111ff565b604051600160a060020a03909116815260200160405180910390f35b34156106af57600080fd5b6102f4600160a060020a036004351661120e565b005b60078054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561075b5780601f106107305761010080835404028352916020019161075b565b820191906000526020600020905b81548152906001019060200180831161073e57829003601f168201915b505050505081565b60095460009060a860020a900460ff16151561077e57600080fd5b610788838361126a565b90505b92915050565b60095460a860020a900460ff1681565b60005481565b60095460009060a860020a900460ff1615156107c257600080fd5b6107cd848484611313565b90505b9392505050565b60095460ff1681565b6009546101009004600160a060020a031681565b60006107fe6109ee565b905060035b81600481111561080f57fe5b1480610827575060045b81600481111561082557fe5b145b151561083257600080fd5b6000821161083f57600080fd5b600160a060020a033316600090815260016020526040902054610868908363ffffffff61141616565b600160a060020a03331660009081526001602052604081209190915554610895908363ffffffff61141616565b6000556005546108ab908363ffffffff61142d16565b600555600454600160a060020a031663753e88e5338460405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561090457600080fd5b6102c65a03f1151561091557600080fd5b5050600454600160a060020a03908116915033167f947637ad74c8018986ee33595c626316230f52029a0129e84fc7212b7b2c75028460405190815260200160405180910390a35b5050565b60095433600160a060020a03908116610100909204161461098157600080fd5b60095460a860020a900460ff161561099857600080fd5b6009805475ff000000000000000000000000000000000000000000191660a860020a1790555b565b600354600160a060020a031681565b600160a060020a0381166000908152600160205260409020545b919050565b60006109f8610ad9565b1515610a0657506001610a35565b600454600160a060020a03161515610a2057506002610a35565b6005541515610a3157506003610a35565b5060045b5b5b5b90565b60088054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561075b5780601f106107305761010080835404028352916020019161075b565b820191906000526020600020905b81548152906001019060200180831161073e57829003601f168201915b505050505081565b60015b90565b60095460009060a860020a900460ff161515610afa57600080fd5b6107888383611455565b90505b92915050565b60065460009033600160a060020a03908116911614610b2b57600080fd5b60008211610b3857600080fd5b600160a060020a03831660009081526001602052604090205482901015610b5e57600080fd5b600160a060020a038316600090815260016020526040902054610b87908363ffffffff61141616565b600160a060020a03841660009081526001602052604081209190915554610bb4908363ffffffff61141616565b6000818155600160a060020a03851681526001602052604090819020547f2e0eddecfc49c6167981c028aca887d76127461e2b5a26b11d4aa0511e40d60192869286929190518085600160a060020a0316600160a060020a0316815260200184815260200183815260200182815260200194505050505060405180910390a16000600160a060020a0384166000805160206115188339815191528460405190815260200160405180910390a35060015b92915050565b60055481565b60095460009060a860020a900460ff161515610c8b57600080fd5b600160a060020a03338116600081815260026020908152604080832094891680845294909152908190208690557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259086905190815260200160405180910390a383600160a060020a03166040517f72656365697665417070726f76616c28616464726573732c75696e743235362c81527f616464726573732c6279746573290000000000000000000000000000000000006020820152602e01604051809103902060e060020a9004338530866040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a03168152602001828051906020019080838360005b83811015610dca5780820151818401525b602001610db1565b50505050905090810190601f168015610df75780820380516001836020036101000a031916815260200191505b5094505050505060006040518083038160008761646e5a03f1925050501515610e1f57600080fd5b5060015b9392505050565b610e32610ad9565b1515610e3d57600080fd5b600160a060020a0381161515610e5257600080fd5b60035433600160a060020a03908116911614610e6d57600080fd5b60045b610e786109ee565b6004811115610e8357fe5b1415610e8e57600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116919091179182905516633b6b367e6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610ef957600080fd5b6102c65a03f11515610f0a57600080fd5b505050604051805190501515610f1f57600080fd5b600080546004549091600160a060020a0390911690634b2ba0dd90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610f6f57600080fd5b6102c65a03f11515610f8057600080fd5b50505060405180519050141515610f9657600080fd5b6004547f85efc013e6a48528d2ea6e2365572f6db3ff28b9b911968161eaf0fd46d494e890600160a060020a0316604051600160a060020a03909116815260200160405180910390a15b50565b600654600090819033600160a060020a0390811691161461100357600080fd5b5060068054600160a060020a0384811673ffffffffffffffffffffffffffffffffffffffff1983161792839055908116917f85634ebba9e270a25e5845ccc5f7819479f4edb51c85d57452434114c70dedca91839116604051600160a060020a039283168152911660208201526040908101905180910390a1600191505b50919050565b600654600160a060020a031681565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b600181565b60065460009033600160a060020a039081169116146110e657600080fd5b600082116110f357600080fd5b600160a060020a03831660009081526001602052604090205461111c908363ffffffff61142d16565b600160a060020a03841660009081526001602052604081209190915554611149908363ffffffff61142d16565b6000818155600160a060020a03851681526001602052604090819020547f5f502ab3f45e75f9f14918f5f5e2680d15cf6823e37114077e4488f5c3a6070992869286929190518085600160a060020a0316600160a060020a0316815260200184815260200183815260200182815260200194505050505060405180910390a1600160a060020a03831660006000805160206115188339815191528460405190815260200160405180910390a35060015b92915050565b600454600160a060020a031681565b600160a060020a038116151561122357600080fd5b60035433600160a060020a0390811691161461123e57600080fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b50565b6000811580159061129f5750600160a060020a0333811660009081526002602090815260408083209387168352929052205415155b156112a957600080fd5b600160a060020a03338116600081815260026020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b600160a060020a03808416600090815260026020908152604080832033851684528252808320549386168352600190915281205490919061135a908463ffffffff61142d16565b600160a060020a03808616600090815260016020526040808220939093559087168152205461138f908463ffffffff61141616565b600160a060020a0386166000908152600160205260409020556113b8818463ffffffff61141616565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616916000805160206115188339815191529086905190815260200160405180910390a3600191505b509392505050565b60008282111561142257fe5b508082035b92915050565b60008282018381108015906114425750828110155b151561144a57fe5b8091505b5092915050565b600060403660441461146657600080fd5b600160a060020a03331660009081526001602052604090205461148f908463ffffffff61141616565b600160a060020a0333811660009081526001602052604080822093909355908616815220546114c4908463ffffffff61142d16565b600160a060020a0380861660008181526001602052604090819020939093559133909116906000805160206115188339815191529086905190815260200160405180910390a3600191505b5b50929150505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058209274d12d9b0929dc0a25eeacfea489154f63da31679a78aa71d557aa42fee3880029

Deployed Bytecode

0x606060405236156101385763ffffffff60e060020a60003504166306fdde03811461013d578063095ea7b3146101c85780631088f03f146101fe57806318160ddd1461022557806323b872dd1461024a578063313ce5671461028657806331616395146102af57806345977d03146102de5780635afd7627146102f6578063600440cb1461030b57806370a082311461033a5780638444b3911461036b57806395d89b41146103a25780639738968c1461042d578063a9059cbb14610454578063af9afe731461048a578063c752ff62146104c0578063cae9ca51146104e5578063cd3265a31461055e578063ce5c073d1461057f578063d991c58f146105b2578063dd62ed3e146105e1578063eefa597b14610618578063f0dda65c1461063f578063fe537a8214610675578063ffeb7d75146106a4575b600080fd5b341561014857600080fd5b6101506106c5565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561018d5780820151818401525b602001610174565b50505050905090810190601f1680156101ba5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101d357600080fd5b6101ea600160a060020a0360043516602435610763565b604051901515815260200160405180910390f35b341561020957600080fd5b6101ea610791565b604051901515815260200160405180910390f35b341561023057600080fd5b6102386107a1565b60405190815260200160405180910390f35b341561025557600080fd5b6101ea600160a060020a03600435811690602435166044356107a7565b604051901515815260200160405180910390f35b341561029157600080fd5b6102996107d7565b60405160ff909116815260200160405180910390f35b34156102ba57600080fd5b6102c26107e0565b604051600160a060020a03909116815260200160405180910390f35b34156102e957600080fd5b6102f46004356107f4565b005b341561030157600080fd5b6102f4610961565b005b341561031657600080fd5b6102c26109c0565b604051600160a060020a03909116815260200160405180910390f35b341561034557600080fd5b610238600160a060020a03600435166109cf565b60405190815260200160405180910390f35b341561037657600080fd5b61037e6109ee565b6040518082600481111561038e57fe5b60ff16815260200191505060405180910390f35b34156103ad57600080fd5b610150610a3b565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561018d5780820151818401525b602001610174565b50505050905090810190601f1680156101ba5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561043857600080fd5b6101ea610ad9565b604051901515815260200160405180910390f35b341561045f57600080fd5b6101ea600160a060020a0360043516602435610adf565b604051901515815260200160405180910390f35b341561049557600080fd5b6101ea600160a060020a0360043516602435610b0d565b604051901515815260200160405180910390f35b34156104cb57600080fd5b610238610c6a565b60405190815260200160405180910390f35b34156104f057600080fd5b6101ea60048035600160a060020a03169060248035919060649060443590810190830135806020601f82018190048102016040519081016040528181529291906020840183838082843750949650610c7095505050505050565b604051901515815260200160405180910390f35b341561056957600080fd5b6102f4600160a060020a0360043516610e2a565b005b341561058a57600080fd5b6101ea600160a060020a0360043516610fe3565b604051901515815260200160405180910390f35b34156105bd57600080fd5b6102c2611087565b604051600160a060020a03909116815260200160405180910390f35b34156105ec57600080fd5b610238600160a060020a0360043581169060243516611096565b60405190815260200160405180910390f35b341561062357600080fd5b6101ea6110c3565b604051901515815260200160405180910390f35b341561064a57600080fd5b6101ea600160a060020a03600435166024356110c8565b604051901515815260200160405180910390f35b341561068057600080fd5b6102c26111ff565b604051600160a060020a03909116815260200160405180910390f35b34156106af57600080fd5b6102f4600160a060020a036004351661120e565b005b60078054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561075b5780601f106107305761010080835404028352916020019161075b565b820191906000526020600020905b81548152906001019060200180831161073e57829003601f168201915b505050505081565b60095460009060a860020a900460ff16151561077e57600080fd5b610788838361126a565b90505b92915050565b60095460a860020a900460ff1681565b60005481565b60095460009060a860020a900460ff1615156107c257600080fd5b6107cd848484611313565b90505b9392505050565b60095460ff1681565b6009546101009004600160a060020a031681565b60006107fe6109ee565b905060035b81600481111561080f57fe5b1480610827575060045b81600481111561082557fe5b145b151561083257600080fd5b6000821161083f57600080fd5b600160a060020a033316600090815260016020526040902054610868908363ffffffff61141616565b600160a060020a03331660009081526001602052604081209190915554610895908363ffffffff61141616565b6000556005546108ab908363ffffffff61142d16565b600555600454600160a060020a031663753e88e5338460405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b151561090457600080fd5b6102c65a03f1151561091557600080fd5b5050600454600160a060020a03908116915033167f947637ad74c8018986ee33595c626316230f52029a0129e84fc7212b7b2c75028460405190815260200160405180910390a35b5050565b60095433600160a060020a03908116610100909204161461098157600080fd5b60095460a860020a900460ff161561099857600080fd5b6009805475ff000000000000000000000000000000000000000000191660a860020a1790555b565b600354600160a060020a031681565b600160a060020a0381166000908152600160205260409020545b919050565b60006109f8610ad9565b1515610a0657506001610a35565b600454600160a060020a03161515610a2057506002610a35565b6005541515610a3157506003610a35565b5060045b5b5b5b90565b60088054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561075b5780601f106107305761010080835404028352916020019161075b565b820191906000526020600020905b81548152906001019060200180831161073e57829003601f168201915b505050505081565b60015b90565b60095460009060a860020a900460ff161515610afa57600080fd5b6107888383611455565b90505b92915050565b60065460009033600160a060020a03908116911614610b2b57600080fd5b60008211610b3857600080fd5b600160a060020a03831660009081526001602052604090205482901015610b5e57600080fd5b600160a060020a038316600090815260016020526040902054610b87908363ffffffff61141616565b600160a060020a03841660009081526001602052604081209190915554610bb4908363ffffffff61141616565b6000818155600160a060020a03851681526001602052604090819020547f2e0eddecfc49c6167981c028aca887d76127461e2b5a26b11d4aa0511e40d60192869286929190518085600160a060020a0316600160a060020a0316815260200184815260200183815260200182815260200194505050505060405180910390a16000600160a060020a0384166000805160206115188339815191528460405190815260200160405180910390a35060015b92915050565b60055481565b60095460009060a860020a900460ff161515610c8b57600080fd5b600160a060020a03338116600081815260026020908152604080832094891680845294909152908190208690557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259086905190815260200160405180910390a383600160a060020a03166040517f72656365697665417070726f76616c28616464726573732c75696e743235362c81527f616464726573732c6279746573290000000000000000000000000000000000006020820152602e01604051809103902060e060020a9004338530866040518563ffffffff1660e060020a0281526004018085600160a060020a0316600160a060020a0316815260200184815260200183600160a060020a0316600160a060020a03168152602001828051906020019080838360005b83811015610dca5780820151818401525b602001610db1565b50505050905090810190601f168015610df75780820380516001836020036101000a031916815260200191505b5094505050505060006040518083038160008761646e5a03f1925050501515610e1f57600080fd5b5060015b9392505050565b610e32610ad9565b1515610e3d57600080fd5b600160a060020a0381161515610e5257600080fd5b60035433600160a060020a03908116911614610e6d57600080fd5b60045b610e786109ee565b6004811115610e8357fe5b1415610e8e57600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116919091179182905516633b6b367e6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610ef957600080fd5b6102c65a03f11515610f0a57600080fd5b505050604051805190501515610f1f57600080fd5b600080546004549091600160a060020a0390911690634b2ba0dd90604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610f6f57600080fd5b6102c65a03f11515610f8057600080fd5b50505060405180519050141515610f9657600080fd5b6004547f85efc013e6a48528d2ea6e2365572f6db3ff28b9b911968161eaf0fd46d494e890600160a060020a0316604051600160a060020a03909116815260200160405180910390a15b50565b600654600090819033600160a060020a0390811691161461100357600080fd5b5060068054600160a060020a0384811673ffffffffffffffffffffffffffffffffffffffff1983161792839055908116917f85634ebba9e270a25e5845ccc5f7819479f4edb51c85d57452434114c70dedca91839116604051600160a060020a039283168152911660208201526040908101905180910390a1600191505b50919050565b600654600160a060020a031681565b600160a060020a038083166000908152600260209081526040808320938516835292905220545b92915050565b600181565b60065460009033600160a060020a039081169116146110e657600080fd5b600082116110f357600080fd5b600160a060020a03831660009081526001602052604090205461111c908363ffffffff61142d16565b600160a060020a03841660009081526001602052604081209190915554611149908363ffffffff61142d16565b6000818155600160a060020a03851681526001602052604090819020547f5f502ab3f45e75f9f14918f5f5e2680d15cf6823e37114077e4488f5c3a6070992869286929190518085600160a060020a0316600160a060020a0316815260200184815260200183815260200182815260200194505050505060405180910390a1600160a060020a03831660006000805160206115188339815191528460405190815260200160405180910390a35060015b92915050565b600454600160a060020a031681565b600160a060020a038116151561122357600080fd5b60035433600160a060020a0390811691161461123e57600080fd5b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b50565b6000811580159061129f5750600160a060020a0333811660009081526002602090815260408083209387168352929052205415155b156112a957600080fd5b600160a060020a03338116600081815260026020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b600160a060020a03808416600090815260026020908152604080832033851684528252808320549386168352600190915281205490919061135a908463ffffffff61142d16565b600160a060020a03808616600090815260016020526040808220939093559087168152205461138f908463ffffffff61141616565b600160a060020a0386166000908152600160205260409020556113b8818463ffffffff61141616565b600160a060020a03808716600081815260026020908152604080832033861684529091529081902093909355908616916000805160206115188339815191529086905190815260200160405180910390a3600191505b509392505050565b60008282111561142257fe5b508082035b92915050565b60008282018381108015906114425750828110155b151561144a57fe5b8091505b5092915050565b600060403660441461146657600080fd5b600160a060020a03331660009081526001602052604090205461148f908463ffffffff61141616565b600160a060020a0333811660009081526001602052604080822093909355908616815220546114c4908463ffffffff61142d16565b600160a060020a0380861660008181526001602052604090819020939093559133909116906000805160206115188339815191529086905190815260200160405180910390a3600191505b5b50929150505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058209274d12d9b0929dc0a25eeacfea489154f63da31679a78aa71d557aa42fee3880029

Swarm Source

bzzr://9274d12d9b0929dc0a25eeacfea489154f63da31679a78aa71d557aa42fee388

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
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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