Corda — избегайте выдачи дублированных состояний

#java #corda

#java #corda

Вопрос:

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

Комментарии:

1. Ваш вопрос затрагивает несколько аспектов (UTXO, хэш, двойные расходы, взаимозаменяемые / не взаимозаменяемые ..). Можете ли вы определить, что вы подразумеваете под «дублированным состоянием»?

2. я не говорю о двойных расходах, т. Е. Речь идет не о том, чтобы дважды ссылаться на одно и то же входное состояние. но о том, чтобы не разрешать потоку (с 0 входным состоянием) выдавать / создавать состояние в качестве вывода, если в системе уже есть состояние с теми же значениями свойств. (вы не должны иметь возможности запускать один и тот же поток дважды) может быть, в этом случае может сработать? можете ли вы подробнее рассказать об этом?

Ответ №1:

  • В Corda состояния распределяются на основе необходимости знать; это означает, что если участник находится participant в состоянии, он сохранит это состояние в своем хранилище.
  • Имея это в виду, вы можете только гарантировать, что определенное состояние не дублируется на уровне «эмитента».
  • Итак, допустим, в вашей IOU всегда lender выдаются новые долговые расписки; поэтому ваш поток (который инициируется lender ) должен сначала запросить хранилище lender , чтобы узнать, есть ли совпадающая долговая расписка, и выдать исключение, если оно есть, в противном случае выдайте новую долговую расписку.
  • Итак, если у вас была долговая расписка с lender = PartyA and borrower = PartyB ; у PartyC нет возможности узнать, что упомянутая долговая расписка существует (потому что это не a participant в этом состоянии).
  • Это не проблема, потому что вы должны написать свой поток таким образом, чтобы инициатор потока становился lender IOU; и таким образом, у вас все заблокировано.
  • Каждый lender проверяет свое хранилище перед выдачей IOU для похожих.