package Ġcc . ether space Ċ Ċ import Ġorg . bouncycastle . pq c . math . linear algebra . Byte Utils Ċ import Ġorg . web 3 j . tx . Contract Ċ import Ġorg . web 3 j . tx . Managed Transaction Ċ import Ġorg . web 3 j . utils . Numeric Ċ import Ġjava . io . IOException Ċ import Ġjava . lang . reflect . Type Ċ import Ġjava . math . BigInteger Ċ import Ġjava . nio . ByteBuffer Ċ Ċ @ Suppress (" unused ") Ċ interface ĠWeb 3 Ġ{ ĊĠĠĠ Ġval Ġeth : ĠE th ĊĠĠĠ Ġval Ġabi : ĠAb i ĊĊĠĠĠ Ġinterface ĠAb i Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġencode Function Call ( parameters : ĠList < Any >, Ġfunction Name : ĠString ): ĠString ĊĊĠĠĠĠĠĠĠ Ġfun Ġdecode Parameters ( types : ĠList < Type >, Ġhex String : ĠString ): ĠList < Any > ĊĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġdecode Log ( clazz : ĠClass < T >, Ġhex String : ĠString , Ġtopics : ĠList < String >): ĠT ? ĊĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġencode Event Signature ( clazz : ĠClass < T >): ĠString ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠE th Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaccounts : ĠAccounts ĊĠĠĠĠĠĠĠ Ġval Ġpersonal : ĠPersonal ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠ Ġfun Ġsign ( data To Sign : ĠString , Ġaddress : ĠString ): ĠString ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠ Ġfun Ġcall ( transaction Object : ĠTransaction Object , Ġdefault Block : ĠDefault Block Ġ= ĠDefault Block . LATE ST ): ĠString ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠ Ġfun Ġget Transaction Count ( address : ĠString , Ġdefault Block : ĠDefault Block Ġ= ĠDefault Block . LATE ST ): ĠBigInteger ĊĊĠĠĠĠĠĠĠ Ġfun Ġsign Transaction ( transaction Object : ĠTransaction Object , Ġcredentials : ĠCredentials ): ĠString ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠ Ġfun Ġsend Transaction ( transaction Object : ĠTransaction Object , Ġcredentials : ĠCredentials ): ĠString ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠ Ġfun Ġsend Signed Transaction ( signed Transaction Data : ĠString ): ĠString ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠ Ġfun Ġget Transaction Receipt ( transaction Hash : ĠString ): ĠTransaction Receipt ? ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠ Ġfun Ġget Balance ( address : ĠString , Ġdefault Block : ĠDefault Block Ġ= ĠDefault Block . LATE ST ): ĠBigInteger ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠAccounts Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠ Ġfun Ġsign ( message : ĠString , ĠprivateKey : ĠString ): ĠSignature ĊĊĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠ Ġfun Ġsign ( message Hash : ĠByteArray , ĠprivateKey : ĠString ): ĠSignature ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠPersonal Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠ Ġfun Ġec Recover ( data That Was Signed : ĠByteArray , Ġsignature : ĠSignature ): ĠString ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠSignature ( val Ġv : ĠByte , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġr : ĠByteArray , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs : ĠByteArray ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsignature : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= ĠNumeric . to HexString ( signature Encode ( v , Ġr , Ġs )) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġsignature Encode ( v : ĠByte , Ġr : ĠByteArray , Ġs : ĠByteArray ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( r . size Ġ== Ġ 3 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( s . size Ġ== Ġ 3 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( v . toInt () Ġ== Ġ 2 7 Ġ|| Ġv . toInt () Ġ== Ġ 2 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠByteBuffer . allocate ( SIGNATURE _ LENGTH ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . put ( r ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . put ( s ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer . put ( v ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( buffer . position () Ġ== ĠSIGN ATURE _ LENGTH ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbuffer . array () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠDefault Block ( val Ġvalue : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconstructor ( block Number : ĠBigInteger ) Ġ: Ġthis ( Numeric . encode Quantity ( block Number )) ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠE AR LI EST Ġ= ĠDefault Block (" ear liest ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠL ATE ST Ġ= ĠDefault Block (" latest ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠP ENDING Ġ= ĠDefault Block (" pending ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠTransaction Object ( val Ġfrom : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġto : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue : ĠBigInteger Ġ= ĠBigInteger . ZERO , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgas : ĠBigInteger Ġ= ĠContract . G AS _ LIMIT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgas Price : ĠBigInteger Ġ= ĠManaged Transaction . G AS _ PRICE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnonce : ĠBigInteger ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconstructor ( from : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions : ĠOptions , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnonce : ĠBigInteger ? Ġ= Ġnull ) Ġ: Ġthis ( from , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions . gas , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions . gas Price , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnonce ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSIGN ATURE _ LENGTH Ġ= Ġ 6 5 ĊĊĠĠĠĠĠĠĠ Ġfun Ġattach E thereum Signed Message ( message Hash : ĠByteArray ): ĠByteArray ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprefix Ġ= Ġ"\ u 0 0 1 9 E thereum ĠSigned ĠMessage :\ n ". toByteArray ( Charsets . UTF _ 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprefix Size Ġ= ĠByte Utils . concatenate ( prefix , Ġmessage Hash . size . toString (). toByteArray ( Charsets . UTF _ 8 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠByte Utils . concatenate ( prefix Size , Ġmessage Hash ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }