Class: Etherlite::Contract::Base

Inherits:
Object
  • Object
show all
Includes:
Api::Address
Defined in:
lib/etherlite/contract/base.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Api::Address

#address, #get_balance

Constructor Details

#initialize(_connection, _normalized_address, _default_account) ⇒ Base

Returns a new instance of Base.



54
55
56
57
58
# File 'lib/etherlite/contract/base.rb', line 54

def initialize(_connection, _normalized_address, )
  @connection = _connection
  @normalized_address = _normalized_address
  @default_account = 
end

Instance Attribute Details

#connectionObject (readonly)

Returns the value of attribute connection.



52
53
54
# File 'lib/etherlite/contract/base.rb', line 52

def connection
  @connection
end

Class Method Details

.at(_address, client: nil, as: nil) ⇒ Object



41
42
43
44
45
46
47
48
49
50
# File 'lib/etherlite/contract/base.rb', line 41

def self.at(_address, client: nil, as: nil)
  _address = Etherlite::Utils.normalize_address_param _address

  if as
    new(as.connection, _address, as)
  else
    client ||= ::Etherlite
    new(client.connection, _address, client.)
  end
end

.bytecodeObject



21
22
23
24
25
26
27
28
29
# File 'lib/etherlite/contract/base.rb', line 21

def self.bytecode
  @bytecode ||= begin
    if /__[^_]+_+/.match? unlinked_bytecode
      raise UnlinkedContractError, 'compiled contract contains unresolved library references'
    end

    unlinked_bytecode
  end
end

.constructorObject



17
18
19
# File 'lib/etherlite/contract/base.rb', line 17

def self.constructor
  nil
end

.deploy(*_args) ⇒ Object



31
32
33
34
35
36
37
38
39
# File 'lib/etherlite/contract/base.rb', line 31

def self.deploy(*_args)
  options = _args.last.is_a?(Hash) ? _args.pop : {}
  as = options[:as] || options[:client].try(:default_account) || Etherlite.

  tx_data = options.fetch(:bytecode, bytecode)
  tx_data += constructor.encode(_args) unless constructor.nil?

  as.send_transaction({ data: tx_data }.merge(options))
end

.eventsObject



9
10
11
# File 'lib/etherlite/contract/base.rb', line 9

def self.events
  @events ||= []
end

.functionsObject



5
6
7
# File 'lib/etherlite/contract/base.rb', line 5

def self.functions
  @functions ||= []
end

.unlinked_bytecodeObject



13
14
15
# File 'lib/etherlite/contract/base.rb', line 13

def self.unlinked_bytecode
  '0x0'
end

Instance Method Details

#get_logs(events: nil, from_block: :earliest, to_block: :latest) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/etherlite/contract/base.rb', line 60

def get_logs(events: nil, from_block: :earliest, to_block: :latest)
  params = {
    address: json_encoded_address,
    fromBlock: Etherlite::Utils.encode_block_param(from_block),
    toBlock: Etherlite::Utils.encode_block_param(to_block)
  }

  params[:topics] = [events.map(&:topic)] unless events.nil?

  logs = @connection.ipc_call(:eth_getLogs, params)
  ::Etherlite::EventProvider.parse_raw_logs(@connection, logs)
end