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
    com.icodici.disc.i2.dip.BackendVersion
    Request remote status of the blockchain driver.
    void
    Закрыть соединения, удалить связанные ресурсы и копию приватного ключа соединения appKey, использовавшегося для соединения с блокчейном.
    void
    Пока сервер в тестовом режиме, Party можно удалить по имени, например, для тестов.
    @NonNull String
     
     
    <T extends BlockchainContract>
    @Nullable T
    Получить контракт из блокчейна.
    <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)
    Подключить подписчик на события системы, получать новые события и все прошедшие события начиная с порядкового номера.
    <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. Этот ключ должен быть безопасно сохранен на клиенте.

      ВАЖНО:

      ключ соединения appKey сохраняется в оперативной памяти на время существования активного дерева инстансов связанных с инстансом DISC, пока его не уничтожит сборщик мусора или до явного вызова close(). Ключ соединения не следует использовать ни для каких других целей.
      Parameters:
      rootUrl - адрес сервиса, null для использования адреса по умолчанию.
      appKey - ключ приложения, который известен сервису и ограничивает доступ к нему. Этот ключ нельзя использовать больше ни для каких целей, так как он сохраняется в инстансе DISC на время его существования.
  • Method Details

    • getApiVersion

      public @NonNull String getApiVersion()
    • backendVersion

      public com.icodici.disc.i2.dip.BackendVersion backendVersion()
      Request remote status of the blockchain driver. It DOES NOT caches result and every time perform network request (thisis made intentionally as debug time connection check)
      Returns:
      backed version returned by the driver
    • close

      public void close()
      Закрыть соединения, удалить связанные ресурсы и копию приватного ключа соединения appKey, использовавшегося для соединения с блокчейном.
    • initialEmission

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

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

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

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

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

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

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

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

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

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

      public String getBackendVersion()
    • deleteTestPartyByName

      public void deleteTestPartyByName(String name)
      Пока сервер в тестовом режиме, Party можно удалить по имени, например, для тестов. В боевом варианте сервера это работать не будет
      Parameters:
      name - partyName на удаление