Bitcoin Forum
November 17, 2024, 07:53:02 PM *
News: Check out the artwork 1Dq created to commemorate this forum's 15th anniversary
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: High-paced Bitcoin Raffle  (Read 1712 times)
coingenuity (OP)
Member
**
Offline Offline

Activity: 64
Merit: 10


View Profile WWW
July 11, 2011, 12:45:20 PM
Last edit: July 16, 2011, 01:38:20 AM by coingenuity
 #1

...is in development! Current status, early beta.

Status:
-Buy-in is 0.1BTC, payout is anywhere from 5 up to 25 BTC per raffle.
-All transactions verified on blockexplorer as links directly from the raffle page or by searching the playing address
-AJAX user interface for watching the raffle progress live
-automatic winner selection and payout
-integrated random.org random number generation
-jackpot progress display
-total tickets bought display
-live transaction feed
-site design
-domain name(still propegating)
-new server to host


TBD:
-ticket crediting via total btc sent per raffle instead of total 0.1btc entries per raffle
-Test autopayout system & scalability with tiny raffles of .5 - 2.5BTC
-DB system to support the above(bring me my equipment, UPS!)
-Install site + application + DB + bitcoind on new server
-point domain once propegated


I'm too tired to type any more now, but I'll be back with another status update tomorrow. If anyone wants to help me test, the current playing address is 1Ci9uFy43AdGp6UeCHohLLZ6PgaibSkyq2. Any BTC you send will roll into the first raffle, but will mainly let me finalize the ticket crediting system to accept denominations of greater than 0.1BTC so that you can buy as many entries as you want with one transaction. This is mainly for convenience of use, but also cuts the number of transaction fees charged by the bitcoin network per jackpot won so that your winnings are intact.

70692 blocks downloaded so far, hopefully I'll see a couple satoshi incumbent when my raffle daemon catches up to the network!

coingenuity (OP)
Member
**
Offline Offline

Activity: 64
Merit: 10


View Profile WWW
July 11, 2011, 11:29:19 PM
 #2

Going to cash my paycheck, so I can come back here and buy a server + domain.

Good times!

peach
Newbie
*
Offline Offline

Activity: 56
Merit: 0



View Profile
July 11, 2011, 11:36:48 PM
 #3

Looks like somebody missed the memo.

http://forum.bitcoin.org/index.php?board=56.0
coingenuity (OP)
Member
**
Offline Offline

Activity: 64
Merit: 10


View Profile WWW
July 12, 2011, 02:10:54 AM
 #4

Yes, yes I did! Thanks for the post, +1 awesome points to you.

GeniuSxBoY
Hero Member
*****
Offline Offline

Activity: 616
Merit: 500


View Profile
July 12, 2011, 02:12:55 AM
 #5

More like High-priced Bitcoin Roffle!  Cheesy

Be humble!
bitlotto
Hero Member
*****
Offline Offline

Activity: 672
Merit: 500


BitLotto - best odds + best payouts + cheat-proof


View Profile WWW
July 12, 2011, 02:28:22 AM
 #6

Interesting. As someone who operates a raffle myself I was wondering:
-how is the winner picked?

Quote
automatic winner selection and payout
integrated random.org random number generation

For jackpot type lotteries, just using random data on your server makes it easy for the operator to cheat. Will there be some way other independent sources can get the same random data?

-Are you going to use your own database for the tickets?


I know some know this, but you HAVE TO warn people not to just send money to an address. Whoever sends using an online bitcoin service will pretty much lose their money! I'm assuming you'll send back to the sender???

Good luck on your venture! 

*Next Draw Feb 1*  BitLotto: monthly raffle (0.25 BTC per ticket) Completely transparent and impossible to manipulate who wins. TOR
TOR2WEB
Donations to: 1JQdiQsjhV2uJ4Y8HFtdqteJsZhv835a8J are appreciated.
coingenuity (OP)
Member
**
Offline Offline

Activity: 64
Merit: 10


View Profile WWW
July 12, 2011, 10:08:07 AM
 #7

Interesting. As someone who operates a raffle myself I was wondering:
-how is the winner picked?

When all tickets are purchased(number of which predetermined by script at start of round via random.org) each ticket has had a unique number assigned. A random.org integer is chosen within the bounds of 1 and the last ticket number, and all tickets are iterated through. When a ticket's number is found to be the same as the random.org integer generated before iteration started, the address that the ticket was purchased from is extracted from the winning transaction and the jackpot contents are sent.

Quote
For jackpot type lotteries, just using random data on your server makes it easy for the operator to cheat. Will there be some way other independent sources can get the same random data?

