ETH Price: $3,121.88 (-0.58%)

Contract

0xBbc79794599b19274850492394004087cBf89710
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Accept Ownership110294932020-10-10 19:10:331499 days ago1602357033IN
Bancor: Token Sale
0 ETH0.001112950
Transfer52044582018-03-06 3:21:082449 days ago1520306468IN
Bancor: Token Sale
0.00001 ETH0.00086141
Transfer44642712017-10-31 13:38:152574 days ago1509457095IN
Bancor: Token Sale
0.3 ETH0.004221
Transfer43101562017-09-25 10:39:362610 days ago1506335976IN
Bancor: Token Sale
0.14376779 ETH0.004832224.16102185
Transfer42700722017-09-13 16:24:292622 days ago1505319869IN
Bancor: Token Sale
1 ETH0.0095374550
Transfer42700712017-09-13 16:24:162622 days ago1505319856IN
Bancor: Token Sale
1 ETH0.0095374550
Transfer42700712017-09-13 16:24:162622 days ago1505319856IN
Bancor: Token Sale
1 ETH0.0095374550
Transfer42700712017-09-13 16:24:162622 days ago1505319856IN
Bancor: Token Sale
1 ETH0.0095374550
Transfer42700542017-09-13 16:16:052622 days ago1505319365IN
Bancor: Token Sale
1 ETH0.0095374550
Transfer42700532017-09-13 16:15:582622 days ago1505319358IN
Bancor: Token Sale
1 ETH0.0133524370
Transfer42651832017-09-12 7:28:012624 days ago1505201281IN
Bancor: Token Sale
0.001 ETH0.00044121
Transfer42107032017-08-27 21:45:172639 days ago1503870317IN
Bancor: Token Sale
1 ETH0.00046221
Transfer40597052017-07-22 22:57:292675 days ago1500764249IN
Bancor: Token Sale
0.2 ETH0.004221
Transfer40491022017-07-20 15:53:252677 days ago1500566005IN
Bancor: Token Sale
5 ETH0.004832224.16102185
Transfer39650192017-07-02 23:09:152695 days ago1499036955IN
Bancor: Token Sale
2.9 ETH0.006032230.16102185
Transfer39536352017-06-30 16:50:542697 days ago1498841454IN
Bancor: Token Sale
1.495 ETH0.00550
Transfer39355162017-06-27 1:51:052701 days ago1498528265IN
Bancor: Token Sale
5 ETH0.0037282437.28249577
Transfer39332202017-06-26 14:29:192701 days ago1498487359IN
Bancor: Token Sale
4.95 ETH0.005444950
Transfer39313942017-06-26 5:41:082702 days ago1498455668IN
Bancor: Token Sale
10 ETH0.009447
Transfer39301072017-06-25 23:42:032702 days ago1498434123IN
Bancor: Token Sale
2.99 ETH0.000806432
Transfer39300982017-06-25 23:40:212702 days ago1498434021IN
Bancor: Token Sale
2.99 ETH0.000806432
Transfer39300812017-06-25 23:35:402702 days ago1498433740IN
Bancor: Token Sale
2.99 ETH0.000806432
Transfer39299912017-06-25 23:07:312702 days ago1498432051IN
Bancor: Token Sale
1 ETH0.004832224.16102185
Transfer39299912017-06-25 23:07:312702 days ago1498432051IN
Bancor: Token Sale
1 ETH0.004832224.16102185
Transfer39298432017-06-25 22:25:282702 days ago1498429528IN
Bancor: Token Sale
0.84 ETH0.00387232
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
38625292017-06-12 19:53:462715 days ago1497297226
Bancor: Token Sale
0.25 ETH
38619042017-06-12 17:05:042715 days ago1497287104
Bancor: Token Sale
10 ETH
38619022017-06-12 17:04:342715 days ago1497287074
Bancor: Token Sale
10 ETH
38618562017-06-12 16:49:322715 days ago1497286172
Bancor: Token Sale
0.2 ETH
38618522017-06-12 16:48:312715 days ago1497286111
Bancor: Token Sale
1 ETH
38618522017-06-12 16:48:312715 days ago1497286111
Bancor: Token Sale
1 ETH
38618512017-06-12 16:48:232715 days ago1497286103
Bancor: Token Sale
1 ETH
38618472017-06-12 16:47:042715 days ago1497286024
Bancor: Token Sale
1 ETH
38617932017-06-12 16:32:092715 days ago1497285129
Bancor: Token Sale
0.4 ETH
38617672017-06-12 16:25:202715 days ago1497284720
Bancor: Token Sale
0.3 ETH
38617672017-06-12 16:25:202715 days ago1497284720
Bancor: Token Sale
1 ETH
38617672017-06-12 16:25:202715 days ago1497284720
Bancor: Token Sale
0.9755 ETH
38617672017-06-12 16:25:202715 days ago1497284720
Bancor: Token Sale
33 ETH
38617672017-06-12 16:25:202715 days ago1497284720
Bancor: Token Sale
20 ETH
38617672017-06-12 16:25:202715 days ago1497284720
Bancor: Token Sale
44 ETH
38617672017-06-12 16:25:202715 days ago1497284720
Bancor: Token Sale
1 ETH
38617672017-06-12 16:25:202715 days ago1497284720
Bancor: Token Sale
7.54 ETH
38617662017-06-12 16:25:062715 days ago1497284706
Bancor: Token Sale
1 ETH
38617662017-06-12 16:25:062715 days ago1497284706
Bancor: Token Sale
44 ETH
38617662017-06-12 16:25:062715 days ago1497284706
Bancor: Token Sale
106 ETH
38617662017-06-12 16:25:062715 days ago1497284706
Bancor: Token Sale
7 ETH
38617662017-06-12 16:25:062715 days ago1497284706
Bancor: Token Sale
0.04 ETH
38617662017-06-12 16:25:062715 days ago1497284706
Bancor: Token Sale
4.98516779 ETH
38617662017-06-12 16:25:062715 days ago1497284706
Bancor: Token Sale
6 ETH
38617662017-06-12 16:25:062715 days ago1497284706
Bancor: Token Sale
12.2564564 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CrowdsaleController

