etherlite 0.2.6 → 0.3.0
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 +5 -5
- data/etherlite.gemspec +2 -2
- data/lib/etherlite/account/private_key.rb +5 -1
- data/lib/etherlite/nonce_manager.rb +3 -2
- data/lib/etherlite/transaction.rb +48 -34
- data/lib/etherlite/version.rb +1 -1
- metadata +7 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: fe14df0fc898d4e298d57704e8a7f2acf0cb3dcace02b94903b8f295f94e971c
|
4
|
+
data.tar.gz: 87c4bc2dca3fb92d8a1eca54080cbfa50107defe48d0007cc5e6c3910bdfaa4e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c1e16e2460b1e67948efd91921b1e03e6805c114fdba9a375c4b83695baa6d01ca80b46fc3530be5ac923c641d47190cc7fc466cdf6daef793f55cb54993be0a
|
7
|
+
data.tar.gz: 76cb54b21dd785777fcd474f0bbf85e374b9a6aad8bd64d1ddfed73f195c51a736b339045b09056be8da32c34e7d272abcf7393b4bc1bd187efe2fb2186adc57
|
data/etherlite.gemspec
CHANGED
@@ -24,11 +24,11 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.add_dependency "eth", "~> 0.4.4"
|
25
25
|
spec.add_dependency "activesupport"
|
26
26
|
|
27
|
-
spec.add_development_dependency "bundler", "~> 1.
|
27
|
+
spec.add_development_dependency "bundler", "~> 2.1.4"
|
28
28
|
spec.add_development_dependency "rake", "~> 10.0"
|
29
29
|
spec.add_development_dependency "rspec", "~> 3.0"
|
30
30
|
spec.add_development_dependency "guard", "~> 2.14"
|
31
31
|
spec.add_development_dependency "guard-rspec", "~> 4.7"
|
32
|
-
spec.add_development_dependency "webmock", "~> 3.
|
32
|
+
spec.add_development_dependency "webmock", "~> 3.7.5"
|
33
33
|
spec.add_development_dependency "pry"
|
34
34
|
end
|
@@ -9,7 +9,11 @@ module Etherlite
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def send_transaction(_options = {})
|
12
|
-
|
12
|
+
nonce_options = {
|
13
|
+
replace: _options.fetch(:replace, false)
|
14
|
+
}
|
15
|
+
|
16
|
+
nonce_manager.with_next_nonce_for(normalized_address, nonce_options) do |nonce|
|
13
17
|
tx = Eth::Tx.new(
|
14
18
|
value: _options.fetch(:value, 0),
|
15
19
|
data: _options.fetch(:data, ''),
|
@@ -17,9 +17,10 @@ module Etherlite
|
|
17
17
|
last_nonce
|
18
18
|
end
|
19
19
|
|
20
|
-
def with_next_nonce_for(_normalized_address)
|
20
|
+
def with_next_nonce_for(_normalized_address, replace: false)
|
21
21
|
@@nonce_mutex.synchronize do
|
22
|
-
next_nonce = last_nonce_for(_normalized_address)
|
22
|
+
next_nonce = last_nonce_for(_normalized_address)
|
23
|
+
next_nonce += 1 if next_nonce.negative? || !replace # if first tx, don't replace
|
23
24
|
|
24
25
|
begin
|
25
26
|
result = yield next_nonce
|
@@ -1,72 +1,92 @@
|
|
1
1
|
module Etherlite
|
2
2
|
class Transaction
|
3
|
-
attr_reader :tx_hash
|
3
|
+
attr_reader :tx_hash
|
4
4
|
|
5
5
|
def initialize(_connection, _tx_hash)
|
6
6
|
@connection = _connection
|
7
7
|
@tx_hash = _tx_hash
|
8
|
-
@
|
8
|
+
@loaded = false
|
9
9
|
end
|
10
10
|
|
11
11
|
def refresh
|
12
|
-
@
|
12
|
+
@original = @connection.eth_get_transaction_by_hash(@tx_hash)
|
13
|
+
@loaded = true
|
13
14
|
self
|
14
15
|
end
|
15
16
|
|
17
|
+
def original
|
18
|
+
refresh unless @loaded
|
19
|
+
@original
|
20
|
+
end
|
21
|
+
|
16
22
|
def removed?
|
17
|
-
|
23
|
+
original.nil?
|
18
24
|
end
|
19
25
|
|
20
|
-
def
|
21
|
-
|
26
|
+
def mined?
|
27
|
+
original.present? && !original['blockNumber'].nil?
|
22
28
|
end
|
23
29
|
|
24
|
-
def
|
25
|
-
|
26
|
-
status = @receipt['status']
|
27
|
-
status.is_a?(String) ? Utils.hex_to_uint(status) : status
|
30
|
+
def gas
|
31
|
+
original && Utils.hex_to_uint(original['gas'])
|
28
32
|
end
|
29
33
|
|
30
|
-
def
|
31
|
-
|
34
|
+
def gas_price
|
35
|
+
original && Utils.hex_to_uint(original['gasPrice'])
|
36
|
+
end
|
37
|
+
|
38
|
+
def value
|
39
|
+
original && Utils.hex_to_uint(original['value'])
|
40
|
+
end
|
41
|
+
|
42
|
+
def block_number
|
43
|
+
return nil unless mined?
|
44
|
+
|
45
|
+
Utils.hex_to_uint(original['blockNumber'])
|
32
46
|
end
|
33
47
|
|
34
48
|
def confirmations
|
35
49
|
return 0 unless mined?
|
36
50
|
|
37
|
-
@connection.eth_block_number - block_number
|
51
|
+
(@connection.eth_block_number - block_number) + 1
|
38
52
|
end
|
39
53
|
|
40
|
-
|
41
|
-
|
54
|
+
# receipt attributes
|
55
|
+
|
56
|
+
def receipt
|
57
|
+
return nil unless mined?
|
58
|
+
|
59
|
+
@receipt ||= @connection.eth_get_transaction_receipt(@tx_hash)
|
42
60
|
end
|
43
61
|
|
44
|
-
def
|
45
|
-
|
62
|
+
def status
|
63
|
+
return nil if receipt.nil?
|
64
|
+
|
65
|
+
receipt['status'].is_a?(String) ? Utils.hex_to_uint(receipt['status']) : receipt['status']
|
46
66
|
end
|
47
67
|
|
48
|
-
def
|
49
|
-
|
68
|
+
def succeeded?
|
69
|
+
status == 1
|
50
70
|
end
|
51
71
|
|
52
|
-
def
|
53
|
-
|
72
|
+
def failed?
|
73
|
+
status == 0
|
54
74
|
end
|
55
75
|
|
56
|
-
def
|
57
|
-
|
76
|
+
def gas_used
|
77
|
+
receipt && Utils.hex_to_uint(receipt['gasUsed'])
|
58
78
|
end
|
59
79
|
|
60
|
-
def
|
61
|
-
|
80
|
+
def logs
|
81
|
+
receipt && (receipt['logs'] || [])
|
62
82
|
end
|
63
83
|
|
64
|
-
def
|
65
|
-
|
84
|
+
def events
|
85
|
+
receipt && ::Etherlite::EventProvider.parse_raw_logs(@connection, logs)
|
66
86
|
end
|
67
87
|
|
68
88
|
def contract_address
|
69
|
-
|
89
|
+
receipt && receipt['contractAddress']
|
70
90
|
end
|
71
91
|
|
72
92
|
def wait_for_block(timeout: 120)
|
@@ -79,11 +99,5 @@ module Etherlite
|
|
79
99
|
|
80
100
|
true
|
81
101
|
end
|
82
|
-
|
83
|
-
private
|
84
|
-
|
85
|
-
def original
|
86
|
-
@original ||= @connection.eth_get_transaction_by_hash(@tx_hash)
|
87
|
-
end
|
88
102
|
end
|
89
103
|
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.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ignacio Baixas
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-08-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: digest-sha3
|
@@ -72,14 +72,14 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 2.1.4
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: 2.1.4
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: rake
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -142,14 +142,14 @@ dependencies:
|
|
142
142
|
requirements:
|
143
143
|
- - "~>"
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: 3.
|
145
|
+
version: 3.7.5
|
146
146
|
type: :development
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
150
|
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version: 3.
|
152
|
+
version: 3.7.5
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: pry
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -248,8 +248,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
248
248
|
- !ruby/object:Gem::Version
|
249
249
|
version: '0'
|
250
250
|
requirements: []
|
251
|
-
|
252
|
-
rubygems_version: 2.6.14.1
|
251
|
+
rubygems_version: 3.0.3
|
253
252
|
signing_key:
|
254
253
|
specification_version: 4
|
255
254
|
summary: Ethereum integration for ruby on rails
|