Solidity и смарт-контракты Ethereum, урок #5, АПДЕЙТ в закрепе | Тестирование, Hardhat, Ethers, Chai

  Рет қаралды 27,656

Ilya Krukowski

Ilya Krukowski

Күн бұрын

Пікірлер: 245
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Друзья, ЭТОТ УРОК УСТАРЕЛ! Новая версия тут 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ы
@ЕгорВоробьев-щ3ы 4 ай бұрын
Ты закрепить комментарий забыл.
@antonishchenko7099
@antonishchenko7099 Жыл бұрын
Это просто великолепно! Даже не знаю можно ли объяснить более доступно!! Благодарю!🙏🙌🚀
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski Жыл бұрын
На здоровье
@mykytakozhemiakin6537
@mykytakozhemiakin6537 2 жыл бұрын
Cпасибо Вам за то, что высказали своё мнение касательно войны
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Да что тут сказать... Это просто катастрофа, а что самое страшное, конца и края этому не видно...
@МаксКапориков
@МаксКапориков 2 жыл бұрын
Спасибо больше за Ваши труды! Даже не знаю, что без Вас бы делал))!
@ВикторКулагин-ь2у
@ВикторКулагин-ь2у 2 жыл бұрын
Ух ты, класс уроки! Я не новичок в программировании, но много новой информации по blockchain много понятно, но сложновато! Материал изложен очень круто и понятно
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
@Burshte1n
@Burshte1n 2 жыл бұрын
Илья, большая Вам благодарность!
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
На здоровье!
@bst0080
@bst0080 2 жыл бұрын
Отличный урок мало кто задевает тему тестов спасибо большое, очень жду если такая будет тему оракулов про это очень мало информации а если есть то теория в основном спасибо за этот курс !!
@mojodont
@mojodont 2 жыл бұрын
Спасибо большое за то, что делаете!
@crypto-pro26
@crypto-pro26 Жыл бұрын
Про тесты нельзя забывать, поэтому полезное видео. Только конечно для новичков в программировании этот урок после первых 4 может сбить столку. А для тех кто с других языков программирования зашел - видео должно залетать на ура
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski Жыл бұрын
Это да, но к нему можно вернуться позднее
@АлександрАлександр-р1з
@АлександрАлександр-р1з 2 жыл бұрын
Спасибо большое, очень ждал тему тестов
@MikhailKuklenkov
@MikhailKuklenkov Жыл бұрын
Доброго времени суток, Илья. Благодарю за качественный стиль изложения и полезный урок по Solidity. Резюмировал урок для себя следующим образом: Single responsibility - наше все)
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski Жыл бұрын
kzbin.info/www/bejne/fXWZl61ra5KWe7M - кстати, тут свежая версия этого урока
@НикитаШевченко-ы8я
@НикитаШевченко-ы8я 10 ай бұрын
@@IlyaBodrovKrukowski спасибо за ссылку) даль что не увидел раньше, но зато пришлось по документации разобраться)) да, и за контент спасибо!
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 10 ай бұрын
@@НикитаШевченко-ы8я на здоровье
@СтепанЗреющий
@СтепанЗреющий 2 жыл бұрын
Огромное спасибо за урок
@Sinelnik
@Sinelnik 8 ай бұрын
Илья спасибо за урок, но спустя два года произошли некоторые изменения в hardhat. Для тех у кого будет ошибка с таким стеком "TypeError: invalid address (argument="address", value=null, code=INVALID_ARGUMENT, version=6.11.1)" то вместо payments.deployed используйте payments.waitForDeployment(). deployed уже устарела.
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 8 ай бұрын
А это устаревший урок в принципе, я уже сильно не советую ему следовать. В закрепе ссылка на актуальный kzbin.info/www/bejne/fXWZl61ra5KWe7M Если что, остальные ответы на типичные вопросы тут bodrovis.tech/posts/faq-po-kursu-solidity/
@kapidioto
@kapidioto 7 ай бұрын
Спасибо за подсказку!
@TraneSeven
@TraneSeven Ай бұрын
@@IlyaBodrovKrukowski👍
@romanovmaksim
@romanovmaksim 2 жыл бұрын
Спасибо за ваш труд
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
На здоровье!
@cryptomoon4700
@cryptomoon4700 2 жыл бұрын
Илья, Спасибо за видео! Очень полезные Уроки!
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
@truestuff3828
@truestuff3828 2 жыл бұрын
отличный курс! надеюсь будет продолжение)
@alinamozol2385
@alinamozol2385 2 жыл бұрын
Спасибо за отличный урок. Вы действительно помогли мне отвлечься от этого ужаса войны хоть ненадолго.
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Я рад, держитесь
@artakmanukyan676
@artakmanukyan676 2 жыл бұрын
Отличный контент, спасибо!
@БекзодОлимов-я4ц
@БекзодОлимов-я4ц 2 жыл бұрын
Ух ты, я ждал этого, спасибо
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
@404piano
@404piano 2 жыл бұрын
Спасибо!
@vasilishahov969
@vasilishahov969 5 ай бұрын
Для тех кто в будующем будет инициализировать проект, надо вместо "npx hardhat" команды, использовать "npx hardhat init"
@neuromancersmith9890
@neuromancersmith9890 2 жыл бұрын
Спасибо большое!
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
На здоровье!
@GatoGordoism
@GatoGordoism 2 жыл бұрын
Спасибо. Реально очень полезно!
@ДамирКу-е6р
@ДамирКу-е6р 2 жыл бұрын
Лучший
@Уважаемыйпользователь-ю9к
@Уважаемыйпользователь-ю9к Жыл бұрын
а у вас есть видео где вы работаете с файлом "deploy"? Просто мне нужном в другом теснете затестить, а там запускается по такой строке " run script/deploy.js"
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski Жыл бұрын
Вероятно, npx hardhat run script/deploy.js --network sepolia или как-то так. Кажется что-то такое было в конце 13 урока, где деплоим токен
@WithoutNickname666
@WithoutNickname666 2 жыл бұрын
Кстати. Небольшой лайфхак. В большинстве случаев нет необходимости применять npx hardhat clean, npx hardhat compile, так как при npx hardhat test программа автоматически находит измененные файлы, компилирует их и запускает тест. Вместо трёх команд можно использовать одну.
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Это да. Но иногда он начинает тупить и использовать старую версию кода, у меня такое бывало. Но каждый раз - нет, не нужно, конечно
@IonPlaton-mg3ie
@IonPlaton-mg3ie Жыл бұрын
спасибо за ваш труд! если можно пожалуйста побольше видео про хардхат и тестирование смарт контрактов
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski Жыл бұрын
@Bekcoin
@Bekcoin Жыл бұрын
5 урок пропускаю покв это просто джунгли какие-то)
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski Жыл бұрын
@Bekcoin
@Bekcoin Жыл бұрын
​@@IlyaBodrovKrukowskiвернулся к 5-му уроку спустя пару дней как и прежде темный лес)по вашему это не слишком сложно для начинающих? или это только для меня.
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski Жыл бұрын
@@Bekcoin Не знаю, зависит от опыта, я думаю. Можно попробовать просто про JS что-нибудь почитать
@MirkaKalman
@MirkaKalman 10 ай бұрын
жиза жиза
@ВениаминВидантов
@ВениаминВидантов Жыл бұрын
Когда уже появится фреймворк "Пиво". Жду-недождусь. Спасибо за видео кстати.
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski Жыл бұрын
Да наверняка есть что-нибудь такое
@daniel7007
@daniel7007 2 жыл бұрын
Огромное спасибо за крутые уроки! Вроде было все понятно до 5 урока и потом как будто на китайском все, уже пересмотрел ролик раза 3-4, но картина все рано не целая. Но автору респект! Подскажите такой вопрос, использую данную систему через hardhat что бы тестировать контракт, не проще ли делать это в Ремиксе? Спасибо!
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Имееь смысл подтянуть JS, значит. А так нет - не проще, особенно, когда большой контракт
@алексейжучков-я8и
@алексейжучков-я8и Жыл бұрын
thnx a lot for good content!
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski Жыл бұрын
@ВиталийСергеев-я6т
@ВиталийСергеев-я6т Жыл бұрын
Спасибо за урок, тема очень интересная!!! Подскажите пожалуйста тестировать смарт контракты можно только через Hardhat предварительно создав на нем специальное окружение с помощью Mocha, Chai, Waffle, Ethers? Например в ремиксе также тестировать смарт контракты невозможно?
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski Жыл бұрын
Ну, есть совсем рудиментарные штуки, кажется, но что-то сложное сделать вряд ли выйдет. Но есть ещё другое решение Foundry, про него в плейлисте есть видео, на нём тесты пишутся на самом Solidity, без JS
@synchronization666
@synchronization666 2 жыл бұрын
thank you!
@ilya_fimin
@ilya_fimin 2 жыл бұрын
Добрый вечер, не получается реализовать отправку токена всем пользователям(идея заключается в отправке 2% от транзакции всем пользователям токена), как лучше ее реализовать, не могу найти в интеренете.
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Не скажу с ходу, если честно
@h-arti5305
@h-arti5305 2 жыл бұрын
Почему так мало просмотров ! ведь за этим будущее
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
По прошлым урокам куда больше. Но вообще я боюсь, что это связано со всем известными событиями - многие люди просто сейчас не могут ничего смотреть, другие же пребывают не в самом лучшем состоянии просто. Прямо явно видно, как в конце февраля упали просмотры. Увы...
@h-arti5305
@h-arti5305 2 жыл бұрын
@@IlyaBodrovKrukowski Большое и огромное Вам спасибо за то что вы делайте, для многих Ваши выпуски как глоток свежего воздуха, как маленькая таблетка от всех этих плохих событий. Я из Ашхабад и желаю всем мира и продолжения этих интересных уроков !
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
@@h-arti5305 Спасибо!
@SCEP9X
@SCEP9X 2 жыл бұрын
Продолжай🥺🤙
@haisenberg5783
@haisenberg5783 Жыл бұрын
Здравствуйте. Спасибо за уроки. Можна услышать ваше мнение об автоматичесских анализаторах (slither, mithril ...)? Интересует ефективность в поиске багов.
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski Жыл бұрын
Насколько я знаю, это неплохие штуки, хотя полагаться только на них не стоит. Любой инструмент - это помощник, а не штука, которая сделает всё за нас
@haisenberg5783
@haisenberg5783 Жыл бұрын
@@IlyaBodrovKrukowski Спасибо, что ответили.
@hovhannesadajyan2332
@hovhannesadajyan2332 2 жыл бұрын
Спасибо большое за урок. У меня такая проблема: когда ввожу -npx hardhat test- нечего не тестируется -0 passing (0ms)-. Может подскажите что я делаю не так?
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Возможно, у вас тесты не в той папке? Проверьте, что все пути такие же, как в проекте в видео - обычно такая проблема появляется, когда он тестов не видит. Вот тут папки и имена файлов имеет смысл проверить github.com/bodrovis-learning/Solidity-YT-Series/tree/master/lesson_5_tests
@kuhnya.onnCTC
@kuhnya.onnCTC 2 жыл бұрын
спасибо вас огромное за такую проделанную работу! и сразу хочу у вас спросить, как перенести инфу с ремикса на вижуал код?
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Ну, перенести - особенно никак, просто обычным копированием ctrl+c ctrl+v. Это если у вас онлайн версия ремикса, конечно. Если локально, то просто файлы перетащить можно
@MaiborodaAndrii
@MaiborodaAndrii Жыл бұрын
@@IlyaBodrovKrukowski добрый день. Большое спасибо за уроки!!! Подскажите пожалуйста где могут находиться файлы созданные через ремикс? Уже все перерыл в локальной памяти, ничего не нашел
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski Жыл бұрын
@@MaiborodaAndrii Насколько мне известно, они хранятся в local storage, если говорить об онлайн-версии (про десктоп не скажу, но где-то на диске). Там есть вариант сделать бэкап всех файлов. Но если в онлайн-версии использовать другой браузер, то старые файлы отображаться не будут
@kizik85
@kizik85 2 жыл бұрын
Илья, для меня тема тестов сложная. Не понимаю что Вы пишете. Хочу Вас попросить, объясните пожалуйста подроднее синтаксис написания тестов. До этого видео лично мне было понятно, большую часть точно. Спасибо Вам за старания!!!
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Ну, просто к Ethereum как таковому это не относится - эта тема более общая, скажем так. Буду стараться подробнее объяснять
@cryptomoon4700
@cryptomoon4700 2 жыл бұрын
это общие знания, которые для разработки нужно понимать в любом случае. я пересмартиваю уроки по несколько раз, пытаюсь понять логику тестов, пока тоже дается с трудом, ну а как иначе)
@googleadmin4749
@googleadmin4749 2 жыл бұрын
Проще говоря, ты написал программу - Велосипед Теперь тебе нужно его протестировать прежде чем продать покупателю, то что показано было в видео, это по сути "робот-тестировщик" для велосипедов, ты можешь запрограммировать его протестировать педали, сиденье или проехать 5 метров со скоростью 500 км/час, в общем это обвязка для того что бы проверять нормально ли работает твой код автоматически, иначе бы пришлось тыкать все в ручную.
@АнтонБочаров-ф6щ
@АнтонБочаров-ф6щ Жыл бұрын
У меня такой вопрос: Вы упомянули GUIDE DAO!Насколько им можно доверять в качестве даваемых ими знаний?Стоит ли объективно это тех денег?Не инфо ли цыгане, как большинство курсов?Спасибо!
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski Жыл бұрын
Ну, я работаю с этой платформой уже много лет и случаев обмана на моей памяти не было. Объём знаний очень приличный, плюс онлайн-события фактически каждый день. Вы можете попробовать, в случае чего можно просто возврат запросить. Я не знаю деталей этих процессов, тк финансами не занимаюсь, но а том, что это приличные ребята, я уверен. Вот тут мы проводили стрим "день открытых дверей", можно глянуть - на многие вопросы есть ответы kzbin.info/www/bejne/e5zUnaGJa6-njcU
@ЕвгенийКим-ч6и7у
@ЕвгенийКим-ч6и7у 2 жыл бұрын
на 5ом уроке я поплыл :)) не очень понятно зачем все делается и очень много новых языковых конструкций Если я хочу научиться "в ручную" управлять смарт-контрактом, уже развернутым в блокчене, мне нужно изучать hardhat?
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Ну, тут в любом случае это рано или поздно придётся изучить. Нужен либо hardhat, либо подобная платформа - какого-то простого пути нет
@retro777
@retro777 Жыл бұрын
ничего не получается.Как проверить установились ли нужные библиотеки ethers,web,chay,mocha во время установки hardhat ?
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski Жыл бұрын
Ну, если тесты проходят, то установилось. На самом деле, теперь там достаточно поставить только hardhat-toolbox, он в себя всё нужное включает. Когда вы сделали проект HH, он должен предложить сам правильную команду для установки. Если не получается, напишите в наш чат
@galeraonthebeat
@galeraonthebeat Жыл бұрын
Truffle vs HardHat ? И пару слов почему. Спасибо
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski Жыл бұрын
Hardhat, он мне кажется удобнее и просто более популярным. Более того, теперь уже народ начал переходить на Foundry
@Ww-xc2fq
@Ww-xc2fq Жыл бұрын
Если пишешь тесты на python, можно же использовать brownie вместо waffle?
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski Жыл бұрын
Да, само собой
@denissavenko8579
@denissavenko8579 2 жыл бұрын
Пожалуйста, добавьте в видео информацию о том, что для получения возвращаемого значения функции в рамках теста необходим модификатор view-в противном же случае будет возвращена транзакция. Я на этом ОЧЕНЬ больно споткнулся
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Да про это в общем-то говорилось уже ранее
@rpirozhkov
@rpirozhkov 2 жыл бұрын
Добрый день. Спасибо большой за урок. Есть вопрос. В функцию pay передаются 2 аргумента (строка и сумма), хотя в декларации функции указан 1 аргумент. Это такая особенность функции помеченной как payable, т.е. всегда надо передавать сумму?
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Если функция payable, то она по умолчанию принимает деньги в поле value, да
@Иван-ч7т8ю
@Иван-ч7т8ю 2 жыл бұрын
Если у кого-то будет ошибка invalid chai property: changeetherbalances в третьем тесте для await expect(tx).to.changeEtherBalances([acc2, payments], [-100, 100]); просто напишите npm outdate и обновите версии библиотек в package.json, затем npm install и тест отработает :)
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Да, такое может быть, если старые версии стоят
@Palianycia
@Palianycia Жыл бұрын
Когда запсутил тест то выскочила ошибка:"TypeError: payments.deployed is not a function"
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski Жыл бұрын
А вы ссылку в закрепе посмотрите kzbin.info/www/bejne/fXWZl61ra5KWe7M
@kepamuk1
@kepamuk1 2 жыл бұрын
какой классный контент, все с нуля, мой любимик traversy media он тоже с нуля все делает, но по солидити к сожалению нету у него ((( так что этот курс просто находка, дружище я еще не посмотрел все полностью не знаю что там будет, но я тебе советую сделать полноценный курс, с фронтом бэком и этими контрактами что бы люди видели конченый результат продукта который нужен на реальной работе
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Это бесплатная версия. Куда более объёмную версию можно найти на сайте MCS. Но и фронт-энд здесь тоже есть, в последних уроках (Next.js)
@Palianycia
@Palianycia Жыл бұрын
@@IlyaBodrovKrukowski что это за сайт MCS?
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski Жыл бұрын
@@Palianycia это школа программирования, где я работаю
@kizik85
@kizik85 2 жыл бұрын
Илья, спасибо за урок! Подскажите, какую операционную систему Вы используете? У меня Windows. Думаю Ubuntu поставить для программирования. Выполнял команды как в видео, возникли ошибки, не помню какие. Решил попробовать повторно, всё заработало. Вы говорили в видео что могут быть проблемы с установкой...
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Windows 10. Но за мной лучше не повторять в этом плане, просто я знаю эту ОС очень хорошо - раньше по ней вёл занятия. А вообще nix-системы поудобнее будут. Проблемы на винде могут быть с node-gyp, это да. Там если не иметь опыта, то можно конкретно застрять, но, боюсь, других вариантов тут нет просто
@ГалинаИноземцева-ф9я
@ГалинаИноземцева-ф9я 2 жыл бұрын
можно на win использовать подсистему wsl, почти убунта только внутри винды, а так да, убунта самая удобная
@pphotic
@pphotic 9 ай бұрын
hardhat может компилировать один конкретный контракт? Можем мы задать путь по нужного файла?
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 9 ай бұрын
По умолчанию нет, тк compile работает со всем проектом сразу. Разве что писать какой-то свой таск, но я, честно говоря, именно такое не пробовал
@pphotic
@pphotic 9 ай бұрын
@@IlyaBodrovKrukowski Спасибо. Если использовать ide remix - то там можно конкретно один контракт деплоить.
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 9 ай бұрын
@@pphotic подождите, но деплоить != компилировать Деплой в HH, конечно, происходит не всех контрактов сразу, а только тех, что указаны в скриптах или тестах. А вот компиляция - всех сразу, но в общем это обычно не проблема
@БекзодОлимов-я4ц
@БекзодОлимов-я4ц 2 жыл бұрын
У меня вопрос есть, когда мы с одного аккаунта отправляем деньги на другой 100 wei, мы же платим газ и в итоге должно прийти не 100 wei, а меньше. Почему там 100 wei приходит?
@bst0080
@bst0080 2 жыл бұрын
Газ отдельно ещё списывается поверх суммы
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Совершенно верно, как указано выше, за газ платим отдельно
@БекзодОлимов-я4ц
@БекзодОлимов-я4ц 2 жыл бұрын
@@IlyaBodrovKrukowski Понял, спасибо, просто у меня почему-то меньше приходит. Но у меня в контракте только функция receive. Есть ли смысл заменить её на вашу "pay"?
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
​@@БекзодОлимов-я4ц Смотрите, receive - это функция, которая вызовется всегда, если в контракт просто придут деньги, без указания на функцию вообще. Но в Remix IDE мы это потестить никаким простым способом не можем, поэтому приходится делать "демо" функции для оплаты. Но написать тест для receive можно легко: просто отправляете транзакцию с деньгами из своих тестов. Поэтому для обучения пока можно создавать свои функции для приёма денежных средств, не receive, а самые обычные типа pay. Я скоро сделаю урок про функции и расскажу, в чём тут суть.
@БекзодОлимов-я4ц
@БекзодОлимов-я4ц 2 жыл бұрын
@@IlyaBodrovKrukowski окей, понял
@Andrey-mt6rh
@Andrey-mt6rh 2 жыл бұрын
Спасибо за видео! Подскажите, пожалуйста , после установки hart had , написан я контракта и теста при запуске в терминале в папке с проектом npx hardhat test ничего не происходит, после выполнения Команды пишет «0 passing”, в чем может быть проблема?
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Может быть, файлов тестов назвали не так?.. там правильное имя должно быть, по типу как я в видео показываю
@deniss_fresh
@deniss_fresh 2 жыл бұрын
@@IlyaBodrovKrukowski у меня та же ошибка, все файлы назвал верно D:\HZ\урок 5>npx hardhat test npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead. 0 passing (3ms)
@mavro6630
@mavro6630 2 жыл бұрын
Почему ве используете именно Ethers, а не web3?
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Более современное решение, скажем так. Мне нравится больше, чем web3. Но в целом можно и то, и то использовать
@ilyakh.2774
@ilyakh.2774 Жыл бұрын
после установки HardHat через консоль нет варианта Create a basic sample project (сейчас версия HardHat 2.12.5, а в вашем видео 2.8.4 - может в новой версии урезали функционал?)
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski Жыл бұрын
Нет, конечно, просто они процесс создания упростили. Там всё то же самое.
@karliam_v
@karliam_v Жыл бұрын
@@IlyaBodrovKrukowski А выбирать то теперь какой вариант если не basic sample project?
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski Жыл бұрын
@@karliam_v Ну basic, если вам нужен JS. Если TS, там отдельная опция
@АдаСимонова-ж5щ
@АдаСимонова-ж5щ 2 жыл бұрын
Спасибо за отличный урок. А есть ли способ замерять время на работу одного теста?
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
С этим есть некая сложность. Можно запускать тесты с ключом --slow но он тогда будет писать время для тестов, которые сам считает "медленными". Но предлагается вот такое решение stackoverflow.com/questions/39259620/how-to-configure-mocha-in-html-to-print-execution-time-of-each-test
@АдаСимонова-ж5щ
@АдаСимонова-ж5щ 2 жыл бұрын
@@IlyaBodrovKrukowski В видео говорилось, что для развертывания используется локальный блокчейн Hardhat. Как можно изменить используемый блокчейн?
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
@@АдаСимонова-ж5щ Опцией --network Там можно прописать любое значение, настроенное ранее hardhat.org/tutorial/deploying-to-a-live-network.html
@pashqa272
@pashqa272 2 жыл бұрын
Добрый день! В первую очередь спасибо большое за ту информацию, которую вы даете! Очень интересно, уникально и , естественно дико полезно. По этому уроку появился вопрос : после повторного compile, когда компилируется один файл, папка artifacts становится пустой. В чем может быть ошибка?
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Не встречал такого (точнее были похожие вопросы, но там вообще ничего не компилировалось). Можно попробовать для начала обновить все зависимости через npm update
@pashqa272
@pashqa272 2 жыл бұрын
@@IlyaBodrovKrukowski к сожалению, не помогло. Могу отметить, что у вас при компилировании отображается версия 0.8.4, хотя прописана 0.8.0. У меня версию не отображает совсем, скорее всего дело в solidity непосредственно. Но вариантов фикса пока не нашел
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
@@pashqa272 Должно всё компилироваться, настройки компилятора делаются в hardhat.config.js. У меня стоит в файле .sol "любая версия 0.8.x", а в конфиге - соответственно, 0.8.4. Попробуйте посрашивать в нашем чате, обычно народ помогает
@ЗапахПопочки
@ЗапахПопочки 7 ай бұрын
привет, можно ли все это добро развернуть в docker?
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 7 ай бұрын
Привет, естественно
@nadiamacz4748
@nadiamacz4748 2 жыл бұрын
До этого всё-всё было понятно, тут ничего вообще не понятно. Что посоветуете почитать, что бы разобраться, что вы писали в коде?)))
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Ну, тут просто нужно JS знать, если честно. Ну, можно ещё примеры прямо на сайте Chai посмотреть, там есть разные сценарии и показано, как тестировать
@arsen1usRS
@arsen1usRS 2 жыл бұрын
@@IlyaBodrovKrukowski можно ли научится писать смарт-контракты не зная JS?
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
@@arsen1usRS Да. Тестировать - маловероятно
@КириллКузнецов-е9о
@КириллКузнецов-е9о 2 жыл бұрын
Правильно ли я понимаю, что команды `npm init` и `npm install --save-dev hardhat` нужно вводить при создании каждого конейнера так же как и `npx hardhat`?
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Я думаю, что вам стоит почитать подробнее про проекты npm, чтобы закрепить изученное - это несложно, но довольно важно. Но в целом да - каждый новый проект подразумевает запуск npm init. Потом туда забрасываются нужные библиотеки через npm install. В одном проекте может быть множество контрактов и тестов
@КириллКузнецов-е9о
@КириллКузнецов-е9о 2 жыл бұрын
@@IlyaBodrovKrukowski Хорошо. Спасибо
@КириллКузнецов-е9о
@КириллКузнецов-е9о 2 жыл бұрын
@@IlyaBodrovKrukowski Просто страно видеть, что для каждого проекта мне нужно отдельно подкачивать все библиотеки, которые нужны в проекте через npm install
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
@@КириллКузнецов-е9о Это так работает абсолютно для любого проекта npm, а также для немалого количества проектов на других языках: хотя бы Ruby или Elixir. Каждый проект - вещь в себе, которая не зависит от глобально установленных библиотек (в идеале). Мы даём проекту имя, ставим нужные зависимости и делаем там, что хотим. В другом проекте могут быть совершенно другие зависимости с другими версиями и они никак не конфликтуют
@КириллКузнецов-е9о
@КириллКузнецов-е9о 2 жыл бұрын
@@IlyaBodrovKrukowski Хорошо, буду знать) Спасибо
@Receive_
@Receive_ 2 жыл бұрын
Зачем в 31 строке - .to.changeEtherBalances([accaunt2, payments], [-sum, sum]) точка с запятой? Будут уроки по брауни?
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Точка с запятой? Не знаю, может затесалась случайно, не помню уже. По брауни - может быть
@Receive_
@Receive_ 2 жыл бұрын
@@IlyaBodrovKrukowski Спасибо за ответ. Не могу получить информацию по второму платежу. Создаю третий аккаунт, шлю wei с него на контракт, средства до контракта доходят и баланс контракта становится равным 200, но данные по платежу получить не могу. Запрашиваю по аналогии - const newPayment2 = await payments.getPayment(accaunt3.address, 1). В консоли при запросе логов получаю нули и пустые строки. В чем беда?
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
@@Receive_ Так сложно сказать, лучше в чате спросить и скинуть сразу кусок кода
@no4e
@no4e 2 жыл бұрын
Я уже хотел закрывать видео, но спасение пришло в 14:50 :)
@elsancho4356
@elsancho4356 2 жыл бұрын
Доброго времени суток, на протяжение недели пытаюсь установить hardhat но всё безуспешно, можно как-то подробнее сделать видео о том, как с ним работать?
@elsancho4356
@elsancho4356 2 жыл бұрын
Как запустить его и смарт контракты в нём, просто не в ремих, нигде ничего не появилось
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
@@elsancho4356 Ну там вроде всё просто должно быть. Если проблемы какие-то, можно в наш чат написать (ссылка в описании). Просто я даже не знаю, что показывать в видео - он ведь одной командой ставится
@bbz9002
@bbz9002 Жыл бұрын
Если у кого-то возникает ошибка на await ethers.getSigners(); - Cannot read properties of undefined (reading 'JsonRpcProvider') Попробуйте использовать "ethers": "5.7.2",
@rucat284
@rucat284 Жыл бұрын
есть ли такие же библиотеки, но под python?
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski Жыл бұрын
Да, называется brownie
@Bekcoin
@Bekcoin Жыл бұрын
изучаешь python?
@rucat284
@rucat284 Жыл бұрын
@@Bekcoin да
@Bekcoin
@Bekcoin Жыл бұрын
@@rucat284 давно?
@BELPER-f5z
@BELPER-f5z 2 жыл бұрын
Спасибо за полезные видео! Что ты думаешь по поводу изучения Rust?
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Я думаю, что это классика, это знать нужно. Вообще-то я очень надеюсь, что рано или поздно сделаю уроки по этой теме, пока просто руки не доходят. Серьёзно, если есть возможность - учите Rust
@Nevybralnick
@Nevybralnick 2 жыл бұрын
@@IlyaBodrovKrukowski Он имеет отношение к работе со смарт-контрактами?
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
@@Nevybralnick Да, если вы хотите разрабатывать для Solana
@Nevybralnick
@Nevybralnick 2 жыл бұрын
@@IlyaBodrovKrukowski а востребованней сейчас разработчики на эфире?
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
@@Nevybralnick Да, хотя во многих случаях требуется какой-никакой опыт, скажем так. Но с уровнем миддл найти работу не просто, а очень просто
@killerqueen9178
@killerqueen9178 2 жыл бұрын
какая у тебя программа для cmd?
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
ConEmu
@ОстапБобрис-г1п
@ОстапБобрис-г1п 2 жыл бұрын
Здравствуйте, а как изменить папку куда все с хардхета кидается?
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Папку - какую именно? Там ведь много разного есть. Что-то можно в конфиге менять, видимо, а если мы говорим о typechain файлах для frontend, то как-то так npx typechain --out-dir front/src/typechain --target ethers-v5 "artifacts/contracts/**/*[!dbg].json"
@ОстапБобрис-г1п
@ОстапБобрис-г1п 2 жыл бұрын
@@IlyaBodrovKrukowski У меня просто в conemu стоит папка Users и в visual studio через нее нужно заходить, чтобы видеть все тесты, скрипты и т.д, хотелось бы отдельную папку для этого сделать и чтобы в conemu от ее имени писать
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
@@ОстапБобрис-г1п Надо просто сделать команду cd в нужную директорию в терминале learn.microsoft.com/en-us/windows-server/administration/windows-commands/cd В духе cd c:\projects\my_project
@игорьговтвян-я5ж
@игорьговтвян-я5ж 2 жыл бұрын
Это видео интересное, но при этом почему-то слишком много ошибок на квадратный метр. Error: Invalid Chai property: changeEtherBalances. Did you mean "changeEtherBalance"? Сначала была ошибка с changeEtherBalance , нашёл в инете решение и там было сказано, что нужно дописать 2 строки в файл waffle-chai.js. Но потом появилась эта ошибка и решения пока что не смог найти. Помогите пожалуйста)
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Всё должно работать. changeEtherBalances - это matcher из waffle. Возможно, не подрублен сам waffle. В принципе, с такими ошибками лучше к нам в чат обратиться, ссылка есть в описании
@vvv35724
@vvv35724 2 жыл бұрын
Вы в итоге разобрались с ошибкой? у меня сейчас такая же, а решений всё ещё нигде нет :(
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
@@vvv35724 Таких ошибок быть не должно. Можно поспрашивать в чате нашем, только исходный код потребуется
@WithoutNickname666
@WithoutNickname666 2 жыл бұрын
Спасибо за урок! К сожалению, уровень сложности резко вырос и если до этого занятия было понятно 80-90% материала, то здесь уже не более 20-30%. Было бы неплохо останавливаться более подробно на: 1) Той вещи, о которой мы говорим сейчас. Например "Эта программа нужна для тестов, ставите ее. А еще вот эта нужна, а еще вот эта. А теперь пишем команду". Из-за обилия новых терминов, программ, синтаксиса - просто теряешься. И второе это сам синтаксис, например на 12:00 мы стали неожиданно писать на JS (Если я правильно понял). Но далеко не все писали на JS или вообще имели бекграунд программирования.. Если уроки будут более подробными и уровень сложности будет нарастать плавно, а не скачками, то 90% обучающихся дойдут до конца :) Даже если посмотреть на кол-во просмотров, то от урока к уроку чуть ли не половина смотрящих отваливается )
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Это верно. Но надо понимать простую вещь: у меня просто нет возможности делать такое количество уроков и объяснять основы того же JS - это остаётся на откуп зрителю. В этой серии мне хотелось бы сфокусироваться на ethereum, а уж на чём будут писаться тесты - это дело другое, решения есть и другие, кстати говоря. Да писать-то их не обязательно, для понимания Solidity этого не требуется и к этому вопросу можно вернуться позже, в принципе
@ГалинаИноземцева-ф9я
@ГалинаИноземцева-ф9я 2 жыл бұрын
@@IlyaBodrovKrukowski Все верно, идти в блокчейн разработку без базовых знаний разработки это как пытаться учиться плавать без умения ходить)
@SerKuzmichArt
@SerKuzmichArt 2 жыл бұрын
@@ГалинаИноземцева-ф9я сравнение не вполне подходящее :)
@SerKuzmichArt
@SerKuzmichArt 2 жыл бұрын
Надо понимать, что Solidity - язык специализированный. Ну а какие проблемы с JS? Документирована вдоль и поперек, материалов по ней на любой уровень подготовки масса. Ну и особо сложной ее не назвать :) За неделю - две, на мой взгляд, любой более-менее разберется. Тут человек выложил солюшен с редко кем разбираемой темой, за что ему низкий поклон. Прочитаете по JS & Solidity доки и разберетесь что и зачем он написал. От такого упражнения только польза. Когда лет 25 тому назад моя старшая дочь спросила меня: «Что в первую очередь должен уметь программист?», она меня здорово озадачила. А потом я, когда понял, озадачил ее - «Уметь читать». И с тех пор ничего не поменялось :) Уметь читать - по прежнему главный навык программиста. Читать доки и читать то, что наваяли коллеги. Причем, нередко читать творчество коллег приходится больше, чем писать что-то самому. Так что, если хотите заниматься сим делом, привыкайте читать, читать и врубаться в прочитанное.
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
@@SerKuzmichArt Всё так, хорошо сказано
@игорьговтвян-я5ж
@игорьговтвян-я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. Такая ошибка, попытался удалить и заново установить, как рекомендует сама консоль, но не помогает. В чём может быть проблема?
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
stackoverflow.com/questions/69959650/error-hh12-trying-to-use-a-non-local-installation-of-hardhat-which-is-not-supp hardhat.org/errors/#HH606= - как-то так
@игорьговтвян-я5ж
@игорьговтвян-я5ж 2 жыл бұрын
@@IlyaBodrovKrukowski Да, я как раз и делал по инструкции на stackoverflow, но у меня почему-то всё ещё пишет эту ошибку. Полностью удалил своей проект, удалил все файлы, которые качались с помощью npm install и заново всё поставил. Но ошибка всё ещё осталась, не знаю если честно в чём проблема, потому что в интернете только говорят удалить и установить снова...
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
@@игорьговтвян-я5ж Удалить нужно также node_modules и package.json не только в самом проекте, но и в родительских папках, если они там есть. Честно говоря, что тут ещё подсказать - даже не знаю
@игорьговтвян-я5ж
@игорьговтвян-я5ж 2 жыл бұрын
@@IlyaBodrovKrukowski Честно сказать не знаю, какой из методов помог, но проблема решилась. Благодарю за ваш быстрый ответ и спасибо за эти видео)
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
@@игорьговтвян-я5ж Отлично
@WithoutNickname666
@WithoutNickname666 2 жыл бұрын
А что значит "Корректный адрес смарт контракта"? Мне не понятно как он может быть не корректным..
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Может состоять не из 20 байт
@WithoutNickname666
@WithoutNickname666 2 жыл бұрын
Илья, не могу разобраться в чем проблема... Есть функция 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) Я уже как только не пробовал значение менять... В чем может быть проблема?
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Там 2 аргумента: ещё amount, а у вас выходит, что вы передаёте 1 аргумент и просто деньги
@WithoutNickname666
@WithoutNickname666 2 жыл бұрын
@@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" }
@WithoutNickname666
@WithoutNickname666 2 жыл бұрын
@@IlyaBodrovKrukowski При этом я успешно отправил транзакцию с одного адреса на другой, но появляется ошибка если отправлять на адрес смарт контракта
@WithoutNickname666
@WithoutNickname666 2 жыл бұрын
@@IlyaBodrovKrukowski В общем... магия какая-то.. Я выяснил, что проблема заключалась в том, что в receive() я изменял кое какие данные в блокчейне, из-за этого не хватало газа (ведь на контракте изначально 0). Я удалил всё из receive() и оставил чистой функцию. Всё сработало. При этом я развернул такой же контракт в Remix, где receive() уже изменяет данные в блокчейне. И я спокойно отправлял на нее эфир, никаких ошибок. Тоже самое в Rinkeby testnet. Всё работает, только в hardhat не работает.. И как после этого тестировать..
@WithoutNickname666
@WithoutNickname666 2 жыл бұрын
@@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
@geryax Жыл бұрын
так, на 5 уроке уже тяжко..
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski Жыл бұрын
Пока тесты можно пропустить, в принципе
@littleluckyboy
@littleluckyboy 2 жыл бұрын
Вафли зефир моча чай)) лол
@mrin0
@mrin0 Жыл бұрын
!
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski Жыл бұрын
Обратите внимание, что сегодня выйдет обновлённый урок про тесты
@denisovilya1888
@denisovilya1888 2 жыл бұрын
Классные уроки. Но есть пара вещей, которые режут слух. Это "Яваскрипт" Х-D, и то, что await для того, что выполняется не мгновенно. Правильно будет говорить асинхронно, это не совсем о времени выполнения
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
А что плохого в слове "Яваскрипт"? Этот язык был назван по образу Java (там долгая история, но в целом это было сделано с маркетинговыми целями), который, в свою очередь, назван по сорту кофе coffeefan.info/kofe-java-arabika.html Что касается await - нам нужно в данном случае ждать, пока пройдёт транзакция. Иначе там будет возвращён promise и мы не сможем проверить корректность выполнение. Короче, вы меня простите, я несколько на взводе из-за происходящих сейчас событий, которые частично коснулись и меня, но в общем и целом это придирки.
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Я согласен, что дело в общем и целом не во времени выполнения, но чтобы зрителю было понятнее, я говорю, что обработка транзакции делается довольно долго. И да, нужно её дождаться. Время выполнения важно с той точки зрения, что если бы всё выполнялось мгновенно, то нам вообще был бы не нужен никакой promise. А так все эти отправки функций всегда возвращают promise именно из-за длительности этой операции. В общем, спасибо за комментарий, это в любом случае полезно
@maksym8808
@maksym8808 2 жыл бұрын
зачем политику приплетать? на Донбасе с 2014г. военные действия, все молчали, что началось то? а за уроки спасибо!
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Я не буду отвечать на этот вопрос. Кто такие "все" - я не знаю, но обо мне вы не знаете ничего, включая и то, молчал я или нет. Давайте не будем развивать эту тему.
@maksym8808
@maksym8808 2 жыл бұрын
@@IlyaBodrovKrukowski извините если задел чем то, но я в общем
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
@@maksym8808 Ничего, всё ок
@Pixell77
@Pixell77 2 жыл бұрын
Здравствуйте! Я впервые написал тесты для своего контракта благодаря вам, спасибо большое! Сейчас я пишу таски через web3.js для взаимодействия с контрактом через hardhat, не могу понять как с этой библиотекой работать. У меня вопрос: Если писать таски с помощью того же ethers, то перед каждым выполнением таска нужно каждый раз деплоить контракт как в тестах (beforeEach)? И в принципе будут ли большие отличия tasks.js от tests.js если оба просто вызывают функции из контракта, только второй сравнивает результат с ожидаемым?
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Ethers.js мне кажется получше, чем web3. Деплой делать нужно вообще один раз, если это не тесты. Это просто в тестах нам всегда нужен свежий контракт, а в реальном блокчейне - конечно, нет. 1 раз развернули контракт и с ним работаем
@GennadiiKotov
@GennadiiKotov 2 жыл бұрын
Что за метод сurrentBalance? В моем случае у deployed контракта нет такого метода и баланс контракта узнаю через provider.getBalance(contract.address). И упоминаний метода currentBalance нигде не вижу в документациях.
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
А мы же добавили эту функцию в контракт github.com/bodrovis-learning/Solidity-YT-Series/commit/e03c969299449ae6cbc1824f40dfa07f2f8d7de3#diff-7cff68d828791d88522eb91f7751fe53e4a0cff32859ef5a7a166a7dabe1d360R20 Конечно, изначально метода такого нет, но благодаря функции можно вызывать без пролем
@GennadiiKotov
@GennadiiKotov 2 жыл бұрын
@@IlyaBodrovKrukowski действительно, забыл про это. Благодарю.
@andreymarkich1532
@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
@IlyaBodrovKrukowski Жыл бұрын
Попробуйте, пожалуйста, в наш чат написать с этим вопросом
@andreymarkich1532
@andreymarkich1532 Жыл бұрын
@@IlyaBodrovKrukowski Спасибо вам большое за очень быстрый ответ!!!
@andreymarkich1532
@andreymarkich1532 Жыл бұрын
@@IlyaBodrovKrukowski Я искренне прошу прощения, за вопрос Возможно это покажется наглым, но у уже почти восемь часов пытаюсь решить проблему в коде из 5-го видео, в чатике ребята не смогли помочь, использовал чат GPT, но и он не смог мне помочь с ошибкой этой Если у вас получится уделить мне некоторое время, глянуть мой код и помочь с данной ошибкой, я буду вам очень благодарен Я очень хочу дальше изучать курс, но сильно застопорился на этой ошибке
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski Жыл бұрын
@@andreymarkich1532 Хорошо, в описании канала есть почта, пришлите мне весь проект и шаги, чтобы эту ошибку воспроизвести. Постараюсь глянуть
@andreymarkich1532
@andreymarkich1532 Жыл бұрын
@@IlyaBodrovKrukowski Спасибо Вам огромное, что согласились, вы очень отзывчивый человек Я вам все отправил
@Видеодневник-ы6щ
@Видеодневник-ы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
@IlyaBodrovKrukowski Жыл бұрын
В закреплённом комментарии есть ссылка на faq, который описывает, в том числе, и эту проблему bodrovis.tech/en/categories/solidityethereum/posts/faq-po-kursu-solidity Решается она несколько иначе, советую почитать (там ничего сложного)
@renichigava4183
@renichigava4183 2 жыл бұрын
вот такая ошибка выходит в терминале , как можно ее решить? 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 ()
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
Поставьте let а не const во всех случаях
@renichigava4183
@renichigava4183 2 жыл бұрын
@@IlyaBodrovKrukowski я дописал помимо трех let "const Payments" только после этого заработало, но при тесте чтоб узнать адрес кошелька он не выводится как быть в этом случае Payments √ should be deployed 1 passing (662ms) адрес не вышел
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
@@renichigava4183 А вы точно до конца видео досмотрели и код как в финальной версии? Я там просто посреди видео как раз кое-что исправил ещё
@renichigava4183
@renichigava4183 2 жыл бұрын
@@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
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 2 жыл бұрын
@@renichigava4183 А вы waffle точно подключили? Или может версии старые? Тк это должно работать 100%, я это показывал уже на 2 стримах и вот в видео
@aiv2145
@aiv2145 11 ай бұрын
Ошибка в строке: expect(payments.address).to.be.properAddress Текст ошибки: AssertionError: Expected "undefined" to be a proper address Решение: исправить строку на: expect(payments.runner.address).to.be.properAddress
@IlyaBodrovKrukowski
@IlyaBodrovKrukowski 11 ай бұрын
Обратите внимание, что этот урок устарел, обновлённый вот тут kzbin.info/www/bejne/fXWZl61ra5KWe7M
СКОЛЬКО ПАЛЬЦЕВ ТУТ?
00:16
Masomka
Рет қаралды 3,4 МЛН
Мама у нас строгая
00:20
VAVAN
Рет қаралды 10 МЛН
The Singing Challenge #joker #Harriet Quinn
00:35
佐助与鸣人
Рет қаралды 46 МЛН
1, 2, 3, 4, 5, 6, 7, 8, 9 🙈⚽️
00:46
Celine Dept
Рет қаралды 113 МЛН
Jest. Unit Тестирование в JavaScript
1:27:05
Владилен Минин
Рет қаралды 170 М.
Hardhat, Ethers.js, Rinkeby, Alchemy, Etherscan
30:56
Ilya Krukowski
Рет қаралды 5 М.
СКОЛЬКО ПАЛЬЦЕВ ТУТ?
00:16
Masomka
Рет қаралды 3,4 МЛН