Дело не в том, что является ключевым преимуществом подписания с помощью ключа учетной записи вместо ключа узла, а в том, что предписывает ваш государственный контракт.
Например, если вы посмотрите на пример gold-trading
:
- Состояние имеет атрибут
owningAccount
:
data class LoanBook(val dealId: UUID, val valueInUSD: Long,
val owningAccount: PublicKey? = null) : ContractState
В контракте указывается, что
owningAccount
является обязательным подписывающим лицом для команды
TRANSFER
:
inputGold.owningAccount?.let {
require(inputGold.owningAccount in command.signers) {
"The account sending the loan must be a required signer" }
}
Обратите внимание, как поток подписывает транзакцию с помощью ключа узла (потому что инициатор потока является обязательным подписывающим лицом) и ключа
owningAccount
(потому что контракт диктует это):
val locallySignedTx = serviceHub.signInitialTransaction(transactionBuilder,
listOfNotNull(loanBook.state.data.owningAccount,
ourIdentity.owningKey))