Compiler Version
v0.4.11+commit.68ef5810

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2017-06-10
*/

pragma solidity ^0.4.11;

/*
    Overflow protected math functions
*/
contract SafeMath {
    /**
        constructor
    */
    function SafeMath() {
    }

    /**
        @dev returns the sum of _x and _y, asserts if the calculation overflows

        @param _x   value 1
        @param _y   value 2

        @return sum
    */
    function safeAdd(uint256 _x, uint256 _y) internal returns (uint256) {
        uint256 z = _x + _y;
        assert(z >= _x);
        return z;
    }

    /**
        @dev returns the difference of _x minus _y, asserts if the subtraction results in a negative number

        @param _x   minuend
        @param _y   subtrahend

        @return difference
    */
    function safeSub(uint256 _x, uint256 _y) internal returns (uint256) {
        assert(_x >= _y);
        return _x - _y;
    }

    /**
        @dev returns the product of multiplying _x by _y, asserts if the calculation overflows

        @param _x   factor 1
        @param _y   factor 2

        @return product
    */
    function safeMul(uint256 _x, uint256 _y) internal returns (uint256) {
        uint256 z = _x * _y;
        assert(_x == 0 || z / _x == _y);
        return z;
    }
}

/*
    Owned contract interface
*/
contract IOwned {
    // this function isn't abstract since the compiler emits automatically generated getter functions as external
    function owner() public constant returns (address owner) { owner; }

    function transferOwnership(address _newOwner) public;
    function acceptOwnership() public;
}

/*
    Provides support and utilities for contract ownership
*/
contract Owned is IOwned {
    address public owner;
    address public newOwner;

    event OwnerUpdate(address _prevOwner, address _newOwner);

    /**
        @dev constructor
    */
    function Owned() {
        owner = msg.sender;
    }

    // allows execution by the owner only
    modifier ownerOnly {
        assert(msg.sender == owner);
        _;
    }

    /**
        @dev allows transferring the contract ownership
        the new owner still need to accept the transfer
        can only be called by the contract owner

        @param _newOwner    new contract owner
    */
    function transferOwnership(address _newOwner) public ownerOnly {
        require(_newOwner != owner);
        newOwner = _newOwner;
    }

    /**
        @dev used by a new owner to accept an ownership transfer
    */
    function acceptOwnership() public {
        require(msg.sender == newOwner);
        OwnerUpdate(owner, newOwner);
        owner = newOwner;
        newOwner = 0x0;
    }
}

/*
    ERC20 Standard Token interface
*/
contract IERC20Token {
    // these functions aren't abstract since the compiler emits automatically generated getter functions as external
    function name() public constant returns (string name) { name; }
    function symbol() public constant returns (string symbol) { symbol; }
    function decimals() public constant returns (uint8 decimals) { decimals; }
    function totalSupply() public constant returns (uint256 totalSupply) { totalSupply; }
    function balanceOf(address _owner) public constant returns (uint256 balance) { _owner; balance; }
    function allowance(address _owner, address _spender) public constant returns (uint256 remaining) { _owner; _spender; remaining; }

    function transfer(address _to, uint256 _value) public returns (bool success);
    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);
    function approve(address _spender, uint256 _value) public returns (bool success);
}

/*
    Token Holder interface
*/
contract ITokenHolder is IOwned {
    function withdrawTokens(IERC20Token _token, address _to, uint256 _amount) public;
}

/*
    We consider every contract to be a 'token holder' since it's currently not possible
    for a contract to deny receiving tokens.

    The TokenHolder's contract sole purpose is to provide a safety mechanism that allows
    the owner to send tokens that were sent to the contract by mistake back to their sender.
*/
contract TokenHolder is ITokenHolder, Owned {
    /**
        @dev constructor
    */
    function TokenHolder() {
    }

    // validates an address - currently only checks that it isn't null
    modifier validAddress(address _address) {
        require(_address != 0x0);
        _;
    }

    // verifies that the address is different than this contract address
    modifier notThis(address _address) {
        require(_address != address(this));
        _;
    }

    /**
        @dev withdraws tokens held by the contract and sends them to an account
        can only be called by the owner

        @param _token   ERC20 token contract address
        @param _to      account to receive the new amount
        @param _amount  amount to withdraw
    */
    function withdrawTokens(IERC20Token _token, address _to, uint256 _amount)
        public
        ownerOnly
        validAddress(_token)
        validAddress(_to)
        notThis(_to)
    {
        assert(_token.transfer(_to, _amount));
    }
}

