彩票合约

参考


contract Bet {
  address owner; 

  // every vote info
  struct Betinfo {
    address addr;
    bytes32 choice;
  }

  // all voted info
  Betinfo[] public bts;
  uint public length;

  function Bet() {
    owner = msg.sender;
  }

  function kill() {
    if (msg.sender == owner)
      suicide(owner);
  }

  function getBalance() public constant returns (uint) {
    return this.balance;
  }

  function getNums() public constant returns (uint)  {
    return bts.length;
  }

  function adminWithdraw() {
    if (owner != msg.sender)
      return;
    msg.sender.send(this.balance);
  }

  function doBet(bytes32 choice) public {
    bts.push(Betinfo({addr: msg.sender, choice:choice}));
    length = bts.length;
  }

  function drawLotterty(bytes32 luckyone) public {
    if (owner != msg.sender)
      throw;

    var count = 0;
    uint256 permoney = 0;
    var i = 0;

    for (i = 0; i < bts.length; i++) {
      if (bts[i].choice == luckyone) {
        count++;
        }
    }

    permoney = this.balance / count;

    // send the money
    for (i = 0; i < bts.length; i++) {
      if (bts[i].choice == luckyone) {
        bts[i].addr.send(permoney);
        }
    }
    
    delete bts;
    
    length = 0;
  }

}

  • push();
  • delete bts;
  • constant 修饰符

log.Println("v.id:", v.Id_) // v.id: ObjectIdHex("574418a5e046861c33000001")
hex := v.Id_.Hex()
log.Println("hex:", hex) // hex: 574418a5e046861c33000001
objhex := bson.ObjectIdHex(hex)
log.Println("objhex:", objhex) // objhex: ObjectIdHex("574418a5e046861c33000001")