Contract Overview
Balance: 0.090594416550256531 Ether
Ether Value: $7.74 (@ $85.41/ETH)
Transactions: 281 txns
Token Tracker: �y� Not enough value! (�y� Not e...)
Misc:
Address Watch: Add To Watch List
Contract Creator: 0xc2f82bfff0f8fb0c4921d8544b76fff53425b6a0at txn 0x608ee06181d9ed5e8ce8576f670db7b385513b73532f74687089dcffcb0c7a31
Token Balance:
 Latest 25 transactions from a total of 281 transactions

TxHash Age From To Value [TxFee]
0x38555b9addabe6aae1cf78a693b5d40c5d874b79274c90fed4ae6974a759b8a628 days 1 hr ago0xba333f8ff556bf35d38e102a98daf1c5f6d9d708  IN   0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0.005 Ether0.001181946
0x477929f6601f08d97adaaaa456c74872ca1a05df95dd0f8336931e08fac9124145 days 4 hrs ago0x7ba1b1de83b61579d1a59e0dd8daefb17959d418  IN   0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0.005 Ether0.002757874
0x500e487bb08d7ccc65fbd758aa1d41b42fa5269c91786f06120fc18c7740197d68 days 15 hrs ago0xc2f82bfff0f8fb0c4921d8544b76fff53425b6a0  IN   0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0.005 Ether0.002273892
0x261d855fc974518f1db4a784f440cd8de930b33c6864674148da4e42792a7ea894 days 9 hrs ago0x6c6483d256e44dac02d1a8b4781cb2c858f896e3  IN   0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0.005 Ether0.004727784
0xc734fbf10b5aef361819856c2100612b6ab1a2a127138543c051cacfec5c94b097 days 12 hrs ago0xb04b473418b6f09e5a1f809ae2d01f14211e03ff  IN   0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0 Ether0.000165732
0xd4e70fa6fd61dfeb9035f2913c7a34f1bedd0e7fbc1b70671abf72d1d58fb813103 days 22 hrs ago0x9083b81de64ef9a854d828d07054618aca6080b1  IN   0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0 Ether0.00011838
0x3e42aaa633e84d5f3cf9f7ee12ba84f6e6601f5484534a711098dc26121a4835108 days 16 hrs ago0x6c6483d256e44dac02d1a8b4781cb2c858f896e3  IN   0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0 Ether0.00015784
0xbe18a9f6b02a1bf3c8e5ccfb0457aec6a85d2e7b4516e78d865a39fd3ae6d030108 days 20 hrs ago0x6f2d3843041ff08dc9b3f7abc58d50e74258d13e  IN   0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0.005 Ether0.001181946
0x4d57a08c742ddb7d94d0510f339061e4c3d4d72a7cfb04cd1ad1feda5767296c111 days 17 hrs ago0x9083b81de64ef9a854d828d07054618aca6080b1  IN   0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0.005 Ether0.0002081792
0xb26ccddb8473b911fd0cb64a2d868be462f81f5e0bdcf03237932e96bb0c6ed6112 days 9 hrs ago0x9083b81de64ef9a854d828d07054618aca6080b1  IN   0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0.005 Ether0.001136946
0x86012ad651cd9b19993178d76b886d6e97fc346d31a0fa1eebfeec82da80c828118 days 19 hrs ago0x6c6483d256e44dac02d1a8b4781cb2c858f896e3  IN   0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0.005 Ether0.000164352
0xf05feca362f7b41021dcfeb67c4bc301f4572f4553412f65af8417b0504c68a1119 days 18 hrs ago0x7ae9a972e18e7cc271e0633e0da3eab2a0ff8e3d  IN   0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0.005 Ether0.002273892
0x6964fa8fa347106ed94e1cae43980d17aad3ed4fd43103b1d825822637046974125 days 16 hrs ago0x87ba9b4ca9f1da8a17657c9522d1c43dd10c7f3c  IN   0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0.005 Ether0.000438272
0x6399113ef73b6827205bc9883a35900e5dcd25b60d73dfffadfeea29107c5a9d125 days 16 hrs ago0x87ba9b4ca9f1da8a17657c9522d1c43dd10c7f3c  IN   0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0 Ether0.0002691172
0x6e50215aa396064b60e95f9273b6e9471b59e57f36a3d41288e93fb2e958d959126 days 9 hrs ago0x6c6483d256e44dac02d1a8b4781cb2c858f896e3  IN   0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0.005 Ether0.001515928
0x0f5cc62fd03140c04e26bd6718b983e5d2a3159ad2f9ad61aa173cc94c7e5dfa126 days 9 hrs ago0x6c6483d256e44dac02d1a8b4781cb2c858f896e3  IN   0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0.005 Ether0.001287
0x5710e4bdd106a647683ea8bbdab27e836386c427eff35ef5d7ecf95bf0b37a2e129 days 21 hrs ago0x87ba9b4ca9f1da8a17657c9522d1c43dd10c7f3c  IN   0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0.005 Ether0.004731766
0x359f0e1d00df5a24ac88550b9e37869cc7e5db7ebc8c3cfbcf47192fd2d941bd130 days 4 hrs ago0x6c6483d256e44dac02d1a8b4781cb2c858f896e3  IN   0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0.005 Ether0.00507
0x8ae42232b412f5cdea3841a762846ae94b486c80ac84a0a9b1341ea147172cdb130 days 14 hrs ago0x6c6483d256e44dac02d1a8b4781cb2c858f896e3  IN   0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0 Ether0.0023676
0x314b08bafb413f6e6fd33234b164cda66ff9bd1a0eff499ad5d79dc2f1d74df3131 days 15 hrs ago0x6af1d08b131ca5987543dc05fbee67f9e46e5a25  IN   0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0.005 Ether0.00222436
0x952dbeeb5b2417085630dcff643079e35d269660a426fcd5c548b95b297ea140131 days 15 hrs ago0x6af1d08b131ca5987543dc05fbee67f9e46e5a25  IN   0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0 Ether0.001157432
0xd8dfc23a09b7729f3b33e6fccdb9eab0ff82caab8d472097a9a524d3bdc68b9d131 days 15 hrs ago0x6af1d08b131ca5987543dc05fbee67f9e46e5a25  IN   0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0.005 Ether0.000235656
0x7dc97eab4f04c3b0cb30163dddaea22dd72c27eacb377201461ffc63dab9b8b5131 days 15 hrs ago0x6af1d08b131ca5987543dc05fbee67f9e46e5a25  IN   0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0 Ether0.000419264
0x3dec9e75e36d2bafef5901b6fe1d2aad96806313769a12541107524d9a1cbae0134 days 19 hrs ago0x6c6483d256e44dac02d1a8b4781cb2c858f896e3  IN   0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0.005 Ether0.000071259
0x692b20dda672b504ae486085f56f65a9f3631ee153cc5594af0c5360d5c69178135 days 19 hrs ago0x6c6483d256e44dac02d1a8b4781cb2c858f896e3  IN   0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0.005 Ether0.0001935712
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 21 Internal Transactions

