Class DISC
Для использования библиотеки необходимо создать инстанс new DISC() либо с адресом сервиса, и провести
начальную эмиссию initialEmission(String, String, BigDecimal, PrivateKey). Полученный объект - по сути,
смартконратк для головного исполнителя, можно использовать для проведения остальных операций.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceИнтерфейс события в системе.static interfaceСлужебный интерфейс позволяющий работать с зарегистрированными подписчиками событий. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()Закрыть соединения, удалить связанные ресурсы и копию приватного ключа соединения appKey, использовавшегося для соединения с блокчейном.@NonNull String<T extends BlockchainContract>
@Nullable TgetContractByBlockchainId(String blockchainId) Получить контракт из блокчейна.<T extends BlockchainContract>
@Nullable TgetContractByBlockchainOriginId(String blockchainOriginId) Получить самый свежий контракт из блокчейна по его корневому идентификатору.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>
TunpackBlockchainContract(byte[] binaryContract) Распаковать двоичный образ смарт-контракта (годится для черновиков, т.е.
-
Constructor Details
-
DISC
Подключиться к сервису по заданному адресу.Aдрес должен быть https ссылкой, в данный момент мы не защищаем дополнительно канал (можем добавить слой шифрования, при необходимости).
Защита от неправомерного доступа осуществляется при помощи заранее созданного приватного ключа приложения, публичный ключ которого известен сервису, и используется для разрешения доступа к фцнкциям API. Этот ключ должен быть безопасно сохранен на клиенте.
ВАЖНО:
ключ соединения appKey сохраняется в оперативной памяти на время существования активного дерева инстансов связанных с инстансом DISC, пока его не уничтожит сборщик мусора или до явного вызоваclose(). Ключ соединения не следует использовать ни для каких других целей.- Parameters:
rootUrl- адрес сервиса, null для использования адреса по умолчанию.appKey- ключ приложения, который известен сервису и ограничивает доступ к нему. Этот ключ нельзя использовать больше ни для каких целей, так как он сохраняется в инстансе DISC на время его существования.
-
-
Method Details
-
getApiVersion
-
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
Получить список всех успешно зарегистированных контрактов на обмен на фиат для заланного идентификатора госконтракта.- Parameters:
stateContractId- идентификатор госконтракта
-
unpackBlockchainContract
Распаковать двоичный образ смарт-контракта (годится для черновиков, т.е. неподписанных и/или незарегистрированных смарт-контрактов). Получить бинарный образ можно при помощиBlockchainContract.getBlockchainContractBinary().- Type Parameters:
T-- Parameters:
binaryContract- упакованный контракт- Returns:
- распакованный контракт
-
getContractByBlockchainId
Получить контракт из блокчейна. Операция возможна только если он был ранее успешно зарегистрирован в блокчейне, черновики не сохраняются в распределенном хранилище.Факт получения контракта не означает что он утвержден блокчейном, например, у него может выйти срок действия или он может быть отозван в ходе какого то процесса. Необходимо проверять статус
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:
- идентификатор подписчика, позволяющий его отключить
-