Как договор навязывает только определенным сторонам возможность потратить линейное состояние? - PullRequest
0 голосов
/ 12 июня 2018

Предположим, линейное состояние с 3 сторонами.Каким образом договор обеспечивает, что только заемщик может перемещать линейное состояние из одного жизненного цикла в другой?

Пока что метод, который я использую, находится на стороне ответчика, которую я делаю require(obligation.borrower == otherFlow.counterparty) Не уверен, как можно было бы обеспечить соблюдение в контракте, так как контракт не имеет доступа к тому, кто инициируетсделка.

signers == allParticipantsKeys просто принуждает всех подписать, но не кто не должен / не должен тратить государство?

Может ли неучастник, который каким-то образом овладел государством / историческими событиями, как-то потратить его?

Lender : Party
Borrower : Party
Bank : Party
participants = listOf(Lender, Borrower, Bank)

1 Ответ

0 голосов
/ 12 июня 2018

Вы не можете применять правила о том, кто предлагает транзакцию.

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

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)
}

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

...