/*
    Smart Token interface
*/
contract ISmartToken is ITokenHolder, IERC20Token {
    function disableTransfers(bool _disable) public;
    function issue(address _to, uint256 _amount) public;
    function destroy(address _from, uint256 _amount) public;
}

/*
    The smart token controller is an upgradable part of the smart token that allows
    more functionality as well as fixes for bugs/exploits.
    Once it accepts ownership of the token, it becomes the token's sole controller
    that can execute any of its functions.

    To upgrade the controller, ownership must be transferred to a new controller, along with
    any relevant data.

    The smart token must be set on construction and cannot be changed afterwards.
    Wrappers are provided (as opposed to a single 'execute' function) for each of the token's functions, for easier access.

    Note that the controller can transfer token ownership to a new controller that
    doesn't allow executing any function on the token, for a trustless solution.
    Doing that will also remove the owner's ability to upgrade the controller.
*/
contract SmartTokenController is TokenHolder {
    ISmartToken public token;   // smart token

    /**
        @dev constructor
    */
    function SmartTokenController(ISmartToken _token)
        validAddress(_token)
    {
        token = _token;
    }

    // ensures that the controller is the token's owner
    modifier active() {
        assert(token.owner() == address(this));
        _;
    }

    // ensures that the controller is not the token's owner
    modifier inactive() {
        assert(token.owner() != address(this));
        _;
    }

    /**
        @dev allows transferring the token ownership
        the new owner still need to accept the transfer
        can only be called by the contract owner

        @param _newOwner    new token owner
    */
    function transferTokenOwnership(address _newOwner) public ownerOnly {
        token.transferOwnership(_newOwner);
    }

    /**
        @dev used by a new owner to accept a token ownership transfer
        can only be called by the contract owner
    */
    function acceptTokenOwnership() public ownerOnly {
        token.acceptOwnership();
    }

    /**
        @dev disables/enables token transfers
        can only be called by the contract owner

        @param _disable    true to disable transfers, false to enable them
    */
    function disableTokenTransfers(bool _disable) public ownerOnly {
        token.disableTransfers(_disable);
    }

    /**
        @dev allows the owner to execute the token's issue function

        @param _to         account to receive the new amount
        @param _amount     amount to increase the supply by
    */
    function issueTokens(address _to, uint256 _amount) public ownerOnly {
        token.issue(_to, _amount);
    }

    /**
        @dev allows the owner to execute the token's destroy function

        @param _from       account to remove the amount from
        @param _amount     amount to decrease the supply by
    */
    function destroyTokens(address _from, uint256 _amount) public ownerOnly {
        token.destroy(_from, _amount);
    }

    /**
        @dev withdraws tokens held by the token and sends them to an account
        can only be called by the owner

        @param _token   ERC20 token contract address
        @param _to      account to receive the new amount
        @param _amount  amount to withdraw
    */
    function withdrawFromToken(IERC20Token _token, address _to, uint256 _amount) public ownerOnly {
        token.withdrawTokens(_token, _to, _amount);
    }
}

