Corda - проверка нотариусов и пользовательских объектов в штатах - PullRequest
0 голосов
/ 11 января 2019

Относительно этого поста: Corda - java.lang.IllegalArgumentException, выдаваемый проверяющим нотариусом

Я обнаружил в Корде случай, когда штатам иногда требуется хранить пользовательский тип данных, однако проверка транзакций с использованием этих состояний завершается неудачно при использовании проверяющего нотариуса.

Рассмотрим следующие типы, которые будут реализованы в одном пакете, в одном и том же файле jar:

Пример Пользовательского Типа

package com.example.statescontracts

@CordaSerializable
data class Foo(
    val bar: Int, 
    val baz: String
)

Пример состояния

package com.example.statescontracts

data class FooState(
    override val linearId: UniqueIdentifier,
    val obligor: AbstractParty,
    val obligee: AbstractParty,
    val foos: Set<Foo>
) : LinearState {
    override val participants get() = listOf(obligor, obligee)
}

Выдача нового экземпляра FooState в бухгалтерскую книгу, вероятно, не затронута, поскольку он не потребляет предыдущий FooState экземпляр, но последующее использование FooState экземпляров, похоже, не удается для проверки нотариусов.

Исключение

java.lang.IllegalArgumentException: недопустимое имя Java: java.util.Set

Предположения

Проверка может выполняться для всех участников штата, которые имеют файл JAR состояний / контрактов и, следовательно, могут обращаться к типу Foo, однако это не работает для нотариуса, поскольку у него нет копии JAR-файл состояний / контрактов локально.

Насколько я понимаю, файл JAR состояний / контрактов должен быть небольшим, так как он предлагается к транзакции, когда предлагается, поэтому проверка нотариусов должна быть в состоянии проверять с использованием классов, найденных в JAR, прикрепленном к сделка.

Вопрос

Может ли кто-нибудь проверить, верны ли мои предположения, и если да, то почему эта проблема возникает при проверке нотариусов и как исправить эту проблему?

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Как описано в техническом документе, предполагаемый конечный дизайн заключается в том, что JAR-контракты извлекаются из вложений и запускаются внутри детерминированной JVM, где они помещаются в песочницу и отслеживаются ресурсы.

Автономный предварительный просмотр DJVM поставляется в Corda 4, но не интегрирован. Мы продолжим работать над этим с течением времени, что позволит узлам, у которых нет JAR-контрактов, проверять транзакции. На данный момент проверяющие нотариусы должны иметь каждую версию каждого приложения, с которым они могут столкнуться, установлены. Неподтвержденные нотариусы не страдают этой проблемой.

0 голосов
/ 11 января 2019

Начиная с Corda 3, проверяющим нотариусам нужен JAR-файл состояний / контрактов для каждой транзакции, которую они заверяют.

...