3ий урок

Сегодня мы продолжим разбирать с вами особенности синтаксиса и языка solidity

И разберём что такое ownable контракты, что такое и главное зачем нужны контракты токенов

Но, Для начала давайте вспомним вообще как у нас работают контракты и синтаксис языка солидидити

Для примера я немного переделал контракт, который Ильдар написал на предыдущем занятие, чтобы получилась стандартная лотерея, у нас есть организатор, который хочет распределить какую-то сумму денег, для этого у него есть функция increase balance, а также пользователи которые могут поучаствовать в этой лотерее вызвав функцию participate Соответсвенно когда набирается нужное количество пользователей, мы вызываем функцию distributePrize, которая случайным образом выбирает победителя и отправляет ему всю сумму

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

Random

Самое интересное, что в документации ethereum есть глава посвященная тому как генерировать рандом

https://solidity.readthedocs.io/en/v0.4.24/security-considerations.html

И на этом всё, поэтому это очень интересный момент каким же все таки образом генерировать энтропию в детерминированной среде

Есть у кого идеи что мы можем взять за энтропию в блокчейне ?

Я открою слайд с подсказкой дажеhttps://docs.google.com/presentation/d/1u7rHJMBjSQvFB6aHijnLyxdmsShGfFvpkOC4leyGzbs/edit#slide=id.g46acab1072_0_318

На самом деле тут несколько параметров которые можно взять за энтропию

block.coinbase represents the address of the miner who mined the current block.

block.difficulty is a relative measure of how difficult it was to find the block.

block.gaslimit restricts maximum gas consumption for transactions within the block.

block.number is the height of current block.

block.timestamp is when the block was mined.

Единственное, что для этих решений нам нужно доверять манерам, А можем ли мы им доверять? - Нет