Sponsored Link:   Buy your 1st Ethereum in 5 minutes. Trusted by more than 100k buyers.
  Latest 25 txns from a total Of 25267 transactions View All

TxHash Age From To Value [TxFee]
0x7a5263d2467b90946a46e1c2896f6cf6238255f0896491de4bbb9226669f408519 hrs 31 mins agoOraclize  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0 Ether0.00838698
0xd6bfbb7fa095f1ac282378da036fcb5081d4031e26bed35b8199c2b4f0dd39bd1 day 10 hrs ago0x4de51e60684715fbb0d8a56f346f8bed43060f23  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0.4 Ether0.008958817
0xae1f6bcaaf666e9c8cef71c6654c7065a217c56dd9b0db088335b692127556fa1 day 10 hrs agoOraclize  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0 Ether0.0051672
0x4aa892776929e197f8d57de5b59182804235456a276a3ed4cd14734a1b2c663e1 day 10 hrs ago0x4de51e60684715fbb0d8a56f346f8bed43060f23  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0.2 Ether0.008958817
0x9a614152d2de8dc127a2dc7b3b21e9a7170c273cf97104c593f359c9fe7bfc523 days 2 hrs agoOraclize  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0 Ether0.00559388
0xcb739a7657fc4c0957833d2b6f5a4db497b9b1f6e3765530ceeb8a29d83a0ad23 days 2 hrs ago0xb02cf63b8e127650f5d3287fce30fb7b023738fa  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0.2 Ether0.00914165
0xc7fb77ccc7df96857ed0bc3adf324d167d30cb1bf44971293ce9b550ce4f32333 days 8 hrs agoOraclize  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0 Ether0.00559132
0x0a1c9bb4f612e14781828b8063d90578cf54a1941f9038db84d3dc36548a7e7b3 days 8 hrs ago0x4de51e60684715fbb0d8a56f346f8bed43060f23  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0.4 Ether0.008410318
0x5dd05594fe9200a87134e03cdaf3f552d3f63599239cc99901c53e93f186535b3 days 8 hrs agoOraclize  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0 Ether0.00516976
0x9b3230a287722e35fc12b1bbd6384b01e26b327c76637ed5a78fc4abf25cee643 days 8 hrs ago0x4de51e60684715fbb0d8a56f346f8bed43060f23  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0.2 Ether0.008410318
0x85656362a56e4952cef64eb8055eb82a638a28484d5321e9fe02035f680586333 days 8 hrs agoOraclize  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0 Ether0.00698915
0x1680cd7424635bae84e547c45c233e2acdb6f973fe7fcd51157033ca13dc37933 days 8 hrs ago0x4de51e60684715fbb0d8a56f346f8bed43060f23  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0.4 Ether0.008410318
0x4c22f9cddf44dbf3769aa7a13f84c8d0e5f40ea982a1d5769dcaf8727c6dceba3 days 9 hrs agoOraclize  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0 Ether0.0064622
0xbad78ea92f0174951f26943b98755e5755c36efceb8160ccdd3ef27649c3a16f3 days 9 hrs ago0x4de51e60684715fbb0d8a56f346f8bed43060f23  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0.2 Ether0.00731332
0x3546db8a598d8e33970f277e388462012e4a4a7810dc928895802ed0f7f258f94 days 9 hrs agoOraclize  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0 Ether0.00699235
0xa22f802580614d24595e7e1429860dbbcf576b5609bd5d7526c47972b5b4f8ab4 days 9 hrs ago0xf13acc7602795aa8b831408b18e479b6bcf4fd5d  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0.275 Ether0.010055815
0xea3e9f6b7cf8ee2efd0854826419fa0f64aba1f11573a5d4d5e19c39f0f84b094 days 9 hrs agoOraclize  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0 Ether0.0064622
0x4ea7e61c923cc6c143b1262518f8fbf653f83f12f18ac51fbcd2e9d1544798564 days 9 hrs ago0xf13acc7602795aa8b831408b18e479b6bcf4fd5d  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0.5 Ether0.01096998
0x4bef319973eefa518934b35e8563f45281e40f865cfbf45f314b327683f7f3d14 days 9 hrs agoOraclize  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0 Ether0.0064622
0x17c569609d77b68c2021a3497aaac04d1560ae924e55088be3785a1f487597414 days 9 hrs ago0xbad187092d130dcb45675aae6810b6b0585677b8  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0.2 Ether0.01096998
0xbfae6de26c6f309a078ef525440dd1def6a05af2500b6397eb395592ea0c109d4 days 10 hrs agoOraclize  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0 Ether0.00699235
0xe0dc5975ef779db61fcf6292a040b0fef1fbd9d1f52929de6216c3c74e348a284 days 10 hrs ago0xf13acc7602795aa8b831408b18e479b6bcf4fd5d  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0.2 Ether0.010055815
0x14e2a74a959793e259d1ad9f49a89f876e90526ddc5a0188b974a444a760c83e4 days 15 hrs agoOraclize  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0 Ether0.00839082
0x49d3ef8e64319e3f48949741777752f19db94e502c911ee6cc92353e89ce49424 days 15 hrs ago0xb02cf63b8e127650f5d3287fce30fb7b023738fa  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0.42 Ether0.00914165
0x76de591c683017e54044648cb55980227c0fcc4f997877595b0113d634288ef84 days 17 hrs agoOraclize  IN   0xe6517b766e6ee07f91b517435ed855926bcb1aae0 Ether0.00775464
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
  Latest 25 Internal Txns, Click here to View More View All
ParentTxHash Block Age From To Value
0x7a5263d2467b90946a46e1c2896f6cf6238255f0896491de4bbb9226669f4085472423519 hrs 31 mins ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x4de51e60684715fbb0d8a56f346f8bed43060f230.813043478260869564 Ether
0xd6bfbb7fa095f1ac282378da036fcb5081d4031e26bed35b8199c2b4f0dd39bd47207591 day 10 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.010105 Ether
0xae1f6bcaaf666e9c8cef71c6654c7065a217c56dd9b0db088335b692127556fa47207091 day 10 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x4de51e60684715fbb0d8a56f346f8bed43060f231 wei
0x4aa892776929e197f8d57de5b59182804235456a276a3ed4cd14734a1b2c663e47207061 day 10 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.010105 Ether
0x9a614152d2de8dc127a2dc7b3b21e9a7170c273cf97104c593f359c9fe7bfc5247109853 days 2 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0xb02cf63b8e127650f5d3287fce30fb7b023738fa0.406521739130434781 Ether
0xcb739a7657fc4c0957833d2b6f5a4db497b9b1f6e3765530ceeb8a29d83a0ad247109823 days 2 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.010105 Ether
0xc7fb77ccc7df96857ed0bc3adf324d167d30cb1bf44971293ce9b550ce4f323347096863 days 8 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x4de51e60684715fbb0d8a56f346f8bed43060f230.813043478260869564 Ether
0x0a1c9bb4f612e14781828b8063d90578cf54a1941f9038db84d3dc36548a7e7b47096843 days 8 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.010105 Ether
0x5dd05594fe9200a87134e03cdaf3f552d3f63599239cc99901c53e93f186535b47096783 days 8 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x4de51e60684715fbb0d8a56f346f8bed43060f231 wei
0x9b3230a287722e35fc12b1bbd6384b01e26b327c76637ed5a78fc4abf25cee6447096763 days 8 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.010105 Ether
0x85656362a56e4952cef64eb8055eb82a638a28484d5321e9fe02035f6805863347095473 days 8 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x4de51e60684715fbb0d8a56f346f8bed43060f230.813043478260869564 Ether
0x1680cd7424635bae84e547c45c233e2acdb6f973fe7fcd51157033ca13dc379347095453 days 8 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.010105 Ether
0x4c22f9cddf44dbf3769aa7a13f84c8d0e5f40ea982a1d5769dcaf8727c6dceba47094883 days 9 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x4de51e60684715fbb0d8a56f346f8bed43060f231 wei
0xbad78ea92f0174951f26943b98755e5755c36efceb8160ccdd3ef27649c3a16f47094853 days 9 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.015105 Ether
0x3546db8a598d8e33970f277e388462012e4a4a7810dc928895802ed0f7f258f947035904 days 9 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0xf13acc7602795aa8b831408b18e479b6bcf4fd5d0.558967391304347825 Ether
0xa22f802580614d24595e7e1429860dbbcf576b5609bd5d7526c47972b5b4f8ab47035794 days 9 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.015105 Ether
0xea3e9f6b7cf8ee2efd0854826419fa0f64aba1f11573a5d4d5e19c39f0f84b0947035564 days 9 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0xf13acc7602795aa8b831408b18e479b6bcf4fd5d1 wei
0x4ea7e61c923cc6c143b1262518f8fbf653f83f12f18ac51fbcd2e9d15447985647035534 days 9 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.015105 Ether
0x4bef319973eefa518934b35e8563f45281e40f865cfbf45f314b327683f7f3d147035224 days 9 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0xbad187092d130dcb45675aae6810b6b0585677b81 wei
0x17c569609d77b68c2021a3497aaac04d1560ae924e55088be3785a1f4875974147035194 days 9 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.015105 Ether
0xbfae6de26c6f309a078ef525440dd1def6a05af2500b6397eb395592ea0c109d47034654 days 10 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0xf13acc7602795aa8b831408b18e479b6bcf4fd5d0.406521739130434781 Ether
0xe0dc5975ef779db61fcf6292a040b0fef1fbd9d1f52929de6216c3c74e348a2847034524 days 10 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.015105 Ether
0x14e2a74a959793e259d1ad9f49a89f876e90526ddc5a0188b974a444a760c83e47021604 days 15 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0xb02cf63b8e127650f5d3287fce30fb7b023738fa0.853695652173913043 Ether
0x49d3ef8e64319e3f48949741777752f19db94e502c911ee6cc92353e89ce494247021314 days 15 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0x3dbdc81a6edc94c720b0b88fb65dbd7e395fdcf60.015105 Ether
0x76de591c683017e54044648cb55980227c0fcc4f997877595b0113d634288ef847017804 days 17 hrs ago0xe6517b766e6ee07f91b517435ed855926bcb1aae0xb02cf63b8e127650f5d3287fce30fb7b023738fa1 wei
[ Download CSV Export  ] 
Warning: The compiled contract might be susceptible to ZeroFunctionSelector (very low-severity), DelegateCallReturnValue (low-severity), ECRecoverMalformedInput (medium-severity), SkipEmptyStringLiteral (low-severity) Solidity compiler bugs.

