tezos_client 1.4.1 → 1.4.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 92a3126df9c366800e22df7dceda0ac25f30ea97d53dd98aa9497d208047d428
4
- data.tar.gz: 8eebd23077fe8aa0d6f79ed4620c40554aad2ce1ca7d9d0ffc63fb0b963c2559
3
+ metadata.gz: 9ed76e36473e1470004f6e0b00e22be33b3d53a209d5864d50d6dbbf767912e7
4
+ data.tar.gz: 9ac9e6b31f46f5fc6fb9147a7394f9fc73b2131228342ed0ecfa74c7c9c3d2dd
5
5
  SHA512:
6
- metadata.gz: c1d9dcffed8b093bbac4973667441caf9c665c4228f8119f72fe7e3593bc50422d9b11198a907521e911401ca464d9dd0dff975be2d77dc57e7cd8ee5639d7be
7
- data.tar.gz: 68ffadaed7188bf5927e844213134de291e55230817c6340c4492b37181dbc520b460522a938faafa6a6eeeee759446bc858e19ffe4011b040eeddbae24b2db6
6
+ metadata.gz: 2a0e8a4c78f84ee1ddad295860ebe2e50dbeaa885c490b35f76bf80d89bb8d848e5750981e8e9a8279e1b37121ff75c6efe42af39cb68d4c7a3d80e435797959
7
+ data.tar.gz: 9a2f2eec3f07caae8be2e274e74d2118e37312b38cedccc99ac7cfc643583617c1b45671efd03c0feccc135538ce781e8dc35d1273bce458f55a3440355119c4
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- tezos_client (1.4.1)
4
+ tezos_client (1.4.4)
5
5
  active_interaction (>= 3.8)
6
6
  activesupport (~> 6.0.0)
7
7
  base58 (~> 0.2.3)
@@ -14,154 +14,158 @@ PATH
14
14
  GEM
15
15
  remote: https://rubygems.org/
16
16
  specs:
17
- actionpack (6.0.3.7)
18
- actionview (= 6.0.3.7)
19
- activesupport (= 6.0.3.7)
17
+ actionpack (6.0.4.4)
18
+ actionview (= 6.0.4.4)
19
+ activesupport (= 6.0.4.4)
20
20
  rack (~> 2.0, >= 2.0.8)
21
21
  rack-test (>= 0.6.3)
22
22
  rails-dom-testing (~> 2.0)
23
23
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
24
- actionview (6.0.3.7)
25
- activesupport (= 6.0.3.7)
24
+ actionview (6.0.4.4)
25
+ activesupport (= 6.0.4.4)
26
26
  builder (~> 3.1)
27
27
  erubi (~> 1.4)
28
28
  rails-dom-testing (~> 2.0)
29
29
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
30
- active_interaction (4.0.1)
31
- activemodel (>= 5, < 7)
32
- activemodel (6.0.3.7)
33
- activesupport (= 6.0.3.7)
34
- activesupport (6.0.3.7)
30
+ active_interaction (4.1.0)
31
+ activemodel (>= 5, < 8)
32
+ activesupport (>= 5, < 8)
33
+ activemodel (6.0.4.4)
34
+ activesupport (= 6.0.4.4)
35
+ activesupport (6.0.4.4)
35
36
  concurrent-ruby (~> 1.0, >= 1.0.2)
36
37
  i18n (>= 0.7, < 2)
37
38
  minitest (~> 5.1)
38
39
  tzinfo (~> 1.1)
39
40
  zeitwerk (~> 2.2, >= 2.2.2)
40
- addressable (2.7.0)
41
+ addressable (2.8.0)
41
42
  public_suffix (>= 2.0.2, < 5.0)
42
43
  ast (2.4.2)
43
44
  base58 (0.2.3)
44
45
  bip_mnemonic (0.0.4)
45
46
  builder (3.2.4)
46
47
  coderay (1.1.3)
47
- concurrent-ruby (1.1.8)
48
+ concurrent-ruby (1.1.9)
48
49
  crack (0.4.5)
49
50
  rexml
50
51
  crass (1.0.6)
51
- diff-lcs (1.4.4)
52
+ diff-lcs (1.5.0)
52
53
  domain_name (0.5.20190701)
53
54
  unf (>= 0.0.5, < 1.0.0)
54
55
  erubi (1.10.0)
55
- ffi (1.15.1)
56
+ ffi (1.15.5)
56
57
  hashdiff (1.0.1)
57
- http-cookie (1.0.3)
58
+ http-cookie (1.0.4)
58
59
  domain_name (~> 0.5)
59
60
  httparty (0.17.3)
60
61
  mime-types (~> 3.0)
