{"id":14275,"url":"\/distributions\/14275\/click?bit=1&hash=bccbaeb320d3784aa2d1badbee38ca8d11406e8938daaca7e74be177682eb28b","title":"\u041d\u0430 \u0447\u0451\u043c \u0437\u0430\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0434\u0430\u0432\u0446\u044b \u0430\u0432\u0442\u043e?","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"f72066c6-8459-501b-aea6-770cd3ac60a6"}

Уроки по языку программирования Solidity. Урок #0

Всем привет)

Кратко расскажу о себе, мотивации и планах на будущие статьи. Ещё раз, привет всем, меня зовут Влад(во всех сетях выбрал в качестве никнейма Vigilante, очень уж нравится персонаж из сериала Миротворец). В программировании я довольно давно, если быть точным, то около 6 лет. В начале пути я занимался программированием на Python, C++, олимпиадным программированием, нейронными сетями. В 2021 году заинтересовался технологией блокчейн, Ethereum, смартконтрактами и и конечно же Solidity. Успел и поработать в данной сфере на позициях разработчика и аудитора. Сам же я верю в блокчейн и в то, что, данная технология и активные разработки связанные с ней помогут человечеству решить множество насущных проблем. Мне стало интересно каково это, чувствовать себя автором обучающих материалов + хочется набрать себе новых контактов из этой сферы, выстроить себе поток клиентов или предложений по работе.

В дальнейшем я собираюсь:

  • написать и другие статьи, темы будут связаны также с блокчейном, Solidity, аудированием смартконтрактов и ИИ
  • делать выжимки того, что я сам узнал интересного в той или иной теме
  • разборы аудиторских отчетов с bug bounty платформ
  • если дело со статьями хорошо пойдет, то заведу и ютуб канал
  • отклоняться от курса, так как программирование не единственный мой интерес, поэтому вполне возможно что подписавшись на данный блог вы будете получать и статьи и новости по играм, интересным сериалам и фильмам, коллекционированию коллекционных фигурок и бандлов (возможно я сделаю для этого отдельный канал, но пока думаю, что будет все в одном, среди программистов много гиков и игроманов, поэтому все таки думаю что им зайдет такой контент)
  • частично буду касаться ментального здоровья, так как я не понаслышке знаю насколько это важно
  • будут посты про выстраивание целей на год, и чего я успел или не успел добиться за год. Довольно мотивационный эффект приносят такие посты

Это первый урок по языку программирования Solidity.

Solidity — это объектно-ориентированный язык программирования смартконтрактов для блокчейна Ethereum. Что же такое смартконтракты? Смартконтракты, это выполняющийся при определенных условиях программный код. Чтобы было попроще, представьте что вам надо сделать программу которая платит человеку, за каждый солнечный день в этом месяце(задача довольно абстрактная, мало кому придëт идея платить за солнечные дни). Данная программа(каким либо способом) запрашивает данные о погоде каждый день, и если условие выполнилось то выплачивает из своего хранилища с криптовалютой условно 1 ETH(эфир) человеку. Тоесть это некая программа, которая автоматизированна, также как и обычная программа написанная на других языках. Но тогда в чëм разница спросите вы? Вы ведь спросите? Спросите же???). Отличия между традиционной программой и смартконтрактом будут следующие:

  • Смартконтракт будет исполняться на виртуальной машине Ethereum(EVM), что позволит получить все плюсы децентрализации и технологии блокчейн.
  • Чтобы вызывать функции смартконтракта нужно платить газ, который расчитывается в единицах Eth
  • В смартконтракте есть возможность коммуницировать с другими смартконтрактами, которые уже развернуты в сети. Допустим можно будет обратиться к токену USDT, либо к какой-либо децентрализованной бирже

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

Для написания программ нужна среда программирования, для Solidity очень популярной является Remix. В данной IDE можно написать смартконтракт и сразу же имитировать отправку в блокчейн, за счет чего можно удобно протестировать львиную долю функций прямо на месте (но не все, про другие инструменты разработки и тестирования для Solidity будем рассматривать после ознакомления с базовым синтаксисом языка).

Так что же нужно делать, когда попал в данную IDE? После перехода в неё, в верхнем левом углу будет файловый менеджер. Откройте его и у вам будут видны папки (contracts, scripts, tests). Откройте папку contracts и с помощью кнопки создания файла задайте имя вашему программному файлу. Я создал файл Lesson1. Расширение *.sol автоматически добавится, когда нажмёте Enter.

Также зайдите в раздел с компилятором в Remix. Там вы можете выбрать какую версию компилятора использовать при компиляции кода. Советую поставить галочку на пункт “Auto compile”, чтобы не компилировать код после вообще любого изменения, IDE будет сама это делать за нас.

Приступим к написанию первой программы, по традиции это будет Hello World. Открываем созданный нами ранее файл щелчком мыши, и перед нами откроется пустой документ.

Каждая программа на языке Solidity начинается с указания лицензии(какие можно писать лицензии и какая между ними разница будет рассмотрена как нибудь потом), по умолчанию можете ставить себе данную строчку:

// SPDX-License-Identifier: UNLICENSED

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

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

pragma solidity 0.8.21;

Далее с помощью ключевого слова contract даём название нашему будущему смартконтракту и создаем тело контракта с помощью фигурных скобок. Вот пример:

contract HelloWorld { }

После создания контракта остается дать ему функционал. Весь функционал контракта как раз пишется внутри фигурных скобок. Я покажу вам как создать первую переменную строкового типа, которая будет публичной. Есть различные модификаторы доступа к переменной, мы их рассмотрим уже совсем скоро, но пока создадим просто публичную переменную. Публичная переменная будет видна всем, и её каждый сможет запросить. Итак, переменная создается по данному шаблону:

<тип> <модификатор доступа> <имя переменной> = <значение переменной>;

Вот пример с нашей переменной:

string public greet = "Hello World!";

Тип нашей переменной будет string. Модификатор доступа будет public. Назову переменную greet и дам ей значение “Hello World!”.

В конечном итоге у вас должен получиться данный код:

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

Подписывайся, чтобы не пропустить новые статьи! Буду благодарен за уместную критику, либо предложения по улучшению контента))

DTF

Буду благодарен за любой донат;)

Bitcoin — bc1qs7xau39p784qvuutwjpn3nrps8uru59x3t5wk3

Ethereum, BSC, Polygon, Avalanche (USDT, USDC) — 0x51Eaf25fa70D29f7324428e7dDeBa5eC9556F5Ca

Tron (USDT, USDC) — TY8R8Uu3bZSfL1tCP2KigNVGgNpYi3JDuY

0
Комментарии

Комментарий удален модератором

Развернуть ветку

Комментарий удален модератором

Развернуть ветку
-3 комментариев
Раскрывать всегда