Toss some ideas at me for ways to make the winner selection numeracy totally transparent for end users and I'll implement the best one. I'm including links to the blockexplorer transaction data for each buyin and payout for posterity, but as far as I can see any transparency I provide on the random number generation could be disbelieved by anyone with enough willpower. In the end, I guess it comes down to trusting me and random.org. It doesn't look like there's any way to list the history of random.org numbers generated, but like I said bounce some ideas off me and I'll gladly implement one.


Quote
-Are you going to use your own database for the tickets?

Yep. I'm moving my office into a datacenter in the next couple of weeks, so fiber and rackspace aren't a big issue for me. Also....I'm going to be using a corporate scale db platform utilized for 1bn+ entries that's redundant, hot-swappable, etc, so that the raffle can eventually operate in as fast-paced a way as it's designed.

Quote
I know some know this, but you HAVE TO warn people not to just send money to an address. Whoever sends using an online bitcoin service will pretty much lose their money! I'm assuming you'll send back to the sender???

Good luck on your venture!

Thanks for making that point, it should go without saying but cannot! The raffle DOES pay to the sending address, so if your e-wallet provider doesn't route incoming BTC from your sending address back to you, you should only purchase raffle tickets from the original bitcoin client after you've sent them to yourself from your e-wallet.

bitlotto
Hero Member
*****
Offline Offline

Activity: 672
Merit: 500


BitLotto - best odds + best payouts + cheat-proof


View Profile WWW
July 12, 2011, 12:59:39 PM
 #8

When a ticket's number is found to be the same as the random.org integer generated before iteration started, the address that the ticket was purchased from is extracted from the winning transaction and the jackpot contents are sent.
In my humble opinion the target number for winning should NEVER be known until all tickets are bought. For small jackpots/prizes its ok, but anything big, and it makes it way too easy to cheat. For anything big you have to make it such that even you can't make yourself win. People need to be able know for sure that they weren't cheated. It's possible, just trickier to do.

Quote
but as far as I can see any transparency I provide on the random number generation could be disbelieved by anyone with enough willpower
It's because it can't be checked. Anyone could say they are getting the number from random.org but there is no way to verify that. The person could be manually picking a number.

Some possible things you could use:

-an announced hash of a block hash or something in the future and use hash digits as random data
(only flaw is that blocks can be manipulated by a player with enough computing power to maybe give them an extra chance at what block is used by not submitting it - highly unlikely and hard to do)

-I use a sha256 hash of a block with a set date agreed upon before hand along with real world lottery numbers AFTER all the tickets are sold: sha256 (blockhash+megamillionsnumbers)
Doing this it's *impossible* to cheat!!  To cheat they would have to cheat the mega millions lottery and only knowing what numbers they need a few hours ago!
-the main disadvantage is that the data has to be manually entered or automatically retrieved from a website and it's less flexible when you get your random data. For me, I can only do draws twice a week at most unless I use other lotteries too. It is the most reliable though and cheat-proof.


Quote
Also....I'm going to be using a corporate scale db platform utilized for 1bn+ entries that's redundant, hot-swappable, etc, so that the raffle can eventually operate in as fast-paced a way as it's designed.
Because you are doing the lottery off of your servers, your BIGGEST issues will probably be making sure data is never lost and people hacking your server or even seizures depending on where you live. Depending on the amounts, people will probably attempt stealing or manipulating your database. You probably already thought of that though...

I think you could have an interesting thing here. It will take some work but it does have potential. When are you expecting a website showing what it does? I'd be interested in taking a sneak peak if you have one with tiny amounts or something! (As you can see, my main interest and focus is lotteries!  Grin ) I actually want a few honest lotteries around. It's good for the bitcoin gambling community to have honest operators. If all we had were scams, no one would play anymore! Good luck!

*Next Draw Feb 1*  BitLotto: monthly raffle (0.25 BTC per ticket) Completely transparent and impossible to manipulate who wins. TOR
TOR2WEB
Donations to: 1JQdiQsjhV2uJ4Y8HFtdqteJsZhv835a8J are appreciated.
coingenuity (OP)
Member
**
Offline Offline

Activity: 64
Merit: 10


View Profile WWW
July 13, 2011, 11:21:01 AM
 #9

When a ticket's number is found to be the same as the random.org integer generated before iteration started, the address that the ticket was purchased from is extracted from the winning transaction and the jackpot contents are sent.
In my humble opinion the target number for winning should NEVER be known until all tickets are bought. For small jackpots/prizes its ok, but anything big, and it makes it way too easy to cheat. For anything big you have to make it such that even you can't make yourself win. People need to be able know for sure that they weren't cheated. It's possible, just trickier to do.

