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 TypeMethodDescriptionstatic Stringstatic <T extends BlockchainContract>
@Nullable TgetContractByBlockchainId(String blockchainId) Получить контракт из блокчейна.static <T extends BlockchainContract>
@Nullable TgetContractByBlockchainOriginId(String blockchainOriginId) Получить самый свежий контракт из блокчейна по его корневому идентификатору.static List<RepaymentContract>getRepaymentContratcs(@NonNull String stateContractId) Получить список всех успешно зарегистированных контрактов на обмен на фиат для заланного идентификатора госконтракта.static PartyinitialEmission(String partyName, String stateContractId, BigDecimal initialAmount, com.icodici.crypto.PrivateKey rootKey) Эмиссия создает главного участника, который изначально распоряжается суммой токенов, которые исходно связаны и не могут быть обменены.static DISC.EventSubscriberIdsubscribeToEventsSince(Long lastReceivedSerial, kotlin.jvm.functions.Function0<DISC.Event> listener) Подключить подписчик на события системы, получать новые события и все прошедшие события начиная с порядкового номера.static <T extends BlockchainContract>
TunpackBlockchainContract(byte[] binaryContract) Распаковать двоичный образ смарт-контракта (годится для черновиков, т.е.
-
Constructor Details
-
DISC
Подключиться к сервису по заданному адресу.Aдрес должен быть https ссылкой, в данный момент мы не защищаем дополнительно канал (можем добавить слой шифрования, при необходимости).
Защита от неправомерного доступа осуществляется при помощи заранее созданного приватного ключа приложения, публичный ключ которого известен сервису, и используется для разрешения доступа к фцнкциям API. Этот ключ должен быть безопасно сохранен на клиенте.
- Parameters:
rootUrl- адрес сервиса, null для использования адреса по умолчанию.appKey- ключ приложения, который известен сервису и ограничивает доступ к нему.
-
-
Method Details
-
getApiVersion
-
initialEmission
public static Party 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
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:
- идентификатор подписчика, позволяющий его отключить
-