Sha256: 01aa7d8445c1f623e357955c94fdba0fe17e7502cb87d15926646950416f8902

Contents?: true

Size: 1.14 KB

Versions: 8

Compression:

Stored size: 1.14 KB

Contents

require 'etherlite/commands/contract/event_base/decode_log_inputs'

module Etherlite::Contract
  class EventBase
    def self.inputs
      nil # To be implemented by sub classes
    end

    def self.original_name
      nil # To be implemented by sub classes
    end

    def self.signature
      @signature ||= begin
        input_sig = inputs.map { |i| i.type.signature }
        "#{original_name}(#{input_sig.join(',')})"
      end
    end

    def self.topic
      '0x' + Etherlite::Utils.sha3(signature)
    end

    def self.decode(_connection, _json)
      new(
        _json['blockNumber'].nil? ? nil : Etherlite::Utils.hex_to_uint(_json['blockNumber']),
        _json['transactionHash'],
        Etherlite::Address.new(_connection, Etherlite::Utils.normalize_address(_json['address'])),
        DecodeLogInputs.for(connection: _connection, inputs: inputs, json: _json)
      )
    end

    attr_reader :block_number, :tx_hash, :address, :attributes

    def initialize(_block_number, _tx_hash, _address, _attributes)
      @block_number = _block_number
      @tx_hash = _tx_hash
      @address = _address
      @attributes = _attributes
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
etherlite-0.5.1 lib/etherlite/contract/event_base.rb
etherlite-0.5.0 lib/etherlite/contract/event_base.rb
etherlite-0.4.2 lib/etherlite/contract/event_base.rb
etherlite-0.4.1 lib/etherlite/contract/event_base.rb
etherlite-0.4.0 lib/etherlite/contract/event_base.rb
etherlite-0.3.0 lib/etherlite/contract/event_base.rb
etherlite-0.2.6 lib/etherlite/contract/event_base.rb
etherlite-0.2.5 lib/etherlite/contract/event_base.rb