/hederaHashgraphArticleRU

Деплой смарт-контрактов в сеть Hedera Hashgraph

MIT LicenseMIT

Деплой смарт-контрактов в сеть Hedera Hashgraph

Автор: ZhdanoffAlexey

Данная статья будет посвящена одной из ключевых функций распределенного реестра Hedera Hashgraph – загрузке разработанных на Solidity смарт-контрактов.

Что представляет собой неблокчейн Hashgraph?

Данный распределённый реестр использует технологию DAG (Направленного Ациклического Графа). Данная технология уже находила своё применение в машинном обучении (байесовская сеть доверия), в компиляторах, в статистике. Таким образом, данные в сети хранятся не в блоках, они распределены по т.н. событиям (events).

alt-текст

DAG по-прежнему решают задачу византийских генералов. Как правило, каждый проект, разрабатывающий распределённый реестр подобного рода, имеет свой подход к синхронизации узлов, т.е. собственный консенсус.

Консенсус Hashgraph

Каждый из валидаторов собирает свои транзакции, выбирает произвольным образом другого участника и направляет ему данные о своих транзакциях, а также информацию, которую сообщили ему другие узлы, когда подключались к нему. Итак, функционирование очень простое: валидатор «слушает», принимает все сообщения, которые приходят к нему, а после этого произвольным образом выбирает другого участника и отправляет ему все транзакции вместе со своими. Hashgraph гарантирует, что за конечное число шагов, то есть раундов работы протокола, все узлы приходят к единому решению. Протокол работает достаточно быстро и хорошо масштабируется.

Кроме того, в сети отсутствует лидер, что позволяет злоумышленнику выводить из строя узлы. Пока сохраняется 2/3 честных пользователей, протокол обеспечивает высокий уровень безопасности. Для синхронизации узлов и приходу их к договорённости между собой так же происходит обмен между участниками сети в случайном порядке.

О проекте Hedera

Под руководством Dr. Leemon Baird разрабатывается публичная сеть Hedera Hashgraph, используящая одноимённый протокол. Данная платформа в своём функционале будет иметь файловые сервисы, криптовалюты и смарт-контракты.

На момент марта 2019 года уже был проведён краудсейл. Внутренняя криптовалюта сети HBar оценивается в $0.12. Здесь можно ознакомиться с состоянием сети. На данный момент доступны Mainnet и Testnet, интересующие нас смарт-контракты доступны на данный момент только в тестовой сети.

Начало работы с платформой

1. Регистрация и KYC

Необходимо пройти регистрацию на портале и подтверждение личности. Важно! Регистрация на портале возможна в рамках этапа тестирования. На момент создания статьи сообщество в ожидании второго этапа тестирования, и регистрация в портале временно недоступна. Инструкция по регистрации и прохождению KYC по ссылке

2. Выбор сети

Выберем сеть для дальнейшей работы. Функция смарт-контрактов на данный момент доступна только на тестовой сети, поэтому выбираем testnet. alt-текст

3. Доступ к сети

Портал запросит у нас код доступа к сети, который можно получить на почту по оставленной заявке на странице. alt-текст

Введём ключ, который будет нами получен в сообщении по почте, Hedera выдаст следующую информацию:

alt-текст

Эти данные нам понадобятся в дальнейшем.

4. Сгенерируем публичный и приватный ключи для сети Hedera Hashgraph.

Загружаем с github генератор ключей и запускаем его командой java -jar hedera-sdk-keygen-1.2-run.jar

Получим:

alt-текст

5. Деплой смарт-контрактов

В рамках проекта был разработал ряд инструментариев разработчиков (SDK) с API для создания децентрализованных приложений под платформу. Hedera на данный момент поддерживает официально SDK на языке JAVA. Поддержкой библиотек на языках Rust, C, GO, Python занимается проект Launchbadge.

Рассмотрим деплой контрактов на примере Java SDK

Приступим к деплою смарт-контракта, рассмотрим процесс на примере уже имеющегося контракта “HelloWorld”. Отредактируем examples\node.properties.sample. Укажем в нём данные, которые мы видели на странице портала.

alt-текст

В examples\src\main\resources\scExamples рассмотрим следующие файлы

alt-текст

  • HelloWorld.sol - код смарт-контракта на Solidity, для ознакомления
  • HelloWorld.info.txt - содержит ABI нашего контракта, аналогично предоставлен в качестве пример
  • HelloWorld.bin - файл с байт-кодом скомпилированного контракта, нужен всегда, далее на этот файл будем ссылаться.

Код смарт-контракта:

pragma solidity ^0.5.3;

contract HelloWorld {
function getInt () public pure returns (uint) {
  return 42;
}
function getString () public pure returns (string memory) {
  return "John says hi";
}
}

Далее ничего делать не потребуется, только рассмотрим код исполняемого файла \examples\src\main\java\com\hedera\examples\simple\DemoContractHelloWorld.java Именно с помощью него мы будем загружать контракт в сеть и вызывать из контракта методы.

В данной строке читается бинарный код контракта

alt-текст

Далее ниже прописаны два метода, которые мы будем вызывать. Обратите внимание, что в константах указывается однострочный ABI смарт-контракта.

alt-текст

alt-текст

Запустим рассматриваемый данный исполняемый файл и получим ответ:

alt-текст

Поздравляю! Вы запустили свой первый смарт-контракт на платформе Hedera Hashgraph!

Источники

Изображения https://medium.com/coinmonks/dag-will-overcome-blockchain-problems-dag-vs-blockchain-9ca302651122