Solidity | Наследования
Сегодня пойдет речь он наследовании смарт-контрактов в solidity. Постараюсь рассказать об это максимально простым языком для всех тех, кто вообще не встречался с наследованиями.
Для того чтоб наследовать один смарт контракт от другого нужно использовать слово is.
В этом примере есть 2 смарт-контракта В первом мы просто устанавливаем значение переменной number = 10. Потом мы создаем второй контракт в котором мы выводим значение переменно через функцию chekNumb().
Давайте посмотрим что получилось:
Деплоим сначала контракт demo, потом контракт demo1. Вызываем функцию в demo1 и видим, что она вернула нам число 10, которое мы задали в контракте demo.
Так же можно вызывать функции у накладываемого контракта.
У нас есть функция increment в контракте demo. Во втором контракте мы вызываем функцию checkNumb, в которой мы вызываем уже increment. Давайте посмотрим что получилось.
Как видно после деполя у нас есть number = 10 в demo, после я вызвал checkNumb в demo1 и у нас изменилось значение переменной в number.
Важно понимать что мы меняем значение nubmer в demo1, а в demo оно не менялось
Давайте рассмотрим последний пример:
Давайте представим, что у нас есть игра в которой нужно дать ответ на вопрос. Если даешь правильный ответ то становишься холдером некого проекта.
У нас есть первый контракт, где находятся 2 функции. Одна добавляет холдера addHolder().Просто в mapping адресов присваивавшем 1 тому кто ее вызвал. Вторая создает фразу createFrase(). Просто присваиваем локальную переменную _frase для frase. Во втором контракте мы создаем фразу в _createFrase(), вызывая функцию createFrase() из первого контракта, проверяем холдера в getHolder(), обращаясь к mapping. В последней функции мы проверяем ответ человека в toHolder(). Мы хешируем нашу фразу и фразу, которую создали, потом срафниваем их хеш(это один из самых простых способов сравнить строки в solidity по моему мнению).
После деполя смотрим что у нас есть. В первом смарт-контракте нет ни одной функции, потому что мы их пометили как intrnal. Во втором же контракте мы видим наши функции для создания фразы, ответа и проверка на холдера.
В этом примере я создал фразу Hello world, после чего дал правильный ответ в toHolder() и стал холедром, так как getHolders() вернула один.
Ну это все что я хотел рассказать сегодня. Да не много и поверхностно, но щас мало времени просто сложные статьи писать. Дальше больше. Всем спасибо.
tg: мой телеграмчик)