package Ġbitcoin . wallet . kit . models Ċ Ċ import Ġbitcoin . wall let . kit . io . Bitcoin Input Ċ import Ġbitcoin . wall let . kit . io . Bitcoin Output Ċ import Ġio . realm . Realm Object Ċ import Ġio . realm . Realm Results Ċ import Ġio . realm . annotations . Link ing Objects Ċ Ċ /** Ċ Ġ* ĠTransaction Ġinput Ċ Ġ* Ċ Ġ* Ġ ĠSize ĠĠĠĠĠĠĠ ĠField ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDescription Ċ Ġ* Ġ Ġ=== ĠĠĠĠĠĠĠĠ Ġ===== ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ= ========== Ċ Ġ* ĠĠ 3 2 Ġbytes ĠĠĠ ĠOutput Hash ĠĠĠĠĠĠĠĠĠĠ ĠDouble ĠSHA - 2 5 6 Ġhash Ġof Ġthe Ġtransaction Ġcontaining Ġthe Ġoutput Ġto Ġbe Ġused Ġby Ġthis Ġinput Ċ Ġ* ĠĠ 4 Ġbytes ĠĠĠĠ ĠOutput Index ĠĠĠĠĠĠĠĠĠ ĠIndex Ġof Ġthe Ġoutput Ġwithin Ġthe Ġtransaction Ċ Ġ* Ġ ĠVar Int ĠĠĠĠĠ ĠInput Script Length ĠĠĠ ĠScript Ġlength Ċ Ġ* Ġ ĠVariable ĠĠĠ ĠInput Script ĠĠĠĠĠĠĠĠĠ ĠScript Ċ Ġ* ĠĠ 4 Ġbytes ĠĠĠĠ ĠInput Seq Number ĠĠĠĠĠĠ ĠInput Ġsequence Ġnumber Ġ( ir relevant Ġunless Ġtransaction ĠLock Time Ġis Ġnon - zero ) Ċ Ġ*/ Ċ open Ġclass ĠTransaction Input Ġ: ĠRealm Object Ġ{ ĊĠĠĠ Ġ// ĠThe Ġhash Ġof Ġthe Ġreferenced Ġtransaction ĊĠĠĠ Ġvar Ġprevious Output Hash : ĠByteArray Ġ= Ġbyte ArrayOf () ĊĊĠĠĠ Ġ// ĠThe Ġindex Ġof Ġthe Ġspecific Ġoutput Ġin Ġthe Ġtransaction ĊĠĠĠ Ġvar Ġprevious Output Index : ĠLong Ġ= Ġ 0 ĊĊĠĠĠ Ġ// ĠInput Ġscript ĊĠĠĠ Ġvar Ġsig Script : ĠByteArray Ġ= Ġbyte ArrayOf () ĊĊĠĠĠ Ġ// ĠInput Ġsequence Ġnumber ĊĠĠĠ Ġvar Ġsequence : ĠLong Ġ= Ġ 0 ĊĊĠĠĠ Ġ// ĠInternal Ġfields ĊĠĠĠ Ġvar Ġprevious Output : ĠTransaction Output ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġprevious Output Hex Re versed Ġ= Ġ"" ĊĠĠĠ Ġvar Ġkey Hash : ĠByteArray ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġaddress : ĠString ? Ġ= Ġ"" ĊĊĠĠĠ Ġ@ Link ing Objects (" inputs ") ĊĠĠĠ Ġval Ġtransactions : ĠRealm Results < Transaction >? Ġ= Ġnull ĊĠĠĠ Ġval Ġtransaction : ĠTransaction ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġtransactions ?. first () ĊĊĠĠĠ Ġconstructor () ĊĠĠĠ Ġconstructor ( input : ĠBitcoin Input ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprevious Output Hash Ġ= Ġinput . read Bytes ( 3 2 ) ĊĠĠĠĠĠĠĠ Ġprevious Output Index Ġ= Ġinput . read Unsigned Int () ĊĠĠĠĠĠĠĠ Ġval Ġsig Script Length Ġ= Ġinput . read Var Int () ĊĠĠĠĠĠĠĠ Ġsig Script Ġ= Ġinput . read Bytes ( sig Script Length . toInt ()) ĊĠĠĠĠĠĠĠ Ġsequence Ġ= Ġinput . read Unsigned Int () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġto ByteArray (): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBitcoin Output () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. write ( previous Output Hash ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Unsigned Int ( previous Output Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Var Int ( sig Script . size . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. write ( sig Script ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Unsigned Int ( sequence ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toByteArray () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġto Signature ByteArray ( for Current Input Signature : ĠBoolean ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= ĠBitcoin Output () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. write ( previous Output Hash ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. write Unsigned Int ( previous Output Index ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( for Current Input Signature ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprev Output Ġ= ĠcheckNotNull ( previous Output ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" No Ġprevious Ġoutput ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . write Var Int ( prev Output . lock ing Script . size . to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. write ( prev Output . lock ing Script ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . write Var Int ( 0 L ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġoutput . write Unsigned Int ( sequence ). toByteArray () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvalidate () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġthrow Ġnew ĠValidate Exception (" Verify Ġsignature Ġfailed ."); ĊĠĠĠ Ġ} Ċ Ċ } Ċ