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

Ну, как у вас с обучением? Вы хоть маякните, на каком этапе находитесь и все ли понятно.

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

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

На следующей неделе начинаются уже сложные операции со смарт-контрактами, а сама программа с уроками рассчитана еще недели на три.

Легкого запоминания и приятного дня!
Урок 10. Вопросы для собеседования

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

Вот и сейчас, вместо того, чтобы выкладывать урок про Древо Меркла, а это один из уроков объясняющих необходимость хешей в Solidity, я предлагаю вам урок попроще, чтобы вы смогли посвятить свое время настройке и практике с hardhat.

Видео - вопросы для собеседования.

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

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

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

Приятного дня и самопроверки!

#урок
Сегодня я хотел бы провести два опроса. И первый, чтобы узнать, как у вас с английским языком. Вопрос обучения, на определённом этапе, будет зависеть именно от этого.

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

Итак, опрос:
Ну и второй вопрос, как и говорил.

Нужно ли будет через неделю-две попробовать создать скайп-созвон? Можем познакомиться, поотвечать на вопросы по Solidity, и тд.

Что думаете?
Будем планировать онлайн созвон?
Anonymous Poll
73%
Да, хорошая идея
27%
Думаю, пока он не нужен
Урок 11

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

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

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

Видео урок - Наследование.

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

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

Всем приятного просмотра и легких знаний!

#урок #наследование
🔥1
Чтобы создать наследование в контрактах, нужно получить или написать контракт родителя, а затем сослаться на его в дочернем контракте через "is".

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

Также в наследовании контрактов важно следить за областями видимости функций.

#наследование
🔥1
В некоторых случаях контракты могут становиться Абстрактными. Они не разворачиваются самостоятельно, но при этом могут наследовать или передовать функции в другие контракты.

Чаще всего контракты становятся абстрактными, когда не могут передавать значения в constructor родителя.

Я редко пока что встречал abstract на практике, поэтому буду дополнять инфо по ходу обучения.

#abstract #наследование
🔥1
А вот так можно передавать значения в контруктор родителя, от которого будем получать функции.

#наследование
🔥1
Чтобы переопредилить функцию в дочернем контракте, в родительском контракте необходимо указать параметр virtual, а в первом - override.

#наследование #virtual #override
🔥1
Чтобы не писать дважды функцию и в родителе, и в дочернем контракте, можно писать функцию сразу от имени родителя или использовать super (если родитель на одном уровне выше).

#наследование #super
🔥1
Урок 12. Интерфейсы и библиотеки

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

В общем штука полезная и с ней надо научиться работать.

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

Видео урок - Интерфейсы и библиотеки.

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

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

Поэтому желательно закрепить все знания в течение последующей недели, чтобы с комфортом обучаться дальше!

Всем легких знаний и хорошей памяти!

#интерфейсы #библиотка
👍1🔥1
Чтобы адрес трансформировать в специальный объект, который может отчевать на привильные функции, нам необходимо имортировать исходный код нужного контракта в свой, и затем инициализировать объект, как в примере на скрине. и тогда уже, относительно этого объекта, мы можем вызывать функции из подключенного контракта.

#подключениеконтракта #import
🔥1
Для того, чтобы создать интерфейс вам необходимо создать новый файл с расширением sol, также прописать тип лицензии и версию Solidity, а затем начать процесс создания с написания interface.

После этого можно копировать функции без их "тела", как показано в примере.

При этом не забудьте подключить интерфейс через import в оригинальном контракте, если сами написали его, и в своем.

По свеой сути интерфейс это описание смарт-контракта, от которого можно наследовать и принимать функции.

#interface
🔥1
Библиотека - это фактически некий набор функций, который мы можем подключать к определенным типам данных, чтобы их расширять.

Библиотеки открываются ключевым словом library, внитри чего прописывается функция.

Подключается она также через import, а используется через "using "func name" for "тип данных".


#библиотека #library
🔥1
А зачем нужны интерфейсы, библиотеки и наследование?

Больше всего в обучении меня напрягал тот факт, что лекторы всегда рассказывали тему или давали материал без объяснения: "А нафига мне все это надо?". В том плане, а как это использовать я буду в работе. Типа выучил, понял и хорошо.

Вот примерно тоже у меня было и с последними темами: вроде бы все понятно, но для чего мне это?! Пришлось смотреть другие видео для лучшего понимания.

В целом и общем, могу вот чем поделиться по этому поводу.

Во-первых, в большинстве случаев разработчики не пишут контракты от и до с нуля. Они накидывают часто употребляемые функции из других контрактов, типа проверки на владельца. И одним из основных ресурсов является портал Open Zeppelin, где выставляются уже отработанные и качественные контракты для подключения. Там уже предусмотрены многие моменты безопасности и масштабируемости, поэтому он так популярен.

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

Можно думать об этом процессе, как о неком текстовом конструкторе, который позволяет быстрее вести разработку.

Надеюсь, после этого поста вас станет чуть понятнее, зачем это все учится.
👍3🔥1
Урок 13. Древо Меркла

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

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

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

Видео урок - древо Меркла.

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

Думаю, тут также будет не много скринов из урока, так как все 30 минут объясняются одни и те же принципы работы древа.

Приятного просмотра и легкого обучения!

#урок
👍1
Наглядное изображение древа Меркла.

Сложно в одном посте написать весь его смысл, но, если говорить кратко, то это такой метод хеширования данных для последующей валидации.

При этом, если хоть один символ в каком-либо месте транзакции будет изменен, то функция проверки будет выдавать ошибку.

#древомеркла
Очередной пример работы древа Меркла.

Если, скажем, вам нужно проверить валидность транзакции Т5, то для проверки вам потребуются только 3 дополнительных хеша.

#древомеркла
Забыл еще вчера важную картинку по теме древа Мерка выложить.

Очень важно, чтобы количество транзакций было "2 в степени n", иначе будет выдаваться ошибка.

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

#древомеркла