Class: Pochette::BaseTransactionBuilder

Inherits:
Object
  • Object
show all
Includes:
Contracts::Core
Defined in:
lib/pochette/base_transaction_builder.rb

Overview

Builds transactions from a list of source addresses and a list of recipients. Uses Pochette.backend to fetch unspent outputs and related transaction data. Instantiating will perform all the given queries, you’ll be left with a TransactionBuilder object that is either valid? or not, and if valid you can query the results via to_hash.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ BaseTransactionBuilder

Returns a new instance of BaseTransactionBuilder.



29
30
31
32
33
34
35
36
37
38
# File 'lib/pochette/base_transaction_builder.rb', line 29

def initialize(options)
  self.backend = options[:backend] if options[:backend]
  initialize_options(options)
  initialize_fee
  initialize_outputs
  return unless valid?
  select_utxos
  add_change_output
  validate_final_amounts
end

Instance Attribute Details

#errorsObject

Returns the value of attribute errors.



63
64
65
# File 'lib/pochette/base_transaction_builder.rb', line 63

def errors
  @errors
end

Class Method Details

.backendObject

Raises:

  • (NotImplementedError)


11
12
13
# File 'lib/pochette/base_transaction_builder.rb', line 11

def self.backend
  raise NotImplementedError
end

Instance Method Details

#as_hashObject



48
49
50
51
52
53
54
55
56
57
# File 'lib/pochette/base_transaction_builder.rb', line 48

def as_hash
  return nil unless valid?
  { input_total: inputs_amount.to_i,
    output_total: outputs_amount.to_i,
    fee: (inputs_amount - outputs_amount).to_i,
    inputs: inputs,
    outputs: outputs,
    utxos_to_blacklist: inputs.collect{|i| [i[1], i[2]] },
  }
end

#valid?Boolean

Returns:

  • (Boolean)


59
60
61
# File 'lib/pochette/base_transaction_builder.rb', line 59

def valid?
  errors.size == 0
end