Продолжаем уроки по Solidity! Сегодня мы узнаем, зачем нужны функции require, revert, assert, как писать модификаторы, а также как работать с событиями. Кроме того, узнаем, как тестировать все эти моменты с помощью ethers и waffle. https://www.youtube.com/watch?v=ZzK15vkO38c
YouTube
Solidity и смарт-контракты Ethereum, урок #7 | События, модификаторы, require/revert и тесты
ХОТИТЕ СТАТЬ РАЗРАБОТЧИКОМ Solidity, узнать об Ethereum, блокчейне и многом другом ещё больше?!
Мои друзья из GUIDE DAO (бывшая школа MCS) предлагают скидку 0,1 ETH на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами:…
Мои друзья из GUIDE DAO (бывшая школа MCS) предлагают скидку 0,1 ETH на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами:…
👍13❤3👏1🎉1
Друзья, вопросы по спонсорству и донатам продолжают поступать, поэтому обрисую ситуацию ещё раз, хотя уже упоминал это в сегодняшнем видео.
Primo. Судя по всему, пользователям из РФ отключили возможность становиться спонсорами любых каналов, во всяком случае, если они зарегистрированы в других странах. Впрочем, точно не скажу.
Secundo. Кроме того, похоже, что просмотры зрителей из РФ не учитываются в монетизации контента. Правда, если подключить VPN, то ваша страна для YT как бы "поменяется".
Tertio. Пока самым надёжным вариантом для пожертвований, как мне кажется, является криптовалюта. Номер кошелька Ethereum указан под каждым видео: 0x719C2d2bcC155c85190f20E1Cc3710F90FAFDa16 Также есть DonationAlerts - насколько я слышал краем уха, эта компания принадлежит mail.ru Правда, у меня могут быть проблемы с выводом, но что-нибудь придумаем, да и вообще это маловероятно. https://www.donationalerts.com/r/bodrovis Впрочем, я прекрасно понимаю, что многим сейчас не до донатов (хотя я подчёркиваю ещё раз, что пишу этот пост по следам многочисленных вопросов зрителей). В первую очередь, важны ваши лайки, комментарии и промотирование роликов в социальных сетях. В любом случае, я благодарен, что вы вообще подняли эту тему - это о многом говорит.
Quarto. Что делать, если в некоторых странах YT забанят? Использовать VPN - это пока наиболее простой ответ. Сервисов полно, найти их несложно. Я буду продолжать постить видео на YT, и, возможно, в Telegram, но также есть мысль о партнёрстве со сторонней платформой. Может быть, со школой, где я преподаю, может, с кем-то ещё (у нас в Lokalise есть своя академия). В этом случае, правда, почти наверняка это не будет бесплатно, т.к. всё-таки такие компании благотворительностью не занимаются. Но, посмотрим.
Quinto. Планы остаются прежними: рассказывать вам о современных технологиях. В приоритете Ethereum, тк эта тема очень многих заинтересовала, Ruby/Rails, автотесты. Хочется всё-таки затронуть Elixir, но тут теперь уже посмотрим, как оно будет. Пока скажу честно, что просмотры сильно упали, но я остаюсь на своём посту.
Sexto. Берегите себя и верьте в лучшее, несмотря ни на что. Любой психолог скажет, что в тяжёлых ситуациях главное - не впадать в апатию и не бросать привычных дел, продолжать соблюдать привычные "ритуалы". Показать хотя бы самому себе, что вы до какой-то степени контролируете происходящее, пусть и в пределах вашей квартиры. Боюсь, что лучшего совета у меня сейчас нет. Как говорил мудрый Гэндальф, каждый, кто рождается в такое тяжёлое время, задаётся вопросом: "Почему это выпало на мою долю?". Но мы не вольны выбирать период, когда рождаемся. Зато мы вольны выбирать то, как распорядиться тем временем, которое нам отмерено.
Скоро увидимся.
https://www.youtube.com/watch?v=EYT7QpaTOsc&list=PL93DED80D27B6931A
Primo. Судя по всему, пользователям из РФ отключили возможность становиться спонсорами любых каналов, во всяком случае, если они зарегистрированы в других странах. Впрочем, точно не скажу.
Secundo. Кроме того, похоже, что просмотры зрителей из РФ не учитываются в монетизации контента. Правда, если подключить VPN, то ваша страна для YT как бы "поменяется".
Tertio. Пока самым надёжным вариантом для пожертвований, как мне кажется, является криптовалюта. Номер кошелька Ethereum указан под каждым видео: 0x719C2d2bcC155c85190f20E1Cc3710F90FAFDa16 Также есть DonationAlerts - насколько я слышал краем уха, эта компания принадлежит mail.ru Правда, у меня могут быть проблемы с выводом, но что-нибудь придумаем, да и вообще это маловероятно. https://www.donationalerts.com/r/bodrovis Впрочем, я прекрасно понимаю, что многим сейчас не до донатов (хотя я подчёркиваю ещё раз, что пишу этот пост по следам многочисленных вопросов зрителей). В первую очередь, важны ваши лайки, комментарии и промотирование роликов в социальных сетях. В любом случае, я благодарен, что вы вообще подняли эту тему - это о многом говорит.
Quarto. Что делать, если в некоторых странах YT забанят? Использовать VPN - это пока наиболее простой ответ. Сервисов полно, найти их несложно. Я буду продолжать постить видео на YT, и, возможно, в Telegram, но также есть мысль о партнёрстве со сторонней платформой. Может быть, со школой, где я преподаю, может, с кем-то ещё (у нас в Lokalise есть своя академия). В этом случае, правда, почти наверняка это не будет бесплатно, т.к. всё-таки такие компании благотворительностью не занимаются. Но, посмотрим.
Quinto. Планы остаются прежними: рассказывать вам о современных технологиях. В приоритете Ethereum, тк эта тема очень многих заинтересовала, Ruby/Rails, автотесты. Хочется всё-таки затронуть Elixir, но тут теперь уже посмотрим, как оно будет. Пока скажу честно, что просмотры сильно упали, но я остаюсь на своём посту.
Sexto. Берегите себя и верьте в лучшее, несмотря ни на что. Любой психолог скажет, что в тяжёлых ситуациях главное - не впадать в апатию и не бросать привычных дел, продолжать соблюдать привычные "ритуалы". Показать хотя бы самому себе, что вы до какой-то степени контролируете происходящее, пусть и в пределах вашей квартиры. Боюсь, что лучшего совета у меня сейчас нет. Как говорил мудрый Гэндальф, каждый, кто рождается в такое тяжёлое время, задаётся вопросом: "Почему это выпало на мою долю?". Но мы не вольны выбирать период, когда рождаемся. Зато мы вольны выбирать то, как распорядиться тем временем, которое нам отмерено.
Скоро увидимся.
https://www.youtube.com/watch?v=EYT7QpaTOsc&list=PL93DED80D27B6931A
👏7👍5❤3
Друзья, я долгое время не публиковал руководство для задающих вопросы (оно в разных версиях публиковалось в моих более старых проектах), но, кажется, это время пришло.
На данный момент у меня нет возможности отвечать на вопросы в духе "как сделать такой смарт-контракт, чтобы он делал X, Y, Z?" и "как написать приложение, чтобы оно делало A, B, C?". Особенно в комментариях на YouTube - для обсуждения у нас есть чат в Telegram.
Поймите правильно, я написал/записал сотни статей и видео, а также создал десятки курсов и книг. Что было бы, если бы я отвечал на каждый вопрос по этим материалам? Мне бы пришлось себя клонировать, причём неоднократно. А от такого количества самого себя мне стало бы плохо.
При этом я рад конкретным вопросам по теме: просьбам пояснить какой-то непонятый момент, актуальным предложениям, замечаниям или вопросам по каким-то неработающим кускам кода. Скажу больше, ваши предложения - это действительно *очень* важно. Серьёзно, без этого бы просто не появились некоторые видео, поэтому совершенно ответственно говорю, что ваша обратная связь невероятно важна, ведь я работаю для вас. Однако если у вас что-то не работает, то нужно сделать, так сказать, "домашнюю работу", то есть по крайней мере погуглить возникающую ошибку. Если ни одно решение с первой страницы гугла вам явно не подходит, то смело обращайтесь, по мере возможности попробуем разобраться. И, само собой, если есть желание сообщить об ошибке, то нужно по крайней мере пояснить, что именно не работает и какие появляются симптомы. В идеале нужно показать релевантный программный код, иначе и говорить будет не о чем.
Пожалуйста, не нужно отправлять мне вопросы на почту, в linkedin (где я вообще почти ничего не делаю) или ещё какой-нибудь discord (которого формально у меня нет). Для этого, опять же, есть чат Telegram. Я бы очень хотел помочь всем на свете, но, увы, это просто невозможно. Именно поэтому мы и организовали это небольшое сообщество, где люди со схожими интересами могут обсудить актуальные проблемы. Я верю в силу хайвмайнда, и open source подтверждает мою веру каждый день.
На данный момент у меня нет возможности отвечать на вопросы в духе "как сделать такой смарт-контракт, чтобы он делал X, Y, Z?" и "как написать приложение, чтобы оно делало A, B, C?". Особенно в комментариях на YouTube - для обсуждения у нас есть чат в Telegram.
Поймите правильно, я написал/записал сотни статей и видео, а также создал десятки курсов и книг. Что было бы, если бы я отвечал на каждый вопрос по этим материалам? Мне бы пришлось себя клонировать, причём неоднократно. А от такого количества самого себя мне стало бы плохо.
При этом я рад конкретным вопросам по теме: просьбам пояснить какой-то непонятый момент, актуальным предложениям, замечаниям или вопросам по каким-то неработающим кускам кода. Скажу больше, ваши предложения - это действительно *очень* важно. Серьёзно, без этого бы просто не появились некоторые видео, поэтому совершенно ответственно говорю, что ваша обратная связь невероятно важна, ведь я работаю для вас. Однако если у вас что-то не работает, то нужно сделать, так сказать, "домашнюю работу", то есть по крайней мере погуглить возникающую ошибку. Если ни одно решение с первой страницы гугла вам явно не подходит, то смело обращайтесь, по мере возможности попробуем разобраться. И, само собой, если есть желание сообщить об ошибке, то нужно по крайней мере пояснить, что именно не работает и какие появляются симптомы. В идеале нужно показать релевантный программный код, иначе и говорить будет не о чем.
Пожалуйста, не нужно отправлять мне вопросы на почту, в linkedin (где я вообще почти ничего не делаю) или ещё какой-нибудь discord (которого формально у меня нет). Для этого, опять же, есть чат Telegram. Я бы очень хотел помочь всем на свете, но, увы, это просто невозможно. Именно поэтому мы и организовали это небольшое сообщество, где люди со схожими интересами могут обсудить актуальные проблемы. Я верю в силу хайвмайнда, и open source подтверждает мою веру каждый день.
👍15❤1🔥1
Друзья, и последнее на сегодня. Я вообще хотел написать это ещё неделю назад, но возникли проблемы с YT - я там сделал глупость довольно большую при регистрации.
Так вот: все деньги, которые я получу в качестве пожертвований (или от спонсорства, или от монетизации) я направлю в фонды помощи пострадавшим от войны. Проблема, правда, в том, что из-за юридических проблем у меня возникли проблемы с выводом средств, а YT вообще позволяет выводить только от 100 долларов (за рекламу каждый день я получаю где-то 0.5 доллара или 1 доллар, пока не больше). Но как только средства будут выведены, обязуюсь перечислить в один из фондов.
Так вот: все деньги, которые я получу в качестве пожертвований (или от спонсорства, или от монетизации) я направлю в фонды помощи пострадавшим от войны. Проблема, правда, в том, что из-за юридических проблем у меня возникли проблемы с выводом средств, а YT вообще позволяет выводить только от 100 долларов (за рекламу каждый день я получаю где-то 0.5 доллара или 1 доллар, пока не больше). Но как только средства будут выведены, обязуюсь перечислить в один из фондов.
👍12❤4
Музыка на сон грядущий от нашей группы. Это из недавнего, скоро есть мысль выпустить что-нибудь ещё. Спокойной ночи всем. https://www.youtube.com/watch?v=EwKNZ0dXC9E
YouTube
Dog & Butterfly - Heart cover
"Dog & Butterfly" was originally recorded by the "Heart" rock band. We created this track as a tribute to this great band.
❤1
Друзья, я настроил профили на Boosty (в первую очередь для тех, кто находится в РФ) https://boosty.to/bodrovis и Patreon https://www.patreon.com/bodrovis Это альтернативный вариант поддержать канал для тех, у кого перестало работать спонсорство. Ещё раз, огромное спасибо всем за поддержку. 🙌
boosty.to
Ilya Krukowski - Обучающие видео для программистов
Exclusive content from Ilya Krukowski, subscribe and be the first to access!
🔥8
Предположим, вам нужно сделать прототип страницы и разместить фото неких абстрактных персон. Откуда их взять? Искать в интернете? Ставить фото друзей? Делать заглушки? Использовать рисованные "аватары"? Ну, а можно использовать https://thispersondoesnotexist.com/ - здесь публикуются фото несуществующих людей, которые генерирует нейросеть на основе реальных фото. Аналогично, котики https://thiscatdoesnotexist.com/
❤6
В этом уроке мы узнаем, что такое древо Меркла (древо хэшей, Merkle tree) и реализуем его на языке Solidity. Также узнаем, как в Solidity генерировать хэши с помощью keccak256 и кодировать данные через encodePacked. Помимо этого, поработаем с циклами for и while. https://www.youtube.com/watch?v=aYKt-usrPw8
YouTube
Solidity и смарт-контракты Ethereum, урок #8 | Древо Меркла, хэши, encode, циклы
ХОТИТЕ СТАТЬ РАЗРАБОТЧИКОМ Solidity, узнать об Ethereum, блокчейне и многом другом ещё больше?!
Мои друзья из GUIDE DAO (бывшая школа MCS) предлагают скидку 0,1 ETH на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами:…
Мои друзья из GUIDE DAO (бывшая школа MCS) предлагают скидку 0,1 ETH на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами:…
👍14❤3🤯1
Очень странную вещь заметил в Metamask. Если импортировать свой кошелёк на другое устройство и вводить ключевую фразу, то некоторые аккаунты могут не добавиться автоматически. Это происходит, например, если у вас было изначально несколько аккаунтов и на некоторых из них был нулевой баланс. Что нужно сделать? Не поверите, нужно создавать новые аккаунты до тех пор, пока не появится нужный вам. Чрезвычайно удобно, конечно. https://metamask.zendesk.com/hc/en-us/articles/360015489271-How-to-add-missing-accounts-after-restoring-with-Secret-Recovery-Phrase
В этом уроке мы поговорим о некоторых моментах, связанных с оптимизацией смарт-контрактов по газу, от чего желательно воздержаться и на что следует обратить внимание. https://www.youtube.com/watch?v=EeKKU6zvwuQ
YouTube
Solidity и смарт-контракты Ethereum, урок #9 | Оптимизация смарт-контрактов и газ
ХОТИТЕ СТАТЬ РАЗРАБОТЧИКОМ Solidity, узнать об Ethereum, блокчейне и многом другом ещё больше?!
Мои друзья из GUIDE DAO (бывшая школа MCS) предлагают скидку 0,1 ETH на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами:…
Мои друзья из GUIDE DAO (бывшая школа MCS) предлагают скидку 0,1 ETH на ВСЕ СВОИ БУТКЕМЫ ПО КРИПТЕ! Материалы этих буткемов подготовлены мной и другими специалистами:…
👍14❤3
❔ По просьбам зрителей, предлагаю решить следующую задачу на языке Solidity. ❔
Сделать контракт-аукцион (по принципу "английский аукцион", то есть когда нужно делать всё более и более высокие ставки, перебивая другие). При развёртывании контракта указываем название товара, изначальную цену и адрес продавца (кому потом деньги начислять). Продавец может быть владельцем контракта.
Затем сделать функцию "ставка", которая принимает определённую сумму денег от потенциального покупателя. Ставка должна быть больше текущей цены, тк суть аукциона в том, чтобы "перебить" ставку другого. Аукцион может закончиться либо по какому-то условию, либо если продавец вызвал функцию "закончить", либо по какому-то ещё принципу. В этот момент больше ставок уже делать нельзя, а продавец получает свои деньги. Нужно подумать также о том, что люди, чьи ставки "перебили", должны иметь возможность забрать деньги обратно.
В идеале, написать для этого контракта тесты. В одном из следующих уроков, возможно, посмотрим, как это сделать.
Сделать контракт-аукцион (по принципу "английский аукцион", то есть когда нужно делать всё более и более высокие ставки, перебивая другие). При развёртывании контракта указываем название товара, изначальную цену и адрес продавца (кому потом деньги начислять). Продавец может быть владельцем контракта.
Затем сделать функцию "ставка", которая принимает определённую сумму денег от потенциального покупателя. Ставка должна быть больше текущей цены, тк суть аукциона в том, чтобы "перебить" ставку другого. Аукцион может закончиться либо по какому-то условию, либо если продавец вызвал функцию "закончить", либо по какому-то ещё принципу. В этот момент больше ставок уже делать нельзя, а продавец получает свои деньги. Нужно подумать также о том, что люди, чьи ставки "перебили", должны иметь возможность забрать деньги обратно.
В идеале, написать для этого контракта тесты. В одном из следующих уроков, возможно, посмотрим, как это сделать.
👍8🔥1
В общем, не могу не поделиться забавной вещью, так как я считаю, что с самим собой нужно быть честным. В общем, многие знают меня просто как bodrovis, и я алкоголик. Ой, пардон, не из того сценария реплика. 😃
Так вот, я произвёл инвентаризацию старых своих курсов и выяснил, что мои друзья-индусы, с которыми раньше приходилось много работать, уже много лет как выложили мой курс по Ruby на YT. На данный момент он не очень актуален, так как записывался лет пять назад, а то и больше, но суть не в этом. Я думаю, что некоторые студенты хотели бы меня убить на месте за то, что я сделал 😂🤪
То есть информация-то корректная и в общем фактологических ошибок нет, но post-production - это наше всё. Особенно удивляет то, что люди благодарят за материал. Самого себя тогдашнего я бы не взял на работу преподавателем точно - максимум каким-нибудь младшим заместителем вспомогательного ассистента. Впрочем, я пять лет назад не взял бы на работу себя же версии 10 лет назад, причём 10 лет назад я вёл только очные курсы и, видимо, студенты были очень добрые, так как иначе просто избили бы в подворотне.
Вероятно, это и значит "расти над собой" - иногда очень важно взять бутылочку-другую сидра и поглядеть, чем ты занимался раньше и как был плох (ну, и подумать о том, как плох сейчас, конечно). А если серьёзно, то не бойтесь экспериментировать, друзья, даже если вам кажется, что идеально не получится. Я вот пытаюсь уже долгие годы - пока идеала не видно. Но зато весело и есть возможность общаться со множеством замечательных людей. А не для этого ли мы живём? 😄
Так вот, я произвёл инвентаризацию старых своих курсов и выяснил, что мои друзья-индусы, с которыми раньше приходилось много работать, уже много лет как выложили мой курс по Ruby на YT. На данный момент он не очень актуален, так как записывался лет пять назад, а то и больше, но суть не в этом. Я думаю, что некоторые студенты хотели бы меня убить на месте за то, что я сделал 😂🤪
То есть информация-то корректная и в общем фактологических ошибок нет, но post-production - это наше всё. Особенно удивляет то, что люди благодарят за материал. Самого себя тогдашнего я бы не взял на работу преподавателем точно - максимум каким-нибудь младшим заместителем вспомогательного ассистента. Впрочем, я пять лет назад не взял бы на работу себя же версии 10 лет назад, причём 10 лет назад я вёл только очные курсы и, видимо, студенты были очень добрые, так как иначе просто избили бы в подворотне.
Вероятно, это и значит "расти над собой" - иногда очень важно взять бутылочку-другую сидра и поглядеть, чем ты занимался раньше и как был плох (ну, и подумать о том, как плох сейчас, конечно). А если серьёзно, то не бойтесь экспериментировать, друзья, даже если вам кажется, что идеально не получится. Я вот пытаюсь уже долгие годы - пока идеала не видно. Но зато весело и есть возможность общаться со множеством замечательных людей. А не для этого ли мы живём? 😄
❤13👍3
Ещё задача по Solidity. ❔
"Голландский аукцион". Как и в английском, при создании контракта указываем товар и МАКСИМАЛЬНУЮ цену. Каждую секунду цена должна падать, например, на 1 wei (или любое другое значение). Сделать функцию, которая возвращает актуальную цену на данный момент. А также функцию, через которую можно "купить" товар по ТЕКУЩЕЙ цене.
Учесть, что пока идёт транзакция, то цена за эти 1-2 секунды ещё упадёт, поэтому разницу нужно вернуть покупателю на аккаунт. Как только вызвана функция "купить", аукцион должен закончиться, а продавец - получить деньги.
"Голландский аукцион". Как и в английском, при создании контракта указываем товар и МАКСИМАЛЬНУЮ цену. Каждую секунду цена должна падать, например, на 1 wei (или любое другое значение). Сделать функцию, которая возвращает актуальную цену на данный момент. А также функцию, через которую можно "купить" товар по ТЕКУЩЕЙ цене.
Учесть, что пока идёт транзакция, то цена за эти 1-2 секунды ещё упадёт, поэтому разницу нужно вернуть покупателю на аккаунт. Как только вызвана функция "купить", аукцион должен закончиться, а продавец - получить деньги.
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Короткая объяснялка по просьбам трудящихся о выводе денег с контракта и комиссиях, которые мы платим за это
👍8
https://thegraph.com/blog/historical-ethereum-data-access - тоже интересная штука. Для многих старых данных будут хранится скоро только корни древа Меркла, тогда как для более свежих хранится всё. Но, похоже, на лайт-версиях везде хранятся только корни
The Graph
Historical Ethereum Data Access After EIP-4444
The Graph fills the gap left by EIP-4444 for dapps by indexing historical data from genesis.
👍4
По традиции, немного музыки на сегодня. Я взял небольшой "отпуск" по записи видео, сейчас больше сконцентрировался на подготовке нового трека - искал сессионщиков, начал готовить основу проекта в ableton и записывать бас. Вероятно, в течение 2-3 недель что-нибудь сумеем выпустить. Это для души, конечно, но всё же приятно заняться чем-то, не связанным с миром IT.
А тем временем война идёт, и конца ей не видно. Где бы вы сейчас не находились, я надеюсь, что вы живы и здоровы. Скоро увидимся. https://www.youtube.com/watch?v=aAi-adbpaek
А тем временем война идёт, и конца ей не видно. Где бы вы сейчас не находились, я надеюсь, что вы живы и здоровы. Скоро увидимся. https://www.youtube.com/watch?v=aAi-adbpaek
YouTube
Kælan Mikla - Draumadís
Kælan Mikla - Draumadís
Webpage: http://kaelanmikla.com
Facebook: https://www.facebook.com/Kaelanmikla
Spotify: https://open.spotify.com/artist/28meEMqGpDrolyQ9OVoDAH
Apple Music: https://music.apple.com/us/album/k%C3%A6lan-mikla/1472290369
Stream: http…
Webpage: http://kaelanmikla.com
Facebook: https://www.facebook.com/Kaelanmikla
Spotify: https://open.spotify.com/artist/28meEMqGpDrolyQ9OVoDAH
Apple Music: https://music.apple.com/us/album/k%C3%A6lan-mikla/1472290369
Stream: http…
👍9
Простое объяснение с точки зрения теории чисел довольно известного трюка Копперфильда про убийство в Восточном экспрессе (после этого трюка он вообще заставил экспресс исчезнуть). Собственно, там действительно нет ничего особенного сложного, но в целом забавно. А отдельно можно попробовать написать программу, которая работает по правилам этого трюка (в частности, что можно ходить только вверх-вниз, но не по диагонали) https://web.northeastern.edu/seigen/11Magic/Teaching/David%20Copperfields%20Orient%20Express%20Card%20Trick.pdf
👍3❤2