Как договор навязывает только определенным сторонам возможность потратить линейное состояние?
Предположим, линейное состояние с 3 сторонами. Каким образом договор обеспечивает, что только заемщик может перемещать линейное состояние из одного жизненного цикла в другой?
Пока метод, который я использую, находится на стороне ответчика, которую я делаю require(obligation.borrower == otherFlow.counterparty)
Не уверен, как можно было бы обеспечить соблюдение в контракте, поскольку у контракта нет доступа к тому, кто инициирует транзакцию.
signers == allParticipantsKeys
просто принуждает всех подписать, но не кто не должен / не должен тратить государство?
Может ли не-участник, который каким-то образом овладел государственными / историческими событиями, как-то тратить его?
Lender : Party
Borrower : Party
Bank : Party
participants = listOf(Lender, Borrower, Bank)
1 ответ
Вы не можете применять правила о том, кто предлагает транзакцию.
Тем не менее, вы можете убедиться, что заемщик является обязательным подписывающим лицом, написав что-то вроде этого в договоре:
requireThat {
val linearState = tx.inputsOfType<MyLinearState>().single()
val allRequiredSigners = tx.commands.flatMap { it.signers }
"The borrower is a required signer." using
allRequiredSigners.contains(linearState.borrower)
}
Тогда вам просто нужно записать поток, чтобы заемщик отказался подписывать, если он не является инициатором транзакции.