Пишем смарт-контракт Ethereum

Лучший способ разобраться в чём-то – попытаться это что-то объяснить другому

Данное руководство предназначено для тех, кто хочет научиться писать смарт-контракты на эфире. Для изучения вам потребуется знание основ программирования. Идеально было бы если читатель знаком с JavaScript. Предполагается что вы уже знакомы с понятием смарт-контрактов и имеете представление для чего они.

Смарт контракты Ethereum можно писать на разных языках. Мы же будем использовать solidity как наиболее распространенный на момент написания статьи.  Версия 0.4.18.

В этом уроке:

  1. Познакомимся с языком solidity
  2. Познакомимся со средой Remix
  3. Напишем наш первый смарт-контракт
  4. Научимся запускать наш смарт-контракт в тестовой среде

Писать и тестировать мы будем на Remix . Это довольно простая и распространенная среда, к тому же она работает из браузера. Выглядит она следующим образом:

Пишем смарт-контракт Ethereum

Слева — список файлов. Центральное окно — место куда мы будем писать свой код. А справа инструменты.

Итак, наш первый смарт-контракт по традиции будет выводить приветствие «Hello, world»:

Вставьте этот код в среду Remix и выполните следующие действия.

  1. Переключитесь на вкладку «compile» в панели справа
  2. Выполните «start compile»
  3. Переключитесь на вкладку  «run»
  4. В поле «Environment» поставьте «JavaScript VM»  — это тестовая среда в которой мы будем исполнять наши контракты
  5. Выберите в списке контрактов тот, который будете заливать (сейчас это HelloWorld)
  6. Нажмите на кнопку «create» — таким образом мы создаем контракт внутри сети Ethereum

В дальнейшем эти действия нужно будет выполнять если вы хотите создать новый контракт внутри Ethereum.

После этих процедур панель справа должна выглядеть примерно так

Пишем смарт-контракт Ethereum

Теперь наш контракт готов к выполнению. Вызовем функцию «getData» — для этого достаточно нажать на кнопку с соответствующей надписью.

Результатом работы будет.

Пишем смарт-контракт Ethereum

Теперь мы видим нашу строку приветствия «Hello, world.»

Наш первый смарт-контракт написан и успешно выполнен!

Теперь разберем наш код.

В самой первой строчке указывается язык «solidity» и его версия 0.4.18.

Сам контракт описывается просто. Для тех кто знаком с ООП в программировании — контракт покажется похожим на класс.

В самом коде контракта у нас одна функция, которая возвращает строку.  Соответственно функция которая что-то возвращает описывается следующим образом.

Следует отметить что слово «constant» не обязательно, но его желательно ставить если функция не меняет внутреннего состояния контракта. Также не обязательно указывать слово public, так как  все функции по-умолчанию считаются public. Однако хорошим стилем считается указание public.

Функция, которая public видна всем. Подробнее об этом мы поговорим об этом позже, а пока будем считать все функции public.

Если функция ничего не возвращает, то убираем все что после названия функции.

Соответственно если функция ничего не принимает на вход то убираем входные_параметры.

Помимо функций внутри контракта могут содержаться переменные. Они записываются так

или так, если нужно сразу задать значение переменной

Типы переменных мы будем рассматривать по мере надобности.

Если что-то не понятно не переживайте, на практике станет все на свои места.

Давайте сделаем так чтобы контракт хранил строку «Hello, world» в переменной.

Теперь наша строка приветствия хранится в переменной wellcomeString. И тип у нее string.

Усовершенствуем наш контракт так чтобы строку приветствия можно было менять.

У нас появилась дополнительная функция setData которая принимает на вход новую строку приветствия и присваивает ее переменной wellcomeString.

Залейте контракт в сеть. После этого на правой панели внизу появятся две кнопки «getData» и «setData» которые соответствуют нашим функциям.

Пишем смарт-контракт Ethereum

Напишите в поле рядом с кнопкой setData какую-нибудь строчку в двойных кавычках. Например «wellcome»  и нажмите setData. А затем getData. Если вы все правильно сделали, то getData вернет вашу строку.

Пишем смарт-контракт Ethereum

Основы написания смарт-контрактов на ethereum

  1. Пишем смарт-контракт Ethereum — это просто: Часть 1 — введение
  2. Пишем смарт-контракт Ethereum — это просто: Часть 2 — визитка — mapping
  3. Пишем смарт-контракт Ethereum — это просто: Часть 3 — визитка — address, конструктор, переменная msg
  4. Пишем смарт-контракт Ethereum — это просто: Часть 4 — визитка — наследование и модификаторы
  5. Пишем смарт-контракт Ethereum — это просто: Часть 5 — токен ERC20
  6. Пишем смарт-контракт Ethereum — это просто: Часть 6 — токен ERC20 — рефакторинг
  7. Пишем смарт-контракт Ethereum — это просто: Часть 7 — ICO
  8. Пишем смарт-контракт Ethereum — это просто: Часть 8 — ICO рефакторинг, выделение токенов для баунти и команды
  9. Пишем смарт-контракт Ethereum — это просто: Часть 9 — ICO — добавляем бонусы инвесторам
  10. Пишем смарт-контракт Ethereum — это просто: Часть 10 — ICO, исходники на Etherscan, типы эмиссии
  11. Пишем смарт-контракт Ethereum — это просто: Часть 11 — ICO, refund — возврат средств по softcap
  12. Пишем смарт-контракт Ethereum — это просто: Часть 12 — ICO, реферальная система

 source