Title: Gambling site Post by: recan86 on August 25, 2014, 12:13:28 AM Doing a documentary on gambling sites. Just how does one put up such a site? How much effort does this take? Pm me if you can contribute or write responses below.
I just want to make an all inclusive video from start to finish, even the technical cost of running a server or maybe you just do it from home. I don't know. Title: Re: Gambling site Post by: espringe on August 25, 2014, 03:36:16 AM I run https://www.moneypot.com/ so I can answer your questions.
From an engineering perspective, the hardest and most surprising part how difficult it is to make a bitcoin transaction (to process a withdrawal). The first problem is running out of available outputs. The problem with this, is all transactions source 1 or more outputs, but result in 0 or 1 change output. I don't want to spend from unconfirmed outputs [see below], and don't want to batch up payments [I want to pay people instantly] -- so this ends up being quite a big pain in the ass. Basically I need to design a system that converges on N outputs as opposed to the default of converging on 1. And the second problem is resending unconfirmed transactions (possibly with an increase in fees) -- but you need to be careful of malleability concerns, and send the second transaction in a way that would conflict with the original one. To be honest, none of that is that hard. Just amazing that, other than the centralized coinbase service, there seems to be no software that allows me to reliably send transactions! And it's something you really want to get right, and not screw up. --- The hardest part for my game in particular was because I wanted to create a unique game with the following aspects: * Has skill, and that skill must be pvp (so you can actually have a positive expected return) * Doesn't require skill (so you can play strategy oblivious, without losing too much) * Fair if you try play very conservative (i.e. no fixed house margin, or it's too penalizing for conservative bets) * Fair if you try play aggressively (i.e. like the current dice sites) So I probably spent 3 whole days of just playing with concepts. When I had the concept I liked, I spent another 2 days running that maths, and confirming them with simulations. --- As for the operations, it's pretty simple and I'm not sure it's really different than running any other site. Other than you're perhaps a higher profile target faster. My setup is pretty simple, a CDN for caching static resource -- a single webserver behind a load balancer (so I can easily ramp it up if I'm under DoS) -- and a single postgres database, with a slave in another continent (and nightly backups). I also have a bitcoind instance running on a cheap digital ocean instance, which I use as a watch-only node to monitor for peoples deposits. -- Title: Re: Gambling site Post by: dooglus on August 25, 2014, 05:20:36 AM From an engineering perspective, the hardest and most surprising part how difficult it is to make a bitcoin transaction (to process a withdrawal). The first problem is running out of available outputs. I ran Just-Dice for a year, and this wasn't ever a problem until after I shut it down. (*) I don't know what kind of a site you're running, but if it's a gambling site, you will find that you have more withdrawals than deposits, typically. Because you have more losing players than winning ones. You pay the winners using the losing player deposits, and that's the end of the story. If you are running out of outputs, it's probably because someone is using your site to "launder" their coins. You need to limit that account because he's messing things up for everyone else. (*) After shutting down there were no more deposits, only withdrawals. I was depositing coins onto the site in 500 BTC and 1000 BTC lumps, and they were being withdrawn by hundreds of people in much smaller amounts. That's the only time the problem you describe showed itself. And it's easily solved by making raw transactions to split the 1000 BTC deposit into 100 pieces of 10 BTC each. Title: Re: Gambling site Post by: dooglus on August 25, 2014, 05:23:11 AM I run https://ww.moneypot.com/ so I can answer your questions. "This web page is not available". protip: when answering forum posts in order to advertise your site, try to remember to spell your domain name correctly. Title: Re: Gambling site Post by: espringe on August 25, 2014, 05:44:11 AM I ran Just-Dice for a year, and this wasn't ever a problem until after I shut it down. (*) Yeah, that's because presumably Just-Dice deposits go into the hot wallet, where you process withdraws from. On the other hand, my deposits go directly into cold storage (i generate the addresses with bip32), and I need to pull the funds out of cold storage into a hot wallet to process withdraws. So for every deposit in my hot wallet, I have over 100 withdraws. Quote If you are running out of outputs, it's probably because someone is using your site to "launder" their coins. You need to limit that account because he's messing things up for everyone else. Yeah, it's especially a problem for me -- due to how easy it is for someone to empty my hot wallet. [Deposit 1 BTC into my cold storage, withdraw 1 BTC from my hot wallet. Bang my hot wallet is near empty]. But it's not the core of running out of output problems protip: when answering forum posts in order to advertise your site, try to remember to spell your domain name correctly. Ha, yeah. Title: Re: Gambling site Post by: dooglus on August 25, 2014, 07:09:07 AM Ha, yeah. I just played your game a little with the 2 free bits per hour you give away. It's a fun game - well done for getting away from the 'dice' thing. :) Some comments: 1) don't link to the strategy guide before (to the left of) the FAQ. It made me read the strategy guide before I had any idea what the game was. The first thing it told me was "1% of the time you lose no matter what". That's not the first thing you want new people to see. 2) Get someone to proof read your text. It's full of errors. Also, I don't mean to be rude, but it's pretty hard going getting through it, and I'm a geek myself. I can't offer specific suggestions about how it could be better, but I do recognise that it sucks. I figure most people aren't geeky enough to get more than part way through the text, and the ones who are will be put off by the errors. 3) The site isn't really provably fair. Each "game" you pick how far the multiplier is going to go before the game crashes. You provide a hash of that number, so we can be sure you picked it in advance. But we can't be sure you picked it fairly. Maybe 20% of the time you pick that the game is going to crash immediately. Maybe you pick that it's going to crash before 2x when someone is better high on 2x a lot. Properly provably fair sites allow the players to provide input to the "shuffle" so the site can't deliberately pick bad outcomes. It's good for the house when the multiplier at which the game crashes is low, and there's no way we can tell that you're not making it be low too much of the time (other than by doing a statistical analysis - but that's not probably fair, it's statistically fair or something). To fix it, you need to take a client seed from each player, and include that in a hash that determines the multiplier. And even then it's only fair if I know that none of the players are house stooges - otherwise the stooge can provide just the right seed to make the game crash early. 4) It's annoying to me when I'm playing at 2.01x, the other guy is playing at 2%, and we have to sit there watching the multiplier go up to 97x. OK, so we could have aimed higher, but who cares? When everyone bails, the game should stop. Tell us how high it was going, but don't make us watch it. 5) I won a bunch of bonuses for being last to bail, but the bonuses weren't added to my bankroll until I reloaded the site I think. 6) If I have "auto bet" enabled and I lose so much that I can't afford to play any more, I get a javascript:alert() telling me something ugly like NOT_ENOUGH_MONEY, but you don't uncheck the auto bet checkbox, so it keeps on trying. I can't uncheck it either, and end up having to close the browser tab. Just uncheck auto-bet when I'm out of coins. 7) Sometimes I've checked 'auto-cashout', but while the game is running I decide I don't want to cash-out at 2x, I want to go higher. Let me click to cancel the auto-cashout. The big button I usually click to buy-in, and again to bail should change to 'cancel auto-cashout' while auto-cashout is active, so I can switch back to "manual" mode on the fly. eight) How provably fair is it really when the result of the game depends on timing? A few times I clicked to bail out just before the game crashed, but the message didn't get to the server on time (or did it? :)) and I lost. Anything involving timing like that isn't really provably fair - I just have to trust you not to cheat me by pretending you didn't get the 'bail' message in time. 9) Probably the wrong thread, sorry. But I expect you'll see it anyway. :) Title: Re: Gambling site Post by: espringe on August 25, 2014, 07:46:12 AM Great feedback! I am quite humbled by it
But most of all, I really appreciate how you didn't totally dump on the site for the _massive_ issue I had when you were playing (my latest deploy had a bug in the max loss alarms, which caused havoc, but I fixed it pretty quick) -- and you didn't mention it, so just wanted to say that was quite kind of you =) The site isn't really provably fair. Each "game" you pick how far the multiplier is going to go before the game crashes. You provide a hash of that number, so we can be sure you picked it in advance. Yeah, that's correct -- I definitely should acknowledge it. Due to the nature of the game, I'm not sure it's even possible to be fully provably fair. I had an idea of introducing an "inverse game" -- where if someone suspects unfair play, they could place a a bet on the "inverse game". That is to say, they continually lose money (instead of continually make money) and on the game crash, they *make* their bet. So any multiplier < 2x, they would make a profit, any mutliplier > 2x they would take a loss. Because I predetermine the multiplier, I can't change it. But I could *always* feign network issues, and not accept any unfavorable games. So I'm really at a loss to how I can make the game fully provably fair. And as such, people will need to place some trust in me (just as they need to place some trust in X site, that it doesn't run away with their balance). All my personal details are quite public, and I'm going to introduce tools to do statistical analysis (i.e. you subscribe to the game socket, and verify none of the hashes change and record the distribution). Quote 4) It's annoying to me when I'm playing at 2.01x, the other guy is playing at 2%, and we have to sit there watching the multiplier go up to 97x. OK, so we could have aimed higher, but who cares? When everyone bails, the game should stop. Tell us how high it was going, but don't make us watch it. I've heard this a lot, and feel the same way -- but when I've asked people -- a lot of the players have been really against that idea, as they like to sit there and think "this could have been me". Also if someone sets their cashout to 1000x, it will degenerate to the way it is now it is now. Perhaps a better way of dealing with it, might be making 10x the maximum multiplier. If a game gets to 10x, everyone is immediately cashed out. I need to think about it, as the games that go to 1000x are quite fun for some people. Quote 5) I won a bunch of bonuses for being last to bail, but the bonuses weren't added to my bankroll until I reloaded the site I think. Yeah, sorry -- this is a UI bug. They were adding to your balance, but the front-end didn't add them. I'll fix this tomorrow. As you noticed, refreshing the page fixes the problem :) Quote 6) If I have "auto bet" enabled and I lose so much that I can't afford to play any more, I get a javascript:alert() telling me something ugly like NOT_ENOUGH_MONEY, but you don't uncheck the auto bet checkbox, so it keeps on trying. I can't uncheck it either, and end up having to close the browser tab. Just uncheck auto-bet when I'm out of coins. Crap. I never ran into that, but I'll fix that tomorrow too.Quote 7) Sometimes I've checked 'auto-cashout', but while the game is running I decide I don't want to cash-out at 2x, I want to go higher. Let me click to cancel the auto-cashout. The big button I usually click to buy-in, and again to bail should change to 'cancel auto-cashout' while auto-cashout is active, so I can switch back to "manual" mode on the fly. Interesting. I like that idea. One thing I wanted to do, was plot the "auto-cashout" line on the graph -- and actually allow someone to drag it with their mouse Quote 8) How provably fair is it really when the result of the game depends on timing? A few times I clicked to bail out just before the game crashed, but the message didn't get to the server on time (or did it? :)) and I lost. Anything involving timing like that isn't really provably fair - I just have to trust you not to cheat me by pretending you didn't get the 'bail' message in time. If you're worried about that specific case, the autocash out alleviates the need to worry about timing -- as it happens on the server. If you set your autocashout at 2.01x and it doesn't, I'm cheating. However, since I've predetermined the outcome -- I could always feign network issues and reject your bet. So I think my assurances are better than nothing, there's cases when I *obviously* did not cheat -- but they definitely not as strong as the ones a single-player game against the house can offer. The only sort of gambling games that interest me are social / multi-player ones, which I guess is just not very conducive to being totally provably fair. I'll update the homepage and FAQ and change it from "provably fair" to "fair" (it is, trust me!) Quote 9) Probably the wrong thread, sorry. But I expect you'll see it anyway. :) Thanks very much. Really, really appreciate the great feedback and the time you took to playing the game. If you feel like playing more, I credited your account with a few bits to keep going ;D |