Jump to content
Sign in to follow this  
fxseminar

Ка могла бы быть организована лотерея в блокчейне?

Recommended Posts

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

 

Вопрос: как алгоритмически могла бы быть организована эта лотерея, чтобы минимизировать возможность этого майнера манипулировать её результатом? Можно ли полностью исключить эту возможность (манипуляции)?

Share this post


Link to post
Share on other sites

В названии темы "каК", конечно, извините!

 

Что касается задачи, то пока я вижу такое решение: обязать майнера использовать в качестве случайного значения (для розыгрыша лотереи) тот хэш, которым он "закрывает" этот блог. Поскольку КАК ПРАВИЛО (и в нынешнем состоянии таких блокчейнов, как Биткойн) от майнера требуется весьма много усилий, чтобы найти этот хэш, то можно надеяться, что он не будет отбрасывать это значение (и начинать искать другое) только потому, что ему не понравился исход лотереи.

 

Однако же видно что это решение не полностью исключает возможность манипуляции ... можно ли предложить  какое-то улучшение этого решения?

Edited by fxseminar

Share this post


Link to post
Share on other sites

вообще довольно находчивое решение заюзать nonce как способ однозначно выбрать победителя. И предсказать сложно, и проверить легко.

Share this post


Link to post
Share on other sites

 

 

Вопрос: как алгоритмически могла бы быть организована эта лотерея, чтобы минимизировать возможность этого майнера манипулировать её результатом? Можно ли полностью исключить эту возможность (манипуляции)?

Никак. Пул сам выбирает каким образом и какие транзакции добавлять.

 

Чтобы исключить возможность манипуляции - проводите лотерею по конкретному номеру блока, заранее обозначенному.

Например, заявляете что победит транзакция с наименьшем значением номера транзакции txid, или с наибольшим, или третьем в порядке возрастания.   Это сильно сокращает возможность манипуляции.

 

Можно пойти дальше, txid победителя будет наименьшее значение, но больше меркл рута блока.  Тут уж точно подстроить практически нереально.

 

То есть берем все транзакции, txid которых больше чем меркл рут  и выбираем наименьшую из них.

Share this post


Link to post
Share on other sites

я думал он не блок выбирает, а кого-то из блока.

 

с другой стороны майнер может майнить вообще только свои собственные транзакции именно ради лоттереи :D тут уж...

Share this post


Link to post
Share on other sites

Кого-то из блока, но выбрать кого-то из блока можно только в подтвержденном блоке. 

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

Share this post


Link to post
Share on other sites

ну допустим танцуем от nonce, который заранее не известен. тогда всё выглядит честно.

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

 

как вообще сегодня крипто-лоттереи работают? на честном слове?

Edited by igordata

Share this post


Link to post
Share on other sites

 

 

майнер может майнить вообще только свои собственные транзакции именно ради лоттереи

 

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

 

Правда, можно модифицировать задачу, чтобы майнер, "закрывающий" блок N+1 разыгрывал эту лотерею между транзакциями, вошедшими в предыдущий блок N ...

 

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

Share this post


Link to post
Share on other sites

 

 

txid победителя будет наименьшее значение, но больше меркл рута блока

 

-- правильно ли я предполагаю, что конкретно в Биткойне сейчас майнер тратит многократно больше вычислений на то, чтобы подобрать nonce, порождающий хэш блока (удовлетворяющий условию сложности), чем на то, чтобы построить дерево меркл из транзакций, помещаемых ИМ в блок? То есть поменять одну транзакцию и перестроить дерево ему намного легче, чем выкинуть найденный "сложный" хэш блока?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...