#java #corda
#java #corda
Вопрос:
Я довольно новичок в Corda, поэтому, возможно, я что-то пропустил.
Каков наилучший способ избежать того, чтобы сторона (или разные стороны) выдавали дублированные состояния?
Например, я хочу заблокировать выдачу IOU с продавцом, покупателем,
датой и значением, которые были выпущены ранее.
Комментарии:
1. Ваш вопрос затрагивает несколько аспектов (UTXO, хэш, двойные расходы, взаимозаменяемые / не взаимозаменяемые ..). Можете ли вы определить, что вы подразумеваете под «дублированным состоянием»?
2. я не говорю о двойных расходах, т. Е. Речь идет не о том, чтобы дважды ссылаться на одно и то же входное состояние. но о том, чтобы не разрешать потоку (с 0 входным состоянием) выдавать / создавать состояние в качестве вывода, если в системе уже есть состояние с теми же значениями свойств. (вы не должны иметь возможности запускать один и тот же поток дважды) может быть, в этом случае может сработать? можете ли вы подробнее рассказать об этом?
Ответ №1:
- В Corda состояния распределяются на основе необходимости знать; это означает, что если участник находится
participant
в состоянии, он сохранит это состояние в своем хранилище. - Имея это в виду, вы можете только гарантировать, что определенное состояние не дублируется на уровне «эмитента».
- Итак, допустим, в вашей IOU всегда
lender
выдаются новые долговые расписки; поэтому ваш поток (который инициируетсяlender
) должен сначала запросить хранилищеlender
, чтобы узнать, есть ли совпадающая долговая расписка, и выдать исключение, если оно есть, в противном случае выдайте новую долговую расписку. - Итак, если у вас была долговая расписка с
lender = PartyA
andborrower = PartyB
; у PartyC нет возможности узнать, что упомянутая долговая расписка существует (потому что это не aparticipant
в этом состоянии). - Это не проблема, потому что вы должны написать свой поток таким образом, чтобы инициатор потока становился
lender
IOU; и таким образом, у вас все заблокировано. - Каждый
lender
проверяет свое хранилище перед выдачей IOU для похожих.