Class: CoinOp::Bit::Input
- Inherits:
-
Object
- Object
- CoinOp::Bit::Input
- Includes:
- Encodings
- Defined in:
- lib/coin-op/bit/input.rb
Instance Attribute Summary collapse
-
#binary_sig_hash ⇒ Object
Returns the value of attribute binary_sig_hash.
-
#index ⇒ Object
readonly
Returns the value of attribute index.
-
#native ⇒ Object
readonly
Returns the value of attribute native.
-
#output ⇒ Object
readonly
Returns the value of attribute output.
-
#script_sig ⇒ Object
Returns the value of attribute script_sig.
-
#sequence ⇒ Object
readonly
Returns the value of attribute sequence.
-
#sig_hash ⇒ Object
readonly
Returns the value of attribute sig_hash.
-
#signatures ⇒ Object
readonly
Returns the value of attribute signatures.
Instance Method Summary collapse
-
#initialize(options = {}) ⇒ Input
constructor
Takes a Hash containing these fields:.
- #to_json(*a) ⇒ Object
Methods included from Encodings
#base58, #decode_base58, #decode_hex, #hex, #int_to_byte_array
Constructor Details
#initialize(options = {}) ⇒ Input
Takes a Hash containing these fields:
-
:transaction - a Transaction instance
-
:index - the index of the input within the transaction
-
:output - a value representing this input’s unspent output
Optionally:
-
:sequence - an integer used to modify the behavior of lock_time
defaults to 0xFFFFFFFF (lock_time disabled)
-
script_sig_asm - the string form of the scriptSig for this input
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/coin-op/bit/input.rb', line 23 def initialize(={}) @transaction, @index, @output, @network = .values_at :transaction, :index, :output, :network script_sig_asm = [:script_sig_asm] unless @output.is_a? Output @output = Output.new(@output, network: @network) end @native = Bitcoin::Protocol::TxIn.new # TODO: the reverse is cargo-culted from a function in bitcoin-ruby # that doesn't document the reason. Find the explanation in the bitcoin # wiki or in the reference client source and document here. @native.prev_out = decode_hex(@output.transaction_hash).reverse @native.prev_out_index = @output.index if [:sequence] @sequence = [:sequence].to_i @native.sequence = int_to_byte_array(@sequence, endianness: :little) end if script_sig_asm self.script_sig = Bitcoin::Script.binary_from_string(script_sig_asm) end @signatures = [] end |
Instance Attribute Details
#binary_sig_hash ⇒ Object
Returns the value of attribute binary_sig_hash.
8 9 10 |
# File 'lib/coin-op/bit/input.rb', line 8 def binary_sig_hash @binary_sig_hash end |
#index ⇒ Object (readonly)
Returns the value of attribute index.
8 9 10 |
# File 'lib/coin-op/bit/input.rb', line 8 def index @index end |
#native ⇒ Object (readonly)
Returns the value of attribute native.
8 9 10 |
# File 'lib/coin-op/bit/input.rb', line 8 def native @native end |
#output ⇒ Object (readonly)
Returns the value of attribute output.
8 9 10 |
# File 'lib/coin-op/bit/input.rb', line 8 def output @output end |
#script_sig ⇒ Object
Returns the value of attribute script_sig.
8 9 10 |
# File 'lib/coin-op/bit/input.rb', line 8 def script_sig @script_sig end |
#sequence ⇒ Object (readonly)
Returns the value of attribute sequence.
8 9 10 |
# File 'lib/coin-op/bit/input.rb', line 8 def sequence @sequence end |
#sig_hash ⇒ Object (readonly)
Returns the value of attribute sig_hash.
8 9 10 |
# File 'lib/coin-op/bit/input.rb', line 8 def sig_hash @sig_hash end |
#signatures ⇒ Object (readonly)
Returns the value of attribute signatures.
8 9 10 |
# File 'lib/coin-op/bit/input.rb', line 8 def signatures @signatures end |
Instance Method Details
#to_json(*a) ⇒ Object
70 71 72 73 74 75 76 77 |
# File 'lib/coin-op/bit/input.rb', line 70 def to_json(*a) { output: self.output, signatures: self.signatures.map {|b| hex(b) }, sig_hash: self.sig_hash || "", script_sig: self.script_sig || "" }.to_json(*a) end |