eth 0.5.14 → 0.5.17

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.
data/lib/eth/util.rb CHANGED
@@ -72,8 +72,7 @@ module Eth
72
72
  # @param hex [String] a hex-string to be prefixed.
73
73
  # @return [String] a prefixed hex-string.
74
74
  def prefix_hex(hex)
75
- return hex if prefixed? hex
76
- return "0x#{hex}"
75
+ "0x#{remove_hex_prefix hex}"
77
76
  end
78
77
 
79
78
  # Removes the `0x` prefix of a hexa-decimal string.
@@ -93,12 +92,12 @@ module Eth
93
92
  prefix_hex bin_to_hex bin
94
93
  end
95
94
 
96
- # Checks if a string is hex-adecimal.
95
+ # Checks if a string is hexadecimal.
97
96
  #
98
97
  # @param str [String] a string to be checked.
99
- # @return [String] a match if true; `nil` if not.
98
+ # @return [MatchData, nil] a match if true; `nil` if not.
100
99
  def hex?(str)
101
- return false unless str.is_a? String
100
+ return unless str.is_a? String
102
101
  str = remove_hex_prefix str
103
102
  str.match /\A[0-9a-fA-F]*\z/
104
103
  end
@@ -108,7 +107,7 @@ module Eth
108
107
  # @param hex [String] a string to be checked.
109
108
  # @return [String] a match if true; `nil` if not.
110
109
  def prefixed?(hex)
111
- hex.match /\A0x/
110
+ hex.match /\A0x/i
112
111
  end
113
112
 
114
113
  # Serializes an unsigned integer to big endian.
@@ -129,7 +128,11 @@ module Eth
129
128
  # @param num [Integer] integer to be converted.
130
129
  # @return [String] packed, big-endian integer string.
131
130
  def int_to_big_endian(num)
132
- hex = num.to_s(16) unless hex? num
131
+ hex = if hex? num
132
+ remove_hex_prefix num
133
+ else
134
+ num.to_s(16)
135
+ end
133
136
  hex = "0#{hex}" if hex.size.odd?
134
137
  hex_to_bin hex
135
138
  end
@@ -142,6 +145,15 @@ module Eth
142
145
  Rlp::Sedes.big_endian_int.deserialize str.sub(/\A(\x00)+/, "")
143
146
  end
144
147
 
148
+ # Deserializes an RLP integer, enforcing minimal encoding.
149
+ #
150
+ # @param str [String] serialized big endian integer string.
151
+ # @return [Integer] a deserialized unsigned integer.
152
+ # @raise [Rlp::DeserializationError] if encoding is not minimal.
153
+ def deserialize_rlp_int(str)
154
+ Rlp::Sedes.big_endian_int.deserialize str
155
+ end
156
+
145
157
  # Converts a big endian to an interger.
146
158
  #
147
159
  # @param str [String] big endian to be converted.
data/lib/eth/version.rb CHANGED
@@ -22,7 +22,7 @@ module Eth
22
22
  MINOR = 5.freeze
23
23
 
24
24
  # Defines the patch version of the {Eth} module.
25
- PATCH = 14.freeze
25
+ PATCH = 17.freeze
26
26
 
27
27
  # Defines the version string of the {Eth} module.
28
28
  VERSION = [MAJOR, MINOR, PATCH].join(".").freeze
data/lib/eth.rb CHANGED
@@ -32,5 +32,6 @@ require "eth/solidity"
32
32
  require "eth/tx"
33
33
  require "eth/unit"
34
34
  require "eth/util"
35
+ require "eth/bls"
35
36
  require "eth/ens"
36
37
  require "eth/version"
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.14
4
+ version: 0.5.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Ellis
8
8
  - Afri Schoedon
9
- autorequire:
10
9
  bindir: exe
11
10
  cert_chain: []
12
- date: 2025-04-16 00:00:00.000000000 Z
11
+ date: 1980-01-02 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: bigdecimal
@@ -85,22 +84,30 @@ dependencies:
85
84
  name: openssl
86
85
  requirement: !ruby/object:Gem::Requirement
87
86
  requirements:
88
- - - ">="
89
- - !ruby/object:Gem::Version
90
- version: '2.2'
91
- - - "<"
87
+ - - "~>"
92
88
  - !ruby/object:Gem::Version
93
- version: '4.0'
89
+ version: '3.3'
94
90
  type: :runtime
95
91
  prerelease: false
96
92
  version_requirements: !ruby/object:Gem::Requirement
97
93
  requirements:
98
- - - ">="
94
+ - - "~>"
99
95
  - !ruby/object:Gem::Version
100
- version: '2.2'
101
- - - "<"
96
+ version: '3.3'
97
+ - !ruby/object:Gem::Dependency
98
+ name: base64
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0.1'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
102
109
  - !ruby/object:Gem::Version
103
- version: '4.0'
110
+ version: '0.1'
104
111
  - !ruby/object:Gem::Dependency
105
112
  name: scrypt
106
113
  requirement: !ruby/object:Gem::Requirement
@@ -115,6 +122,34 @@ dependencies:
115
122
  - - "~>"
116
123
  - !ruby/object:Gem::Version
117
124
  version: '3.0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: bls12-381
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '0.3'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '0.3'
139
+ - !ruby/object:Gem::Dependency
140
+ name: httpx
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '1.6'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '1.6'
118
153
  description: Library to handle Ethereum accounts, messages, and transactions.
119
154
  email:
120
155
  - email@steveell.is
@@ -151,16 +186,20 @@ files:
151
186
  - lib/eth/abi/decoder.rb
152
187
  - lib/eth/abi/encoder.rb
153
188
  - lib/eth/abi/event.rb
189
+ - lib/eth/abi/function.rb
154
190
  - lib/eth/abi/packed/encoder.rb
155
191
  - lib/eth/abi/type.rb
156
192
  - lib/eth/address.rb
157
193
  - lib/eth/api.rb
194
+ - lib/eth/bls.rb
158
195
  - lib/eth/chain.rb
159
196
  - lib/eth/client.rb
160
197
  - lib/eth/client/http.rb
161
198
  - lib/eth/client/ipc.rb
199
+ - lib/eth/client/ws.rb
162
200
  - lib/eth/constant.rb
163
201
  - lib/eth/contract.rb
202
+ - lib/eth/contract/error.rb
164
203
  - lib/eth/contract/event.rb
165
204
  - lib/eth/contract/function.rb
166
205
  - lib/eth/contract/function_input.rb
@@ -185,6 +224,7 @@ files:
185
224
  - lib/eth/tx.rb
186
225
  - lib/eth/tx/eip1559.rb
187
226
  - lib/eth/tx/eip2930.rb
227
+ - lib/eth/tx/eip4844.rb
188
228
  - lib/eth/tx/eip7702.rb
189
229
  - lib/eth/tx/legacy.rb
190
230
  - lib/eth/unit.rb
@@ -199,7 +239,6 @@ metadata:
199
239
  documentation_uri: https://q9f.github.io/eth.rb/
200
240
  github_repo: https://github.com/q9f/eth.rb
201
241
  source_code_uri: https://github.com/q9f/eth.rb
202
- post_install_message:
203
242
  rdoc_options: []
204
243
  require_paths:
205
244
  - lib
@@ -211,15 +250,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
211
250
  version: '3.0'
212
251
  - - "<"
213
252
  - !ruby/object:Gem::Version
214
- version: '4.0'
253
+ version: '5.0'
215
254
  required_rubygems_version: !ruby/object:Gem::Requirement
216
255
  requirements:
217
256
  - - ">="
218
257
  - !ruby/object:Gem::Version
219
258
  version: '0'
220
259
  requirements: []
221
- rubygems_version: 3.5.22
222
- signing_key:
260
+ rubygems_version: 3.6.9
223
261
  specification_version: 4
224
262
  summary: Ruby Ethereum library.
225
263
  test_files: []