61
62
  multi_xml (>= 0.5.2)
62
- i18n (1.8.10)
63
+ i18n (1.9.1)
63
64
  concurrent-ruby (~> 1.0)
64
- loofah (2.9.1)
65
+ loofah (2.13.0)
65
66
  crass (~> 1.0.2)
66
67
  nokogiri (>= 1.5.9)
67
68
  method_source (1.0.0)
68
- mime-types (3.3.1)
69
+ mime-types (3.4.1)
69
70
  mime-types-data (~> 3.2015)
70
- mime-types-data (3.2021.0225)
71
- minitest (5.14.4)
71
+ mime-types-data (3.2022.0105)
72
+ minitest (5.15.0)
72
73
  money-tree (0.10.0)
73
74
  ffi
74
75
  multi_xml (0.6.0)
75
76
  netrc (0.11.0)
76
- nokogiri (1.11.6-x86_64-darwin)
77
+ nokogiri (1.13.1-x86_64-darwin)
77
78
  racc (~> 1.4)
78
- parallel (1.20.1)
79
- parser (3.0.1.1)
79
+ parallel (1.21.0)
80
+ parser (3.1.0.0)
80
81
  ast (~> 2.4.1)
81
82
  pry (0.14.1)
82
83
  coderay (~> 1.1)
83
84
  method_source (~> 1.0)
84
85
  public_suffix (4.0.6)
85
- racc (1.5.2)
86
+ racc (1.6.0)
86
87
  rack (2.2.3)
87
88
  rack-test (1.1.0)
88
89
  rack (>= 1.0, < 3)
89
90
  rails-dom-testing (2.0.3)
90
91
  activesupport (>= 4.2.0)
91
92
  nokogiri (>= 1.6)
92
- rails-html-sanitizer (1.3.0)
93
+ rails-html-sanitizer (1.4.2)
93
94
  loofah (~> 2.3)
94
- railties (6.0.3.7)
95
- actionpack (= 6.0.3.7)
96
- activesupport (= 6.0.3.7)
95
+ railties (6.0.4.4)
96
+ actionpack (= 6.0.4.4)
97
+ activesupport (= 6.0.4.4)
97
98
  method_source
98
99
  rake (>= 0.8.7)
99
100
  thor (>= 0.20.3, < 2.0)
100
- rainbow (3.0.0)
101
- rake (13.0.3)
101
+ rainbow (3.1.1)
102
+ rake (13.0.6)
102
103
  rbnacl (5.0.0)
103
104
  ffi
104
- regexp_parser (2.1.1)
105
+ regexp_parser (2.2.0)
105
106
  rest-client (2.0.2)
106
107
  http-cookie (>= 1.0.2, < 2.0)
107
108
  mime-types (>= 1.16, < 4.0)
108
109
  netrc (~> 0.8)
109
110
  rexml (3.2.5)
110
- rspec (3.10.0)
111
- rspec-core (~> 3.10.0)
112
- rspec-expectations (~> 3.10.0)
113
- rspec-mocks (~> 3.10.0)
114
- rspec-core (3.10.1)
115
- rspec-support (~> 3.10.0)
116
- rspec-expectations (3.10.1)
111
+ rspec (3.11.0)
112
+ rspec-core (~> 3.11.0)
113
+ rspec-expectations (~> 3.11.0)
114
+ rspec-mocks (~> 3.11.0)
115
+ rspec-core (3.11.0)
116
+ rspec-support (~> 3.11.0)
117
+ rspec-expectations (3.11.0)
117
118
  diff-lcs (>= 1.2.0, < 2.0)
118
- rspec-support (~> 3.10.0)
119
- rspec-mocks (3.10.2)
119
+ rspec-support (~> 3.11.0)
120
+ rspec-mocks (3.11.0)
120
121
  diff-lcs (>= 1.2.0, < 2.0)
121
- rspec-support (~> 3.10.0)
122
- rspec-support (3.10.2)
123
- rubocop (1.15.0)
122
+ rspec-support (~> 3.11.0)
123
+ rspec-support (3.11.0)
124
+ rubocop (1.25.1)
124
125
  parallel (~> 1.10)
125
- parser (>= 3.0.0.0)
126
+ parser (>= 3.1.0.0)
126
127
  rainbow (>= 2.2.2, < 4.0)
127
128
  regexp_parser (>= 1.8, < 3.0)
128
129
  rexml
129
- rubocop-ast (>= 1.5.0, < 2.0)
130
+ rubocop-ast (>= 1.15.1, < 2.0)
130
131
  ruby-progressbar (~> 1.7)
131
132
  unicode-display_width (>= 1.4.0, < 3.0)
