Как транзакция «разрешается» из SignedTransaction в LedgerTransaction? - PullRequest
0 голосов
/ 05 марта 2019

Я нашел это в документе Corda: «Однако SignedTransaction хранит свои входные данные как экземпляры StateRef, а свои вложения - как экземпляры SecureHash, которые не предоставляют достаточно информации для правильной проверки содержимого транзакции. Сначала нам нужно разрешить экземпляры StateRef и SecureHash в фактические экземпляры ContractState и Attachment, которые мы затем можем проверить.

Мы достигаем этого с помощью ServiceHub для преобразования SignedTransaction в LedgerTransaction. "

Что на самом деле означает «разрешить»?Для меня это абстрактное понятие, потому что хеширование - это односторонняя функция.Как ServiceHub работает для преобразования SignedTransaction в LedgerTransaction?

1 Ответ

0 голосов
/ 07 марта 2019

SignedTransaction состоит из подписи и данных.Данные представлены в виде WireTransaciton (TxBuilder конвертируется в Wire Tx, который довольно легкий и содержит stateref для всех входов и ссылок, он легкий, так как он будет отправлен по проводам).

Теперь, когда у вас есть SignedTx, вы отправляете его по проводу через Артемис контрагенту.Поскольку мы отправляем stateRef, он должен быть преобразован в StateAndRef, чтобы контрагент мог видеть справочные данные, а также контрагент может проверить целостность этой транзакции, разрешив и проверив зависимости.

Это делается с помощью SendTransactionFlow и ReceiveTransactionFlow.Все зависимости здесь разрешены, например.Вложения, транзакции, параметры запрашиваются у контрагента и фиксируются.теперь его можно легко преобразовать в книгу Tx, например, StateRef в StateAndRef, secureHash в networkparameters и т. д.

...