Как договор навязывает только определенным сторонам возможность потратить линейное состояние?

Предположим, линейное состояние с 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)
}

Тогда вам просто нужно записать поток, чтобы заемщик отказался подписывать, если он не является инициатором транзакции.

Другие вопросы по тегам