Solidity и смарт-контракты Ethereum, урок #6 | Функции, транзакции, pure, view, payable, fallback

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

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

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

    Друзья, должен отметить, что в некоторых случаях выходное значение для обычных функций (это которые через транзакции выполняются) получить всё-таки можно. В частности, если использовать низкоуровневый вызов - например, delegatecall. Думаю, про это будем ещё говорить отдельно.

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

      @WELL DOROGO Это значит, что её можно переопредилить в дочерних контрактах, но она сама ничего не переопределяет

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

      А почему функции, вызываемые через транзакции, не могут возвращать значения, но в обновленном 5 уроке функция pay возвращает msg.value?

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

      @@BBotinok возвращать они могут, но просто считать это возвращаемое значение - это отдельная проблема, суть в этом

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

      @@IlyaBodrovKrukowskiПонял, спасибо)

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

    Благодарю, Илья. Урок очень понравился, все доходчиво и лаконично изложено. Успехов в развитии канала)

  • @mihunt3r929
    @mihunt3r929 2 года назад +14

    Спасибо за уроки, смотрятся на одном дыхании. И ещё большое спасибо за Вашу позицию и поддержку мира

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

    Большое спасибо Вам, Учитель! Посылаю лучи добра из Киева ❤️

  • @АннаСидорова-я9м
    @АннаСидорова-я9м 2 года назад +6

    Благодарю Вас за Ваши уроки. Это первый курс в котором все четко,доступно. После просмотреных многих курсов анло-язычных такая каша в голове. Ваш курс действительно просто подарок. Твореского вдохновения Вам и успехов в любых начинаниях.

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

    6 урок был полезным👍

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

    Спасибо за ролик, и поддержку мира♥️

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

    спасибо за такой шикарный урок в котором вы рассказали про все эти темы, смотрю уроки по солидити на английском там каждую тему мусолят на 2 3 урока и по итогу никакой сути,спасибо еще раз огромное за ваш труд

  • @sashazar1
    @sashazar1 Год назад +3

    Спасибо за поддержку, она нам сейчас нужна.

  • @cypressmann
    @cypressmann 6 месяцев назад +2

    Привет всем! Спасибо за урок. Хочу подсказать, что плагин Hardhat Provide Более не является плагином, можно просто запустить npx hardhat node локальную сеть Hardhat, затем выбираем в Deploy&Run Transcations - Environment Dev - Hardhat Provider. И теперь можем работать с хардхет провайдером. Кстати, теперь еще и можно тесты генерить прям в Remix, в принципе получаются неплохо)

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

      Круто, спасибо! Да, этот урок уж давно записывался, там наверняка что-то поменялось

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

    Спасибо Вам Илья за вашу работу

  • @soldev.
    @soldev. 2 года назад +3

    Спасибо вам за уроки!

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

    отлично!
    спасибо за урок!

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

    Лучший ждём новые видео!

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

    Спасибо за то что вы делаете!

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

    спасибо большое за ваши уроки) я пока не начал их смотреть, но скоро начну)

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

    Спасибо за урок👍🔥

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

    Благодарю вас за поддержку

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

    попросили добавить оплату эфирами и вот только начало что-то складыватся в понимании какая будет реализация.Спасибо за ясность!

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

    Спасибо большое, ждем продолжения)

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

    я тебя люблю💌

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

    camelCase & PascalCase

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

    Спасибо за видео!
    Скажите пожалуйста, а можно ли не в remix-ide, а в vcode каким-то плагином подключиться к виртуальным машинам ethereum?
    А то ставить remix несколко страшно, компьютер говорит, что софт из непроверенных источников.

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

      Ну, используйте hardhat, там можно настроить коннект к любой сети через alchemy, к примеру

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

    лучшее обяснение!!! спс!!!

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

    thank you!

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

    Илья, здравствуйте. Подскажите пожалуйста, можно ли в Remix включить как-нибудь подсказки с выпадающим списком в процессе написания, как это реализовано в VSCode?

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

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

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

      @@IlyaBodrovKrukowski Хорошо, поищу) Спасибо!

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

    Для теста ф-ции receive с ремикса надо ввести суму в поле "value", и нажать (в самом низу) кнопку "Transact".

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

      Да, эту фичу я обнаружил уже после записи видео

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

      @@IlyaBodrovKrukowski спасибо за уроки

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

    Илья, добрый день! Как с Вами можно связаться?

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

      Добрый! На моём сайте есть все каналы связи, а сайт указан в описании к каждому видео. Ну, либо через наш чат Телеграм, ссылки тоже в описании

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

    В общем при создании смарт-контакта детишки используйте fallback и receive это повышает вероятность получить больше деняк)

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

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

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

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

    Очень доступное и понятное обьяснение. Круто! Из урока только вытекает вопрос: Почему мапинг не нуждается в дополнительных определениях типа view и return и при этом вызывается методом call()?

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

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

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

    Интересно, а если несколько функций будет с модификатором payable? Деньги автоматически отправятся на одну из них?

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

      receive только один может быть, их не может быть несколько. Если другая функция payable, то тогда её селектор нужно явно задавать

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

    Можно спросить, а где Вы учили всё это? И если можно, пожалуйста, пришлите ресурс

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

      Боюсь, что простого ответа нет. Нужно читать разные блоги, искать информацию, смотреть доки. Книг почти нет, либо они быстро устаревают.
      Но зато можно записаться на один из буткемпов MCS, в создании которых я принимал активное участие. Собрано большое кол-во информации по теме, очень много видео, плюс постоянные дополнительные занятия и стримы. В описании ролика есть ссылка и даже промо-код

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

      @@IlyaBodrovKrukowski Большое спасибо!)

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

    !

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

    👍🏻

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

    Не нашел Hardhat Provider plugin в разделе Plugin Manager в Remix!

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

      По-моему, он уже не нужен. Remix обновился просто

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

      @@IlyaBodrovKrukowski Выяснил, Hardhat Provider работает только с десктопной версией Remix.

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

      @@alexsoft999 аа, у вас онлайн версия? Тогда да, вариантов с ней нет особенно

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

    По fallback возник вопрос: в одном туториале встретил такой код для фолбэка: function() external payable{}, у вас же receive() external payable{} , Я правильно понимаю что оба варианта правильны, но ваш вариант более новый?

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

      Я думаю, вам стоит посмотреть урок по теме - про это было в плейлисте. В целом fallback - это перехват неизвестной функции в контракте, а receive - просто приём денег

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

      @@IlyaBodrovKrukowski пардон - проблемы с входом в эккаунт, пишу из под другого. Поясню свой вопрос: в вашем видео именно так и говорится - fallback() - перехват неизвестной функции, а receive() - прием платежа на адрес контракта без указания конкретной функции. У него же в туториале говорилось что fallback /*где fallback фигурирует не как fallback() а как термин*/ - это прием платежа без указания функции, который делается через function()external payable{} - т.е. без указания имени функции. Скажите пжл, используется ли указанный им синтаксис где-то или может быть он является устаревшей версией receive() ?

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

      @@satoshisumoto1945 А, ну да. Это старый синтаксис, теперь уже никто не пишет function()external payable{} и это вообще не сработает

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

    Еще такой вопрос: в одном туториале одного типа видел код где он постоянно использует contract (не abstract contract!) вместо interface. На мой взгляд это очень плохой код, что думаете по этому поводу?

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

      Нет, ну использовать контракт как интерфейс - это очень плохо

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

      @@IlyaBodrovKrukowski Я тоже так думаю, удивительно как тот парень (julian from eattheblocks) получил первую работу на смартконтракты с зарплатой более 100К баксов...

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

      @@satoshisumoto1945 Ну, этого я не знаю, но если он живёт в США, то там такая зарплата - это более-менее норма (во всяком случае, для опытных айтишников)

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

      @@IlyaBodrovKrukowski нет, он из европы(кажется француз), сейчас живет на тайване. разрешения на работу с штатовскими компаниями у него нет да и непонятно как бы он мог получить у них такую работу без разрешения на работу и сразу на такую зарплату, тем более что код он пишет плохой и в его туториалах как выяснилось благодаря вашим видео есть неправильные определения

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

    функция fallback() вызывается в том случае, если отностильено смарт контраккта была вызвана транзакция с неизвестным именем функции. а как это воспроизвести?

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

      при отправке транзакции запихнуть в поле data любую абракадабру. В remix можно попробовать в low-level interactions засунуть что-то типа 0x123456

    • @olegrolik
      @olegrolik 10 месяцев назад +1

      @@IlyaBodrovKrukowski Илья, огромное вам спасибо!

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

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

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

    Спасибо за вашу позицию по войне в Украине! Спасибо за уроки!