Ну и второй вопрос, как и говорил.
Нужно ли будет через неделю-две попробовать создать скайп-созвон? Можем познакомиться, поотвечать на вопросы по Solidity, и тд.
Что думаете?
Нужно ли будет через неделю-две попробовать создать скайп-созвон? Можем познакомиться, поотвечать на вопросы по Solidity, и тд.
Что думаете?
Урок 11
Я был в дороге последние три дня, потому постов на канале не было совсем. Думал, что успею доехать еще утром в место, где будет связь, но увы.
Тем не менее, по предыдущим опросам я рад, что большинство понимает английскую речь и могут без перевода добирать знания из уроков позже. Для остальных, я попытаюсь делать небольшие выдержки из иностранных уроков, на которые нужно будет обращать внимание.
На этой неделе мы приступаем уже к серьезной работе со смарт-контрактами, и в текущем уроке попробуем разобрать, что такое Наследование в смарт-контрактах.
Видео урок - Наследование.
Этот урок довольно простой, но нужно точно следовать в написании кода за лектором. Так будет намного понятнее.
Я же, как и обычно, но по мере нахождения точек связи, постараюсь выкладывать сюда короткие сниппеты из урока, чтобы можно было быстро находить подсказки в будущем.
Всем приятного просмотра и легких знаний!
#урок #наследование
Я был в дороге последние три дня, потому постов на канале не было совсем. Думал, что успею доехать еще утром в место, где будет связь, но увы.
Тем не менее, по предыдущим опросам я рад, что большинство понимает английскую речь и могут без перевода добирать знания из уроков позже. Для остальных, я попытаюсь делать небольшие выдержки из иностранных уроков, на которые нужно будет обращать внимание.
На этой неделе мы приступаем уже к серьезной работе со смарт-контрактами, и в текущем уроке попробуем разобрать, что такое Наследование в смарт-контрактах.
Видео урок - Наследование.
Этот урок довольно простой, но нужно точно следовать в написании кода за лектором. Так будет намного понятнее.
Я же, как и обычно, но по мере нахождения точек связи, постараюсь выкладывать сюда короткие сниппеты из урока, чтобы можно было быстро находить подсказки в будущем.
Всем приятного просмотра и легких знаний!
#урок #наследование
YouTube
Solidity и смарт-контракты Ethereum, урок #11 | Наследование, конструкторы, super, override, virtual
ХОТИТЕ СТАТЬ РАЗРАБОТЧИКОМ Solidity, узнать об Ethereum, блокчейне и многом другом ещё больше?!
Мои друзья из GUIDE DAO (бывшая школа MCS) предлагают скидку 0,1 ETH на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами:…
Мои друзья из GUIDE DAO (бывшая школа MCS) предлагают скидку 0,1 ETH на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами:…
🔥1
Чтобы создать наследование в контрактах, нужно получить или написать контракт родителя, а затем сослаться на его в дочернем контракте через "is".
Один контракт может наследовать функции из нескольких других. Однако в этом случае важен их порядок определения в дочернем контракте.
Также в наследовании контрактов важно следить за областями видимости функций.
#наследование
Один контракт может наследовать функции из нескольких других. Однако в этом случае важен их порядок определения в дочернем контракте.
Также в наследовании контрактов важно следить за областями видимости функций.
#наследование
🔥1
В некоторых случаях контракты могут становиться Абстрактными. Они не разворачиваются самостоятельно, но при этом могут наследовать или передовать функции в другие контракты.
Чаще всего контракты становятся абстрактными, когда не могут передавать значения в constructor родителя.
Я редко пока что встречал abstract на практике, поэтому буду дополнять инфо по ходу обучения.
#abstract #наследование
Чаще всего контракты становятся абстрактными, когда не могут передавать значения в constructor родителя.
Я редко пока что встречал abstract на практике, поэтому буду дополнять инфо по ходу обучения.
#abstract #наследование
🔥1
А вот так можно передавать значения в контруктор родителя, от которого будем получать функции.
#наследование
#наследование
🔥1
Чтобы переопредилить функцию в дочернем контракте, в родительском контракте необходимо указать параметр virtual, а в первом - override.
#наследование #virtual #override
#наследование #virtual #override
🔥1
Чтобы не писать дважды функцию и в родителе, и в дочернем контракте, можно писать функцию сразу от имени родителя или использовать super (если родитель на одном уровне выше).
#наследование #super
#наследование #super
🔥1
Урок 12. Интерфейсы и библиотеки
Привет всем! Полагаю, за два дня вам удалось разобраться с наследованием в смарт-контрактах. Там, по сути, ничего сложно, однако это вы будете применять достаточно часто, в особенности, составляя сложные контракты, например, для создания токенов или nft, их продажи через магазины и т.д.
В общем штука полезная и с ней надо научиться работать.
В сегодняшнем уроке мы пойдем чуть дальше и поговорим об интерфейсах и библиотеках, которые помогаю сокращать смарт-контракты и подключать функции из сторонних файлов.
Видео урок - Интерфейсы и библиотеки.
Я сам не с первого раза освоил эту тему и приходилось пересматривать урок вновь и вновь. И это только потому, что в одном из следующих видео, лектор начинает свой стрим с подключения библиотеки без особых разъяснений.
Забегая вперед, скажу, что нам осталось еще пара обучающих уроков, и мы перейдем к работе со смарт-контрактами, как "взрослые разработчики".
Поэтому желательно закрепить все знания в течение последующей недели, чтобы с комфортом обучаться дальше!
Всем легких знаний и хорошей памяти!
#интерфейсы #библиотка
Привет всем! Полагаю, за два дня вам удалось разобраться с наследованием в смарт-контрактах. Там, по сути, ничего сложно, однако это вы будете применять достаточно часто, в особенности, составляя сложные контракты, например, для создания токенов или nft, их продажи через магазины и т.д.
В общем штука полезная и с ней надо научиться работать.
В сегодняшнем уроке мы пойдем чуть дальше и поговорим об интерфейсах и библиотеках, которые помогаю сокращать смарт-контракты и подключать функции из сторонних файлов.
Видео урок - Интерфейсы и библиотеки.
Я сам не с первого раза освоил эту тему и приходилось пересматривать урок вновь и вновь. И это только потому, что в одном из следующих видео, лектор начинает свой стрим с подключения библиотеки без особых разъяснений.
Забегая вперед, скажу, что нам осталось еще пара обучающих уроков, и мы перейдем к работе со смарт-контрактами, как "взрослые разработчики".
Поэтому желательно закрепить все знания в течение последующей недели, чтобы с комфортом обучаться дальше!
Всем легких знаний и хорошей памяти!
#интерфейсы #библиотка
YouTube
Solidity и смарт-контракты Ethereum, урок #12 | Интерфейсы, библиотеки, тесты
ХОТИТЕ СТАТЬ РАЗРАБОТЧИКОМ Solidity, узнать об Ethereum, блокчейне и многом другом ещё больше?!
Мои друзья из GUIDE DAO (бывшая школа MCS) предлагают скидку 0,1 ETH на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами:…
Мои друзья из GUIDE DAO (бывшая школа MCS) предлагают скидку 0,1 ETH на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами:…
👍1🔥1
Чтобы адрес трансформировать в специальный объект, который может отчевать на привильные функции, нам необходимо имортировать исходный код нужного контракта в свой, и затем инициализировать объект, как в примере на скрине. и тогда уже, относительно этого объекта, мы можем вызывать функции из подключенного контракта.
#подключениеконтракта #import
#подключениеконтракта #import
🔥1
Для того, чтобы создать интерфейс вам необходимо создать новый файл с расширением sol, также прописать тип лицензии и версию Solidity, а затем начать процесс создания с написания interface.
После этого можно копировать функции без их "тела", как показано в примере.
При этом не забудьте подключить интерфейс через import в оригинальном контракте, если сами написали его, и в своем.
По свеой сути интерфейс это описание смарт-контракта, от которого можно наследовать и принимать функции.
#interface
После этого можно копировать функции без их "тела", как показано в примере.
При этом не забудьте подключить интерфейс через import в оригинальном контракте, если сами написали его, и в своем.
По свеой сути интерфейс это описание смарт-контракта, от которого можно наследовать и принимать функции.
#interface
🔥1
Библиотека - это фактически некий набор функций, который мы можем подключать к определенным типам данных, чтобы их расширять.
Библиотеки открываются ключевым словом library, внитри чего прописывается функция.
Подключается она также через import, а используется через "using "func name" for "тип данных".
#библиотека #library
Библиотеки открываются ключевым словом library, внитри чего прописывается функция.
Подключается она также через import, а используется через "using "func name" for "тип данных".
#библиотека #library
🔥1
А зачем нужны интерфейсы, библиотеки и наследование?
Больше всего в обучении меня напрягал тот факт, что лекторы всегда рассказывали тему или давали материал без объяснения: "А нафига мне все это надо?". В том плане, а как это использовать я буду в работе. Типа выучил, понял и хорошо.
Вот примерно тоже у меня было и с последними темами: вроде бы все понятно, но для чего мне это?! Пришлось смотреть другие видео для лучшего понимания.
В целом и общем, могу вот чем поделиться по этому поводу.
Во-первых, в большинстве случаев разработчики не пишут контракты от и до с нуля. Они накидывают часто употребляемые функции из других контрактов, типа проверки на владельца. И одним из основных ресурсов является портал Open Zeppelin, где выставляются уже отработанные и качественные контракты для подключения. Там уже предусмотрены многие моменты безопасности и масштабируемости, поэтому он так популярен.
И вот, получается, что как только вы затеялись с написанием своего контракта, вы можете посетить данный портал, подключить сторонний контракт к себе через интерфейс, и затем вызывать функции через наследование.
Можно думать об этом процессе, как о неком текстовом конструкторе, который позволяет быстрее вести разработку.
Надеюсь, после этого поста вас станет чуть понятнее, зачем это все учится.
Больше всего в обучении меня напрягал тот факт, что лекторы всегда рассказывали тему или давали материал без объяснения: "А нафига мне все это надо?". В том плане, а как это использовать я буду в работе. Типа выучил, понял и хорошо.
Вот примерно тоже у меня было и с последними темами: вроде бы все понятно, но для чего мне это?! Пришлось смотреть другие видео для лучшего понимания.
В целом и общем, могу вот чем поделиться по этому поводу.
Во-первых, в большинстве случаев разработчики не пишут контракты от и до с нуля. Они накидывают часто употребляемые функции из других контрактов, типа проверки на владельца. И одним из основных ресурсов является портал Open Zeppelin, где выставляются уже отработанные и качественные контракты для подключения. Там уже предусмотрены многие моменты безопасности и масштабируемости, поэтому он так популярен.
И вот, получается, что как только вы затеялись с написанием своего контракта, вы можете посетить данный портал, подключить сторонний контракт к себе через интерфейс, и затем вызывать функции через наследование.
Можно думать об этом процессе, как о неком текстовом конструкторе, который позволяет быстрее вести разработку.
Надеюсь, после этого поста вас станет чуть понятнее, зачем это все учится.
👍3🔥1
Урок 13. Древо Меркла
Привет всем! Вчера я снова был в дороге, потому была тишина на канале. Пишу это просто для того, чтобы вы знали, что обучение еще продолжается, и мы закончим его в любом случае до конца августа.
В целом, еще пара уроков и мы сможем понять базовую суть написания смарт-контрактов и достичь уровня Джуна в Solidity.
Сегодняшний урок может показаться немного запутанным, но он нужен для того чтобы понимать суть хеширования в Solidity.
Видео урок - древо Меркла.
Я посмотрел несколько подобных видео по данной теме, и могу с уверенностью сказать, что данный урок от Ильи является одним из самых понятных.
Думаю, тут также будет не много скринов из урока, так как все 30 минут объясняются одни и те же принципы работы древа.
Приятного просмотра и легкого обучения!
#урок
Привет всем! Вчера я снова был в дороге, потому была тишина на канале. Пишу это просто для того, чтобы вы знали, что обучение еще продолжается, и мы закончим его в любом случае до конца августа.
В целом, еще пара уроков и мы сможем понять базовую суть написания смарт-контрактов и достичь уровня Джуна в Solidity.
Сегодняшний урок может показаться немного запутанным, но он нужен для того чтобы понимать суть хеширования в Solidity.
Видео урок - древо Меркла.
Я посмотрел несколько подобных видео по данной теме, и могу с уверенностью сказать, что данный урок от Ильи является одним из самых понятных.
Думаю, тут также будет не много скринов из урока, так как все 30 минут объясняются одни и те же принципы работы древа.
Приятного просмотра и легкого обучения!
#урок
YouTube
Solidity и смарт-контракты Ethereum, урок #8 | Древо Меркла, хэши, encode, циклы
ХОТИТЕ СТАТЬ РАЗРАБОТЧИКОМ Solidity, узнать об Ethereum, блокчейне и многом другом ещё больше?!
Мои друзья из GUIDE DAO (бывшая школа MCS) предлагают скидку 0,1 ETH на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами:…
Мои друзья из GUIDE DAO (бывшая школа MCS) предлагают скидку 0,1 ETH на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами:…
👍1
Наглядное изображение древа Меркла.
Сложно в одном посте написать весь его смысл, но, если говорить кратко, то это такой метод хеширования данных для последующей валидации.
При этом, если хоть один символ в каком-либо месте транзакции будет изменен, то функция проверки будет выдавать ошибку.
#древомеркла
Сложно в одном посте написать весь его смысл, но, если говорить кратко, то это такой метод хеширования данных для последующей валидации.
При этом, если хоть один символ в каком-либо месте транзакции будет изменен, то функция проверки будет выдавать ошибку.
#древомеркла
Очередной пример работы древа Меркла.
Если, скажем, вам нужно проверить валидность транзакции Т5, то для проверки вам потребуются только 3 дополнительных хеша.
#древомеркла
Если, скажем, вам нужно проверить валидность транзакции Т5, то для проверки вам потребуются только 3 дополнительных хеша.
#древомеркла
Забыл еще вчера важную картинку по теме древа Мерка выложить.
Очень важно, чтобы количество транзакций было "2 в степени n", иначе будет выдаваться ошибка.
Я слышал, что есть уже способы работы с древом с разными наборами транзакций, но это сильно усложняет задачу. На данном этапе главное понять принципы.
#древомеркла
Очень важно, чтобы количество транзакций было "2 в степени n", иначе будет выдаваться ошибка.
Я слышал, что есть уже способы работы с древом с разными наборами транзакций, но это сильно усложняет задачу. На данном этапе главное понять принципы.
#древомеркла
Урок 14. Низкоуровневые вызовы
Ну, что? Готовы к хардкорным занятиям по Solidity?
За предыдущие 13 уроков мы многое узнали, но то были цветочки в языке, для новичков. Если вы двигались по обучению вместе со мной, то к данному уроку накопили уже некоторую практику и понимание, как работают смарт-контракты.
В последующие две недели мы закончим основное обучение по языку и начнем разбирать уже прицельные темы по разработке смарт-контрактов: как например, создание своего токена, NFT, DAO, DeFi, Dapp и многое другие.
Сегодняшний урок открывает двери в более глубокое изучение Solidity. И вы можете по-настоящему гордиться собой, если дошли до этого момента.
Итак, дамы и господа, новый видео урок - Низкоуровневые вызовы
Над ним стоит посидеть пару дней, чтобы точнее понять, о чем там говорится. Эти знания будут применяться очень часто при создании токенов и проведении выплат в рамках смарт-контрактов.
#низкоуровневыевызовы #урок
Ну, что? Готовы к хардкорным занятиям по Solidity?
За предыдущие 13 уроков мы многое узнали, но то были цветочки в языке, для новичков. Если вы двигались по обучению вместе со мной, то к данному уроку накопили уже некоторую практику и понимание, как работают смарт-контракты.
В последующие две недели мы закончим основное обучение по языку и начнем разбирать уже прицельные темы по разработке смарт-контрактов: как например, создание своего токена, NFT, DAO, DeFi, Dapp и многое другие.
Сегодняшний урок открывает двери в более глубокое изучение Solidity. И вы можете по-настоящему гордиться собой, если дошли до этого момента.
Итак, дамы и господа, новый видео урок - Низкоуровневые вызовы
Над ним стоит посидеть пару дней, чтобы точнее понять, о чем там говорится. Эти знания будут применяться очень часто при создании токенов и проведении выплат в рамках смарт-контрактов.
#низкоуровневыевызовы #урок
YouTube
Solidity и смарт-контракты Ethereum, урок #17 | Низкоуровненые вызовы и безопасность
ХОТИТЕ СТАТЬ РАЗРАБОТЧИКОМ Solidity, узнать об Ethereum, блокчейне и многом другом ещё больше?!
Мои друзья из GUIDE DAO (бывшая школа MCS) предлагают скидку 0,1 ETH на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами:…
Мои друзья из GUIDE DAO (бывшая школа MCS) предлагают скидку 0,1 ETH на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами:…
❤1🔥1
В данном примере, call служит для отправки денежных средств на другой контракт, который мы указываем в constructor.
Записывается как: contractAddress.call{value: valueVar}(""), где в начале указывается адрес контракта, а valueVar - сумма.
Низкоуровневый вызов call возвращает кортеж из двух значений: первый - это булево значение, второе - выходной результат, которое возвращает вызванная функция. Если результат вас не интересует, то оставляете это поле пустым.
Тут нужно обратить внимание, что даже если call не прошел, то ошибка вызвана не будет, поэтому для подтверждения успешности вызова следует использовать require.
Как я понял, вообще call чаще всего используется для отправки денег на другой адрес, или же для вызова функций в стороннем контракте.
#call
Записывается как: contractAddress.call{value: valueVar}(""), где в начале указывается адрес контракта, а valueVar - сумма.
Низкоуровневый вызов call возвращает кортеж из двух значений: первый - это булево значение, второе - выходной результат, которое возвращает вызванная функция. Если результат вас не интересует, то оставляете это поле пустым.
Тут нужно обратить внимание, что даже если call не прошел, то ошибка вызвана не будет, поэтому для подтверждения успешности вызова следует использовать require.
Как я понял, вообще call чаще всего используется для отправки денег на другой адрес, или же для вызова функций в стороннем контракте.
#call
🔥2
С помощью call мы также можем обращаться к функциям в стороннем контракте, даже к тем, к которым мы не имеем прямого доступа или интерфейса.
Для этого, вместо денежных средств мы должны передать название самой функции в нужном контракте, а также аргументы, которые данная функция принимает.
Делается это при помощи abi.encodeWithSignature("funcNam(type)", arguments), и выглядит так:
otherContract.call{}(abi.encodeWithSignature("funcNam(type)", arguments));
Следует отметить, что в этом случае ответ всегда приходит в виде байтов: bytes memory response. И к этому response мы можем порождать события с emit.
#call #abi #encodewithsignature
Для этого, вместо денежных средств мы должны передать название самой функции в нужном контракте, а также аргументы, которые данная функция принимает.
Делается это при помощи abi.encodeWithSignature("funcNam(type)", arguments), и выглядит так:
otherContract.call{}(abi.encodeWithSignature("funcNam(type)", arguments));
Следует отметить, что в этом случае ответ всегда приходит в виде байтов: bytes memory response. И к этому response мы можем порождать события с emit.
#call #abi #encodewithsignature
🔥2❤1