package Ġedu . d hu . auction . node . contract Ċ Ċ import Ġedu . d hu . auction . node . state . Asset Ċ import Ġnet . cord a . core . contracts . Command Data Ċ import Ġnet . cord a . core . contracts . Contract Ċ import Ġnet . cord a . core . contracts . require Single Command Ċ import Ġnet . cord a . core . contracts . require That Ċ import Ġnet . cord a . core . transactions . Ledger Transaction Ċ import Ġorg . apache . logging . log 4 j . Log Manager Ċ Ċ class ĠAsset Contract Ġ: ĠContract Ġ{ ĊĠĠĠ Ġ@ Throws ( IllegalArgumentException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġverify ( tx : ĠLed ger Transaction ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( tx . commands . isNotEmpty ()) Ġ{ Ġ" Commands Ġis ĠEmpty " Ġ} ĊĠĠĠĠĠĠĠ Ġwhen Ġ( tx . commands . require Single Command ( Command Data :: class . java ). value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAsset Create Command Ġ-> Ġrequire That Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Creating ĠAsset ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Asset ĠMust ĠHave ĠName " Ġusing Ġ( tx . outputs OfType ( Asset :: class . java ). single (). name . isNotBlank ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAsset Transfer Command Ġ-> Ġrequire That Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Trans f erring ĠAsset ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġtx . inputs OfType ( Asset :: class . java ). single () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= Ġtx . outputs OfType ( Asset :: class . java ). single () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Owner Ġand ĠNew Owner ĠSignature ĠRequired " Ġusing Ġ( tx . commands . single (). sign ers . contains All ( listOf ( input . owner . own ing Key , Ġoutput . owner . own ing Key ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error (" Command ĠError ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Command ĠError ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠLog Manager . getLogger ( Asset Contract :: class . java ) ĊĠĠĠ Ġ} Ċ }