Package disc

Class DISC

java.lang.Object
disc.DISC

public class DISC extends Object
Подключение к сервису, создание и просмотр объектов верхнего уровня.

Для использования библиотеки необходимо создать инстанс new DISC() либо с адресом сервиса, и провести начальную эмиссию initialEmission(String, String, BigDecimal, PrivateKey). Полученный объект - по сути, смартконратк для головного исполнителя, можно использовать для проведения остальных операций.

  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static interface 
    Интерфейс события в системе.
    static interface 
    Служебный интерфейс позволяющий работать с зарегистрированными подписчиками событий.
  • Constructor Summary

    Constructors
    Constructor
    Description
    DISC(@Nullable String rootUrl, com.icodici.crypto.PrivateKey appKey)
    Подключиться к сервису по заданному адресу.
  • Method Summary

    Modifier and Type
    Method
    Description
    static @NonNull String
     
    static <T extends BlockchainContract>
    @Nullable T
    Получить контракт из блокчейна.
    static <T extends BlockchainContract>
    @Nullable T
    Получить самый свежий контракт из блокчейна по его корневому идентификатору.
    getRepaymentContratcs(@NonNull String stateContractId)
    Получить список всех успешно зарегистированных контрактов на обмен на фиат для заланного идентификатора госконтракта.
    initialEmission(String partyName, String stateContractId, BigDecimal initialAmount, com.icodici.crypto.PrivateKey rootKey)
    Эмиссия создает главного участника, который изначально распоряжается суммой токенов, которые исходно связаны и не могут быть обменены.
    subscribeToEventsSince(Long lastReceivedSerial, kotlin.jvm.functions.Function0<DISC.Event> listener)
    Подключить подписчик на события системы, получать новые события и все прошедшие события начиная с порядкового номера.
    static <T extends BlockchainContract>
    T
    unpackBlockchainContract(byte[] binaryContract)
    Распаковать двоичный образ смарт-контракта (годится для черновиков, т.е.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • DISC

      public DISC(@Nullable String rootUrl, com.icodici.crypto.PrivateKey appKey)
      Подключиться к сервису по заданному адресу.

      Aдрес должен быть https ссылкой, в данный момент мы не защищаем дополнительно канал (можем добавить слой шифрования, при необходимости).

      Защита от неправомерного доступа осуществляется при помощи заранее созданного приватного ключа приложения, публичный ключ которого известен сервису, и используется для разрешения доступа к фцнкциям API. Этот ключ должен быть безопасно сохранен на клиенте.

      Parameters:
      rootUrl - адрес сервиса, null для использования адреса по умолчанию.
      appKey - ключ приложения, который известен сервису и ограничивает доступ к нему.
  • Method Details

    • getApiVersion

      public static @NonNull String getApiVersion()
    • initialEmission

      public static InitialEmissionContract initialEmission(String partyName, String stateContractId, BigDecimal initialAmount, com.icodici.crypto.PrivateKey rootKey)
      Эмиссия создает главного участника, который изначально распоряжается суммой токенов, которые исходно связаны и не могут быть обменены. Главный участник передает токены головному исполнителю.
      Parameters:
      stateContractId - идентификатор госконтракта
      initialAmount - сумма эмиссии
      rootKey - Приватный ключ главного участника. Ключ не сохраняется! Требуется надежное хранение ключа вне данной библиотеки.
      Returns:
      эмиссионный контракт на утверждение банком.
    • getRepaymentContratcs

      public static List<RepaymentContract> getRepaymentContratcs(@NonNull String stateContractId)
      Получить список всех успешно зарегистированных контрактов на обмен на фиат для заланного идентификатора госконтракта.
      Parameters:
      stateContractId - идентификатор госконтракта
    • unpackBlockchainContract

      public static <T extends BlockchainContract> T unpackBlockchainContract(byte[] binaryContract)
      Распаковать двоичный образ смарт-контракта (годится для черновиков, т.е. неподписанных и/или незарегистрированных смарт-контрактов). Получить бинарный образ можно при помощи BlockchainContract.getBlockchainContractBinary().
      Type Parameters:
      T -
      Parameters:
      binaryContract - упакованный контракт
      Returns:
      распакованный контракт
    • getContractByBlockchainId

      public static <T extends BlockchainContract> @Nullable T getContractByBlockchainId(String blockchainId)
      Получить контракт из блокчейна. Операция возможна только если он был ранее успешно зарегистрирован в блокчейне, черновики не сохраняются в распределенном хранилище.

      Факт получения контракта не означает что он утвержден блокчейном, например, у него может выйти срок действия или он может быть отозван в ходе какого то процесса. Необходимо проверять статус BlockchainContract.isApprovedByBlockchain().

      Type Parameters:
      T -
      Parameters:
      blockchainId - идентификатор смарт-контракта
      Returns:
    • getContractByBlockchainOriginId

      public static <T extends BlockchainContract> @Nullable T getContractByBlockchainOriginId(String blockchainOriginId)
      Получить самый свежий контракт из блокчейна по его корневому идентификатору. Смотри BlockchainContract.getOriginBlockchainId(). Если контракт меняется, на блокчейне появляются его новые ревизии, и его BlockchainContract.getBlockchainId() будет меняться. Этот метод позволяет получить последнюю зарегистрированную ревизию.

      Факт получения контракта не означает что он утвержден блокчейном, например, у него может выйти срок действия или он может быть отозван в ходе какого то процесса. Необходимо проверять статус BlockchainContract.isApprovedByBlockchain().

      Type Parameters:
      T -
      Parameters:
      blockchainOriginId -
      Returns:
    • subscribeToEventsSince

      public static DISC.EventSubscriberId subscribeToEventsSince(Long lastReceivedSerial, kotlin.jvm.functions.Function0<DISC.Event> listener)
      Подключить подписчик на события системы, получать новые события и все прошедшие события начиная с порядкового номера.
      Parameters:
      lastReceivedSerial - порядковый номер последнего полученного события. 0 вызовет получение всех событий в системе
      listener - обработчик событий
      Returns:
      идентификатор подписчика, позволяющий его отключить