package Ġcom . example . contract ĊĊ Ċ import Ġcom . example . state . V oting r State Ċ 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 . transactions . Ledger Transaction Ċ import Ġnet . cord a . core . contracts . require That ĊĊ Ċ // Ġ********* *** Ċ // Ġ* ĠContract Ġ* Ċ // Ġ********* *** Ċ class ĠV oting Contract Ġ: ĠContract Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠUsed Ġto Ġidentify Ġour Ġcontract Ġwhen Ġbuilding Ġa Ġtransaction . ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠID Ġ= Ġ" com . example . contract . V oting Contract " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠUsed Ġto Ġindicate Ġthe Ġtransaction 's Ġintent . ĊĠĠĠ Ġinterface ĠCommands Ġ: ĠCommand Data Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠIssue Ġa Ġnew ĠV ote . ĊĠĠĠĠĠĠĠ Ġclass ĠCast Vote Ġ: ĠCommands ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠA Ġtransaction Ġis Ġvalid Ġif Ġthe Ġverify () Ġfunction Ġof Ġthe Ġcontract Ġof Ġall Ġthe Ġtransaction 's Ġinput Ġand Ġoutput Ġstates ĊĠĠĠ Ġ// Ġdoes Ġnot Ġthrow Ġan Ġexception . ĊĠĠĠ Ġoverride Ġfun Ġverify ( tx : ĠLed ger Transaction ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠVerification Ġlogic Ġgoes Ġhere . ĊĠĠĠĠĠĠĠ Ġval Ġcommand Ġ= Ġtx . commands . require Single Command < Commands >(). value ĊĠĠĠĠĠĠĠ Ġwhen Ġ( command ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠCommands . Cast Vote Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire That () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" There Ġshould Ġbe Ġno Ġinput Ġstate " Ġusing Ġ( tx . inputs . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" There Ġshould Ġbe Ġone Ġinput Ġstate " Ġusing Ġ( tx . outputs . size Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġoutput Ġstate Ġmust Ġbe Ġof Ġtype ĠV oting State " Ġusing Ġ( tx . outputs . get ( 0 ). data Ġis ĠV oting r State ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput State Ġ= Ġtx . outputs . get ( 0 ). data Ġas ĠV oting r State ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġcandidate ĠName Ġ Ġmust Ġbe Ġgreater Ġthan Ġ 8 Ġcharacters Ġlong " Ġusing Ġ( output State . candidate Name . length Ġ> Ġ 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }