Сеть даёт доступ только к последним 256 блокам. Cryptokitties тоже полагаются на хэши и, к примеру, когда выходят за границу, то берут хэш одного из последних. В этот момент появляется возможность атаки — дёргать метод, когда хэши нравятся. А 256 в масштабах сети настолько же немного, насколько и 72. Как вы предлагаете с этим бороться?
Таким образом если мы в качестве источника рандомности берем хеши нескольких последовательных блоков, шансы отдельно взятого майнера повлиять на результат, настолько малы, что в большинстве случаев ними можно пренебречь, даже есть речь идет о розыгрыше денежных (ETH) призов.
Верно, но у этого подхода есть минусы. Пусть у вас есть метод calculateLotteryWinners, который смотрит на хэши последних 72 блоков. Для секьюрности вы должны заранее наложить несколько ограничений:
Первое, все голоса пользователей должна быть сделаны как минимум 72 блока назад(иначе злоумышленнику нужно было угадать меньше 72 хэшей, тяряем секьюрность).
Второе, метод должен быть вызван обязательно вами, и в определенный, заранее оговоренный номер блока. Иначе у вызывающего есть возможность выбрать удобную
последовательность хэшей. Если это делаете вы, то вас будут обвинять в возможности влиять на результаты. Если не вы, то отдаете такой инструмент в руки злоумышленнику.
Теперь вы обязаны иметь offchain-бота, который будет следить за блокчейном и дергать метод в нужным момент — это сложно и децентрализованно.
Ребята уже всё придумали. Возьмите хороший генератор случайных чисел, а seed позвольте загенерить пользователям вместе. Тогда атака возможна только при договоренности абсолютно всех участников, что бессмысленно.
Тут скорее автор комментария имел в виду, что автор имел а виду, что многие просто при слове модуль считают числа -13 и 13 эквивалентными (на самом деле не знаю кто так может считать)
Только длина ключа равная квадрату числа — не единственное требование к нему.
Вы считаете определитель матрицы, а он может оказаться нулем. Нужно ещё и чтобы столбцы были линейно-независимыми, и тут уже оперировать словами языка в качестве ключа становится невозможно. Вам повезло с альпинизмом.
Великолепная игра. Странно, что в TIS-100 считают порог выше. Никогда не писал на ассемблере, но в TIS-100 легко разобрался, первые задачи решались очень быстро, из-за чего в начале, пока только учишься всем командам и идеям было несложно.
С SHENZEN I/O только над первым заданием просидел 5 минут пытаясь понять, что же от меня хотят. Потому что мануал открыть сразу я не захотел, ведь игра «такая же» как TIS-100. И вот неудобно, что доступ к мануалу есть только из главного меню. Получаешь задачу, понимаешь, что нужно прочитать новый материал, и тебе для этого нужно выйти…
Но это все придирки. Удалось практически полностью пройти TIS-100, а SHENZEN таки давит сложностью, очень радует. Тем более автор проработал интерфейс, теперь вместо неинтуитивных чисел видно сигналы, визуально понять ошибку легко, дебагать тоже удобнее.
Вообщем, вердикт — игра полностью стоит своих денег. Понять, что это не ваше можно за 20 минут и выполнить возврат в Steam. А если понравилось, то уровня задач хватит на много часов.
Большое спасибо.
Верно, но у этого подхода есть минусы. Пусть у вас есть метод calculateLotteryWinners, который смотрит на хэши последних 72 блоков. Для секьюрности вы должны заранее наложить несколько ограничений:
Первое, все голоса пользователей должна быть сделаны как минимум 72 блока назад(иначе злоумышленнику нужно было угадать меньше 72 хэшей, тяряем секьюрность).
Второе, метод должен быть вызван обязательно вами, и в определенный, заранее оговоренный номер блока. Иначе у вызывающего есть возможность выбрать удобную
последовательность хэшей. Если это делаете вы, то вас будут обвинять в возможности влиять на результаты. Если не вы, то отдаете такой инструмент в руки злоумышленнику.
Теперь вы обязаны иметь offchain-бота, который будет следить за блокчейном и дергать метод в нужным момент — это сложно и децентрализованно.
Ребята уже всё придумали. Возьмите хороший генератор случайных чисел, а seed позвольте загенерить пользователям вместе. Тогда атака возможна только при договоренности абсолютно всех участников, что бессмысленно.
Ознакомиться с подробным рассказом можно здесь
Вы считаете определитель матрицы, а он может оказаться нулем. Нужно ещё и чтобы столбцы были линейно-независимыми, и тут уже оперировать словами языка в качестве ключа становится невозможно. Вам повезло с альпинизмом.
С SHENZEN I/O только над первым заданием просидел 5 минут пытаясь понять, что же от меня хотят. Потому что мануал открыть сразу я не захотел, ведь игра «такая же» как TIS-100. И вот неудобно, что доступ к мануалу есть только из главного меню. Получаешь задачу, понимаешь, что нужно прочитать новый материал, и тебе для этого нужно выйти…
Но это все придирки. Удалось практически полностью пройти TIS-100, а SHENZEN таки давит сложностью, очень радует. Тем более автор проработал интерфейс, теперь вместо неинтуитивных чисел видно сигналы, визуально понять ошибку легко, дебагать тоже удобнее.
Вообщем, вердикт — игра полностью стоит своих денег. Понять, что это не ваше можно за 20 минут и выполнить возврат в Steam. А если понравилось, то уровня задач хватит на много часов.
В foreach нельзя будет поменять вектор, потому что он будет «взят» циклом как неизменяемый, и компилятор это прямо запрещает.