Умные контракты на платформе Semux

Умные контракты Semux

Многие из вас уже не раз слышали про блокчейн и так называемые «умные контракты», но в этой статье я не буду в очередной раз расписывать теорию и основы. Мы сразу перейдем к делу, а именно, к публикации вашего первого работающего смарт-контракта. Но не на платформе Ethereum, как вы могли подумать, а на другой платформе, более новой и малоизвестной, Semux платформе.

Что такое Semux?

Semux — это экспериментальная высокопроизводительная блокчейн-платформа с открытым исходным кодом, управляемая сообществом. В основе платформы лежит консенсусный механизм Semux BFT. Если сильно упростить то Semux — этот тот же Ethereum, только без PoW (Proof-of-Work) майнеров.

РЕКОМЕНДУЕМ:
Безопасность смарт-контрактов в блокчейне Ethereum

Чтобы детальнее познакомиться с Semux — давайте создадим простенький гемблинг (gambling) смарт контракт «Подбрасывания монетки».

Установка правильной ноды

На данный момент основная сеть Semux не поддерживает EVM (Ethereum Virtual Machine) и работу со смарт контрактами, активация EVM будет немного позже, в конце лета\начало осени 2019. Исходя из этого, нам придется использовать тестовую сеть, где активирована EVM, к тому же монеты в тестовой сети бесплатны.

Скачиваем последнюю версию релиз кандитата тут. На июль 2019 — это Semux v1.5.0 RC4, позже это может быть другая версия, так что будьте внимательны.

Для того чтобы присойдениться к тестовой сети, необходимо указать флаг network=testnet при запуске ноды.

Указываем пароль, создаем новый адрес, теперь у нас есть адрес, но где взять тестовые монеты? Для этого переходим на этот ресурс, вставляем свой адрес и нажимаем «SEND», спустя пару минут на вашем адресе будет 1000 монет для тестовой сети. Теперь мы можем создавать и вызывать смарт-контракты.

Создаем свой смарт-контракт

Поскольку Semux EVM практически идентичная Ethereum EVM, то мы можем использовать старый добрый solidity для написания контрактов. Вот код простенького контракта на solidity

Если вы хотите узнать больше про solidity и детальнее изучить код контракта, переходим сюда.

Итак, у нас есть код контракта, теперь нам нужно опубликовать его в сети Semux. Но EVM не поддерживает человеку понятный solidity код, EVM понимает только на машинном простом языке, на байткоде (bytecode). Для того чтобы получить байткод нашего контракта открываем
remix IDE, создаем новый файл и вставляем туда код контракта.

Умные контракты Semux

Теперь нам нужно скомпилировать контракт и получить байткод. Переходим на вкладку «Solidity Compiler» и нажимаем Compile semuxGame.sol. Если все прошло удачно и контракт был скомпилирован, то нажимаем на Bytecode и получаем свой байткод в виде такого объекта.

Копируем значение поля object и добавляем 0х в начале. Теперь у нас есть байткод скомпилированного контракта.

РЕКОМЕНДУЕМ:
Создание блокчейн проекта с использованием алгоритма «Стрибог»

Публикуем и вызываем контракт

Вернемся к тестовой ноде Semux’a. Находим в верхнем меню Help -> Console, открывается консоль, вводим /help и подымаемся на самый верх, находим команду call и create:

Немного о параметрах:

  • from — адрес с которого мы хотим создать\вызвать контракт
  • to — адрес контракта, методы которого мы хотим вызвать
  • gas — количество газа
  • gasPrice — стоимость газа
  • value — количество монет Semux
  • nonce — специальный  числовой параметр
  • data — тот самый байт код

У нас есть все данные кроме nonce. Чтобы получить значение nonce пишем в консоль команду getAccount и адрес на котором есть тестовые монеты. Пример:

Находим поле nonce и запоминаем его значение. Теперь мы готовы создать контракт, вводим команду:

Если все прошло удачно, то мы увидим хеш транзакции в консоли и перейдя на вкладку Transactions найдем эту транзакцию, открываем её и запоминаем адрес на котором был создан сам контракт (значение поля To).

Умные контракты Semux

Возвращаемся обратно к remix’y, открываем вкладку «Deploy and run transactions». Выбираем контракт и нажимаем Deploy. Теперь мы опубликовали контракт локально и может протестировать его методы, прежде чем делать это в сети Semux. Нажимаем getNewBet и открываем debugger в консоли remix чтобы найти поле input и скопировать это значение.

Умные контракты Semux

Вставляем это значение в качестве параметра data. Должно выйти что-то вроде:

Точно так же можно вызывать метод roll, изменив значение data и nonce.

Для того чтобы проверить свои транзакции, можно зайти во вкладку Tranasctions в локальном кошельке или перейти на testnet explorer.

Умные контракты Semux

Вот и все, теперь вы знаете, как создавать и вызывать умные контракты на блокчейн платформе Semux.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий