Смарт контракты

Published 13 December 2018

Кросс-языковая работа со смарт-контрактами

Термин кросс-языковой работы

Термин кросс-языковой работы

Под термином кросс-языковой работы со смарт-контрактами понимается возможность создания смарт-контрактов, выполнения методов смарт-контрактов, просмотра выполнения результатов, мониторинга работы платформы из тех языков программирования, которые поддерживаются на платформе Credits.

Для реализации такой возможности используется API. Документация API описывает переопределение типов, прикладные структуры и методы языковыми конструкциями языка описания интерфейсов Thrift.

Поддерживаемые языки программирования:

  • C++ (полный доступ, реализация узла)
  • Java (в рамках API, реализация Desktop Wallet app, Contract Executor)
  • C# (в рамках API, Credits Monitor)

Создание смарт-контракта и выполнение его методов возможно только на языке Java при установленной JVM.

Thrift (генерация кода)

Thrift (генерация кода)

Thrift - язык описания интерфейсов, использующийся для создания различных сервисов под разные языки программирования. Таким образом, становится возможным связать разные операционные системы и приложения, написанные на разных языках в одну работающую систему. Thrift является фреймворком к RPC (Remote Procedure Call) и двоичным протоколом связи.

Для взаимодействия с внешними клиентами используется язык описания api.thrift, в котором представлены структуры и функции. Из него генерируется исходный код на требуемом языке.

Используемые примеры (C++, Java, C#)

Используемые примеры (C++, Java, C#)

Примеры сгенерированного кода для указанных языков для метода “BalanceGet”:

Описание на Thrift-е:

C++ (реализация узла)

Java (Desktop Wallet app (wallet-desktop.jar), Contract Executor (contract-executor.jar)

C# (Credits Monitor)

Достоинства использования и реализации API:

  • кросс-языковая сериализация с более низкими накладными расходами, в отличие от таких альтернатив как SOAP, за счет использования двоичного формата
  • простая и чистая библиотека, не нуждается в фреймворке для кода
  • не используется XML-конфигурация
  • языковые привязки ощущаются естественными
Votes 0, average rating 0

Contents