ETH Price: $2,670.29 (-2.71%)

Contract

0x6C3D6042aCBE074dceC93EeCF53eAd1aC5D0a0A9
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Betting Cond...45273292017-11-10 17:17:472660 days ago1510334267IN
0x6C3D6042...aC5D0a0A9
0 ETH0.0006578420

Advanced mode:
Parent Transaction Hash Block
From
To
View All Internal Transactions
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xf0b02cd3...C53f82e3b
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
bet_various_v2

Compiler Version
v0.4.11+commit.68ef5810

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2017-11-10
*/

pragma solidity ^0.4.7;

contract bet_various_v2{
    enum State { Started, Locked }
  State public state = State.Started;
  struct Guess{
    address addr;
    uint    guess;
  }
  uint arraysize=1000;
  uint constant maxguess=1000000;
  uint bettingprice = 0.01 ether;
  uint statusprice = 0.01 ether;
  Guess[1000] guesses;
  uint    numguesses = 0;
  bytes32 curhash = '';
  
  uint stasticsarrayitems = 20;
  uint[20] statistics;

  uint _gameindex = 1;
  
  struct Winner{
    address addr;
  }
  Winner[1000] winnners;
  uint    numwinners = 0;

  modifier inState(State _state) {
      require(state == _state);
      _;
  }
 
  address developer = 0x0;
  event SentPrizeToWinner(address winner, uint money, uint guess, uint gameindex, uint lotterynumber, uint timestamp);
  event SentDeveloperFee(uint amount, uint balance);

  function bet_various_v2() 
  {
    if(developer==address(0)){
      developer = msg.sender;
    }
  }

  function setBettingCondition(uint _contenders, uint _bettingprice)
  {
    if(msg.sender != developer)
      return;
  	arraysize  = _contenders;
  	if(arraysize>1000)
  	  arraysize = 1000;
  	bettingprice = _bettingprice;
  }
  
  function getMaxContenders() constant returns(uint){
  	return arraysize;
  }

  function getBettingPrice() constant returns(uint){
  	return bettingprice;
  }
    
  function findWinners(uint value) returns (uint)
  {
    numwinners = 0;
    uint lastdiff = maxguess;
    uint i = 0;
    int diff = 0;
    uint guess = 0;
    for (i = 0; i < numguesses; i++) {
      diff = (int)((int)(value)-(int)(guesses[i].guess));
      if(diff<0)
        diff = diff*-1;
      if(lastdiff>(uint)(diff)){
        guess = guesses[i].guess;
        lastdiff = (uint)(diff);
      }
    }
    
    for (i = 0; i < numguesses; i++) {
      diff = (int)((int)(value)-(int)(guesses[i].guess));
      if(diff<0)
        diff = diff*-1;
      if(lastdiff==uint(diff)){
        winnners[numwinners++].addr = guesses[i].addr;
      }
    }
    return guess;
  }
  
  function getDeveloperAddress() constant returns(address)
  {
    return developer;
  }
  
  function getDeveloperFee() constant returns(uint)
  {
    uint developerfee = this.balance/100;
    return developerfee;
  }
  
  function getBalance() constant returns(uint)
  {
     return this.balance;
  }
  
  function getLotteryMoney() constant returns(uint)
  {
    uint developerfee = getDeveloperFee();
    uint prize = (this.balance - developerfee)/(numwinners<1?1:numwinners);
    return prize;
  }

  function getBettingStastics() 
    payable
    returns(uint[20])
  {
    require(msg.value == statusprice); // 0.01 eth
    return statistics;
  }
  
  function getBettingStatus()
    constant
    returns (uint, uint, uint, uint, uint)
  {
    return ((uint)(state), numguesses, getLotteryMoney(), this.balance, bettingprice);
  }
  
  function setStatusPrice(uint value)
  {
      if(msg.sender != developer)
        return;
      statusprice = value;
  }
  function finish()
  {
    if(msg.sender != developer)
      return;
    _finish();
  }
  
  function _finish() private
  {
    state = State.Locked;

    uint lotterynumber = (uint(curhash)+block.timestamp)%(maxguess+1);
    // now that we know the random number was safely generate, let's do something with the random number..
    var guess = findWinners(lotterynumber);
    uint prize = getLotteryMoney();
    uint remain = this.balance - (prize*numwinners);
    for (uint i = 0; i < numwinners; i++) {
      address winner = winnners[i].addr;
      winner.transfer(prize);
      SentPrizeToWinner(winner, prize, guess, _gameindex, lotterynumber, block.timestamp);
    }
    // give delveoper the money left behind
    SentDeveloperFee(remain, this.balance);
    developer.transfer(remain); 
    
    numguesses = 0;
    for (i = 0; i < stasticsarrayitems; i++) {
      statistics[i] = 0;
    }
    _gameindex++;
    state = State.Started;
  }

  function addguess(uint guess) 
    inState(State.Started)
    payable
  {
    require(msg.value == bettingprice);
    
    uint divideby = maxguess/stasticsarrayitems;
    curhash = sha256(block.timestamp, block.coinbase, block.difficulty, curhash);
    if((uint)(numguesses+1)<=arraysize) {
      guesses[numguesses++] = Guess(msg.sender, guess);
      uint statindex = guess / divideby;
      if(statindex>=stasticsarrayitems) statindex = stasticsarrayitems-1;
      statistics[statindex] ++;
      if((uint)(numguesses)>=arraysize){
        _finish();
      }
    }
  }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"getBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getBettingStatus","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getDeveloperAddress","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"findWinners","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getMaxContenders","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"getBettingStastics","outputs":[{"name":"","type":"uint256[20]"}],"payable":true,"type":"function"},{"constant":true,"inputs":[],"name":"getBettingPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getDeveloperFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getLotteryMoney","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_contenders","type":"uint256"},{"name":"_bettingprice","type":"uint256"}],"name":"setBettingCondition","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"state","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"guess","type":"uint256"}],"name":"addguess","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[],"name":"finish","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"setStatusPrice","outputs":[],"payable":false,"type":"function"},{"inputs":[],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"winner","type":"address"},{"indexed":false,"name":"money","type":"uint256"},{"indexed":false,"name":"guess","type":"uint256"},{"indexed":false,"name":"gameindex","type":"uint256"},{"indexed":false,"name":"lotterynumber","type":"uint256"},{"indexed":false,"name":"timestamp","type":"uint256"}],"name":"SentPrizeToWinner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"balance","type":"uint256"}],"name":"SentDeveloperFee","type":"event"}]

