// package Ġio . contract Manager . proxy Ċ // Ċ // import Ġio . contract Manager . annotations . Consider ation Ċ // import Ġio . contract Manager . annotations . Fact Def Ċ // import Ġio . contract Manager . annotations . Output Def Ċ // import Ġio . contract Manager . annotations . Pro posed Def Ċ // import Ġio . contract Manager . definition . Definition Service Ċ // import Ġio . contract Manager . Contract Manager Ċ // import Ġio . contract Manager . P 8 E Contract Engine Ċ // import Ġio . contract Manager . spec . P 8 e Contract Ċ // import Ġio . p 8 e . crypto . Provenance Key Generator Ċ // import Ġio . pro venance . os . client . Mock Os Client Ċ // import Ġio . pro venance . proto . Bank Protos . Financial Account Ċ // import Ġio . pro venance . proto . contract Manager . Common . Boolean Result Ċ // import Ġio . pro venance . proto . contract Manager . Common . Location Ċ // import Ġio . pro venance . proto . contract Manager . Contract Specs . Party Type . AFF ILI ATE Ċ // import Ġio . pro venance . proto . contract Manager . Contract Specs . Party Type . OM NI BUS Ċ // import Ġio . pro venance . proto . contract Manager . Contracts .* Ċ // import Ġio . pro venance . proto . contract Manager . Contracts . Execution Result . Result Ċ // import Ġorg . bouncycastle . j ce . provider . Bo unc y Castle Provider Ċ // import Ġorg . junit . jupiter . api . Test Ċ // import Ġorg . junit . jupiter . api . fail Ċ // import Ġjava . security . Security Ċ // import Ġkotlin . reflect . jvm . jvm Name Ċ // Ċ // class ĠMock P 8 E Engine : ĠP 8 e Contract Engine Ġ{ Ċ // ĠĠĠ Ġoverride Ġfun Ġhandle ( contract : ĠContract ): ĠContract Ġ{ Ċ // ĠĠĠĠĠĠĠ ĠTODO (" not Ġimplemented ") Ġ// To Ġchange Ġbody Ġof Ġcreated Ġfunctions Ġuse ĠFile Ġ| ĠSettings Ġ| ĠFile ĠTemplates . Ċ // ĠĠĠ Ġ} Ċ //} Ċ // Ċ // class ĠContract Proxy Test Ġ{ Ċ // ĠĠĠ Ġ@ Test Ċ // ĠĠĠ Ġinternal Ġfun Ġtest Proxy Consider ation () Ġ{ Ċ // ĠĠĠĠĠĠĠ ĠSecurity . add Provider ( Bo unc y Castle Provider ()) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġval Ġos Client Ġ= ĠMock Os Client () Ċ // ĠĠĠĠĠĠĠ Ġval Ġkey Pair Ġ= ĠPro venance Key Generator . generate KeyPair () Ċ // Ċ // ĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġos Client . put ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠBoolean Result . newBuilder (). setValue ( false ). build (), Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġkey Pair . public , Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġ" some - signature ". toByteArray () Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġval Ġdefinition Service Ġ= ĠDefinition Service ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġos Client , Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġkey Pair Ċ // ĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠ Ġval Ġconsideration Name Ġ= Ġ" consent " Ċ // ĠĠĠĠĠĠĠ Ġval Ġcontract Ġ= ĠContract . newBuilder () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Consider ations ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConsider ation Proto . newBuilder () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Consider ation Name ( consider ation Name ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Result ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExecution Result . newBuilder () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Result ( Result . PASS ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Fact ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFact . newBuilder () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setName (" fact - name ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setData Location ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocation . newBuilder () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Class name ( Boolean Result :: class . jvm Name ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Uri ( obj . obj . uri ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ). build () Ċ // Ċ // ĠĠĠĠĠĠĠ Ġval Ġcontract Manager Ġ= ĠContract Manager ( definition Service , ĠMock P 8 E Engine ()) Ċ // ĠĠĠĠĠĠĠ Ġval Ġom ni Account Agreement Ġ= ĠContract Proxy . new Proxy ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġcontract Manager , Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġcontract , Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠSome Contract :: class . java , Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ"" Ċ // ĠĠĠĠĠĠĠ Ġ) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġval Ġconsent Ġ= Ġom ni Account Agreement . consent () Ċ // ĠĠĠĠĠĠĠ Ġassert (! consent . value ) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġtry Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġom ni Account Agreement . account Created ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFin ancial Account . getDefaultInstance (), Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconsent Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Invocation Ġof Ġaccount Created Ġshould Ġhave Ġfailed Ġsince Ġit Ġdoesn 't Ġhave Ġan Ġexecution Ġresult .") Ċ // ĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( expected : ĠIllegalStateException ) Ġ{} Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġ@ Test Ċ // ĠĠĠ Ġinternal Ġfun Ġtest No Args Agreement () Ġ{ Ċ // ĠĠĠĠĠĠĠ ĠSecurity . add Provider ( Bo unc y Castle Provider ()) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġval Ġos Client Ġ= ĠMock Os Client () Ċ // ĠĠĠĠĠĠĠ Ġval Ġkey Pair Ġ= ĠPro venance Key Generator . generate KeyPair () Ċ // Ċ // ĠĠĠĠĠĠĠ Ġval Ġobj Ġ= Ġos Client . put ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠBoolean Result . newBuilder (). setValue ( false ). build (), Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġkey Pair . public , Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġ" some - signature ". toByteArray () Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġval Ġdefinition Service Ġ= ĠDefinition Service ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġos Client , Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġkey Pair Ċ // ĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠ Ġval Ġconsideration Name Ġ= Ġ" consent " Ċ // ĠĠĠĠĠĠĠ Ġval Ġcontract Ġ= ĠContract . newBuilder () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Consider ations ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConsider ation Proto . newBuilder () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Consider ation Name ( consider ation Name ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Result ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExecution Result . newBuilder () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Result ( Result . PASS ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Fact ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFact . newBuilder () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setName (" fact - name ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setData Location ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocation . newBuilder () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Class name ( Boolean Result :: class . jvm Name ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Uri ( obj . obj . uri ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ). build () Ċ // Ċ // ĠĠĠĠĠĠĠ Ġval Ġcontract Manager Ġ= ĠContract Manager ( definition Service , ĠMock P 8 E Engine ()) Ċ // ĠĠĠĠĠĠĠ Ġval Ġom ni Account Agreement Ġ= ĠContract Proxy . new Proxy ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġcontract Manager , Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġcontract , Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠNo Args Contract :: class . java Ċ // ĠĠĠĠĠĠĠ Ġ) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġval Ġconsent Ġ= Ġom ni Account Agreement . consent () Ċ // ĠĠĠĠĠĠĠ Ġassert (! consent . value ) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġtry Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġom ni Account Agreement . account Created ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFin ancial Account . getDefaultInstance (), Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconsent Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" Invocation Ġof Ġaccount Created Ġshould Ġhave Ġfailed Ġsince Ġit Ġdoesn 't Ġhave Ġan Ġexecution Ġresult .") Ċ // ĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( expected : ĠIllegalStateException ) Ġ{} Ċ // ĠĠĠ Ġ} Ċ //} Ċ // Ċ // open Ġclass ĠSome Contract (@ Fact Def (" blah ") Ġval Ġbl ah : ĠString ): ĠP 8 e Contract () Ġ{ Ċ // ĠĠĠ Ġ/** Ċ // ĠĠĠĠ Ġ* ĠIn Ġorder Ġfor Ġan Ġaffili ate Ġto Ġhave Ġan Ġomn ibus Ġsub Ġaccount Ġcreated , Ġthey Ġhave Ġto Ġprovide Ġconsent Ġto Ġdo Ġso . Ċ // ĠĠĠĠ Ġ*/ Ċ // ĠĠĠ Ġ@ Consider ation ( AFF ILI ATE ) Ċ // ĠĠĠ Ġ@ Output Def (" om ni Account Consent ") Ċ // ĠĠĠ Ġopen Ġfun Ġconsent () Ġ= Ġimplied Consider ation () Ċ // Ċ // ĠĠĠ Ġ/** Ċ // ĠĠĠĠ Ġ* ĠRecord Ġthe Ġnewly Ġcreated Ġaccount Ġto Ġthe Ġblockchain . Ċ // ĠĠĠĠ Ġ*/ Ċ // ĠĠĠ Ġ@ Consider ation ( OM NI BUS ) Ċ // ĠĠĠ Ġ@ Output Def (" om ni Account ") Ċ // ĠĠĠ Ġopen Ġfun Ġaccount Created (@ Pro posed Def (" financial Account ") Ġfinancial Account : ĠFin ancial Account , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Fact Def (" om ni Account Consent ") Ġom ni Account Consent : ĠBoolean Result ) Ġ= Ġfinancial Account Ċ //} Ċ // Ċ // open Ġclass ĠNo Args Contract : ĠP 8 e Contract () Ġ{ Ċ // ĠĠĠ Ġ@ Consider ation ( AFF ILI ATE ) Ċ // ĠĠĠ Ġ@ Output Def (" om ni Account Consent ") Ċ // ĠĠĠ Ġopen Ġfun Ġconsent () Ġ= Ġimplied Consider ation () Ċ // Ċ // ĠĠĠ Ġ/** Ċ // ĠĠĠĠ Ġ* ĠRecord Ġthe Ġnewly Ġcreated Ġaccount Ġto Ġthe Ġblockchain . Ċ // ĠĠĠĠ Ġ*/ Ċ // ĠĠĠ Ġ@ Consider ation ( OM NI BUS ) Ċ // ĠĠĠ Ġ@ Output Def (" om ni Account ") Ċ // ĠĠĠ Ġopen Ġfun Ġaccount Created (@ Pro posed Def (" financial Account ") Ġfinancial Account : ĠFin ancial Account , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Fact Def (" om ni Account Consent ") Ġom ni Account Consent : ĠBoolean Result ) Ġ= Ġfinancial Account Ċ //} Ċ