什么决定了登录Corda所需的密钥?
我最近在流量测试中遇到了一个错误,它说:什么决定了登录Corda所需的密钥?,corda,Corda,我最近在流量测试中遇到了一个错误,它说: java.lang.IllegalArgumentException: A signature was requested for a key that isn't part of the required signing keys for transaction 当我查看我的代码时,我很难找到导致问题的键 输出状态有一个参与者列表 该命令获取一个键列表 将创建一个本地事务,该事务接受密钥: val locallySignedTx = service
java.lang.IllegalArgumentException: A signature was requested for a key that isn't part of the required signing keys for transaction
当我查看我的代码时,我很难找到导致问题的键
输出状态有一个参与者
列表
该命令获取一个键列表
将创建一个本地事务,该事务接受密钥:
val locallySignedTx = serviceHub.signInitialTransaction(txBuilder, keysToSignWith)
我还使用帐户SDK,每个帐户上都有密钥
CollectSignatureFlow
还带有交易对手的密钥
在下面的代码块中,
new Command()
中的第一个参数是CommandCreate()
的类型,第二个参数是所需签名者的列表(在这种情况下是贷款人和借款人)。为了回答您的问题:
命令中的第二个参数定义了所需签名者的列表
final Command<IOUContract.Commands.Create> txCommand =
new Command<>(new IOUContract.Commands.Create(),
ImmutableList.of(iouState.getLender().getOwningKey(), iouState.getBorrower().getOwningKey()));
现在让我们回到您的问题上来,我想发生的是您从一方收集了一个签名,而该方不是您命令中所需签名者的一部分。我搜索了Corda的代码,发现您的错误消息来自CollectSignaturesFlow。CheckMySignaturesRequested()
函数:
private fun checkMySignaturesRequired(stx: SignedTransaction, signingKeys: Iterable<PublicKey>) {
require(signingKeys.all { it in stx.tx.requiredSigningKeys }) {
"A signature was requested for a key that isn't part of
the required signing keys for transaction ${stx.id}"
}
}
我尽量回答,因为我看不到你的完整代码
private fun checkMySignaturesRequired(stx: SignedTransaction, signingKeys: Iterable<PublicKey>) {
require(signingKeys.all { it in stx.tx.requiredSigningKeys }) {
"A signature was requested for a key that isn't part of
the required signing keys for transaction ${stx.id}"
}
}
getServiceHub().signInitialTransaction(txBuilder, Arrays.asList(pkOfAcc1, pkOfAcc2, pkOfAcc3);