eth 0.5.7 → 0.5.9

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.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/codeql.yml +1 -1
  3. data/.github/workflows/docs.yml +2 -2
  4. data/.github/workflows/spec.yml +3 -3
  5. data/CHANGELOG.md +33 -0
  6. data/Gemfile +2 -2
  7. data/LICENSE.txt +1 -1
  8. data/README.md +1 -1
  9. data/abis/ens.json +422 -0
  10. data/eth.gemspec +2 -2
  11. data/lib/eth/abi/event.rb +1 -1
  12. data/lib/eth/abi/type.rb +46 -12
  13. data/lib/eth/abi.rb +72 -14
  14. data/lib/eth/address.rb +2 -2
  15. data/lib/eth/api.rb +1 -1
  16. data/lib/eth/chain.rb +19 -7
  17. data/lib/eth/client/http.rb +1 -1
  18. data/lib/eth/client/http_auth.rb +1 -1
  19. data/lib/eth/client/ipc.rb +1 -1
  20. data/lib/eth/client.rb +70 -58
  21. data/lib/eth/constant.rb +1 -1
  22. data/lib/eth/contract/event.rb +1 -1
  23. data/lib/eth/contract/function.rb +2 -2
  24. data/lib/eth/contract/function_input.rb +7 -2
  25. data/lib/eth/contract/function_output.rb +1 -1
  26. data/lib/eth/contract/initializer.rb +1 -1
  27. data/lib/eth/contract.rb +1 -1
  28. data/lib/eth/eip712.rb +2 -2
  29. data/lib/eth/ens/resolver.rb +77 -0
  30. data/lib/eth/key/decrypter.rb +1 -1
  31. data/lib/eth/key/encrypter.rb +1 -1
  32. data/lib/eth/key.rb +5 -5
  33. data/lib/eth/rlp/decoder.rb +2 -2
  34. data/lib/eth/rlp/encoder.rb +3 -3
  35. data/lib/eth/rlp/sedes/big_endian_int.rb +1 -1
  36. data/lib/eth/rlp/sedes/binary.rb +2 -2
  37. data/lib/eth/rlp/sedes/list.rb +5 -5
  38. data/lib/eth/rlp/sedes.rb +4 -4
  39. data/lib/eth/rlp.rb +1 -1
  40. data/lib/eth/signature.rb +4 -4
  41. data/lib/eth/solidity.rb +5 -3
  42. data/lib/eth/tx/eip1559.rb +3 -3
  43. data/lib/eth/tx/eip2930.rb +3 -3
  44. data/lib/eth/tx/legacy.rb +3 -3
  45. data/lib/eth/tx.rb +5 -5
  46. data/lib/eth/unit.rb +1 -1
  47. data/lib/eth/util.rb +14 -14
  48. data/lib/eth/version.rb +2 -2
  49. data/lib/eth.rb +2 -1
  50. metadata +7 -4
data/lib/eth/solidity.rb CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2016-2022 The Ruby-Eth Contributors
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
- command = "#{@compiler} --optimize --combined-json bin,abi #{contract}"
46
- output, error, status = Open3.capture3 command
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
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2016-2022 The Ruby-Eth Contributors
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.is_signed? self
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.is_signed? self
261
+ unless Tx.signed? self
262
262
  raise Signature::SignatureError, "Transaction is not signed!"
263
263
  end
264
264
  tx_data = []
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2016-2022 The Ruby-Eth Contributors
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.is_signed? self
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.is_signed? self
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-2022 The Ruby-Eth Contributors
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.is_signed? self
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.is_signed? self
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-2022 The Ruby-Eth Contributors
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.is_hex? data
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.is_hex? data
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.is_hex? value
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 is_signed?(tx)
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
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2016-2022 The Ruby-Eth Contributors
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.
data/lib/eth/util.rb CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2016-2022 The Ruby-Eth Contributors
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 is_hex? str
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 is_hex? hex
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 is_prefixed? hex
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 is_prefixed? hex
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 is_hex?(str)
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 is_prefixed?(hex)
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 is_hex? num
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 is_hex? num
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
- is_bytes?(str) ? str : str.b
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 is_bytes?(str)
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 is_primitive?(item)
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 is_list?(item)
186
- !is_primitive?(item) && item.respond_to?(:each)
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-2022 The Ruby-Eth Contributors
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.7".freeze
19
+ VERSION = "0.5.9".freeze
20
20
  end
data/lib/eth.rb CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2016-2022 The Ruby-Eth Contributors
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,4 +32,5 @@ require "eth/solidity"
32
32
  require "eth/tx"
33
33
  require "eth/unit"
34
34
  require "eth/util"
35
+ require "eth/ens/resolver"
35
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.7
4
+ version: 0.5.9
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: 2022-10-31 00:00:00.000000000 Z
12
+ date: 2022-12-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: keccak
@@ -109,6 +109,7 @@ files:
109
109
  - LICENSE.txt
110
110
  - README.md
111
111
  - Rakefile
112
+ - abis/ens.json
112
113
  - bin/console
113
114
  - bin/setup
114
115
  - codecov.yml
@@ -132,6 +133,7 @@ files:
132
133
  - lib/eth/contract/function_output.rb
133
134
  - lib/eth/contract/initializer.rb
134
135
  - lib/eth/eip712.rb
136
+ - lib/eth/ens/resolver.rb
135
137
  - lib/eth/key.rb
136
138
  - lib/eth/key/decrypter.rb
137
139
  - lib/eth/key/encrypter.rb
@@ -164,11 +166,12 @@ post_install_message:
164
166
  rdoc_options: []
165
167
  require_paths:
166
168
  - lib
169
+ - abis
167
170
  required_ruby_version: !ruby/object:Gem::Requirement
168
171
  requirements:
169
172
  - - ">="
170
173
  - !ruby/object:Gem::Version
171
- version: '2.6'
174
+ version: '2.7'
172
175
  - - "<"
173
176
  - !ruby/object:Gem::Version
174
177
  version: '4.0'
@@ -178,7 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
178
181
  - !ruby/object:Gem::Version
179
182
  version: '0'
180
183
  requirements: []
181
- rubygems_version: 3.3.23
184
+ rubygems_version: 3.2.32
182
185
  signing_key:
183
186
  specification_version: 4
184
187
  summary: Ruby Ethereum library.