package Ġorg . know ledger . agent . be havi ours . ledger Ċ Ċ import Ġj ade . core . Agent Ċ import Ġj ade . core . be havi ours . Simple Behaviour Ċ import Ġorg . know ledger . base 6 4 . base 6 4 Encoded Ċ import Ġorg . know ledger . ledger . mining . BlockState Ċ import Ġorg . know ledger . ledger . mining . Min ing State Ċ import Ġorg . know ledger . ledger . service . handles . Chain Handle Ċ import Ġorg . tiny log . kotlin . Logger ĊĊ Ċ class ĠMin ing Ġinternal Ġconstructor ( ĊĠĠĠ Ġagent : ĠAgent , ĊĠĠĠ Ġprivate Ġval Ġsc : ĠChain Handle , ĊĠĠĠ Ġprivate Ġvar Ġstate : ĠBlock State . Block Ready Ċ ) Ġ: ĠSimple Behaviour ( agent ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġdone : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġaction () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( state . attempt Mine ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMin ing State . At tempted Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sc . check Again st Target ( state . hash Id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdone Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . debug Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Finished Ġmining Ġblock Ġno .${ sc . current Block height } Ġ-> Ġ${ state . mer kle Root }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . debug Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Block Ġunder Ġthreshold : Ġ${ state . hash Id . base 6 4 Encoded ()} Ġ< Ġ${ sc . current Difficulty . base 6 4 Encoded () }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMin ing State . Refresh Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġrefresh Ġ= Ġsc . refresh Header ( state . mer kle Root )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBlock State . Block Ready Ġ-> Ġstate Ġ= Ġrefresh ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBlock State . Block Failure Ġ-> ĠLogger . error (" Block ĠFailure ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBlock State . Block Not Ready Ġ-> ĠLogger . error (" Block ĠNot ĠReady ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġdone (): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġdone Ċ } Ċ