Contract Source Code Verified
Contract Name: IDice
Compiler Version: v0.4.11-nightly.2017.3.21+commit.6fb27dee
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts
pragma solidity ^0.4.2;

// <ORACLIZE_API>
/*
Copyright (c) 2015-2016 Oraclize SRL
Copyright (c) 2016 Oraclize LTD



Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:



The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.



THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/

//please import oraclizeAPI_pre0.4.sol when solidity < 0.4.0

contract OraclizeI {
    address public cbAddress;
    function query(uint _timestamp, string _datasource, string _arg) payable returns (bytes32 _id);
    function query_withGasLimit(uint _timestamp, string _datasource, string _arg, uint _gaslimit) payable returns (bytes32 _id);
    function query2(uint _timestamp, string _datasource, string _arg1, string _arg2) payable returns (bytes32 _id);
    function query2_withGasLimit(uint _timestamp, string _datasource, string _arg1, string _arg2, uint _gaslimit) payable returns (bytes32 _id);
    function queryN(uint _timestamp, string _datasource, bytes _argN) payable returns (bytes32 _id);
    function queryN_withGasLimit(uint _timestamp, string _datasource, bytes _argN, uint _gaslimit) payable returns (bytes32 _id);
    function getPrice(string _datasource) returns (uint _dsprice);
    function getPrice(string _datasource, uint gaslimit) returns (uint _dsprice);
    function useCoupon(string _coupon);
    function setProofType(byte _proofType);
    function setConfig(bytes32 _config);
    function setCustomGasPrice(uint _gasPrice);
}
contract OraclizeAddrResolverI {
    function getAddress() returns (address _addr);
}
contract usingOraclize {
    uint constant day = 60*60*24;
    uint constant week = 60*60*24*7;
    uint constant month = 60*60*24*30;
    byte constant proofType_NONE = 0x00;
    byte constant proofType_TLSNotary = 0x10;
    byte constant proofStorage_IPFS = 0x01;
    uint8 constant networkID_auto = 0;
    uint8 constant networkID_mainnet = 1;
    uint8 constant networkID_testnet = 2;
    uint8 constant networkID_morden = 2;
    uint8 constant networkID_consensys = 161;

    OraclizeAddrResolverI OAR;

    OraclizeI oraclize;
    modifier oraclizeAPI {
        if((address(OAR)==0)||(getCodeSize(address(OAR))==0)) oraclize_setNetwork(networkID_auto);
        oraclize = OraclizeI(OAR.getAddress());
        _;
    }
    modifier coupon(string code){
        oraclize = OraclizeI(OAR.getAddress());
        oraclize.useCoupon(code);
        _;
    }

    function oraclize_setNetwork(uint8 networkID) internal returns(bool){
        if (getCodeSize(0x1d3B2638a7cC9f2CB3D298A3DA7a90B67E5506ed)>0){ //mainnet
            OAR = OraclizeAddrResolverI(0x1d3B2638a7cC9f2CB3D298A3DA7a90B67E5506ed);
            return true;
        }
        if (getCodeSize(0xc03A2615D5efaf5F49F60B7BB6583eaec212fdf1)>0){ //ropsten testnet
            OAR = OraclizeAddrResolverI(0xc03A2615D5efaf5F49F60B7BB6583eaec212fdf1);
            return true;
        }
        if (getCodeSize(0xB7A07BcF2Ba2f2703b24C0691b5278999C59AC7e)>0){ //kovan testnet
            OAR = OraclizeAddrResolverI(0xB7A07BcF2Ba2f2703b24C0691b5278999C59AC7e);
            return true;
        }
        if (getCodeSize(0x6f485C8BF6fc43eA212E93BBF8ce046C7f1cb475)>0){ //ethereum-bridge
            OAR = OraclizeAddrResolverI(0x6f485C8BF6fc43eA212E93BBF8ce046C7f1cb475);
            return true;
        }
        if (getCodeSize(0x20e12A1F859B3FeaE5Fb2A0A32C18F5a65555bBF)>0){ //ether.camp ide
            OAR = OraclizeAddrResolverI(0x20e12A1F859B3FeaE5Fb2A0A32C18F5a65555bBF);
            return true;
        }
        if (getCodeSize(0x51efaF4c8B3C9AfBD5aB9F4bbC82784Ab6ef8fAA)>0){ //browser-solidity
            OAR = OraclizeAddrResolverI(0x51efaF4c8B3C9AfBD5aB9F4bbC82784Ab6ef8fAA);
            return true;
        }
        return false;
    }

    function __callback(bytes32 myid, string result) {
        __callback(myid, result, new bytes(0));
    }
    function __callback(bytes32 myid, string result, bytes proof) {
    }

    function oraclize_getPrice(string datasource) oraclizeAPI internal returns (uint){
        return oraclize.getPrice(datasource);
    }

    function oraclize_getPrice(string datasource, uint gaslimit) oraclizeAPI internal returns (uint){
        return oraclize.getPrice(datasource, gaslimit);
    }

    function oraclize_query(string datasource, string arg) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource);
        if (price > 1 ether + tx.gasprice*200000) return 0; // unexpectedly high price
        return oraclize.query.value(price)(0, datasource, arg);
    }
    function oraclize_query(uint timestamp, string datasource, string arg) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource);
        if (price > 1 ether + tx.gasprice*200000) return 0; // unexpectedly high price
        return oraclize.query.value(price)(timestamp, datasource, arg);
    }
    function oraclize_query(uint timestamp, string datasource, string arg, uint gaslimit) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource, gaslimit);
        if (price > 1 ether + tx.gasprice*gaslimit) return 0; // unexpectedly high price
        return oraclize.query_withGasLimit.value(price)(timestamp, datasource, arg, gaslimit);
    }
    function oraclize_query(string datasource, string arg, uint gaslimit) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource, gaslimit);
        if (price > 1 ether + tx.gasprice*gaslimit) return 0; // unexpectedly high price
        return oraclize.query_withGasLimit.value(price)(0, datasource, arg, gaslimit);
    }
    function oraclize_query(string datasource, string arg1, string arg2) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource);
        if (price > 1 ether + tx.gasprice*200000) return 0; // unexpectedly high price
        return oraclize.query2.value(price)(0, datasource, arg1, arg2);
    }
    function oraclize_query(uint timestamp, string datasource, string arg1, string arg2) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource);
        if (price > 1 ether + tx.gasprice*200000) return 0; // unexpectedly high price
        return oraclize.query2.value(price)(timestamp, datasource, arg1, arg2);
    }
    function oraclize_query(uint timestamp, string datasource, string arg1, string arg2, uint gaslimit) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource, gaslimit);
        if (price > 1 ether + tx.gasprice*gaslimit) return 0; // unexpectedly high price
        return oraclize.query2_withGasLimit.value(price)(timestamp, datasource, arg1, arg2, gaslimit);
    }
    function oraclize_query(string datasource, string arg1, string arg2, uint gaslimit) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource, gaslimit);
        if (price > 1 ether + tx.gasprice*gaslimit) return 0; // unexpectedly high price
        return oraclize.query2_withGasLimit.value(price)(0, datasource, arg1, arg2, gaslimit);
    }
    function oraclize_query(string datasource, string[] argN) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource);
        if (price > 1 ether + tx.gasprice*200000) return 0; // unexpectedly high price
        bytes memory args = stra2cbor(argN);
        return oraclize.queryN.value(price)(0, datasource, args);
    }
    function oraclize_query(uint timestamp, string datasource, string[] argN) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource);
        if (price > 1 ether + tx.gasprice*200000) return 0; // unexpectedly high price
        bytes memory args = stra2cbor(argN);
        return oraclize.queryN.value(price)(timestamp, datasource, args);
    }
    function oraclize_query(uint timestamp, string datasource, string[] argN, uint gaslimit) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource, gaslimit);
        if (price > 1 ether + tx.gasprice*gaslimit) return 0; // unexpectedly high price
        bytes memory args = stra2cbor(argN);
        return oraclize.queryN_withGasLimit.value(price)(timestamp, datasource, args, gaslimit);
    }
    function oraclize_query(string datasource, string[] argN, uint gaslimit) oraclizeAPI internal returns (bytes32 id){
        uint price = oraclize.getPrice(datasource, gaslimit);
        if (price > 1 ether + tx.gasprice*gaslimit) return 0; // unexpectedly high price
        bytes memory args = stra2cbor(argN);
        return oraclize.queryN_withGasLimit.value(price)(0, datasource, args, gaslimit);
    }
    function oraclize_query(string datasource, string[1] args) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](1);
        dynargs[0] = args[0];
        return oraclize_query(datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, string[1] args) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](1);
        dynargs[0] = args[0];
        return oraclize_query(timestamp, datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, string[1] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](1);
        dynargs[0] = args[0];
        return oraclize_query(timestamp, datasource, dynargs, gaslimit);
    }
    function oraclize_query(string datasource, string[1] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](1);
        dynargs[0] = args[0];
        return oraclize_query(datasource, dynargs, gaslimit);
    }

    function oraclize_query(string datasource, string[2] args) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](2);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        return oraclize_query(datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, string[2] args) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](2);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        return oraclize_query(timestamp, datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, string[2] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](2);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        return oraclize_query(timestamp, datasource, dynargs, gaslimit);
    }
    function oraclize_query(string datasource, string[2] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](2);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        return oraclize_query(datasource, dynargs, gaslimit);
    }
    function oraclize_query(string datasource, string[3] args) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](3);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        return oraclize_query(datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, string[3] args) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](3);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        return oraclize_query(timestamp, datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, string[3] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](3);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        return oraclize_query(timestamp, datasource, dynargs, gaslimit);
    }
    function oraclize_query(string datasource, string[3] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](3);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        return oraclize_query(datasource, dynargs, gaslimit);
    }

    function oraclize_query(string datasource, string[4] args) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](4);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        return oraclize_query(datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, string[4] args) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](4);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        return oraclize_query(timestamp, datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, string[4] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](4);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        return oraclize_query(timestamp, datasource, dynargs, gaslimit);
    }
    function oraclize_query(string datasource, string[4] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](4);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        return oraclize_query(datasource, dynargs, gaslimit);
    }
    function oraclize_query(string datasource, string[5] args) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](5);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        dynargs[4] = args[4];
        return oraclize_query(datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, string[5] args) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](5);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        dynargs[4] = args[4];
        return oraclize_query(timestamp, datasource, dynargs);
    }
    function oraclize_query(uint timestamp, string datasource, string[5] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](5);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        dynargs[4] = args[4];
        return oraclize_query(timestamp, datasource, dynargs, gaslimit);
    }
    function oraclize_query(string datasource, string[5] args, uint gaslimit) oraclizeAPI internal returns (bytes32 id) {
        string[] memory dynargs = new string[](5);
        dynargs[0] = args[0];
        dynargs[1] = args[1];
        dynargs[2] = args[2];
        dynargs[3] = args[3];
        dynargs[4] = args[4];
        return oraclize_query(datasource, dynargs, gaslimit);
    }

    function oraclize_cbAddress() oraclizeAPI internal returns (address){
        return oraclize.cbAddress();
    }
    function oraclize_setProof(byte proofP) oraclizeAPI internal {
        return oraclize.setProofType(proofP);
    }
    function oraclize_setCustomGasPrice(uint gasPrice) oraclizeAPI internal {
        return oraclize.setCustomGasPrice(gasPrice);
    }
    function oraclize_setConfig(bytes32 config) oraclizeAPI internal {
        return oraclize.setConfig(config);
    }

    function getCodeSize(address _addr) constant internal returns(uint _size) {
        assembly {
            _size := extcodesize(_addr)
        }
    }

    function parseAddr(string _a) internal returns (address){
        bytes memory tmp = bytes(_a);
        uint160 iaddr = 0;
        uint160 b1;
        uint160 b2;
        for (uint i=2; i<2+2*20; i+=2){
            iaddr *= 256;
            b1 = uint160(tmp[i]);
            b2 = uint160(tmp[i+1]);
            if ((b1 >= 97)&&(b1 <= 102)) b1 -= 87;
            else if ((b1 >= 48)&&(b1 <= 57)) b1 -= 48;
            if ((b2 >= 97)&&(b2 <= 102)) b2 -= 87;
            else if ((b2 >= 48)&&(b2 <= 57)) b2 -= 48;
            iaddr += (b1*16+b2);
        }
        return address(iaddr);
    }

    function strCompare(string _a, string _b) internal returns (int) {
        bytes memory a = bytes(_a);
        bytes memory b = bytes(_b);
        uint minLength = a.length;
        if (b.length < minLength) minLength = b.length;
        for (uint i = 0; i < minLength; i ++)
            if (a[i] < b[i])
                return -1;
            else if (a[i] > b[i])
                return 1;
        if (a.length < b.length)
            return -1;
        else if (a.length > b.length)
            return 1;
        else
            return 0;
    }

    function indexOf(string _haystack, string _needle) internal returns (int) {
        bytes memory h = bytes(_haystack);
        bytes memory n = bytes(_needle);
        if(h.length < 1 || n.length < 1 || (n.length > h.length))
            return -1;
        else if(h.length > (2**128 -1))
            return -1;
        else
        {
            uint subindex = 0;
            for (uint i = 0; i < h.length; i ++)
            {
                if (h[i] == n[0])
                {
                    subindex = 1;
                    while(subindex < n.length && (i + subindex) < h.length && h[i + subindex] == n[subindex])
                    {
                        subindex++;
                    }
                    if(subindex == n.length)
                        return int(i);
                }
            }
            return -1;
        }
    }

    function strConcat(string _a, string _b, string _c, string _d, string _e) internal returns (string) {
        bytes memory _ba = bytes(_a);
        bytes memory _bb = bytes(_b);
        bytes memory _bc = bytes(_c);
        bytes memory _bd = bytes(_d);
        bytes memory _be = bytes(_e);
        string memory abcde = new string(_ba.length + _bb.length + _bc.length + _bd.length + _be.length);
        bytes memory babcde = bytes(abcde);
        uint k = 0;
        for (uint i = 0; i < _ba.length; i++) babcde[k++] = _ba[i];
        for (i = 0; i < _bb.length; i++) babcde[k++] = _bb[i];
        for (i = 0; i < _bc.length; i++) babcde[k++] = _bc[i];
        for (i = 0; i < _bd.length; i++) babcde[k++] = _bd[i];
        for (i = 0; i < _be.length; i++) babcde[k++] = _be[i];
        return string(babcde);
    }

    function strConcat(string _a, string _b, string _c, string _d) internal returns (string) {
        return strConcat(_a, _b, _c, _d, "");
    }

    function strConcat(string _a, string _b, string _c) internal returns (string) {
        return strConcat(_a, _b, _c, "", "");
    }

    function strConcat(string _a, string _b) internal returns (string) {
        return strConcat(_a, _b, "", "", "");
    }

    // parseInt
    function parseInt(string _a) internal returns (uint) {
        return parseInt(_a, 0);
    }

    // parseInt(parseFloat*10^_b)
    function parseInt(string _a, uint _b) internal returns (uint) {
        bytes memory bresult = bytes(_a);
        uint mint = 0;
        bool decimals = false;
        for (uint i=0; i<bresult.length; i++){
            if ((bresult[i] >= 48)&&(bresult[i] <= 57)){
                if (decimals){
                   if (_b == 0) break;
                    else _b--;
                }
                mint *= 10;
                mint += uint(bresult[i]) - 48;
            } else if (bresult[i] == 46) decimals = true;
        }
        if (_b > 0) mint *= 10**_b;
        return mint;
    }

    function uint2str(uint i) internal returns (string){
        if (i == 0) return "0";
        uint j = i;
        uint len;
        while (j != 0){
            len++;
            j /= 10;
        }
        bytes memory bstr = new bytes(len);
        uint k = len - 1;
        while (i != 0){
            bstr[k--] = byte(48 + i % 10);
            i /= 10;
        }
        return string(bstr);
    }

    function stra2cbor(string[] arr) internal returns (bytes) {
            uint arrlen = arr.length;

            // get correct cbor output length
            uint outputlen = 0;
            bytes[] memory elemArray = new bytes[](arrlen);
            for (uint i = 0; i < arrlen; i++) {
                elemArray[i] = (bytes(arr[i]));
                outputlen += elemArray[i].length + (elemArray[i].length - 1)/23 + 3; //+3 accounts for paired identifier types
            }
            uint ctr = 0;
            uint cborlen = arrlen + 0x80;
            outputlen += byte(cborlen).length;
            bytes memory res = new bytes(outputlen);

            while (byte(cborlen).length > ctr) {
                res[ctr] = byte(cborlen)[ctr];
                ctr++;
            }
            for (i = 0; i < arrlen; i++) {
                res[ctr] = 0x5F;
                ctr++;
                for (uint x = 0; x < elemArray[i].length; x++) {
                    // if there's a bug with larger strings, this may be the culprit
                    if (x % 23 == 0) {
                        uint elemcborlen = elemArray[i].length - x >= 24 ? 23 : elemArray[i].length - x;
                        elemcborlen += 0x40;
                        uint lctr = ctr;
                        while (byte(elemcborlen).length > ctr - lctr) {
                            res[ctr] = byte(elemcborlen)[ctr - lctr];
                            ctr++;
                        }
                    }
                    res[ctr] = elemArray[i][x];
                    ctr++;
                }
                res[ctr] = 0xFF;
                ctr++;
            }
            return res;
        }
}
// </ORACLIZE_API>

// Etheroll Functions
contract DSSafeAddSub {
    function safeToAdd(uint a, uint b) internal returns (bool) {
        return (a + b >= a);
    }
    function safeAdd(uint a, uint b) internal returns (uint) {
        if (!safeToAdd(a, b)) throw;
        return a + b;
    }

    function safeToSubtract(uint a, uint b) internal returns (bool) {
        return (b <= a);
    }

    function safeSub(uint a, uint b) internal returns (uint) {
        if (!safeToSubtract(a, b)) throw;
        return a - b;
    }
}

contract IDice is usingOraclize, DSSafeAddSub {

    /*
     * checks player profit and number is within range
    */
    modifier betIsValid(uint _betSize, uint _playerNumber) {
        if(((((_betSize * (100-(safeSub(_playerNumber,1)))) / (safeSub(_playerNumber,1))+_betSize))*houseEdge/houseEdgeDivisor)-_betSize > maxProfit || _betSize < minBet || _playerNumber < minNumber || _playerNumber > maxNumber) throw;
		_;
    }

    /*
     * checks game is currently active
    */
    modifier gameIsActive {
        if(gamePaused == true) throw;
		_;
    }

    /*
     * checks payouts are currently active
    */
    modifier payoutsAreActive {
        if(payoutsPaused == true) throw;
		_;
    }

    /*
     * checks only Oraclize address is calling
    */
    modifier onlyOraclize {
        if (msg.sender != oraclize_cbAddress()) throw;
        _;
    }

    /*
     * checks only owner address is calling
    */
    modifier onlyOwner {
         if (msg.sender != owner) throw;
         _;
    }

    /*
     * checks only treasury address is calling
    */
    modifier onlyTreasury {
         if (msg.sender != treasury) throw;
         _;
    }

    /*
     * game vars
    */

    uint constant public maxBetDivisor = 1000000;
    uint constant public houseEdgeDivisor = 1000;
    uint constant public maxNumber = 99;
    uint constant public minNumber = 2;
	bool public gamePaused;
    uint32 public gasForOraclize;
    address public owner;
    bool public payoutsPaused;
    address public treasury;
    uint public contractBalance;
    uint public houseEdge;
    uint public maxProfit;
    uint public maxProfitAsPercentOfHouse;
    uint public minBet;
    int public totalBets;
    uint public totalUserProfit;
    uint public maxPendingPayouts;

    /*
     * player vars
    */
    mapping (bytes32 => address) playerAddress;
    mapping (bytes32 => address) playerTempAddress;
    mapping (bytes32 => bytes32) playerBetId;
    mapping (bytes32 => uint) playerBetValue;
    mapping (bytes32 => uint) playerTempBetValue;
    mapping (bytes32 => uint) playerRandomResult;
    mapping (bytes32 => uint) playerDieResult;
    mapping (bytes32 => uint) playerNumber;
    mapping (address => uint) playerPendingWithdrawals;
    mapping (bytes32 => uint) playerProfit;
    mapping (bytes32 => uint) playerTempReward;


    /*
     * events
    */
    /* log bets + output to web3 for precise 'payout on win' field in UI */
    event LogBet(bytes32 indexed BetID, address indexed PlayerAddress, uint indexed RewardValue, uint ProfitValue, uint BetValue, uint PlayerNumber);
    /* output to web3 UI on bet result*/
    /* Status: 0=lose, 1=win, 2=win + failed send, 3=refund, 4=refund + failed send*/
	event LogResult(bytes32 indexed BetID, address indexed PlayerAddress, uint indexed PlayerNumber, uint DiceResult, uint Value, int Status, bytes Proof);
    /* log manual refunds */
    event LogRefund(bytes32 indexed BetID, address indexed PlayerAddress, uint indexed RefundValue);
    /* log owner transfers */
    event LogOwnerTransfer(address indexed SentToAddress, uint indexed AmountTransferred);


    /*
     * init
    */
    function IDice() {

        owner = msg.sender;
        treasury = msg.sender;

        // This setnetwork is unncessary
        oraclize_setNetwork(networkID_auto);
        /* use TLSNotary for oraclize call */
		oraclize_setProof(proofType_TLSNotary | proofStorage_IPFS);

        /* init 990 = 99% (1% houseEdge)*/
        ownerSetHouseEdge(935);

        // 25,000 = 2.5% is our max profit of the house
        ownerSetMaxProfitAsPercentOfHouse(25000);
        /* init min bet (0.2 ether) */

        ownerSetMinBet(200000000000000000);
        /* init gas for oraclize */
        gasForOraclize = 250000;

    }

    /*
     * public function
     * player submit bet
     * only if game is active & bet is valid can query oraclize and set player vars
    */
    function playerRollDice(uint rollUnder) public
        payable
        gameIsActive
        betIsValid(msg.value, rollUnder)
	{

        /*
        * assign partially encrypted query to oraclize
        * only the apiKey is encrypted
        * integer query is in plain text
        */
        bytes32 rngId = oraclize_query("nested", "[URL] ['json(https://api.random.org/json-rpc/1/invoke).result.random.data.0', '\\n{\"jsonrpc\":\"2.0\",\"method\":\"generateSignedIntegers\",\"params\":{\"apiKey\":${[decrypt] BDC819nTYbEiByr/iwndzNdSJ9JGJGRWwOTnFLhrFcxtWh53H7szcqHaC+Z/6UKH6T6N57RiPNmBWGeFSmqURHUqCSyN8vmUjVj9gEi7HmCoQlLSpx8QJTV9OxhFf43u8Vn7DugZcgyVcPEkEs2lTP1BXiAd},\"n\":1,\"min\":1,\"max\":100,\"replacement\":true,\"base\":10${[identity] \"}\"},\"id\":1${[identity] \"}\"}']", gasForOraclize);
        /* total number of bets (display purpose only) */
        totalBets += 1;
        /* map bet id to this oraclize query */
		playerBetId[rngId] = rngId;
        /* map player lucky number to this oraclize query */
		playerNumber[rngId] = rollUnder;
        /* map value of wager to this oraclize query */
        playerBetValue[rngId] = msg.value;
        /* map player address to this oraclize query */
        playerAddress[rngId] = msg.sender;
        /* safely map player reward to this oraclize query */
        playerProfit[rngId] = ((((msg.value * (100-(safeSub(rollUnder,1)))) / (safeSub(rollUnder,1))+msg.value))*houseEdge/houseEdgeDivisor)-msg.value;
        /* safely increase maxPendingPayouts liability - calc all pending payouts under assumption they win */
        maxPendingPayouts = safeAdd(maxPendingPayouts, playerProfit[rngId]);
        /* check contract can payout on win */
        if(maxPendingPayouts >= contractBalance) throw;
        /* provides accurate numbers for web3 and manual refunds in case of no oraclize __callback */
        LogBet(playerBetId[rngId], playerAddress[rngId], safeAdd(playerBetValue[rngId], playerProfit[rngId]), playerProfit[rngId], playerBetValue[rngId], playerNumber[rngId]);

    }


    /*
    * semi-public function - only oraclize can call
    */
    /*TLSNotary for oraclize call */
	function __callback(bytes32 myid, string result, bytes proof) public
    //function __callback(bytes32 myid, string result) public
		onlyOraclize
		payoutsAreActive
	{

        /* player address mapped to query id does not exist */
        if (playerAddress[myid]==0x0) throw;

	    /* map result to player */
        playerRandomResult[myid] = parseInt(result);

        /* provably-fair random integer for player bounded to 1-100 inclusive
        *  sha3 the result from random.org and proof (IPFS address of TLSNotary proof)
        */
        playerDieResult[myid] = uint(sha3(playerRandomResult[myid], proof)) % (100 - 1) + 1;

        /* get the playerAddress for this query id */
        playerTempAddress[myid] = playerAddress[myid];
        /* delete playerAddress for this query id */
        delete playerAddress[myid];

        /* map the playerProfit for this query id */
        playerTempReward[myid] = playerProfit[myid];
        /* set  playerProfit for this query id to 0 */
        playerProfit[myid] = 0;

        /* safely reduce maxPendingPayouts liability */
        maxPendingPayouts = safeSub(maxPendingPayouts, playerTempReward[myid]);

        /* map the playerBetValue for this query id */
        playerTempBetValue[myid] = playerBetValue[myid];
        /* set  playerBetValue for this query id to 0 */
        playerBetValue[myid] = 0;

        /*
        * refund
        * if result from oraclize is 0 refund only the original bet value
        * if refund fails save refund value to playerPendingWithdrawals
        */
        if(playerDieResult[myid]==0){

             LogResult(playerBetId[myid], playerTempAddress[myid], playerNumber[myid], playerDieResult[myid], playerTempBetValue[myid], 3, proof);
            //LogResult(playerBetId[myid], playerTempAddress[myid], playerNumber[myid], playerDieResult[myid], playerTempBetValue[myid], 3);

            /*
            * send refund - external call to an untrusted contract
            * if send fails map refund value to playerPendingWithdrawals[address]
            * for withdrawal later via playerWithdrawPendingTransactions
            */
            if(!playerTempAddress[myid].send(playerTempBetValue[myid])){
                LogResult(playerBetId[myid], playerTempAddress[myid], playerNumber[myid], playerDieResult[myid], playerTempBetValue[myid], 4, proof);
                //LogResult(playerBetId[myid], playerTempAddress[myid], playerNumber[myid], playerDieResult[myid], playerTempBetValue[myid], 4);
                /* if send failed let player withdraw via playerWithdrawPendingTransactions */
                playerPendingWithdrawals[playerTempAddress[myid]] = safeAdd(playerPendingWithdrawals[playerTempAddress[myid]], playerTempBetValue[myid]);
            }

            return;
        }

        /*
        * pay winner
        * update contract balance to calculate new max bet
        * send reward
        * if send of reward fails save value to playerPendingWithdrawals
        */
        if(playerDieResult[myid] < playerNumber[myid]){

            /* safely reduce contract balance by player profit */
            contractBalance = safeSub(contractBalance, playerTempReward[myid]);

            /* safely calculate total payout as player profit plus original wager */
            playerTempReward[myid] = safeAdd(playerTempReward[myid], playerTempBetValue[myid]);

            totalUserProfit = totalUserProfit + playerTempReward[myid]; // total profits

            LogResult(playerBetId[myid], playerTempAddress[myid], playerNumber[myid], playerDieResult[myid], playerTempReward[myid], 1, proof);
            //LogResult(playerBetId[myid], playerTempAddress[myid], playerNumber[myid], playerDieResult[myid], playerTempReward[myid], 1);

            /* update maximum profit */
            setMaxProfit();

            /*
            * send win - external call to an untrusted contract
            * if send fails map reward value to playerPendingWithdrawals[address]
            * for withdrawal later via playerWithdrawPendingTransactions
            */
            if(!playerTempAddress[myid].send(playerTempReward[myid])){
                LogResult(playerBetId[myid], playerTempAddress[myid], playerNumber[myid], playerDieResult[myid], playerTempReward[myid], 2, proof);
                //LogResult(playerBetId[myid], playerTempAddress[myid], playerNumber[myid], playerDieResult[myid], playerTempReward[myid], 2);
                /* if send failed let player withdraw via playerWithdrawPendingTransactions */
                playerPendingWithdrawals[playerTempAddress[myid]] = safeAdd(playerPendingWithdrawals[playerTempAddress[myid]], playerTempReward[myid]);
            }

            return;
        }

        /*
        * no win
        * send 1 wei to a losing bet
        * update contract balance to calculate new max bet
        */
        if(playerDieResult[myid] >= playerNumber[myid]){

            LogResult(playerBetId[myid], playerTempAddress[myid], playerNumber[myid], playerDieResult[myid], playerTempBetValue[myid], 0, proof);
            //LogResult(playerBetId[myid], playerTempAddress[myid], playerNumber[myid], playerDieResult[myid], playerTempBetValue[myid], 0);

            /*
            *  safe adjust contractBalance
            *  setMaxProfit
            *  send 1 wei to losing bet
            */
            contractBalance = safeAdd(contractBalance, (playerTempBetValue[myid]-1));

            /* update maximum profit */
            setMaxProfit();

            /*
            * send 1 wei - external call to an untrusted contract
            */
            if(!playerTempAddress[myid].send(1)){
                /* if send failed let player withdraw via playerWithdrawPendingTransactions */
               playerPendingWithdrawals[playerTempAddress[myid]] = safeAdd(playerPendingWithdrawals[playerTempAddress[myid]], 1);
            }

            return;

        }

    }

    /*
    * public function
    * in case of a failed refund or win send
    */
    function playerWithdrawPendingTransactions() public
        payoutsAreActive
        returns (bool)
     {
        uint withdrawAmount = playerPendingWithdrawals[msg.sender];
        playerPendingWithdrawals[msg.sender] = 0;
        /* external call to untrusted contract */
        if (msg.sender.call.value(withdrawAmount)()) {
            return true;
        } else {
            /* if send failed revert playerPendingWithdrawals[msg.sender] = 0; */
            /* player can try to withdraw again later */
            playerPendingWithdrawals[msg.sender] = withdrawAmount;
            return false;
        }
    }

    /* check for pending withdrawals  */
    function playerGetPendingTxByAddress(address addressToCheck) public constant returns (uint) {
        return playerPendingWithdrawals[addressToCheck];
    }

    /*
    * internal function
    * sets max profit
    */
    function setMaxProfit() internal {
        maxProfit = (contractBalance*maxProfitAsPercentOfHouse)/maxBetDivisor;
    }

    /*
    * owner/treasury address only functions
    */
    function ()
        payable
    {
        playerRollDice(47);
    }

    function ownerAddBankroll ()
    payable
    onlyTreasury
    {
        /* safely update contract balance */
        contractBalance = safeAdd(contractBalance, msg.value);
        /* update the maximum profit */
        setMaxProfit();
    }

    /* set gas for oraclize query */
    function ownerSetOraclizeSafeGas(uint32 newSafeGasToOraclize) public
		onlyOwner
	{
    	gasForOraclize = newSafeGasToOraclize;
    }

    /* only owner address can set houseEdge */
    function ownerSetHouseEdge(uint newHouseEdge) public
		onlyOwner
    {
        houseEdge = newHouseEdge;
    }

    /* only owner address can set maxProfitAsPercentOfHouse */
    function ownerSetMaxProfitAsPercentOfHouse(uint newMaxProfitAsPercent) public
		onlyOwner
    {
        /* restrict to maximum profit of 5% of total house balance*/
        if(newMaxProfitAsPercent > 50000) throw;
        maxProfitAsPercentOfHouse = newMaxProfitAsPercent;
        setMaxProfit();
    }

    /* only owner address can set minBet */
    function ownerSetMinBet(uint newMinimumBet) public
		onlyOwner
    {
        minBet = newMinimumBet;
    }

    /* only owner address can transfer ether */
    function ownerTransferEther(address sendTo, uint amount) public
		onlyOwner
    {
        /* safely update contract balance when sending out funds*/
        contractBalance = safeSub(contractBalance, amount);
        /* update max profit */
        setMaxProfit();
        if(!sendTo.send(amount)) throw;
        LogOwnerTransfer(sendTo, amount);
    }

    /* only owner address can do manual refund
    * used only if bet placed + oraclize failed to __callback
    * filter LogBet by address and/or playerBetId:
    * LogBet(playerBetId[rngId], playerAddress[rngId], safeAdd(playerBetValue[rngId], playerProfit[rngId]), playerProfit[rngId], playerBetValue[rngId], playerNumber[rngId]);
    * check the following logs do not exist for playerBetId and/or playerAddress[rngId] before refunding:
    * LogResult or LogRefund
    * if LogResult exists player should use the withdraw pattern playerWithdrawPendingTransactions
    */
    function ownerRefundPlayer(bytes32 originalPlayerBetId, address sendTo, uint originalPlayerProfit, uint originalPlayerBetValue) public
		onlyOwner
    {
        /* safely reduce pendingPayouts by playerProfit[rngId] */
        maxPendingPayouts = safeSub(maxPendingPayouts, originalPlayerProfit);
        /* send refund */
        if(!sendTo.send(originalPlayerBetValue)) throw;
        /* log refunds */
        LogRefund(originalPlayerBetId, sendTo, originalPlayerBetValue);
    }

    /* only owner address can set emergency pause #1 */
    function ownerPauseGame(bool newStatus) public
		onlyOwner
    {
		gamePaused = newStatus;
    }

    /* only owner address can set emergency pause #2 */
    function ownerPausePayouts(bool newPayoutStatus) public
		onlyOwner
    {
		payoutsPaused = newPayoutStatus;
    }

    /* only owner address can set treasury address */
    function ownerSetTreasury(address newTreasury) public
		onlyOwner
	{
        treasury = newTreasury;
    }

    /* only owner address can set owner address */
    function ownerChangeOwner(address newOwner) public
		onlyOwner
	{
        owner = newOwner;
    }

    /* only owner address can suicide - emergency */
    function ownerkill() public
		onlyOwner
	{
		suicide(owner);
	}


}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"maxProfitAsPercentOfHouse","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newHouseEdge","type":"uint256"}],"name":"ownerSetHouseEdge","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"myid","type":"bytes32"},{"name":"result","type":"string"}],"name":"__callback","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"payoutsPaused","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newTreasury","type":"address"}],"name":"ownerSetTreasury","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"ownerAddBankroll","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"myid","type":"bytes32"},{"name":"result","type":"string"},{"name":"proof","type":"bytes"}],"name":"__callback","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"maxBetDivisor","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"maxNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"addressToCheck","type":"address"}],"name":"playerGetPendingTxByAddress","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newPayoutStatus","type":"bool"}],"name":"ownerPausePayouts","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"ownerChangeOwner","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"minNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newMaxProfitAsPercent","type":"uint256"}],"name":"ownerSetMaxProfitAsPercentOfHouse","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"treasury","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newMinimumBet","type":"uint256"}],"name":"ownerSetMinBet","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newStatus","type":"bool"}],"name":"ownerPauseGame","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"gasForOraclize","outputs":[{"name":"","type":"uint32"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"sendTo","type":"address"},{"name":"amount","type":"uint256"}],"name":"ownerTransferEther","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"contractBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"minBet","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"playerWithdrawPendingTransactions","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"maxProfit","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalUserProfit","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalBets","outputs":[{"name":"","type":"int256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"gamePaused","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"originalPlayerBetId","type":"bytes32"},{"name":"sendTo","type":"address"},{"name":"originalPlayerProfit","type":"uint256"},{"name":"originalPlayerBetValue","type":"uint256"}],"name":"ownerRefundPlayer","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newSafeGasToOraclize","type":"uint32"}],"name":"ownerSetOraclizeSafeGas","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"ownerkill","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"houseEdge","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"rollUnder","type":"uint256"}],"name":"playerRollDice","outputs":[],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"houseEdgeDivisor","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"maxPendingPayouts","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"},{"payable":true,"type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"BetID","type":"bytes32"},{"indexed":true,"name":"PlayerAddress","type":"address"},{"indexed":true,"name":"RewardValue","type":"uint256"},{"indexed":false,"name":"ProfitValue","type":"uint256"},{"indexed":false,"name":"BetValue","type":"uint256"},{"indexed":false,"name":"PlayerNumber","type":"uint256"}],"name":"LogBet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"BetID","type":"bytes32"},{"indexed":true,"name":"PlayerAddress","type":"address"},{"indexed":true,"name":"PlayerNumber","type":"uint256"},{"indexed":false,"name":"DiceResult","type":"uint256"},{"indexed":false,"name":"Value","type":"uint256"},{"indexed":false,"name":"Status","type":"int256"},{"indexed":false,"name":"Proof","type":"bytes"}],"name":"LogResult","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"BetID","type":"bytes32"},{"indexed":true,"name":"PlayerAddress","type":"address"},{"indexed":true,"name":"RefundValue","type":"uint256"}],"name":"LogRefund","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"SentToAddress","type":"address"},{"indexed":true,"name":"AmountTransferred","type":"uint256"}],"name":"LogOwnerTransfer","type":"event"}]

  Contract Creation Code Switch To Opcodes View
