package Ġnet . cord a . core . internal . not ary Ċ Ċ import Ġco . parallel universe . fib ers . Suspend able Ċ import Ġnet . cord a . core . concurrent . C ord a Future Ċ import Ġnet . cord a . core . contracts . State Ref Ċ import Ġnet . cord a . core . contracts . Time Window Ċ import Ġnet . cord a . core . crypto . Crypto Ċ import Ġnet . cord a . core . crypto . Secure Hash Ċ import Ġnet . cord a . core . crypto . Sign able Data Ċ import Ġnet . cord a . core . crypto . Signature Metadata Ċ import Ġnet . cord a . core . crypto . Transaction Signature Ċ import Ġnet . cord a . core . flows . Flow Logic Ċ import Ġnet . cord a . core . flows . Not ar isation Request Signature Ċ import Ġnet . cord a . core . identity . Party Ċ import Ġnet . cord a . core . internal . Flow AsyncOperation Ċ import Ġnet . cord a . core . internal . execute Async Ċ import Ġnet . cord a . core . internal . not ary . Uni queness Provider . Result Ċ import Ġnet . cord a . core . serialization . C ord a Serializable Ċ import Ġnet . cord a . core . utilities . context Logger Ċ import Ġorg . slf 4 j . Logger Ċ import Ġjava . time . Duration Ċ Ċ /** ĠBase Ġimplementation Ġfor Ġa Ġnot ary Ġservice Ġoper ated Ġby Ġa Ġsing e Ġparty . Ġ*/ Ċ abstract Ġclass ĠSingle Party Not ary Service Ġ: ĠNot ary Service () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġstatic Log Ġ= Ġcontext Logger () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġopen Ġval Ġlog : ĠLogger Ġget () Ġ= Ġstatic Log ĊĊĠĠĠ Ġ/** ĠHandles Ġinput Ġstate Ġuni queness Ġchecks . Ġ*/ ĊĠĠĠ Ġprotected Ġabstract Ġval Ġuni queness Provider : ĠUni queness Provider ĊĊĠĠĠ Ġ/** ĠAt tempts Ġto Ġcommit Ġthe Ġspecified Ġtransaction Ġ[ tx Id ]. Ġ*/ ĊĠĠĠ Ġ@ Suspend able ĊĠĠĠ Ġopen Ġfun Ġcommit Input States ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinputs : ĠList < State Ref >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtx Id : ĠSecure Hash , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcaller : ĠParty , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Signature : ĠNot ar isation Request Signature , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Window : ĠTime Window ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreferences : ĠList < State Ref > ĊĠĠĠ Ġ): ĠResult Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠLog Ġthe Ġrequest Ġhere . ĠBenchmark ing Ġshows Ġthat Ġlogging Ġis Ġexpensive Ġand Ġwe Ġmight Ġget Ġbetter Ġperformance ĊĠĠĠĠĠĠĠ Ġ// Ġwhen Ġwe Ġconcurrent ly Ġlog Ġrequests Ġhere Ġas Ġpart Ġof Ġthe Ġflows , Ġinstead Ġof Ġlogging Ġse quent ially Ġin Ġthe ĊĠĠĠĠĠĠĠ Ġ// Ġ` Uni queness Provider `. ĊĊĠĠĠĠĠĠĠ Ġval Ġcalling Flow Ġ= ĠFlow Logic . current TopLevel ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠIllegalStateException (" This Ġmethod Ġshould Ġbe Ġinvoked Ġin Ġa Ġflow Ġcontext .") ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcalling Flow . execute Async ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCommit Operation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinputs , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtx Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcaller , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Signature , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Window , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreferences ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( result Ġis ĠResult . Failure ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNot ary Internal Exception ( result . error ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEst imate Ġthe Ġwait Ġtime Ġto Ġbe Ġnot ar ised Ġtaking Ġinto Ġaccount Ġthe Ġnew Ġrequest Ġsize . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġnum States ĠThe Ġnumber Ġof Ġstates Ġwe 're Ġabout Ġto Ġrequest Ġbe Ġnot ar ised . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Est imated Wait Time ( num States : ĠInt ): ĠDuration Ġ= Ġuni queness Provider . get Eta ( num States ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRequired Ġfor Ġthe Ġflow Ġto Ġbe Ġable Ġto Ġsuspend Ġuntil Ġthe Ġcommit Ġis Ġcomplete . ĊĠĠĠĠ Ġ* ĠThis Ġobject Ġwill Ġbe Ġincluded Ġin Ġthe Ġflow Ġcheckpoint . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ C ord a Serializable ĊĠĠĠ Ġclass ĠCommit Operation ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġservice : ĠSingle Party Not ary Service , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinputs : ĠList < State Ref >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtx Id : ĠSecure Hash , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcaller : ĠParty , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Signature : ĠNot ar isation Request Signature , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Window : ĠTime Window ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreferences : ĠList < State Ref > ĊĠĠĠ Ġ) Ġ: ĠFlow AsyncOperation < Result > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġexecute ( ded up lication Id : ĠString ): ĠC ord a Future < Result > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġservice . uni queness Provider . commit ( inputs , Ġtx Id , Ġcaller , Ġrequest Signature , Ġtime Window , Ġreferences ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠSign Ġa Ġsingle Ġtransaction . Ġ*/ ĊĠĠĠ Ġfun Ġsign Transaction ( tx Id : ĠSecure Hash ): ĠTransaction Signature Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsign able Data Ġ= ĠSign able Data ( tx Id , ĠSignature Metadata ( services . my Info . platform Version , ĠCrypto . find Signature Scheme ( not ary Identity Key ). scheme Number ID )) ĊĠĠĠĠĠĠĠ Ġreturn Ġservices . key Management Service . sign ( sign able Data , Ġnot ary Identity Key ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