Class: Etherlite::Transaction
- Inherits:
-
Object
- Object
- Etherlite::Transaction
- Defined in:
- lib/etherlite/transaction.rb
Instance Attribute Summary collapse
-
#tx_hash ⇒ Object
readonly
Returns the value of attribute tx_hash.
Instance Method Summary collapse
- #block_hash ⇒ Object
- #block_number ⇒ Object
- #confirmations ⇒ Object
- #contract_address ⇒ Object
- #events ⇒ Object
- #failed? ⇒ Boolean
- #gas ⇒ Object
- #gas_price ⇒ Object
- #gas_used ⇒ Object
-
#initialize(_connection, _tx_hash) ⇒ Transaction
constructor
A new instance of Transaction.
- #logs ⇒ Object
- #mined? ⇒ Boolean
- #original ⇒ Object
-
#receipt ⇒ Object
receipt attributes.
- #refresh ⇒ Object
- #removed? ⇒ Boolean
- #status ⇒ Object
- #succeeded? ⇒ Boolean
- #value ⇒ Object
- #wait_for_block(timeout: 120) ⇒ Object
Constructor Details
#initialize(_connection, _tx_hash) ⇒ Transaction
Returns a new instance of Transaction.
5 6 7 8 9 |
# File 'lib/etherlite/transaction.rb', line 5 def initialize(_connection, _tx_hash) @connection = _connection @tx_hash = _tx_hash @loaded = false end |
Instance Attribute Details
#tx_hash ⇒ Object (readonly)
Returns the value of attribute tx_hash.
3 4 5 |
# File 'lib/etherlite/transaction.rb', line 3 def tx_hash @tx_hash end |
Instance Method Details
#block_hash ⇒ Object
48 49 50 51 52 |
# File 'lib/etherlite/transaction.rb', line 48 def block_hash return nil unless mined? original['blockHash'] end |
#block_number ⇒ Object
42 43 44 45 46 |
# File 'lib/etherlite/transaction.rb', line 42 def block_number return nil unless mined? Utils.hex_to_uint(original['blockNumber']) end |
#confirmations ⇒ Object
54 55 56 57 58 |
# File 'lib/etherlite/transaction.rb', line 54 def confirmations return 0 unless mined? (@connection.eth_block_number - block_number) + 1 end |
#contract_address ⇒ Object
94 95 96 |
# File 'lib/etherlite/transaction.rb', line 94 def contract_address receipt && receipt['contractAddress'] end |
#events ⇒ Object
90 91 92 |
# File 'lib/etherlite/transaction.rb', line 90 def events receipt && ::Etherlite::EventProvider.parse_raw_logs(@connection, logs) end |
#failed? ⇒ Boolean
78 79 80 |
# File 'lib/etherlite/transaction.rb', line 78 def failed? status == 0 end |
#gas ⇒ Object
30 31 32 |
# File 'lib/etherlite/transaction.rb', line 30 def gas original && Utils.hex_to_uint(original['gas']) end |
#gas_price ⇒ Object
34 35 36 |
# File 'lib/etherlite/transaction.rb', line 34 def gas_price original && Utils.hex_to_uint(original['gasPrice']) end |
#gas_used ⇒ Object
82 83 84 |
# File 'lib/etherlite/transaction.rb', line 82 def gas_used receipt && Utils.hex_to_uint(receipt['gasUsed']) end |
#logs ⇒ Object
86 87 88 |
# File 'lib/etherlite/transaction.rb', line 86 def logs receipt && (receipt['logs'] || []) end |
#mined? ⇒ Boolean
26 27 28 |
# File 'lib/etherlite/transaction.rb', line 26 def mined? original.present? && !original['blockNumber'].nil? end |
#original ⇒ Object
17 18 19 20 |
# File 'lib/etherlite/transaction.rb', line 17 def original refresh unless @loaded @original end |
#receipt ⇒ Object
receipt attributes
62 63 64 65 66 |
# File 'lib/etherlite/transaction.rb', line 62 def receipt return nil unless mined? @receipt ||= @connection.eth_get_transaction_receipt(@tx_hash) end |
#refresh ⇒ Object
11 12 13 14 15 |
# File 'lib/etherlite/transaction.rb', line 11 def refresh @original = @connection.eth_get_transaction_by_hash(@tx_hash) @loaded = true self end |
#removed? ⇒ Boolean
22 23 24 |
# File 'lib/etherlite/transaction.rb', line 22 def removed? original.nil? end |
#status ⇒ Object
68 69 70 71 72 |
# 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? ⇒ Boolean
74 75 76 |
# File 'lib/etherlite/transaction.rb', line 74 def succeeded? status == 1 end |
#value ⇒ Object
38 39 40 |
# File 'lib/etherlite/transaction.rb', line 38 def value original && Utils.hex_to_uint(original['value']) end |
#wait_for_block(timeout: 120) ⇒ Object
98 99 100 101 102 103 104 105 106 107 |
# 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 |