Bitcoin Forum
May 25, 2024, 01:43:12 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Primedice. Графа Payout - баг или фича? И о контроле честнос  (Read 5193 times)
Gargamel (OP)
Full Member
***
Offline Offline

Activity: 157
Merit: 100



View Profile
March 24, 2015, 01:40:07 PM
Last edit: March 24, 2015, 05:56:26 PM by Gargamel
 #1

Всем привет. Я тут что-то заигрался стратегиями на Primedice.com. Smiley

Во первых, что первое бросается в глаза, это странные числа, которые они пишут в графе Payout.



То есть в payout в знаке до запятой всегда указано больше на единицу, чем должно быть. Ошибка или я чего-то не догоняю?

И про контроль честности. Они типа пишут:

Quote
To create a roll number, Primedice uses a multi-step process to create a roll number 0-99.99. Both client and server seeds and a nonce are combined with hmac-sha512(server_seed, client_seed-nonce) which will generate a hex string. The nonce is the # of bets you made with the current seed pair. First five characters are taken from the hex string to create a roll number that is 0-1,048,575. If the roll number is over 999,999, the proccess is repeated with the next five characters skipping the previous set. This is done until a number less than 1,000,000 is achieved. In the astronomically unlikely event that all possible 5 character combinations are greater, 99.99 is used as the roll number. The resulting number 0-999,999 is applied a modulus of 10^4, to obtain a roll number 0-9999, and divided by 10^2 to result a 0-99.99 number.

То есть я так понял, что случайным образом генерируются два ключа. Мне известен один и хеш второго. Из них мы получаем псевдослучайные числа. Я не могу их все заранее посчитать, так как у меня нет второго ключа, но могу потом проверить результат, получив его и убедившись, что это именно он благодаря имеющемуся у меня хешу.

Сервер знает оба числа и может просчитать всё заранее, но не может изменить эту последовательность, так как я потом могу это проверить.

Вроде, подвоха нигде нет? Ну, если не считать, что едва ли кто заморачивается с такой проверкой. )

Так вот о проверке. Там же указан код, который позволяет произвести такую проверку:

Code:
 //the seed pair itself
            var clientSeed = "your client seed"; //dont forget to exclude the dash and the nonce!
            var serverSeed = "your server seed";

            //bet made with seed pair (excluding current bet)
            var nonce      = 0;

            //crypto lib for hmac function
            var crypto = require('crypto');

            var roll = function(key, text) {

                //create HMAC using server seed as key and client seed as message
                var hash = crypto.createHmac('sha512', key).update(text).digest('hex');

                var index = 0;

                var lucky = parseInt(hash.substring(index * 5, index * 5 + 5), 16);

                //keep grabbing characters from the hash while greater than
                while (lucky >= Math.pow(10, 6)) {
                    index++;
                    lucky = parseInt(hash.substring(index * 5, index * 5 + 5), 16);

                    //if we reach the end of the hash, just default to highest number
                    if (index * 5 + 5 > 128) {
                        lucky = 99.99;
                        break;
                    }
                }

                lucky %= Math.pow(10, 4);
                lucky /= Math.pow(10, 2);

                return lucky;
            }
            console.log(roll(serverSeed, clientSeed+'-'+nonce));


Подскажите, пожалуйста, как этот скрипт использовать? Кому и как его скормить?
svetoch
Hero Member
*****
Offline Offline

Activity: 826
Merit: 1004


View Profile
March 24, 2015, 04:34:15 PM
 #2



То есть в payout в знаке до запятой всегда указано больше на единицу. Ошибка или я чего-то не догоняю?


естественно больше единицы. иначе при каждой ставке ты проигрывал бы больше чем выигрывал. конкретный пример:
ставка 100 сатоши. пейаут 1,010 (шанс 98%)
при таких условиях ты выигрываешь 101 сатошу. 100 тебе возвращается ставка + 1 чистый выигрыш.
если бы пейаут был просто 0,010 ты соответственно выигрывал 1 сатошу, но 100 с тебя уже списали на саму ставку. то есть при этом ты полюбому проиграл 99 сатоши. про проверку точно не знаю. но как вариант это код на С. вставляй, компилируй, проверяй
Gargamel (OP)
Full Member
***
Offline Offline

Activity: 157
Merit: 100



View Profile
March 24, 2015, 05:49:28 PM
Last edit: March 25, 2015, 02:51:56 AM by Gargamel
 #3

Конкретные примеры приведены на рисунках выше. Правильное значение в первом случае - это 3.950x (а не 4.950x), а во втором - 0.42x (а не 1.42x). При высоких шансах ты всегда выигрываешь меньше своей ставки.

А код - это сценарий JavaScript. Просто я не знаю, где и как его выполнить.
A-Bolt
Legendary
*
Offline Offline

Activity: 2317
Merit: 2318


View Profile
March 24, 2015, 08:25:36 PM
 #4

То есть в payout в знаке до запятой всегда указано больше на единицу, чем должно быть. Ошибка или я чего-то не догоняю?

Code:
Profit = Payout - Bet
0.00000395 = 0.00000495 - 0.00000100

Так понятнее?

Quote
Подскажите, пожалуйста, как этот скрипт использовать? Кому и как его скормить?

Здесь есть список IDE для node.js
Gargamel (OP)
Full Member
***
Offline Offline

Activity: 157
Merit: 100



View Profile
March 25, 2015, 02:56:10 AM
 #5

Quote

Code:
Profit = Payout - Bet
0.00000395 = 0.00000495 - 0.00000100

Так понятнее?


Да! Спасибо! Значит всё-таки не догонял.. )

Quote
Здесь есть список IDE для node.js

Спасибо большое!
Gargamel (OP)
Full Member
***
Offline Offline

Activity: 157
Merit: 100



View Profile
March 26, 2015, 05:29:43 PM
Last edit: March 29, 2015, 07:11:56 AM by Gargamel
 #6

Поставил в винде Node.js (отсюда: http://nodejs.org/download/). Пытаюсь скормить скрипт, говорит:

Quote
Строка:   9
Символ:   13
Ошибка:   Предполагается наличие объекта
Код:   800A138F

Это соответственно где
Code:
var crypto = require('crypto');

То есть, я так понял, нужна библиотека, которой по умолчанию нет. Причём, вроде, вот эта: https://nodejs.org/api/crypto.html.

Но я не понимаю, как её подключить. Не подскажете?
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!