132
- rubocop-ast (1.6.0)
133
+ rubocop-ast (1.15.1)
133
134
  parser (>= 3.0.1.1)
135
+ rubocop-minitest (0.17.1)
136
+ rubocop (>= 0.90, < 2.0)
134
137
  rubocop-packaging (0.5.1)
135
138
  rubocop (>= 0.89, < 2.0)
136
- rubocop-performance (1.11.3)
139
+ rubocop-performance (1.13.2)
137
140
  rubocop (>= 1.7.0, < 2.0)
138
141
  rubocop-ast (>= 0.4.0)
139
- rubocop-rails (2.10.1)
142
+ rubocop-rails (2.13.2)
140
143
  activesupport (>= 4.2.0)
141
144
  rack (>= 1.1)
142
145
  rubocop (>= 1.7.0, < 2.0)
143
- rubocop-rails_config (1.5.3)
146
+ rubocop-rails_config (1.8.2)
144
147
  railties (>= 5.0)
145
- rubocop (>= 1.13)
148
+ rubocop (>= 1.19)
146
149
  rubocop-ast (>= 1.0.1)
150
+ rubocop-minitest (~> 0.15)
147
151
  rubocop-packaging (~> 0.5)
148
152
  rubocop-performance (~> 1.11)
149
153
  rubocop-rails (~> 2.0)
150
154
  ruby-progressbar (1.11.0)
151
- thor (1.1.0)
155
+ thor (1.2.1)
152
156
  thread_safe (0.3.6)
153
157
  tzinfo (1.2.9)
154
158
  thread_safe (~> 0.1)
155
159
  unf (0.1.4)
156
160
  unf_ext
157
- unf_ext (0.0.7.7)
158
- unicode-display_width (2.0.0)
161
+ unf_ext (0.0.8)
162
+ unicode-display_width (2.1.0)
159
163
  vcr (4.0.0)
160
- webmock (3.13.0)
161
- addressable (>= 2.3.6)
164
+ webmock (3.14.0)
165
+ addressable (>= 2.8.0)
162
166
  crack (>= 0.3.2)
163
167
  hashdiff (>= 0.4.0, < 2.0.0)
164
- zeitwerk (2.4.2)
168
+ zeitwerk (2.5.4)
165
169
 
166
170
  PLATFORMS
167
171
  x86_64-darwin-19
data/README.md CHANGED
@@ -59,9 +59,9 @@ client = TezosClient.new
59
59
  key = subject.generate_key
60
60
  expect(key[:address]).to eq "tz1RfnzRopJXH32SSDap2wMYGULBAnmHxdP1"
61
61
  # => {
62
- # :secret_key=>"edsk4T2fHv5RLL3VSXHz82SQiyFx7vZ4wwtA2u67AvAaw5yqNEvuU2",
63
- # :public_key=>"edpkuncp7KSVhV57Qg7odwhMFcnAHnNrMppbitBPKBfvdg6fFVeNjr",
64
- # :address=>"tz1a97x7GAvMDyrwwKTLQo131CoidXyUef48"
62
+ # secret_key: "edsk4T2fHv5RLL3VSXHz82SQiyFx7vZ4wwtA2u67AvAaw5yqNEvuU2",
63
+ # public_key: "edpkuncp7KSVhV57Qg7odwhMFcnAHnNrMppbitBPKBfvdg6fFVeNjr",
64
+ # address: "tz1a97x7GAvMDyrwwKTLQo131CoidXyUef48"
65
65
  # }
66
66
  ```
67
67
 
@@ -71,9 +71,9 @@ Generate a key pair from a seed and a BIP 44 Path:
71
71
  key = subject.generate_key(wallet_seed:"000102030405060708090a0b0c0d0e0f", path: "m/44'/1729'/0'/0'/0'")
72
72
  expect(key[:address]).to eq "tz1RfnzRopJXH32SSDap2wMYGULBAnmHxdP1"
73
73
  # => {
74
- # :secret_key=>"edsk4T2fHv5RLL3VSXHz82SQiyFx7vZ4wwtA2u67AvAaw5yqNEvuU2",
75
- # :public_key=>"edpkuncp7KSVhV57Qg7odwhMFcnAHnNrMppbitBPKBfvdg6fFVeNjr",
76
- # :address=>"tz1a97x7GAvMDyrwwKTLQo131CoidXyUef48"
74
+ # secret_key: "edsk4T2fHv5RLL3VSXHz82SQiyFx7vZ4wwtA2u67AvAaw5yqNEvuU2",
75
+ # public_key: "edpkuncp7KSVhV57Qg7odwhMFcnAHnNrMppbitBPKBfvdg6fFVeNjr",
76
+ # address: "tz1a97x7GAvMDyrwwKTLQo131CoidXyUef48"
77
77
  # }
78
78
  ```
