Если у вас ЧТО-ТО НЕ РАБОТАЕТ, то FAQ ПО КУРСУ ЛЕЖИТ ВОТ ТУТ bodrovis.tech/en/categories/solidityethereum/posts/faq-po-kursu-solidity Не исключено, что ваша проблема там уже описана.
Талантливый преподаватель...что тут скажешь. Особенно хорошо заходит написание каких-то произвольных контрактов, с пояснениями что делает какая строчка кода, и последующие тесты к ним. Прям вкатываешься. Жаль что видео стали редко выходить...
Благодарю за классный урок, Илья. Очень понравилось как изложили материал! Я так понимаю, что на данный момент Hardhat можно поженить только с VSCode, но не с WebStorm?
До 5го урока было все очень просто, а вот дальше я прям застрял, и не понимаю как правильно пользоваться курсом. Дело в том, что тесты на JS, но в обновленном 5м уроке рекомендуется сразу использовать TS. А как пользоваться уроками после 5го? Например в 7м уроке я пытаюсь глядя на логику кода тестов в видео, тестов которые на JS сделать то же самое на TS, и у меня с этим огромные проблемы. Потому что мне бы сейчас посмотреть пачку рабочих примеров на TS, но этого нету. Возвращаться и писать тесты на JS ? Ну как то это странно. Может надо вообще забить на тесты до уроков по фаундри и уже осваивать тесты сразу на солидити. Но вообще то хотелось бы и тесты освоить также в процессе.
Можно не писать тесты просто, либо использовать обычный JS. К сожалению, у меня нет ресурсов, чтобы делать руководства по JS/TS и тем более перезаписывать все уроки для нового hh toolbox и сразу с использованием typechain. Среда новая, всё быстро меняется. Поэтому, кстати, и книг особо нет по теме - пока напишешь, придётся уже переписывать
Здравствуйте! Подскажите, пожалуйста, нам нужно прописывать команду npm install --save-dev hardhat каждый раз, когда мы создаем новый проект? Или эту команду нужно прописать только один раз при настройке и установке всего? Спасибо огромное вам за труд!
Только один раз. Но вообще варианта два - либо создавать руками package.json и устанавливать HH, либо сделать npm install -g hardhat и потом просто делать npx hardhat init для инициализации проекта, тоже только 1 раз. Второй вариант попроще, я думаю
Здравствуйте, Илья! У меня возникла ошибка в первом тесте ( тайм код 25:12). Ошибка - import{loadFixture, ethers, expect} from "./setup.js"; SyntaxError: Cannot use import statement outside a module. Как можно исправить ? Заранее спасибо. Очень ценю ваш труд
Если у вас файлы JS, то тогда вы не можете использовать import по умолчанию, нужно задействовать require (про него можно погуглить). Но в целом там всё аналогично будет, просто подключение через require
@@IlyaBodrovKrukowski аналогичная проблема, в комментатора выше видимо опечатка в расширении и вместо .ts поставлено .js в файлу setup.ts, по проблему это не решает. В стеке ошибки ссылается на отсутствие файла (либо невозможности его подключения SyntaxError: Cannot use import statement outside a module \web3 ode_modules\ts-node\src\index.ts:1608:43) at D:\web3 ode_modules\mocha\lib\mocha.js:414:36 - где web3 название моего проекта как быть с данной проблемой? уже отдельно устанавливаю \mocha и перетыкал что можно, не работает
@@Ontonbaton Напишите нам в чат, попробуем посмотреть. Но если был проект JS изначально, то там TS не может быть. Ну, точнее, его можно портировать, но там много настроек менять надо. Просто используйте require, а не import, это самое простое. Ну, либо нужно сделать новый проект, выбрать тип TS и уже там работать
Кто нибудь знает почему await с некоторыми значениями берется в скобочки? По типу (await payments).waitForDeployment(); Без скобочек выдает ошибку Свойство "waitForDeployment" не существует в типе "Promise".ts(2339) Payments.test.ts(8, 18): Возможно, пропущено "await"?
если у кого-то будет ошибка после вызова команды npm install --save-dev @nomicfoundation/hardhat-toolbox@^4.0.0, то мне помогла команда npm install ethers@^6.1.0 (либо другая версия, которая была в трейсе ошибки)
Ну, добро пожаловать в мир разработки на Windows (если, конечно, речь не идёт о чём-то типа asp net). Как сказано в видео, это не обязательно, но там могут быть проблемы - к примеру, не подгружаются matchers и приходится их руками импортировать. Могут быть другие сложности, так что варианта два - готовиться к этим сложностям, либо использовать wsl. Я выбираю обычно первый вариант, но в ряде случаев wsl всё равно нужен. Но для того, чтобы "просто писать контракты" wsl необязателен, можно не морочиться
@@BBotinok Хм. Честно говоря, неясно. Возможно, проделки антивируса? Вообще бывает такое, что на винде дольше работают простые вещи, даже автотесты иногда, но точно понять причину так сложно - о подобных проблемах никто не сообщал, хотя вот даже у нас в guidedao есть студенты на винде, но у всех полёт нормальный
@@IlyaBodrovKrukowski всё оказалось просто. предыдущий тест Lock.ts не был удалён. и кстати, вдогонку вопрос. не пойму. в контракте метод pay имеет один параметр - сообщение. понятно, что в ремиксе сумма вводится и как бы параметра два. но в typechain-types у метода тоже один параметр. как так получается, что в тесте передаётся два метода?
@@olegrolik первый параметр - это для функции solidity, а второй аргумент - это для поля value, там объект. Ну в типах он просто это учитывает. То есть если в sol функция имеет 1 параметр, не значит, что в ts та же функция только 1 параметр принимает
@@IlyaBodrovKrukowski спасибо за ответ. всё равно не понимаю. в typechain-types/Payments.ts наверное должно быть указано, что кроме параметра message может быть второй параметр? кстати, почему, я в качестве второго параметра не могу передать {sender: "some sender" }, а {value:100} могу? кроме value ещё могу передать gasPrice, gasLimit (все в одном джейсоне). таким образом метод выглядит так - .pay(msg, {gasPrice:0, value:100, gasLimit:0})
Если у вас ЧТО-ТО НЕ РАБОТАЕТ, то FAQ ПО КУРСУ ЛЕЖИТ ВОТ ТУТ bodrovis.tech/en/categories/solidityethereum/posts/faq-po-kursu-solidity Не исключено, что ваша проблема там уже описана.
Спасибо, отличный урок!
на здоровье
Ты светоч крипто обучений! Спасибо ❤
Талантливый преподаватель...что тут скажешь. Особенно хорошо заходит написание каких-то произвольных контрактов, с пояснениями что делает какая строчка кода, и последующие тесты к ним. Прям вкатываешься. Жаль что видео стали редко выходить...
Ну, видео-то выходят, просто тем много, не хочется останавливаться на одном
Респектосик!
Очень, круто! спасибо!!
Dzieki !
!13:19 Закладка
Благодарю за классный урок, Илья. Очень понравилось как изложили материал! Я так понимаю, что на данный момент Hardhat можно поженить только с VSCode, но не с WebStorm?
С webstorm, честно говоря, не пробовал, но если там плагинов таких нет, то, вероятно, пока только vs code
До 5го урока было все очень просто, а вот дальше я прям застрял, и не понимаю как правильно пользоваться курсом.
Дело в том, что тесты на JS, но в обновленном 5м уроке рекомендуется сразу использовать TS.
А как пользоваться уроками после 5го?
Например в 7м уроке я пытаюсь глядя на логику кода тестов в видео, тестов которые на JS сделать то же самое на TS, и у меня с этим огромные проблемы. Потому что мне бы сейчас посмотреть пачку рабочих примеров на TS, но этого нету.
Возвращаться и писать тесты на JS ? Ну как то это странно.
Может надо вообще забить на тесты до уроков по фаундри и уже осваивать тесты сразу на солидити.
Но вообще то хотелось бы и тесты освоить также в процессе.
Можно не писать тесты просто, либо использовать обычный JS. К сожалению, у меня нет ресурсов, чтобы делать руководства по JS/TS и тем более перезаписывать все уроки для нового hh toolbox и сразу с использованием typechain. Среда новая, всё быстро меняется. Поэтому, кстати, и книг особо нет по теме - пока напишешь, придётся уже переписывать
Здравствуйте! Подскажите, пожалуйста, нам нужно прописывать команду npm install --save-dev hardhat каждый раз, когда мы создаем новый проект? Или эту команду нужно прописать только один раз при настройке и установке всего?
Спасибо огромное вам за труд!
Только один раз. Но вообще варианта два - либо создавать руками package.json и устанавливать HH, либо сделать npm install -g hardhat и потом просто делать npx hardhat init для инициализации проекта, тоже только 1 раз. Второй вариант попроще, я думаю
Подскажите, почему при компеляции контракта в папке artifarts не появляется файлов ?
Всё должно быть. Попробуйте написать нам в чат, разберёмся
Вы приподаете в GUIDE DAO ?
Да, уже долгое время
Здравствуйте, Илья! У меня возникла ошибка в первом тесте ( тайм код 25:12). Ошибка - import{loadFixture, ethers, expect} from "./setup.js"; SyntaxError: Cannot use import statement outside a module. Как можно исправить ? Заранее спасибо. Очень ценю ваш труд
Если у вас файлы JS, то тогда вы не можете использовать import по умолчанию, нужно задействовать require (про него можно погуглить). Но в целом там всё аналогично будет, просто подключение через require
@@IlyaBodrovKrukowski аналогичная проблема, в комментатора выше видимо опечатка в расширении и вместо .ts поставлено .js в файлу setup.ts, по проблему это не решает.
В стеке ошибки ссылается на отсутствие файла (либо невозможности его подключения
SyntaxError: Cannot use import statement outside a module
\web3
ode_modules\ts-node\src\index.ts:1608:43)
at D:\web3
ode_modules\mocha\lib\mocha.js:414:36
- где web3 название моего проекта
как быть с данной проблемой? уже отдельно устанавливаю \mocha и перетыкал что можно, не работает
@@Ontonbaton Напишите нам в чат, попробуем посмотреть. Но если был проект JS изначально, то там TS не может быть. Ну, точнее, его можно портировать, но там много настроек менять надо. Просто используйте require, а не import, это самое простое. Ну, либо нужно сделать новый проект, выбрать тип TS и уже там работать
Кто нибудь знает почему await с некоторыми значениями берется в скобочки? По типу (await payments).waitForDeployment(); Без скобочек выдает ошибку Свойство "waitForDeployment" не существует в типе "Promise".ts(2339) Payments.test.ts(8, 18): Возможно, пропущено "await"?
Звучит как что-то странное, честно говоря. Думаю, что-то не так где-то с типами, можно в нашем чате спросить
если у кого-то будет ошибка после вызова команды npm install --save-dev @nomicfoundation/hardhat-toolbox@^4.0.0, то мне помогла команда npm install ethers@^6.1.0
(либо другая версия, которая была в трейсе ошибки)
Обязательно ли устанавливать WSL 2 на винду и, если да, то зачем? Просто слышу об этом всем впервые, а заморачиваться не хочется.
Ну, добро пожаловать в мир разработки на Windows (если, конечно, речь не идёт о чём-то типа asp net). Как сказано в видео, это не обязательно, но там могут быть проблемы - к примеру, не подгружаются matchers и приходится их руками импортировать. Могут быть другие сложности, так что варианта два - готовиться к этим сложностям, либо использовать wsl. Я выбираю обычно первый вариант, но в ряде случаев wsl всё равно нужен. Но для того, чтобы "просто писать контракты" wsl необязателен, можно не морочиться
@@IlyaBodrovKrukowski Спасибо за ответ) А с чем может быть связано то, что у вас контракт деплоится две секунды, а у меня - 11?
@@BBotinok Хм. Честно говоря, неясно. Возможно, проделки антивируса? Вообще бывает такое, что на винде дольше работают простые вещи, даже автотесты иногда, но точно понять причину так сложно - о подобных проблемах никто не сообщал, хотя вот даже у нас в guidedao есть студенты на винде, но у всех полёт нормальный
@@IlyaBodrovKrukowski Оказалось, что что-то работает быстрее, что-то медленнее. Ладно, думаю на данном этапе это не так критично
@@BBotinok
у меня почему-то blockNumber = 5, а не 2
Может уже что-то делали в бч? Он сбрасывает номер блока каждый раз после перезапуска
@@IlyaBodrovKrukowski всё оказалось просто. предыдущий тест Lock.ts не был удалён. и кстати, вдогонку вопрос. не пойму. в контракте метод pay имеет один параметр - сообщение. понятно, что в ремиксе сумма вводится и как бы параметра два. но в typechain-types у метода тоже один параметр. как так получается, что в тесте передаётся два метода?
@@olegrolik первый параметр - это для функции solidity, а второй аргумент - это для поля value, там объект. Ну в типах он просто это учитывает. То есть если в sol функция имеет 1 параметр, не значит, что в ts та же функция только 1 параметр принимает
@@IlyaBodrovKrukowski спасибо за ответ. всё равно не понимаю. в typechain-types/Payments.ts наверное должно быть указано, что кроме параметра message может быть второй параметр? кстати, почему, я в качестве второго параметра не могу передать {sender: "some sender" }, а {value:100} могу? кроме value ещё могу передать gasPrice, gasLimit (все в одном джейсоне). таким образом метод выглядит так - .pay(msg, {gasPrice:0, value:100, gasLimit:0})
@@olegrolik а напишите нам лучше в чат, там проще
Илья, добрый день.
Подскажите пожалуйста, я сейчас устанавливаю ts, смогу ли я продолжить урок # 6 в этом плей листе?
Да, само собой
А где же обещанные автотесты???
Как где? А с 21-й минуты разве мы их не пишем?..