class Etherlite::Transaction

Attributes

tx_hash[R]

Public Class Methods

new(_connection, _tx_hash) click to toggle source
# File lib/etherlite/transaction.rb, line 5
def initialize(_connection, _tx_hash)
  @connection = _connection
  @tx_hash = _tx_hash
  @loaded = false
end

Public Instance Methods

block_hash() click to toggle source
# File lib/etherlite/transaction.rb, line 48
def block_hash
  return nil unless mined?

  original['blockHash']
end
block_number() click to toggle source
# File lib/etherlite/transaction.rb, line 42
def block_number
  return nil unless mined?

  Utils.hex_to_uint(original['blockNumber'])
end
confirmations() click to toggle source
# File lib/etherlite/transaction.rb, line 54
def confirmations
  return 0 unless mined?

  (@connection.eth_block_number - block_number) + 1
end
contract_address() click to toggle source
# File lib/etherlite/transaction.rb, line 94
def contract_address
  receipt && receipt['contractAddress']
end
events() click to toggle source
# File lib/etherlite/transaction.rb, line 90
def events
  receipt && ::Etherlite::EventProvider.parse_raw_logs(@connection, logs)
end
failed?() click to toggle source
# File lib/etherlite/transaction.rb, line 78
def failed?
  status == 0
end
gas() click to toggle source
# File lib/etherlite/transaction.rb, line 30
def gas
  original && Utils.hex_to_uint(original['gas'])
end
gas_price() click to toggle source
# File lib/etherlite/transaction.rb, line 34
def gas_price
  original && Utils.hex_to_uint(original['gasPrice'])
end
gas_used() click to toggle source
# File lib/etherlite/transaction.rb, line 82
def gas_used
  receipt && Utils.hex_to_uint(receipt['gasUsed'])
end
logs() click to toggle source
# File lib/etherlite/transaction.rb, line 86
def logs
  receipt && (receipt['logs'] || [])
end
mined?() click to toggle source
# File lib/etherlite/transaction.rb, line 26
def mined?
  original.present? && !original['blockNumber'].nil?
end
original() click to toggle source
# File lib/etherlite/transaction.rb, line 17
def original
  refresh unless @loaded
  @original
end
receipt() click to toggle source

receipt attributes

# File lib/etherlite/transaction.rb, line 62
def receipt
  return nil unless mined?
  
  @receipt ||= @connection.eth_get_transaction_receipt(@tx_hash)
end
refresh() click to toggle source
# File lib/etherlite/transaction.rb, line 11
def refresh
  @original = @connection.eth_get_transaction_by_hash(@tx_hash)
  @loaded = true
  self
end
removed?() click to toggle source
# File lib/etherlite/transaction.rb, line 22
def removed?
  original.nil?
end
status() click to toggle source
# File lib/etherlite/transaction.rb, line 68
def status
  return nil if receipt.nil?

  receipt['status'].is_a?(String) ? Utils.hex_to_uint(receipt['status']) : receipt['status']
end
succeeded?() click to toggle source
# File lib/etherlite/transaction.rb, line 74
def succeeded?
  status == 1
end
value() click to toggle source
# File lib/etherlite/transaction.rb, line 38
def value
  original && Utils.hex_to_uint(original['value'])
end
wait_for_block(timeout: 120) click to toggle source
# File lib/etherlite/transaction.rb, line 98
def wait_for_block(timeout: 120)
  start = Time.now
  while !refresh.mined?
    return false if removed?
    return false if Time.now - start > timeout
    sleep 1
  end

  true
end