package Ġio . pl as mas im ulator . ethereum . models Ċ Ċ import Ġio . pl as mas im ulator . ethereum . models . ETH Block Ċ import Ġio . pl as mas im ulator . ethereum . models . ETH Transaction Ċ Ċ class ĠETH Chain Ġ{ ĊĠ Ġvar Ġblocks Ġ= Ġmutable Map Of < Int , ĠETH Block >() ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġval Ġgenesis Block Ġ= ĠETH Block ( 0 ,- 1 , Ġmutable ListOf ()) ĊĠĠĠ Ġthis . add Block ( genesis Block ) ĊĠ Ġ} ĊĊĠ Ġfun Ġadd Block ( block : ĠETH Block ) Ġ{ ĊĠĠĠ Ġthis . blocks . put ( block . number , Ġblock ) ĊĠ Ġ} ĊĊĠ Ġfun Ġvalidate Block ( block : ĠETH Block ): ĠBoolean Ġ{ ĊĠĠĠ Ġ// ĠTODO ĊĠĠĠ Ġreturn Ġtrue ĊĠ Ġ} ĊĊĠ Ġfun Ġvalidate Transaction ( tx : ĠETH Transaction ): ĠBoolean Ġ{ ĊĠĠĠ Ġ// ĠTODO ĊĠĠĠ Ġreturn Ġtrue ĊĠ Ġ} ĊĊĠ Ġfun Ġget Block ( number : ĠInt ) Ġ{ ĊĠĠĠ Ġblocks . get ( number ) ĊĠ Ġ} ĊĊĠ Ġfun Ġcontains Block ( block Num : ĠInt ) Ġ: ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġblocks . containsKey ( block Num ) ĊĠ Ġ} ĊĊĠ Ġfun ĠgetLast Block (): ĠETH Block ? Ġ{ ĊĠĠĠ Ġreturn Ġblocks . get ( blocks . keys . sorted (). last ()) ĊĠ Ġ} Ċ Ċ } Ċ