class EvmClient::EventLog

Attributes

address[R]
block_hash[R]
block_number[R]
contract[R]
data[R]
event[R]
log_index[R]
removed[R]
signature[R]
topics[R]
transaction_hash[R]
transaction_index[R]

Public Class Methods

build(raw_response:, contract:) click to toggle source
# File lib/evm_client/event_log.rb, line 6
def self.build(raw_response:, contract:)
  signature = raw_response['topics'][0]
  event     = contract.events.find { |event| signature.match(event.signature) }

  new(
    address:           raw_response['address'],
    block_hash:        raw_response['blockHash'],
    block_number:      raw_response['blockNumber'].to_i(16),
    data:              raw_response['data'],
    log_index:         raw_response['logIndex'],
    removed:           raw_response['removed'],
    topics:            raw_response['topics'],
    transaction_hash:  raw_response['transactionHash'],
    transaction_index: raw_response['transactionIndex'],
    signature:         signature,
    contract:          contract,
    event:             event
  )
end
new( address:, block_hash:, block_number:, data:, log_index:, removed:, topics:, transaction_hash:, transaction_index:, signature:, contract:, event:) click to toggle source
# File lib/evm_client/event_log.rb, line 26
def initialize( address:, block_hash:, block_number:, data:, log_index:, removed:,
                topics:, transaction_hash:, transaction_index:, signature:, contract:, event:)
  @address            = address
  @block_hash         = block_hash
  @block_number       = block_number
  @data               = data
  @log_index          = log_index
  @removed            = removed
  @topics             = topics
  @transaction_hash   = transaction_hash
  @transaction_index  = transaction_index
  @signature          = signature
  @contract           = contract
  @event              = event
end

Public Instance Methods

name() click to toggle source
# File lib/evm_client/event_log.rb, line 42
def name
  event.name
end
return_values() click to toggle source
# File lib/evm_client/event_log.rb, line 46
def return_values
  return_values = {}

  indexed_params.each_with_index do |param, index|
    return_values[param.name] = topics[index+1]
  end

  non_indexed_params.each_with_index do |param, index|
    return_values[param.name]  = Decoder.new.decode_arguments(non_indexed_params, data)[index]
  end

  return_values
end
to_h() click to toggle source
# File lib/evm_client/event_log.rb, line 60
def to_h
  {
    address:            address,
    block_hash:         block_hash,
    block_number:       block_number,
    data:               data,
    log_index:          log_index,
    removed:            removed,
    topics:             topics,
    transaction_hash:   transaction_hash,
    transaction_index:  transaction_index,
    signature:          signature,
    name:               name,
    contract_name:      contract.name,
    return_values:      return_values
  }
end

Private Instance Methods

indexed_params() click to toggle source
# File lib/evm_client/event_log.rb, line 80
def indexed_params
  [event.indexed_inputs, event.indexed_outputs].flatten.map { |input| OpenStruct.new(input) }
end
non_indexed_params() click to toggle source
# File lib/evm_client/event_log.rb, line 84
def non_indexed_params
  [event.non_indexed_inputs, event.non_indexed_outputs].flatten.map { |output| OpenStruct.new(output) }
end