package Ġorg . know ledger . ledger . storage . block header Ċ Ċ import Ġkotlinx . serialization . Binary Format Ċ import Ġorg . know ledger . ledger . config . Block Params Ċ import Ġorg . know ledger . ledger . config . Chain Id Ċ import Ġorg . know ledger . ledger . crypto . Hash Ċ import Ġorg . know ledger . ledger . crypto . hash . Hash ers Ċ import Ġorg . know ledger . ledger . database . Managed Session Ċ import Ġorg . know ledger . ledger . database . Storage ID Ċ import Ġorg . know ledger . ledger . results . Outcome Ċ import Ġorg . know ledger . ledger . service . results . Update Failure Ċ import Ġorg . know ledger . ledger . storage . Nonce Re gen Ċ import Ġorg . know ledger . ledger . storage . Storage Aware Ċ import Ġorg . know ledger . ledger . storage . Storage Pairs Ċ import Ġorg . know ledger . ledger . storage . replace Ċ import Ġorg . know ledger . ledger . storage . simple Update Ċ Ċ internal Ġclass ĠStorage Aware Block Header ( ĊĠĠĠ Ġinternal Ġval Ġblock Header : ĠHas hed Block Header Impl Ċ ) Ġ: ĠHas hed Block Header Ġby Ġblock Header , ĊĠĠĠ ĠMer kle Tree Update , ĠN once Re gen , ĠHash Re gen , ĊĠĠĠ ĠStorage Aware < Has hed Block Header > Ġ{ ĊĠĠĠ Ġoverride Ġval Ġhash : ĠHash ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġblock Header . hash ĊĊĠĠĠ Ġoverride Ġval Ġinvalid ated : ĠArray < Storage Pairs <* >> Ġ= ĊĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStorage Pairs . Native (" nonce "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStorage Pairs . Hash (" mer kle Root "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStorage Pairs . Hash (" hash "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStorage Pairs . Native (" seconds ") ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġvar Ġid : ĠStorage ID ? Ġ= Ġnull ĊĊĠĠĠ Ġinternal Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġchain Id : ĠChain Id , Ġhash er : ĠHash ers , ĊĠĠĠĠĠĠĠ Ġencoder : ĠBinary Format , Ġprevious Hash : ĠHash , ĊĠĠĠĠĠĠĠ Ġblock Params : ĠBlock Params ĊĠĠĠ Ġ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠ Ġblock Header Ġ= ĠHas hed Block Header Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchain Id Ġ= Ġchain Id , Ġhash er Ġ= Ġhash er , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġencoder Ġ= Ġencoder , Ġprevious Hash Ġ= Ġprevious Hash , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock Params Ġ= Ġblock Params ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġupdate Hash () Ġ{ ĊĠĠĠĠĠĠĠ Ġblock Header . update Hash () ĊĠĠĠĠĠĠĠ Ġinvalid ated . replace ( 2 , Ġhash ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate ( ĊĠĠĠĠĠĠĠ Ġsession : ĠManaged Session ĊĠĠĠ Ġ): ĠOut come < Storage ID , ĠUpdate Failure > Ġ= ĊĠĠĠĠĠĠĠ Ġsimple Update ( invalid ated ) ĊĊĠĠĠ Ġoverride Ġfun Ġupdate Mer kle Tree ( new Root : ĠHash ) Ġ{ ĊĠĠĠĠĠĠĠ Ġblock Header . update Mer kle Tree ( new Root ) ĊĠĠĠĠĠĠĠ Ġif Ġ( id Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalid ated . replace ( 1 , Ġnew Root ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalid ated . replace ( 2 , Ġhash ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalid ated . replace ( 3 , Ġseconds ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnew Nonce () Ġ{ ĊĠĠĠĠĠĠĠ Ġblock Header . new Nonce () ĊĠĠĠĠĠĠĠ Ġinvalid ated . replace ( 0 , Ġnonce ) ĊĠĠĠĠĠĠĠ Ġinvalid ated . replace ( 2 , Ġhash ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġblock Header Ġ== Ġother ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ= ĊĠĠĠĠĠĠĠ Ġblock Header . hashCode () Ċ }