Приветствую! Выражаю благодарность за это полезное видео! Подскажите, пожалуйста, есть ли удобное расширение для работы с ether и со смарт контрактам и целом, где есть сниппеты, описания методов и тд ?
Ну, это стандартная история, что если в процессе произошла ошибка, мы просто выходим. Это специфика Node. Главная функция асинхронная, поэтому можно делать then-catch. Кроме того, нам вообще нужно в терминале дождаться, пока она отработает, а на это может уйти время
Добрый день. Огромное спасибо за полезные видео. Некоторые вещи под вашим углом зрения стали более понятны. Я разрабатываю ПО на Golang и мне очень интересна работа со смарт-контрактами на из Golang. Я разбираюсь с этим самостоятельно достаточно успешно. Но есть один вопрос, касательно работы с узлом блокчейна. Правильно ли я понял что js каждый раз выполняет подключение к узлу или есть возможность создать коннект единожды и использовать его в приложении? Какие на этот счёт лучшие практики для js?
Не очень понял вопроса. Ethers.js как раз и используется для этого. Он позволяет подрубиться к нужному блокчейну и там делать всё, что требуется. Ну, фронтэнд сам пишется на любом фреймворке типа React или Angular. Думаю, про это ещё будет стрим отдельно
25:12 я вообще потерял связь с реальностью как это работает, если в первом случае 19:19 мы явно принимаем отправителя и сумму перевода, то в этом мы получается кодируем адрес в uint отрезая первые 160 байт и передаем как аргумент в транзакции, при этом контракт получатель считает переданный адрес отправителем? Магия какая-то) Думаю слишком быстрое переключение между контрактами и выборе из адресов, это не позволяет как на первых уроках понять какой порядок манипуляций производиться, в любом случае на это уходит больше мозговой активности которую есть куда распределить, пересматривал пару раз эти участки. Еще использование слов типа "Перехватывание" при реализации атаки, не совсем корректным считаю, сбивает с толку, мы "инъекцию" проводим, или перезапись значения, значение этих слов содержит в себе понятие совсем противоположных процессов, по этому понять было сложно. А если будет сложно понять и без того не простые знания, мотивация у зрителей будет как в меме "Ну нах! изучать Solidity! буду проституткой!" = ) Процесс происходит следующим образом как я понял: 1) Через contract "Hack" отправляем закодированный адрес в uint отрезая первые 160 байт (вместо метки времени) toHack.delCallGetData(hakadress) 2) contract "MyContract" через delegatecall хочет записать метку времени в contract "AnotherContract" 3) Но так как порядок переменных ( "лей аут" ) установлен не верно, происходит запись переменной otherContract вместо at (просто потому при определении стоят не верно) 4) Далее еще раз выполняется из contract "Hack" - toHack.delCallGetData(0) что просто заполняет переменную at меткой времени 4) Ну и так как переменная otherContract теперь содержит адрес инициатора транзакции, а именно хакерского контракта contract "Hack" то все функции наследованы из contract "AnotherContract" мы просто переопределяем ее изменив внутреннюю логику на замену owner владельца контракта на своего : function getData(uint _timestamp) external payable { owner = msg.sender; } Я верно все понял?
Спасибо вам большое за этот контент! Очень доходчиво и информативно
Гуд, уже плейлист хороший получается
Ну, стараюсь :) Думаю, ещё будет по ethers одна тема точно, потом тесты
Снимаю перед вами шляпу, спасибо за материал!
Спасибо
Одолел, спасибо было интересно узнать как вызывать контракты.
Спасибо, видос! Очень хочется копи-пастнуть код контракта, с гиста например
Поищу, может быть, где-то остался
Приветствую! Выражаю благодарность за это полезное видео!
Подскажите, пожалуйста, есть ли удобное расширение для работы с ether и со смарт контрактам и целом, где есть сниппеты, описания методов и тд ?
Metamask - расширение для браузера. А про методы - ну, документацию читать, разве что
Подскажите пожалуйста, а для чего в у Вас при вызовах функции main идут блоки then и catch + process.exit
Ну, это стандартная история, что если в процессе произошла ошибка, мы просто выходим. Это специфика Node. Главная функция асинхронная, поэтому можно делать then-catch. Кроме того, нам вообще нужно в терминале дождаться, пока она отработает, а на это может уйти время
Добрый день. Огромное спасибо за полезные видео. Некоторые вещи под вашим углом зрения стали более понятны.
Я разрабатываю ПО на Golang и мне очень интересна работа со смарт-контрактами на из Golang. Я разбираюсь с этим самостоятельно достаточно успешно.
Но есть один вопрос, касательно работы с узлом блокчейна.
Правильно ли я понял что js каждый раз выполняет подключение к узлу или есть возможность создать коннект единожды и использовать его в приложении?
Какие на этот счёт лучшие практики для js?
Он каждый раз шлёт новую транзакцию просто, там особо других вариантов нет, по-моему
Вроде делаю все тоже но почему у меня в консоли все цифры в Hex формате и как это поменять чтобы как на видео было
toString()?
@@IlyaBodrovKrukowski нет когда выводится result у вас удобоваримые цифры а у меня gasPrice: BigNumber { _hex: '0x2dc334aa', _isBigNumber: true },
@@kib2805 Интересно. Можно попробовать hardhat обновить
можешь сказать, что нужно искать для того чтобы взаимодействовать с смарт контрактом и веб сайтом?
Не очень понял вопроса. Ethers.js как раз и используется для этого. Он позволяет подрубиться к нужному блокчейну и там делать всё, что требуется. Ну, фронтэнд сам пишется на любом фреймворке типа React или Angular. Думаю, про это ещё будет стрим отдельно
@@IlyaBodrovKrukowski тупонул
круть, продолжай пожалуйста
Буду стараться!
19:19 можно использовать для обфускации кода
25:12 я вообще потерял связь с реальностью как это работает, если в первом случае 19:19 мы явно принимаем отправителя и сумму перевода, то в этом мы получается кодируем адрес в uint отрезая первые 160 байт и передаем как аргумент в транзакции, при этом контракт получатель считает переданный адрес отправителем?
Магия какая-то)
Думаю слишком быстрое переключение между контрактами и выборе из адресов, это не позволяет как на первых уроках понять какой порядок манипуляций производиться, в любом случае на это уходит больше мозговой активности которую есть куда распределить, пересматривал пару раз эти участки.
Еще использование слов типа "Перехватывание" при реализации атаки, не совсем корректным считаю, сбивает с толку, мы "инъекцию" проводим, или перезапись значения, значение этих слов содержит в себе понятие совсем противоположных процессов, по этому понять было сложно.
А если будет сложно понять и без того не простые знания, мотивация у зрителей будет как в меме "Ну нах! изучать Solidity! буду проституткой!" = )
Процесс происходит следующим образом как я понял:
1) Через contract "Hack" отправляем закодированный адрес в uint отрезая первые 160 байт (вместо метки времени) toHack.delCallGetData(hakadress)
2) contract "MyContract" через delegatecall хочет записать метку времени в contract "AnotherContract"
3) Но так как порядок переменных ( "лей аут" ) установлен не верно, происходит запись переменной otherContract вместо at (просто потому при определении стоят не верно)
4) Далее еще раз выполняется из contract "Hack" - toHack.delCallGetData(0) что просто заполняет переменную at меткой времени
4) Ну и так как переменная otherContract теперь содержит адрес инициатора транзакции, а именно хакерского контракта contract "Hack" то все функции наследованы из contract "AnotherContract" мы просто переопределяем ее изменив внутреннюю логику на замену owner владельца контракта на своего :
function getData(uint _timestamp) external payable {
owner = msg.sender;
}
Я верно все понял?
слушай а что, это плохая идея делать смарт контракт на bep20 для ICO?
Не скажу точно
@@IlyaBodrovKrukowski ок, ещё когда планируешь снять видео как Смарт контракт работает с front?
@@yevheniimoskalenko1624 Стримы планирует школа, так что тут зависит от соглашений - в первом приближении, в следующем месяце, я думаю