606060405234156200000d57fe5b5b60028054600160a060020a033316600160a060020a0319918216811790925560038054909116909117905562000053600064010000000062001be56200011882021704565b506200008d7f110000000000000000000000000000000000000000000000000000000000000064010000000062001f846200038082021704565b620000a86103a7640100000000620008f36200051082021704565b620000c36161a8640100000000620013796200053782021704565b620000e46702c68af0bb140000640100000000620013c66200058782021704565b6001805460a860020a63ffffffff0219167703d0900000000000000000000000000000000000000000001790555b620005ca565b60008062000148731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed64010000000062001bdd620005ae82021704565b11156200017e575060008054600160a060020a031916731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed17905560016200037b565b6000620001ad73c03a2615d5efaf5f49f60b7bb6583eaec212fdf164010000000062001bdd620005ae82021704565b1115620001e3575060008054600160a060020a03191673c03a2615d5efaf5f49f60b7bb6583eaec212fdf117905560016200037b565b60006200021273b7a07bcf2ba2f2703b24c0691b5278999c59ac7e64010000000062001bdd620005ae82021704565b111562000248575060008054600160a060020a03191673b7a07bcf2ba2f2703b24c0691b5278999c59ac7e17905560016200037b565b600062000277736f485c8bf6fc43ea212e93bbf8ce046c7f1cb47564010000000062001bdd620005ae82021704565b1115620002ad575060008054600160a060020a031916736f485c8bf6fc43ea212e93bbf8ce046c7f1cb47517905560016200037b565b6000620002dc7320e12a1f859b3feae5fb2a0a32c18f5a65555bbf64010000000062001bdd620005ae82021704565b111562000312575060008054600160a060020a0319167320e12a1f859b3feae5fb2a0a32c18f5a65555bbf17905560016200037b565b6000620003417351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa64010000000062001bdd620005ae82021704565b111562000377575060008054600160a060020a0319167351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa17905560016200037b565b5060005b919050565b600054600160a060020a03161580620003bb5750600054620003b990600160a060020a031664010000000062001bdd620005ae82021704565b155b15620003dd57620003db600064010000000062001be56200011882021704565b505b600060009054906101000a9004600160a060020a0316600160a060020a03166338cc48316000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401809050602060405180830381600087803b15156200045257fe5b60325a03f115156200046057fe5b505060408051805160018054600160a060020a031916600160a060020a0392831617908190557f688dcfd70000000000000000000000000000000000000000000000000000000083527fff000000000000000000000000000000000000000000000000000000000000008616600484015292519216925063688dcfd791602480830192600092919082900301818387803b1515620004fa57fe5b60325a03f115156200050857fe5b5050505b5b50565b60025433600160a060020a039081169116146200052d5760006000fd5b60058190555b5b50565b60025433600160a060020a03908116911614620005545760006000fd5b61c350811115620005655760006000fd5b60078190556200050c64010000000062001a6d620005b682021704565b5b5b50565b60025433600160a060020a03908116911614620005a45760006000fd5b60088190555b5b50565b803b5b919050565b600754600454620f424091025b046006555b565b6122c180620005da6000396000f300606060405236156101905763ffffffff60e060020a60003504166323214fab81146101a3578063268d50fe146101c557806327dc297e146101da578063301cf6e714610233578063313752421461025757806331b296291461027557806338bbfa501461027f57806339849771146103155780633a4f6999146103375780633c314a91146103595780634b7fcee7146103875780634f44728d1461039e57806355b93031146103bc5780635e968a49146103de57806361d027b3146103f35780636cdf4c901461041f5780636eacd48a146104345780637072a9771461044b5780637ac37d58146104745780638b7afe2e146104955780638da5cb5b146104b75780639619367d146104e3578063a5f4af3314610505578063b539cd5514610529578063b69f5ada1461054b578063befa1e2f1461056d578063c3de1ab91461058f578063cf832ce2146105b3578063d207e757146105da578063d263b7eb146105f5578063d667dcd714610607578063dc6dd15214610629578063e5c774de14610636578063ed62f50114610658575b6101a15b61019e602f61067a565b5b565b005b34156101ab57fe5b6101b36108ed565b60408051918252519081900360200190f35b34156101cd57fe5b6101a16004356108f3565b005b34156101e257fe5b60408051602060046024803582810135601f81018590048502860185019096528585526101a1958335959394604494939290920191819084018382808284375094965061091995505050505050565b005b341561023b57fe5b610243610949565b604080519115158252519081900360200190f35b341561025f57fe5b6101a1600160a060020a0360043516610959565b005b6101a1610995565b005b341561028757fe5b60408051602060046024803582810135601f81018590048502860185019096528585526101a1958335959394604494939290920191819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979998810197919650918201945092508291508401838280828437509496506109cc95505050505050565b005b341561031d57fe5b6101b36112c4565b60408051918252519081900360200190f35b341561033f57fe5b6101b36112cb565b60408051918252519081900360200190f35b341561036157fe5b6101b3600160a060020a03600435166112d0565b60408051918252519081900360200190f35b341561038f57fe5b6101a160043515156112ef565b005b34156103a657fe5b6101a1600160a060020a0360043516611338565b005b34156103c457fe5b6101b3611374565b60408051918252519081900360200190f35b34156103e657fe5b6101a1600435611379565b005b34156103fb57fe5b6104036113b7565b60408051600160a060020a039092168252519081900360200190f35b341561042757fe5b6101a16004356113c6565b005b341561043c57fe5b6101a160043515156113ec565b005b341561045357fe5b61045b611435565b6040805163ffffffff9092168252519081900360200190f35b341561047c57fe5b6101a1600160a060020a0360043516602435611448565b005b341561049d57fe5b6101b36114e8565b60408051918252519081900360200190f35b34156104bf57fe5b6104036114ee565b60408051600160a060020a039092168252519081900360200190f35b34156104eb57fe5b6101b36114fd565b60408051918252519081900360200190f35b341561050d57fe5b610243611503565b604080519115158252519081900360200190f35b341561053157fe5b6101b3611592565b60408051918252519081900360200190f35b341561055357fe5b6101b3611598565b60408051918252519081900360200190f35b341561057557fe5b6101b361159e565b60408051918252519081900360200190f35b341561059757fe5b6102436115a4565b604080519115158252519081900360200190f35b34156105bb57fe5b6101a1600435600160a060020a03602435166044356064356115b4565b005b34156105e257fe5b6101a163ffffffff60043516611650565b005b34156105fd57fe5b6101a16116a1565b005b341561060f57fe5b6101b36116ce565b60408051918252519081900360200190f35b6101a160043561067a565b005b341561063e57fe5b6101b36116d4565b60408051918252519081900360200190f35b341561066057fe5b6101b36116da565b60408051918252519081900360200190f35b6001805460009160a060020a90910460ff161515141561069a5760006000fd5b3482600654826103e8600554856106b28660016116e0565b6106bd8760016116e0565b60640388028115156106cb57fe5b0401028115156106d757fe5b040311806106e6575060085482105b806106f15750600281105b806106fc5750606381115b156107075760006000fd5b610773604060405190810160405280600681526020017f6e657374656400000000000000000000000000000000000000000000000000008152506101c0604051908101604052806101a081526020016120d66101a0913960015460a860020a900463ffffffff16611703565b6009805460019081019091556000828152600e6020908152604080832085905560138252808320899055600f82528083203490819055600c9092529091208054600160a060020a03191633600160a060020a0316179055600554929550916103e89183906107e29089906116e0565b6107ed8960016116e0565b60640334028115156107fb57fe5b04010281151561080757fe5b60008681526015602052604090209190049190910390819055600b5461082c91611a4a565b600b81905560045490106108405760006000fd5b6000838152600f60209081526040808320546015909252909120546108659190611a4a565b6000848152600c6020908152604080832054600e8352818420546015845282852054600f855283862054601386529584902054845191825294810195909552848301939093529051600160a060020a03909116927f1cb5bfc4e69cbacf65c8e05bdb84d7a327bd6bb4c034ff82359aefd7443775c4919081900360600190a45b5b50505b5050565b60075481565b60025433600160a060020a0390811691161461090f5760006000fd5b60058190555b5b50565b6108e98282600060405180591061092d5750595b908082528060200260200182016040525b506109cc565b5b5050565b60025460a060020a900460ff1681565b60025433600160a060020a039081169116146109755760006000fd5b60038054600160a060020a031916600160a060020a0383161790555b5b50565b60035433600160a060020a039081169116146109b15760006000fd5b6109bd60045434611a4a565b60045561019e611a6d565b5b5b565b6109d4611a81565b600160a060020a031633600160a060020a03161415156109f45760006000fd5b60025460a060020a900460ff16151560011415610a115760006000fd5b6000838152600c6020526040902054600160a060020a03161515610a355760006000fd5b610a3e82611bbd565b6000848152601160209081526040918290208390559051828152835160639392859291828201918401908083835b60208310610a8b5780518252601f199092019160209182019101610a6c565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120935050508215159050610ac357fe5b600085815260126020908152604080832094909306600101909355600c83528181208054600d85528383208054600160a060020a03909216600160a060020a0319928316179055815416905560158352818120805460169094529181209283559055600b549054610b3491906116e0565b600b556000838152600f602090815260408083208054601084528285205583905560129091529020541515610dee57600083815260136020908152604080832054600d835281842054600e8452828520546012855283862054601086529584902054845187815280870182905260039581018690526080606082018181528a519183019190915289519598600160a060020a0390951697939660008051602061227683398151915296939490938b93929160a0840191908501908083838215610c18575b805182526020831115610c1857601f199092019160209182019101610bf8565b505050905090810190601f168015610c445780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a46000838152600d60209081526040808320546010909252808320549051600160a060020a039092169281156108fc029290818181858888f193505050501515610de957600083815260136020908152604080832054600d835281842054600e8452828520546012855283862054601086529584902054845187815280870182905260049581018690526080606082018181528a519183019190915289519598600160a060020a0390951697939660008051602061227683398151915296939490938b93929160a0840191908501908083838215610d4c575b805182526020831115610d4c57601f199092019160209182019101610d2c565b505050905090810190601f168015610d785780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a46000838152600d6020908152604080832054600160a060020a031683526014825280832054868452601090925290912054610dc39190611a4a565b6000848152600d6020908152604080832054600160a060020a0316835260149091529020555b6112bb565b60008381526013602090815260408083205460129092529091205410156110f457600454600084815260166020526040902054610e2b91906116e0565b600455600083815260166020908152604080832054601090925290912054610e539190611a4a565b6000848152601660208181526040808420858155600a80549096019095556013825280842054600d835281852054600e8452828620546012855295839020549484529554825185815280850182905260019381018490526080606082018181528a519183019190915289519398600160a060020a0316979660008051602061227683398151915296909593948b93929160a0840191908501908083838215610f16575b805182526020831115610f1657601f199092019160209182019101610ef6565b505050905090810190601f168015610f425780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a4610f5a611a6d565b6000838152600d60209081526040808320546016909252808320549051600160a060020a039092169281156108fc029290818181858888f193505050501515610de957600083815260136020908152604080832054600d835281842054600e8452828520546012855283862054601686529584902054845187815280870182905260029581018690526080606082018181528a519183019190915289519598600160a060020a0390951697939660008051602061227683398151915296939490938b93929160a0840191908501908083838215611052575b80518252602083111561105257601f199092019160209182019101611032565b505050905090810190601f16801561107e5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a46000838152600d6020908152604080832054600160a060020a031683526014825280832054868452601690925290912054610dc39190611a4a565b6000848152600d6020908152604080832054600160a060020a0316835260149091529020555b6112bb565b600083815260136020908152604080832054601290925290912054106112bb57600083815260136020908152604080832054600d835281842054600e8452828520546012855283862054601086528487205485518281528088018290529586018890526080606087018181528a519188019190915289519598600160a060020a03909516979396600080516020612276833981519152969395929492938b9391929160a08401919085019080838382156111c9575b8051825260208311156111c957601f1990920191602091820191016111a9565b505050905090810190601f1680156111f55780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a4600454600084815260106020526040902054611225919060001901611a4a565b600455611230611a6d565b6000838152600d6020526040808220549051600160a060020a03909116919060019082818181858883f193505050501515610de9576000838152600d6020908152604080832054600160a060020a031683526014909152902054610dc3906001611a4a565b6000848152600d6020908152604080832054600160a060020a0316835260149091529020555b5b5b5b5b505050565b620f424081565b606381565b600160a060020a0381166000908152601460205260409020545b919050565b60025433600160a060020a0390811691161461130b5760006000fd5b6002805474ff0000000000000000000000000000000000000000191660a060020a831515021790555b5b50565b60025433600160a060020a039081169116146113545760006000fd5b60028054600160a060020a031916600160a060020a0383161790555b5b50565b600281565b60025433600160a060020a039081169116146113955760006000fd5b61c3508111156113a55760006000fd5b6007819055610915611a6d565b5b5b50565b600354600160a060020a031681565b60025433600160a060020a039081169116146113e25760006000fd5b60088190555b5b50565b60025433600160a060020a039081169116146114085760006000fd5b6001805474ff0000000000000000000000000000000000000000191660a060020a831515021790555b5b50565b60015460a860020a900463ffffffff1681565b60025433600160a060020a039081169116146114645760006000fd5b611470600454826116e0565b60045561147b611a6d565b604051600160a060020a0383169082156108fc029083906000818181858888f1935050505015156114ac5760006000fd5b6040518190600160a060020a038416907f42c501a185f41a8eb77b0a3e7b72a6435ea7aa752f8a1a0a13ca4628495eca9190600090a35b5b5050565b60045481565b600254600160a060020a031681565b60085481565b60006000600260149054906101000a900460ff1615156001151514156115295760006000fd5b50600160a060020a033316600081815260146020526040808220805490839055905190929183919081818185876185025a03f1925050501561156e576001915061158c565b600160a060020a033316600090815260146020526040812082905591505b5b5b5090565b60065481565b600a5481565b60095481565b60015460a060020a900460ff1681565b60025433600160a060020a039081169116146115d05760006000fd5b6115dc600b54836116e0565b600b55604051600160a060020a0384169082156108fc029083906000818181858888f1935050505015156116105760006000fd5b6040518190600160a060020a0385169086907f7b6ccf85690b8ce1b7d21a94ca738803a9da7dc74e10140f269efa0d8d6fb85190600090a45b5b50505050565b60025433600160a060020a0390811691161461166c5760006000fd5b6001805478ffffffff000000000000000000000000000000000000000000191660a860020a63ffffffff8416021790555b5b50565b60025433600160a060020a039081169116146116bd5760006000fd5b600254600160a060020a0316ff5b5b565b60055481565b6103e881565b600b5481565b60006116ec8383611bd2565b15156116f85760006000fd5b508082035b92915050565b600080548190600160a060020a03161580611730575060005461172e90600160a060020a0316611bdd565b155b156117415761173f6000611be5565b505b600060009054906101000a9004600160a060020a0316600160a060020a03166338cc48316000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b151561179c57fe5b60325a03f115156117a957fe5b505060408051805160018054600160a060020a031916600160a060020a039283161790819055600060209384015283517f2ef3accc00000000000000000000000000000000000000000000000000000000815260248101899052600481019485528a5160448201528a51919092169450632ef3accc938a93899391928392606401918601908083838215611858575b80518252602083111561185857601f199092019160209182019101611838565b505050905090810190601f1680156118845780820380516001836020036101000a031916815260200191505b509350505050602060405180830381600087803b15156118a057fe5b60325a03f115156118ad57fe5b505060405151915050670de0b6b3a76400003a8402018111156118d35760009150611a41565b600160009054906101000a9004600160a060020a0316600160a060020a031663c51be90f8260008888886000604051602001526040518663ffffffff1660e060020a028152600401808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360008314611973575b80518252602083111561197357601f199092019160209182019101611953565b505050905090810190601f16801561199f5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838382156119de575b8051825260208311156119de57601f1990920191602091820191016119be565b505050905090810190601f168015611a0a5780820380516001836020036101000a031916815260200191505b5096505050505050506020604051808303818588803b1515611a2857fe5b61235a5a03f11515611a3657fe5b505060405151935050505b5b509392505050565b6000611a568383611de2565b1515611a625760006000fd5b508181015b92915050565b600754600454620f424091025b046006555b565b60008054600160a060020a03161580611aac5750600054611aaa90600160a060020a0316611bdd565b155b15611abd57611abb6000611be5565b505b600060009054906101000a9004600160a060020a0316600160a060020a03166338cc48316000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b1515611b1857fe5b60325a03f11515611b2557fe5b505060408051805160018054600160a060020a031916600160a060020a0392831617908190556000602093840181905284517fc281d19e000000000000000000000000000000000000000000000000000000008152945191909216945063c281d19e9360048082019493918390030190829087803b1515611ba257fe5b60325a03f11515611baf57fe5b5050604051519150505b5b90565b6000611bca826000611df0565b90505b919050565b818111155b92915050565b803b5b919050565b60006000611c06731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed611bdd565b1115611c3a575060008054600160a060020a031916731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed17905560016112ea565b6000611c5973c03a2615d5efaf5f49f60b7bb6583eaec212fdf1611bdd565b1115611c8d575060008054600160a060020a03191673c03a2615d5efaf5f49f60b7bb6583eaec212fdf117905560016112ea565b6000611cac73b7a07bcf2ba2f2703b24c0691b5278999c59ac7e611bdd565b1115611ce0575060008054600160a060020a03191673b7a07bcf2ba2f2703b24c0691b5278999c59ac7e17905560016112ea565b6000611cff736f485c8bf6fc43ea212e93bbf8ce046c7f1cb475611bdd565b1115611d33575060008054600160a060020a031916736f485c8bf6fc43ea212e93bbf8ce046c7f1cb47517905560016112ea565b6000611d527320e12a1f859b3feae5fb2a0a32c18f5a65555bbf611bdd565b1115611d86575060008054600160a060020a0319167320e12a1f859b3feae5fb2a0a32c18f5a65555bbf17905560016112ea565b6000611da57351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa611bdd565b1115611dd9575060008054600160a060020a0319167351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa17905560016112ea565b5060005b919050565b808201829010155b92915050565b6000611dfa611f72565b5082600080805b8351811015611f525783517f300000000000000000000000000000000000000000000000000000000000000090859083908110611e3a57fe5b90602001015160f860020a900460f860020a02600160f860020a03191610158015611eb0575083517f390000000000000000000000000000000000000000000000000000000000000090859083908110611e9057fe5b90602001015160f860020a900460f860020a02600160f860020a03191611155b15611f0a578115611ecf57851515611ec757611f52565b600019909501945b5b600a8302925060308482815181101515611ee657fe5b90602001015160f860020a900460f860020a0260f860020a90040383019250611f48565b8381815181101515611f1857fe5b90602001015160f860020a900460f860020a02600160f860020a031916602e60f860020a021415611f4857600191505b5b5b600101611e01565b6000861115611f645785600a0a830292505b8294505b5050505092915050565b60408051602081019091526000815290565b600054600160a060020a03161580611fae5750600054611fac90600160a060020a0316611bdd565b155b15611fbf57611fbd6000611be5565b505b600060009054906101000a9004600160a060020a0316600160a060020a03166338cc48316000604051602001526040518163ffffffff1660e060020a028152600401809050602060405180830381600087803b151561201a57fe5b60325a03f1151561202757fe5b505060408051805160018054600160a060020a031916600160a060020a0392831617908190557f688dcfd70000000000000000000000000000000000000000000000000000000083527fff000000000000000000000000000000000000000000000000000000000000008616600484015292519216925063688dcfd791602480830192600092919082900301818387803b15156120c057fe5b60325a03f115156108e557fe5b5050505b5b5056005b55524c5d205b276a736f6e2868747470733a2f2f6170692e72616e646f6d2e6f72672f6a736f6e2d7270632f312f696e766f6b65292e726573756c742e72616e646f6d2e646174612e30272c20275c6e7b226a736f6e727063223a22322e30222c226d6574686f64223a2267656e65726174655369676e6564496e746567657273222c22706172616d73223a7b226170694b6579223a247b5b646563727970745d204244433831396e54596245694279722f69776e647a4e64534a394a474a475257774f546e464c687246637874576835334837737a63714861432b5a2f36554b483654364e35375269504e6d4257476546536d7155524855714353794e38766d556a566a3967456937486d436f516c4c53707838514a5456394f7868466634337538566e374475675a636779566350456b4573326c54503142586941647d2c226e223a312c226d696e223a312c226d6178223a3130302c227265706c6163656d656e74223a747275652c2262617365223a3130247b5b6964656e746974795d20227d227d2c226964223a31247b5b6964656e746974795d20227d227d275d631b7e83754f4cdc55b37da22c617abf4803c0263b8ea1a436d43eed60d6a1e8a165627a7a72305820f1ae9585307ee165eb7d9bf3324ba5b8d107da0e476a62014ad07e1d40c3aac50029

   Swarm Source:
bzzr://f1ae9585307ee165eb7d9bf3324ba5b8d107da0e476a62014ad07e1d40c3aac5

 

View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.