Class DISC
Для использования библиотеки необходимо создать инстанс new DISC() либо с адресом сервиса, и провести
начальную эмиссию initialEmission(String, String, BigDecimal, PrivateKey). Полученный объект - по сути,
смартконратк для головного исполнителя, можно использовать для проведения остальных операций.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfacePush событие создаваемое системой при активации платежа авансирования (при наступлении указанного в нем момента времени)static interfaceИнтерфейс события в системе.static interfaceСлужебный интерфейс позволяющий работать с зарегистрированными подписчиками событий. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptioncom.icodici.disc.i2.dip.BackendVersionRequest remote status of the blockchain driver.voidclose()Закрыть соединения, удалить связанные ресурсы и копию приватного ключа соединения appKey, использовавшегося для соединения с блокчейном.voiddeleteTestPartyByName(String name) Пока сервер в тестовом режиме, Party можно удалить по имени, например, для тестов.@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(@Nullable Long lastReceivedSerial, Consumer<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
-
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
Получить список всех успешно зарегистированных контрактов на обмен на фиат для заланного идентификатора госконтракта.- 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(@Nullable Long lastReceivedSerial, Consumer<DISC.Event> listener) Подключить подписчик на события системы, получать новые события и все прошедшие события начиная с порядкового номера.ВАЖНОЕ ЗАМЕЧАНИЕ. Данная версия API не позволяет иметь подписки с разными параметрами одновременно. Если создается более одной подписки, то параметр
lastReceivedSerialимеет значение только при первом вызове, в остальных случаях игнонируется, и используется одщий для всех поток событий.- Parameters:
lastReceivedSerial- порядковый номер последнего полученного события. 0 вызовет получение всех событий в системе, null для получения только новых событий с момента подписки.listener- обработчик событий- Returns:
- идентификатор подписчика, позволяющий его отключить
-
getBackendVersion
-
deleteTestPartyByName
Пока сервер в тестовом режиме, Party можно удалить по имени, например, для тестов. В боевом варианте сервера это работать не будет- Parameters:
name- partyName на удаление
-