etherlite 0.2.2 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/etherlite.rb +1 -0
- data/lib/etherlite/api/node.rb +2 -2
- data/lib/etherlite/api/rpc.rb +4 -0
- data/lib/etherlite/commands/abi/load_contract.rb +1 -0
- data/lib/etherlite/contract/base.rb +2 -12
- data/lib/etherlite/contract/event_base.rb +4 -0
- data/lib/etherlite/event_provider.rb +29 -0
- data/lib/etherlite/transaction.rb +26 -0
- data/lib/etherlite/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3d9836bec35f181ec6d32abafcd7a3a5dde485e4
|
4
|
+
data.tar.gz: 98977ede760cfcb7dcf32910d79acffef187b89e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 12c60f7ad8b8a4556171db68c495a49ac4f72a8f10a0a3a64321db3170bbf05ea992a5bcbf40c89b1ee9054092eef7818aa3bf49fa6349c9e872720e9e9f3f2a
|
7
|
+
data.tar.gz: b36ebbd7fb4d09d33bad6129eb1d42ffe6b1588a20fbe90cf7ffe193d0cf4d20c1fb49d388897741ad3ad93d08e55948fc51e95a1c5b8c046d99bf3f741c7017
|
data/lib/etherlite.rb
CHANGED
data/lib/etherlite/api/node.rb
CHANGED
data/lib/etherlite/api/rpc.rb
CHANGED
@@ -9,6 +9,10 @@ module Etherlite
|
|
9
9
|
Etherlite::Utils.hex_to_uint ipc_call(:eth_gasPrice)
|
10
10
|
end
|
11
11
|
|
12
|
+
def eth_get_transaction_by_hash(_tx_hash)
|
13
|
+
ipc_call(:eth_getTransactionByHash, _tx_hash)
|
14
|
+
end
|
15
|
+
|
12
16
|
def eth_get_transaction_receipt(_tx_hash)
|
13
17
|
ipc_call(:eth_getTransactionReceipt, _tx_hash)
|
14
18
|
end
|
@@ -64,24 +64,14 @@ module Etherlite::Contract
|
|
64
64
|
toBlock: Etherlite::Utils.encode_block_param(to_block)
|
65
65
|
}
|
66
66
|
|
67
|
-
params[:topics] = [events.map
|
68
|
-
|
69
|
-
event_map = Hash[(events || self.class.events).map { |e| [event_topic(e), e] }]
|
67
|
+
params[:topics] = [events.map(&:topic)] unless events.nil?
|
70
68
|
|
71
69
|
logs = @connection.ipc_call(:eth_getLogs, params)
|
72
|
-
|
73
|
-
event = event_map[log["topics"].first]
|
74
|
-
# TODO: support anonymous events!
|
75
|
-
event.decode(@connection, log) unless event.nil?
|
76
|
-
end
|
70
|
+
::Etherlite::EventProvider.parse_raw_logs(@connection, logs)
|
77
71
|
end
|
78
72
|
|
79
73
|
private
|
80
74
|
|
81
75
|
attr_reader :default_account, :normalized_address
|
82
|
-
|
83
|
-
def event_topic(_event)
|
84
|
-
'0x' + Etherlite::Utils.sha3(_event.signature)
|
85
|
-
end
|
86
76
|
end
|
87
77
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Etherlite
|
2
|
+
module EventProvider
|
3
|
+
extend self
|
4
|
+
|
5
|
+
def register_contract_events(_contract_class)
|
6
|
+
_contract_class.events.each { |e| register_event e }
|
7
|
+
end
|
8
|
+
|
9
|
+
def register_event(_event)
|
10
|
+
event_by_topic[_event.topic] = _event
|
11
|
+
end
|
12
|
+
|
13
|
+
def parse_raw_log(_connection, _raw_log)
|
14
|
+
event = event_by_topic[_raw_log["topics"].first]
|
15
|
+
return nil if event.nil?
|
16
|
+
event.decode(_connection, _raw_log)
|
17
|
+
end
|
18
|
+
|
19
|
+
def parse_raw_logs(_connection, _raw_logs)
|
20
|
+
_raw_logs.map { |e| parse_raw_log(_connection, e) }.reject &:nil?
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def event_by_topic
|
26
|
+
@event_by_topic ||= {}
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -37,10 +37,30 @@ module Etherlite
|
|
37
37
|
@connection.eth_block_number - block_number
|
38
38
|
end
|
39
39
|
|
40
|
+
def gas
|
41
|
+
Utils.hex_to_uint original['gas']
|
42
|
+
end
|
43
|
+
|
40
44
|
def gas_used
|
41
45
|
Utils.hex_to_uint @receipt['gasUsed']
|
42
46
|
end
|
43
47
|
|
48
|
+
def gas_price
|
49
|
+
Utils.hex_to_uint original['gasPrice']
|
50
|
+
end
|
51
|
+
|
52
|
+
def value
|
53
|
+
Utils.hex_to_uint original['value']
|
54
|
+
end
|
55
|
+
|
56
|
+
def logs
|
57
|
+
@receipt['logs'] || []
|
58
|
+
end
|
59
|
+
|
60
|
+
def events
|
61
|
+
::Etherlite::EventProvider.parse_raw_logs(@connection, logs)
|
62
|
+
end
|
63
|
+
|
44
64
|
def block_number
|
45
65
|
Utils.hex_to_uint @receipt['blockNumber']
|
46
66
|
end
|
@@ -59,5 +79,11 @@ module Etherlite
|
|
59
79
|
|
60
80
|
true
|
61
81
|
end
|
82
|
+
|
83
|
+
private
|
84
|
+
|
85
|
+
def original
|
86
|
+
@original ||= @connection.eth_get_transaction_by_hash(@tx_hash)
|
87
|
+
end
|
62
88
|
end
|
63
89
|
end
|
data/lib/etherlite/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: etherlite
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ignacio Baixas
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-05-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: digest-sha3
|
@@ -208,6 +208,7 @@ files:
|
|
208
208
|
- lib/etherlite/contract/function.rb
|
209
209
|
- lib/etherlite/contract/function_input.rb
|
210
210
|
- lib/etherlite/errors.rb
|
211
|
+
- lib/etherlite/event_provider.rb
|
211
212
|
- lib/etherlite/nonce_manager.rb
|
212
213
|
- lib/etherlite/railtie.rb
|
213
214
|
- lib/etherlite/railties/configuration_extensions.rb
|