class Ethereum::Receipt

Public Class Methods

new(*args) click to toggle source

initialize(state_root, gas_used, logs, bloom: nil)

Calls superclass method
# File lib/ethereum/receipt.rb, line 16
def initialize(*args)
  h = normalize_args args
  super(h)
  raise ArgumentError, "Invalid bloom filter" if h[:bloom] && h[:bloom] != self.bloom
end

Public Instance Methods

bloom() click to toggle source
# File lib/ethereum/receipt.rb, line 22
def bloom
  bloomables = logs.map {|l| l.bloomables }
  Bloom.from_array bloomables.flatten
end

Private Instance Methods

normalize_args(args) click to toggle source
# File lib/ethereum/receipt.rb, line 29
def normalize_args(args)
  options = args.last.is_a?(Hash) ? args.pop : {}
  field_set = %i(state_root gas_used logs bloom) # different order than serializable fields

  h = {}
  fields = field_set[0,args.size]
  fields.zip(args).each do |(field, arg)|
    h[field] = arg
    field_set.delete field
  end

  options.each do |field, value|
    if field_set.include?(field)
      h[field] = value
      field_set.delete field
    end
  end

  field_set.each {|field| h[field] = nil }
  h
end