eth 0.5.8 → 0.5.10
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/.github/workflows/spec.yml +2 -1
- data/CHANGELOG.md +32 -0
- data/CODE_OF_CONDUCT.md +122 -0
- data/CONTRIBUTING.md +61 -0
- data/LICENSE.txt +1 -1
- data/README.md +6 -2
- data/SECURITY.md +24 -0
- data/abi/ens_registry.json +436 -0
- data/abi/ens_resolver.json +885 -0
- data/lib/eth/abi/event.rb +1 -1
- data/lib/eth/abi/type.rb +46 -12
- data/lib/eth/abi.rb +72 -14
- data/lib/eth/address.rb +2 -2
- data/lib/eth/api.rb +1 -1
- data/lib/eth/chain.rb +19 -7
- data/lib/eth/client/http.rb +1 -1
- data/lib/eth/client/http_auth.rb +1 -1
- data/lib/eth/client/ipc.rb +1 -1
- data/lib/eth/client.rb +118 -16
- data/lib/eth/constant.rb +1 -1
- data/lib/eth/contract/event.rb +1 -1
- data/lib/eth/contract/function.rb +2 -2
- data/lib/eth/contract/function_input.rb +7 -2
- data/lib/eth/contract/function_output.rb +1 -1
- data/lib/eth/contract/initializer.rb +1 -1
- data/lib/eth/contract.rb +1 -1
- data/lib/eth/eip712.rb +2 -2
- data/lib/eth/ens/coin_type.rb +50 -0
- data/lib/eth/ens/resolver.rb +68 -24
- data/lib/eth/ens.rb +28 -0
- data/lib/eth/key/decrypter.rb +1 -1
- data/lib/eth/key/encrypter.rb +1 -1
- data/lib/eth/key.rb +5 -5
- data/lib/eth/rlp/decoder.rb +2 -2
- data/lib/eth/rlp/encoder.rb +3 -3
- data/lib/eth/rlp/sedes/big_endian_int.rb +1 -1
- data/lib/eth/rlp/sedes/binary.rb +2 -2
- data/lib/eth/rlp/sedes/list.rb +5 -5
- data/lib/eth/rlp/sedes.rb +4 -4
- data/lib/eth/rlp.rb +1 -1
- data/lib/eth/signature.rb +4 -4
- data/lib/eth/solidity.rb +5 -3
- data/lib/eth/tx/eip1559.rb +3 -3
- data/lib/eth/tx/eip2930.rb +3 -3
- data/lib/eth/tx/legacy.rb +3 -3
- data/lib/eth/tx.rb +5 -5
- data/lib/eth/unit.rb +1 -1
- data/lib/eth/util.rb +14 -14
- data/lib/eth/version.rb +2 -2
- data/lib/eth.rb +2 -2
- metadata +9 -3
- data/abis/ens.json +0 -422
data/lib/eth/rlp/sedes/binary.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2016-
|
1
|
+
# Copyright (c) 2016-2023 The Ruby-Eth Contributors
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -78,7 +78,7 @@ module Eth
|
|
78
78
|
# @raise [DeserializationError] if provided serial is of wrong type.
|
79
79
|
# @raise [DeserializationError] if provided serial is of wrong length.
|
80
80
|
def deserialize(serial)
|
81
|
-
raise DeserializationError, "Objects of type #{serial.class} cannot be deserialized" unless Util.
|
81
|
+
raise DeserializationError, "Objects of type #{serial.class} cannot be deserialized" unless Util.primitive? serial
|
82
82
|
raise DeserializationError, "#{serial.class} has invalid length" unless valid_length? serial.size
|
83
83
|
serial
|
84
84
|
end
|
data/lib/eth/rlp/sedes/list.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2016-
|
1
|
+
# Copyright (c) 2016-2023 The Ruby-Eth Contributors
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -34,9 +34,9 @@ module Eth
|
|
34
34
|
super()
|
35
35
|
@strict = strict
|
36
36
|
elements.each do |e|
|
37
|
-
if Sedes.
|
37
|
+
if Sedes.sedes?(e)
|
38
38
|
push e
|
39
|
-
elsif Util.
|
39
|
+
elsif Util.list?(e)
|
40
40
|
push List.new(elements: e)
|
41
41
|
else
|
42
42
|
raise TypeError, "Instances of List must only contain sedes objects or nested sequences thereof."
|
@@ -51,7 +51,7 @@ module Eth
|
|
51
51
|
# @raise [SerializationError] if provided array is not a sequence.
|
52
52
|
# @raise [SerializationError] if provided array is of wrong length.
|
53
53
|
def serialize(obj)
|
54
|
-
raise SerializationError, "Can only serialize sequences" unless Util.
|
54
|
+
raise SerializationError, "Can only serialize sequences" unless Util.list?(obj)
|
55
55
|
raise SerializationError, "List has wrong length" if (@strict && self.size != obj.size) || self.size < obj.size
|
56
56
|
result = []
|
57
57
|
obj.zip(self).each_with_index do |(element, sedes), i|
|
@@ -67,7 +67,7 @@ module Eth
|
|
67
67
|
# @raise [DeserializationError] if provided serial is not a sequence.
|
68
68
|
# @raise [DeserializationError] if provided serial is of wrong length.
|
69
69
|
def deserialize(serial)
|
70
|
-
raise DeserializationError, "Can only deserialize sequences" unless Util.
|
70
|
+
raise DeserializationError, "Can only deserialize sequences" unless Util.list?(serial)
|
71
71
|
raise DeserializationError, "List has wrong length" if @strict && serial.size != self.size
|
72
72
|
result = []
|
73
73
|
len = [serial.size, self.size].min
|
data/lib/eth/rlp/sedes.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2016-
|
1
|
+
# Copyright (c) 2016-2023 The Ruby-Eth Contributors
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -39,10 +39,10 @@ module Eth
|
|
39
39
|
# @param obj [Object] the Ruby object for which to find a sedes object.
|
40
40
|
# @raise [TypeError] if no appropriate sedes could be found.
|
41
41
|
def infer(obj)
|
42
|
-
return obj.class if
|
42
|
+
return obj.class if sedes? obj.class
|
43
43
|
return big_endian_int if obj.is_a?(Integer) && obj >= 0
|
44
44
|
return binary if Binary.valid_type? obj
|
45
|
-
return List.new(elements: obj.map { |item| infer item }) if Util.
|
45
|
+
return List.new(elements: obj.map { |item| infer item }) if Util.list? obj
|
46
46
|
raise TypeError, "Did not find sedes handling type #{obj.class.name}"
|
47
47
|
end
|
48
48
|
|
@@ -50,7 +50,7 @@ module Eth
|
|
50
50
|
#
|
51
51
|
# @param obj [Object] the object to check.
|
52
52
|
# @return [Boolean] true if it's serializable and deserializable.
|
53
|
-
def
|
53
|
+
def sedes?(obj)
|
54
54
|
obj.respond_to?(:serialize) && obj.respond_to?(:deserialize)
|
55
55
|
end
|
56
56
|
|
data/lib/eth/rlp.rb
CHANGED
data/lib/eth/signature.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2016-
|
1
|
+
# Copyright (c) 2016-2023 The Ruby-Eth Contributors
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -48,7 +48,7 @@ module Eth
|
|
48
48
|
# @return [String, String, String] the `r`, `s`, and `v` values.
|
49
49
|
# @raise [SignatureError] if signature is of unknown size.
|
50
50
|
def dissect(signature)
|
51
|
-
signature = Util.bin_to_hex signature unless Util.
|
51
|
+
signature = Util.bin_to_hex signature unless Util.hex? signature
|
52
52
|
signature = Util.remove_hex_prefix signature
|
53
53
|
if signature.size < 130
|
54
54
|
raise SignatureError, "Unknown signature length #{signature.size}!"
|
@@ -70,7 +70,7 @@ module Eth
|
|
70
70
|
context = Secp256k1::Context.new
|
71
71
|
r, s, v = dissect signature
|
72
72
|
v = v.to_i(16)
|
73
|
-
if !Chain.
|
73
|
+
if !Chain.ledger? v and !Chain.legacy? v
|
74
74
|
min_v = 2 * chain_id + 35
|
75
75
|
raise SignatureError, "Invalid signature v byte #{v} for chain ID #{chain_id}!" if v < min_v
|
76
76
|
end
|
@@ -126,7 +126,7 @@ module Eth
|
|
126
126
|
|
127
127
|
# recover message from personal_sign
|
128
128
|
recovered_key = personal_recover blob, signature, chain_id
|
129
|
-
elsif blob.instance_of? String and (Util.
|
129
|
+
elsif blob.instance_of? String and (Util.hex? blob or blob.encoding == Encoding::ASCII_8BIT)
|
130
130
|
|
131
131
|
# if nothing else, recover from arbitrary signature
|
132
132
|
recovered_key = recover blob, signature, chain_id
|
data/lib/eth/solidity.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2016-
|
1
|
+
# Copyright (c) 2016-2023 The Ruby-Eth Contributors
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -42,8 +42,10 @@ module Eth
|
|
42
42
|
# @return [Array] JSON containing the compiled contract and ABI for all contracts.
|
43
43
|
def compile(contract)
|
44
44
|
raise Errno::ENOENT, "Contract file not found: #{contract}" unless File.exist? contract
|
45
|
-
|
46
|
-
|
45
|
+
flag_opt = "--optimize"
|
46
|
+
flag_json = "--combined-json=bin,abi"
|
47
|
+
path = File.realpath contract
|
48
|
+
output, error, status = Open3.capture3 @compiler, flag_opt, flag_json, path
|
47
49
|
raise SystemCallError, "Unable to run solc compiler!" if status.exitstatus === 127
|
48
50
|
raise CompilerError, error unless status.success?
|
49
51
|
json = JSON.parse output
|
data/lib/eth/tx/eip1559.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2016-
|
1
|
+
# Copyright (c) 2016-2023 The Ruby-Eth Contributors
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -231,7 +231,7 @@ module Eth
|
|
231
231
|
# @raise [Signature::SignatureError] if transaction is already signed.
|
232
232
|
# @raise [Signature::SignatureError] if sender address does not match signing key.
|
233
233
|
def sign(key)
|
234
|
-
if Tx.
|
234
|
+
if Tx.signed? self
|
235
235
|
raise Signature::SignatureError, "Transaction is already signed!"
|
236
236
|
end
|
237
237
|
|
@@ -258,7 +258,7 @@ module Eth
|
|
258
258
|
# @return [String] a raw, RLP-encoded EIP-1559 type transaction object.
|
259
259
|
# @raise [Signature::SignatureError] if the transaction is not yet signed.
|
260
260
|
def encoded
|
261
|
-
unless Tx.
|
261
|
+
unless Tx.signed? self
|
262
262
|
raise Signature::SignatureError, "Transaction is not signed!"
|
263
263
|
end
|
264
264
|
tx_data = []
|
data/lib/eth/tx/eip2930.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2016-
|
1
|
+
# Copyright (c) 2016-2023 The Ruby-Eth Contributors
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -225,7 +225,7 @@ module Eth
|
|
225
225
|
# @raise [Signature::SignatureError] if transaction is already signed.
|
226
226
|
# @raise [Signature::SignatureError] if sender address does not match signing key.
|
227
227
|
def sign(key)
|
228
|
-
if Tx.
|
228
|
+
if Tx.signed? self
|
229
229
|
raise Signature::SignatureError, "Transaction is already signed!"
|
230
230
|
end
|
231
231
|
|
@@ -252,7 +252,7 @@ module Eth
|
|
252
252
|
# @return [String] a raw, RLP-encoded EIP-2930 type transaction object.
|
253
253
|
# @raise [Signature::SignatureError] if the transaction is not yet signed.
|
254
254
|
def encoded
|
255
|
-
unless Tx.
|
255
|
+
unless Tx.signed? self
|
256
256
|
raise Signature::SignatureError, "Transaction is not signed!"
|
257
257
|
end
|
258
258
|
tx_data = []
|
data/lib/eth/tx/legacy.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2016-
|
1
|
+
# Copyright (c) 2016-2023 The Ruby-Eth Contributors
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -205,7 +205,7 @@ module Eth
|
|
205
205
|
# @raise [Signature::SignatureError] if transaction is already signed.
|
206
206
|
# @raise [Signature::SignatureError] if sender address does not match signing key.
|
207
207
|
def sign(key)
|
208
|
-
if Tx.
|
208
|
+
if Tx.signed? self
|
209
209
|
raise Signature::SignatureError, "Transaction is already signed!"
|
210
210
|
end
|
211
211
|
|
@@ -230,7 +230,7 @@ module Eth
|
|
230
230
|
# @return [String] a raw, RLP-encoded legacy transaction.
|
231
231
|
# @raise [Signature::SignatureError] if the transaction is not yet signed.
|
232
232
|
def encoded
|
233
|
-
unless Tx.
|
233
|
+
unless Tx.signed? self
|
234
234
|
raise Signature::SignatureError, "Transaction is not signed!"
|
235
235
|
end
|
236
236
|
tx_data = []
|
data/lib/eth/tx.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2016-
|
1
|
+
# Copyright (c) 2016-2023 The Ruby-Eth Contributors
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -164,7 +164,7 @@ module Eth
|
|
164
164
|
def estimate_intrinsic_gas(data = "", list = [])
|
165
165
|
gas = DEFAULT_GAS_LIMIT
|
166
166
|
unless data.nil? or data.empty?
|
167
|
-
data = Util.hex_to_bin data if Util.
|
167
|
+
data = Util.hex_to_bin data if Util.hex? data
|
168
168
|
|
169
169
|
# count zero bytes
|
170
170
|
zero = data.count ZERO_BYTE
|
@@ -288,7 +288,7 @@ module Eth
|
|
288
288
|
data = "" if data.nil?
|
289
289
|
|
290
290
|
# ensure payload to be binary if it's hex, otherwise we'll treat it raw
|
291
|
-
data = Util.hex_to_bin data if Util.
|
291
|
+
data = Util.hex_to_bin data if Util.hex? data
|
292
292
|
return data
|
293
293
|
end
|
294
294
|
|
@@ -305,7 +305,7 @@ module Eth
|
|
305
305
|
|
306
306
|
# recursively check the entire array
|
307
307
|
list[index] = sanitize_list value
|
308
|
-
elsif Util.
|
308
|
+
elsif Util.hex? value
|
309
309
|
|
310
310
|
# only modify if we find a hex value
|
311
311
|
list[index] = Util.hex_to_bin value
|
@@ -317,7 +317,7 @@ module Eth
|
|
317
317
|
# Allows to check wether a transaction is signed already.
|
318
318
|
#
|
319
319
|
# @return [Bool] true if transaction is already signed.
|
320
|
-
def
|
320
|
+
def signed?(tx)
|
321
321
|
!tx.signature_r.nil? and tx.signature_r != 0 and
|
322
322
|
!tx.signature_s.nil? and tx.signature_s != 0
|
323
323
|
end
|
data/lib/eth/unit.rb
CHANGED
data/lib/eth/util.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2016-
|
1
|
+
# Copyright (c) 2016-2023 The Ruby-Eth Contributors
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -27,7 +27,7 @@ module Eth
|
|
27
27
|
# @param str [String] the public key to be converted.
|
28
28
|
# @return [Eth::Address] an Ethereum address.
|
29
29
|
def public_key_to_address(str)
|
30
|
-
str = hex_to_bin str if
|
30
|
+
str = hex_to_bin str if hex? str
|
31
31
|
bytes = keccak256(str[1..-1])[-20..-1]
|
32
32
|
Address.new bin_to_prefixed_hex bytes
|
33
33
|
end
|
@@ -59,7 +59,7 @@ module Eth
|
|
59
59
|
def hex_to_bin(hex)
|
60
60
|
raise TypeError, "Value must be an instance of String" unless hex.instance_of? String
|
61
61
|
hex = remove_hex_prefix hex
|
62
|
-
raise TypeError, "Non-hexadecimal digit found" unless
|
62
|
+
raise TypeError, "Non-hexadecimal digit found" unless hex? hex
|
63
63
|
[hex].pack("H*")
|
64
64
|
end
|
65
65
|
|
@@ -68,7 +68,7 @@ module Eth
|
|
68
68
|
# @param hex [String] a hex-string to be prefixed.
|
69
69
|
# @return [String] a prefixed hex-string.
|
70
70
|
def prefix_hex(hex)
|
71
|
-
return hex if
|
71
|
+
return hex if prefixed? hex
|
72
72
|
return "0x#{hex}"
|
73
73
|
end
|
74
74
|
|
@@ -77,7 +77,7 @@ module Eth
|
|
77
77
|
# @param hex [String] a prefixed hex-string.
|
78
78
|
# @return [String] an unprefixed hex-string.
|
79
79
|
def remove_hex_prefix(hex)
|
80
|
-
return hex[2..-1] if
|
80
|
+
return hex[2..-1] if prefixed? hex
|
81
81
|
return hex
|
82
82
|
end
|
83
83
|
|
@@ -93,7 +93,7 @@ module Eth
|
|
93
93
|
#
|
94
94
|
# @param str [String] a string to be checked.
|
95
95
|
# @return [String] a match if true; `nil` if not.
|
96
|
-
def
|
96
|
+
def hex?(str)
|
97
97
|
return false unless str.is_a? String
|
98
98
|
str = remove_hex_prefix str
|
99
99
|
str.match /\A[0-9a-fA-F]*\z/
|
@@ -103,7 +103,7 @@ module Eth
|
|
103
103
|
#
|
104
104
|
# @param hex [String] a string to be checked.
|
105
105
|
# @return [String] a match if true; `nil` if not.
|
106
|
-
def
|
106
|
+
def prefixed?(hex)
|
107
107
|
hex.match /\A0x/
|
108
108
|
end
|
109
109
|
|
@@ -113,7 +113,7 @@ module Eth
|
|
113
113
|
# @return [String] serialized big endian integer string.
|
114
114
|
# @raise [ArgumentError] if unsigned integer is out of bounds.
|
115
115
|
def serialize_int_to_big_endian(num)
|
116
|
-
num = num.to_i(16) if
|
116
|
+
num = num.to_i(16) if hex? num
|
117
117
|
unless num.is_a? Integer and num >= 0 and num <= Constant::UINT_MAX
|
118
118
|
raise ArgumentError, "Integer invalid or out of range: #{num}"
|
119
119
|
end
|
@@ -125,7 +125,7 @@ module Eth
|
|
125
125
|
# @param num [Integer] integer to be converted.
|
126
126
|
# @return [String] packed, big-endian integer string.
|
127
127
|
def int_to_big_endian(num)
|
128
|
-
hex = num.to_s(16) unless
|
128
|
+
hex = num.to_s(16) unless hex? num
|
129
129
|
hex = "0#{hex}" if hex.size.odd?
|
130
130
|
hex_to_bin hex
|
131
131
|
end
|
@@ -151,7 +151,7 @@ module Eth
|
|
151
151
|
# @param str [String] binary string to be converted.
|
152
152
|
# @return [Object] the string bytes.
|
153
153
|
def str_to_bytes(str)
|
154
|
-
|
154
|
+
bytes?(str) ? str : str.b
|
155
155
|
end
|
156
156
|
|
157
157
|
# Converts bytes to a binary string.
|
@@ -166,7 +166,7 @@ module Eth
|
|
166
166
|
#
|
167
167
|
# @param str [String] a string to check.
|
168
168
|
# @return [Boolean] true if it's an ASCII-8bit encoded byte-string.
|
169
|
-
def
|
169
|
+
def bytes?(str)
|
170
170
|
str && str.instance_of?(String) && str.encoding.name == Constant::BINARY_ENCODING
|
171
171
|
end
|
172
172
|
|
@@ -174,7 +174,7 @@ module Eth
|
|
174
174
|
#
|
175
175
|
# @param item [Object] the item to check.
|
176
176
|
# @return [Boolean] true if it's a string primitive.
|
177
|
-
def
|
177
|
+
def primitive?(item)
|
178
178
|
item.instance_of?(String)
|
179
179
|
end
|
180
180
|
|
@@ -182,8 +182,8 @@ module Eth
|
|
182
182
|
#
|
183
183
|
# @param item [Object] the item to check.
|
184
184
|
# @return [Boolean] true if it's a list.
|
185
|
-
def
|
186
|
-
!
|
185
|
+
def list?(item)
|
186
|
+
!primitive?(item) && item.respond_to?(:each)
|
187
187
|
end
|
188
188
|
|
189
189
|
# Ceil and integer to the next multiple of 32 bytes.
|
data/lib/eth/version.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2016-
|
1
|
+
# Copyright (c) 2016-2023 The Ruby-Eth Contributors
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -16,5 +16,5 @@
|
|
16
16
|
module Eth
|
17
17
|
|
18
18
|
# Defines the version of the {Eth} module.
|
19
|
-
VERSION = "0.5.
|
19
|
+
VERSION = "0.5.10".freeze
|
20
20
|
end
|
data/lib/eth.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (c) 2016-
|
1
|
+
# Copyright (c) 2016-2023 The Ruby-Eth Contributors
|
2
2
|
#
|
3
3
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
4
|
# you may not use this file except in compliance with the License.
|
@@ -32,5 +32,5 @@ require "eth/solidity"
|
|
32
32
|
require "eth/tx"
|
33
33
|
require "eth/unit"
|
34
34
|
require "eth/util"
|
35
|
-
require "eth/ens
|
35
|
+
require "eth/ens"
|
36
36
|
require "eth/version"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steve Ellis
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2023-01-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: keccak
|
@@ -105,11 +105,15 @@ files:
|
|
105
105
|
- ".yardopts"
|
106
106
|
- AUTHORS.txt
|
107
107
|
- CHANGELOG.md
|
108
|
+
- CODE_OF_CONDUCT.md
|
109
|
+
- CONTRIBUTING.md
|
108
110
|
- Gemfile
|
109
111
|
- LICENSE.txt
|
110
112
|
- README.md
|
111
113
|
- Rakefile
|
112
|
-
-
|
114
|
+
- SECURITY.md
|
115
|
+
- abi/ens_registry.json
|
116
|
+
- abi/ens_resolver.json
|
113
117
|
- bin/console
|
114
118
|
- bin/setup
|
115
119
|
- codecov.yml
|
@@ -133,6 +137,8 @@ files:
|
|
133
137
|
- lib/eth/contract/function_output.rb
|
134
138
|
- lib/eth/contract/initializer.rb
|
135
139
|
- lib/eth/eip712.rb
|
140
|
+
- lib/eth/ens.rb
|
141
|
+
- lib/eth/ens/coin_type.rb
|
136
142
|
- lib/eth/ens/resolver.rb
|
137
143
|
- lib/eth/key.rb
|
138
144
|
- lib/eth/key/decrypter.rb
|