/*
    Crowdsale v0.1

    The crowdsale version of the smart token controller, allows contributing ether in exchange for Bancor tokens
    The price remains fixed for the entire duration of the crowdsale
    Note that 20% of the contributions are the Bancor token's reserve
*/
contract CrowdsaleController is SmartTokenController, SafeMath {
    uint256 public constant DURATION = 14 days;                 // crowdsale duration
    uint256 public constant TOKEN_PRICE_N = 1;                  // initial price in wei (numerator)
    uint256 public constant TOKEN_PRICE_D = 100;                // initial price in wei (denominator)
    uint256 public constant BTCS_ETHER_CAP = 50000 ether;       // maximum bitcoin suisse ether contribution
    uint256 public constant MAX_GAS_PRICE = 50000000000 wei;    // maximum gas price for contribution transactions

    string public version = '0.1';

    uint256 public startTime = 0;                   // crowdsale start time (in seconds)
    uint256 public endTime = 0;                     // crowdsale end time (in seconds)
    uint256 public totalEtherCap = 1000000 ether;   // current ether contribution cap, initialized with a temp value as a safety mechanism until the real cap is revealed
    uint256 public totalEtherContributed = 0;       // ether contributed so far
    bytes32 public realEtherCapHash;                // ensures that the real cap is predefined on deployment and cannot be changed later
    address public beneficiary = 0x0;               // address to receive all ether contributions
    address public btcs = 0x0;                      // bitcoin suisse address

    // triggered on each contribution
    event Contribution(address indexed _contributor, uint256 _amount, uint256 _return);

    /**
        @dev constructor

        @param _token          smart token the crowdsale is for
        @param _startTime      crowdsale start time
        @param _beneficiary    address to receive all ether contributions
        @param _btcs           bitcoin suisse address
    */
    function CrowdsaleController(ISmartToken _token, uint256 _startTime, address _beneficiary, address _btcs, bytes32 _realEtherCapHash)
        SmartTokenController(_token)
        validAddress(_beneficiary)
        validAddress(_btcs)
        earlierThan(_startTime)
        validAmount(uint256(_realEtherCapHash))
    {
        startTime = _startTime;
        endTime = startTime + DURATION;
        beneficiary = _beneficiary;
        btcs = _btcs;
        realEtherCapHash = _realEtherCapHash;
    }

    // verifies that an amount is greater than zero
    modifier validAmount(uint256 _amount) {
        require(_amount > 0);
        _;
    }

    // verifies that the gas price is lower than 50 gwei
    modifier validGasPrice() {
        assert(tx.gasprice <= MAX_GAS_PRICE);
        _;
    }

    // verifies that the ether cap is valid based on the key provided
    modifier validEtherCap(uint256 _cap, uint256 _key) {
        require(computeRealCap(_cap, _key) == realEtherCapHash);
        _;
    }

    // ensures that it's earlier than the given time
    modifier earlierThan(uint256 _time) {
        assert(now < _time);
        _;
    }

    // ensures that the current time is between _startTime (inclusive) and _endTime (exclusive)
    modifier between(uint256 _startTime, uint256 _endTime) {
        assert(now >= _startTime && now < _endTime);
        _;
    }

    // ensures that the sender is bitcoin suisse
    modifier btcsOnly() {
        assert(msg.sender == btcs);
        _;
    }

    // ensures that we didn't reach the ether cap
    modifier etherCapNotReached(uint256 _contribution) {
        assert(safeAdd(totalEtherContributed, _contribution) <= totalEtherCap);
        _;
    }

    // ensures that we didn't reach the bitcoin suisse ether cap
    modifier btcsEtherCapNotReached(uint256 _ethContribution) {
        assert(safeAdd(totalEtherContributed, _ethContribution) <= BTCS_ETHER_CAP);
        _;
    }

    /**
        @dev computes the real cap based on the given cap & key

        @param _cap    cap
        @param _key    key used to compute the cap hash

        @return computed real cap hash
    */
    function computeRealCap(uint256 _cap, uint256 _key) public constant returns (bytes32) {
        return keccak256(_cap, _key);
    }

    /**
        @dev enables the real cap defined on deployment

        @param _cap    predefined cap
        @param _key    key used to compute the cap hash
    */
    function enableRealCap(uint256 _cap, uint256 _key)
        public
        ownerOnly
        active
        between(startTime, endTime)
        validEtherCap(_cap, _key)
    {
        require(_cap < totalEtherCap); // validate input
        totalEtherCap = _cap;
    }

    /**
        @dev computes the number of tokens that should be issued for a given contribution

        @param _contribution    contribution amount

        @return computed number of tokens
    */
    function computeReturn(uint256 _contribution) public constant returns (uint256) {
        return safeMul(_contribution, TOKEN_PRICE_D) / TOKEN_PRICE_N;
    }

    /**
        @dev ETH contribution
        can only be called during the crowdsale

        @return tokens issued in return
    */
    function contributeETH()
        public
        payable
        between(startTime, endTime)
        returns (uint256 amount)
    {
        return processContribution();
    }

    /**
        @dev Contribution through BTCs (Bitcoin Suisse only)
        can only be called before the crowdsale started

        @return tokens issued in return
    */
    function contributeBTCs()
        public
        payable
        btcsOnly
        btcsEtherCapNotReached(msg.value)
        earlierThan(startTime)
        returns (uint256 amount)
    {
        return processContribution();
    }

    /**
        @dev handles contribution logic
        note that the Contribution event is triggered using the sender as the contributor, regardless of the actual contributor

        @return tokens issued in return
    */
    function processContribution() private
        active
        etherCapNotReached(msg.value)
        validGasPrice
        returns (uint256 amount)
    {
        uint256 tokenAmount = computeReturn(msg.value);
        assert(beneficiary.send(msg.value)); // transfer the ether to the beneficiary account
        totalEtherContributed = safeAdd(totalEtherContributed, msg.value); // update the total contribution amount
        token.issue(msg.sender, tokenAmount); // issue new funds to the contributor in the smart token
        token.issue(beneficiary, tokenAmount); // issue tokens to the beneficiary

        Contribution(msg.sender, msg.value, tokenAmount);
        return tokenAmount;
    }

    // fallback
    function() payable {
        contributeETH();
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"BTCS_ETHER_CAP","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_PRICE_D","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"contributeETH","outputs":[{"name":"amount","type":"uint256"}],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"DURATION","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_contribution","type":"uint256"}],"name":"computeReturn","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferTokenOwnership","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalEtherCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"acceptTokenOwnership","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"beneficiary","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"withdrawFromToken","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"TOKEN_PRICE_N","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"issueTokens","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"withdrawTokens","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_disable","type":"bool"}],"name":"disableTokenTransfers","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"realEtherCapHash","outputs":[{"name":"","type":"bytes32"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_cap","type":"uint256"},{"name":"_key","type":"uint256"}],"name":"enableRealCap","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"contributeBTCs","outputs":[{"name":"amount","type":"uint256"}],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"totalEtherContributed","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"btcs","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_amount","type":"uint256"}],"name":"destroyTokens","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_cap","type":"uint256"},{"name":"_key","type":"uint256"}],"name":"computeRealCap","outputs":[{"name":"","type":"bytes32"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"MAX_GAS_PRICE","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"inputs":[{"name":"_token","type":"address"},{"name":"_startTime","type":"uint256"},{"name":"_beneficiary","type":"address"},{"name":"_btcs","type":"address"},{"name":"_realEtherCapHash","type":"bytes32"}],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_contributor","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"},{"indexed":false,"name":"_return","type":"uint256"}],"name":"Contribution","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_prevOwner","type":"address"},{"indexed":false,"name":"_newOwner","type":"address"}],"name":"OwnerUpdate","type":"event"}]

60a0604052600360608190527f302e31000000000000000000000000000000000000000000000000000000000060809081526200003e919081620001ac565b5060006004819055600581905569d3c21bcecceda100000060065560075560098054600160a060020a0319908116909155600a8054909116905534156200008157fe5b60405160a0806200136483398101604090815281516020830151918301516060840151608090940151919390915b5b845b5b5b60008054600160a060020a03191633600160a060020a03161790555b5b80600160a060020a0381161515620000e95760006000fd5b60028054600160a060020a031916600160a060020a0384161790555b5b50505b82600160a060020a0381161515620001215760006000fd5b82600160a060020a0381161515620001395760006000fd5b85428190106200014557fe5b8360008111620001555760006000fd5b600488905562127500880160055560098054600160a060020a03808a16600160a060020a031992831617909255600a80549289169290911691909117905560088590555b5b505b505b505b50505050505062000256565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001ef57805160ff19168380011785556200021f565b828001600101855582156200021f579182015b828111156200021f57825182559160200191906001019062000202565b5b506200022e92915062000232565b5090565b6200025391905b808211156200022e576000815560010162000239565b5090565b90565b6110fe80620002666000396000f300606060405236156101645763ffffffff60e060020a60003504166301d1c7fd81146101765780630d2806ad14610198578063175323a8146101ba5780631be05289146101d45780631fc3a519146101f657806321e6b53d1461021b5780633197cbb61461023957806334971dd61461025b57806338a5e0161461027d57806338af3eed1461028f57806341a5b33d146102bb57806345cfad3e146102e2578063475a9fa91461030457806354fd4d50146103255780635e35359e146103b557806378e97925146103dc57806379ba5097146103fe57806385d5e631146104105780638da5cb5b14610427578063aa4bdd3b14610453578063ad03abc514610475578063b3cffc6e1461048d578063b591fc69146104a7578063bb632244146104c9578063d3ce77fe146104f5578063d4ee1d9014610516578063e2119c8014610542578063e3bbb4f11461056a578063f2fde38b1461058c578063fc0c546a146105aa575b6101745b6101706105d6565b505b565b005b341561017e57fe5b610186610606565b60408051918252519081900360200190f35b34156101a057fe5b610186610614565b60408051918252519081900360200190f35b6101866105d6565b60408051918252519081900360200190f35b34156101dc57fe5b610186610619565b60408051918252519081900360200190f35b34156101fe57fe5b610186600435610620565b60408051918252519081900360200190f35b341561022357fe5b610174600160a060020a0360043516610641565b005b341561024157fe5b6101866106d2565b60408051918252519081900360200190f35b341561026357fe5b6101866106d8565b60408051918252519081900360200190f35b341561028557fe5b6101746106de565b005b341561029757fe5b61029f610766565b60408051600160a060020a039092168252519081900360200190f35b34156102c357fe5b610174600160a060020a0360043581169060243516604435610775565b005b34156102ea57fe5b610186610817565b60408051918252519081900360200190f35b341561030c57fe5b610174600160a060020a036004351660243561081c565b005b341561032d57fe5b6103356108b5565b60408051602080825283518183015283519192839290830191850190808383821561037b575b80518252602083111561037b57601f19909201916020918201910161035b565b505050905090810190601f1680156103a75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103bd57fe5b610174600160a060020a0360043581169060243516604435610943565b005b34156103e457fe5b610186610a3f565b60408051918252519081900360200190f35b341561040657fe5b610174610a45565b005b341561041857fe5b6101746004351515610ae2565b005b341561042f57fe5b61029f610b73565b60408051600160a060020a039092168252519081900360200190f35b341561045b57fe5b610186610b82565b60408051918252519081900360200190f35b341561047d57fe5b610174600435602435610b88565b005b610186610c8a565b60408051918252519081900360200190f35b34156104af57fe5b610186610ce5565b60408051918252519081900360200190f35b34156104d157fe5b61029f610ceb565b60408051600160a060020a039092168252519081900360200190f35b34156104fd57fe5b610174600160a060020a0360043516602435610cfa565b005b341561051e57fe5b61029f610d93565b60408051600160a060020a039092168252519081900360200190f35b341561054a57fe5b610186600435602435610da2565b60408051918252519081900360200190f35b341561057257fe5b610186610dc2565b60408051918252519081900360200190f35b341561059457fe5b610174600160a060020a0360043516610dcb565b005b34156105b257fe5b61029f610e2c565b60408051600160a060020a039092168252519081900360200190f35b60006004546005548142101580156105ed57508042105b15156105f557fe5b6105fd610e3b565b92505b5b505090565b690a968163f0a57b40000081565b606481565b6212750081565b6000600161062f836064611089565b81151561063857fe5b0490505b919050565b60005433600160a060020a0390811691161461065957fe5b600254604080517ff2fde38b000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151919092169163f2fde38b91602480830192600092919082900301818387803b15156106bc57fe5b6102c65a03f115156106ca57fe5b5050505b5b50565b60055481565b60065481565b60005433600160a060020a039081169116146106f657fe5b600254604080517f79ba50970000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216916379ba50979160048082019260009290919082900301818387803b151561075157fe5b6102c65a03f1151561075f57fe5b5050505b5b565b600954600160a060020a031681565b60005433600160a060020a0390811691161461078d57fe5b600254604080517f5e35359e000000000000000000000000000000000000000000000000000000008152600160a060020a03868116600483015285811660248301526044820185905291519190921691635e35359e91606480830192600092919082900301818387803b15156107ff57fe5b6102c65a03f1151561080d57fe5b5050505b5b505050565b600181565b60005433600160a060020a0390811691161461083457fe5b600254604080517f867904b4000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152602482018590529151919092169163867904b491604480830192600092919082900301818387803b151561089e57fe5b6102c65a03f115156108ac57fe5b5050505b5b5050565b6003805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561093b5780601f106109105761010080835404028352916020019161093b565b820191906000526020600020905b81548152906001019060200180831161091e57829003601f168201915b505050505081565b60005433600160a060020a0390811691161461095b57fe5b82600160a060020a03811615156109725760006000fd5b82600160a060020a03811615156109895760006000fd5b8330600160a060020a031681600160a060020a0316141515156109ac5760006000fd5b85600160a060020a031663a9059cbb86866000604051602001526040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1515610a1457fe5b6102c65a03f11515610a2257fe5b5050604051511515905061080d57fe5b5b5b505b505b505b505050565b60045481565b60015433600160a060020a03908116911614610a615760006000fd5b60005460015460408051600160a060020a03938416815292909116602083015280517f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a9281900390910190a1600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a038416179091551690555b565b60005433600160a060020a03908116911614610afa57fe5b600254604080517f1608f18f00000000000000000000000000000000000000000000000000000000815283151560048201529051600160a060020a0390921691631608f18f9160248082019260009290919082900301818387803b15156106bc57fe5b6102c65a03f115156106ca57fe5b5050505b5b50565b600054600160a060020a031681565b60085481565b60005433600160a060020a03908116911614610ba057fe5b600254604080516000602091820181905282517f8da5cb5b0000000000000000000000000000000000000000000000000000000081529251600160a060020a03308116951693638da5cb5b936004808301949193928390030190829087803b1515610c0757fe5b6102c65a03f11515610c1557fe5b505060405151600160a060020a0316919091149050610c3057fe5b600454600554814210158015610c4557508042105b1515610c4d57fe5b60085484908490610c5e8383610da2565b14610c695760006000fd5b6006548610610c785760006000fd5b60068690555b5b50505b50505b5b5050565b600a5460009033600160a060020a03908116911614610ca557fe5b34690a968163f0a57b400000610cbd600754836110b8565b1115610cc557fe5b600454428190106105f557fe5b6105fd610e3b565b92505b5b505b505b90565b60075481565b600a54600160a060020a031681565b60005433600160a060020a03908116911614610d1257fe5b600254604080517fa24835d1000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152602482018590529151919092169163a24835d191604480830192600092919082900301818387803b151561089e57fe5b6102c65a03f115156108ac57fe5b5050505b5b5050565b600154600160a060020a031681565b604080518381526020810183905281519081900390910190205b92915050565b640ba43b740081565b60005433600160a060020a03908116911614610de357fe5b600054600160a060020a0382811691161415610dff5760006000fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600254600160a060020a031681565b6000600030600160a060020a0316600260009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b1515610ea457fe5b6102c65a03f11515610eb257fe5b505060405151600160a060020a0316919091149050610ecd57fe5b34600654610edd600754836110b8565b1115610ee557fe5b640ba43b74003a1115610ef457fe5b610efd34610620565b600954604051919350600160a060020a0316903480156108fc02916000818181858888f193505050501515610f2e57fe5b610f3a600754346110b8565b600755600254604080517f867904b4000000000000000000000000000000000000000000000000000000008152600160a060020a033381166004830152602482018690529151919092169163867904b491604480830192600092919082900301818387803b1515610fa757fe5b6102c65a03f11515610fb557fe5b5050600254600954604080517f867904b4000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015260248101879052905191909216925063867904b49160448082019260009290919082900301818387803b151561102657fe5b6102c65a03f1151561103457fe5b505060408051348152602081018590528151600160a060020a03331693507f5f7675b09617d2c9fa4fd13058ee5877a9538f626b0308816736e83748a45040929181900390910190a28192505b5b5b505b5090565b60008282028315806110a557508284828115156110a257fe5b04145b15156110ad57fe5b8091505b5092915050565b6000828201838110156110ad57fe5b8091505b50929150505600a165627a7a72305820375c4e86125d979c65864f60e3287707c15b099926de569918fff2f4ff79957400290000000000000000000000001f573d6fb3f13d689ff844b4ce37794d79a7ff1c00000000000000000000000000000000000000000000000000000000593e9e600000000000000000000000005894110995b8c8401bd38262ba0c8ee41d4e4658000000000000000000000000eb68aa2764b4a9a943658b2e61db4c902b2ebf85a20f37b82967dda1159a5f415d6f6411c6b2e0e8711c624b4082578bf5e55d6f

Deployed Bytecode

0x606060405236156101645763ffffffff60e060020a60003504166301d1c7fd81146101765780630d2806ad14610198578063175323a8146101ba5780631be05289146101d45780631fc3a519146101f657806321e6b53d1461021b5780633197cbb61461023957806334971dd61461025b57806338a5e0161461027d57806338af3eed1461028f57806341a5b33d146102bb57806345cfad3e146102e2578063475a9fa91461030457806354fd4d50146103255780635e35359e146103b557806378e97925146103dc57806379ba5097146103fe57806385d5e631146104105780638da5cb5b14610427578063aa4bdd3b14610453578063ad03abc514610475578063b3cffc6e1461048d578063b591fc69146104a7578063bb632244146104c9578063d3ce77fe146104f5578063d4ee1d9014610516578063e2119c8014610542578063e3bbb4f11461056a578063f2fde38b1461058c578063fc0c546a146105aa575b6101745b6101706105d6565b505b565b005b341561017e57fe5b610186610606565b60408051918252519081900360200190f35b34156101a057fe5b610186610614565b60408051918252519081900360200190f35b6101866105d6565b60408051918252519081900360200190f35b34156101dc57fe5b610186610619565b60408051918252519081900360200190f35b34156101fe57fe5b610186600435610620565b60408051918252519081900360200190f35b341561022357fe5b610174600160a060020a0360043516610641565b005b341561024157fe5b6101866106d2565b60408051918252519081900360200190f35b341561026357fe5b6101866106d8565b60408051918252519081900360200190f35b341561028557fe5b6101746106de565b005b341561029757fe5b61029f610766565b60408051600160a060020a039092168252519081900360200190f35b34156102c357fe5b610174600160a060020a0360043581169060243516604435610775565b005b34156102ea57fe5b610186610817565b60408051918252519081900360200190f35b341561030c57fe5b610174600160a060020a036004351660243561081c565b005b341561032d57fe5b6103356108b5565b60408051602080825283518183015283519192839290830191850190808383821561037b575b80518252602083111561037b57601f19909201916020918201910161035b565b505050905090810190601f1680156103a75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156103bd57fe5b610174600160a060020a0360043581169060243516604435610943565b005b34156103e457fe5b610186610a3f565b60408051918252519081900360200190f35b341561040657fe5b610174610a45565b005b341561041857fe5b6101746004351515610ae2565b005b341561042f57fe5b61029f610b73565b60408051600160a060020a039092168252519081900360200190f35b341561045b57fe5b610186610b82565b60408051918252519081900360200190f35b341561047d57fe5b610174600435602435610b88565b005b610186610c8a565b60408051918252519081900360200190f35b34156104af57fe5b610186610ce5565b60408051918252519081900360200190f35b34156104d157fe5b61029f610ceb565b60408051600160a060020a039092168252519081900360200190f35b34156104fd57fe5b610174600160a060020a0360043516602435610cfa565b005b341561051e57fe5b61029f610d93565b60408051600160a060020a039092168252519081900360200190f35b341561054a57fe5b610186600435602435610da2565b60408051918252519081900360200190f35b341561057257fe5b610186610dc2565b60408051918252519081900360200190f35b341561059457fe5b610174600160a060020a0360043516610dcb565b005b34156105b257fe5b61029f610e2c565b60408051600160a060020a039092168252519081900360200190f35b60006004546005548142101580156105ed57508042105b15156105f557fe5b6105fd610e3b565b92505b5b505090565b690a968163f0a57b40000081565b606481565b6212750081565b6000600161062f836064611089565b81151561063857fe5b0490505b919050565b60005433600160a060020a0390811691161461065957fe5b600254604080517ff2fde38b000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301529151919092169163f2fde38b91602480830192600092919082900301818387803b15156106bc57fe5b6102c65a03f115156106ca57fe5b5050505b5b50565b60055481565b60065481565b60005433600160a060020a039081169116146106f657fe5b600254604080517f79ba50970000000000000000000000000000000000000000000000000000000081529051600160a060020a03909216916379ba50979160048082019260009290919082900301818387803b151561075157fe5b6102c65a03f1151561075f57fe5b5050505b5b565b600954600160a060020a031681565b60005433600160a060020a0390811691161461078d57fe5b600254604080517f5e35359e000000000000000000000000000000000000000000000000000000008152600160a060020a03868116600483015285811660248301526044820185905291519190921691635e35359e91606480830192600092919082900301818387803b15156107ff57fe5b6102c65a03f1151561080d57fe5b5050505b5b505050565b600181565b60005433600160a060020a0390811691161461083457fe5b600254604080517f867904b4000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152602482018590529151919092169163867904b491604480830192600092919082900301818387803b151561089e57fe5b6102c65a03f115156108ac57fe5b5050505b5b5050565b6003805460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152929183018282801561093b5780601f106109105761010080835404028352916020019161093b565b820191906000526020600020905b81548152906001019060200180831161091e57829003601f168201915b505050505081565b60005433600160a060020a0390811691161461095b57fe5b82600160a060020a03811615156109725760006000fd5b82600160a060020a03811615156109895760006000fd5b8330600160a060020a031681600160a060020a0316141515156109ac5760006000fd5b85600160a060020a031663a9059cbb86866000604051602001526040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b1515610a1457fe5b6102c65a03f11515610a2257fe5b5050604051511515905061080d57fe5b5b5b505b505b505b505050565b60045481565b60015433600160a060020a03908116911614610a615760006000fd5b60005460015460408051600160a060020a03938416815292909116602083015280517f343765429aea5a34b3ff6a3785a98a5abb2597aca87bfbb58632c173d585373a9281900390910190a1600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a038416179091551690555b565b60005433600160a060020a03908116911614610afa57fe5b600254604080517f1608f18f00000000000000000000000000000000000000000000000000000000815283151560048201529051600160a060020a0390921691631608f18f9160248082019260009290919082900301818387803b15156106bc57fe5b6102c65a03f115156106ca57fe5b5050505b5b50565b600054600160a060020a031681565b60085481565b60005433600160a060020a03908116911614610ba057fe5b600254604080516000602091820181905282517f8da5cb5b0000000000000000000000000000000000000000000000000000000081529251600160a060020a03308116951693638da5cb5b936004808301949193928390030190829087803b1515610c0757fe5b6102c65a03f11515610c1557fe5b505060405151600160a060020a0316919091149050610c3057fe5b600454600554814210158015610c4557508042105b1515610c4d57fe5b60085484908490610c5e8383610da2565b14610c695760006000fd5b6006548610610c785760006000fd5b60068690555b5b50505b50505b5b5050565b600a5460009033600160a060020a03908116911614610ca557fe5b34690a968163f0a57b400000610cbd600754836110b8565b1115610cc557fe5b600454428190106105f557fe5b6105fd610e3b565b92505b5b505b505b90565b60075481565b600a54600160a060020a031681565b60005433600160a060020a03908116911614610d1257fe5b600254604080517fa24835d1000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152602482018590529151919092169163a24835d191604480830192600092919082900301818387803b151561089e57fe5b6102c65a03f115156108ac57fe5b5050505b5b5050565b600154600160a060020a031681565b604080518381526020810183905281519081900390910190205b92915050565b640ba43b740081565b60005433600160a060020a03908116911614610de357fe5b600054600160a060020a0382811691161415610dff5760006000fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600254600160a060020a031681565b6000600030600160a060020a0316600260009054906101000a9004600160a060020a0316600160a060020a0316638da5cb5b6000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b1515610ea457fe5b6102c65a03f11515610eb257fe5b505060405151600160a060020a0316919091149050610ecd57fe5b34600654610edd600754836110b8565b1115610ee557fe5b640ba43b74003a1115610ef457fe5b610efd34610620565b600954604051919350600160a060020a0316903480156108fc02916000818181858888f193505050501515610f2e57fe5b610f3a600754346110b8565b600755600254604080517f867904b4000000000000000000000000000000000000000000000000000000008152600160a060020a033381166004830152602482018690529151919092169163867904b491604480830192600092919082900301818387803b1515610fa757fe5b6102c65a03f11515610fb557fe5b5050600254600954604080517f867904b4000000000000000000000000000000000000000000000000000000008152600160a060020a03928316600482015260248101879052905191909216925063867904b49160448082019260009290919082900301818387803b151561102657fe5b6102c65a03f1151561103457fe5b505060408051348152602081018590528151600160a060020a03331693507f5f7675b09617d2c9fa4fd13058ee5877a9538f626b0308816736e83748a45040929181900390910190a28192505b5b5b505b5090565b60008282028315806110a557508284828115156110a257fe5b04145b15156110ad57fe5b8091505b5092915050565b6000828201838110156110ad57fe5b8091505b50929150505600a165627a7a72305820375c4e86125d979c65864f60e3287707c15b099926de569918fff2f4ff7995740029

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

0000000000000000000000001f573d6fb3f13d689ff844b4ce37794d79a7ff1c00000000000000000000000000000000000000000000000000000000593e9e600000000000000000000000005894110995b8c8401bd38262ba0c8ee41d4e4658000000000000000000000000eb68aa2764b4a9a943658b2e61db4c902b2ebf85a20f37b82967dda1159a5f415d6f6411c6b2e0e8711c624b4082578bf5e55d6f

-----Decoded View---------------
Arg [0] : _token (address): 0x1F573D6Fb3F13d689FF844B4cE37794d79a7FF1C
Arg [1] : _startTime (uint256): 1497276000
Arg [2] : _beneficiary (address): 0x5894110995B8c8401Bd38262bA0c8EE41d4E4658
Arg [3] : _btcs (address): 0xEb68aa2764b4a9A943658b2E61db4c902B2eBf85
Arg [4] : _realEtherCapHash (bytes32): 0xa20f37b82967dda1159a5f415d6f6411c6b2e0e8711c624b4082578bf5e55d6f

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000001f573d6fb3f13d689ff844b4ce37794d79a7ff1c
Arg [1] : 00000000000000000000000000000000000000000000000000000000593e9e60
Arg [2] : 0000000000000000000000005894110995b8c8401bd38262ba0c8ee41d4e4658
Arg [3] : 000000000000000000000000eb68aa2764b4a9a943658b2e61db4c902b2ebf85
Arg [4] : a20f37b82967dda1159a5f415d6f6411c6b2e0e8711c624b4082578bf5e55d6f


Swarm Source

bzzr://375c4e86125d979c65864f60e3287707c15b099926de569918fff2f4ff799574

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.