ENT-6533 Update validating notary flow to be non-idempotent (#7030)

This commit is contained in:
Ramzi El-Yafi 2022-01-19 13:15:51 +00:00 committed by GitHub
parent 4f1a07cbcc
commit caa4de47d3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 3 deletions

View File

@ -8,7 +8,6 @@ import net.corda.core.crypto.TransactionSignature
import net.corda.core.crypto.toStringShort import net.corda.core.crypto.toStringShort
import net.corda.core.flows.* import net.corda.core.flows.*
import net.corda.core.identity.Party import net.corda.core.identity.Party
import net.corda.core.internal.IdempotentFlow
import net.corda.core.internal.PlatformVersionSwitches import net.corda.core.internal.PlatformVersionSwitches
import net.corda.core.internal.checkParameterHash import net.corda.core.internal.checkParameterHash
import net.corda.core.utilities.seconds import net.corda.core.utilities.seconds
@ -33,7 +32,7 @@ abstract class NotaryServiceFlow(
val otherSideSession: FlowSession, val otherSideSession: FlowSession,
val service: SinglePartyNotaryService, val service: SinglePartyNotaryService,
private val etaThreshold: Duration private val etaThreshold: Duration
) : FlowLogic<Void?>(), IdempotentFlow { ) : FlowLogic<Void?>() {
companion object { companion object {
// TODO: Determine an appropriate limit and also enforce in the network parameters and the transaction builder. // TODO: Determine an appropriate limit and also enforce in the network parameters and the transaction builder.
private const val maxAllowedInputsAndReferences = 10_000 private const val maxAllowedInputsAndReferences = 10_000

View File

@ -6,6 +6,7 @@ import net.corda.core.flows.FlowSession
import net.corda.core.flows.NotarisationPayload import net.corda.core.flows.NotarisationPayload
import net.corda.core.flows.NotaryError import net.corda.core.flows.NotaryError
import net.corda.core.identity.Party import net.corda.core.identity.Party
import net.corda.core.internal.IdempotentFlow
import net.corda.core.internal.PlatformVersionSwitches import net.corda.core.internal.PlatformVersionSwitches
import net.corda.core.internal.notary.NotaryInternalException import net.corda.core.internal.notary.NotaryInternalException
import net.corda.core.internal.notary.NotaryServiceFlow import net.corda.core.internal.notary.NotaryServiceFlow
@ -25,7 +26,10 @@ import java.time.Duration
* the caller, it is possible to raise a dispute and verify the validity of the transaction and subsequently * the caller, it is possible to raise a dispute and verify the validity of the transaction and subsequently
* undo the commit of the input states (the exact mechanism still needs to be worked out). * undo the commit of the input states (the exact mechanism still needs to be worked out).
*/ */
class NonValidatingNotaryFlow(otherSideSession: FlowSession, service: SinglePartyNotaryService, etaThreshold: Duration) : NotaryServiceFlow(otherSideSession, service, etaThreshold) { class NonValidatingNotaryFlow(otherSideSession: FlowSession, service: SinglePartyNotaryService, etaThreshold: Duration) :
NotaryServiceFlow(otherSideSession, service, etaThreshold),
IdempotentFlow
{
private val minPlatformVersion get() = serviceHub.networkParameters.minimumPlatformVersion private val minPlatformVersion get() = serviceHub.networkParameters.minimumPlatformVersion
override fun extractParts(requestPayload: NotarisationPayload): TransactionParts { override fun extractParts(requestPayload: NotarisationPayload): TransactionParts {