79
79
  Generate a key pair from a BIP-39 mnemonic sentence and a BIP 44 Path:
@@ -84,9 +84,9 @@ key = subject.generate_key(
84
84
  path: "m/44'/1729'/0'/0'/0'")
85
85
  expect(key[:address]).to eq "tz1RfnzRopJXH32SSDap2wMYGULBAnmHxdP1"
86
86
  # => {
87
- # :secret_key=>"edsk4T2fHv5RLL3VSXHz82SQiyFx7vZ4wwtA2u67AvAaw5yqNEvuU2",
88
- # :public_key=>"edpkuncp7KSVhV57Qg7odwhMFcnAHnNrMppbitBPKBfvdg6fFVeNjr",
89
- # :address=>"tz1a97x7GAvMDyrwwKTLQo131CoidXyUef48"
87
+ # secret_key: "edsk4T2fHv5RLL3VSXHz82SQiyFx7vZ4wwtA2u67AvAaw5yqNEvuU2",
88
+ # public_key: "edpkuncp7KSVhV57Qg7odwhMFcnAHnNrMppbitBPKBfvdg6fFVeNjr",
89
+ # address: "tz1a97x7GAvMDyrwwKTLQo131CoidXyUef48"
90
90
  # }
91
91
  ```
92
92
 
data/demo_script.json ADDED
@@ -0,0 +1,427 @@
1
+ {
2
+ "code": [
3
+ {
4
+ "prim": "storage",
5
+ "args": [
6
+ {
7
+ "prim": "pair",
8
+ "args": [
9
+ {
10
+ "prim": "big_map",
11
+ "args": [
12
+ {
13
+ "prim": "string"
14
+ },
15
+ {
16
+ "prim": "int"
17
+ }
18
+ ],
19
+ "annots": [
20
+ "%big_map_first"
21
+ ]
22
+ },
23
+ {
24
+ "prim": "big_map",
25
+ "args": [
26
+ {
27
+ "prim": "string"
28
+ },
29
+ {
30
+ "prim": "string"
31
+ }
32
+ ],
33
+ "annots": [
34
+ "%big_map_second"
35
+ ]
36
+ }
37
+ ]
38
+ }
39
+ ]
40
+ },
41
+ {
42
+ "prim": "parameter",
43
+ "args": [
44
+ {
45
+ "prim": "or",
46
+ "args": [
47
+ {
48
+ "prim": "or",
49
+ "args": [
50
+ {
51
+ "prim": "pair",
52
+ "args": [
53
+ {
54
+ "prim": "string",
55
+ "annots": [
56
+ "%key"
57
+ ]
58
+ },
59
+ {
60
+ "prim": "int",
61
+ "annots": [
62
+ "%value"
63
+ ]
64
+ }
65
+ ],
66
+ "annots": [
67
+ "%add_first"
68
+ ]
69
+ },
70
+ {
71
+ "prim": "pair",
72
+ "args": [
73
+ {
74
+ "prim": "string",
75
+ "annots": [
76
+ "%key"
77
+ ]
78
+ },
79
+ {
80
+ "prim": "string",
81
+ "annots": [
82
+ "%value"
83
+ ]
84
+ }
85
+ ],
86
+ "annots": [
87
+ "%add_second"
88
+ ]
89
+ }
90
+ ]
91
+ },
92
+ {
93
+ "prim": "or",
94
+ "args": [
95
+ {
96
+ "prim": "pair",
97
+ "args": [
98
+ {
99
+ "prim": "pair",
100
+ "args": [
101
+ {
102
+ "prim": "string",
103
+ "annots": [
104
+ "%first"
105
+ ]
106
+ },
107
+ {
108
+ "prim": "string",
109
+ "annots": [
110
+ "%key"
111
+ ]
112
+ }
113
+ ]
114
+ },
115
+ {
116
+ "prim": "pair",
117
+ "args": [
118
+ {
119
+ "prim": "string",
120
+ "annots": [
121
+ "%second"
122
+ ]
123
+ },
124
+ {
125
+ "prim": "string",
126
+ "annots": [
127
+ "%third"
128
+ ]
129
+ }
130
+ ]
131
+ }
132
+ ],
133
+ "annots": [
134
+ "%add_third"
135
+ ]
136
+ },
137
+ {
138
+ "prim": "nat",
139
+ "annots": [
140
+ "%always_fail"
141
+ ]
142
+ }
143
+ ]
144
+ }
145
+ ]
146
+ }
147
+ ]
148
+ },
149
+ {
150
+ "prim": "code",
151
+ "args": [
152
+ [
153
+ {
154
+ "prim": "UNPAIR"
155
+ },
156
+ {
157
+ "prim": "IF_LEFT",
158
+ "args": [
159
+ [
160
+ {
161
+ "prim": "IF_LEFT",
162
+ "args": [
163
+ [
164
+ {
165
+ "prim": "SWAP"
166
+ },
167
+ {
168
+ "prim": "UNPAIR"
169
+ },
170
+ {
171
+ "prim": "DUP",
172
+ "args": [
173
+ {
174
+ "int": "3"
175
+ }
176
+ ]
177
+ },
178
+ {
179
+ "prim": "CDR"
180
+ },
181
+ {
182
+ "prim": "SOME"
183
+ },
184
+ {
185
+ "prim": "DIG",
186
+ "args": [
187
+ {
188
+ "int": "3"
189
+ }
190
+ ]
191
+ },
192
+ {
193
+ "prim": "CAR"
194
+ },
195
+ {
196
+ "prim": "UPDATE"
197
+ },
198
+ {
199
+ "prim": "PAIR"
200
+ }
201
+ ],
202
+ [
203
+ {
204
+ "prim": "SWAP"
205
+ },
206
+ {
207
+ "prim": "UNPAIR"
208
+ },
209
+ {
210
+ "prim": "SWAP"
211
+ },
212
+ {
213
+ "prim": "DUP",
214
+ "args": [
215
+ {
216
+ "int": "3"
217
+ }
218
+ ]
219
+ },
220
+ {
221
+ "prim": "CDR"
222
+ },
223
+ {
224
+ "prim": "SOME"
225
+ },
226
+ {
227
+ "prim": "DIG",
228
+ "args": [
229
+ {
230
+ "int": "3"
231
+ }
232
+ ]
233
+ },
234
+ {
235
+ "prim": "CAR"
236
+ },
237
+ {
238
+ "prim": "UPDATE"
239
+ },
240
+ {
241
+ "prim": "SWAP"
242
+ },
243
+ {
244
+ "prim": "PAIR"
245
+ }
246
+ ]
247
+ ]
248
+ }
249
+ ],
250
+ [
251
+ {
252
+ "prim": "IF_LEFT",
253
+ "args": [
254
+ [
255
+ {
256
+ "prim": "SWAP"
257
+ },
258
+ {
259
+ "prim": "UNPAIR"
260
+ },
261
+ {
262
+ "prim": "SWAP"
263
+ },
264
+ {
265
+ "prim": "DIG",
266
+ "args": [
267
+ {
268
+ "int": "2"
269
+ }
270
+ ]
271
+ },
272
+ {
273
+ "prim": "DUP"
274
+ },
275
+ {
276
+ "prim": "GET",
277
+ "args": [
278
+ {
279
+ "int": "4"
280
+ }
281
+ ]
282
+ },
283
+ {
284
+ "prim": "SWAP"
285
+ },
286
+ {
287
+ "prim": "DUP"
288
+ },
289
+ {
290
+ "prim": "GET",
291
+ "args": [
292
+ {
293
+ "int": "3"
294
+ }
295
+ ]
296
+ },
297
+ {
298
+ "prim": "SWAP"
299
+ },
300
+ {
301
+ "prim": "DUP"
302
+ },
303
+ {
304
+ "prim": "DUG",
305
+ "args": [
306
+ {
307
+ "int": "5"
308
+ }
309
+ ]
310
+ },
311
+ {
312
+ "prim": "CAR"
313
+ },
314
+ {
315
+ "prim": "CAR"
316
+ },
317
+ {
318
+ "prim": "CONCAT"
319
+ },
320
+ {
321
+ "prim": "CONCAT"
322
+ },
323
+ {
324
+ "prim": "SOME"
325
+ },
326
+ {
327
+ "prim": "DIG",
328
+ "args": [
329
+ {
330
+ "int": "3"
331
+ }
332
+ ]
333
+ },
334
+ {
335
+ "prim": "CAR"
336
+ },
337
+ {
338
+ "prim": "CDR"
339
+ },
340
+ {
341
+ "prim": "UPDATE"
342
+ },
343
+ {
344
+ "prim": "SWAP"
345
+ },
346
+ {
347
+ "prim": "PAIR"
348
+ }
349
+ ],
350
+ [
351
+ {
352
+ "prim": "PUSH",
353
+ "args": [
354
+ {
355
+ "prim": "nat"
356
+ },
357
+ {
358
+ "int": "0"
359
+ }
360
+ ]
361
+ },
362
+ {
363
+ "prim": "SWAP"
364
+ },
365
+ {
366
+ "prim": "COMPARE"
367
+ },
368
+ {
369
+ "prim": "GE"
370
+ },
371
+ {
372
+ "prim": "IF",
373
+ "args": [
374
+ [
375
+ {
376
+ "prim": "PUSH",
377
+ "args": [
378
+ {
379
+ "prim": "string"
380
+ },
381
+ {
382
+ "string": "I'm failing"
383
+ }
384
+ ]
385
+ },
386
+ {
387
+ "prim": "FAILWITH"
388
+ }
389
+ ],
390
+ [
391
+
392
+ ]
393
+ ]
394
+ }
395
+ ]
396
+ ]
397
+ }
398
+ ]
399
+ ]
400
+ },
401
+ {
402
+ "prim": "NIL",
403
+ "args": [
404
+ {
405
+ "prim": "operation"
406
+ }
407
+ ]
408
+ },
409
+ {
410
+ "prim": "PAIR"
411
+ }
412
+ ]
413
+ ]
414
+ }
415
+ ],
416
+ "storage": {
417
+ "prim": "Pair",
418
+ "args": [
419
+ [
420
+
421
+ ],
422
+ [
423
+
424
+ ]
425
+ ]
426
+ }
427
+ }
@@ -31,8 +31,8 @@ class TezosClient
31
31
  def group_by_max_counter(arr)
32
32
  arr.map(&:with_indifferent_access)
33
33
  .group_by { |hsh| hsh[:source] }
34
- .each_with_object({}) do |(source, contents), acc|
35
- acc[source] = contents.max_by { |content| content[:counter].to_i }[:counter]
34
+ .transform_values do |contents|
35
+ contents.max_by { |content| content[:counter].to_i }[:counter]
36
36
  end
37
37
  end
38
38
  end
@@ -103,7 +103,7 @@ class TezosClient
103
103
  rejection_error = errors.detect { |error| error[:id].match? ERROR_REGEXP }
104
104
 
105
105
  @location = rejection_error[:location]
106
- @contract = first_error[:contractHandle]
106
+ @contract = first_error[:contractHandle]
107
107
  @with = rejection_error[:with]
108
108
  @message = "Script runtime Error when executing #{contract}: #{with} (location: #{location})"
109
109
  super
@@ -5,11 +5,9 @@ class TezosClient
5
5
  include EncodeUtils
6
6
 
7
7
  def rpc_operation_args
8
- @rpc_operation_args ||= begin
9
- rpc_interface.transaction_operation(
8
+ @rpc_operation_args ||= rpc_interface.transaction_operation(
10
9
  operation_args
11
10
  )
12
- end
13
11
  end
14
12
 
15
13
  private
@@ -3,14 +3,12 @@
3
3
  class TezosClient
4
4
  class TransactionsOperation < Operation
5
5
  def rpc_operation_args
6
- @rpc_operation_args ||= begin
7
- OperationArray.new(
6
+ @rpc_operation_args ||= OperationArray.new(
8
7
  operations: operations,
9
8
  secret_key: @args.fetch(:secret_key),
10
9
  from: @args.fetch(:from),
11
10
  rpc_interface: rpc_interface
12
11
  ).rpc_operation_args
13
- end
14
12
  end
15
13
 
16
14
  def operations
@@ -28,50 +28,50 @@ class TezosClient
28
28
  end
29
29
 
30
30
  private
31
- def compile_to_michelson(args)
32
- Tools::TemporaryFile.with_file_copy(args[:script]) do |script_copy_path|
33
- script_basename = script_copy_path.split("/").last.sub(/.py$/, "")
34
- script_path = "/tmp/#{script_basename}/"
35
- init_script_filename = "step_000_cont_0_storage.json"
36
- contract_script_filename = "step_000_cont_0_contract.json"
37
-
38
- cmd_line = ["compile", script_copy_path, script_path].concat(
39
- optional_inputs(args[:smartpy_flags], args[:init_params])
40
- )
31
+ def compile_to_michelson(args)
32
+ Tools::TemporaryFile.with_file_copy(args[:script]) do |script_copy_path|
33
+ script_basename = script_copy_path.split("/").last.sub(/.py$/, "")
34
+ script_path = "/tmp/#{script_basename}/"
35
+ init_script_filename = "step_000_cont_0_storage.json"
36
+ contract_script_filename = "step_000_cont_0_contract.json"
37
+
38
+ cmd_line = ["compile", script_copy_path, script_path].concat(
39
+ optional_inputs(args[:smartpy_flags], args[:init_params])
40
+ )
41
41
 
42
- call_smartpy cmd_line
42
+ call_smartpy cmd_line
43
43
 
44
- yield(script_path + "default/" + contract_script_filename, script_path + "default/" + init_script_filename)
44
+ yield(script_path + "default/" + contract_script_filename, script_path + "default/" + init_script_filename)
45
+ end
45
46
  end
46
- end
47
47
 
48
- def optional_inputs(flags, init_params)
49
- inputs = []
48
+ def optional_inputs(flags, init_params)
49
+ inputs = []
50
50
 
51
- inputs.concat(optional_flags(flags))
52
- inputs.concat(optional_args(init_params))
51
+ inputs.concat(optional_flags(flags))
52
+ inputs.concat(optional_args(init_params))
53
53
 
54
- inputs
55
- end
54
+ inputs
55
+ end
56
56
 
57
- def optional_flags(flags)
58
- (flags || {}).map do |key, value|
59
- if value.is_a?(FalseClass) || value.is_a?(TrueClass)
60
- "--#{key}"
61
- else
62
- ["--#{key}", value.to_s]
63
- end
64
- end.flatten
65
- end
57
+ def optional_flags(flags)
58
+ (flags || {}).map do |key, value|
59
+ if value.is_a?(FalseClass) || value.is_a?(TrueClass)
60
+ "--#{key}"
61
+ else
62
+ ["--#{key}", value.to_s]
63
+ end
64
+ end.flatten
65
+ end
66
66
 
67
- def optional_args(init_params = [])
68
- return [] if init_params.count.zero?
67
+ def optional_args(init_params = [])
68
+ return [] if init_params.count.zero?
69
69
 
70
- ["--"].concat(
71
- init_params.map do |init_param|
72
- init_param.to_json
73
- end
74
- )
75
- end
70
+ ["--"].concat(
71
+ init_params.map do |init_param|
72
+ init_param.to_json
73
+ end
74
+ )
75
+ end
76
76
  end
77
77
  end
@@ -72,7 +72,7 @@ class TezosClient::Tools::AnnotsToType < ActiveInteraction::Base
72
72
 
73
73
  def validate_types
74
74
  allowed_types = TYPES_MAPPING.keys
75
- return if typed_annots.values.map{|type| type.to_s.delete_prefix("optional_").to_sym}.all? { |type| allowed_types.include? type }
75
+ return if typed_annots.values.map { |type| type.to_s.delete_prefix("optional_").to_sym }.all? { |type| allowed_types.include? type }
76
76
 
77
77
  errors.add(:base, "The allowed types are: #{allowed_types.join(', ')}")
78
78
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ class TezosClient
4
+ module Tools
5
+ class ConvertToHash < ActiveInteraction::Base
6
+ class KeyHash < Base
7
+ def decode
8
+ Address.new(data: data, type: type).decode
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -6,7 +6,7 @@ class TezosClient
6
6
  class Option < Base
7
7
  def decode
8
8
  if data[:prim] == "None"
9
- return nil
9
+ nil
10
10
  elsif data[:prim] == "Some"
11
11
  TezosClient::Tools::ConvertToHash::Base.new(
12
12
  data: data[:args][0],
@@ -5,16 +5,60 @@ class TezosClient
5
5
  class ConvertToHash < ActiveInteraction::Base
6
6
  class Pair < Base
7
7
  def decode
8
- raise "Not a 'Pair' type" unless data[:prim] == "Pair"
9
- raise "Difference detected between data and type \nDATA: #{data} \nTYPE:#{type} " unless data[:args].size == type[:args].size
8
+ raise "Not a 'Pair' type" unless normalized_data[:prim] == "Pair"
9
+ raise "Difference detected between data and type \nDATA: #{normalized_data} \nTYPE:#{normalized_type} " unless normalized_data[:args].size == normalized_type[:args].size
10
10
 
11
- (data[:args]).zip(type[:args]).map do |data_n, type_n|
11
+ (normalized_data[:args]).zip(normalized_type[:args]).map do |data_n, type_n|
12
12
  TezosClient::Tools::ConvertToHash::Base.new(
13
13
  data: data_n,
14
14
  type: type_n
15
15
  ).value
16
16
  end.reduce({}, &:merge)
17
17
  end
18
+
19
+ private
20
+
21
+ def normalized_type
22
+ if type[:args].size > 2
23
+ {
24
+ prim: "pair",
25
+ args: [
26
+ type[:args][0],
27
+ {
28
+ prim: "pair",
29
+ args: type[:args][1..]
30
+ }
31
+ ]
32
+ }
33
+ else
34
+ type
35
+ end
36
+ end
37
+
38
+ def expanded_data
39
+ if data.is_a?(Array)
40
+ {prim: "Pair", args: data}
41
+ else
42
+ data
43
+ end
44
+ end
45
+
46
+ def normalized_data
47
+ if expanded_data[:args].size > 2
48
+ {
49
+ prim: "Pair",
50
+ args: [
51
+ expanded_data[:args][0],
52
+ {
53
+ prim: "Pair",
54
+ args: expanded_data[:args][1..]
55
+ }
56
+ ]
57
+ }
58
+ else
59
+ expanded_data
60
+ end
61
+ end
18
62
  end
19
63
  end
20
64
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ class TezosClient
4
+ module Tools
5
+ class ConvertToHash < ActiveInteraction::Base
6
+ class Set < Base
7
+ def decode
8
+ List.new(data: data, type: type).decode.to_set
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -22,9 +22,7 @@ class TezosClient
22
22
  data: data,
23
23
  type: type
24
24
  ).encode
25
-
26
25
  rescue NameError
27
- raise
28
26
  raise NotImplementedError, "type '#{type[:prim]}' not implemented"
29
27
  end
30
28
 
@@ -7,38 +7,37 @@ class TezosClient
7
7
  def encode
8
8
  {
9
9
  prim: "Pair",
10
- args: [
11
- TezosClient::Tools::HashToMicheline::Base.new(
12
- data: data_0,
13
- type: type[:args][0]
14
- ).value,
15
- TezosClient::Tools::HashToMicheline::Base.new(
16
- data: data_1,
17
- type: type[:args][1]
18
- ).value
19
- ]
10
+ args: args
20
11
  }
21
12
  end
22
13
 
23
- def data_0
24
- if data.is_a? ::Array
25
- data[0]
26
- else
27
- data
14
+ private
15
+ def args
16
+ type[:args].each_with_index.map do |type, index|
17
+ TezosClient::Tools::HashToMicheline::Base.new(
18
+ data: data_n(index),
19
+ type: type
20
+ ).value
21
+ end
22
+ end
23
+
24
+ def args_count
25
+ type[:args].size
28
26
  end
29
- end
30
27
 
31
- def data_1
32
- if data.is_a? ::Array
33
- if data.size > 2
34
- data.drop(1)
28
+ def data_n(n)
29
+ if data.is_a? ::Array
30
+ is_last_arg = n == (args_count - 1)
31
+ # Handle the case when last arg is i Pair, which arguments are the last elements of the data
32
+ if is_last_arg && data.size > args_count
33
+ data.drop(args_count - 1)
34
+ else
35
+ data[n]
36
+ end
35
37
  else
36
- data[1]
38
+ data
37
39
  end
38
- else
39
- data
40
40
  end
41
- end
42
41
  end
43
42
  end
44
43
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class TezosClient
4
- VERSION = "1.4.1"
4
+ VERSION = "1.4.4"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tezos_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pierre Michard
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2021-05-31 00:00:00.000000000 Z
13
+ date: 2022-04-12 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -244,6 +244,7 @@ files:
244
244
  - Rakefile
245
245
  - bin/console
246
246
  - bin/setup
247
+ - demo_script.json
247
248
  - lib/tezos_client.rb
248
249
  - lib/tezos_client/client_interface/block_contextual.rb
249
250
  - lib/tezos_client/client_interface/client_wrapper.rb
@@ -285,11 +286,13 @@ files:
285
286
  - lib/tezos_client/tools/convert_to_hash/bytes.rb
286
287
  - lib/tezos_client/tools/convert_to_hash/int.rb
287
288
  - lib/tezos_client/tools/convert_to_hash/key.rb
289
+ - lib/tezos_client/tools/convert_to_hash/key_hash.rb
288
290
  - lib/tezos_client/tools/convert_to_hash/list.rb
289
291
  - lib/tezos_client/tools/convert_to_hash/map.rb
290
292
  - lib/tezos_client/tools/convert_to_hash/nat.rb
291
293
  - lib/tezos_client/tools/convert_to_hash/option.rb
292
294
  - lib/tezos_client/tools/convert_to_hash/pair.rb
295
+ - lib/tezos_client/tools/convert_to_hash/set.rb
293
296
  - lib/tezos_client/tools/convert_to_hash/signature.rb
294
297
  - lib/tezos_client/tools/convert_to_hash/string.rb
295
298
  - lib/tezos_client/tools/convert_to_hash/timestamp.rb
@@ -332,7 +335,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
332
335
  - !ruby/object:Gem::Version
333
336
  version: '0'
334
337
  requirements: []
335
- rubygems_version: 3.0.8
338
+ rubygems_version: 3.0.3
336
339
  signing_key:
337
340
  specification_version: 4
338
341
  summary: Wrapper to the tezos client.