And player choose which block to choose for rnd-generating. So player can manipulate prng outcome. That is not smart contract, that is piece of shit.
That's a prevenstion mesure if someone tries to send a gasfee higher than the bot has, it will make them calculate the winner but thats not how it regulary procedes, that just to avoid users to bet after the block hash is public. The funtion is called my the bot at the 14th block after atleast 2 players are in, this way it will be confirmed at 15th (or try to). under this sircunstances how can the outcome be predicted? Your bot looks at block hash of last block. Then calculates winner according to code function endLottery() internal { uint sum = 0; uint winningNumber = uint(block.blockhash(block.number - 1)) % totalBets;
for (uint i = 0; i < nbUsers; i++) { sum += users[i].amount;
if (sum >= winningNumber) { // destroy this contract and send the balance to users[i] withrawWin(users[i].addPlayer,winningNumber); return; } } } If winner suits you, you will send transaction. If not, your bot wait next block. again as stated, if for some reason the bot don't call the function, after the 15th block that can be called by any player that send a transaction with enough gas. Okay. If you are so confident in your code, i shall create almost same contract. And you will play against me. Ok? We can redeply the contract with that funtion in public, anyway the bot will call it as soon as possible so it would make users spend unnecessary gas. You did not answer. We will build change that in the contract, instead of being calculated the winner the block it is called, it will calculate it from the 15th block after it start rolling (the last block users can bet) and block the contract untill the funtion to roll a winner it's called. I belive in that way we will surpasse that flaw. You did not answer again.
|
|
|
And player choose which block to choose for rnd-generating. So player can manipulate prng outcome. That is not smart contract, that is piece of shit.
That's a prevenstion mesure if someone tries to send a gasfee higher than the bot has, it will make them calculate the winner but thats not how it regulary procedes, that just to avoid users to bet after the block hash is public. The funtion is called my the bot at the 14th block after atleast 2 players are in, this way it will be confirmed at 15th (or try to). under this sircunstances how can the outcome be predicted? Your bot looks at block hash of last block. Then calculates winner according to code function endLottery() internal { uint sum = 0; uint winningNumber = uint(block.blockhash(block.number - 1)) % totalBets;
for (uint i = 0; i < nbUsers; i++) { sum += users[i].amount;
if (sum >= winningNumber) { // destroy this contract and send the balance to users[i] withrawWin(users[i].addPlayer,winningNumber); return; } } } If winner suits you, you will send transaction. If not, your bot wait next block. again as stated, if for some reason the bot don't call the function, after the 15th block that can be called by any player that send a transaction with enough gas. Okay. If you are so confident in your code, i shall create almost same contract. And you will play against me. Ok? We can redeply the contract with that funtion in public, anyway the bot will call it as soon as possible so it would make users spend unnecessary gas. You did not answer.
|
|
|
And player choose which block to choose for rnd-generating. So player can manipulate prng outcome. That is not smart contract, that is piece of shit.
That's a prevenstion mesure if someone tries to send a gasfee higher than the bot has, it will make them calculate the winner but thats not how it regulary procedes, that just to avoid users to bet after the block hash is public. The funtion is called my the bot at the 14th block after atleast 2 players are in, this way it will be confirmed at 15th (or try to). under this sircunstances how can the outcome be predicted? Your bot looks at block hash of last block. Then calculates winner according to code function endLottery() internal { uint sum = 0; uint winningNumber = uint(block.blockhash(block.number - 1)) % totalBets;
for (uint i = 0; i < nbUsers; i++) { sum += users[i].amount;
if (sum >= winningNumber) { // destroy this contract and send the balance to users[i] withrawWin(users[i].addPlayer,winningNumber); return; } } } If winner suits you, you will send transaction. If not, your bot wait next block. again as stated, if for some reason the bot don't call the function, after the 15th block that can be called by any player that send a transaction with enough gas. Okay. If you are so confident in your code, i shall create almost same contract. And you will play against me. Ok?
|
|
|
And player choose which block to choose for rnd-generating. So player can manipulate prng outcome. That is not smart contract, that is piece of shit.
That's a prevenstion mesure if someone tries to send a gasfee higher than the bot has, it will make them calculate the winner but thats not how it regulary procedes, that just to avoid users to bet after the block hash is public. The funtion is called my the bot at the 14th block after atleast 2 players are in, this way it will be confirmed at 15th (or try to). under this sircunstances how can the outcome be predicted? Your bot looks at block hash of last block. Then calculates winner according to code function endLottery() internal { uint sum = 0; uint winningNumber = uint(block.blockhash(block.number - 1)) % totalBets;
for (uint i = 0; i < nbUsers; i++) { sum += users[i].amount;
if (sum >= winningNumber) { // destroy this contract and send the balance to users[i] withrawWin(users[i].addPlayer,winningNumber); return; } } } If winner suits you, you will send transaction. If not, your bot wait next block.
|
|
|
And player choose which block to choose for rnd-generating. So player can manipulate prng outcome. That is not smart contract, that is piece of shit.
|
|
|
But PRNG is weak. So owner will get your money.
|
|
|
kr3nks, >> function callback() public isOwner{ //this can be called by anyone if the timmer freez What is this? This is lie. Only owner can call this function. But PRNG is weak. So owner will get your money.
Strongly do not recommend participating in this "lottery".
|
|
|
0xe85b52E670713be8a6ae230eeDa539975066d0D0 is your smart copntract. Ok. But why is 0x17a0dc5c3fe346d129687269a406adc2fef609f9 on start page of your website? This isn't smart contract.
|
|
|
Allowing people to reduce their kelly multiplier for free re-enables 'whale dodging" behavior, which the dilution fee was designed to prevent.
Can you tell me more about "whale dodging behavior"? Hadn't found any information in JD investment topic. PS finally, offsite investments looks clear
|
|
|
Mainnet ethereum address: 0x2F58B31ecaD8F1a60375A0c9968556283e6cE41A Start contract balance: 0.1 ETH Betting: just send eth to contract's address Odds: get back 1.2x of your stake 4 times out of 5 Randomness: timestamp % 5 Payouts: instantly in same transaction Max bet: one-fifth of the contract's balance Min bet: zero Site: no. Use your ethereum client instead. Source codeIt's very easy to hack contract for ethereum miner. But i hope he will not do that since amount isn't too big. I'am interested in non-miner hacking. Is it possible? GLHF
|
|
|
Mainnet ethereum address: 0x2F58B31ecaD8F1a60375A0c9968556283e6cE41A Start contract balance: 0.1 ETH Betting: just send eth to contract's address Odds: get back 1.2x of your stake 4 times out of 5 Randomness: timestamp % 5 Payouts: instantly in same transaction Max bet: one-fifth of the contract's balance Min bet: zero Site: no. Use your ethereum client instead. Source codeIt's very easy to hack contract for ethereum miner. But i hope he will not do that since amount isn't too big. I'am interested in non-miner hacking. Is it possible? GLHFPS: do not sure about relevant board
|
|
|
The project looks good.I don't have enough time right now to check the algorithm for randomly selecting winners on your main page but as soon as I will,I'll update this thread with my feedback.Maybe you should do a couple of test draws with an example to prove the algorithm works as it's described in the code. Watching this closely.
The choice of winners is flawed. It uses a timestamp. Therefore, the miner who generates the block with the winner's choice transaction may always win. I do not recommend to taking part in this lottery. If even the entire network is captured by one miner, then nothing will happen, since randomness in addition to the time of the block gives a hash function Keccak Hash function Keccak gives hash. Hash function doesn't give randomness. Miner will set up such a timestamp of the block that your transaction selectWinner50() in that block will choose a miner's lottery ticket.
|
|
|
bumbaio, how is investment system works exactly?
|
|
|
The project looks good.I don't have enough time right now to check the algorithm for randomly selecting winners on your main page but as soon as I will,I'll update this thread with my feedback.Maybe you should do a couple of test draws with an example to prove the algorithm works as it's described in the code. Watching this closely.
The choice of winners is flawed. It uses a timestamp. Therefore, the miner who generates the block with the winner's choice transaction may always win. I do not recommend to taking part in this lottery.
|
|
|
RHavar, dooglus, is there any problems with such "real leverage" investments?
I don't see any. I think it's a very good idea. I think "ideally" the site should probably have 4 bankrolls, one for 0.5x, 1x, 2x and 4x. (and then combine them into 1 "virtualized" bankroll). And allow people to invest into any leveraged bankroll they want. I think combined with offsite, it would be a pretty ideal system. I do not exactlly understand what is meant by a a lot of bankrolls and virtual bankroll. My maths are next: Investor 1: 5 x1 Investor 2: 1 x2 Investor 3: 1 x3 Bankroll = 5*1+1*2+1*3 = 10 Bankroll's shares: investor 1 - 50%, investor 2 - 20%, investor 3 - 30%. Casino'a wins/losses divides among investors according to their shares.
|
|
|
One more table. How expected growth depends on investor's leverage and player's bet As you can see, normal investor gain profit on whales. 4x-leverage investor do not gain profit on whales. On other side, 4x-leverage investor gain up to 4 times more than normal investor on non-whales. So, leverage is a mechanism for investors to focusing investments on a specific type of players. Looks very clear. RHavar, dooglus, is there any problems with such "real leverage" investments?
|
|
|
This likely means that the "real leverage" player does worse than the fixed offsite investor in the much more common case where the player wins and loses more equally.
Shouldn't "real leverage" still do better in that scenario if the players lose slightly more than they win as expected due to house edge? I kind of ran out of steam at that point. I can't imagine that "real leverage" is better than "offsite investing" in every case. Shouldn't there be a trade-off? Back to the example: A has 10 onsite and 90 offsite. C has 10 onsite with 10x "real" leverage. Suppose a whale plays for a long period with 50% chance of winning each bet. All bets are the maximum, aiming to win 1% of the bankroll. The payout when he wins is 1.98x (1% house edge), and he wins and loses the same amount of bets (as he is expected to do, long term). Let's call the effective bankroll "B". 50% of the time the player wins 1% of the bankroll: B/100. When this happens, A's effective bankroll is multiplied by 99/100, and C's is multiplied by 90/100. The other 50% of the time the player loses his stake. He's aiming to profit by B/100, with a payout multiplier of 1.98x, so he's risking and losing B/98. When this happens, A's effective bankroll is multiplied by 99/98, and C's is multiplied by 108/98. Since the whale wins and loses the same number of bets, we can pair these bets. Each pair consists of one win and one loss. For each pair, A's effective bankroll is multiplied by 99/100 and 99/98, for a net growth factor of 99/100 * 99/98 = 9801/9800 ~= 1.0001x And C's effective bankroll is multiplied by 90/100 and 108/98, for a net growth factor of 90/100 * 108/98 = 9720 / 9800 ~= 0.9918x And so we see that my intuition was correct, and that "real" leverage is worse than this "offsite investment" thing. The "offsite investment" has a (small but) positive expected bankroll growth whereas the "real leverage" expects to lose almost 1% of the bankroll for every pair of (1 win + 1 lose) bets. Yes, EBG<1 for 10x leverage. But leverage multiplier should be limited! For max win = 1KK max leverage = 2x. For max win = 0.5KK max leverage = 4x. Investor with max leverage is EBG 0+ always. When player is whale, regular investor's EBG+, max leverage investor's EBG-zero. But when player is not whale, both EBG are positive. And regular investor's EBG is lower than max leverage investor's EBG. So, leverage works. Therefore, "real leverage investment" properly works in all cases. But "offsite investement" not. Or am I wrong?
|
|
|
According to my calculations, minimum house edge = 2%, and maximum house edge = 10%. How did you calculate 1%?
We used this to calculate the house edge. 51 Numbers. 1 x 50.9 24 x 2.13 16 x 3.07 10 x 5.08 This gives 98.99019608%, so house edge becomes 1.00980392%. Please let me know how did you get your digits? Regards Your calculator is totally broken 24 x2.103, 16 x3.16, 10 x5.05, 1 x50.5
|
|
|
|