package Ġio . space . bitcoin core . serializers Ċ Ċ import Ġio . space . bitcoin core . core . I Hash er Ċ import Ġio . space . bitcoin core . io . Bitcoin Input Ċ import Ġio . space . bitcoin core . io . Bitcoin Output Ċ import Ġio . space . bitcoin core . storage . Block Header Ċ Ċ class ĠBlock Header Parser ( private Ġval Ġhash er : ĠI Hash er ) Ġ{ ĊĊĠĠĠ Ġfun Ġparse ( input : ĠBitcoin Input ): ĠBlock Header Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġversion Ġ= Ġinput . readInt () ĊĠĠĠĠĠĠĠ Ġval Ġprevious Block Header Hash Ġ= Ġinput . read Bytes ( 3 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġmer kle Root Ġ= Ġinput . read Bytes ( 3 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġtimestamp Ġ= Ġinput . read Unsigned Int () ĊĠĠĠĠĠĠĠ Ġval Ġbits Ġ= Ġinput . read Unsigned Int () ĊĠĠĠĠĠĠĠ Ġval Ġnonce Ġ= Ġinput . read Unsigned Int () ĊĊĠĠĠĠĠĠĠ Ġval Ġpayload Ġ= Ġserialize ( version , Ġprevious Block Header Hash , Ġmer kle Root , Ġtimestamp , Ġbits , Ġnonce ) ĊĊĠĠĠĠĠĠĠ Ġval Ġhash Ġ= Ġhash er . hash ( payload ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠBlock Header ( version , Ġprevious Block Header Hash , Ġmer kle Root , Ġtimestamp , Ġbits , Ġnonce , Ġhash ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġserialize ( version : ĠInt , Ġprevious Block Header Hash : ĠByteArray , Ġmer kle Root : ĠByteArray , Ġtimestamp : ĠLong , Ġbits : ĠLong , Ġnonce : ĠLong ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBitcoin Output () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. writeInt ( version ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. write ( previous Block Header Hash ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. write ( mer kle Root ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Unsigned Int ( timestamp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Unsigned Int ( bits ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Unsigned Int ( nonce ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toByteArray () ĊĠĠĠ Ġ} Ċ } Ċ