Как использовать хэши блоков и транзакций для генерации простых стохастических шансов?

Многие веб-сайты онлайн-азартных игр на биткойны используют информацию о цепочке блоков, чтобы доказать честность. Большинство из них используют для этого довольно сложные алгоритмы с заранее опубликованными секретами.

Что в основном достигается большинством из них: преобразование хэша блока или хэша транзакции в число в определенном диапазоне.

Как проще всего сделать это честным и доступным для всех способом? Я хотел бы сосредоточиться в основном на использовании хэшей блоков, которые наименее подвержены манипуляциям.

Простым способом я ищу либо очень простой математический способ сделать это, либо библиотеку, которая может сделать это за вас.

Я понимаю, что при использовании информации о транзакциях требуются предопределенные секреты, поскольку пользователям легко манипулировать ими. С другой стороны, информацией о блоках гораздо труднее манипулировать. Если вы хотите сгенерировать блок с хэшем, который принесет вам победу в игре, вы сделаете стандартную проблему генерации блоков еще более сложной, и вам придется заниматься соло-майнингом, что уже довольно сложно при обычном майнинге. Итак, нужны ли эти секреты при использовании блочной информации?

Обратите внимание, что я сам студент инженерного факультета, поэтому я, вероятно, пойму многие криптографические и математические термины, но цель этого вопроса, конечно, состоит в том, чтобы получить ответ, понятный каждому.

Ответы (1)

Вот как это делает SatoshiDICE: у SatoshiDICE есть «секретные ключи» на каждый день, которые они предварительно генерируют на следующие 10 лет. Они опубликовали хэши этих ключей, чтобы вы могли убедиться, что они их не меняли. Когда приходит транзакция, они хэшируют хэш транзакции и секретный ключ на этот день, а затем берут первые два байта этого. Затем, через несколько дней, они публикуют секретные ключи.