Друзья, ЭТОТ УРОК УСТАРЕЛ! Новая версия тут kzbin.info/www/bejne/fXWZl61ra5KWe7M Если у вас ЧТО-ТО НЕ РАБОТАЕТ, то FAQ ПО КУРСУ ЛЕЖИТ ВОТ ТУТ bodrovis.tech/en/categories/solidityethereum/posts/faq-po-kursu-solidity Не исключено, что ваша проблема там уже описана. Дело в том, что недавно Hardhat перешёл на ethers 6 и пару изменений там присутствует. Также хотел отметить, что блокчейн будет очищаться МЕЖДУ РАЗНЫМИ ПРОГОНАМИ тестов. В рамках одного прогона если вы хотите, чтобы шла очистка, то в beforeEach можно засунуть await network.provider.send("hardhat_reset"). Просто некоторые спрашивают, как сделать так, чтобы после "увеличения" времени в одном тесте, это не влияло на другой. Вот именно так. Увы, по дефолту такой очистики нет (если вдруг я где-то в видео оговорился и сказал, что есть между тестами, а не между прогонами, то прошу прощения). Но коль скоро в beforeEach мы делаем деплой заново, то контракт будет в любом случае свежим. В более новом hardhat появилась функция loadFixture, она будет фигурировать далее
@ЕгорВоробьев-щ3ы4 ай бұрын
Ты закрепить комментарий забыл.
@antonishchenko7099 Жыл бұрын
Это просто великолепно! Даже не знаю можно ли объяснить более доступно!! Благодарю!🙏🙌🚀
@IlyaBodrovKrukowski Жыл бұрын
На здоровье
@mykytakozhemiakin65372 жыл бұрын
Cпасибо Вам за то, что высказали своё мнение касательно войны
@IlyaBodrovKrukowski2 жыл бұрын
Да что тут сказать... Это просто катастрофа, а что самое страшное, конца и края этому не видно...
@МаксКапориков2 жыл бұрын
Спасибо больше за Ваши труды! Даже не знаю, что без Вас бы делал))!
@ВикторКулагин-ь2у2 жыл бұрын
Ух ты, класс уроки! Я не новичок в программировании, но много новой информации по blockchain много понятно, но сложновато! Материал изложен очень круто и понятно
@IlyaBodrovKrukowski2 жыл бұрын
@Burshte1n2 жыл бұрын
Илья, большая Вам благодарность!
@IlyaBodrovKrukowski2 жыл бұрын
На здоровье!
@bst00802 жыл бұрын
Отличный урок мало кто задевает тему тестов спасибо большое, очень жду если такая будет тему оракулов про это очень мало информации а если есть то теория в основном спасибо за этот курс !!
@mojodont2 жыл бұрын
Спасибо большое за то, что делаете!
@crypto-pro26 Жыл бұрын
Про тесты нельзя забывать, поэтому полезное видео. Только конечно для новичков в программировании этот урок после первых 4 может сбить столку. А для тех кто с других языков программирования зашел - видео должно залетать на ура
@IlyaBodrovKrukowski Жыл бұрын
Это да, но к нему можно вернуться позднее
@АлександрАлександр-р1з2 жыл бұрын
Спасибо большое, очень ждал тему тестов
@MikhailKuklenkov Жыл бұрын
Доброго времени суток, Илья. Благодарю за качественный стиль изложения и полезный урок по Solidity. Резюмировал урок для себя следующим образом: Single responsibility - наше все)
@IlyaBodrovKrukowski Жыл бұрын
kzbin.info/www/bejne/fXWZl61ra5KWe7M - кстати, тут свежая версия этого урока
@НикитаШевченко-ы8я10 ай бұрын
@@IlyaBodrovKrukowski спасибо за ссылку) даль что не увидел раньше, но зато пришлось по документации разобраться)) да, и за контент спасибо!
@IlyaBodrovKrukowski10 ай бұрын
@@НикитаШевченко-ы8я на здоровье
@СтепанЗреющий2 жыл бұрын
Огромное спасибо за урок
@Sinelnik8 ай бұрын
Илья спасибо за урок, но спустя два года произошли некоторые изменения в hardhat. Для тех у кого будет ошибка с таким стеком "TypeError: invalid address (argument="address", value=null, code=INVALID_ARGUMENT, version=6.11.1)" то вместо payments.deployed используйте payments.waitForDeployment(). deployed уже устарела.
@IlyaBodrovKrukowski8 ай бұрын
А это устаревший урок в принципе, я уже сильно не советую ему следовать. В закрепе ссылка на актуальный kzbin.info/www/bejne/fXWZl61ra5KWe7M Если что, остальные ответы на типичные вопросы тут bodrovis.tech/posts/faq-po-kursu-solidity/
@kapidioto7 ай бұрын
Спасибо за подсказку!
@TraneSevenАй бұрын
@@IlyaBodrovKrukowski👍
@romanovmaksim2 жыл бұрын
Спасибо за ваш труд
@IlyaBodrovKrukowski2 жыл бұрын
На здоровье!
@cryptomoon47002 жыл бұрын
Илья, Спасибо за видео! Очень полезные Уроки!
@IlyaBodrovKrukowski2 жыл бұрын
@truestuff38282 жыл бұрын
отличный курс! надеюсь будет продолжение)
@alinamozol23852 жыл бұрын
Спасибо за отличный урок. Вы действительно помогли мне отвлечься от этого ужаса войны хоть ненадолго.
@IlyaBodrovKrukowski2 жыл бұрын
Я рад, держитесь
@artakmanukyan6762 жыл бұрын
Отличный контент, спасибо!
@БекзодОлимов-я4ц2 жыл бұрын
Ух ты, я ждал этого, спасибо
@IlyaBodrovKrukowski2 жыл бұрын
@404piano2 жыл бұрын
Спасибо!
@vasilishahov9695 ай бұрын
Для тех кто в будующем будет инициализировать проект, надо вместо "npx hardhat" команды, использовать "npx hardhat init"
@neuromancersmith98902 жыл бұрын
Спасибо большое!
@IlyaBodrovKrukowski2 жыл бұрын
На здоровье!
@GatoGordoism2 жыл бұрын
Спасибо. Реально очень полезно!
@ДамирКу-е6р2 жыл бұрын
Лучший
@Уважаемыйпользователь-ю9к Жыл бұрын
а у вас есть видео где вы работаете с файлом "deploy"? Просто мне нужном в другом теснете затестить, а там запускается по такой строке " run script/deploy.js"
@IlyaBodrovKrukowski Жыл бұрын
Вероятно, npx hardhat run script/deploy.js --network sepolia или как-то так. Кажется что-то такое было в конце 13 урока, где деплоим токен
@WithoutNickname6662 жыл бұрын
Кстати. Небольшой лайфхак. В большинстве случаев нет необходимости применять npx hardhat clean, npx hardhat compile, так как при npx hardhat test программа автоматически находит измененные файлы, компилирует их и запускает тест. Вместо трёх команд можно использовать одну.
@IlyaBodrovKrukowski2 жыл бұрын
Это да. Но иногда он начинает тупить и использовать старую версию кода, у меня такое бывало. Но каждый раз - нет, не нужно, конечно
@IonPlaton-mg3ie Жыл бұрын
спасибо за ваш труд! если можно пожалуйста побольше видео про хардхат и тестирование смарт контрактов
@IlyaBodrovKrukowski Жыл бұрын
@Bekcoin Жыл бұрын
5 урок пропускаю покв это просто джунгли какие-то)
@IlyaBodrovKrukowski Жыл бұрын
@Bekcoin Жыл бұрын
@@IlyaBodrovKrukowskiвернулся к 5-му уроку спустя пару дней как и прежде темный лес)по вашему это не слишком сложно для начинающих? или это только для меня.
@IlyaBodrovKrukowski Жыл бұрын
@@Bekcoin Не знаю, зависит от опыта, я думаю. Можно попробовать просто про JS что-нибудь почитать
@MirkaKalman10 ай бұрын
жиза жиза
@ВениаминВидантов Жыл бұрын
Когда уже появится фреймворк "Пиво". Жду-недождусь. Спасибо за видео кстати.
@IlyaBodrovKrukowski Жыл бұрын
Да наверняка есть что-нибудь такое
@daniel70072 жыл бұрын
Огромное спасибо за крутые уроки! Вроде было все понятно до 5 урока и потом как будто на китайском все, уже пересмотрел ролик раза 3-4, но картина все рано не целая. Но автору респект! Подскажите такой вопрос, использую данную систему через hardhat что бы тестировать контракт, не проще ли делать это в Ремиксе? Спасибо!
@IlyaBodrovKrukowski2 жыл бұрын
Имееь смысл подтянуть JS, значит. А так нет - не проще, особенно, когда большой контракт
@алексейжучков-я8и Жыл бұрын
thnx a lot for good content!
@IlyaBodrovKrukowski Жыл бұрын
@ВиталийСергеев-я6т Жыл бұрын
Спасибо за урок, тема очень интересная!!! Подскажите пожалуйста тестировать смарт контракты можно только через Hardhat предварительно создав на нем специальное окружение с помощью Mocha, Chai, Waffle, Ethers? Например в ремиксе также тестировать смарт контракты невозможно?
@IlyaBodrovKrukowski Жыл бұрын
Ну, есть совсем рудиментарные штуки, кажется, но что-то сложное сделать вряд ли выйдет. Но есть ещё другое решение Foundry, про него в плейлисте есть видео, на нём тесты пишутся на самом Solidity, без JS
@synchronization6662 жыл бұрын
thank you!
@ilya_fimin2 жыл бұрын
Добрый вечер, не получается реализовать отправку токена всем пользователям(идея заключается в отправке 2% от транзакции всем пользователям токена), как лучше ее реализовать, не могу найти в интеренете.
@IlyaBodrovKrukowski2 жыл бұрын
Не скажу с ходу, если честно
@h-arti53052 жыл бұрын
Почему так мало просмотров ! ведь за этим будущее
@IlyaBodrovKrukowski2 жыл бұрын
По прошлым урокам куда больше. Но вообще я боюсь, что это связано со всем известными событиями - многие люди просто сейчас не могут ничего смотреть, другие же пребывают не в самом лучшем состоянии просто. Прямо явно видно, как в конце февраля упали просмотры. Увы...
@h-arti53052 жыл бұрын
@@IlyaBodrovKrukowski Большое и огромное Вам спасибо за то что вы делайте, для многих Ваши выпуски как глоток свежего воздуха, как маленькая таблетка от всех этих плохих событий. Я из Ашхабад и желаю всем мира и продолжения этих интересных уроков !
@IlyaBodrovKrukowski2 жыл бұрын
@@h-arti5305 Спасибо!
@SCEP9X2 жыл бұрын
Продолжай🥺🤙
@haisenberg5783 Жыл бұрын
Здравствуйте. Спасибо за уроки. Можна услышать ваше мнение об автоматичесских анализаторах (slither, mithril ...)? Интересует ефективность в поиске багов.
@IlyaBodrovKrukowski Жыл бұрын
Насколько я знаю, это неплохие штуки, хотя полагаться только на них не стоит. Любой инструмент - это помощник, а не штука, которая сделает всё за нас
@haisenberg5783 Жыл бұрын
@@IlyaBodrovKrukowski Спасибо, что ответили.
@hovhannesadajyan23322 жыл бұрын
Спасибо большое за урок. У меня такая проблема: когда ввожу -npx hardhat test- нечего не тестируется -0 passing (0ms)-. Может подскажите что я делаю не так?
@IlyaBodrovKrukowski2 жыл бұрын
Возможно, у вас тесты не в той папке? Проверьте, что все пути такие же, как в проекте в видео - обычно такая проблема появляется, когда он тестов не видит. Вот тут папки и имена файлов имеет смысл проверить github.com/bodrovis-learning/Solidity-YT-Series/tree/master/lesson_5_tests
@kuhnya.onnCTC2 жыл бұрын
спасибо вас огромное за такую проделанную работу! и сразу хочу у вас спросить, как перенести инфу с ремикса на вижуал код?
@IlyaBodrovKrukowski2 жыл бұрын
Ну, перенести - особенно никак, просто обычным копированием ctrl+c ctrl+v. Это если у вас онлайн версия ремикса, конечно. Если локально, то просто файлы перетащить можно
@MaiborodaAndrii Жыл бұрын
@@IlyaBodrovKrukowski добрый день. Большое спасибо за уроки!!! Подскажите пожалуйста где могут находиться файлы созданные через ремикс? Уже все перерыл в локальной памяти, ничего не нашел
@IlyaBodrovKrukowski Жыл бұрын
@@MaiborodaAndrii Насколько мне известно, они хранятся в local storage, если говорить об онлайн-версии (про десктоп не скажу, но где-то на диске). Там есть вариант сделать бэкап всех файлов. Но если в онлайн-версии использовать другой браузер, то старые файлы отображаться не будут
@kizik852 жыл бұрын
Илья, для меня тема тестов сложная. Не понимаю что Вы пишете. Хочу Вас попросить, объясните пожалуйста подроднее синтаксис написания тестов. До этого видео лично мне было понятно, большую часть точно. Спасибо Вам за старания!!!
@IlyaBodrovKrukowski2 жыл бұрын
Ну, просто к Ethereum как таковому это не относится - эта тема более общая, скажем так. Буду стараться подробнее объяснять
@cryptomoon47002 жыл бұрын
это общие знания, которые для разработки нужно понимать в любом случае. я пересмартиваю уроки по несколько раз, пытаюсь понять логику тестов, пока тоже дается с трудом, ну а как иначе)
@googleadmin47492 жыл бұрын
Проще говоря, ты написал программу - Велосипед Теперь тебе нужно его протестировать прежде чем продать покупателю, то что показано было в видео, это по сути "робот-тестировщик" для велосипедов, ты можешь запрограммировать его протестировать педали, сиденье или проехать 5 метров со скоростью 500 км/час, в общем это обвязка для того что бы проверять нормально ли работает твой код автоматически, иначе бы пришлось тыкать все в ручную.
@АнтонБочаров-ф6щ Жыл бұрын
У меня такой вопрос: Вы упомянули GUIDE DAO!Насколько им можно доверять в качестве даваемых ими знаний?Стоит ли объективно это тех денег?Не инфо ли цыгане, как большинство курсов?Спасибо!
@IlyaBodrovKrukowski Жыл бұрын
Ну, я работаю с этой платформой уже много лет и случаев обмана на моей памяти не было. Объём знаний очень приличный, плюс онлайн-события фактически каждый день. Вы можете попробовать, в случае чего можно просто возврат запросить. Я не знаю деталей этих процессов, тк финансами не занимаюсь, но а том, что это приличные ребята, я уверен. Вот тут мы проводили стрим "день открытых дверей", можно глянуть - на многие вопросы есть ответы kzbin.info/www/bejne/e5zUnaGJa6-njcU
@ЕвгенийКим-ч6и7у2 жыл бұрын
на 5ом уроке я поплыл :)) не очень понятно зачем все делается и очень много новых языковых конструкций Если я хочу научиться "в ручную" управлять смарт-контрактом, уже развернутым в блокчене, мне нужно изучать hardhat?
@IlyaBodrovKrukowski2 жыл бұрын
Ну, тут в любом случае это рано или поздно придётся изучить. Нужен либо hardhat, либо подобная платформа - какого-то простого пути нет
@retro777 Жыл бұрын
ничего не получается.Как проверить установились ли нужные библиотеки ethers,web,chay,mocha во время установки hardhat ?
@IlyaBodrovKrukowski Жыл бұрын
Ну, если тесты проходят, то установилось. На самом деле, теперь там достаточно поставить только hardhat-toolbox, он в себя всё нужное включает. Когда вы сделали проект HH, он должен предложить сам правильную команду для установки. Если не получается, напишите в наш чат
@galeraonthebeat Жыл бұрын
Truffle vs HardHat ? И пару слов почему. Спасибо
@IlyaBodrovKrukowski Жыл бұрын
Hardhat, он мне кажется удобнее и просто более популярным. Более того, теперь уже народ начал переходить на Foundry
@Ww-xc2fq Жыл бұрын
Если пишешь тесты на python, можно же использовать brownie вместо waffle?
@IlyaBodrovKrukowski Жыл бұрын
Да, само собой
@denissavenko85792 жыл бұрын
Пожалуйста, добавьте в видео информацию о том, что для получения возвращаемого значения функции в рамках теста необходим модификатор view-в противном же случае будет возвращена транзакция. Я на этом ОЧЕНЬ больно споткнулся
@IlyaBodrovKrukowski2 жыл бұрын
Да про это в общем-то говорилось уже ранее
@rpirozhkov2 жыл бұрын
Добрый день. Спасибо большой за урок. Есть вопрос. В функцию pay передаются 2 аргумента (строка и сумма), хотя в декларации функции указан 1 аргумент. Это такая особенность функции помеченной как payable, т.е. всегда надо передавать сумму?
@IlyaBodrovKrukowski2 жыл бұрын
Если функция payable, то она по умолчанию принимает деньги в поле value, да
@Иван-ч7т8ю2 жыл бұрын
Если у кого-то будет ошибка invalid chai property: changeetherbalances в третьем тесте для await expect(tx).to.changeEtherBalances([acc2, payments], [-100, 100]); просто напишите npm outdate и обновите версии библиотек в package.json, затем npm install и тест отработает :)
@IlyaBodrovKrukowski2 жыл бұрын
Да, такое может быть, если старые версии стоят
@Palianycia Жыл бұрын
Когда запсутил тест то выскочила ошибка:"TypeError: payments.deployed is not a function"
@IlyaBodrovKrukowski Жыл бұрын
А вы ссылку в закрепе посмотрите kzbin.info/www/bejne/fXWZl61ra5KWe7M
@kepamuk12 жыл бұрын
какой классный контент, все с нуля, мой любимик traversy media он тоже с нуля все делает, но по солидити к сожалению нету у него ((( так что этот курс просто находка, дружище я еще не посмотрел все полностью не знаю что там будет, но я тебе советую сделать полноценный курс, с фронтом бэком и этими контрактами что бы люди видели конченый результат продукта который нужен на реальной работе
@IlyaBodrovKrukowski2 жыл бұрын
Это бесплатная версия. Куда более объёмную версию можно найти на сайте MCS. Но и фронт-энд здесь тоже есть, в последних уроках (Next.js)
@Palianycia Жыл бұрын
@@IlyaBodrovKrukowski что это за сайт MCS?
@IlyaBodrovKrukowski Жыл бұрын
@@Palianycia это школа программирования, где я работаю
@kizik852 жыл бұрын
Илья, спасибо за урок! Подскажите, какую операционную систему Вы используете? У меня Windows. Думаю Ubuntu поставить для программирования. Выполнял команды как в видео, возникли ошибки, не помню какие. Решил попробовать повторно, всё заработало. Вы говорили в видео что могут быть проблемы с установкой...
@IlyaBodrovKrukowski2 жыл бұрын
Windows 10. Но за мной лучше не повторять в этом плане, просто я знаю эту ОС очень хорошо - раньше по ней вёл занятия. А вообще nix-системы поудобнее будут. Проблемы на винде могут быть с node-gyp, это да. Там если не иметь опыта, то можно конкретно застрять, но, боюсь, других вариантов тут нет просто
@ГалинаИноземцева-ф9я2 жыл бұрын
можно на win использовать подсистему wsl, почти убунта только внутри винды, а так да, убунта самая удобная
@pphotic9 ай бұрын
hardhat может компилировать один конкретный контракт? Можем мы задать путь по нужного файла?
@IlyaBodrovKrukowski9 ай бұрын
По умолчанию нет, тк compile работает со всем проектом сразу. Разве что писать какой-то свой таск, но я, честно говоря, именно такое не пробовал
@pphotic9 ай бұрын
@@IlyaBodrovKrukowski Спасибо. Если использовать ide remix - то там можно конкретно один контракт деплоить.
@IlyaBodrovKrukowski9 ай бұрын
@@pphotic подождите, но деплоить != компилировать Деплой в HH, конечно, происходит не всех контрактов сразу, а только тех, что указаны в скриптах или тестах. А вот компиляция - всех сразу, но в общем это обычно не проблема
@БекзодОлимов-я4ц2 жыл бұрын
У меня вопрос есть, когда мы с одного аккаунта отправляем деньги на другой 100 wei, мы же платим газ и в итоге должно прийти не 100 wei, а меньше. Почему там 100 wei приходит?
@bst00802 жыл бұрын
Газ отдельно ещё списывается поверх суммы
@IlyaBodrovKrukowski2 жыл бұрын
Совершенно верно, как указано выше, за газ платим отдельно
@БекзодОлимов-я4ц2 жыл бұрын
@@IlyaBodrovKrukowski Понял, спасибо, просто у меня почему-то меньше приходит. Но у меня в контракте только функция receive. Есть ли смысл заменить её на вашу "pay"?
@IlyaBodrovKrukowski2 жыл бұрын
@@БекзодОлимов-я4ц Смотрите, receive - это функция, которая вызовется всегда, если в контракт просто придут деньги, без указания на функцию вообще. Но в Remix IDE мы это потестить никаким простым способом не можем, поэтому приходится делать "демо" функции для оплаты. Но написать тест для receive можно легко: просто отправляете транзакцию с деньгами из своих тестов. Поэтому для обучения пока можно создавать свои функции для приёма денежных средств, не receive, а самые обычные типа pay. Я скоро сделаю урок про функции и расскажу, в чём тут суть.
@БекзодОлимов-я4ц2 жыл бұрын
@@IlyaBodrovKrukowski окей, понял
@Andrey-mt6rh2 жыл бұрын
Спасибо за видео! Подскажите, пожалуйста , после установки hart had , написан я контракта и теста при запуске в терминале в папке с проектом npx hardhat test ничего не происходит, после выполнения Команды пишет «0 passing”, в чем может быть проблема?
@IlyaBodrovKrukowski2 жыл бұрын
Может быть, файлов тестов назвали не так?.. там правильное имя должно быть, по типу как я в видео показываю
@deniss_fresh2 жыл бұрын
@@IlyaBodrovKrukowski у меня та же ошибка, все файлы назвал верно D:\HZ\урок 5>npx hardhat test npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead. 0 passing (3ms)
@mavro66302 жыл бұрын
Почему ве используете именно Ethers, а не web3?
@IlyaBodrovKrukowski2 жыл бұрын
Более современное решение, скажем так. Мне нравится больше, чем web3. Но в целом можно и то, и то использовать
@ilyakh.2774 Жыл бұрын
после установки HardHat через консоль нет варианта Create a basic sample project (сейчас версия HardHat 2.12.5, а в вашем видео 2.8.4 - может в новой версии урезали функционал?)
@IlyaBodrovKrukowski Жыл бұрын
Нет, конечно, просто они процесс создания упростили. Там всё то же самое.
@karliam_v Жыл бұрын
@@IlyaBodrovKrukowski А выбирать то теперь какой вариант если не basic sample project?
@IlyaBodrovKrukowski Жыл бұрын
@@karliam_v Ну basic, если вам нужен JS. Если TS, там отдельная опция
@АдаСимонова-ж5щ2 жыл бұрын
Спасибо за отличный урок. А есть ли способ замерять время на работу одного теста?
@IlyaBodrovKrukowski2 жыл бұрын
С этим есть некая сложность. Можно запускать тесты с ключом --slow но он тогда будет писать время для тестов, которые сам считает "медленными". Но предлагается вот такое решение stackoverflow.com/questions/39259620/how-to-configure-mocha-in-html-to-print-execution-time-of-each-test
@АдаСимонова-ж5щ2 жыл бұрын
@@IlyaBodrovKrukowski В видео говорилось, что для развертывания используется локальный блокчейн Hardhat. Как можно изменить используемый блокчейн?
@IlyaBodrovKrukowski2 жыл бұрын
@@АдаСимонова-ж5щ Опцией --network Там можно прописать любое значение, настроенное ранее hardhat.org/tutorial/deploying-to-a-live-network.html
@pashqa2722 жыл бұрын
Добрый день! В первую очередь спасибо большое за ту информацию, которую вы даете! Очень интересно, уникально и , естественно дико полезно. По этому уроку появился вопрос : после повторного compile, когда компилируется один файл, папка artifacts становится пустой. В чем может быть ошибка?
@IlyaBodrovKrukowski2 жыл бұрын
Не встречал такого (точнее были похожие вопросы, но там вообще ничего не компилировалось). Можно попробовать для начала обновить все зависимости через npm update
@pashqa2722 жыл бұрын
@@IlyaBodrovKrukowski к сожалению, не помогло. Могу отметить, что у вас при компилировании отображается версия 0.8.4, хотя прописана 0.8.0. У меня версию не отображает совсем, скорее всего дело в solidity непосредственно. Но вариантов фикса пока не нашел
@IlyaBodrovKrukowski2 жыл бұрын
@@pashqa272 Должно всё компилироваться, настройки компилятора делаются в hardhat.config.js. У меня стоит в файле .sol "любая версия 0.8.x", а в конфиге - соответственно, 0.8.4. Попробуйте посрашивать в нашем чате, обычно народ помогает
@ЗапахПопочки7 ай бұрын
привет, можно ли все это добро развернуть в docker?
@IlyaBodrovKrukowski7 ай бұрын
Привет, естественно
@nadiamacz47482 жыл бұрын
До этого всё-всё было понятно, тут ничего вообще не понятно. Что посоветуете почитать, что бы разобраться, что вы писали в коде?)))
@IlyaBodrovKrukowski2 жыл бұрын
Ну, тут просто нужно JS знать, если честно. Ну, можно ещё примеры прямо на сайте Chai посмотреть, там есть разные сценарии и показано, как тестировать
@arsen1usRS2 жыл бұрын
@@IlyaBodrovKrukowski можно ли научится писать смарт-контракты не зная JS?
@IlyaBodrovKrukowski2 жыл бұрын
@@arsen1usRS Да. Тестировать - маловероятно
@КириллКузнецов-е9о2 жыл бұрын
Правильно ли я понимаю, что команды `npm init` и `npm install --save-dev hardhat` нужно вводить при создании каждого конейнера так же как и `npx hardhat`?
@IlyaBodrovKrukowski2 жыл бұрын
Я думаю, что вам стоит почитать подробнее про проекты npm, чтобы закрепить изученное - это несложно, но довольно важно. Но в целом да - каждый новый проект подразумевает запуск npm init. Потом туда забрасываются нужные библиотеки через npm install. В одном проекте может быть множество контрактов и тестов
@КириллКузнецов-е9о2 жыл бұрын
@@IlyaBodrovKrukowski Хорошо. Спасибо
@КириллКузнецов-е9о2 жыл бұрын
@@IlyaBodrovKrukowski Просто страно видеть, что для каждого проекта мне нужно отдельно подкачивать все библиотеки, которые нужны в проекте через npm install
@IlyaBodrovKrukowski2 жыл бұрын
@@КириллКузнецов-е9о Это так работает абсолютно для любого проекта npm, а также для немалого количества проектов на других языках: хотя бы Ruby или Elixir. Каждый проект - вещь в себе, которая не зависит от глобально установленных библиотек (в идеале). Мы даём проекту имя, ставим нужные зависимости и делаем там, что хотим. В другом проекте могут быть совершенно другие зависимости с другими версиями и они никак не конфликтуют
@КириллКузнецов-е9о2 жыл бұрын
@@IlyaBodrovKrukowski Хорошо, буду знать) Спасибо
@Receive_2 жыл бұрын
Зачем в 31 строке - .to.changeEtherBalances([accaunt2, payments], [-sum, sum]) точка с запятой? Будут уроки по брауни?
@IlyaBodrovKrukowski2 жыл бұрын
Точка с запятой? Не знаю, может затесалась случайно, не помню уже. По брауни - может быть
@Receive_2 жыл бұрын
@@IlyaBodrovKrukowski Спасибо за ответ. Не могу получить информацию по второму платежу. Создаю третий аккаунт, шлю wei с него на контракт, средства до контракта доходят и баланс контракта становится равным 200, но данные по платежу получить не могу. Запрашиваю по аналогии - const newPayment2 = await payments.getPayment(accaunt3.address, 1). В консоли при запросе логов получаю нули и пустые строки. В чем беда?
@IlyaBodrovKrukowski2 жыл бұрын
@@Receive_ Так сложно сказать, лучше в чате спросить и скинуть сразу кусок кода
@no4e2 жыл бұрын
Я уже хотел закрывать видео, но спасение пришло в 14:50 :)
@elsancho43562 жыл бұрын
Доброго времени суток, на протяжение недели пытаюсь установить hardhat но всё безуспешно, можно как-то подробнее сделать видео о том, как с ним работать?
@elsancho43562 жыл бұрын
Как запустить его и смарт контракты в нём, просто не в ремих, нигде ничего не появилось
@IlyaBodrovKrukowski2 жыл бұрын
@@elsancho4356 Ну там вроде всё просто должно быть. Если проблемы какие-то, можно в наш чат написать (ссылка в описании). Просто я даже не знаю, что показывать в видео - он ведь одной командой ставится
@bbz9002 Жыл бұрын
Если у кого-то возникает ошибка на await ethers.getSigners(); - Cannot read properties of undefined (reading 'JsonRpcProvider') Попробуйте использовать "ethers": "5.7.2",
@rucat284 Жыл бұрын
есть ли такие же библиотеки, но под python?
@IlyaBodrovKrukowski Жыл бұрын
Да, называется brownie
@Bekcoin Жыл бұрын
изучаешь python?
@rucat284 Жыл бұрын
@@Bekcoin да
@Bekcoin Жыл бұрын
@@rucat284 давно?
@BELPER-f5z2 жыл бұрын
Спасибо за полезные видео! Что ты думаешь по поводу изучения Rust?
@IlyaBodrovKrukowski2 жыл бұрын
Я думаю, что это классика, это знать нужно. Вообще-то я очень надеюсь, что рано или поздно сделаю уроки по этой теме, пока просто руки не доходят. Серьёзно, если есть возможность - учите Rust
@Nevybralnick2 жыл бұрын
@@IlyaBodrovKrukowski Он имеет отношение к работе со смарт-контрактами?
@IlyaBodrovKrukowski2 жыл бұрын
@@Nevybralnick Да, если вы хотите разрабатывать для Solana
@Nevybralnick2 жыл бұрын
@@IlyaBodrovKrukowski а востребованней сейчас разработчики на эфире?
@IlyaBodrovKrukowski2 жыл бұрын
@@Nevybralnick Да, хотя во многих случаях требуется какой-никакой опыт, скажем так. Но с уровнем миддл найти работу не просто, а очень просто
@killerqueen91782 жыл бұрын
какая у тебя программа для cmd?
@IlyaBodrovKrukowski2 жыл бұрын
ConEmu
@ОстапБобрис-г1п2 жыл бұрын
Здравствуйте, а как изменить папку куда все с хардхета кидается?
@IlyaBodrovKrukowski2 жыл бұрын
Папку - какую именно? Там ведь много разного есть. Что-то можно в конфиге менять, видимо, а если мы говорим о typechain файлах для frontend, то как-то так npx typechain --out-dir front/src/typechain --target ethers-v5 "artifacts/contracts/**/*[!dbg].json"
@ОстапБобрис-г1п2 жыл бұрын
@@IlyaBodrovKrukowski У меня просто в conemu стоит папка Users и в visual studio через нее нужно заходить, чтобы видеть все тесты, скрипты и т.д, хотелось бы отдельную папку для этого сделать и чтобы в conemu от ее имени писать
@IlyaBodrovKrukowski2 жыл бұрын
@@ОстапБобрис-г1п Надо просто сделать команду cd в нужную директорию в терминале learn.microsoft.com/en-us/windows-server/administration/windows-commands/cd В духе cd c:\projects\my_project
@игорьговтвян-я5ж2 жыл бұрын
Это видео интересное, но при этом почему-то слишком много ошибок на квадратный метр. Error: Invalid Chai property: changeEtherBalances. Did you mean "changeEtherBalance"? Сначала была ошибка с changeEtherBalance , нашёл в инете решение и там было сказано, что нужно дописать 2 строки в файл waffle-chai.js. Но потом появилась эта ошибка и решения пока что не смог найти. Помогите пожалуйста)
@IlyaBodrovKrukowski2 жыл бұрын
Всё должно работать. changeEtherBalances - это matcher из waffle. Возможно, не подрублен сам waffle. В принципе, с такими ошибками лучше к нам в чат обратиться, ссылка есть в описании
@vvv357242 жыл бұрын
Вы в итоге разобрались с ошибкой? у меня сейчас такая же, а решений всё ещё нигде нет :(
@IlyaBodrovKrukowski2 жыл бұрын
@@vvv35724 Таких ошибок быть не должно. Можно поспрашивать в чате нашем, только исходный код потребуется
@WithoutNickname6662 жыл бұрын
Спасибо за урок! К сожалению, уровень сложности резко вырос и если до этого занятия было понятно 80-90% материала, то здесь уже не более 20-30%. Было бы неплохо останавливаться более подробно на: 1) Той вещи, о которой мы говорим сейчас. Например "Эта программа нужна для тестов, ставите ее. А еще вот эта нужна, а еще вот эта. А теперь пишем команду". Из-за обилия новых терминов, программ, синтаксиса - просто теряешься. И второе это сам синтаксис, например на 12:00 мы стали неожиданно писать на JS (Если я правильно понял). Но далеко не все писали на JS или вообще имели бекграунд программирования.. Если уроки будут более подробными и уровень сложности будет нарастать плавно, а не скачками, то 90% обучающихся дойдут до конца :) Даже если посмотреть на кол-во просмотров, то от урока к уроку чуть ли не половина смотрящих отваливается )
@IlyaBodrovKrukowski2 жыл бұрын
Это верно. Но надо понимать простую вещь: у меня просто нет возможности делать такое количество уроков и объяснять основы того же JS - это остаётся на откуп зрителю. В этой серии мне хотелось бы сфокусироваться на ethereum, а уж на чём будут писаться тесты - это дело другое, решения есть и другие, кстати говоря. Да писать-то их не обязательно, для понимания Solidity этого не требуется и к этому вопросу можно вернуться позже, в принципе
@ГалинаИноземцева-ф9я2 жыл бұрын
@@IlyaBodrovKrukowski Все верно, идти в блокчейн разработку без базовых знаний разработки это как пытаться учиться плавать без умения ходить)
@SerKuzmichArt2 жыл бұрын
@@ГалинаИноземцева-ф9я сравнение не вполне подходящее :)
@SerKuzmichArt2 жыл бұрын
Надо понимать, что Solidity - язык специализированный. Ну а какие проблемы с JS? Документирована вдоль и поперек, материалов по ней на любой уровень подготовки масса. Ну и особо сложной ее не назвать :) За неделю - две, на мой взгляд, любой более-менее разберется. Тут человек выложил солюшен с редко кем разбираемой темой, за что ему низкий поклон. Прочитаете по JS & Solidity доки и разберетесь что и зачем он написал. От такого упражнения только польза. Когда лет 25 тому назад моя старшая дочь спросила меня: «Что в первую очередь должен уметь программист?», она меня здорово озадачила. А потом я, когда понял, озадачил ее - «Уметь читать». И с тех пор ничего не поменялось :) Уметь читать - по прежнему главный навык программиста. Читать доки и читать то, что наваяли коллеги. Причем, нередко читать творчество коллег приходится больше, чем писать что-то самому. Так что, если хотите заниматься сим делом, привыкайте читать, читать и врубаться в прочитанное.
@IlyaBodrovKrukowski2 жыл бұрын
@@SerKuzmichArt Всё так, хорошо сказано
@игорьговтвян-я5ж2 жыл бұрын
Error HH12: Trying to use a non-local installation of Hardhat, which is not supported. Please install Hardhat locally using npm or Yarn, and try again. Такая ошибка, попытался удалить и заново установить, как рекомендует сама консоль, но не помогает. В чём может быть проблема?
@IlyaBodrovKrukowski2 жыл бұрын
stackoverflow.com/questions/69959650/error-hh12-trying-to-use-a-non-local-installation-of-hardhat-which-is-not-supp hardhat.org/errors/#HH606= - как-то так
@игорьговтвян-я5ж2 жыл бұрын
@@IlyaBodrovKrukowski Да, я как раз и делал по инструкции на stackoverflow, но у меня почему-то всё ещё пишет эту ошибку. Полностью удалил своей проект, удалил все файлы, которые качались с помощью npm install и заново всё поставил. Но ошибка всё ещё осталась, не знаю если честно в чём проблема, потому что в интернете только говорят удалить и установить снова...
@IlyaBodrovKrukowski2 жыл бұрын
@@игорьговтвян-я5ж Удалить нужно также node_modules и package.json не только в самом проекте, но и в родительских папках, если они там есть. Честно говоря, что тут ещё подсказать - даже не знаю
@игорьговтвян-я5ж2 жыл бұрын
@@IlyaBodrovKrukowski Честно сказать не знаю, какой из методов помог, но проблема решилась. Благодарю за ваш быстрый ответ и спасибо за эти видео)
@IlyaBodrovKrukowski2 жыл бұрын
@@игорьговтвян-я5ж Отлично
@WithoutNickname6662 жыл бұрын
А что значит "Корректный адрес смарт контракта"? Мне не понятно как он может быть не корректным..
@IlyaBodrovKrukowski2 жыл бұрын
Может состоять не из 20 байт
@WithoutNickname6662 жыл бұрын
Илья, не могу разобраться в чем проблема... Есть функция function pay(address payable _to, uint _amount) external payable { _to.transfer(_amount); } Пишу тест it("contract receive ether", async function(){ const tx = await ico.connect(acc1).pay(ico.address, { value : 100}) }) Ошибка Error: invalid BigNumber value (argument="value", value={"value":100}, code=INVALID_ARGUMENT, version=bignumber/5.6.2) Я уже как только не пробовал значение менять... В чем может быть проблема?
@IlyaBodrovKrukowski2 жыл бұрын
Там 2 аргумента: ещё amount, а у вас выходит, что вы передаёте 1 аргумент и просто деньги
@WithoutNickname6662 жыл бұрын
@@IlyaBodrovKrukowski Спасибо за ответ! Но появилась новая проблема.. Error: Transaction reverted: contract call run out of gas and made the transaction revert JS it("contract receive ether", async function(){ const tx = await ico.connect(acc1).pay(ico.address, { value : 100}) await tx.wait() }) solidity function pay(address payable _to) external payable { _to.transfer(msg.value); } При этом я проверяю баланс аккаунта-отправителя и там BigNumber { value: "9999991720038881217780" }
@WithoutNickname6662 жыл бұрын
@@IlyaBodrovKrukowski При этом я успешно отправил транзакцию с одного адреса на другой, но появляется ошибка если отправлять на адрес смарт контракта
@WithoutNickname6662 жыл бұрын
@@IlyaBodrovKrukowski В общем... магия какая-то.. Я выяснил, что проблема заключалась в том, что в receive() я изменял кое какие данные в блокчейне, из-за этого не хватало газа (ведь на контракте изначально 0). Я удалил всё из receive() и оставил чистой функцию. Всё сработало. При этом я развернул такой же контракт в Remix, где receive() уже изменяет данные в блокчейне. И я спокойно отправлял на нее эфир, никаких ошибок. Тоже самое в Rinkeby testnet. Всё работает, только в hardhat не работает.. И как после этого тестировать..
@WithoutNickname6662 жыл бұрын
@@IlyaBodrovKrukowski Илья, если будет возможность, помогите пожалуйста.. Я уже не знаю что делать. Я даже попытался сделать вот такую строчку const tx = await ico.connect(acc1).pay(ico.address, { value : 1000, gasLimit: 40000000 }) Но выдает ошибку InvalidInputError: Transaction gas limit is 40000000 and exceeds block gas limit of 30000000 Если вставить число меньше, то выдается старая ошибка, мол газа не хватило..
@geryax Жыл бұрын
так, на 5 уроке уже тяжко..
@IlyaBodrovKrukowski Жыл бұрын
Пока тесты можно пропустить, в принципе
@littleluckyboy2 жыл бұрын
Вафли зефир моча чай)) лол
@mrin0 Жыл бұрын
!
@IlyaBodrovKrukowski Жыл бұрын
Обратите внимание, что сегодня выйдет обновлённый урок про тесты
@denisovilya18882 жыл бұрын
Классные уроки. Но есть пара вещей, которые режут слух. Это "Яваскрипт" Х-D, и то, что await для того, что выполняется не мгновенно. Правильно будет говорить асинхронно, это не совсем о времени выполнения
@IlyaBodrovKrukowski2 жыл бұрын
А что плохого в слове "Яваскрипт"? Этот язык был назван по образу Java (там долгая история, но в целом это было сделано с маркетинговыми целями), который, в свою очередь, назван по сорту кофе coffeefan.info/kofe-java-arabika.html Что касается await - нам нужно в данном случае ждать, пока пройдёт транзакция. Иначе там будет возвращён promise и мы не сможем проверить корректность выполнение. Короче, вы меня простите, я несколько на взводе из-за происходящих сейчас событий, которые частично коснулись и меня, но в общем и целом это придирки.
@IlyaBodrovKrukowski2 жыл бұрын
Я согласен, что дело в общем и целом не во времени выполнения, но чтобы зрителю было понятнее, я говорю, что обработка транзакции делается довольно долго. И да, нужно её дождаться. Время выполнения важно с той точки зрения, что если бы всё выполнялось мгновенно, то нам вообще был бы не нужен никакой promise. А так все эти отправки функций всегда возвращают promise именно из-за длительности этой операции. В общем, спасибо за комментарий, это в любом случае полезно
@maksym88082 жыл бұрын
зачем политику приплетать? на Донбасе с 2014г. военные действия, все молчали, что началось то? а за уроки спасибо!
@IlyaBodrovKrukowski2 жыл бұрын
Я не буду отвечать на этот вопрос. Кто такие "все" - я не знаю, но обо мне вы не знаете ничего, включая и то, молчал я или нет. Давайте не будем развивать эту тему.
@maksym88082 жыл бұрын
@@IlyaBodrovKrukowski извините если задел чем то, но я в общем
@IlyaBodrovKrukowski2 жыл бұрын
@@maksym8808 Ничего, всё ок
@Pixell772 жыл бұрын
Здравствуйте! Я впервые написал тесты для своего контракта благодаря вам, спасибо большое! Сейчас я пишу таски через web3.js для взаимодействия с контрактом через hardhat, не могу понять как с этой библиотекой работать. У меня вопрос: Если писать таски с помощью того же ethers, то перед каждым выполнением таска нужно каждый раз деплоить контракт как в тестах (beforeEach)? И в принципе будут ли большие отличия tasks.js от tests.js если оба просто вызывают функции из контракта, только второй сравнивает результат с ожидаемым?
@IlyaBodrovKrukowski2 жыл бұрын
Ethers.js мне кажется получше, чем web3. Деплой делать нужно вообще один раз, если это не тесты. Это просто в тестах нам всегда нужен свежий контракт, а в реальном блокчейне - конечно, нет. 1 раз развернули контракт и с ним работаем
@GennadiiKotov2 жыл бұрын
Что за метод сurrentBalance? В моем случае у deployed контракта нет такого метода и баланс контракта узнаю через provider.getBalance(contract.address). И упоминаний метода currentBalance нигде не вижу в документациях.
@IlyaBodrovKrukowski2 жыл бұрын
А мы же добавили эту функцию в контракт github.com/bodrovis-learning/Solidity-YT-Series/commit/e03c969299449ae6cbc1824f40dfa07f2f8d7de3#diff-7cff68d828791d88522eb91f7751fe53e4a0cff32859ef5a7a166a7dabe1d360R20 Конечно, изначально метода такого нет, но благодаря функции можно вызывать без пролем
@GennadiiKotov2 жыл бұрын
@@IlyaBodrovKrukowski действительно, забыл про это. Благодарю.
@andreymarkich1532 Жыл бұрын
Здравствуйте! Выдает эту ошибку, не получается решить ее 1) Payments "before each" hook for "should": TypeError: no matching function (argument="key", value="deployed", code=INVALID_ARGUMENT, version=6.6.0) at makeError (node_modules\ethers\src.ts\utils\errors.ts:670:21) at assert (node_modules\ethers\src.ts\utils\errors.ts:694:25) at assertArgument (node_modules\ethers\src.ts\utils\errors.ts:706:5)
@IlyaBodrovKrukowski Жыл бұрын
Попробуйте, пожалуйста, в наш чат написать с этим вопросом
@andreymarkich1532 Жыл бұрын
@@IlyaBodrovKrukowski Спасибо вам большое за очень быстрый ответ!!!
@andreymarkich1532 Жыл бұрын
@@IlyaBodrovKrukowski Я искренне прошу прощения, за вопрос Возможно это покажется наглым, но у уже почти восемь часов пытаюсь решить проблему в коде из 5-го видео, в чатике ребята не смогли помочь, использовал чат GPT, но и он не смог мне помочь с ошибкой этой Если у вас получится уделить мне некоторое время, глянуть мой код и помочь с данной ошибкой, я буду вам очень благодарен Я очень хочу дальше изучать курс, но сильно застопорился на этой ошибке
@IlyaBodrovKrukowski Жыл бұрын
@@andreymarkich1532 Хорошо, в описании канала есть почта, пришлите мне весь проект и шаги, чтобы эту ошибку воспроизвести. Постараюсь глянуть
@andreymarkich1532 Жыл бұрын
@@IlyaBodrovKrukowski Спасибо Вам огромное, что согласились, вы очень отзывчивый человек Я вам все отправил
@Видеодневник-ы6щ Жыл бұрын
При запуске первого теста была ошибка следующая: "before each" hook for "should be deployed": TypeError: no matching function (argument="key", value="deployed", code=INVALID_ARGUMENT, version=6.6.2) Она возникает из-за того что версия hardhat обновилась, решается так: Вместо кода в BeforeEach из урока можно вставить такой код: beforeEach(async function() { [acc1,acc2] = await ethers.getSigners() const Payments = await ethers.getContractFactory("Payments",acc1) payments = await ethers.deployContract("Payments") const contractAddress = await payments.getAddress() console.log(contractAddress) })
@IlyaBodrovKrukowski Жыл бұрын
В закреплённом комментарии есть ссылка на faq, который описывает, в том числе, и эту проблему bodrovis.tech/en/categories/solidityethereum/posts/faq-po-kursu-solidity Решается она несколько иначе, советую почитать (там ничего сложного)
@renichigava41832 жыл бұрын
вот такая ошибка выходит в терминале , как можно ее решить? An unexpected error occurred: C:\Users\filal\sol\test\Payments.js:6 const acc1 ^^^^ SyntaxError: Missing initializer in const declaration at Object.compileFunction (node:vm:352:18) at wrapSafe (node:internal/modules/cjs/loader:1031:15) at Module._compile (node:internal/modules/cjs/loader:1065:27) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10) at Module.load (node:internal/modules/cjs/loader:981:32) at Function.Module._load (node:internal/modules/cjs/loader:822:12) at Module.require (node:internal/modules/cjs/loader:1005:19) at require (node:internal/modules/cjs/helpers:102:18) at C:\Users\filal\sol ode_modules\mocha\lib\mocha.js:349:36 at Array.forEach ()
@IlyaBodrovKrukowski2 жыл бұрын
Поставьте let а не const во всех случаях
@renichigava41832 жыл бұрын
@@IlyaBodrovKrukowski я дописал помимо трех let "const Payments" только после этого заработало, но при тесте чтоб узнать адрес кошелька он не выводится как быть в этом случае Payments √ should be deployed 1 passing (662ms) адрес не вышел
@IlyaBodrovKrukowski2 жыл бұрын
@@renichigava4183 А вы точно до конца видео досмотрели и код как в финальной версии? Я там просто посреди видео как раз кое-что исправил ещё
@renichigava41832 жыл бұрын
@@IlyaBodrovKrukowski should be possible to send funds: Error: Invalid Chai property: changeEtherBalance should be possible to send funds: TypeError: tx.wait is not a function
@IlyaBodrovKrukowski2 жыл бұрын
@@renichigava4183 А вы waffle точно подключили? Или может версии старые? Тк это должно работать 100%, я это показывал уже на 2 стримах и вот в видео
@aiv214511 ай бұрын
Ошибка в строке: expect(payments.address).to.be.properAddress Текст ошибки: AssertionError: Expected "undefined" to be a proper address Решение: исправить строку на: expect(payments.runner.address).to.be.properAddress
@IlyaBodrovKrukowski11 ай бұрын
Обратите внимание, что этот урок устарел, обновлённый вот тут kzbin.info/www/bejne/fXWZl61ra5KWe7M