Планы по дальнейшему обучению
Сегодня день на самостоятельную работу по вчерашнему уроку, поэтому скринов и комментариев на канале нет. Тем не менее, хочу поделиться небольшими планами, как будет проходить дальнейшее обучение Solidity на данном канале.
Итак, на неделе мы заканчиваем уроки по функционалу Solidity. Завтра будет урок про calldata и memory, в пятницу по hardhat tasks и по сути это все.
Я планирую собрать ссылки на уроки в один пост и напомнить про навигацию\поиску по тегам.
С понедельника начнем уже заниматься разборами самих смарт-контрактов. В течение этого времени мы просмотрим стримы про создание токенов (ERC20), NFT (ERC721), разберем паттерны контрактов Timelock, Commit\reveal, MiltySig, DAO, Governance, Proxy и некоторых других.
Думаю это займет еще недели две-три. После этого также будет один объединяющий пост.
Третьим этапом мы будем разбирать безопасность смарт-контрактов. Рассмотрим популярные методы взлома и защиты.
Сколько займет этот период обучение, пока сказать не могу. Вероятнее всего, также недели две-три.
После этого будет еще один объединённый пост по разделу безопасность, а также несколько постов про ресурсы для самостоятельного обучения и npm пакеты, которые пригодятся в работе со смарт-контрактами.
На данный момент, это план обучения до конца сентября. Понимаю, что совсем не многие на канале смогут двигаться вместе со мной, но вы в любой момент можете подключиться и уловить суть урока.
Если все пойдет по плану, и эти этапы будут завершены успешно, то к совсем дальнейшим планам я мог бы отнести дополнительное обучение по hardhat и truffle, а также учеба по react js, чтобы можно было создавать полноценные проекты в web3.
После завершения основного обучения через неделю, вы вполне сможете разбираться в коде смарт-контракта и понимать, что делает та или иная функция.
Если же хотите дорасти вместе со мной до мидл разработчика, то буду рад компании на канале!
Также приветствуются комментарии и предложения!
Сегодня день на самостоятельную работу по вчерашнему уроку, поэтому скринов и комментариев на канале нет. Тем не менее, хочу поделиться небольшими планами, как будет проходить дальнейшее обучение Solidity на данном канале.
Итак, на неделе мы заканчиваем уроки по функционалу Solidity. Завтра будет урок про calldata и memory, в пятницу по hardhat tasks и по сути это все.
Я планирую собрать ссылки на уроки в один пост и напомнить про навигацию\поиску по тегам.
С понедельника начнем уже заниматься разборами самих смарт-контрактов. В течение этого времени мы просмотрим стримы про создание токенов (ERC20), NFT (ERC721), разберем паттерны контрактов Timelock, Commit\reveal, MiltySig, DAO, Governance, Proxy и некоторых других.
Думаю это займет еще недели две-три. После этого также будет один объединяющий пост.
Третьим этапом мы будем разбирать безопасность смарт-контрактов. Рассмотрим популярные методы взлома и защиты.
Сколько займет этот период обучение, пока сказать не могу. Вероятнее всего, также недели две-три.
После этого будет еще один объединённый пост по разделу безопасность, а также несколько постов про ресурсы для самостоятельного обучения и npm пакеты, которые пригодятся в работе со смарт-контрактами.
На данный момент, это план обучения до конца сентября. Понимаю, что совсем не многие на канале смогут двигаться вместе со мной, но вы в любой момент можете подключиться и уловить суть урока.
Если все пойдет по плану, и эти этапы будут завершены успешно, то к совсем дальнейшим планам я мог бы отнести дополнительное обучение по hardhat и truffle, а также учеба по react js, чтобы можно было создавать полноценные проекты в web3.
После завершения основного обучения через неделю, вы вполне сможете разбираться в коде смарт-контракта и понимать, что делает та или иная функция.
Если же хотите дорасти вместе со мной до мидл разработчика, то буду рад компании на канале!
Также приветствуются комментарии и предложения!
👍5🔥1
Урок 15. Работа с памятью в Solidity
Еще один сложный для понимания урок, который я пересматривал несколько раз.
Для меня лично, проблемы возникли не только с пониманием организации памяти, но и с добавление языка Yul, который я раньше не встречал в своей практике.
Тем не менее, он оказался не таким уж и навороченным, если посидеть с ним и разобраться, что к чему.
Видео урок - работа с памятью
К данному уроку можно вернуться в любой момент, так как он просто рассказывает про внутреннюю работу языка Solidity.
И, на данный момент, я встречал в различных видео всего раза два, когда требовалось использовать assembly и вытаскивать из памяти селектор или другие значение. Уверен, это уже знания продвинутого разработчика Solidity.
Я в течение дня все также буду выкладывать скрины и пояснения кода и работы памяти.
#урок #memory #calldata
Еще один сложный для понимания урок, который я пересматривал несколько раз.
Для меня лично, проблемы возникли не только с пониманием организации памяти, но и с добавление языка Yul, который я раньше не встречал в своей практике.
Тем не менее, он оказался не таким уж и навороченным, если посидеть с ним и разобраться, что к чему.
Видео урок - работа с памятью
К данному уроку можно вернуться в любой момент, так как он просто рассказывает про внутреннюю работу языка Solidity.
И, на данный момент, я встречал в различных видео всего раза два, когда требовалось использовать assembly и вытаскивать из памяти селектор или другие значение. Уверен, это уже знания продвинутого разработчика Solidity.
Я в течение дня все также буду выкладывать скрины и пояснения кода и работы памяти.
#урок #memory #calldata
YouTube
Solidity и смарт-контракты Ethereum, урок #21 | Yul, memory, calldata, селекторы функций
ХОТИТЕ СТАТЬ РАЗРАБОТЧИКОМ Solidity, узнать об Ethereum, блокчейне и многом другом ещё больше?!
Мои друзья из GUIDE DAO (бывшая школа MCS) предлагают скидку 0,1 ETH на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами:…
Мои друзья из GUIDE DAO (бывшая школа MCS) предлагают скидку 0,1 ETH на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами:…
🔥1
Solidity резервирует 4 слота памяти, которые хранят в себе до 32 байтов, где первые два слота или 64 байта - это некое служебное пространство, оно уже использкется по умолчанию, и мы не будем обращаться к нему напрямую. Следующие 32 байта хранят в себе указатель на свободное место в памяти, который как бы говорит, что с этого момента ты можешь что-то записать в память. Потом идет пустой слот, после которого мы можем записывать свои данные.
Для того, чтобы обращаться к слотам памяти используют Yul (код с assemly в видео).
Чтобы найти значение строки, которое возвращается в bytes32, нужно найти указатель в памяти, а затем вычесть из него предполагаемый размер данных в байтах. Например, строка "test" точно поместится в 32 байта, поэтому код будет выглядеть как на скрине.
#accembly #memory #calldata #yul
Для того, чтобы обращаться к слотам памяти используют Yul (код с assemly в видео).
Чтобы найти значение строки, которое возвращается в bytes32, нужно найти указатель в памяти, а затем вычесть из него предполагаемый размер данных в байтах. Например, строка "test" точно поместится в 32 байта, поэтому код будет выглядеть как на скрине.
#accembly #memory #calldata #yul
🔥1
Основное различие calldata от memory заключается в том, что при использовании memory тратится больше газа, так как его можно перезаписывать.
Calldata же является неизменным значением. Другими словами, мы можем использовать calldata в своих функциях, но изменить его значение у нас не получится.
#accembly #memory #calldata #yul
Calldata же является неизменным значением. Другими словами, мы можем использовать calldata в своих функциях, но изменить его значение у нас не получится.
#accembly #memory #calldata #yul
🔥1
Урок 16 - Hardhat Tasks
Сегодня мы посмотрим завершающий урок базового курса по Solidity, который расскажет нам как писать свои собственные задачи в hardhat.
Вообще, написание каких-либо дополнительных задач является делом сугубо индивидуальным и решающим вопросы удобства и скорости проведения текстов смарт-контракта.
В других видео я ни разу не встречал, чтобы кто-то использовал кастомные задачи в своих проектах, поэтому предполагаю, что они нужны скорее для крупных проектов и работе с командой.
Видео урок - задачи hardhat.
После данного урока выйдет пара постов, в которых я сделаю навигацию по урокам и тегам, а также закреплю инструкцию по настройке среды разработки, чтобы новым участникам было понятно, что мы уже прошли.
Затем уже начнем разбирать остальные уроки лектора: стримы, работу с контрактами и их паттернами.
Приятного дня и легкого понимания!
#урок
Сегодня мы посмотрим завершающий урок базового курса по Solidity, который расскажет нам как писать свои собственные задачи в hardhat.
Вообще, написание каких-либо дополнительных задач является делом сугубо индивидуальным и решающим вопросы удобства и скорости проведения текстов смарт-контракта.
В других видео я ни разу не встречал, чтобы кто-то использовал кастомные задачи в своих проектах, поэтому предполагаю, что они нужны скорее для крупных проектов и работе с командой.
Видео урок - задачи hardhat.
После данного урока выйдет пара постов, в которых я сделаю навигацию по урокам и тегам, а также закреплю инструкцию по настройке среды разработки, чтобы новым участникам было понятно, что мы уже прошли.
Затем уже начнем разбирать остальные уроки лектора: стримы, работу с контрактами и их паттернами.
Приятного дня и легкого понимания!
#урок
YouTube
Solidity и смарт-контракты Ethereum, урок #22 | Hardhat tasks (таски Hardhat)
ХОТИТЕ СТАТЬ РАЗРАБОТЧИКОМ Solidity, узнать об Ethereum, блокчейне и многом другом ещё больше?!
Мои друзья из GUIDE DAO (бывшая школа MCS) предлагают скидку 0,1 ETH на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами:…
Мои друзья из GUIDE DAO (бывшая школа MCS) предлагают скидку 0,1 ETH на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами:…
Задачи можно писать прямо в файле hardhat.config.js, но делать этого не рекомендуется, чтобы в дальнейшем не возникало никаких проблем с загрузкой hardhat или его настройкой, если вы ошибетесь с кодом.
Поэтому лучше создать новую директорию tasks с файлом "sampleTask.js" и уже его подключать в конфиг файл через require (или через import, если вы используете расширения .ts).
В новом файле нам нужно подключить некоторые модули, например сам task, как показано на скрине.
#hardhat #tasks
Поэтому лучше создать новую директорию tasks с файлом "sampleTask.js" и уже его подключать в конфиг файл через require (или через import, если вы используете расширения .ts).
В новом файле нам нужно подключить некоторые модули, например сам task, как показано на скрине.
#hardhat #tasks
Вот пример задачи для hardhat, которая выведет баланс аккаунта, если в консоли прописать npx hardhat balance --account accAddress
По сути, тут все довольно просто. Сначала создаем саму задачу, называем ее и описываем действие. Потом говорим, какие обязательные и необязательные (при необходимости) параметры она будет принимать. Затем пишем функцию в setAction для выполнения запроса.
В setAction, вместе с передаваемыми параметрами, можно подключать и ethers.js, чтобы можно было вызывать функции из этой библиотеки.
#hardhat #tasks
По сути, тут все довольно просто. Сначала создаем саму задачу, называем ее и описываем действие. Потом говорим, какие обязательные и необязательные (при необходимости) параметры она будет принимать. Затем пишем функцию в setAction для выполнения запроса.
В setAction, вместе с передаваемыми параметрами, можно подключать и ethers.js, чтобы можно было вызывать функции из этой библиотеки.
#hardhat #tasks
Привет всем!
Сегодня будут пару постов подводящих итоги базового обучения. Я просто хочу собрать ссылки на уроки в одном посте, плюс немного другой инфы, чтобы можно было закрепить их. А завтра начнем разбор первого контракта!
Сегодня будут пару постов подводящих итоги базового обучения. Я просто хочу собрать ссылки на уроки в одном посте, плюс немного другой инфы, чтобы можно было закрепить их. А завтра начнем разбор первого контракта!
🔥1
Базовый курс по Solidity
Под каждым уроком есть посты подсказки. Если вы забыли какую-либо часть урока или хотите уточнить тот или иной момент, то попробуйте воспользоваться поиском по тегам. Например, #enum, #event, #call и так далее.
Урок 1 - Введение в Solidity
Урок 2 - Типы данных: Bool, uint, int
Урок 3 - Типы данных: String, address, mapping
Урок 4 - Типы данных: array, enum, bytes, struct
Урок 5 - Функции
Урок 6 - События и модификаторы
Урок 7 - Работа с терминалом, основы node.js и npm
Урок 8 - Тестирование с Hardhat, Ethers & Waffle
Урок 9 - Оптимизация смарт-контрактов
Урок 10 - Вопросы для собеседования. Часть 1
Урок 11 - Наследование
Урок 12 - Интерфейсы и библиотеки
Урок 13 - Древо Меркла
Урок 14 - Низкоуровневые вызовы
Урок 15 - Работа с памятью в Solidity
Урок 16 - Hardhat tasks
В следующей части обучения мы будет разбирать смарт-контракты, популярные решения и паттерны.
Под каждым уроком есть посты подсказки. Если вы забыли какую-либо часть урока или хотите уточнить тот или иной момент, то попробуйте воспользоваться поиском по тегам. Например, #enum, #event, #call и так далее.
Урок 1 - Введение в Solidity
Урок 2 - Типы данных: Bool, uint, int
Урок 3 - Типы данных: String, address, mapping
Урок 4 - Типы данных: array, enum, bytes, struct
Урок 5 - Функции
Урок 6 - События и модификаторы
Урок 7 - Работа с терминалом, основы node.js и npm
Урок 8 - Тестирование с Hardhat, Ethers & Waffle
Урок 9 - Оптимизация смарт-контрактов
Урок 10 - Вопросы для собеседования. Часть 1
Урок 11 - Наследование
Урок 12 - Интерфейсы и библиотеки
Урок 13 - Древо Меркла
Урок 14 - Низкоуровневые вызовы
Урок 15 - Работа с памятью в Solidity
Урок 16 - Hardhat tasks
В следующей части обучения мы будет разбирать смарт-контракты, популярные решения и паттерны.
🔥4❤1
Solidity. Смарт контракты и аудит pinned «Базовый курс по Solidity Под каждым уроком есть посты подсказки. Если вы забыли какую-либо часть урока или хотите уточнить тот или иной момент, то попробуйте воспользоваться поиском по тегам. Например, #enum, #event, #call и так далее. Урок 1 - Введение…»
На что обращать внимание во время обучения разбора смарт-контрактов
Я тут посмотрел несколько видео с тем, как тестируют молодых ребят на вакансию Solidity разработчика и могу вот что сказать.
Легче всего ответить на вопросы, даже заковыристые, и показать свои написанные смарт-контракты. Хотя некоторые и просят, чтобы они были выложены на GitHub или задеплоиные в мейннет. Но суть сейчас не в этом.
Иногда просят выполнить тестовое задание и написать смарт-контракт прямо на собеседовании. Тебе говорят, мол:
"Вам нужно написать контракт, который будет создавать объект голосования и принимать на входе массив с валидированными адресами. Эти адреса могут голосовать за проект эфиром. Победитель забирает все, а контракт - комиссию. Добавить проверки функций."
И ты такой сидишь и думаешь, за что браться в начале.
Вот для этого я и хочу заняться разборами контрактов, чтобы мы могли переводить такой текст задания в код и понимать: " Так, объект это скорее всего через struct, список адресов через mapping. Потом проверки. " Как-то так.
По себе знаю, что насмотреннсть и понимание кода других разработчиков, может сильно продвинуть в обучении.
На что я предлагаю обращать внимание в смарт-контрактах:
1. Общую задачу
2. Надобность переменных или за что они отвечают
3. Различные require
4. Наследования других контрактов
5. Подключенные import
Возможно, список будет дополняться, но пока так. Предлагайте свои варианты, на что обращаете внимание в обучении.
Начинаем уже завтра.
Я тут посмотрел несколько видео с тем, как тестируют молодых ребят на вакансию Solidity разработчика и могу вот что сказать.
Легче всего ответить на вопросы, даже заковыристые, и показать свои написанные смарт-контракты. Хотя некоторые и просят, чтобы они были выложены на GitHub или задеплоиные в мейннет. Но суть сейчас не в этом.
Иногда просят выполнить тестовое задание и написать смарт-контракт прямо на собеседовании. Тебе говорят, мол:
"Вам нужно написать контракт, который будет создавать объект голосования и принимать на входе массив с валидированными адресами. Эти адреса могут голосовать за проект эфиром. Победитель забирает все, а контракт - комиссию. Добавить проверки функций."
И ты такой сидишь и думаешь, за что браться в начале.
Вот для этого я и хочу заняться разборами контрактов, чтобы мы могли переводить такой текст задания в код и понимать: " Так, объект это скорее всего через struct, список адресов через mapping. Потом проверки. " Как-то так.
По себе знаю, что насмотреннсть и понимание кода других разработчиков, может сильно продвинуть в обучении.
На что я предлагаю обращать внимание в смарт-контрактах:
1. Общую задачу
2. Надобность переменных или за что они отвечают
3. Различные require
4. Наследования других контрактов
5. Подключенные import
Возможно, список будет дополняться, но пока так. Предлагайте свои варианты, на что обращаете внимание в обучении.
Начинаем уже завтра.
❤4🔥1
Урок 17 - Голландский аукцион
Ну вот мы и подошли к разбору контрактов вплотную. И сегодня мы посмотрим стрим, где лектор будет писать контракт для голландского аукциона, который примечателен тем, что цена так не растет от ставок пользователей, а наоборот - снижается со временем, и победителем может стать тот, что сделает единственную ставку. После этого аукцион закрывается.
Стрим - аукцион.
Так как это новый формат обучения, я еще не совсем уверен, какие скрины делать.
Тем не менее, вам стоит выделить час-два помимо видео и сами прописать весь контракт от и до.
Приятного дня и легкого обучения!
#голландскийаукцион #аукцион #урок
Ну вот мы и подошли к разбору контрактов вплотную. И сегодня мы посмотрим стрим, где лектор будет писать контракт для голландского аукциона, который примечателен тем, что цена так не растет от ставок пользователей, а наоборот - снижается со временем, и победителем может стать тот, что сделает единственную ставку. После этого аукцион закрывается.
Стрим - аукцион.
Так как это новый формат обучения, я еще не совсем уверен, какие скрины делать.
Тем не менее, вам стоит выделить час-два помимо видео и сами прописать весь контракт от и до.
Приятного дня и легкого обучения!
#голландскийаукцион #аукцион #урок
YouTube
СТРИМ! Solidity и Ethereum, урок #10 | Практика
ХОЧЕШЬ СТАТЬ РАЗРАБОТЧИКОМ Solidity, узнать об Ethereum, блокчейне и многом другом ещё больше?! Мои друзья из MCS предлагают скидку на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами: вы действительно узнаете…
👍1
В видео были показаны две переменные "constant" и "immutable", после которых имя переменных писалось капсом (большими буквами). Их особенность в том, что данные переменные уже нельзя будет нигде изменять.
Так вот, если мы пишем "constant" по значение переменной мы должны указать сразу.
Если же мы используем "immutable", то создать переменную можно в начале, а присвоить значение один раз позже.
#constant #immutable
Так вот, если мы пишем "constant" по значение переменной мы должны указать сразу.
Если же мы используем "immutable", то создать переменную можно в начале, а присвоить значение один раз позже.
#constant #immutable
👍1🔥1
Solidity поддерживает некоторые не стандартные форматы записи даты и времени.
Обычно во многих языках нужно указывать продолжительность времени в секундах или миллисекундах. И если мы хотим обозначить день, то нужно писать что-то типа - 60*60*24.
Однако в данном языке можно писать "3 hours", "5 minutes" или "2 weeks".
И что самое приятное, с такими датами можно проводить математические операции, как например, прибавлять или отнимать день от нужной даты.
#date #time #formats
Обычно во многих языках нужно указывать продолжительность времени в секундах или миллисекундах. И если мы хотим обозначить день, то нужно писать что-то типа - 60*60*24.
Однако в данном языке можно писать "3 hours", "5 minutes" или "2 weeks".
И что самое приятное, с такими датами можно проводить математические операции, как например, прибавлять или отнимать день от нужной даты.
#date #time #formats
👍1🔥1