From 2af6a70b9abdf4288f4a796569b9bf0c2d90f556 Mon Sep 17 00:00:00 2001 From: Mike Hearn Date: Tue, 6 Sep 2016 16:25:12 +0200 Subject: [PATCH] Minor: rename BaseTransaction.signers to mustSign to make it a bit clearer what this field is. --- .../com/r3corda/core/contracts/TransactionTypes.kt | 2 +- .../kotlin/com/r3corda/core/serialization/Kryo.kt | 2 +- .../r3corda/core/transactions/BaseTransaction.kt | 6 +++--- .../r3corda/core/transactions/SignedTransaction.kt | 3 +-- .../r3corda/core/transactions/WireTransaction.kt | 2 +- .../protocols/AbstractStateReplacementProtocol.kt | 2 +- .../com/r3corda/protocols/FinalityProtocol.kt | 14 +++----------- .../src/main/kotlin/com/r3corda/testing/TestDSL.kt | 4 ++-- 8 files changed, 13 insertions(+), 22 deletions(-) diff --git a/core/src/main/kotlin/com/r3corda/core/contracts/TransactionTypes.kt b/core/src/main/kotlin/com/r3corda/core/contracts/TransactionTypes.kt index e86e1edc89..3c5b4fc585 100644 --- a/core/src/main/kotlin/com/r3corda/core/contracts/TransactionTypes.kt +++ b/core/src/main/kotlin/com/r3corda/core/contracts/TransactionTypes.kt @@ -30,7 +30,7 @@ sealed class TransactionType { if (notaryKey.size > 1) throw TransactionVerificationException.MoreThanOneNotary(tx) val requiredKeys = getRequiredSigners(tx) + notaryKey - val missing = requiredKeys - tx.signers + val missing = requiredKeys - tx.mustSign return missing } diff --git a/core/src/main/kotlin/com/r3corda/core/serialization/Kryo.kt b/core/src/main/kotlin/com/r3corda/core/serialization/Kryo.kt index 8fc69a35f8..7deea9ef8a 100644 --- a/core/src/main/kotlin/com/r3corda/core/serialization/Kryo.kt +++ b/core/src/main/kotlin/com/r3corda/core/serialization/Kryo.kt @@ -234,7 +234,7 @@ object WireTransactionSerializer : Serializer() { kryo.writeClassAndObject(output, obj.outputs) kryo.writeClassAndObject(output, obj.commands) kryo.writeClassAndObject(output, obj.notary) - kryo.writeClassAndObject(output, obj.signers) + kryo.writeClassAndObject(output, obj.mustSign) kryo.writeClassAndObject(output, obj.type) kryo.writeClassAndObject(output, obj.timestamp) } diff --git a/core/src/main/kotlin/com/r3corda/core/transactions/BaseTransaction.kt b/core/src/main/kotlin/com/r3corda/core/transactions/BaseTransaction.kt index a525d8cd76..30ad14c290 100644 --- a/core/src/main/kotlin/com/r3corda/core/transactions/BaseTransaction.kt +++ b/core/src/main/kotlin/com/r3corda/core/transactions/BaseTransaction.kt @@ -25,7 +25,7 @@ abstract class BaseTransaction( * transaction until the transaction is verified by using [LedgerTransaction.verify]. It includes the * notary key, if the notary field is set. */ - val signers: List, + val mustSign: List, /** * Pointer to a class that defines the behaviour of this transaction: either normal, or "notary changing". */ @@ -45,9 +45,9 @@ abstract class BaseTransaction( override fun equals(other: Any?) = other is BaseTransaction && notary == other.notary && - signers == other.signers && + mustSign == other.mustSign && type == other.type && timestamp == other.timestamp - override fun hashCode() = Objects.hash(notary, signers, type, timestamp) + override fun hashCode() = Objects.hash(notary, mustSign, type, timestamp) } \ No newline at end of file diff --git a/core/src/main/kotlin/com/r3corda/core/transactions/SignedTransaction.kt b/core/src/main/kotlin/com/r3corda/core/transactions/SignedTransaction.kt index 91d67ecfbd..78185f6a26 100644 --- a/core/src/main/kotlin/com/r3corda/core/transactions/SignedTransaction.kt +++ b/core/src/main/kotlin/com/r3corda/core/transactions/SignedTransaction.kt @@ -89,9 +89,8 @@ data class SignedTransaction(val txBits: SerializedBytes, * Returns the set of missing signatures - a signature must be present for each signer public key. */ private fun getMissingSignatures(): Set { - val requiredKeys = tx.signers.toSet() + val requiredKeys = tx.mustSign.toSet() val sigKeys = sigs.map { it.by }.toSet() - if (sigKeys.containsAll(requiredKeys)) return emptySet() return requiredKeys - sigKeys } diff --git a/core/src/main/kotlin/com/r3corda/core/transactions/WireTransaction.kt b/core/src/main/kotlin/com/r3corda/core/transactions/WireTransaction.kt index 3ce5caadda..529ab7671f 100644 --- a/core/src/main/kotlin/com/r3corda/core/transactions/WireTransaction.kt +++ b/core/src/main/kotlin/com/r3corda/core/transactions/WireTransaction.kt @@ -77,7 +77,7 @@ class WireTransaction( services.storageService.attachments.openAttachment(it) ?: throw FileNotFoundException(it.toString()) } val resolvedInputs = inputs.map { StateAndRef(services.loadState(it), it) } - return LedgerTransaction(resolvedInputs, outputs, authenticatedArgs, attachments, id, notary, signers, timestamp, type) + return LedgerTransaction(resolvedInputs, outputs, authenticatedArgs, attachments, id, notary, mustSign, timestamp, type) } override fun toString(): String { diff --git a/core/src/main/kotlin/com/r3corda/protocols/AbstractStateReplacementProtocol.kt b/core/src/main/kotlin/com/r3corda/protocols/AbstractStateReplacementProtocol.kt index 79545db0f7..fd669b3acc 100644 --- a/core/src/main/kotlin/com/r3corda/protocols/AbstractStateReplacementProtocol.kt +++ b/core/src/main/kotlin/com/r3corda/protocols/AbstractStateReplacementProtocol.kt @@ -202,7 +202,7 @@ abstract class AbstractStateReplacementProtocol { private fun checkMySignatureRequired(tx: WireTransaction) { // TODO: use keys from the keyManagementService instead val myKey = serviceHub.storageService.myLegalIdentity.owningKey - require(tx.signers.contains(myKey)) { "Party is not a participant for any of the input states of transaction ${tx.id}" } + require(myKey in tx.mustSign) { "Party is not a participant for any of the input states of transaction ${tx.id}" } } @Suspendable diff --git a/core/src/main/kotlin/com/r3corda/protocols/FinalityProtocol.kt b/core/src/main/kotlin/com/r3corda/protocols/FinalityProtocol.kt index df657bee3c..b4eda471a8 100644 --- a/core/src/main/kotlin/com/r3corda/protocols/FinalityProtocol.kt +++ b/core/src/main/kotlin/com/r3corda/protocols/FinalityProtocol.kt @@ -1,18 +1,11 @@ package com.r3corda.protocols import co.paralleluniverse.fibers.Suspendable -import com.google.common.util.concurrent.ListenableFuture import com.r3corda.core.contracts.ClientToServiceCommand -import com.r3corda.core.transactions.SignedTransaction -import com.r3corda.core.transactions.TransactionBuilder -import com.r3corda.core.transactions.WireTransaction import com.r3corda.core.crypto.Party -import com.r3corda.core.node.ServiceHub import com.r3corda.core.protocols.ProtocolLogic -import com.r3corda.core.random63BitValue -import com.r3corda.core.serialization.serialize +import com.r3corda.core.transactions.SignedTransaction import com.r3corda.core.utilities.ProgressTracker -import java.util.* /** @@ -57,7 +50,6 @@ class FinalityProtocol(val transaction: SignedTransaction, subProtocol(BroadcastTransactionProtocol(notarisedTransaction, events, participants)) } - private fun needsNotarySignature(transaction: SignedTransaction) = expectsNotarySignature(transaction.tx) && hasNoNotarySignature(transaction) - private fun expectsNotarySignature(transaction: WireTransaction) = transaction.notary != null && transaction.notary.owningKey in transaction.signers - private fun hasNoNotarySignature(transaction: SignedTransaction) = transaction.tx.notary?.owningKey !in transaction.sigs.map { it.by } + private fun needsNotarySignature(stx: SignedTransaction) = stx.tx.notary != null && hasNoNotarySignature(stx) + private fun hasNoNotarySignature(stx: SignedTransaction) = stx.tx.notary?.owningKey !in stx.sigs.map { it.by } } diff --git a/test-utils/src/main/kotlin/com/r3corda/testing/TestDSL.kt b/test-utils/src/main/kotlin/com/r3corda/testing/TestDSL.kt index 11348897ab..7afa7f9e25 100644 --- a/test-utils/src/main/kotlin/com/r3corda/testing/TestDSL.kt +++ b/test-utils/src/main/kotlin/com/r3corda/testing/TestDSL.kt @@ -314,7 +314,7 @@ data class TestLedgerDSLInterpreter private constructor ( * @return List of [SignedTransaction]s. */ fun signAll(transactionsToSign: List, extraKeys: List) = transactionsToSign.map { wtx -> - check(wtx.signers.isNotEmpty()) + check(wtx.mustSign.isNotEmpty()) val bits = wtx.serialize() require(bits == wtx.serialized) val signatures = ArrayList() @@ -323,7 +323,7 @@ fun signAll(transactionsToSign: List, extraKeys: List) (ALL_TEST_KEYS + extraKeys).forEach { keyLookup[it.public] = it } - wtx.signers.forEach { + wtx.mustSign.forEach { val key = keyLookup[it] ?: throw IllegalArgumentException("Missing required key for ${it.toStringShort()}") signatures += key.signWithECDSA(bits) }