Corda: Строитель транзакций автоматически добавляет ссылочные состояния в Corda 4.0? - PullRequest
1 голос
/ 17 июня 2019

Вопрос об эталонных состояниях в C4: если у состояния есть два поля типа LinearPointer, тогда corda автоматически разрешает эти 2 указателя и добавляет их в состояния tx.reference , даже если они не добавлены в код потока ?Если да, есть какая-то причина, почему Корда это делает?Я имею в виду следующую функцию: https://github.com/corda/corda/blob/6769b00ed5249e2eb798428a35e54ab740cf3bee/core/src/main/kotlin/net/corda/core/transactions/TransactionBuilder.kt#L540

она вызывается каждый раз, когда мы вызываем addInput, addOutput и т. Д.

Например:

data class IOUState(val value: Int,
                    val lenderParty: Party,
                    val borrowerParty: Party,
                    val lender: LinearPointer<IDState>,
                    val borrower: LinearPointer<IDState>,
                    override val linearId: UniqueIdentifier = UniqueIdentifier()):

IЯ только хотел бы добавить кредитора к ссылочным состояниям, но я заметил, что Corda внутренне добавляет заемщика в TX.referencestates.

1 Ответ

1 голос
/ 17 июня 2019

Да! Это добавляется автоматически.

Если вы не хотите, чтобы автоматически добавлялись состояния в качестве ref-состояний, просто добавьте линейный идентификатор в состояние, а не линейный указатель. поэтому сделайте кредитора линейным указателем, а заемщика - linearId. Это должно решить проблему!

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

...