Solidity. Смарт контракты и аудит
2.62K subscribers
246 photos
7 videos
18 files
550 links
Обучение Solidity. Уроки, аудит, разбор кода и популярных сервисов
Download Telegram
Урок 20 - Паттерн commit/reveal

Продолжаем наше обучение по паттернам смарт-контрактов, и сегодня рассмотрим commit\reveal.

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

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

После всех уроков с YouTube от Ильи, я скину на канал несколько интересных ссылок. В одной из них будут прикольные упражнения на создание смарт-контрактов. Там вы сможете на практике попытаться самостоятельно реализовать контракты.

А пока, новый видео урок.

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

Всем хорошего дня и легкого обучения!

#урок #commit #reveal
👍1
Паттерн commit/reveal

Для начала давайте расшифруем, что такое commit и reveal для тех, кто только начал свой путь в программировании.

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

А reveal - это раскрытие данных. Как, например, в покере, когда в конце раунда все раскрывают свои карты.

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

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

Мы же помним, что с помощью keccak256 можно только закодировать данные в формате bytes32, но раскодировать обратно их не получится?

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

Если хоть одна часть, один символ в отсылаемых данных будет изменен, то система выдаст ошибку. Именно поэтому обмануть ее не получится.

Ну вот и весь смысл паттерна commit\reveal. Все довольно просто.

#commit #reveal