package Ġcom . example . flow Ċ Ċ import Ġco . parallel universe . fib ers . Suspend able Ċ import Ġcom . example . contract . Black list Contract Ċ import Ġcom . example . contract . Bond Contract Ċ import Ġcom . example . state . Black list State Ċ import Ġcom . example . state . Bond State Ċ import Ġj dk . n ash orn . internal . runtime . JS Type Ċ import Ġnet . cord a . core . contracts . Amount Ċ import Ġnet . cord a . core . contracts . Command Ċ import Ġnet . cord a . core . contracts . Requirements . using Ċ import Ġnet . cord a . core . contracts . State And Contract Ċ import Ġnet . cord a . core . contracts . require That Ċ import Ġnet . cord a . core . flows .* Ċ import Ġnet . cord a . core . identity . C ord a X 5 0 0 Name Ċ import Ġnet . cord a . core . identity . Party Ċ import Ġnet . cord a . core . transactions . Signed Transaction Ċ import Ġnet . cord a . core . transactions . Transaction Builder Ċ import Ġnet . cord a . core . utilities . Progress Tracker Ċ import Ġnet . cord a . core . utilities . unwrap Ċ import Ġnet . cord a . finance . contracts . getC ash Balance Ċ import Ġnet . cord a . finance . flows . Cash Payment Flow Ċ import Ġjava . time . Instant Ċ import Ġjava . util .* Ċ Ċ object ĠBlack list _ Issue Ġ{ ĊĠĠĠ Ġ@ Initi ating Flow Ġ// Ġinitiate Ġother Ġflow ĊĠĠĠ Ġ@ Start able By RPC Ġ// ĠStart Ġflow Ġby ĠRPC ĊĠĠĠ Ġ// ĠEvery Ġflow Ġis Ġsub Ġclass Ġof Ġflow Ġlogic ĊĠĠĠ Ġclass ĠInit iator ( val Ġblack Party : ĠParty , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġesc row : ĠParty ) Ġ: ĠFlow Logic < Signed Transaction >() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠGENER ATING _ TRANSACTION Ġ: ĠProgress Tracker . Step (" Generating Ġtransaction Ġfor ĠIssue Ġbond Ġstate .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠVERIFY ING _ TRANSACTION Ġ: ĠProgress Tracker . Step (" Verify ing Ġcontract Ġconstraints .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠSIGN ING _ TRANSACTION Ġ: ĠProgress Tracker . Step (" Signing Ġtransaction Ġwith Ġour Ġprivate Ġkey .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠG ATHER ING _ SIG S Ġ: ĠProgress Tracker . Step (" Gather ing Ġthe Ġcounter party 's Ġsignature .") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġchild Progress Tracker () Ġ= ĠCollect Signatures Flow . tracker () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject ĠFIN AL ISING _ TRANSACTION Ġ: ĠProgress Tracker . Step (" Ob t aining Ġnot ary Ġsignature Ġand Ġrecording Ġtransaction .") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġchild Progress Tracker () Ġ= ĠFinal ity Flow . tracker () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġtracker () Ġ= ĠProgress Tracker ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGENER ATING _ TRANSACTION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVERIFY ING _ TRANSACTION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSIGN ING _ TRANSACTION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG ATHER ING _ SIG S , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFIN AL ISING _ TRANSACTION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġprogress Tracker Ġ= Ġtracker () ĊĊĠĠĠĠĠĠĠ Ġ@ Suspend able Ġ// Ġrun Ġmultiple Ġflow Ġin Ġconcurrent ly Ġ( need Ġcheckpoint able Ġand Ġserialization Ġto Ġdisk ) ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcall (): ĠSigned Transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUse Ġservice hub Ġoffer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠObtain Ġa Ġreference Ġto Ġthe Ġnot ary Ġwe Ġwant Ġto Ġuse . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnot ary Ġ= Ġservice Hub . network Map Cache . not ary Id entities [ 0 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠStage Ġ 1 . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Tracker . current Step Ġ= ĠGENER ATING _ TRANSACTION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġblack State Ġ= ĠBlack list State ( black Party , esc row , 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġblack Output State And Contract Ġ= ĠState And Contract ( black State , ĠBlack list Contract . BLACK _ CONTRACT _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtx Command Ġ= ĠCommand ( Black list Contract . Commands . Black Issue (), Ġblack State . participants . map Ġ{ Ġit . own ing Key Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtx Builder Ġ= ĠTransaction Builder ( not ary ). with Items ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblack Output State And Contract , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtx Command ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠStage Ġ 2 . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Tracker . current Step Ġ= ĠVERIFY ING _ TRANSACTION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠVerify Ġthat Ġthe Ġtransaction Ġis Ġvalid . Ġ( verify Ġby Ġcontract Ġin Ġcom . example . contract . Bond Contract ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtx Builder . verify ( service Hub ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠStage Ġ 3 . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Tracker . current Step Ġ= ĠSIGN ING _ TRANSACTION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSign Ġthe Ġtransaction . Ġ( Sign Ġby Ġmyself Ġbefore Ġsend Ġit Ġto Ġparticipant ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpart Signed Tx Ġ= Ġservice Hub . sign Initial Transaction ( tx Builder ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠStage Ġ 4 . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Tracker . current Step Ġ= ĠG ATHER ING _ SIG S ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġflow Black Party Ġ= Ġinitiate Flow ( black Party ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfully Signed Tx Ġ= Ġsub Flow ( Collect Signatures Flow ( part Signed Tx , Ġset Of ( flow Black Party ), ĠG ATHER ING _ SIG S . child Progress Tracker ())) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠStage Ġ 5 . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Tracker . current Step Ġ= ĠFIN AL ISING _ TRANSACTION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNot ar ise Ġand Ġrecord Ġthe Ġtransaction Ġin Ġboth Ġparties ' Ġvault s . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġreturn Ġsigned Ġtransaction ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsub Flow ( Final ity Flow ( fully Signed Tx , ĠFIN AL ISING _ TRANSACTION . child Progress Tracker ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Initi ated By ( Init iator :: class ) Ġ// respond Ġmass age Ġfrom Ġanother Ġflow Ġtake Ġclass Ġrespon ding Ġas Ġa Ġparameter ĊĠĠĠ Ġclass ĠRes pon der ( val Ġother Party Flow : ĠFlow Session ) Ġ: ĠFlow Logic < Signed Transaction >() Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suspend able ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcall (): ĠSigned Transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsign Transaction Flow Ġ= Ġobject Ġ: ĠSign Transaction Flow ( other Party Flow ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcheck Transaction ( st x : ĠSigned Transaction ) Ġ= Ġrequire That Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsub Flow ( sign Transaction Flow ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }