eth 0.4.11 → 0.4.18
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/.github/workflows/build.yml +36 -0
- data/.github/workflows/codeql.yml +44 -0
- data/.github/workflows/docs.yml +26 -0
- data/.gitignore +40 -7
- data/CHANGELOG.md +22 -12
- data/Gemfile +7 -2
- data/LICENSE.txt +2 -1
- data/README.md +10 -4
- data/eth.gemspec +40 -24
- data/lib/eth/address.rb +0 -3
- data/lib/eth/gas.rb +0 -2
- data/lib/eth/key/decrypter.rb +17 -20
- data/lib/eth/key/encrypter.rb +12 -14
- data/lib/eth/key.rb +6 -7
- data/lib/eth/open_ssl.rb +305 -174
- data/lib/eth/secp256k1.rb +0 -2
- data/lib/eth/sedes.rb +0 -1
- data/lib/eth/tx.rb +4 -5
- data/lib/eth/utils.rb +10 -14
- data/lib/eth/version.rb +1 -1
- data/lib/eth.rb +13 -13
- metadata +65 -27
- data/.travis.yml +0 -10
data/lib/eth/utils.rb
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
module Eth
|
2
2
|
module Utils
|
3
|
-
|
4
3
|
extend self
|
5
4
|
|
6
5
|
def normalize_address(address)
|
7
|
-
if address.nil? || address ==
|
8
|
-
|
6
|
+
if address.nil? || address == ""
|
7
|
+
""
|
9
8
|
elsif address.size == 40
|
10
9
|
hex_to_bin address
|
11
|
-
elsif address.size == 42 && address[0..1] ==
|
10
|
+
elsif address.size == 42 && address[0..1] == "0x"
|
12
11
|
hex_to_bin address[2..-1]
|
13
12
|
else
|
14
13
|
address
|
@@ -24,7 +23,7 @@ module Eth
|
|
24
23
|
end
|
25
24
|
|
26
25
|
def base256_to_int(str)
|
27
|
-
RLP::Sedes.big_endian_int.deserialize str.sub(/\A(\x00)+/,
|
26
|
+
RLP::Sedes.big_endian_int.deserialize str.sub(/\A(\x00)+/, "")
|
28
27
|
end
|
29
28
|
|
30
29
|
def int_to_base256(int)
|
@@ -44,7 +43,7 @@ module Eth
|
|
44
43
|
end
|
45
44
|
|
46
45
|
def remove_hex_prefix(s)
|
47
|
-
s[0,2] ==
|
46
|
+
s[0, 2] == "0x" ? s[2..-1] : s
|
48
47
|
end
|
49
48
|
|
50
49
|
def bin_to_prefixed_hex(binary)
|
@@ -66,11 +65,11 @@ module Eth
|
|
66
65
|
end
|
67
66
|
|
68
67
|
def keccak256(x)
|
69
|
-
Digest::
|
68
|
+
Digest::Keccak.new(256).digest(x)
|
70
69
|
end
|
71
70
|
|
72
71
|
def keccak512(x)
|
73
|
-
Digest::
|
72
|
+
Digest::Keccak.new(512).digest(x)
|
74
73
|
end
|
75
74
|
|
76
75
|
def keccak256_rlp(x)
|
@@ -90,14 +89,14 @@ module Eth
|
|
90
89
|
end
|
91
90
|
|
92
91
|
def zunpad(x)
|
93
|
-
x.sub(/\A\x00+/,
|
92
|
+
x.sub(/\A\x00+/, "")
|
94
93
|
end
|
95
94
|
|
96
|
-
def zpad_int(n, l=32)
|
95
|
+
def zpad_int(n, l = 32)
|
97
96
|
zpad encode_int(n), l
|
98
97
|
end
|
99
98
|
|
100
|
-
def zpad_hex(s, l=32)
|
99
|
+
def zpad_hex(s, l = 32)
|
101
100
|
zpad decode_hex(s), l
|
102
101
|
end
|
103
102
|
|
@@ -109,8 +108,6 @@ module Eth
|
|
109
108
|
Address.new(address).checksummed
|
110
109
|
end
|
111
110
|
|
112
|
-
|
113
|
-
|
114
111
|
private
|
115
112
|
|
116
113
|
def lpad(x, symbol, l)
|
@@ -125,6 +122,5 @@ module Eth
|
|
125
122
|
|
126
123
|
int_to_base256 n
|
127
124
|
end
|
128
|
-
|
129
125
|
end
|
130
126
|
end
|
data/lib/eth/version.rb
CHANGED
data/lib/eth.rb
CHANGED
@@ -1,20 +1,20 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
1
|
+
require "digest/keccak"
|
2
|
+
require "ffi"
|
3
|
+
require "money-tree"
|
4
|
+
require "rlp"
|
5
5
|
|
6
6
|
module Eth
|
7
7
|
BYTE_ZERO = "\x00".freeze
|
8
|
-
UINT_MAX = 2**256 - 1
|
8
|
+
UINT_MAX = 2 ** 256 - 1
|
9
9
|
|
10
|
-
autoload :Address,
|
11
|
-
autoload :Gas,
|
12
|
-
autoload :Key,
|
13
|
-
autoload :OpenSsl,
|
14
|
-
autoload :Secp256k1,
|
15
|
-
autoload :Sedes,
|
16
|
-
autoload :Tx,
|
17
|
-
autoload :Utils,
|
10
|
+
autoload :Address, "eth/address"
|
11
|
+
autoload :Gas, "eth/gas"
|
12
|
+
autoload :Key, "eth/key"
|
13
|
+
autoload :OpenSsl, "eth/open_ssl"
|
14
|
+
autoload :Secp256k1, "eth/secp256k1"
|
15
|
+
autoload :Sedes, "eth/sedes"
|
16
|
+
autoload :Tx, "eth/tx"
|
17
|
+
autoload :Utils, "eth/utils"
|
18
18
|
|
19
19
|
class << self
|
20
20
|
def configure
|
metadata
CHANGED
@@ -1,138 +1,170 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steve Ellis
|
8
|
-
|
8
|
+
- Afri Schoedon
|
9
|
+
autorequire:
|
9
10
|
bindir: exe
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2022-01-04 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
15
|
+
name: keccak
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
16
17
|
requirements:
|
17
18
|
- - "~>"
|
18
19
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
20
|
+
version: '1.3'
|
20
21
|
type: :runtime
|
21
22
|
prerelease: false
|
22
23
|
version_requirements: !ruby/object:Gem::Requirement
|
23
24
|
requirements:
|
24
25
|
- - "~>"
|
25
26
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1.
|
27
|
+
version: '1.3'
|
27
28
|
- !ruby/object:Gem::Dependency
|
28
29
|
name: ffi
|
29
30
|
requirement: !ruby/object:Gem::Requirement
|
30
31
|
requirements:
|
31
32
|
- - "~>"
|
32
33
|
- !ruby/object:Gem::Version
|
33
|
-
version: '1.
|
34
|
+
version: '1.15'
|
34
35
|
type: :runtime
|
35
36
|
prerelease: false
|
36
37
|
version_requirements: !ruby/object:Gem::Requirement
|
37
38
|
requirements:
|
38
39
|
- - "~>"
|
39
40
|
- !ruby/object:Gem::Version
|
40
|
-
version: '1.
|
41
|
+
version: '1.15'
|
41
42
|
- !ruby/object:Gem::Dependency
|
42
43
|
name: money-tree
|
43
44
|
requirement: !ruby/object:Gem::Requirement
|
44
45
|
requirements:
|
45
46
|
- - "~>"
|
46
47
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
48
|
+
version: '0.11'
|
48
49
|
type: :runtime
|
49
50
|
prerelease: false
|
50
51
|
version_requirements: !ruby/object:Gem::Requirement
|
51
52
|
requirements:
|
52
53
|
- - "~>"
|
53
54
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
55
|
+
version: '0.11'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: openssl
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '3.0'
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '3.0'
|
55
70
|
- !ruby/object:Gem::Dependency
|
56
71
|
name: rlp
|
57
72
|
requirement: !ruby/object:Gem::Requirement
|
58
73
|
requirements:
|
59
74
|
- - "~>"
|
60
75
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.7
|
76
|
+
version: '0.7'
|
62
77
|
type: :runtime
|
63
78
|
prerelease: false
|
64
79
|
version_requirements: !ruby/object:Gem::Requirement
|
65
80
|
requirements:
|
66
81
|
- - "~>"
|
67
82
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.7
|
83
|
+
version: '0.7'
|
69
84
|
- !ruby/object:Gem::Dependency
|
70
85
|
name: scrypt
|
71
86
|
requirement: !ruby/object:Gem::Requirement
|
72
87
|
requirements:
|
73
88
|
- - "~>"
|
74
89
|
- !ruby/object:Gem::Version
|
75
|
-
version: 3.0
|
90
|
+
version: '3.0'
|
76
91
|
type: :runtime
|
77
92
|
prerelease: false
|
78
93
|
version_requirements: !ruby/object:Gem::Requirement
|
79
94
|
requirements:
|
80
95
|
- - "~>"
|
81
96
|
- !ruby/object:Gem::Version
|
82
|
-
version: 3.0
|
97
|
+
version: '3.0'
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: bundler
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - "~>"
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '2.2'
|
105
|
+
type: :development
|
106
|
+
prerelease: false
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - "~>"
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '2.2'
|
83
112
|
- !ruby/object:Gem::Dependency
|
84
113
|
name: pry
|
85
114
|
requirement: !ruby/object:Gem::Requirement
|
86
115
|
requirements:
|
87
116
|
- - "~>"
|
88
117
|
- !ruby/object:Gem::Version
|
89
|
-
version: '0.
|
118
|
+
version: '0.14'
|
90
119
|
type: :development
|
91
120
|
prerelease: false
|
92
121
|
version_requirements: !ruby/object:Gem::Requirement
|
93
122
|
requirements:
|
94
123
|
- - "~>"
|
95
124
|
- !ruby/object:Gem::Version
|
96
|
-
version: '0.
|
125
|
+
version: '0.14'
|
97
126
|
- !ruby/object:Gem::Dependency
|
98
127
|
name: rake
|
99
128
|
requirement: !ruby/object:Gem::Requirement
|
100
129
|
requirements:
|
101
130
|
- - "~>"
|
102
131
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
132
|
+
version: '13.0'
|
104
133
|
type: :development
|
105
134
|
prerelease: false
|
106
135
|
version_requirements: !ruby/object:Gem::Requirement
|
107
136
|
requirements:
|
108
137
|
- - "~>"
|
109
138
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
139
|
+
version: '13.0'
|
111
140
|
- !ruby/object:Gem::Dependency
|
112
141
|
name: rspec
|
113
142
|
requirement: !ruby/object:Gem::Requirement
|
114
143
|
requirements:
|
115
144
|
- - "~>"
|
116
145
|
- !ruby/object:Gem::Version
|
117
|
-
version: '3.
|
146
|
+
version: '3.10'
|
118
147
|
type: :development
|
119
148
|
prerelease: false
|
120
149
|
version_requirements: !ruby/object:Gem::Requirement
|
121
150
|
requirements:
|
122
151
|
- - "~>"
|
123
152
|
- !ruby/object:Gem::Version
|
124
|
-
version: '3.
|
153
|
+
version: '3.10'
|
125
154
|
description: Library to build, parse, and sign Ethereum transactions.
|
126
155
|
email:
|
127
156
|
- email@steveell.is
|
157
|
+
- ruby@q9f.cc
|
128
158
|
executables: []
|
129
159
|
extensions: []
|
130
160
|
extra_rdoc_files: []
|
131
161
|
files:
|
162
|
+
- ".github/workflows/build.yml"
|
163
|
+
- ".github/workflows/codeql.yml"
|
164
|
+
- ".github/workflows/docs.yml"
|
132
165
|
- ".gitignore"
|
133
166
|
- ".gitmodules"
|
134
167
|
- ".rspec"
|
135
|
-
- ".travis.yml"
|
136
168
|
- CHANGELOG.md
|
137
169
|
- Gemfile
|
138
170
|
- LICENSE.txt
|
@@ -156,8 +188,12 @@ files:
|
|
156
188
|
homepage: https://github.com/se3000/ruby-eth
|
157
189
|
licenses:
|
158
190
|
- MIT
|
159
|
-
metadata:
|
160
|
-
|
191
|
+
metadata:
|
192
|
+
homepage_uri: https://github.com/se3000/ruby-eth
|
193
|
+
source_code_uri: https://github.com/se3000/ruby-eth
|
194
|
+
github_repo: https://github.com/se3000/ruby-eth
|
195
|
+
bug_tracker_uri: https://github.com/se3000/ruby-eth/issues
|
196
|
+
post_install_message:
|
161
197
|
rdoc_options: []
|
162
198
|
require_paths:
|
163
199
|
- lib
|
@@ -165,16 +201,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
165
201
|
requirements:
|
166
202
|
- - ">="
|
167
203
|
- !ruby/object:Gem::Version
|
168
|
-
version: '
|
204
|
+
version: '2.6'
|
205
|
+
- - "<"
|
206
|
+
- !ruby/object:Gem::Version
|
207
|
+
version: '4.0'
|
169
208
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
170
209
|
requirements:
|
171
210
|
- - ">="
|
172
211
|
- !ruby/object:Gem::Version
|
173
212
|
version: '0'
|
174
213
|
requirements: []
|
175
|
-
|
176
|
-
|
177
|
-
signing_key:
|
214
|
+
rubygems_version: 3.2.32
|
215
|
+
signing_key:
|
178
216
|
specification_version: 4
|
179
217
|
summary: Simple API to sign Ethereum transactions.
|
180
218
|
test_files: []
|