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

Поделиться
HTML-код
  • Опубликовано: 15 ноя 2024

Комментарии • 245

  • @IlyaBodrovKrukowski
    @IlyaBodrovKrukowski  2 года назад +8

    Друзья, ЭТОТ УРОК УСТАРЕЛ! Новая версия тут ruclips.net/video/GD6fz56-cEQ/видео.html
    Если у вас ЧТО-ТО НЕ РАБОТАЕТ, то FAQ ПО КУРСУ ЛЕЖИТ ВОТ ТУТ bodrovis.tech/en/categories/solidityethereum/posts/faq-po-kursu-solidity Не исключено, что ваша проблема там уже описана. Дело в том, что недавно Hardhat перешёл на ethers 6 и пару изменений там присутствует.
    Также хотел отметить, что блокчейн будет очищаться МЕЖДУ РАЗНЫМИ ПРОГОНАМИ тестов. В рамках одного прогона если вы хотите, чтобы шла очистка, то в beforeEach можно засунуть await network.provider.send("hardhat_reset"). Просто некоторые спрашивают, как сделать так, чтобы после "увеличения" времени в одном тесте, это не влияло на другой. Вот именно так. Увы, по дефолту такой очистики нет (если вдруг я где-то в видео оговорился и сказал, что есть между тестами, а не между прогонами, то прошу прощения). Но коль скоро в beforeEach мы делаем деплой заново, то контракт будет в любом случае свежим. В более новом hardhat появилась функция loadFixture, она будет фигурировать далее

  • @antonishchenko7099
    @antonishchenko7099 Год назад +11

    Это просто великолепно! Даже не знаю можно ли объяснить более доступно!! Благодарю!🙏🙌🚀

  • @mykytakozhemiakin6537
    @mykytakozhemiakin6537 2 года назад +4

    Cпасибо Вам за то, что высказали своё мнение касательно войны

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад +4

      Да что тут сказать... Это просто катастрофа, а что самое страшное, конца и края этому не видно...

  • @МаксКапориков
    @МаксКапориков 2 года назад +6

    Спасибо больше за Ваши труды! Даже не знаю, что без Вас бы делал))!

  • @ВикторКулагин-ь2у
    @ВикторКулагин-ь2у Год назад +3

    Ух ты, класс уроки! Я не новичок в программировании, но много новой информации по blockchain много понятно, но сложновато! Материал изложен очень круто и понятно

  • @MikhailKuklenkov
    @MikhailKuklenkov Год назад +2

    Доброго времени суток, Илья. Благодарю за качественный стиль изложения и полезный урок по Solidity.
    Резюмировал урок для себя следующим образом: Single responsibility - наше все)

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  Год назад +1

      ruclips.net/video/GD6fz56-cEQ/видео.html - кстати, тут свежая версия этого урока

    • @НикитаШевченко-ы8я
      @НикитаШевченко-ы8я 10 месяцев назад +1

      @@IlyaBodrovKrukowski спасибо за ссылку) даль что не увидел раньше, но зато пришлось по документации разобраться)) да, и за контент спасибо!

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  10 месяцев назад

      @@НикитаШевченко-ы8я на здоровье

  • @bst0080
    @bst0080 2 года назад +13

    Отличный урок мало кто задевает тему тестов спасибо большое, очень жду если такая будет тему оракулов про это очень мало информации а если есть то теория в основном спасибо за этот курс !!

  • @Burshte1n
    @Burshte1n 2 года назад +2

    Илья, большая Вам благодарность!

  • @mojodont
    @mojodont 2 года назад +3

    Спасибо большое за то, что делаете!

  • @cryptomoon4700
    @cryptomoon4700 2 года назад +2

    Илья, Спасибо за видео! Очень полезные Уроки!

  • @АлександрАлександр-р1з

    Спасибо большое, очень ждал тему тестов

  • @crypto-pro26
    @crypto-pro26 Год назад

    Про тесты нельзя забывать, поэтому полезное видео. Только конечно для новичков в программировании этот урок после первых 4 может сбить столку. А для тех кто с других языков программирования зашел - видео должно залетать на ура

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  Год назад

      Это да, но к нему можно вернуться позднее

  • @truestuff3828
    @truestuff3828 2 года назад +2

    отличный курс! надеюсь будет продолжение)

  • @artakmanukyan676
    @artakmanukyan676 2 года назад +2

    Отличный контент, спасибо!

  • @СтепанЗреющий
    @СтепанЗреющий 2 года назад +2

    Огромное спасибо за урок

  • @romanovmaksim
    @romanovmaksim 2 года назад +2

    Спасибо за ваш труд

  • @Bekcoin
    @Bekcoin Год назад +2

    5 урок пропускаю покв это просто джунгли какие-то)

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  Год назад

    • @Bekcoin
      @Bekcoin Год назад

      ​@@IlyaBodrovKrukowskiвернулся к 5-му уроку спустя пару дней как и прежде темный лес)по вашему это не слишком сложно для начинающих? или это только для меня.

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  Год назад +1

      @@Bekcoin Не знаю, зависит от опыта, я думаю. Можно попробовать просто про JS что-нибудь почитать

    • @MirkaKalman
      @MirkaKalman 10 месяцев назад

      жиза жиза

  • @БекзодОлимов-я4ц
    @БекзодОлимов-я4ц 2 года назад +2

    Ух ты, я ждал этого, спасибо

  • @IonPlaton-mg3ie
    @IonPlaton-mg3ie Год назад +1

    спасибо за ваш труд! если можно пожалуйста побольше видео про хардхат и тестирование смарт контрактов

  • @Уважаемыйпользователь-ю9к

    а у вас есть видео где вы работаете с файлом "deploy"? Просто мне нужном в другом теснете затестить, а там запускается по такой строке " run script/deploy.js"

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  Год назад

      Вероятно, npx hardhat run script/deploy.js --network sepolia или как-то так. Кажется что-то такое было в конце 13 урока, где деплоим токен

  • @h-arti5305
    @h-arti5305 2 года назад +3

    Почему так мало просмотров ! ведь за этим будущее

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад +2

      По прошлым урокам куда больше. Но вообще я боюсь, что это связано со всем известными событиями - многие люди просто сейчас не могут ничего смотреть, другие же пребывают не в самом лучшем состоянии просто. Прямо явно видно, как в конце февраля упали просмотры. Увы...

    • @h-arti5305
      @h-arti5305 2 года назад +2

      @@IlyaBodrovKrukowski Большое и огромное Вам спасибо за то что вы делайте, для многих Ваши выпуски как глоток свежего воздуха, как маленькая таблетка от всех этих плохих событий. Я из Ашхабад и желаю всем мира и продолжения этих интересных уроков !

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад

      @@h-arti5305 Спасибо!

  • @neuromancersmith9890
    @neuromancersmith9890 2 года назад +2

    Спасибо большое!

  • @ВениаминВидантов
    @ВениаминВидантов Год назад +1

    Когда уже появится фреймворк "Пиво". Жду-недождусь. Спасибо за видео кстати.

  • @404piano
    @404piano 2 года назад +2

    Спасибо!

  • @alinamozol2385
    @alinamozol2385 2 года назад +10

    Спасибо за отличный урок. Вы действительно помогли мне отвлечься от этого ужаса войны хоть ненадолго.

  • @daniel7007
    @daniel7007 2 года назад +5

    Огромное спасибо за крутые уроки!
    Вроде было все понятно до 5 урока и потом как будто на китайском все, уже пересмотрел ролик раза 3-4, но картина все рано не целая. Но автору респект!
    Подскажите такой вопрос, использую данную систему через hardhat что бы тестировать контракт, не проще ли делать это в Ремиксе? Спасибо!

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад

      Имееь смысл подтянуть JS, значит. А так нет - не проще, особенно, когда большой контракт

  • @GatoGordoism
    @GatoGordoism 2 года назад +1

    Спасибо. Реально очень полезно!

  • @ВиталийСергеев-я6т

    Спасибо за урок, тема очень интересная!!! Подскажите пожалуйста тестировать смарт контракты можно только через Hardhat предварительно создав на нем специальное окружение с помощью Mocha, Chai, Waffle, Ethers? Например в ремиксе также тестировать смарт контракты невозможно?

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  Год назад

      Ну, есть совсем рудиментарные штуки, кажется, но что-то сложное сделать вряд ли выйдет. Но есть ещё другое решение Foundry, про него в плейлисте есть видео, на нём тесты пишутся на самом Solidity, без JS

  • @vasilishahov969
    @vasilishahov969 5 месяцев назад

    Для тех кто в будующем будет инициализировать проект, надо вместо "npx hardhat" команды, использовать "npx hardhat init"

  • @Sinelnik
    @Sinelnik 7 месяцев назад +2

    Илья спасибо за урок, но спустя два года произошли некоторые изменения в hardhat. Для тех у кого будет ошибка с таким стеком "TypeError: invalid address (argument="address", value=null, code=INVALID_ARGUMENT, version=6.11.1)" то вместо payments.deployed используйте payments.waitForDeployment(). deployed уже устарела.

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  7 месяцев назад

      А это устаревший урок в принципе, я уже сильно не советую ему следовать. В закрепе ссылка на актуальный ruclips.net/video/GD6fz56-cEQ/видео.html Если что, остальные ответы на типичные вопросы тут bodrovis.tech/posts/faq-po-kursu-solidity/

    • @kapidioto
      @kapidioto 7 месяцев назад +2

      Спасибо за подсказку!

    • @TraneSeven
      @TraneSeven Месяц назад

      @@IlyaBodrovKrukowski👍

  • @haisenberg5783
    @haisenberg5783 Год назад +1

    Здравствуйте. Спасибо за уроки. Можна услышать ваше мнение об автоматичесских анализаторах (slither, mithril ...)? Интересует ефективность в поиске багов.

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  Год назад

      Насколько я знаю, это неплохие штуки, хотя полагаться только на них не стоит. Любой инструмент - это помощник, а не штука, которая сделает всё за нас

    • @haisenberg5783
      @haisenberg5783 Год назад +1

      @@IlyaBodrovKrukowski Спасибо, что ответили.

  • @ilya_fimin
    @ilya_fimin 2 года назад +2

    Добрый вечер, не получается реализовать отправку токена всем пользователям(идея заключается в отправке 2% от транзакции всем пользователям токена), как лучше ее реализовать, не могу найти в интеренете.

  • @kuhnya.onnCTC
    @kuhnya.onnCTC 2 года назад +2

    спасибо вас огромное за такую проделанную работу! и сразу хочу у вас спросить, как перенести инфу с ремикса на вижуал код?

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад

      Ну, перенести - особенно никак, просто обычным копированием ctrl+c ctrl+v. Это если у вас онлайн версия ремикса, конечно. Если локально, то просто файлы перетащить можно

    • @MaiborodaAndrii
      @MaiborodaAndrii Год назад

      @@IlyaBodrovKrukowski добрый день. Большое спасибо за уроки!!! Подскажите пожалуйста где могут находиться файлы созданные через ремикс? Уже все перерыл в локальной памяти, ничего не нашел

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  Год назад

      @@MaiborodaAndrii Насколько мне известно, они хранятся в local storage, если говорить об онлайн-версии (про десктоп не скажу, но где-то на диске). Там есть вариант сделать бэкап всех файлов. Но если в онлайн-версии использовать другой браузер, то старые файлы отображаться не будут

  • @ЕвгенийКим-ч6и7у
    @ЕвгенийКим-ч6и7у 2 года назад +2

    на 5ом уроке я поплыл :)) не очень понятно зачем все делается и очень много новых языковых конструкций
    Если я хочу научиться "в ручную" управлять смарт-контрактом, уже развернутым в блокчене, мне нужно изучать hardhat?

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад

      Ну, тут в любом случае это рано или поздно придётся изучить. Нужен либо hardhat, либо подобная платформа - какого-то простого пути нет

  • @hovhannesadajyan2332
    @hovhannesadajyan2332 2 года назад +1

    Спасибо большое за урок. У меня такая проблема: когда ввожу -npx hardhat test- нечего не тестируется -0 passing (0ms)-. Может подскажите что я делаю не так?

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад +1

      Возможно, у вас тесты не в той папке? Проверьте, что все пути такие же, как в проекте в видео - обычно такая проблема появляется, когда он тестов не видит. Вот тут папки и имена файлов имеет смысл проверить github.com/bodrovis-learning/Solidity-YT-Series/tree/master/lesson_5_tests

  • @алексейжучков-я8и
    @алексейжучков-я8и Год назад +1

    thnx a lot for good content!

  • @WithoutNickname666
    @WithoutNickname666 2 года назад +1

    Кстати. Небольшой лайфхак.
    В большинстве случаев нет необходимости применять npx hardhat clean, npx hardhat compile, так как при npx hardhat test программа автоматически находит измененные файлы, компилирует их и запускает тест. Вместо трёх команд можно использовать одну.

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад

      Это да. Но иногда он начинает тупить и использовать старую версию кода, у меня такое бывало. Но каждый раз - нет, не нужно, конечно

  • @synchronization666
    @synchronization666 2 года назад +1

    thank you!

  • @ДамирКу-е6р
    @ДамирКу-е6р 2 года назад +2

    Лучший

  • @kizik85
    @kizik85 2 года назад +4

    Илья, для меня тема тестов сложная. Не понимаю что Вы пишете. Хочу Вас попросить, объясните пожалуйста подроднее синтаксис написания тестов. До этого видео лично мне было понятно, большую часть точно. Спасибо Вам за старания!!!

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад +1

      Ну, просто к Ethereum как таковому это не относится - эта тема более общая, скажем так. Буду стараться подробнее объяснять

    • @cryptomoon4700
      @cryptomoon4700 2 года назад +1

      это общие знания, которые для разработки нужно понимать в любом случае. я пересмартиваю уроки по несколько раз, пытаюсь понять логику тестов, пока тоже дается с трудом, ну а как иначе)

    • @googleadmin4749
      @googleadmin4749 2 года назад +1

      Проще говоря, ты написал программу - Велосипед
      Теперь тебе нужно его протестировать прежде чем продать покупателю, то что показано было в видео, это по сути "робот-тестировщик" для велосипедов, ты можешь запрограммировать его протестировать педали, сиденье или проехать 5 метров со скоростью 500 км/час, в общем это обвязка для того что бы проверять нормально ли работает твой код автоматически, иначе бы пришлось тыкать все в ручную.

  • @АнтонБочаров-ф6щ
    @АнтонБочаров-ф6щ Год назад +1

    У меня такой вопрос: Вы упомянули GUIDE DAO!Насколько им можно доверять в качестве даваемых ими знаний?Стоит ли объективно это тех денег?Не инфо ли цыгане, как большинство курсов?Спасибо!

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  Год назад +1

      Ну, я работаю с этой платформой уже много лет и случаев обмана на моей памяти не было. Объём знаний очень приличный, плюс онлайн-события фактически каждый день. Вы можете попробовать, в случае чего можно просто возврат запросить. Я не знаю деталей этих процессов, тк финансами не занимаюсь, но а том, что это приличные ребята, я уверен. Вот тут мы проводили стрим "день открытых дверей", можно глянуть - на многие вопросы есть ответы ruclips.net/video/EkqlnS6JtWc/видео.html

  • @Ww-xc2fq
    @Ww-xc2fq Год назад

    Если пишешь тесты на python, можно же использовать brownie вместо waffle?

  • @SCEP9X
    @SCEP9X 2 года назад +1

    Продолжай🥺🤙

  • @БекзодОлимов-я4ц
    @БекзодОлимов-я4ц 2 года назад +2

    У меня вопрос есть, когда мы с одного аккаунта отправляем деньги на другой 100 wei, мы же платим газ и в итоге должно прийти не 100 wei, а меньше. Почему там 100 wei приходит?

    • @bst0080
      @bst0080 2 года назад +2

      Газ отдельно ещё списывается поверх суммы

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад +2

      Совершенно верно, как указано выше, за газ платим отдельно

    • @БекзодОлимов-я4ц
      @БекзодОлимов-я4ц 2 года назад +2

      @@IlyaBodrovKrukowski Понял, спасибо, просто у меня почему-то меньше приходит. Но у меня в контракте только функция receive. Есть ли смысл заменить её на вашу "pay"?

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад +3

      ​@@БекзодОлимов-я4ц Смотрите, receive - это функция, которая вызовется всегда, если в контракт просто придут деньги, без указания на функцию вообще. Но в Remix IDE мы это потестить никаким простым способом не можем, поэтому приходится делать "демо" функции для оплаты. Но написать тест для receive можно легко: просто отправляете транзакцию с деньгами из своих тестов. Поэтому для обучения пока можно создавать свои функции для приёма денежных средств, не receive, а самые обычные типа pay. Я скоро сделаю урок про функции и расскажу, в чём тут суть.

    • @БекзодОлимов-я4ц
      @БекзодОлимов-я4ц 2 года назад +2

      @@IlyaBodrovKrukowski окей, понял

  • @no4e
    @no4e 2 года назад +1

    Я уже хотел закрывать видео, но спасение пришло в 14:50 :)

  • @galeraonthebeat
    @galeraonthebeat Год назад

    Truffle vs HardHat ? И пару слов почему. Спасибо

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  Год назад +1

      Hardhat, он мне кажется удобнее и просто более популярным. Более того, теперь уже народ начал переходить на Foundry

  • @rpirozhkov
    @rpirozhkov 2 года назад +1

    Добрый день. Спасибо большой за урок. Есть вопрос. В функцию pay передаются 2 аргумента (строка и сумма), хотя в декларации функции указан 1 аргумент. Это такая особенность функции помеченной как payable, т.е. всегда надо передавать сумму?

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад +1

      Если функция payable, то она по умолчанию принимает деньги в поле value, да

  • @WithoutNickname666
    @WithoutNickname666 2 года назад +7

    Спасибо за урок! К сожалению, уровень сложности резко вырос и если до этого занятия было понятно 80-90% материала, то здесь уже не более 20-30%. Было бы неплохо останавливаться более подробно на: 1) Той вещи, о которой мы говорим сейчас. Например "Эта программа нужна для тестов, ставите ее. А еще вот эта нужна, а еще вот эта. А теперь пишем команду". Из-за обилия новых терминов, программ, синтаксиса - просто теряешься. И второе это сам синтаксис, например на 12:00 мы стали неожиданно писать на JS (Если я правильно понял). Но далеко не все писали на JS или вообще имели бекграунд программирования.. Если уроки будут более подробными и уровень сложности будет нарастать плавно, а не скачками, то 90% обучающихся дойдут до конца :) Даже если посмотреть на кол-во просмотров, то от урока к уроку чуть ли не половина смотрящих отваливается )

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад +3

      Это верно. Но надо понимать простую вещь: у меня просто нет возможности делать такое количество уроков и объяснять основы того же JS - это остаётся на откуп зрителю. В этой серии мне хотелось бы сфокусироваться на ethereum, а уж на чём будут писаться тесты - это дело другое, решения есть и другие, кстати говоря. Да писать-то их не обязательно, для понимания Solidity этого не требуется и к этому вопросу можно вернуться позже, в принципе

    • @ГалинаИноземцева-ф9я
      @ГалинаИноземцева-ф9я 2 года назад +4

      @@IlyaBodrovKrukowski Все верно, идти в блокчейн разработку без базовых знаний разработки это как пытаться учиться плавать без умения ходить)

    • @SerKuzmichArt
      @SerKuzmichArt 2 года назад

      @@ГалинаИноземцева-ф9я сравнение не вполне подходящее :)

    • @SerKuzmichArt
      @SerKuzmichArt 2 года назад +5

      Надо понимать, что Solidity - язык специализированный. Ну а какие проблемы с JS? Документирована вдоль и поперек, материалов по ней на любой уровень подготовки масса. Ну и особо сложной ее не назвать :) За неделю - две, на мой взгляд, любой более-менее разберется.
      Тут человек выложил солюшен с редко кем разбираемой темой, за что ему низкий поклон. Прочитаете по JS & Solidity доки и разберетесь что и зачем он написал. От такого упражнения только польза. Когда лет 25 тому назад моя старшая дочь спросила меня: «Что в первую очередь должен уметь программист?», она меня здорово озадачила. А потом я, когда понял, озадачил ее - «Уметь читать». И с тех пор ничего не поменялось :) Уметь читать - по прежнему главный навык программиста. Читать доки и читать то, что наваяли коллеги. Причем, нередко читать творчество коллег приходится больше, чем писать что-то самому. Так что, если хотите заниматься сим делом, привыкайте читать, читать и врубаться в прочитанное.

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад

      @@SerKuzmichArt Всё так, хорошо сказано

  • @АдаСимонова-ж5щ
    @АдаСимонова-ж5щ 2 года назад +1

    Спасибо за отличный урок. А есть ли способ замерять время на работу одного теста?

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад

      С этим есть некая сложность. Можно запускать тесты с ключом --slow но он тогда будет писать время для тестов, которые сам считает "медленными". Но предлагается вот такое решение stackoverflow.com/questions/39259620/how-to-configure-mocha-in-html-to-print-execution-time-of-each-test

    • @АдаСимонова-ж5щ
      @АдаСимонова-ж5щ 2 года назад +1

      @@IlyaBodrovKrukowski В видео говорилось, что для развертывания используется локальный блокчейн Hardhat. Как можно изменить используемый блокчейн?

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад

      @@АдаСимонова-ж5щ Опцией --network Там можно прописать любое значение, настроенное ранее hardhat.org/tutorial/deploying-to-a-live-network.html

  • @mavro6630
    @mavro6630 2 года назад +1

    Почему ве используете именно Ethers, а не web3?

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад +1

      Более современное решение, скажем так. Мне нравится больше, чем web3. Но в целом можно и то, и то использовать

  • @denissavenko8579
    @denissavenko8579 Год назад

    Пожалуйста, добавьте в видео информацию о том, что для получения возвращаемого значения функции в рамках теста необходим модификатор view-в противном же случае будет возвращена транзакция. Я на этом ОЧЕНЬ больно споткнулся

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  Год назад

      Да про это в общем-то говорилось уже ранее

  • @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. Попробуйте посрашивать в нашем чате, обычно народ помогает

  • @pphotic
    @pphotic 9 месяцев назад +1

    hardhat может компилировать один конкретный контракт? Можем мы задать путь по нужного файла?

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  9 месяцев назад

      По умолчанию нет, тк compile работает со всем проектом сразу. Разве что писать какой-то свой таск, но я, честно говоря, именно такое не пробовал

    • @pphotic
      @pphotic 9 месяцев назад

      @@IlyaBodrovKrukowski Спасибо.
      Если использовать ide remix - то там можно конкретно один контракт деплоить.

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  9 месяцев назад

      @@pphotic подождите, но деплоить != компилировать Деплой в HH, конечно, происходит не всех контрактов сразу, а только тех, что указаны в скриптах или тестах. А вот компиляция - всех сразу, но в общем это обычно не проблема

  • @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)

  • @kepamuk1
    @kepamuk1 2 года назад +1

    какой классный контент, все с нуля, мой любимик traversy media он тоже с нуля все делает, но по солидити к сожалению нету у него ((( так что этот курс просто находка, дружище я еще не посмотрел все полностью не знаю что там будет, но я тебе советую сделать полноценный курс, с фронтом бэком и этими контрактами что бы люди видели конченый результат продукта который нужен на реальной работе

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад +1

      Это бесплатная версия. Куда более объёмную версию можно найти на сайте MCS. Но и фронт-энд здесь тоже есть, в последних уроках (Next.js)

    • @Palianycia
      @Palianycia Год назад

      @@IlyaBodrovKrukowski что это за сайт MCS?

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  Год назад +2

      @@Palianycia это школа программирования, где я работаю

  • @killerqueen9178
    @killerqueen9178 2 года назад

    какая у тебя программа для cmd?

  • @ЗапахПопочки
    @ЗапахПопочки 7 месяцев назад

    привет, можно ли все это добро развернуть в docker?

  • @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, там отдельная опция

  • @nadiamacz4748
    @nadiamacz4748 2 года назад +1

    До этого всё-всё было понятно, тут ничего вообще не понятно. Что посоветуете почитать, что бы разобраться, что вы писали в коде?)))

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад

      Ну, тут просто нужно JS знать, если честно. Ну, можно ещё примеры прямо на сайте Chai посмотреть, там есть разные сценарии и показано, как тестировать

    • @arsen1usRS
      @arsen1usRS 2 года назад

      @@IlyaBodrovKrukowski можно ли научится писать смарт-контракты не зная JS?

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад

      @@arsen1usRS Да. Тестировать - маловероятно

  • @retro777
    @retro777 Год назад

    ничего не получается.Как проверить установились ли нужные библиотеки ethers,web,chay,mocha во время установки hardhat ?

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  Год назад

      Ну, если тесты проходят, то установилось. На самом деле, теперь там достаточно поставить только hardhat-toolbox, он в себя всё нужное включает. Когда вы сделали проект HH, он должен предложить сам правильную команду для установки. Если не получается, напишите в наш чат

  • @rucat284
    @rucat284 Год назад

    есть ли такие же библиотеки, но под python?

  • @Receive_
    @Receive_ 2 года назад

    Зачем в 31 строке - .to.changeEtherBalances([accaunt2, payments], [-sum, sum]) точка с запятой? Будут уроки по брауни?

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад +1

      Точка с запятой? Не знаю, может затесалась случайно, не помню уже. По брауни - может быть

    • @Receive_
      @Receive_ 2 года назад

      @@IlyaBodrovKrukowski Спасибо за ответ. Не могу получить информацию по второму платежу. Создаю третий аккаунт, шлю wei с него на контракт, средства до контракта доходят и баланс контракта становится равным 200, но данные по платежу получить не могу. Запрашиваю по аналогии - const newPayment2 = await payments.getPayment(accaunt3.address, 1). В консоли при запросе логов получаю нули и пустые строки. В чем беда?

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад +1

      @@Receive_ Так сложно сказать, лучше в чате спросить и скинуть сразу кусок кода

  • @Иван-ч7т8ю
    @Иван-ч7т8ю 2 года назад +2

    Если у кого-то будет ошибка invalid chai property: changeetherbalances в третьем тесте для await expect(tx).to.changeEtherBalances([acc2, payments], [-100, 100]); просто напишите npm outdate и обновите версии библиотек в package.json, затем npm install и тест отработает :)

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад

      Да, такое может быть, если старые версии стоят

  • @КириллКузнецов-е9о
    @КириллКузнецов-е9о 2 года назад +1

    Правильно ли я понимаю, что команды `npm init` и `npm install --save-dev hardhat` нужно вводить при создании каждого конейнера так же как и `npx hardhat`?

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад

      Я думаю, что вам стоит почитать подробнее про проекты npm, чтобы закрепить изученное - это несложно, но довольно важно. Но в целом да - каждый новый проект подразумевает запуск npm init. Потом туда забрасываются нужные библиотеки через npm install. В одном проекте может быть множество контрактов и тестов

    • @КириллКузнецов-е9о
      @КириллКузнецов-е9о 2 года назад

      @@IlyaBodrovKrukowski Хорошо. Спасибо

    • @КириллКузнецов-е9о
      @КириллКузнецов-е9о 2 года назад +1

      @@IlyaBodrovKrukowski Просто страно видеть, что для каждого проекта мне нужно отдельно подкачивать все библиотеки, которые нужны в проекте через npm install

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад

      @@КириллКузнецов-е9о Это так работает абсолютно для любого проекта npm, а также для немалого количества проектов на других языках: хотя бы Ruby или Elixir. Каждый проект - вещь в себе, которая не зависит от глобально установленных библиотек (в идеале). Мы даём проекту имя, ставим нужные зависимости и делаем там, что хотим. В другом проекте могут быть совершенно другие зависимости с другими версиями и они никак не конфликтуют

    • @КириллКузнецов-е9о
      @КириллКузнецов-е9о 2 года назад +1

      @@IlyaBodrovKrukowski Хорошо, буду знать) Спасибо

  • @ОстапБобрис-г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

  • @kizik85
    @kizik85 2 года назад +1

    Илья, спасибо за урок! Подскажите, какую операционную систему Вы используете? У меня Windows. Думаю Ubuntu поставить для программирования. Выполнял команды как в видео, возникли ошибки, не помню какие. Решил попробовать повторно, всё заработало. Вы говорили в видео что могут быть проблемы с установкой...

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад

      Windows 10. Но за мной лучше не повторять в этом плане, просто я знаю эту ОС очень хорошо - раньше по ней вёл занятия. А вообще nix-системы поудобнее будут. Проблемы на винде могут быть с node-gyp, это да. Там если не иметь опыта, то можно конкретно застрять, но, боюсь, других вариантов тут нет просто

    • @ГалинаИноземцева-ф9я
      @ГалинаИноземцева-ф9я 2 года назад

      можно на win использовать подсистему wsl, почти убунта только внутри винды, а так да, убунта самая удобная

  • @elsancho4356
    @elsancho4356 2 года назад

    Доброго времени суток, на протяжение недели пытаюсь установить hardhat но всё безуспешно, можно как-то подробнее сделать видео о том, как с ним работать?

    • @elsancho4356
      @elsancho4356 2 года назад

      Как запустить его и смарт контракты в нём, просто не в ремих, нигде ничего не появилось

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад

      @@elsancho4356 Ну там вроде всё просто должно быть. Если проблемы какие-то, можно в наш чат написать (ссылка в описании). Просто я даже не знаю, что показывать в видео - он ведь одной командой ставится

  • @Palianycia
    @Palianycia Год назад

    Когда запсутил тест то выскочила ошибка:"TypeError: payments.deployed is not a function"

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  Год назад +1

      А вы ссылку в закрепе посмотрите ruclips.net/video/GD6fz56-cEQ/видео.html

  • @BELPER-f5z
    @BELPER-f5z 2 года назад +1

    Спасибо за полезные видео! Что ты думаешь по поводу изучения Rust?

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад +1

      Я думаю, что это классика, это знать нужно. Вообще-то я очень надеюсь, что рано или поздно сделаю уроки по этой теме, пока просто руки не доходят. Серьёзно, если есть возможность - учите Rust

    • @Nevybralnick
      @Nevybralnick 2 года назад

      @@IlyaBodrovKrukowski Он имеет отношение к работе со смарт-контрактами?

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад +1

      @@Nevybralnick Да, если вы хотите разрабатывать для Solana

    • @Nevybralnick
      @Nevybralnick 2 года назад

      @@IlyaBodrovKrukowski а востребованней сейчас разработчики на эфире?

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад +1

      @@Nevybralnick Да, хотя во многих случаях требуется какой-никакой опыт, скажем так. Но с уровнем миддл найти работу не просто, а очень просто

  • @WithoutNickname666
    @WithoutNickname666 2 года назад

    А что значит "Корректный адрес смарт контракта"? Мне не понятно как он может быть не корректным..

  • @игорьговтвян-я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 года назад +1

      Вы в итоге разобрались с ошибкой? у меня сейчас такая же, а решений всё ещё нигде нет :(

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад

      @@vvv35724 Таких ошибок быть не должно. Можно поспрашивать в чате нашем, только исходный код потребуется

  • @bbz9002
    @bbz9002 Год назад

    Если у кого-то возникает ошибка на await ethers.getSigners();
    - Cannot read properties of undefined (reading 'JsonRpcProvider')
    Попробуйте использовать "ethers": "5.7.2",

  • @littleluckyboy
    @littleluckyboy 2 года назад +1

    Вафли зефир моча чай)) лол

  • @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 года назад +1

      Там 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
      Если вставить число меньше, то выдается старая ошибка, мол газа не хватило..

  • @mrin0
    @mrin0 Год назад +1

    !

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  Год назад +1

      Обратите внимание, что сегодня выйдет обновлённый урок про тесты

  • @игорьговтвян-я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 года назад +1

      @@IlyaBodrovKrukowski Честно сказать не знаю, какой из методов помог, но проблема решилась. Благодарю за ваш быстрый ответ и спасибо за эти видео)

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад

      @@игорьговтвян-я5ж Отлично

  • @geryax
    @geryax Год назад

    так, на 5 уроке уже тяжко..

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  Год назад +1

      Пока тесты можно пропустить, в принципе

  • @denisovilya1888
    @denisovilya1888 2 года назад +2

    Классные уроки. Но есть пара вещей, которые режут слух. Это "Яваскрипт" Х-D, и то, что await для того, что выполняется не мгновенно. Правильно будет говорить асинхронно, это не совсем о времени выполнения

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад +4

      А что плохого в слове "Яваскрипт"? Этот язык был назван по образу Java (там долгая история, но в целом это было сделано с маркетинговыми целями), который, в свою очередь, назван по сорту кофе coffeefan.info/kofe-java-arabika.html Что касается await - нам нужно в данном случае ждать, пока пройдёт транзакция. Иначе там будет возвращён promise и мы не сможем проверить корректность выполнение. Короче, вы меня простите, я несколько на взводе из-за происходящих сейчас событий, которые частично коснулись и меня, но в общем и целом это придирки.

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад +3

      Я согласен, что дело в общем и целом не во времени выполнения, но чтобы зрителю было понятнее, я говорю, что обработка транзакции делается довольно долго. И да, нужно её дождаться. Время выполнения важно с той точки зрения, что если бы всё выполнялось мгновенно, то нам вообще был бы не нужен никакой promise. А так все эти отправки функций всегда возвращают promise именно из-за длительности этой операции. В общем, спасибо за комментарий, это в любом случае полезно

  • @maksym8808
    @maksym8808 2 года назад

    зачем политику приплетать? на Донбасе с 2014г. военные действия, все молчали, что началось то? а за уроки спасибо!

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад

      Я не буду отвечать на этот вопрос. Кто такие "все" - я не знаю, но обо мне вы не знаете ничего, включая и то, молчал я или нет. Давайте не будем развивать эту тему.

    • @maksym8808
      @maksym8808 2 года назад

      @@IlyaBodrovKrukowski извините если задел чем то, но я в общем

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад

      @@maksym8808 Ничего, всё ок

  • @Pixell77
    @Pixell77 2 года назад +1

    Здравствуйте!
    Я впервые написал тесты для своего контракта благодаря вам, спасибо большое!
    Сейчас я пишу таски через web3.js для взаимодействия с контрактом через hardhat, не могу понять как с этой библиотекой работать.
    У меня вопрос: Если писать таски с помощью того же ethers, то перед каждым выполнением таска нужно каждый раз деплоить контракт как в тестах (beforeEach)?
    И в принципе будут ли большие отличия tasks.js от tests.js если оба просто вызывают функции из контракта, только второй сравнивает результат с ожидаемым?

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад +1

      Ethers.js мне кажется получше, чем web3. Деплой делать нужно вообще один раз, если это не тесты. Это просто в тестах нам всегда нужен свежий контракт, а в реальном блокчейне - конечно, нет. 1 раз развернули контракт и с ним работаем

  • @GennadiiKotov
    @GennadiiKotov 2 года назад +1

    Что за метод сurrentBalance? В моем случае у deployed контракта нет такого метода и баланс контракта узнаю через provider.getBalance(contract.address). И упоминаний метода currentBalance нигде не вижу в документациях.

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад +1

      А мы же добавили эту функцию в контракт github.com/bodrovis-learning/Solidity-YT-Series/commit/e03c969299449ae6cbc1824f40dfa07f2f8d7de3#diff-7cff68d828791d88522eb91f7751fe53e4a0cff32859ef5a7a166a7dabe1d360R20 Конечно, изначально метода такого нет, но благодаря функции можно вызывать без пролем

    • @GennadiiKotov
      @GennadiiKotov 2 года назад +1

      @@IlyaBodrovKrukowski действительно, забыл про это. Благодарю.

  • @andreymarkich1532
    @andreymarkich1532 Год назад +1

    Здравствуйте!
    Выдает эту ошибку, не получается решить ее
    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 Год назад +1

      @@IlyaBodrovKrukowski Спасибо вам большое за очень быстрый ответ!!!

    • @andreymarkich1532
      @andreymarkich1532 Год назад

      @@IlyaBodrovKrukowski Я искренне прошу прощения, за вопрос
      Возможно это покажется наглым, но у уже почти восемь часов пытаюсь решить проблему в коде из 5-го видео, в чатике ребята не смогли помочь, использовал чат GPT, но и он не смог мне помочь с ошибкой этой
      Если у вас получится уделить мне некоторое время, глянуть мой код и помочь с данной ошибкой, я буду вам очень благодарен
      Я очень хочу дальше изучать курс, но сильно застопорился на этой ошибке

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  Год назад

      @@andreymarkich1532 Хорошо, в описании канала есть почта, пришлите мне весь проект и шаги, чтобы эту ошибку воспроизвести. Постараюсь глянуть

    • @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
      @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 года назад +2

      Поставьте let а не const во всех случаях

    • @renichigava4183
      @renichigava4183 2 года назад

      @@IlyaBodrovKrukowski я дописал помимо трех let "const Payments" только после этого заработало, но при тесте чтоб узнать адрес кошелька он не выводится как быть в этом случае
      Payments
      √ should be deployed
      1 passing (662ms)
      адрес не вышел

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  2 года назад +2

      @@renichigava4183 А вы точно до конца видео досмотрели и код как в финальной версии? Я там просто посреди видео как раз кое-что исправил ещё

    • @renichigava4183
      @renichigava4183 2 года назад +1

      @@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 года назад +2

      @@renichigava4183 А вы waffle точно подключили? Или может версии старые? Тк это должно работать 100%, я это показывал уже на 2 стримах и вот в видео

  • @aiv2145
    @aiv2145 11 месяцев назад +1

    Ошибка в строке:
    expect(payments.address).to.be.properAddress
    Текст ошибки:
    AssertionError: Expected "undefined" to be a proper address
    Решение:
    исправить строку на:
    expect(payments.runner.address).to.be.properAddress

    • @IlyaBodrovKrukowski
      @IlyaBodrovKrukowski  11 месяцев назад

      Обратите внимание, что этот урок устарел, обновлённый вот тут ruclips.net/video/GD6fz56-cEQ/видео.html