Deployed Bytecode

0x606060405236156100ce576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806312065fe0146100d0578063179dfbf3146100f657806322a27f3b14610138578063307f6b121461018a5780633bee8726146101be578063479e393c146101e457806371b804ee1461023857806377482b181461025e5780637842aded146102845780637847352a146102aa578063c19d93fb146102d3578063ccd1a62114610307578063d56b28891461031f578063fe04cb1d14610331575bfe5b34156100d857fe5b6100e0610351565b6040518082815260200191505060405180910390f35b34156100fe57fe5b610106610371565b604051808681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b341561014057fe5b6101486103cf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561019257fe5b6101a860048080359060200190919050506103fb565b6040518082815260200191505060405180910390f35b34156101c657fe5b6101ce6105de565b6040518082815260200191505060405180910390f35b6101ec6105e9565b6040518082601460200280838360008314610226575b80518252602083111561022657602082019150602081019050602083039250610202565b50505090500191505060405180910390f35b341561024057fe5b610248610647565b6040518082815260200191505060405180910390f35b341561026657fe5b61026e610652565b6040518082815260200191505060405180910390f35b341561028c57fe5b610294610684565b6040518082815260200191505060405180910390f35b34156102b257fe5b6102d160048080359060200190919080359060200190919050506106da565b005b34156102db57fe5b6102e3610760565b604051808260018111156102f357fe5b60ff16815260200191505060405180910390f35b61031d6004808035906020019091905050610773565b005b341561032757fe5b61032f610997565b005b341561033957fe5b61034f60048080359060200190919050506109ff565b005b60003073ffffffffffffffffffffffffffffffffffffffff163190505b90565b60006000600060006000600060009054906101000a900460ff16600181111561039657fe5b6107d4546103a2610684565b3073ffffffffffffffffffffffffffffffffffffffff1631600254945094509450945094505b9091929394565b6000610bd560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b90565b600060006000600060006000610bd481905550620f42409350600092506000915060009050600092505b6107d4548310156104b7576004836103e88110151561044057fe5b6002020160005b506001015486039150600082121561047f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820291505b818411156104a9576004836103e88110151561049757fe5b6002020160005b506001015490508193505b5b8280600101935050610425565b600092505b6107d4548310156105d1576004836103e8811015156104d757fe5b6002020160005b5060010154860391506000821215610516577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820291505b818414156105c3576004836103e88110151561052e57fe5b6002020160005b5060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166107ec610bd46000815480929190600101919050556103e88110151561057c57fe5b0160005b5060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b82806001019350506104bc565b8094505b50505050919050565b600060015490505b90565b6105f1610d4d565b600354341415156106025760006000fd5b6107d760148060200260405190810160405280929190826014801561063c576020028201915b815481526020019060010190808311610628575b505050505090505b90565b600060025490505b90565b6000600060643073ffffffffffffffffffffffffffffffffffffffff163181151561067957fe5b0490508091505b5090565b600060006000610692610652565b91506001610bd454106106a857610bd4546106ab565b60015b823073ffffffffffffffffffffffffffffffffffffffff1631038115156106ce57fe5b0490508092505b505090565b610bd560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107375761075c565b816001819055506103e86001541115610754576103e86001819055505b806002819055505b5050565b600060009054906101000a900460ff1681565b60006000600080600181111561078557fe5b600060009054906101000a900460ff1660018111156107a057fe5b1415156107ad5760006000fd5b600254341415156107be5760006000fd5b6107d654620f42408115156107cf57fe5b04925060024241446107d554600060405160200152604051808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401838152602001826000191660001916815260200194505050505060206040518083038160008661646e5a03f1151561086357fe5b5050604051805190506107d5816000191690555060015460016107d4540111151561098f576040604051908101604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018581525060046107d46000815480929190600101919050556103e8811015156108d557fe5b6002020160005b5060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010155905050828481151561093c57fe5b0491506107d654821015156109555760016107d6540391505b6107d78260148110151561096557fe5b0160005b81548092919060010191905055506001546107d45410151561098e5761098d610a67565b5b5b5b5b50505050565b610bd560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109f4576109fd565b6109fc610a67565b5b565b610bd560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a5c57610a64565b806003819055505b50565b6000600060006000600060006001600060006101000a81548160ff02191690836001811115610a9257fe5b02179055506001620f424001426107d5546001900401811515610ab157fe5b069550610abd866103fb565b9450610ac7610684565b9350610bd45484023073ffffffffffffffffffffffffffffffffffffffff1631039250600091505b610bd454821015610c12576107ec826103e881101515610b0b57fe5b0160005b5060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166108fc859081150290604051809050600060405180830381858888f193505050501515610b7657fe5b7f16772b6ac3e9823e1f39326dbe356dac767fad821f4a2af003066838235e1bbd8185876107eb548a42604051808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001868152602001858152602001848152602001838152602001828152602001965050505050505060405180910390a15b8180600101925050610aef565b7ff758ff59202247fe26bd4bd951f620cf543dc36b500de667d055cb5816def873833073ffffffffffffffffffffffffffffffffffffffff1631604051808381526020018281526020019250505060405180910390a1610bd560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051809050600060405180830381858888f193505050501515610ccb57fe5b60006107d481905550600091505b6107d654821015610d0d5760006107d783601481101515610cf657fe5b0160005b50819055505b8180600101925050610cd9565b6107eb600081548092919060010191905055506000600060006101000a81548160ff02191690836001811115610d3f57fe5b02179055505b505050505050565b610280604051908101604052806014905b6000815260200190600190039081610d5e57905050905600a165627a7a72305820279340ff11bd95a6290bdc6e3a53381279e3cd32dad0750a2fa9b9e7b7bb69ca0029

Swarm Source

bzzr://279340ff11bd95a6290bdc6e3a53381279e3cd32dad0750a2fa9b9e7b7bb69ca

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

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