Yeah, I agree. An excerpt from the payout logic:
Code:
if($purchased_tickets == $total_tickets) {
//start random winner selection process

Quote
Quote
but as far as I can see any transparency I provide on the random number generation could be disbelieved by anyone with enough willpower
It's because it can't be checked. Anyone could say they are getting the number from random.org but there is no way to verify that. The person could be manually picking a number.

Some possible things you could use:

-an announced hash of a block hash or something in the future and use hash digits as random data
(only flaw is that blocks can be manipulated by a player with enough computing power to maybe give them an extra chance at what block is used by not submitting it - highly unlikely and hard to do)

-I use a sha256 hash of a block with a set date agreed upon before hand along with real world lottery numbers AFTER all the tickets are sold: sha256 (blockhash+megamillionsnumbers)
Doing this it's *impossible* to cheat!!  To cheat they would have to cheat the mega millions lottery and only knowing what numbers they need a few hours ago!
-the main disadvantage is that the data has to be manually entered or automatically retrieved from a website and it's less flexible when you get your random data. For me, I can only do draws twice a week at most unless I use other lotteries too. It is the most reliable though and cheat-proof.

I've got a few ideas to play with, but I'll keep them to myself until they're more well-formed.
Quote

Quote
Also....I'm going to be using a corporate scale db platform utilized for 1bn+ entries that's redundant, hot-swappable, etc, so that the raffle can eventually operate in as fast-paced a way as it's designed.
Because you are doing the lottery off of your servers, your BIGGEST issues will probably be making sure data is never lost and people hacking your server or even seizures depending on where you live. Depending on the amounts, people will probably attempt stealing or manipulating your database. You probably already thought of that though...

Good thing I'm using a specialized DB platform that nobody except massive corporations uses. No injection vulnerabilities, collision issues, sharding in buckets, etc. Wink


Quote
I think you could have an interesting thing here. It will take some work but it does have potential. When are you expecting a website showing what it does? I'd be interested in taking a sneak peak if you have one with tiny amounts or something! (As you can see, my main interest and focus is lotteries!  Grin ) I actually want a few honest lotteries around. It's good for the bitcoin gambling community to have honest operators. If all we had were scams, no one would play anymore! Good luck!


I'm expecting to have a site up in the next day or two, with an active beta running within the week. Gotta finish the codebase and run a stress test, buy a domain, and install/configure the app on my dedicated server. I've got a sneak peak, but it's useless to look at right now. Since my current server couldn't handle the load my app put on it, I shut down bitcoind and the raffle app for now. Sadly, real life has gotten in the way of messing around with the raffle over the last couple of days, and my immediate need for cash takes precedence over the raffle, but I'll be getting it all handled by this Monday.

As far as honest BTC service operators, it's a pretty clear choice for any competent developer to be honest. After all, our small service fee combined with donations from happy customers easily outweighs the payout from scamming a couple of people out of some small change. Besides, it's not as if the bitcoin community isn't tiny anyway, any bad apples get tossed in the garbage pretty quick.

So, long story short, I'll definitely keep you posted!

coingenuity (OP)
Member
**
Offline Offline

Activity: 64
Merit: 10


View Profile WWW
July 15, 2011, 10:25:51 AM
 #10

Domain: propegating.
Site: designed.
Server: shipping.

coingenuity (OP)
Member
**
Offline Offline

Activity: 64
Merit: 10


View Profile WWW
July 16, 2011, 02:25:15 AM
 #11

Site design is cleaned up a bit, including silly but mandatory things like a nice favicon. Code is also cleaned up a bit, optimized everything for performance so that even on the off chance that an AJAX request occurs at the exact same time as a slow request to the Bitcoin network, that user's browser will still display the right information, if slightly older by a few seconds. So, as soon as my server gets here, probably Monday, the site will go live.

Smiley

Anonymous
Guest

July 16, 2011, 03:19:23 AM
 #12

I support any raffle that doesnt go into general revenue for the state.

Any chance of raffling things other than bitcoins - for bitcoins ?


ie-
http://www.rslartunion.com.au/home.aspx

The profits of which could go to developing more bitcoin services ?
coingenuity (OP)
Member
**
Offline Offline

Activity: 64
Merit: 10


View Profile WWW
July 16, 2011, 08:10:38 AM
 #13

I support any raffle that doesnt go into general revenue for the state.

Any chance of raffling things other than bitcoins - for bitcoins ?


ie-
http://www.rslartunion.com.au/home.aspx

The profits of which could go to developing more bitcoin services ?

Yep! I don't want to get too much into it, since that venture is so immature as of yet, but there will be raffles for physical goods starting soon. Throw some item types at me that you'd like to see raffled Smiley

coingenuity (OP)
Member
**
Offline Offline

Activity: 64
Merit: 10


View Profile WWW
July 18, 2011, 12:01:40 AM
 #14

I support any raffle that doesnt go into general revenue for the state.

Any chance of raffling things other than bitcoins - for bitcoins ?

Throw some item types at me that you'd like to see raffled Smiley

The same goes for anyone else who's got some items they'd like to see raffled for BTC.

Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!