package Ġcom . r 3 . demos . ub in 2 a . account Ċ Ċ import Ġco . parallel universe . fib ers . Suspend able Ċ import Ġcom . r 3 . demos . ub in 2 a . base .* Ċ import Ġcom . r 3 . demos . ub in 2 a . ob lig ation . Get Queue Ċ import Ġcom . r 3 . demos . ub in 2 a . ob lig ation . O bl igation Ċ import Ġcom . r 3 . demos . ub in 2 a . p ledge . P ledge Ċ import Ġcom . r 3 . demos . ub in 2 a . re deem . Re deem Ċ import Ġnet . cord a . core . flows .* Ċ import Ġnet . cord a . core . node . services . query By Ċ import Ġnet . cord a . finance . contracts . asset . Cash Ċ import Ġnet . cord a . finance . contracts . getC ash Balance Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠGet Ġthe Ġbalance , Ġincoming Ġsum , Ġoutgoing Ġsum Ġand Ġposition Ġof Ġthe Ġbank Ċ Ġ*/ Ċ @ Start able By RPC Ċ @ Initi ating Flow Ċ class ĠGet Balance Flow Ġ: ĠFlow Logic < Bank Model >() Ġ{ ĊĠĠĠ Ġ@ Suspend able ĊĠĠĠ Ġoverride Ġfun Ġcall (): ĠBank Model Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info (" Getting Ġcash Ġbalance ") ĊĠĠĠĠĠĠĠ Ġval Ġmaybe Balance Ġ= Ġservice Hub . getC ash Balance ( SG D ) ĊĠĠĠĠĠĠĠ Ġvar Ġbalance Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠ Ġif Ġ( maybe Balance . quantity Ġ!= Ġbalance ) Ġbalance Ġ= Ġmaybe Balance . quantity ĊĊĠĠĠĠĠĠĠ Ġval Ġincoming O bl ig ations Ġ= Ġsub Flow ( Get Queue . Incoming ()) ĊĠĠĠĠĠĠĠ Ġvar Ġincoming Sum Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠ Ġincoming O bl ig ations . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġincoming Sum Ġ+= Ġit . transaction Amount . to Pen ny () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġoutgoing O bl ig ations Ġ= Ġsub Flow ( Get Queue . Outgoing Un consumed ()) ĊĠĠĠĠĠĠĠ Ġvar Ġoutgoing Sum Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠ Ġoutgoing O bl ig ations . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutgoing Sum Ġ+= Ġit . transaction Amount . to Pen ny () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġbalance Ġ+ Ġincoming Sum Ġ- Ġoutgoing Sum ĊĊĠĠĠĠĠĠĠ Ġreturn ĠBank Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġour Identity . name . organisation , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġour Identity . name . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbalance . to 2 Decimal s (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġincoming Sum . to 2 Decimal s (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutgoing Sum . to 2 Decimal s (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition . to 2 Decimal s ()) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠGet Ġthe Ġbalance Ġof Ġeach Ġof Ġthe Ġb anks Ġin Ġthe Ġnetwork Ċ Ġ*/ Ċ object ĠBalance By B anks Flow Ġ{ ĊĠĠĠ Ġ@ Start able By RPC ĊĠĠĠ Ġ@ Initi ating Flow ĊĠĠĠ Ġclass ĠInit iator Ġ: ĠFlow Logic < List < Bank Model >>() Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suspend able ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcall (): ĠList < Bank Model > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Query ing Ġother Ġbank Ġnode ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbank List Ġ= ĠArrayList < Bank Model >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnetwork Participants Ġ= Ġservice Hub . network Map Cache . all Nodes ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfilter B anks Only Ġ= Ġnetwork Participants . filter Ġ{ Ġnode Info Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode Info . isNot ary ( service Hub ). not () Ġ&& Ġnode Info . is Central Bank (). not () Ġ&& Ġnode Info . is Reg ulator (). not () Ġ&& Ġnode Info . is Me ( service Hub . my Info ). not () Ġ&& Ġnode Info . is Network Map (). not () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter B anks Only . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsession Ġ= Ġinitiate Flow ( it . legal Id entities . first ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Request ing Ġbalance Ġfor Ġbank Ġ${ it . legal Id entities . first (). name . organisation }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsession . send ( Unit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcash States Ġ= Ġsub Flow ( Receive State And Ref Flow < Cash . State >( session )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbalance Ġ= Ġcash States . map Ġ{ Ġit . state . data . amount . quantity Ġ}. sum (). to 2 Decimal s () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeach Bank Ġ= ĠBank Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb ic Ġ= Ġit . legal Id entities . first (). name . organisation , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX 5 0 0 Name Ġ= Ġit . legal Id entities . first (). name . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbalance Ġ= Ġbalance ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbank List . add ( each Bank ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbank List ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġother Ġside Ġof Ġthe Ġabove Ġflow . ĠFor Ġthe Ġpurposes Ġof Ġthis ĠPo C , Ġwe Ġwon 't Ġadd Ġany Ġadditional Ġchecking . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Initi ated By ( Balance By B anks Flow . Init iator :: class ) ĊĠĠĠ Ġclass ĠRes pon der ( val Ġsession : ĠFlow Session ) Ġ: ĠFlow Logic < Unit >() Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suspend able ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcall () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcounter Party Ġ= Ġsession . counter party ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Balance By B anks Flow . Responder : ĠRequest ed Ġbalance Ġfrom Ġbank Ġ${ counter Party . name . organisation }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( counter Party . name Ġ== ĠC ENTR AL _ PAR TY _ X 5 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// throw ĠFlow Exception (" Init iator Ġis Ġnot Ġcentral Ġbank ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsession . receive < Unit >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġall My Cash Ġ= Ġservice Hub . vault Service . query By < Cash . State >(). states ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsub Flow ( Send State And Ref Flow ( session , Ġall My Cash )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠGet Ġthe Ġtransaction Ġhistory Ġof Ġthe Ġbank Ċ Ġ*/ Ċ @ Start able By RPC Ċ @ Initi ating Flow Ċ class ĠGet Transaction History ( val Ġselected Trans Type : ĠInt ? Ġ= Ġnull ) Ġ: ĠFlow Logic < List < Transaction Model >>() Ġ{ ĊĠĠĠ Ġ@ Suspend able ĊĠĠĠ Ġoverride Ġfun Ġcall (): ĠList < Transaction Model > Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info (" Get Transaction History : ĠQuery ing Ġtransaction Ġsnapshot ") ĊĠĠĠĠĠĠĠ Ġval Ġtransactions Snapshot Ġ= Ġservice Hub . validated Transactions . track (). snapshot ĊĠĠĠĠĠĠĠ Ġif Ġ( transactions Snapshot . isEmpty ()) Ġreturn Ġempty List () ĊĊĠĠĠĠĠĠĠ Ġval Ġtransactions History Ġ= ĠArrayList < Transaction Model >() ĊĠĠĠĠĠĠĠ Ġtransactions Snapshot . forEach Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtrans Type Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtrans Id Ġ= Ġit . tx . id . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlinear Id : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsender Ġ= Ġ" Anonymous ĠSender " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġreceiver Ġ= Ġ" Anonymous ĠReceiver " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtransaction Amount Ġ= Ġ 0 . 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġuser Content Ġ= Ġ"{} " Ġ// du hd ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġrequested Date Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġupdated Date Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstatus : ĠString ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOnly Ġ 1 Ġcommand Ġin Ġthe ĠTX ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . tx . commands . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected Trans Type Ġ!= ĠTRAN SACTION _ TYPE . TRANSFER . ordinal Ġ&& Ġselected Trans Type Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ forEach ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĠPeer - to - peer Ġfund Ġtransfer Ġwith ĠCash ĠMove Ġcommand Ġ- Ġfunds Ġmove Ġbil ater ally **/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . tx . commands . any Ġ{ Ġit . value Ġis ĠCash . Commands . Move Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Get Transaction History : ĠQuery ing ĠCash Ġmovement ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcash Outputs Ġ= Ġit . tx . outputs OfType < Cash . State >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Cash Owner Ġ= Ġservice Hub . identity Service . well Known Party From Anonymous ( cash Outputs . first (). owner ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Signer Ġ= Ġservice Hub . identity Service . party From Key ( it . tx . required Signing Keys . first ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrans Type Ġ= ĠTRAN SACTION _ TYPE . TRANSFER . name . toLowerCase () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠO BL IG ATION _ STATUS . SETT LED . name . toLowerCase () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Amount Ġ= Ġcash Outputs . first (). amount . quantity . to 2 Decimal s () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequested Date Ġ= ĠDate ( it . tx . time Window !!. mid point !!. to Epoch Milli ()). to Simple String () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdated Date Ġ= ĠDate ( it . tx . time Window !!. mid point !!. to Epoch Milli ()). to Simple String () ĊĊĊ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( first Signer Ġ!= Ġnull Ġ&& Ġnew Cash Owner Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender Ġ= Ġfirst Signer . name . organisation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver Ġ= Ġnew Cash Owner . name . organisation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĠO bl igation Ġcancellation Ġ- Ġno Ġfunds Ġmovement Ġ**/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( it . tx . commands . any Ġ{ Ġit . value Ġis ĠO bl igation . Exit Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Get Transaction History : ĠQuery ing ĠO bl igation ĠExit Ġmovement ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġl tx Ġ= Ġit . tx . to Ledger Transaction ( service Hub ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoblig ation State Ġ= Ġl tx . inputs OfType < O bl igation . State >(). first () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrans Type Ġ= ĠTRAN SACTION _ TYPE . TRANSFER . name . toLowerCase () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠO BL IG ATION _ STATUS . CANCEL LED . name . toLowerCase () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Id Ġ= Ġoblig ation State . linear Id . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Amount Ġ= Ġoblig ation State . amount . quantity . to 2 Decimal s () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequested Date Ġ= ĠDate ( ob lig ation State . issue Date . to Epoch Milli ()). to Simple String () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdated Date Ġ= ĠDate ( it . tx . time Window !!. mid point !!. to Epoch Milli ()). to Simple String () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġsender Ġand Ġreceiver ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsender Party Ġ= Ġservice Hub . identity Service . well Known Party From Anonymous ( ob lig ation State . borrow er ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreceiver Party Ġ= Ġservice Hub . identity Service . well Known Party From Anonymous ( ob lig ation State . l ender ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sender Party Ġ!= Ġnull Ġ&& Ġreceiver Party Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender Ġ= Ġsender Party . name . organisation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver Ġ= Ġreceiver Party . name . organisation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sender Ġ== Ġ( service Hub . my Info . legal Id entities . first (). name . organisation ) Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver Ġ== Ġ( service Hub . my Info . legal Id entities . first (). name . organisation )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= ĠTransaction Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrans Type Ġ= Ġtrans Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrans Id Ġ= Ġtrans Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Id Ġ= Ġlinear Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender Ġ= Ġsender , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver Ġ= Ġreceiver , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Amount Ġ= Ġtransaction Amount , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Content Ġ= Ġuser Content , Ġ// du hd ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequested Date Ġ= Ġrequested Date , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdated Date Ġ= Ġupdated Date , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġstatus ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransactions History . add ( transaction ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ// ĠEnd Ġcommand Ġ== Ġ 1 Ġcon dt ion ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOnly Ġ 2 Ġcommands Ġin Ġthe ĠTX ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( it . tx . commands . size Ġ== Ġ 2 ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĠO bl igation Ġset tlement Ġ- Ġfunds Ġmove Ġin Ġbil ateral Ġdirection Ġ**/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . tx . commands . any Ġ{ Ġit . value Ġis ĠO bl igation . Set tle Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Get Transaction History : ĠQuery ing ĠO bl igation Ġset tle Ġmovement ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected Trans Type Ġ!= ĠTRAN SACTION _ TYPE . TRANSFER . ordinal Ġ&& Ġselected Trans Type Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ forEach ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġt lx Ġ= Ġit . tx . to Ledger Transaction ( service Hub ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput O bl ig ations Ġ= Ġt lx . inputs OfType < O bl igation . State >() ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrans Type Ġ= ĠTRAN SACTION _ TYPE . TRANSFER . name . toLowerCase () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠO BL IG ATION _ STATUS . SETT LED . name . toLowerCase () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdated Date Ġ= ĠDate ( it . tx . time Window !!. mid point !!. to Epoch Milli ()). to Simple String () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġsender Ġand Ġreceiver ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput O bl ig ations . forEach Ġ{ Ġ( amount , Ġl ender , Ġborrow er , Ġissue Date , Ġlinear Id 1 ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Id Ġ= Ġlinear Id 1 . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequested Date Ġ= ĠDate ( issue Date . to Epoch Milli ()). to Simple String () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Amount Ġ= Ġamount . quantity . to 2 Decimal s () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoblig ation Sender Ġ= Ġservice Hub . identity Service . well Known Party From Anonymous ( borrow er ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoblig ation Receiver Ġ= Ġservice Hub . identity Service . well Known Party From Anonymous ( l ender ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠI Ġonly Ġadd Ġthose Ġthat ĠI Ġeither Ġam Ġthe Ġsender Ġor Ġreceiver ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ob lig ation Sender Ġ!= Ġnull Ġ&& Ġoblig ation Receiver Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender Ġ= Ġoblig ation Sender . name . organisation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver Ġ= Ġoblig ation Receiver . name . organisation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= ĠTransaction Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrans Type Ġ= Ġtrans Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrans Id Ġ= Ġtrans Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Id Ġ= Ġlinear Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender Ġ= Ġsender , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver Ġ= Ġreceiver , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Amount Ġ= Ġtransaction Amount , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Content Ġ= Ġuser Content , Ġ// du hd ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequested Date Ġ= Ġrequested Date , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdated Date Ġ= Ġupdated Date , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġstatus ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransactions History . add ( transaction ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠRe deem Ġtransaction Ġtype Ġ- Ġfunds Ġmove Ġfrom Ġbank Ġout Ġto ĠM AS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( it . tx . commands . any Ġ{ Ġit . value Ġis ĠRe deem . Issue Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Get Transaction History : ĠQuery ing ĠRe deem Ġiss u ance Ġmovement ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected Trans Type Ġ!= ĠTRAN SACTION _ TYPE . RE DE EM . ordinal Ġ&& Ġselected Trans Type Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ forEach ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġl tx Ġ= Ġit . tx . to Ledger Transaction ( service Hub ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrede em States Ġ= Ġl tx . outputs OfType < Re deem . State >() ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrans Type Ġ= ĠTRAN SACTION _ TYPE . RE DE EM . name . toLowerCase () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Id Ġ= Ġrede em States . first (). linear Id . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Amount Ġ= Ġrede em States . first (). amount . quantity . to 2 Decimal s () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequested Date Ġ= ĠDate ( re deem States . first (). issue Date . to Epoch Milli ()). to Simple String () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdated Date Ġ= ĠDate ( it . tx . time Window !!. mid point !!. to Epoch Milli ()). to Simple String () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠO BL IG ATION _ STATUS . SETT LED . name . toLowerCase (). toLowerCase () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġsender Ġand Ġreceiver ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanonymous Request er Ġ= Ġrede em States . first (). requester ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsender Party Ġ= Ġservice Hub . identity Service . well Known Party From Anonymous ( anonymous Request er ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanonymous Approver Ġ= Ġrede em States . first (). appro ver ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreceiver Party Ġ= Ġservice Hub . identity Service . well Known Party From Anonymous ( anonymous Approver ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdd Ġtx Ġinto Ġhistory ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( receiver Party Ġ!= Ġnull Ġ&& Ġsender Party Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= ĠTransaction Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrans Type Ġ= Ġtrans Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrans Id Ġ= Ġtrans Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Id Ġ= Ġlinear Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender Ġ= Ġsender Party . name . organisation , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver Ġ= Ġreceiver Party . name . organisation , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Amount Ġ= Ġtransaction Amount , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Content Ġ= Ġuser Content , Ġ// du hd ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequested Date Ġ= Ġrequested Date , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdated Date Ġ= Ġupdated Date , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġstatus ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransactions History . add ( transaction ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠP ledge Ġtransaction Ġtype Ġ- Ġfunds Ġmove Ġinto Ġbank Ġfrom ĠM AS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( it . tx . commands . any Ġ{ Ġit . value Ġis ĠP ledge . Issue Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Get Transaction History : ĠQuery ing ĠP ledge Ġiss u ance Ġmovement ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected Trans Type Ġ!= ĠTRAN SACTION _ TYPE . P LED GE . ordinal Ġ&& Ġselected Trans Type Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ forEach ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġl tx Ġ= Ġit . tx . to Ledger Transaction ( service Hub ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp ledge States Ġ= Ġl tx . outputs OfType < P ledge . State >() ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrans Type Ġ= ĠTRAN SACTION _ TYPE . P LED GE . name . toLowerCase () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Id Ġ= Ġp ledge States . first (). linear Id . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Amount Ġ= Ġp ledge States . first (). amount . quantity . to 2 Decimal s () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequested Date Ġ= ĠDate ( p ledge States . first (). issue Date . to Epoch Milli ()). to Simple String () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdated Date Ġ= ĠDate ( it . tx . time Window !!. mid point !!. to Epoch Milli ()). to Simple String () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠO BL IG ATION _ STATUS . SETT LED . name . toLowerCase (). toLowerCase () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġsender Ġand Ġreceiver ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanonymous Request er Ġ= Ġp ledge States . first (). requester ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreceiver Party Ġ= Ġservice Hub . identity Service . well Known Party From Anonymous ( anonymous Request er ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanonymous Approver Ġ= Ġp ledge States . first (). appro ver ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsender Party Ġ= Ġservice Hub . identity Service . well Known Party From Anonymous ( anonymous Approver ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdd Ġtx Ġinto Ġhistory ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( receiver Party Ġ!= Ġnull Ġ&& Ġsender Party Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= ĠTransaction Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrans Type Ġ= Ġtrans Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrans Id Ġ= Ġtrans Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Id Ġ= Ġlinear Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender Ġ= Ġsender Party . name . organisation , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver Ġ= Ġreceiver Party . name . organisation , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Amount Ġ= Ġtransaction Amount , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Content Ġ= Ġuser Content , Ġ// du hd ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequested Date Ġ= Ġrequested Date , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdated Date Ġ= Ġupdated Date , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= Ġstatus ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransactions History . add ( transaction ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ// ĠEnd Ġcommand Ġ== Ġ 2 Ġcondition ĊĠĠĠĠĠĠĠ Ġ} Ġ// ĠEnd Ġtransactions Snapshot . forEach ĊĠĠĠĠĠĠĠ Ġreturn Ġtransactions History . sorted By Descending Ġ{ Ġit . updated Date Ġ} ĊĠĠĠ Ġ} Ċ } Ċ