Где я могу получить обзор контракта в Solidity? Сколько это будет стоить? [закрыто]

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

Я голосую за то, чтобы закрыть этот вопрос как не относящийся к теме, потому что большинство вопросов с рекомендациями являются плохо определенными магнитами для спама и байкшеринга, поэтому мы не принимаем вопросы такого типа ни на одном сайте Stack Exchange. meta.stackoverflow.com/questions/251134/…

Ответы (3)

Open Zeppelin и Consensys предлагают проверки безопасности смарт-контрактов.

Что касается лотереи, самая основная проблема, с которой вы можете столкнуться, - это «найти» случайность для выбора победителя лотереи.

Для нахождения случайности существуют следующие решения:

  1. Использование хеша предыдущего блока. Этот метод может блокировать атаки удержания. Это означает, что майнер tx узнает победителя, когда запустит смарт-контракт. Затем он может решить не добавлять добытый блок, если исход лотереи не в его пользу [Источник] .
  2. Использование смарт-контракта случайности, такого как RandDao . На самом деле не использовал его, поэтому я не уверен, какие гарантии безопасности он предлагает.
  3. Использование службы оракула, такой как oraclize . Теоретически это решение может быть безопасным, но вы вводите доверенную сторону в свой проект.
  4. Собирайте случайность от пользователей. Это должно быть обобщенной версией подбрасывания монеты Блюмом по телефону . Проблема этого подхода в том, что протокол имеет две фазы. Фаза фиксации, когда стороны фиксируют случайное число, и фаза раскрытия, когда стороны раскрывают свою случайность. Чтобы разработать такую ​​схему, вы должны принять во внимание, что стороны могут отказаться от протокола и не раскрывать свои коммиты. Также эта схема основана на способности пользователя обеспечить случайность с достаточно высокой энтропией (Насколько случайна строка 123456?).

В общем, случайность в цепочке — открытая проблема. Вы можете увидеть страницу github ethereum для других решений, которые не упомянуты в моем ответе на исследование Ethereum .

PS Я не связан ни с одной из компаний, упомянутых выше. PS Надеюсь мой ответ поможет.

Ну а если есть деньги, то можно посмотреть с Цеппелином . Вы также можете проверить эту платформу для фрилансеров Ethereum . Вы можете исследовать некоторые сабреддиты или сообщества разногласий, сосредоточенные вокруг Ethereum/смарт-контрактов, и посмотреть, есть ли люди, желающие это сделать.

@BokkyPooBah — аудитор смарт-контрактов. Он провел аудит множества смарт-контрактов. https://github.com/bokkypoobah

Отказ от ответственности: я не аффилирован.