Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
- Contract name:
- Raffle
- Optimization enabled
- true
- Compiler version
- v0.4.25+commit.59dbf8f1
- Verified at
- 2018-10-09T02:53:22.488095Z
Contract source code
pragma solidity ^0.4.25;
contract Raffle {
address public charity = msg.sender;
uint public ticketPrice;
bool public raffleClosed = false;
bool public prizeClaimed = false;
uint public ticketsPurchased = 0;
mapping (uint => address) public ticketBuyers;
uint public amountRaised;
uint public winningTicketNumber;
bool public winnerApproved = false;
// event FundTransfer(address indexed backer, uint amount, bool isContribution);
modifier onlyBy(address _account) { require(msg.sender == _account); _; }
function Raffle(
uint szaboCostOfEachTicket
) public {
ticketPrice = szaboCostOfEachTicket * 1 szabo;
}
/**
* Fallback function
*
* The function without name is the default function that is called whenever anyone sends funds to a contract
*/
function () payable public{
require(!raffleClosed);
uint amount = msg.value;
uint quantity = amount / ticketPrice;
require(quantity >= 1 && quantity < 100);
for(uint i = ticketsPurchased; i < quantity;i++){
ticketBuyers[i] = msg.sender;
ticketsPurchased += 1;
}
amountRaised += msg.value;
}
function buyTicket() payable public{
require(!raffleClosed);
uint amount = msg.value;
uint quantity = amount / ticketPrice;
require(quantity >= 1 && quantity < 100);
for(uint i = ticketsPurchased; i < quantity;i++){
ticketBuyers[i] = msg.sender;
ticketsPurchased += 1;
}
amountRaised += msg.value;
}
function selectWinningNumber() onlyBy(charity) public{
uint winner = uint(keccak256(block.blockhash(block.number-1))) % ticketsPurchased;
winningTicketNumber = winner;
raffleClosed = true;
}
function claimPrize() public{
require(winnerApproved);
require(raffleClosed && !prizeClaimed);
require(msg.sender == ticketBuyers[winningTicketNumber]);
prizeClaimed = true;
msg.sender.transfer(amountRaised / 2);
}
function approveWinner() onlyBy(charity) public{
winnerApproved = true;
}
function withdrawEther() onlyBy(charity) public {
charity.transfer(this.balance);
}
}
Contract ABI
[{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"ticketPrice","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bool","name":""}],"name":"raffleClosed","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"winningTicketNumber","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"approveWinner","inputs":[],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bool","name":""}],"name":"winnerApproved","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"claimPrize","inputs":[],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"withdrawEther","inputs":[],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"amountRaised","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"bool","name":""}],"name":"prizeClaimed","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":""}],"name":"ticketsPurchased","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":""}],"name":"charity","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":""}],"name":"ticketBuyers","inputs":[{"type":"uint256","name":""}],"constant":true},{"type":"function","stateMutability":"payable","payable":true,"outputs":[],"name":"buyTicket","inputs":[],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"selectWinningNumber","inputs":[],"constant":false},{"type":"constructor","stateMutability":"nonpayable","payable":false,"inputs":[{"type":"uint256","name":"szaboCostOfEachTicket"}]},{"type":"fallback","stateMutability":"payable","payable":true}]
Contract Creation Code
0x608060405260008054600160a060020a031916331781556002805461ffff191690556003556007805460ff1916905534801561003a57600080fd5b506040516020806105cd833981016040525164e8d4a5100002600155610568806100656000396000f3006080604052600436106100cf5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631209b1f6811461016c5780634f032e9314610193578063569742f7146101bc5780635ace83d7146101d15780637014fe77146101e857806370740ac9146101fd5780637362377b146102125780637b3e5e7b146102275780639042bbf31461023c57806390a7ba5b14610251578063934aa02314610266578063ce010ba314610297578063edca914c146102af578063f35b6068146102b7575b6002546000908190819060ff16156100e657600080fd5b349250600154838115156100f657fe5b0491506001821015801561010a5750606482105b151561011557600080fd5b506003545b8181101561015f576000818152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff1916331790556003805460019081019091550161011a565b5050600580543401905550005b34801561017857600080fd5b506101816102cc565b60408051918252519081900360200190f35b34801561019f57600080fd5b506101a86102d2565b604080519115158252519081900360200190f35b3480156101c857600080fd5b506101816102db565b3480156101dd57600080fd5b506101e66102e1565b005b3480156101f457600080fd5b506101a8610309565b34801561020957600080fd5b506101e6610312565b34801561021e57600080fd5b506101e66103b3565b34801561023357600080fd5b5061018161040a565b34801561024857600080fd5b506101a8610410565b34801561025d57600080fd5b5061018161041e565b34801561027257600080fd5b5061027b610424565b60408051600160a060020a039092168252519081900360200190f35b3480156102a357600080fd5b5061027b600435610433565b6101e661044e565b3480156102c357600080fd5b506101e66104eb565b60015481565b60025460ff1681565b60065481565b600054600160a060020a03163381146102f957600080fd5b506007805460ff19166001179055565b60075460ff1681565b60075460ff16151561032357600080fd5b60025460ff16801561033d5750600254610100900460ff16155b151561034857600080fd5b600654600090815260046020526040902054600160a060020a0316331461036e57600080fd5b6002805461010061ff0019909116178155600554604051339290910480156108fc02916000818181858888f193505050501580156103b0573d6000803e3d6000fd5b50565b600054600160a060020a03163381146103cb57600080fd5b60008054604051600160a060020a0390911691303180156108fc02929091818181858888f19350505050158015610406573d6000803e3d6000fd5b5050565b60055481565b600254610100900460ff1681565b60035481565b600054600160a060020a031681565b600460205260009081526040902054600160a060020a031681565b6002546000908190819060ff161561046557600080fd5b3492506001548381151561047557fe5b049150600182101580156104895750606482105b151561049457600080fd5b506003545b818110156104de576000818152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19163317905560038054600190810190915501610499565b5050600580543401905550565b60008054600160a060020a031633811461050457600080fd5b600354604080516000194301408152905190819003602001902081151561052757fe5b0660065550506002805460ff191660011790555600a165627a7a723058201ff834eac0c02e7596869bc4f0e5903eaca8415033c364dc4cf59a8bcf16a370002900000000000000000000000000000000000000000000000000000000000003e8
Deployed ByteCode
0x6080604052600436106100cf5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416631209b1f6811461016c5780634f032e9314610193578063569742f7146101bc5780635ace83d7146101d15780637014fe77146101e857806370740ac9146101fd5780637362377b146102125780637b3e5e7b146102275780639042bbf31461023c57806390a7ba5b14610251578063934aa02314610266578063ce010ba314610297578063edca914c146102af578063f35b6068146102b7575b6002546000908190819060ff16156100e657600080fd5b349250600154838115156100f657fe5b0491506001821015801561010a5750606482105b151561011557600080fd5b506003545b8181101561015f576000818152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff1916331790556003805460019081019091550161011a565b5050600580543401905550005b34801561017857600080fd5b506101816102cc565b60408051918252519081900360200190f35b34801561019f57600080fd5b506101a86102d2565b604080519115158252519081900360200190f35b3480156101c857600080fd5b506101816102db565b3480156101dd57600080fd5b506101e66102e1565b005b3480156101f457600080fd5b506101a8610309565b34801561020957600080fd5b506101e6610312565b34801561021e57600080fd5b506101e66103b3565b34801561023357600080fd5b5061018161040a565b34801561024857600080fd5b506101a8610410565b34801561025d57600080fd5b5061018161041e565b34801561027257600080fd5b5061027b610424565b60408051600160a060020a039092168252519081900360200190f35b3480156102a357600080fd5b5061027b600435610433565b6101e661044e565b3480156102c357600080fd5b506101e66104eb565b60015481565b60025460ff1681565b60065481565b600054600160a060020a03163381146102f957600080fd5b506007805460ff19166001179055565b60075460ff1681565b60075460ff16151561032357600080fd5b60025460ff16801561033d5750600254610100900460ff16155b151561034857600080fd5b600654600090815260046020526040902054600160a060020a0316331461036e57600080fd5b6002805461010061ff0019909116178155600554604051339290910480156108fc02916000818181858888f193505050501580156103b0573d6000803e3d6000fd5b50565b600054600160a060020a03163381146103cb57600080fd5b60008054604051600160a060020a0390911691303180156108fc02929091818181858888f19350505050158015610406573d6000803e3d6000fd5b5050565b60055481565b600254610100900460ff1681565b60035481565b600054600160a060020a031681565b600460205260009081526040902054600160a060020a031681565b6002546000908190819060ff161561046557600080fd5b3492506001548381151561047557fe5b049150600182101580156104895750606482105b151561049457600080fd5b506003545b818110156104de576000818152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff19163317905560038054600190810190915501610499565b5050600580543401905550565b60008054600160a060020a031633811461050457600080fd5b600354604080516000194301408152905190819003602001902081151561052757fe5b0660065550506002805460ff191660011790555600a165627a7a723058201ff834eac0c02e7596869bc4f0e5903eaca8415033c364dc4cf59a8bcf16a3700029