ParentTxHash Block Age From To Value
0xc734fbf10b5aef361819856c2100612b6ab1a2a127138543c051cacfec5c94b0630527097 days 12 hrs ago0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0xb04b473418b6f09e5a1f809ae2d01f14211e03ff0.5649748125 Ether
0xd4e70fa6fd61dfeb9035f2913c7a34f1bedd0e7fbc1b70671abf72d1d58fb8136266998103 days 22 hrs ago0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0x9083b81de64ef9a854d828d07054618aca6080b10.00854271303390625 Ether
0x3e42aaa633e84d5f3cf9f7ee12ba84f6e6601f5484534a711098dc26121a48356239055108 days 16 hrs ago0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0x6c6483d256e44dac02d1a8b4781cb2c858f896e30.00854260678125 Ether
0x6399113ef73b6827205bc9883a35900e5dcd25b60d73dfffadfeea29107c5a9d6138241125 days 16 hrs ago0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0x87ba9b4ca9f1da8a17657c9522d1c43dd10c7f3c0.00427125 Ether
0x8ae42232b412f5cdea3841a762846ae94b486c80ac84a0a9b1341ea147172cdb6109128130 days 14 hrs ago0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0x6c6483d256e44dac02d1a8b4781cb2c858f896e30.0425 Ether
0x63c0520712d5ee936b1c34dc5c9c6ba40c64fb63182b742476560e7cbf9968506054312139 days 21 hrs ago0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0x6af1d08b131ca5987543dc05fbee67f9e46e5a250.06314424375 Ether
0x1fe122f0b588a26e91635ec2936cdb169db8c669411029942ce463b24a5643d76044003141 days 14 hrs ago0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0x6af1d08b131ca5987543dc05fbee67f9e46e5a250.00334838125 Ether
0x6328052eec324bd64c738def19a100fec8e32df316ac81ab76aa0a86ca60d5066008378147 days 15 hrs ago0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0x6af1d08b131ca5987543dc05fbee67f9e46e5a250.001490763225197165 Ether
0x1b2ead0f39f20891d272724c5149273650ffa60308e84311369316e723bb89816004482148 days 7 hrs ago0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0x87ba9b4ca9f1da8a17657c9522d1c43dd10c7f3c0.12499770027634622 Ether
0x423a2e04b2e4fa52e12f431efc284b25bc7a7d1309ea79d7559755935b8db66b6004472148 days 7 hrs ago0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0x5adf43dd006c6c36506e2b2dfa352e60002d22dc0.0184509520420642 Ether
0xad35dd1f26c1bde2b7a1c0c252b40ee051b3281d8f1759a2ee98e217d88d241c6004459148 days 7 hrs ago0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0x6af1d08b131ca5987543dc05fbee67f9e46e5a250.013235050617495482 Ether
0x2a40a7232ec29a405f96d31e40d84f9712e1bb713d97d87855742bb335cff5265996631149 days 15 hrs ago0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0xbbc3feb3dab16dc5b206e3a0deeb9b21c05030580.178266644132012282 Ether
0xbd2b7f83fbbdb093faca42ef1e7dae4eda0b8b457b4e29df70892c7505f2b6515995346149 days 20 hrs ago0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0x6af1d08b131ca5987543dc05fbee67f9e46e5a250.019976663058220078 Ether
0x0fb201acfdd27aa954d376d54080888530dea72f425bf523765aba8041712e145995301149 days 20 hrs ago0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0x87ba9b4ca9f1da8a17657c9522d1c43dd10c7f3c0.008684666441320123 Ether
0xf63a8444f28b44a8bb8fd3ec974b627891e776acd3865c7387feb75f8586008d5990811150 days 15 hrs ago0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0xb2ae7fc6c617d65525008ed2161adb5264c6fb910.001738654127809437 Ether
0x4ad66db041a3bd29e19917654385e4604d1346e94c90bca4835270bb939809d85989241150 days 21 hrs ago0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0x5adf43dd006c6c36506e2b2dfa352e60002d22dc0.019992395973199505 Ether
0x642c27df31f2bde03b5cf01a5ac5dd1ea1c6c3e8f0aa8d591cbba69b2953d7f15989228150 days 21 hrs ago0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0x6af1d08b131ca5987543dc05fbee67f9e46e5a250.035986312751759108 Ether
0x3991398b05592ccb29c66cceba7f2385467c28965bae9c94f1253f9e2333c4575989099150 days 22 hrs ago0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0x4eb443b7659cf6297bc1f1a891ebd26ebc848f030.001717386541278094 Ether
0xecb950f90eeb0b8b4c48a6424ff34fee24d6f39e09d14825890caad26e973c5e5988586151 days 26 mins ago0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0xb2ae7fc6c617d65525008ed2161adb5264c6fb910.003865412780943604 Ether
0x8147b1550dd3416be590ec361121d2f726fc7875ef10a358293058fd9262c1b05987401151 days 5 hrs ago0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0xca3edfe8acbac8ddd4c7147a33f81a2b0f4ed1c70.216541278094360446 Ether
0xfb2d1326a6718b17732773ddd6200e332768499f0755b481f2699b22df65e4b85983485151 days 21 hrs ago0x2b0ec0993a00b2ea625e3b37fcc74742f43a72fe0x6c6483d256e44dac02d1a8b4781cb2c858f896e30.116008 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), EventStructWrongData (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: TheButton
Compiler Text: v0.4.24+commit.e67f0147
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity^0.4.24;


contract DSAuthority {
    function canCall(
        address src, address dst, bytes4 sig
    ) public view returns (bool); 
}

contract DSAuthEvents {
    event LogSetAuthority (address indexed authority);
    event LogSetOwner     (address indexed owner);
}

contract DSAuth is DSAuthEvents {
    DSAuthority  public  authority;
    address      public  owner;

    function DSAuth() public {
        owner = msg.sender;
        emit LogSetOwner(msg.sender);
    }

    function setOwner(address owner_)
        public
        auth
    {
        owner = owner_;
        emit LogSetOwner(owner);
    }

    function setAuthority(DSAuthority authority_)
        public
        auth
    {
        authority = authority_;
        emit LogSetAuthority(authority);
    }

    modifier auth {
        require(isAuthorized(msg.sender, msg.sig));
        _;
    }

    function isAuthorized(address src, bytes4 sig) internal view returns (bool) {
        if (src == address(this)) {
            return true;
        } else if (src == owner) {
            return true;
        } else if (authority == DSAuthority(0)) {
            return false;
        } else {
            return authority.canCall(src, this, sig);
        }
    }
}

library DSMath {
    function add(uint x, uint y) internal pure returns (uint z) {
        require((z = x + y) >= x);
    }
    function sub(uint x, uint y) internal pure returns (uint z) {
        require((z = x - y) <= x);
    }
    function mul(uint x, uint y) internal pure returns (uint z) {
        require(y == 0 || (z = x * y) / y == x);
    }

    function min(uint x, uint y) internal pure returns (uint z) {
        return x <= y ? x : y;
    }
    function max(uint x, uint y) internal pure returns (uint z) {
        return x >= y ? x : y;
    }
    function imin(int x, int y) internal pure returns (int z) {
        return x <= y ? x : y;
    }
    function imax(int x, int y) internal pure returns (int z) {
        return x >= y ? x : y;
    }

    uint constant WAD = 10 ** 18;
    uint constant RAY = 10 ** 27;

    function wmul(uint x, uint y) internal pure returns (uint z) {
        z = add(mul(x, y), WAD / 2) / WAD;
    }
    function rmul(uint x, uint y) internal pure returns (uint z) {
        z = add(mul(x, y), RAY / 2) / RAY;
    }
    function wdiv(uint x, uint y) internal pure returns (uint z) {
        z = add(mul(x, WAD), y / 2) / y;
    }
    function rdiv(uint x, uint y) internal pure returns (uint z) {
        z = add(mul(x, RAY), y / 2) / y;
    }

    // This famous algorithm is called "exponentiation by squaring"
    // and calculates x^n with x as fixed-point and n as regular unsigned.
    //
    // It's O(log n), instead of O(n) for naive repeated multiplication.
    //
    // These facts are why it works:
    //
    //  If n is even, then x^n = (x^2)^(n/2).
    //  If n is odd,  then x^n = x * x^(n-1),
    //   and applying the equation for even x gives
    //    x^n = x * (x^2)^((n-1) / 2).
    //
    //  Also, EVM division is flooring and
    //    floor[(n-1) / 2] = floor[n / 2].
    //
    function rpow(uint x, uint n) internal pure returns (uint z) {
        z = n % 2 != 0 ? x : RAY;

        for (n /= 2; n != 0; n /= 2) {
            x = rmul(x, x);

            if (n % 2 != 0) {
                z = rmul(z, x);
            }
        }
    }
}

interface ERC20 {
    function balanceOf(address src) external view returns (uint);
    function totalSupply() external view returns (uint);
    function allowance(address tokenOwner, address spender) external constant returns (uint remaining);
    function transfer(address to, uint tokens) external returns (bool success);
    function approve(address spender, uint tokens) external returns (bool success);
    function transferFrom(address from, address to, uint tokens) external returns (bool success);
}

contract Accounting {

    using DSMath for uint;

    bool internal _in;
    
    modifier noReentrance() {
        require(!_in);
        _in = true;
        _;
        _in = false;
    }
    
    //keeping track of total ETH and token balances
    uint public totalETH;
    mapping (address => uint) public totalTokenBalances;

    struct Account {
        bytes32 name;
        uint balanceETH;
        mapping (address => uint) tokenBalances;
    }

    Account base = Account({
        name: "Base",
        balanceETH: 0       
    });

    event ETHDeposited(bytes32 indexed account, address indexed from, uint value);
    event ETHSent(bytes32 indexed account, address indexed to, uint value);
    event ETHTransferred(bytes32 indexed fromAccount, bytes32 indexed toAccount, uint value);
    event TokenTransferred(bytes32 indexed fromAccount, bytes32 indexed toAccount, address indexed token, uint value);
    event TokenDeposited(bytes32 indexed account, address indexed token, address indexed from, uint value);    
    event TokenSent(bytes32 indexed account, address indexed token, address indexed to, uint value);

    function baseETHBalance() public constant returns(uint) {
        return base.balanceETH;
    }

    function baseTokenBalance(address token) public constant returns(uint) {
        return base.tokenBalances[token];
    }

    function depositETH(Account storage a, address _from, uint _value) internal {
        a.balanceETH = a.balanceETH.add(_value);
        totalETH = totalETH.add(_value);
        emit ETHDeposited(a.name, _from, _value);
    }

    function depositToken(Account storage a, address _token, address _from, uint _value) 
    internal noReentrance 
    {        
        require(ERC20(_token).transferFrom(_from, address(this), _value));
        totalTokenBalances[_token] = totalTokenBalances[_token].add(_value);
        a.tokenBalances[_token] = a.tokenBalances[_token].add(_value);
        emit TokenDeposited(a.name, _token, _from, _value);
    }

    function sendETH(Account storage a, address _to, uint _value) 
    internal noReentrance 
    {
        require(a.balanceETH >= _value);
        require(_to != address(0));
        
        a.balanceETH = a.balanceETH.sub(_value);
        totalETH = totalETH.sub(_value);

        _to.transfer(_value);
        
        emit ETHSent(a.name, _to, _value);
    }

    function transact(Account storage a, address _to, uint _value, bytes data) 
    internal noReentrance 
    {
        require(a.balanceETH >= _value);
        require(_to != address(0));
        
        a.balanceETH = a.balanceETH.sub(_value);
        totalETH = totalETH.sub(_value);

        require(_to.call.value(_value)(data));
        
        emit ETHSent(a.name, _to, _value);
    }

    function sendToken(Account storage a, address _token, address _to, uint _value) 
    internal noReentrance 
    {
        require(a.tokenBalances[_token] >= _value);
        require(_to != address(0));
        
        a.tokenBalances[_token] = a.tokenBalances[_token].sub(_value);
        totalTokenBalances[_token] = totalTokenBalances[_token].sub(_value);

        require(ERC20(_token).transfer(_to, _value));
        emit TokenSent(a.name, _token, _to, _value);
    }

    function transferETH(Account storage _from, Account storage _to, uint _value) 
    internal 
    {
        require(_from.balanceETH >= _value);
        _from.balanceETH = _from.balanceETH.sub(_value);
        _to.balanceETH = _to.balanceETH.add(_value);
        emit ETHTransferred(_from.name, _to.name, _value);
    }

    function transferToken(Account storage _from, Account storage _to, address _token, uint _value)
    internal
    {
        require(_from.tokenBalances[_token] >= _value);
        _from.tokenBalances[_token] = _from.tokenBalances[_token].sub(_value);
        _to.tokenBalances[_token] = _to.tokenBalances[_token].add(_value);
        emit TokenTransferred(_from.name, _to.name, _token, _value);
    }

    function balanceETH(Account storage toAccount,  uint _value) internal {
        require(address(this).balance >= totalETH.add(_value));
        depositETH(toAccount, address(this), _value);
    }

    function balanceToken(Account storage toAccount, address _token, uint _value) internal noReentrance {
        uint balance = ERC20(_token).balanceOf(this);
        require(balance >= totalTokenBalances[_token].add(_value));

        toAccount.tokenBalances[_token] = toAccount.tokenBalances[_token].add(_value);
        emit TokenDeposited(toAccount.name, _token, address(this), _value);
    }
    
}


///Base contract with all the events, getters, and simple logic
contract ButtonBase is DSAuth, Accounting {
    ///Using a the original DSMath as a library
    using DSMath for uint;

    uint constant ONE_PERCENT_WAD = 10 ** 16;// 1 wad is 10^18, so 1% in wad is 10^16
    uint constant ONE_WAD = 10 ** 18;

    uint public totalRevenue;
    uint public totalCharity;
    uint public totalWon;

    uint public totalPresses;

    ///Button parameters - note that these can change
    uint public startingPrice = 2 finney;
    uint internal _priceMultiplier = 106 * 10 **16;
    uint32 internal _n = 4; //increase the price after every n presses
    uint32 internal _period = 30 minutes;// what's the period for pressing the button
    uint internal _newCampaignFraction = ONE_PERCENT_WAD; //1%
    uint internal _devFraction = 10 * ONE_PERCENT_WAD - _newCampaignFraction; //9%
    uint internal _charityFraction = 5 * ONE_PERCENT_WAD; //5%
    uint internal _jackpotFraction = 85 * ONE_PERCENT_WAD; //85%
    
    address public charityBeneficiary;

    ///Internal accounts to hold value:
    Account revenue = 
    Account({
        name: "Revenue",
        balanceETH: 0
    });

    Account nextCampaign = 
    Account({
        name: "Next Campaign",
        balanceETH: 0       
    });

    Account charity = 
    Account({
        name: "Charity",
        balanceETH: 0
    });

    ///Accounts of winners
    mapping (address => Account) winners;

    /// Function modifier to put limits on how values can be set
    modifier limited(uint value, uint min, uint max) {
        require(value >= min && value <= max);
        _;
    }

    /// A function modifier which limits how often a function can be executed
    mapping (bytes4 => uint) internal _lastExecuted;
    modifier timeLimited(uint _howOften) {
        require(_lastExecuted[msg.sig].add(_howOften) <= now);
        _lastExecuted[msg.sig] = now;
        _;
    }

    ///Button events
    event Pressed(address by, uint paid, uint64 timeLeft);
    event Started(uint startingETH, uint32 period, uint i);
    event Winrar(address guy, uint jackpot);
    ///Settings changed events
    event CharityChanged(address newCharityBeneficiary);
    event ButtonParamsChanged(uint startingPrice, uint32 n, uint32 period, uint priceMul);
    event AccountingParamsChanged(uint devFraction, uint charityFraction, uint jackpotFraction);

    ///Struct that represents a button champaign
    struct ButtonCampaign {
        uint price; ///Every campaign starts with some price  
        uint priceMultiplier;/// Price will be increased by this much every n presses
        uint devFraction; /// this much will go to the devs (10^16 = 1%)
        uint charityFraction;/// This much will go to charity
        uint jackpotFraction;/// This much will go to the winner (last presser)
        uint newCampaignFraction;/// This much will go to the next campaign starting balance

        address lastPresser;
        uint64 deadline;
        uint40 presses;
        uint32 n;
        uint32 period;
        bool finalized;

        Account total;/// base account to hold all the value until the campaign is finalized 
    }

    uint public lastCampaignID;
    ButtonCampaign[] campaigns;

    /// implemented in the child contract
    function press() public payable;
    
    function () public payable {
        press();
    }

    ///Getters:

    ///Check if there's an active campaign
    function active() public view returns(bool) {
        if(campaigns.length == 0) { 
            return false;
        } else {
            return campaigns[lastCampaignID].deadline >= now;
        }
    }

    ///Get information about the latest campaign or the next campaign if the last campaign has ended, but no new one has started
    function latestData() external view returns(
        uint price, uint jackpot, uint char, uint64 deadline, uint presses, address lastPresser
        ) {
        price = this.price();
        jackpot = this.jackpot();
        char = this.charityBalance();
        deadline = this.deadline();
        presses = this.presses();
        lastPresser = this.lastPresser();
    }

    ///Get the latest parameters
    function latestParams() external view returns(
        uint jackF, uint revF, uint charF, uint priceMul, uint nParam
    ) {
        jackF = this.jackpotFraction();
        revF = this.revenueFraction();
        charF = this.charityFraction();
        priceMul = this.priceMultiplier();
        nParam = this.n();
    }

    ///Get the last winner address
    function lastWinner() external view returns(address) {
        if(campaigns.length == 0) {
            return address(0x0);
        } else {
            if(active()) {
                return this.winner(lastCampaignID - 1);
            } else {
                return this.winner(lastCampaignID);
            }
        }
    }

    ///Get the total stats (cumulative for all campaigns)
    function totalsData() external view returns(uint _totalWon, uint _totalCharity, uint _totalPresses) {
        _totalWon = this.totalWon();
        _totalCharity = this.totalCharity();
        _totalPresses = this.totalPresses();
    }
   
   /// The latest price for pressing the button
    function price() external view returns(uint) {
        if(active()) {
            return campaigns[lastCampaignID].price;
        } else {
            return startingPrice;
        }
    }

    /// The latest jackpot fraction - note the fractions can be changed, but they don't affect any currently running campaign
    function jackpotFraction() public view returns(uint) {
        if(active()) {
            return campaigns[lastCampaignID].jackpotFraction;
        } else {
            return _jackpotFraction;
        }
    }

    /// The latest revenue fraction
    function revenueFraction() public view returns(uint) {
        if(active()) {
            return campaigns[lastCampaignID].devFraction;
        } else {
            return _devFraction;
        }
    }

    /// The latest charity fraction
    function charityFraction() public view returns(uint) {
        if(active()) {
            return campaigns[lastCampaignID].charityFraction;
        } else {
            return _charityFraction;
        }
    }

    /// The latest price multiplier
    function priceMultiplier() public view returns(uint) {
        if(active()) {
            return campaigns[lastCampaignID].priceMultiplier;
        } else {
            return _priceMultiplier;
        }
    }

    /// The latest preiod
    function period() public view returns(uint) {
        if(active()) {
            return campaigns[lastCampaignID].period;
        } else {
            return _period;
        }
    }

    /// The latest N - the price will increase every Nth presses
    function n() public view returns(uint) {
        if(active()) {
            return campaigns[lastCampaignID].n;
        } else {
            return _n;
        }
    }

    /// How much time is left in seconds if there's a running campaign
    function timeLeft() external view returns(uint) {
        if (active()) {
            return campaigns[lastCampaignID].deadline - now;
        } else {
            return 0;
        }
    }

    /// What is the latest campaign's deadline
    function deadline() external view returns(uint64) {
        return campaigns[lastCampaignID].deadline;
    }

    /// The number of presses for the current campaign
    function presses() external view returns(uint) {
        if(active()) {
            return campaigns[lastCampaignID].presses;
        } else {
            return 0;
        }
    }

    /// Last presser
    function lastPresser() external view returns(address) {
        return campaigns[lastCampaignID].lastPresser;
    }

    /// Returns the winner for any given campaign ID
    function winner(uint campaignID) external view returns(address) {
        return campaigns[campaignID].lastPresser;
    }

    /// The current (or next) campaign's jackpot
    function jackpot() external view returns(uint) {
        if(active()){
            return campaigns[lastCampaignID].total.balanceETH.wmul(campaigns[lastCampaignID].jackpotFraction);
        } else {
            if(!campaigns[lastCampaignID].finalized) {
                return campaigns[lastCampaignID].total.balanceETH.wmul(campaigns[lastCampaignID].jackpotFraction)
                    .wmul(campaigns[lastCampaignID].newCampaignFraction);
            } else {
                return nextCampaign.balanceETH.wmul(_jackpotFraction);
            }
        }
    }

    /// Current/next campaign charity balance
    function charityBalance() external view returns(uint) {
        if(active()){
            return campaigns[lastCampaignID].total.balanceETH.wmul(campaigns[lastCampaignID].charityFraction);
        } else {
            if(!campaigns[lastCampaignID].finalized) {
                return campaigns[lastCampaignID].total.balanceETH.wmul(campaigns[lastCampaignID].charityFraction)
                    .wmul(campaigns[lastCampaignID].newCampaignFraction);
            } else {
                return nextCampaign.balanceETH.wmul(_charityFraction);
            }
        }
    }

    /// Revenue account current balance
    function revenueBalance() external view returns(uint) {
        return revenue.balanceETH;
    }

    /// The starting balance of the next campaign
    function nextCampaignBalance() external view returns(uint) {        
        if(!campaigns[lastCampaignID].finalized) {
            return campaigns[lastCampaignID].total.balanceETH.wmul(campaigns[lastCampaignID].newCampaignFraction);
        } else {
            return nextCampaign.balanceETH;
        }
    }

    /// Total cumulative presses for all campaigns
    function totalPresses() external view returns(uint) {
        if (!campaigns[lastCampaignID].finalized) {
            return totalPresses.add(campaigns[lastCampaignID].presses);
        } else {
            return totalPresses;
        }
    }

    /// Total cumulative charity for all campaigns
    function totalCharity() external view returns(uint) {
        if (!campaigns[lastCampaignID].finalized) {
            return totalCharity.add(campaigns[lastCampaignID].total.balanceETH.wmul(campaigns[lastCampaignID].charityFraction));
        } else {
            return totalCharity;
        }
    }

    /// Total cumulative revenue for all campaigns
    function totalRevenue() external view returns(uint) {
        if (!campaigns[lastCampaignID].finalized) {
            return totalRevenue.add(campaigns[lastCampaignID].total.balanceETH.wmul(campaigns[lastCampaignID].devFraction));
        } else {
            return totalRevenue;
        }
    }

    /// Returns the balance of any winner
    function hasWon(address _guy) external view returns(uint) {
        return winners[_guy].balanceETH;
    }

    /// Functions for handling value

    /// Withdrawal function for winners
    function withdrawJackpot() public {
        require(winners[msg.sender].balanceETH > 0, "Nothing to withdraw!");
        sendETH(winners[msg.sender], msg.sender, winners[msg.sender].balanceETH);
    }

    /// Any winner can chose to donate their jackpot
    function donateJackpot() public {
        require(winners[msg.sender].balanceETH > 0, "Nothing to donate!");
        transferETH(winners[msg.sender], charity, winners[msg.sender].balanceETH);
    }

    /// Dev revenue withdrawal function
    function withdrawRevenue() public auth {
        sendETH(revenue, owner, revenue.balanceETH);
    }

    /// Dev charity transfer function - sends all of the charity balance to the pre-set charity address
    /// Note that there's nothing stopping the devs to wait and set the charity beneficiary to their own address
    /// and drain the charity balance for themselves. We would not do that as it would not make sense and it would
    /// damage our reputation, but this is the only "weak" spot of the contract where it requires trust in the devs
    function sendCharityETH(bytes callData) public auth {
        // donation receiver might be a contract, so transact instead of a simple send
        transact(charity, charityBeneficiary, charity.balanceETH, callData);
    }

    /// This allows the owner to withdraw surplus ETH
    function redeemSurplusETH() public auth {
        uint surplus = address(this).balance.sub(totalETH);
        balanceETH(base, surplus);
        sendETH(base, msg.sender, base.balanceETH);
    }

    /// This allows the owner to withdraw surplus Tokens
    function redeemSurplusERC20(address token) public auth {
        uint realTokenBalance = ERC20(token).balanceOf(this);
        uint surplus = realTokenBalance.sub(totalTokenBalances[token]);
        balanceToken(base, token, surplus);
        sendToken(base, token, msg.sender, base.tokenBalances[token]);
    }

    /// withdraw surplus ETH
    function withdrawBaseETH() public auth {
        sendETH(base, msg.sender, base.balanceETH);
    }

    /// withdraw surplus tokens
    function withdrawBaseERC20(address token) public auth {
        sendToken(base, token, msg.sender, base.tokenBalances[token]);
    }

    ///Setters

    /// Set button parameters
    function setButtonParams(uint startingPrice_, uint priceMul_, uint32 period_, uint32 n_) public 
    auth
    limited(startingPrice_, 1 szabo, 10 ether) ///Parameters are limited
    limited(priceMul_, ONE_WAD, 10 * ONE_WAD) // 100% to 10000% (1x to 10x)
    limited(period_, 30 seconds, 1 weeks)
    {
        startingPrice = startingPrice_;
        _priceMultiplier = priceMul_;
        _period = period_;
        _n = n_;
        emit ButtonParamsChanged(startingPrice_, n_, period_, priceMul_);
    }

    /// Fractions must add up to 100%, and can only be set every 2 weeks
    function setAccountingParams(uint _devF, uint _charityF, uint _newCampF) public 
    auth
    limited(_devF.add(_charityF).add(_newCampF), 0, ONE_WAD) // up to 100% - charity fraction could be set to 100% for special occasions
    timeLimited(2 weeks) { // can only be changed once every 4 weeks
        require(_charityF <= ONE_WAD); // charity fraction can be up to 100%
        require(_devF <= 20 * ONE_PERCENT_WAD); //can't set the dev fraction to more than 20%
        require(_newCampF <= 10 * ONE_PERCENT_WAD);//less than 10%
        _devFraction = _devF;
        _charityFraction = _charityF;
        _newCampaignFraction = _newCampF;
        _jackpotFraction = ONE_WAD.sub(_devF).sub(_charityF).sub(_newCampF);
        emit AccountingParamsChanged(_devF, _charityF, _jackpotFraction);
    }

    ///Charity beneficiary can only be changed every 13 weeks
    function setCharityBeneficiary(address _charity) public 
    auth
    timeLimited(13 weeks) 
    {   
        require(_charity != address(0));
        charityBeneficiary = _charity;
        emit CharityChanged(_charity);
    }

}

/// Main contract with key logic
contract TheButton is ButtonBase {
    
    using DSMath for uint;

    ///If the contract is stopped no new campaigns can be started, but any running campaing is not affected
    bool public stopped;

    constructor() public {
        stopped = true;
    }

    /// Press logic
    function press() public payable {
        //the last campaign
        ButtonCampaign storage c = campaigns[lastCampaignID];
        if (active()) {// if active
            _press(c);//register press
            depositETH(c.total, msg.sender, msg.value);// handle ETH
        } else { //if inactive (after deadline)
            require(!stopped, "Contract stopped!");//make sure we're not stopped
            if(!c.finalized) {//if not finalized
                _finalizeCampaign(c);// finalize last campaign
            } 
            _newCampaign();// start new campaign
            c = campaigns[lastCampaignID];
                    
            _press(c);//resigter press
            depositETH(c.total, msg.sender, msg.value);//handle ETH
        } 
    }

    function start() external payable auth {
        require(stopped, "Already started!");
        stopped = false;
        
        if(campaigns.length != 0) {//if there was a past campaign
            ButtonCampaign storage c = campaigns[lastCampaignID];
            require(c.finalized, "Last campaign not finalized!");//make sure it was finalized
        }             
        _newCampaign();//start new campaign
        c = campaigns[lastCampaignID];
        _press(c);
        depositETH(c.total, msg.sender, msg.value);// deposit ETH        
    }

    ///Stopping will only affect new campaigns, not already running ones
    function stop() external auth {
        require(!stopped, "Already stopped!");
        stopped = true;
    }
    
    /// Anyone can finalize campaigns in case the devs stop the contract
    function finalizeLastCampaign() external {
        require(stopped);
        ButtonCampaign storage c = campaigns[lastCampaignID];
        _finalizeCampaign(c);
    }

    function finalizeCampaign(uint id) external {
        require(stopped);
        ButtonCampaign storage c = campaigns[id];
        _finalizeCampaign(c);
    }

    //Press logic
    function _press(ButtonCampaign storage c) internal {
        require(c.deadline >= now, "After deadline!");//must be before the deadline
        require(msg.value >= c.price, "Not enough value!");// must have at least the price value
        c.presses += 1;//no need for safe math, as it is not a critical calculation
        c.lastPresser = msg.sender;
             
        if(c.presses % c.n == 0) {// increase the price every n presses
            c.price = c.price.wmul(c.priceMultiplier);
        }           

        emit Pressed(msg.sender, msg.value, c.deadline - uint64(now));
        c.deadline = uint64(now.add(c.period)); // set the new deadline
    }

    /// starting a new campaign
    function _newCampaign() internal {
        require(!active(), "A campaign is already running!");
        require(_devFraction.add(_charityFraction).add(_jackpotFraction).add(_newCampaignFraction) == ONE_WAD, "Accounting is incorrect!");
        
        uint _campaignID = campaigns.length++;
        ButtonCampaign storage c = campaigns[_campaignID];
        lastCampaignID = _campaignID;

        c.price = startingPrice;
        c.priceMultiplier = _priceMultiplier;
        c.devFraction = _devFraction;
        c.charityFraction = _charityFraction;
        c.jackpotFraction = _jackpotFraction;
        c.newCampaignFraction = _newCampaignFraction;
        c.deadline = uint64(now.add(_period));
        c.n = _n;
        c.period = _period;
        c.total.name = keccak256(abi.encodePacked("Total", lastCampaignID));//setting the name of the campaign's accaount     
        transferETH(nextCampaign, c.total, nextCampaign.balanceETH);
        emit Started(c.total.balanceETH, _period, lastCampaignID); 
    }

    /// Finalize campaign logic
    function _finalizeCampaign(ButtonCampaign storage c) internal {
        require(c.deadline < now, "Before deadline!");
        require(!c.finalized, "Already finalized!");
        
        if(c.presses != 0) {//If there were presses
            uint totalBalance = c.total.balanceETH;
            //Handle all of the accounting            
            transferETH(c.total, winners[c.lastPresser], totalBalance.wmul(c.jackpotFraction));
            winners[c.lastPresser].name = bytes32(c.lastPresser);
            totalWon = totalWon.add(totalBalance.wmul(c.jackpotFraction));

            transferETH(c.total, revenue, totalBalance.wmul(c.devFraction));
            totalRevenue = totalRevenue.add(totalBalance.wmul(c.devFraction));

            transferETH(c.total, charity, totalBalance.wmul(c.charityFraction));
            totalCharity = totalCharity.add(totalBalance.wmul(c.charityFraction));

            //avoiding rounding errors - just transfer the leftover
            // transferETH(c.total, nextCampaign, c.total.balanceETH);

            totalPresses = totalPresses.add(c.presses);

            emit Winrar(c.lastPresser, totalBalance.wmul(c.jackpotFraction));
        } 
        // if there will be no next campaign
        if(stopped) {
            //transfer leftover to devs' base account
            transferETH(c.total, base, c.total.balanceETH);
        } else {
            //otherwise transfer to next campaign
            transferETH(c.total, nextCampaign, c.total.balanceETH);
        }
        c.finalized = true;
    }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"active","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"stop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"nextCampaignBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"timeLeft","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"revenueFraction","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"owner_","type":"address"}],"name":"setOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"latestData","outputs":[{"name":"price","type":"uint256"},{"name":"jackpot","type":"uint256"},{"name":"char","type":"uint256"},{"name":"deadline","type":"uint64"},{"name":"presses","type":"uint256"},{"name":"lastPresser","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"latestParams","outputs":[{"name":"jackF","type":"uint256"},{"name":"revF","type":"uint256"},{"name":"charF","type":"uint256"},{"name":"priceMul","type":"uint256"},{"name":"nParam","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"campaignID","type":"uint256"}],"name":"winner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalPresses","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"deadline","outputs":[{"name":"","type":"uint64"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"n","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"donateJackpot","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawRevenue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"press","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_charity","type":"address"}],"name":"setCharityBeneficiary","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"presses","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"jackpot","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"id","type":"uint256"}],"name":"finalizeCampaign","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stopped","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"jackpotFraction","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"charityBeneficiary","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"authority_","type":"address"}],"name":"setAuthority","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"redeemSurplusERC20","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"charityBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"redeemSurplusETH","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"price","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"totalTokenBalances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_guy","type":"address"}],"name":"hasWon","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"revenueBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"startingPrice_","type":"uint256"},{"name":"priceMul_","type":"uint256"},{"name":"period_","type":"uint32"},{"name":"n_","type":"uint32"}],"name":"setButtonParams","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"}],"name":"withdrawBaseERC20","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalWon","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"token","type":"address"}],"name":"baseTokenBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"start","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"totalRevenue","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"authority","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawJackpot","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"baseETHBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"priceMultiplier","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalCharity","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startingPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawBaseETH","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_devF","type":"uint256"},{"name":"_charityF","type":"uint256"},{"name":"_newCampF","type":"uint256"}],"name":"setAccountingParams","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lastCampaignID","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastPresser","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalizeLastCampaign","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"period","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"charityFraction","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"callData","type":"bytes"}],"name":"sendCharityETH","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalsData","outputs":[{"name":"_totalWon","type":"uint256"},{"name":"_totalCharity","type":"uint256"},{"name":"_totalPresses","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastWinner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"by","type":"address"},{"indexed":false,"name":"paid","type":"uint256"},{"indexed":false,"name":"timeLeft","type":"uint64"}],"name":"Pressed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"startingETH","type":"uint256"},{"indexed":false,"name":"period","type":"uint32"},{"indexed":false,"name":"i","type":"uint256"}],"name":"Started","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"guy","type":"address"},{"indexed":false,"name":"jackpot","type":"uint256"}],"name":"Winrar","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newCharityBeneficiary","type":"address"}],"name":"CharityChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"startingPrice","type":"uint256"},{"indexed":false,"name":"n","type":"uint32"},{"indexed":false,"name":"period","type":"uint32"},{"indexed":false,"name":"priceMul","type":"uint256"}],"name":"ButtonParamsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"devFraction","type":"uint256"},{"indexed":false,"name":"charityFraction","type":"uint256"},{"indexed":false,"name":"jackpotFraction","type":"uint256"}],"name":"AccountingParamsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"bytes32"},{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"ETHDeposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"bytes32"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"ETHSent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"fromAccount","type":"bytes32"},{"indexed":true,"name":"toAccount","type":"bytes32"},{"indexed":false,"name":"value","type":"uint256"}],"name":"ETHTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"fromAccount","type":"bytes32"},{"indexed":true,"name":"toAccount","type":"bytes32"},{"indexed":true,"name":"token","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"TokenTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"bytes32"},{"indexed":true,"name":"token","type":"address"},{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"TokenDeposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"account","type":"bytes32"},{"indexed":true,"name":"token","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"TokenSent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"authority","type":"address"}],"name":"LogSetAuthority","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"}],"name":"LogSetOwner","type":"event"}]

  Contract Creation Code Switch To Opcodes View
7f42617365000000000000000000000000000000000000000000000000000000006080819052600060a08190526004918255600581905566071afd498d0000600b55670eb5e06245ea0000600c55600d805463ffffffff191690921767ffffffff0000000019166507080000000017909155662386f26fc10000600e5567013fbe85edc90000600f5566b1a2bc2ec50000601055670bcbce7f1b1500006011557f526576656e75650000000000000000000000000000000000000000000000000060c081905260e082905260135560148190557f4e6578742043616d706169676e0000000000000000000000000000000000000061010081905261012082905260165560178190556101806040527f4368617269747900000000000000000000000000000000000000000000000000610140819052610160829052601955601a5534801561014c57600080fd5b5060018054600160a060020a031916339081179091556040517fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a26020805460ff19166001179055613532806101a76000396000f30060806040526004361061026e5763ffffffff60e060020a60003504166302fb0c5e811461027857806307da68f5146102a15780630b781385146102b65780631300a6d1146102dd578063136dbbab146102f257806313af403514610307578063142bc2ae1461032857806314beb3a3146103825780631cbeae5e146103c25780632741876a146103f657806329dcb0cf1461040b5780632e52d6061461043d57806336bdee74146104525780634ec4878b146104675780634f573cb21461047c5780635b3725321461026e57806361c3b7f114610491578063682e60a9146104b25780636b31ee01146104c75780636b5ca27d146104dc57806375f12b21146104f4578063772506bb1461050957806377c713961461051e5780637a9e5e4b146105335780638da5cb5b1461055457806391b7d3e01461056957806399b8a3f01461058a578063a0129b001461059f578063a035b1fe146105b4578063a2d2dbe2146105c9578063a52b2b88146105ea578063a6cfbb7f1461060b578063a78adfec14610620578063ae1803371461064a578063b3ff277d1461066b578063b80e63df14610680578063be9a6555146106a1578063bf2d9e0b146106a9578063bf7e214f146106be578063c0b3870a146106d3578063cb146814146106e8578063d50cb88b146106fd578063d608b3b214610712578063d6fbf20214610727578063de47e0bf1461073c578063debe1c6914610751578063e99a7dca1461076f578063ec18ca9c14610784578063ed2c92b114610799578063ef78d4fd146107ae578063f4aac034146107c3578063f63ef744146107d8578063f8b45b0614610831578063fe18818414610864575b610276610879565b005b34801561028457600080fd5b5061028d61098b565b604080519115158252519081900360200190f35b3480156102ad57600080fd5b506102766109de565b3480156102c257600080fd5b506102cb610a69565b60408051918252519081900360200190f35b3480156102e957600080fd5b506102cb610b08565b3480156102fe57600080fd5b506102cb610b5e565b34801561031357600080fd5b50610276600160a060020a0360043516610ba0565b34801561033457600080fd5b5061033d610c1e565b6040805196875260208701959095528585019390935267ffffffffffffffff90911660608501526080840152600160a060020a031660a0830152519081900360c00190f35b34801561038e57600080fd5b50610397610f29565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b3480156103ce57600080fd5b506103da6004356111b0565b60408051600160a060020a039092168252519081900360200190f35b34801561040257600080fd5b506102cb6111e4565b34801561041757600080fd5b50610420611263565b6040805167ffffffffffffffff9092168252519081900360200190f35b34801561044957600080fd5b506102cb6112a1565b34801561045e57600080fd5b506102cb6112fa565b34801561047357600080fd5b50610276611300565b34801561048857600080fd5b5061027661138b565b34801561049d57600080fd5b50610276600160a060020a03600435166113ca565b3480156104be57600080fd5b506102cb6114b4565b3480156104d357600080fd5b506102cb6114f6565b3480156104e857600080fd5b506102766004356115cd565b34801561050057600080fd5b5061028d61160c565b34801561051557600080fd5b506102cb611615565b34801561052a57600080fd5b506103da611657565b34801561053f57600080fd5b50610276600160a060020a0360043516611666565b34801561056057600080fd5b506103da6116e0565b34801561057557600080fd5b50610276600160a060020a03600435166116ef565b34801561059657600080fd5b506102cb611809565b3480156105ab57600080fd5b506102766118d4565b3480156105c057600080fd5b506102cb61192a565b3480156105d557600080fd5b506102cb600160a060020a036004351661196c565b3480156105f657600080fd5b506102cb600160a060020a036004351661197e565b34801561061757600080fd5b506102cb61199c565b34801561062c57600080fd5b5061027660043560243563ffffffff604435811690606435166119a2565b34801561065657600080fd5b50610276600160a060020a0360043516611b0a565b34801561067757600080fd5b506102cb611b54565b34801561068c57600080fd5b506102cb600160a060020a0360043516611b5a565b610276611b75565b3480156106b557600080fd5b506102cb611c8f565b3480156106ca57600080fd5b506103da611d19565b3480156106df57600080fd5b50610276611d28565b3480156106f457600080fd5b506102cb611dae565b34801561070957600080fd5b506102cb611db4565b34801561071e57600080fd5b506102cb611df6565b34801561073357600080fd5b506102cb611e5d565b34801561074857600080fd5b50610276611e63565b34801561075d57600080fd5b50610276600435602435604435611e95565b34801561077b57600080fd5b506102cb612014565b34801561079057600080fd5b506103da61201a565b3480156107a557600080fd5b5061027661204f565b3480156107ba57600080fd5b506102cb61208d565b3480156107cf57600080fd5b506102cb6120f2565b3480156107e457600080fd5b506040805160206004803580820135601f81018490048402850184019095528484526102769436949293602493928401919081908401838280828437509497506121349650505050505050565b34801561083d57600080fd5b50610846612174565b60408051938452602084019290925282820152519081900360600190f35b34801561087057600080fd5b506103da6122f0565b6000601f601e5481548110151561088c57fe5b90600052602060002090600b020190506108a461098b565b156108c5576108b2816123dd565b6108c08160080133346125d9565b610988565b60205460ff1615610920576040805160e560020a62461bcd02815260206004820152601160248201527f436f6e74726163742073746f7070656421000000000000000000000000000000604482015290519081900360640190fd5b60078101546d0100000000000000000000000000900460ff1615156109485761094881612650565b61095061293e565b601f601e5481548110151561096157fe5b90600052602060002090600b0201905061097a816123dd565b6109888160080133346125d9565b50565b601f54600090151561099f575060006109db565b42601f601e548154811015156109b157fe5b60009182526020909120600b909102016006015460a060020a900467ffffffffffffffff16101590505b90565b6109f433600035600160e060020a031916612c5b565b15156109ff57600080fd5b60205460ff1615610a5a576040805160e560020a62461bcd02815260206004820152601060248201527f416c72656164792073746f707065642100000000000000000000000000000000604482015290519081900360640190fd5b6020805460ff19166001179055565b6000601f601e54815481101515610a7c57fe5b90600052602060002090600b0201600701600d9054906101000a900460ff161515610aff57610af8601f601e54815481101515610ab557fe5b90600052602060002090600b020160050154601f601e54815481101515610ad857fe5b600091825260209091206009600b9092020101549063ffffffff612d6416565b90506109db565b506017546109db565b6000610b1261098b565b15610b565742601f601e54815481101515610b2957fe5b60009182526020909120600b909102016006015460a060020a900467ffffffffffffffff160390506109db565b5060006109db565b6000610b6861098b565b15610b9757601f601e54815481101515610b7e57fe5b90600052602060002090600b02016002015490506109db565b50600f546109db565b610bb633600035600160e060020a031916612c5b565b1515610bc157600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383811691909117918290556040519116907fce241d7ca1f669fee44b6fc00b8eba2df3bb514eed0f6f668f8f89096e81ed9490600090a250565b60008060008060008030600160a060020a031663a035b1fe6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610c6557600080fd5b505af1158015610c79573d6000803e3d6000fd5b505050506040513d6020811015610c8f57600080fd5b5051604080517f6b31ee0100000000000000000000000000000000000000000000000000000000815290519197503091636b31ee01916004808201926020929091908290030181600087803b158015610ce757600080fd5b505af1158015610cfb573d6000803e3d6000fd5b505050506040513d6020811015610d1157600080fd5b5051604080517f99b8a3f0000000000000000000000000000000000000000000000000000000008152905191965030916399b8a3f0916004808201926020929091908290030181600087803b158015610d6957600080fd5b505af1158015610d7d573d6000803e3d6000fd5b505050506040513d6020811015610d9357600080fd5b5051604080517f29dcb0cf000000000000000000000000000000000000000000000000000000008152905191955030916329dcb0cf916004808201926020929091908290030181600087803b158015610deb57600080fd5b505af1158015610dff573d6000803e3d6000fd5b505050506040513d6020811015610e1557600080fd5b5051604080517f682e60a90000000000000000000000000000000000000000000000000000000081529051919450309163682e60a9916004808201926020929091908290030181600087803b158015610e6d57600080fd5b505af1158015610e81573d6000803e3d6000fd5b505050506040513d6020811015610e9757600080fd5b5051604080517fec18ca9c0000000000000000000000000000000000000000000000000000000081529051919350309163ec18ca9c916004808201926020929091908290030181600087803b158015610eef57600080fd5b505af1158015610f03573d6000803e3d6000fd5b505050506040513d6020811015610f1957600080fd5b5051959694959394929391929050565b600080600080600030600160a060020a031663772506bb6040518163ffffffff1660e060020a028152600401602060405180830381600087803b158015610f6f57600080fd5b505af1158015610f83573d6000803e3d6000fd5b505050506040513d6020811015610f9957600080fd5b5051604080517f136dbbab0000000000000000000000000000000000000000000000000000000081529051919650309163136dbbab916004808201926020929091908290030181600087803b158015610ff157600080fd5b505af1158015611005573d6000803e3d6000fd5b505050506040513d602081101561101b57600080fd5b5051604080517ff4aac0340000000000000000000000000000000000000000000000000000000081529051919550309163f4aac034916004808201926020929091908290030181600087803b15801561107357600080fd5b505af1158015611087573d6000803e3d6000fd5b505050506040513d602081101561109d57600080fd5b5051604080517fd50cb88b0000000000000000000000000000000000000000000000000000000081529051919450309163d50cb88b916004808201926020929091908290030181600087803b1580156110f557600080fd5b505af1158015611109573d6000803e3d6000fd5b505050506040513d602081101561111f57600080fd5b5051604080517f2e52d60600000000000000000000000000000000000000000000000000000000815290519193503091632e52d606916004808201926020929091908290030181600087803b15801561117757600080fd5b505af115801561118b573d6000803e3d6000fd5b505050506040513d60208110156111a157600080fd5b50519495939492939192919050565b6000601f828154811015156111c157fe5b60009182526020909120600b9091020160060154600160a060020a031692915050565b6000601f601e548154811015156111f757fe5b90600052602060002090600b0201600701600d9054906101000a900460ff16151561125a57610af8601f601e5481548110151561123057fe5b600091825260209091206007600b909202010154600a549064ffffffffff1663ffffffff612d9b16565b50600a546109db565b6000601f601e5481548110151561127657fe5b90600052602060002090600b020160060160149054906101000a900467ffffffffffffffff16905090565b60006112ab61098b565b156112eb57601f601e548154811015156112c157fe5b60009182526020909120600b909102016007015465010000000000900463ffffffff1690506109db565b50600d5463ffffffff166109db565b60025481565b336000908152601c602052604081206001015411611368576040805160e560020a62461bcd02815260206004820152601260248201527f4e6f7468696e6720746f20646f6e617465210000000000000000000000000000604482015290519081900360640190fd5b336000908152601c6020526040902060018101546113899190601990612dab565b565b6113a133600035600160e060020a031916612c5b565b15156113ac57600080fd5b60015460145461138991601391600160a060020a0390911690612e2e565b6113e033600035600160e060020a031916612c5b565b15156113eb57600080fd5b60008035600160e060020a0319168152601d60205260409020546277f8809042906114169083612d9b565b111561142157600080fd5b60008035600160e060020a0319168152601d60205260409020429055600160a060020a038216151561145257600080fd5b60128054600160a060020a03841673ffffffffffffffffffffffffffffffffffffffff19909116811790915560408051918252517fe9bff25f57a144aa43858ad7e8e92a992af00ce7a2704f116861b96000f457ec9181900360200190a15050565b60006114be61098b565b15610b5657601f601e548154811015156114d457fe5b600091825260209091206007600b90920201015464ffffffffff1690506109db565b600061150061098b565b1561153c57610af8601f601e5481548110151561151957fe5b90600052602060002090600b020160040154601f601e54815481101515610ad857fe5b601f601e5481548110151561154d57fe5b90600052602060002090600b0201600701600d9054906101000a900460ff1615156115b857610af8601f601e5481548110151561158657fe5b90600052602060002090600b0201600501546115ac601f601e5481548110151561151957fe5b9063ffffffff612d6416565b601154601754610af89163ffffffff612d6416565b60205460009060ff1615156115e157600080fd5b601f8054839081106115ef57fe5b90600052602060002090600b0201905061160881612650565b5050565b60205460ff1681565b600061161f61098b565b1561164e57601f601e5481548110151561163557fe5b90600052602060002090600b02016004015490506109db565b506011546109db565b601254600160a060020a031681565b61167c33600035600160e060020a031916612c5b565b151561168757600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116919091178083556040519116917f1abebea81bfa2637f28358c371278fb15ede7ea8dd28d2e03b112ff6d936ada491a250565b600154600160a060020a031681565b60008061170833600035600160e060020a031916612c5b565b151561171357600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038516916370a082319160248083019260209291908290030181600087803b15801561177457600080fd5b505af1158015611788573d6000803e3d6000fd5b505050506040513d602081101561179e57600080fd5b5051600160a060020a0384166000908152600360205260409020549092506117cd90839063ffffffff612f3d16565b90506117db60048483612f4d565b600160a060020a03831660009081526006602052604090205461180490600490859033906130db565b505050565b600061181361098b565b1561184f57610af8601f601e5481548110151561182c57fe5b90600052602060002090600b020160030154601f601e54815481101515610ad857fe5b601f601e5481548110151561186057fe5b90600052602060002090600b0201600701600d9054906101000a900460ff1615156118bf57610af8601f601e5481548110151561189957fe5b90600052602060002090600b0201600501546115ac601f601e5481548110151561182c57fe5b601054601754610af89163ffffffff612d6416565b60006118ec33600035600160e060020a031916612c5b565b15156118f757600080fd5b60025461190c9030319063ffffffff612f3d16565b90506119196004826132b7565b610988600433600460010154612e2e565b600061193461098b565b1561196357601f601e5481548110151561194a57fe5b90600052602060002090600b02016000015490506109db565b50600b546109db565b60036020526000908152604090205481565b600160a060020a03166000908152601c602052604090206001015490565b60145490565b6119b833600035600160e060020a031916612c5b565b15156119c357600080fd5b8364e8d4a51000678ac7230489e800008183101580156119e35750808311155b15156119ee57600080fd5b85670de0b6b3a7640000678ac7230489e80000818310801590611a115750808311155b1515611a1c57600080fd5b8763ffffffff16601e62093a80818310158015611a395750808311155b1515611a4457600080fd5b8c600b819055508b600c819055508a600d60046101000a81548163ffffffff021916908363ffffffff16021790555089600d60006101000a81548163ffffffff021916908363ffffffff1602179055507fba0488b18639349657ed3fa0cacf2d3fd8352aad74cf78575306bca3535688938d8b8d8f604051808581526020018463ffffffff1663ffffffff1681526020018363ffffffff1663ffffffff16815260200182815260200194505050505060405180910390a150505050505050505050505050565b611b2033600035600160e060020a031916612c5b565b1515611b2b57600080fd5b600160a060020a03811660009081526006602052604090205461098890600490839033906130db565b60095481565b600160a060020a031660009081526006602052604090205490565b6000611b8d33600035600160e060020a031916612c5b565b1515611b9857600080fd5b60205460ff161515611bf4576040805160e560020a62461bcd02815260206004820152601060248201527f416c726561647920737461727465642100000000000000000000000000000000604482015290519081900360640190fd5b6020805460ff19169055601f541561094857601f601e54815481101515611c1757fe5b90600052602060002090600b0201905080600701600d9054906101000a900460ff161515610948576040805160e560020a62461bcd02815260206004820152601c60248201527f4c6173742063616d706169676e206e6f742066696e616c697a65642100000000604482015290519081900360640190fd5b6000601f601e54815481101515611ca257fe5b90600052602060002090600b0201600701600d9054906101000a900460ff161515611d1057610af8611d01601f601e54815481101515611cde57fe5b90600052602060002090600b020160020154601f601e54815481101515610ad857fe5b6007549063ffffffff612d9b16565b506007546109db565b600054600160a060020a031681565b336000908152601c602052604081206001015411611d90576040805160e560020a62461bcd02815260206004820152601460248201527f4e6f7468696e6720746f20776974686472617721000000000000000000000000604482015290519081900360640190fd5b336000818152601c6020526040902060018101546113899290612e2e565b60055490565b6000611dbe61098b565b15611ded57601f601e54815481101515611dd457fe5b90600052602060002090600b02016001015490506109db565b50600c546109db565b6000601f601e54815481101515611e0957fe5b90600052602060002090600b0201600701600d9054906101000a900460ff161515611e5457610af8611e45601f601e5481548110151561182c57fe5b6008549063ffffffff612d9b16565b506008546109db565b600b5481565b611e7933600035600160e060020a031916612c5b565b1515611e8457600080fd5b611389600433600460010154612e2e565b611eab33600035600160e060020a031916612c5b565b1515611eb657600080fd5b611ed681611eca858563ffffffff612d9b16565b9063ffffffff612d9b16565b6000670de0b6b3a7640000818310158015611ef15750808311155b1515611efc57600080fd5b60008035600160e060020a0319168152601d602052604090205462127500904290611f279083612d9b565b1115611f3257600080fd5b60008035600160e060020a0319168152601d60205260409020429055670de0b6b3a7640000861115611f6357600080fd5b6702c68af0bb140000871115611f7857600080fd5b67016345785d8a0000851115611f8d57600080fd5b600f8790556010869055600e859055611fc685611fba8881670de0b6b3a76400008c63ffffffff612f3d16565b9063ffffffff612f3d16565b6011819055604080518981526020810189905280820192909252517f0b22d042ca4d52f7ed18250a188ec6ea8d8be78595e40514596b8d768e4564689181900360600190a150505050505050565b601e5481565b6000601f601e5481548110151561202d57fe5b600091825260209091206006600b909202010154600160a060020a0316905090565b60205460009060ff16151561206357600080fd5b601f601e5481548110151561207457fe5b90600052602060002090600b0201905061098881612650565b600061209761098b565b156120db57601f601e548154811015156120ad57fe5b60009182526020909120600b90910201600701546901000000000000000000900463ffffffff1690506109db565b50600d54640100000000900463ffffffff166109db565b60006120fc61098b565b1561212b57601f601e5481548110151561211257fe5b90600052602060002090600b02016003015490506109db565b506010546109db565b61214a33600035600160e060020a031916612c5b565b151561215557600080fd5b601254601a5461098891601991600160a060020a0390911690846132e2565b600080600030600160a060020a031663b3ff277d6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156121b757600080fd5b505af11580156121cb573d6000803e3d6000fd5b505050506040513d60208110156121e157600080fd5b5051604080517fd608b3b20000000000000000000000000000000000000000000000000000000081529051919450309163d608b3b2916004808201926020929091908290030181600087803b15801561223957600080fd5b505af115801561224d573d6000803e3d6000fd5b505050506040513d602081101561226357600080fd5b5051604080517f2741876a00000000000000000000000000000000000000000000000000000000815290519193503091632741876a916004808201926020929091908290030181600087803b1580156122bb57600080fd5b505af11580156122cf573d6000803e3d6000fd5b505050506040513d60208110156122e557600080fd5b505192939192919050565b601f546000901515612304575060006109db565b61230c61098b565b156123925730600160a060020a0316631cbeae5e6001601e54036040518263ffffffff1660e060020a02815260040180828152602001915050602060405180830381600087803b15801561235f57600080fd5b505af1158015612373573d6000803e3d6000fd5b505050506040513d602081101561238957600080fd5b505190506109db565b30600160a060020a0316631cbeae5e601e546040518263ffffffff1660e060020a02815260040180828152602001915050602060405180830381600087803b15801561235f57600080fd5b60068101544260a060020a90910467ffffffffffffffff16101561244b576040805160e560020a62461bcd02815260206004820152600f60248201527f416674657220646561646c696e65210000000000000000000000000000000000604482015290519081900360640190fd5b80543410156124a4576040805160e560020a62461bcd02815260206004820152601160248201527f4e6f7420656e6f7567682076616c756521000000000000000000000000000000604482015290519081900360640190fd5b60078101805464ffffffffff198116600164ffffffffff92831601821617918290556006830180543373ffffffffffffffffffffffffffffffffffffffff1990911617905565010000000000820463ffffffff16911681151561250357fe5b0664ffffffffff166000141561252c57600181015481546125299163ffffffff612d6416565b81555b6006810154604080513381523460208201524267ffffffffffffffff60a060020a90940484160390921682820152517fdffc821040ac850d3cdb1e8c2d587ab1312ed7267098abadf3fd9137172c51c89181900360600190a160078101546125ac90429063ffffffff6901000000000000000000909104811690612d9b16565b8160060160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050565b60018301546125ee908263ffffffff612d9b16565b6001840155600254612606908263ffffffff612d9b16565b6002558254604080518381529051600160a060020a03851692917f8534743902a2fb19639aba9d7882a1a9b06d7a841874192da0738ce3973db0ae919081900360200190a3505050565b60068101546000904260a060020a90910467ffffffffffffffff16106126c0576040805160e560020a62461bcd02815260206004820152601060248201527f4265666f726520646561646c696e652100000000000000000000000000000000604482015290519081900360640190fd5b60078201546d0100000000000000000000000000900460ff161561272e576040805160e560020a62461bcd02815260206004820152601260248201527f416c72656164792066696e616c697a6564210000000000000000000000000000604482015290519081900360640190fd5b600782015464ffffffffff16156128d7575060098101546006820154600160a060020a03166000908152601c60205260409020600483015461278591600885019161278090859063ffffffff612d6416565b612dab565b6006820154600160a060020a03166000818152601c602052604090205560048201546127cb906127bc90839063ffffffff612d6416565b6009549063ffffffff612d9b16565b60095560028201546127f090600884019060139061278090859063ffffffff612d6416565b61280a611d01836002015483612d6490919063ffffffff16565b600755600382015461282f90600884019060199061278090859063ffffffff612d6416565b612849611e45836003015483612d6490919063ffffffff16565b6008556007820154600a5461286a9164ffffffffff1663ffffffff612d9b16565b600a55600682015460048301547f56b84851a1cd72311b185b7510e0e8d5aa69f8755dcc43463ebfe959bb1614f891600160a060020a0316906128b490849063ffffffff612d6416565b60408051600160a060020a03909316835260208301919091528051918290030190a15b60205460ff16156128fd576128f88260080160048460080160010154612dab565b612913565b6129138260080160168460080160010154612dab565b5060070180546dff0000000000000000000000000019166d0100000000000000000000000000179055565b60008061294961098b565b1561299e576040805160e560020a62461bcd02815260206004820152601e60248201527f412063616d706169676e20697320616c72656164792072756e6e696e67210000604482015290519081900360640190fd5b670de0b6b3a76400006129ca600e54611eca601154611eca601054600f54612d9b90919063ffffffff16565b14612a1f576040805160e560020a62461bcd02815260206004820152601860248201527f4163636f756e74696e6720697320696e636f7272656374210000000000000000604482015290519081900360640190fd5b601f805490612a319060018301613469565b9150601f82815481101515612a4257fe5b60009182526020909120601e849055600b8054920201908155600c546001820155600f54600282015560105460038201556011546004820155600e546005820155600d54909150612aa690429063ffffffff640100000000909104811690612d9b16565b6006820180547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff1660a060020a67ffffffffffffffff9390931692909202919091179055600d805460078301805468ffffffff0000000000191663ffffffff92831665010000000000021780825592546cffffffff00000000000000000019909316640100000000909304909116690100000000000000000002919091179055601e54604080517f546f74616c00000000000000000000000000000000000000000000000000000060208083019190915260258083019490945282518083039094018452604590910191829052825182918401908083835b60208310612bbd5780518252601f199092019160209182019101612b9e565b5181516020939093036101000a6000190180199091169216919091179052604051920182900390912060088501908155601754612c01945060169350909150612dab565b6009810154600d54601e546040805193845264010000000090920463ffffffff16602084015282820152517f6a2b8b9a3942a8abc58fb4ae0c546618d960d0bc856f995b545464becc5be272916060908290030190a15050565b6000600160a060020a038316301415612c7657506001612d5e565b600154600160a060020a0384811691161415612c9457506001612d5e565b600054600160a060020a03161515612cae57506000612d5e565b60008054604080517fb7009613000000000000000000000000000000000000000000000000000000008152600160a060020a038781166004830152306024830152600160e060020a0319871660448301529151919092169263b700961392606480820193602093909283900390910190829087803b158015612d2f57600080fd5b505af1158015612d43573d6000803e3d6000fd5b505050506040513d6020811015612d5957600080fd5b505190505b92915050565b6000670de0b6b3a7640000612d8a612d7c8585613441565b6706f05b59d3b20000612d9b565b811515612d9357fe5b049392505050565b80820182811015612d5e57600080fd5b6001830154811115612dbc57600080fd5b6001830154612dd1908263ffffffff612f3d16565b600180850191909155820154612ded908263ffffffff612d9b16565b6001830155815483546040805184815290517f91394ae08f7d57415c1c2ac6886394ef2c7634274779088733b60f7504831cef9181900360200190a3505050565b60015460a060020a900460ff1615612e4557600080fd5b6001805460a060020a60ff02191660a060020a178155830154811115612e6a57600080fd5b600160a060020a0382161515612e7f57600080fd5b6001830154612e94908263ffffffff612f3d16565b6001840155600254612eac908263ffffffff612f3d16565b600255604051600160a060020a0383169082156108fc029083906000818181858888f19350505050158015612ee5573d6000803e3d6000fd5b508254604080518381529051600160a060020a03851692917fa3e8292cffffe79590527099bf9d852a1160f38b284cc5124afa894201c0f256919081900360200190a350506001805460a060020a60ff021916905550565b80820382811115612d5e57600080fd5b60015460009060a060020a900460ff1615612f6757600080fd5b6001805460a060020a60ff02191660a060020a179055604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038516916370a082319160248083019260209291908290030181600087803b158015612fde57600080fd5b505af1158015612ff2573d6000803e3d6000fd5b505050506040513d602081101561300857600080fd5b5051600160a060020a038416600090815260036020526040902054909150613036908363ffffffff612d9b16565b81101561304257600080fd5b600160a060020a038316600090815260028501602052604090205461306d908363ffffffff612d9b16565b600160a060020a038416600081815260028701602090815260409182902093909355865481518681529151309491927f528fa5ea862bde3887a0891407d0cc4cbe935d1dd428a0fda5624c0a256facc892908290030190a450506001805460a060020a60ff02191690555050565b60015460a060020a900460ff16156130f257600080fd5b6001805460a060020a60ff02191660a060020a179055600160a060020a038316600090815260028501602052604090205481111561312f57600080fd5b600160a060020a038216151561314457600080fd5b600160a060020a038316600090815260028501602052604090205461316f908263ffffffff612f3d16565b600160a060020a03841660009081526002860160209081526040808320939093556003905220546131a6908263ffffffff612f3d16565b600160a060020a0380851660008181526003602090815260408083209590955584517fa9059cbb0000000000000000000000000000000000000000000000000000000081529387166004850152602484018690529351919363a9059cbb936044808201949293918390030190829087803b15801561322357600080fd5b505af1158015613237573d6000803e3d6000fd5b505050506040513d602081101561324d57600080fd5b5051151561325a57600080fd5b8354604080518381529051600160a060020a03808616939087169290917f920718295e8e03a7fda1fe1d8d41ba008f378b1d679ea1a5f70eca3a389a25789181900360200190a450506001805460a060020a60ff02191690555050565b6002546132ca908263ffffffff612d9b16565b303110156132d757600080fd5b6116088230836125d9565b60015460a060020a900460ff16156132f957600080fd5b6001805460a060020a60ff02191660a060020a17815584015482111561331e57600080fd5b600160a060020a038316151561333357600080fd5b6001840154613348908363ffffffff612f3d16565b6001850155600254613360908363ffffffff612f3d16565b60028190555082600160a060020a0316828260405180828051906020019080838360005b8381101561339c578181015183820152602001613384565b50505050905090810190601f1680156133c95780820380516001836020036101000a031916815260200191505b5091505060006040518083038185875af19250505015156133e957600080fd5b8354604080518481529051600160a060020a03861692917fa3e8292cffffe79590527099bf9d852a1160f38b284cc5124afa894201c0f256919081900360200190a350506001805460a060020a60ff02191690555050565b600081158061345e57505080820282828281151561345b57fe5b04145b1515612d5e57600080fd5b81548183558181111561180457600083815260209020611804916109db91600b9182028101918502015b808211156135025760008082556001820181905560028201819055600382018190556004820181905560058201819055600682018054600160e060020a03191690556007820180546dffffffffffffffffffffffffffff19169055600882018190556009820155600b01613493565b50905600a165627a7a72305820afe0ed8a03cbfe0653593a76f81941e2b57b87e9322b15135418a61449d686a80029

   Swarm Source:
bzzr://afe0ed8a03cbfe0653593a76f81941e2b57b87e9322b15135418a61449d686a8

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.