package Ġnet . cord a . tr ader demo . flow Ċ Ċ import Ġco . parallel universe . fib ers . Suspend able Ċ import Ġnet . cord a . contracts . Com mercial Paper Ċ import Ġnet . cord a . contracts . asset . D UMMY _ C ASH _ IS SU ER Ċ import Ġnet . cord a . core . contracts .* Ċ import Ġnet . cord a . core . crypto .* Ċ import Ġnet . cord a . core . days Ċ import Ġnet . cord a . core . flows . Flow Logic Ċ import Ġnet . cord a . core . node . NodeInfo Ċ import Ġnet . cord a . core . seconds Ċ import Ġnet . cord a . core . transactions . Signed Transaction Ċ import Ġnet . cord a . core . utilities . Progress Tracker Ċ import Ġnet . cord a . flows . Not ary Flow Ċ import Ġnet . cord a . flows . Two Party Trade Flow Ċ import Ġjava . time . Instant Ċ import Ġjava . util .* Ċ Ċ class ĠS eller Flow ( val Ġother Party : ĠParty , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġamount : ĠAmount < Currency >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġprogress Tracker : ĠProgress Tracker Ġ= Ġtracker ()) Ġ: ĠFlow Logic < Signed Transaction >() Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠPRO S PECT US _ HASH Ġ= ĠSecure Hash . parse (" de cd 0 9 8 6 6 6 b 9 6 5 7 3 1 4 8 7 0 e 1 9 2 ced 0 c 3 5 1 9 c 2 c 9 d 3 9 5 5 0 7 a 2 3 8 3 3 8 f 8 d 0 0 3 9 2 9 de 9 ") ĊĊĠĠĠĠĠĠĠ Ġobject ĠS ELF _ IS SU ING Ġ: ĠProgress Tracker . Step (" Got Ġsession ĠID Ġback , Ġiss uing Ġand Ġtimestamp ing Ġsome Ġcommercial Ġpaper ") ĊĊĠĠĠĠĠĠĠ Ġobject ĠTR ADING Ġ: ĠProgress Tracker . Step (" Starting Ġthe Ġtrade Ġflow ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġchild Progress Tracker (): ĠProgress Tracker Ġ= ĠTwo Party Trade Flow . S eller . tracker () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġv end Ġa Ġprogress Ġtracker Ġthat Ġalready Ġknows Ġthere 's Ġgoing Ġto Ġbe Ġa ĠTwo Party Trading Flow Ġinvolved Ġat Ġsome ĊĠĠĠĠĠĠĠ Ġ// Ġpoint : Ġby Ġsetting Ġup Ġthe Ġtracker Ġin Ġadvance , Ġthe Ġuser Ġcan Ġsee Ġwhat 's Ġcoming Ġin Ġmore Ġdetail , Ġinstead Ġof Ġbeing ĊĠĠĠĠĠĠĠ Ġ// Ġsur pri sed Ġwhen Ġit Ġappears Ġas Ġa Ġnew Ġset Ġof Ġtasks Ġbelow Ġthe Ġcurrent Ġone . ĊĠĠĠĠĠĠĠ Ġfun Ġtracker () Ġ= ĠProgress Tracker ( SELF _ IS SU ING , ĠTR ADING ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suspend able ĊĠĠĠ Ġoverride Ġfun Ġcall (): ĠSigned Transaction Ġ{ ĊĠĠĠĠĠĠĠ Ġprogress Tracker . current Step Ġ= ĠS ELF _ IS SU ING ĊĊĠĠĠĠĠĠĠ Ġval Ġnot ary : ĠNode Info Ġ= Ġservice Hub . network Map Cache . not ary Nodes [ 0 ] ĊĠĠĠĠĠĠĠ Ġval Ġcp Owner Key Ġ= Ġservice Hub . legal Identity Key ĊĠĠĠĠĠĠĠ Ġval Ġcommercial Paper Ġ= Ġself Issue Some Com mercial Paper ( cp Owner Key . public . composite , Ġnot ary ) ĊĊĠĠĠĠĠĠĠ Ġprogress Tracker . current Step Ġ= ĠTR ADING ĊĊĠĠĠĠĠĠĠ Ġ// ĠSend Ġthe Ġoffered Ġamount . ĊĠĠĠĠĠĠĠ Ġsend ( other Party , Ġamount ) ĊĠĠĠĠĠĠĠ Ġval Ġsell er Ġ= ĠTwo Party Trade Flow . S eller ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġother Party , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnot ary , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommercial Paper , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġamount , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcp Owner Key , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Tracker . getChild Progress Tracker ( TR ADING ) !! ) ĊĠĠĠĠĠĠĠ Ġval Ġtrade TX : ĠSigned Transaction Ġ= Ġsub Flow ( seller , Ġshare Parent Sessions Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġservice Hub . record Transactions ( listOf ( trade TX )) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrade TX ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suspend able ĊĠĠĠ Ġfun Ġself Issue Some Com mercial Paper ( owned By : ĠComposite Key , Ġnot ary Node : ĠNode Info ): ĠState And Ref < Com mercial Paper . State > Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠMake Ġa Ġfake Ġcompany Ġthat 's Ġissued Ġits Ġown Ġpaper . ĊĠĠĠĠĠĠĠ Ġval Ġkey Pair Ġ= Ġgenerate KeyPair () ĊĠĠĠĠĠĠĠ Ġval Ġparty Ġ= ĠParty (" Bank Ġof ĠLondon ", Ġkey Pair . public ) ĊĊĠĠĠĠĠĠĠ Ġval Ġiss u ance : ĠSigned Transaction Ġ= Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtx Ġ= ĠCom mercial Paper (). generate Issue ( party . ref ( 1 , Ġ 2 , Ġ 3 ), Ġ 1 1 0 0 . DO LL ARS Ġ` iss ued Ġby ` ĠD UMMY _ C ASH _ IS SU ER , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInstant . now () Ġ+ Ġ 1 0 . days , Ġnot ary Node . not ary Identity ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠConsider Ġmoving Ġthese Ġtwo Ġsteps Ġbelow Ġinto Ġgenerate Issue . ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAttach Ġthe Ġpro spect us . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtx . add Attachment ( service Hub . storage Service . attachments . open Attachment ( PRO S PECT US _ HASH ) !!. id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRequest ing Ġtimestamp ing , Ġall ĠCP Ġmust Ġbe Ġtimestamp ed . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtx . setTime ( Instant . now (), Ġ 3 0 . seconds ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSign Ġit Ġas Ġourselves . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtx . sign With ( key Pair ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe Ġnot ary Ġto Ġsign Ġthe Ġtimestamp ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnot ary Sig Ġ= Ġsub Flow ( Not ary Flow . Client ( tx . to Signed Transaction ( false ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtx . add Signature Unchecked ( not ary Sig ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCommit Ġit Ġto Ġlocal Ġstorage . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġst x Ġ= Ġtx . to Signed Transaction ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice Hub . record Transactions ( listOf ( st x )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġst x ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠNow Ġmake Ġa Ġdummy Ġtransaction Ġthat Ġmoves Ġit Ġto Ġa Ġnew Ġkey , Ġjust Ġto Ġshow Ġthat Ġresolving Ġdependencies Ġworks . ĊĠĠĠĠĠĠĠ Ġval Ġmove : ĠSigned Transaction Ġ= Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠTransaction Type . General . Builder ( not ary Node . not ary Identity ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCom mercial Paper (). generate Move ( builder , Ġiss u ance . tx . out Ref ( 0 ), Ġowned By ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . sign With ( key Pair ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnot ary Signature Ġ= Ġsub Flow ( Not ary Flow . Client ( builder . to Signed Transaction ( false ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . add Signature Unchecked ( not ary Signature ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtx Ġ= Ġbuilder . to Signed Transaction ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice Hub . record Transactions ( listOf ( tx )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtx ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmove . tx . out Ref ( 0 ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