scale.rb 0.2.14 → 0.2.19

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,41 @@
1
+ use frame_support::Twox128;
2
+ use parity_scale_codec::Encode;
3
+ use frame_support::{Identity, Blake2_128Concat, Twox64Concat};
4
+ use frame_support::StorageHasher;
5
+
6
+ pub fn to_hex_string(bytes: Vec<u8>) -> String {
7
+ let strs: Vec<String> = bytes.iter()
8
+ .map(|b| format!("{:02x}", b))
9
+ .collect();
10
+ strs.join("")
11
+ }
12
+
13
+ fn main() {
14
+ // value
15
+ let k = [Twox128::hash(b"Sudo"), Twox128::hash(b"Key")].concat();
16
+ println!("{}", to_hex_string(k));
17
+
18
+ // map
19
+ let mut k = [Twox128::hash(b"ModuleAbc"), Twox128::hash(b"Map1")].concat();
20
+ k.extend(vec![1u8, 0, 0, 0].using_encoded(Blake2_128Concat::hash));
21
+ println!("{}", to_hex_string(k));
22
+
23
+ let mut k = [Twox128::hash(b"ModuleAbc"), Twox128::hash(b"Map2")].concat();
24
+ k.extend(1u32.using_encoded(Twox64Concat::hash));
25
+ println!("{}", to_hex_string(k));
26
+
27
+ let mut k = [Twox128::hash(b"ModuleAbc"), Twox128::hash(b"Map3")].concat();
28
+ k.extend(1u32.using_encoded(Identity::hash));
29
+ println!("{}", to_hex_string(k));
30
+
31
+ // double map
32
+ let mut k = [Twox128::hash(b"ModuleAbc"), Twox128::hash(b"DoubleMap1")].concat();
33
+ k.extend(1u32.using_encoded(Blake2_128Concat::hash));
34
+ k.extend(2u32.using_encoded(Blake2_128Concat::hash));
35
+ println!("{}", to_hex_string(k));
36
+
37
+ let mut k = [Twox128::hash(b"ModuleAbc"), Twox128::hash(b"DoubleMap2")].concat();
38
+ k.extend(1u32.using_encoded(Blake2_128Concat::hash));
39
+ k.extend(2u32.using_encoded(Twox64Concat::hash));
40
+ println!("{}", to_hex_string(k));
41
+ }
metadata CHANGED
@@ -1,29 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scale.rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.14
4
+ version: 0.2.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wu Minzhe
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-11-20 00:00:00.000000000 Z
11
+ date: 2021-04-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: substrate_common.rb
14
+ name: blake2b_rs
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.9
19
+ version: 0.1.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.1.9
26
+ version: 0.1.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: xxhash
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: base58
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
27
55
  - !ruby/object:Gem::Dependency
28
56
  name: json
29
57
  requirement: !ruby/object:Gem::Requirement
@@ -39,47 +67,47 @@ dependencies:
39
67
  - !ruby/object:Gem::Version
40
68
  version: 2.3.0
41
69
  - !ruby/object:Gem::Dependency
42
- name: activesupport
70
+ name: faye-websocket
43
71
  requirement: !ruby/object:Gem::Requirement
44
72
  requirements:
45
73
  - - ">="
46
74
  - !ruby/object:Gem::Version
47
- version: 4.0.0
75
+ version: '0'
48
76
  type: :runtime
49
77
  prerelease: false
50
78
  version_requirements: !ruby/object:Gem::Requirement
51
79
  requirements:
52
80
  - - ">="
53
81
  - !ruby/object:Gem::Version
54
- version: 4.0.0
82
+ version: '0'
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: thor
57
85
  requirement: !ruby/object:Gem::Requirement
58
86
  requirements:
59
87
  - - "~>"
60
88
  - !ruby/object:Gem::Version
61
- version: 0.19.0
89
+ version: '1.0'
62
90
  type: :runtime
63
91
  prerelease: false
64
92
  version_requirements: !ruby/object:Gem::Requirement
65
93
  requirements:
66
94
  - - "~>"
67
95
  - !ruby/object:Gem::Version
68
- version: 0.19.0
96
+ version: '1.0'
69
97
  - !ruby/object:Gem::Dependency
70
98
  name: bundler
71
99
  requirement: !ruby/object:Gem::Requirement
72
100
  requirements:
73
- - - "~>"
101
+ - - ">="
74
102
  - !ruby/object:Gem::Version
75
- version: '1.17'
103
+ version: '0'
76
104
  type: :development
77
105
  prerelease: false
78
106
  version_requirements: !ruby/object:Gem::Requirement
79
107
  requirements:
80
- - - "~>"
108
+ - - ">="
81
109
  - !ruby/object:Gem::Version
82
- version: '1.17'
110
+ version: '0'
83
111
  - !ruby/object:Gem::Dependency
84
112
  name: pry
85
113
  requirement: !ruby/object:Gem::Requirement
@@ -128,14 +156,14 @@ dependencies:
128
156
  requirements:
129
157
  - - "~>"
130
158
  - !ruby/object:Gem::Version
131
- version: '1.12'
159
+ version: 1.15.0
132
160
  type: :development
133
161
  prerelease: false
134
162
  version_requirements: !ruby/object:Gem::Requirement
135
163
  requirements:
136
164
  - - "~>"
137
165
  - !ruby/object:Gem::Version
138
- version: '1.12'
166
+ version: 1.15.0
139
167
  description: Ruby implementation of the parity SCALE data format
140
168
  email:
141
169
  - wuminzhe@gmail.com
@@ -144,7 +172,6 @@ executables:
144
172
  extensions: []
145
173
  extra_rdoc_files: []
146
174
  files:
147
- - ".DS_Store"
148
175
  - ".dockerignore"
149
176
  - ".gitignore"
150
177
  - Cargo.lock
@@ -160,6 +187,9 @@ files:
160
187
  - bin/setup
161
188
  - exe/scale
162
189
  - grants_badge.png
190
+ - lib/address.rb
191
+ - lib/common.rb
192
+ - lib/helper.rb
163
193
  - lib/metadata/metadata.rb
164
194
  - lib/metadata/metadata_v0.rb
165
195
  - lib/metadata/metadata_v1.rb
@@ -180,23 +210,19 @@ files:
180
210
  - lib/scale/trie.rb
181
211
  - lib/scale/types.rb
182
212
  - lib/scale/version.rb
183
- - lib/type_registry/crab-28.json
184
- - lib/type_registry/darwinia-8.json
213
+ - lib/substrate_client.rb
214
+ - lib/type_registry/crab.json
185
215
  - lib/type_registry/darwinia.json
186
216
  - lib/type_registry/default.json
187
- - lib/type_registry/edgeware.json
188
- - lib/type_registry/joystream.json
189
- - lib/type_registry/kulupu.json
190
217
  - lib/type_registry/kusama.json
191
- - lib/type_registry/plasm.json
218
+ - lib/type_registry/pangolin.json
192
219
  - lib/type_registry/polkadot.json
193
- - lib/type_registry/robonomics.json
194
220
  - lib/type_registry/test.json
195
- - lib/type_registry/westend.json
196
221
  - scale.gemspec
197
222
  - scripts/block_events.rb
198
223
  - scripts/example.rb
199
224
  - src/lib.rs
225
+ - src/storage_key.rs
200
226
  homepage: https://github.com/itering/scale.rb
201
227
  licenses:
202
228
  - MIT
@@ -218,7 +244,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
218
244
  - !ruby/object:Gem::Version
219
245
  version: '0'
220
246
  requirements: []
221
- rubygems_version: 3.0.6
247
+ rubygems_version: 3.2.3
222
248
  signing_key:
223
249
  specification_version: 4
224
250
  summary: Ruby SCALE Codec Library
data/.DS_Store DELETED
Binary file
@@ -1,662 +0,0 @@
1
- {
2
- "types": {
3
- "Address": "AccountId",
4
- "LookupSource": "AccountId",
5
- "BalanceLock": {
6
- "type": "struct",
7
- "type_mapping": [
8
- [
9
- "id",
10
- "LockIdentifier"
11
- ],
12
- [
13
- "lock_for",
14
- "LockFor"
15
- ],
16
- [
17
- "lock_reasons",
18
- "LockReasons"
19
- ]
20
- ]
21
- },
22
- "LockFor": {
23
- "type": "enum",
24
- "type_mapping": [
25
- [
26
- "Common",
27
- "Common"
28
- ],
29
- [
30
- "Staking",
31
- "StakingLock"
32
- ]
33
- ]
34
- },
35
- "Common": {
36
- "type": "struct",
37
- "type_mapping": [
38
- [
39
- "amount",
40
- "Balance"
41
- ]
42
- ]
43
- },
44
- "StakingLock": {
45
- "type": "struct",
46
- "type_mapping": [
47
- [
48
- "staking_amount",
49
- "Balance"
50
- ],
51
- [
52
- "unbondings",
53
- "Vec<Unbonding>"
54
- ]
55
- ]
56
- },
57
- "LockReasons": {
58
- "type": "enum",
59
- "type_mapping": [
60
- [
61
- "Fee",
62
- "Null"
63
- ],
64
- [
65
- "Misc",
66
- "Null"
67
- ],
68
- [
69
- "All",
70
- "Null"
71
- ]
72
- ]
73
- },
74
- "Unbonding": {
75
- "type": "struct",
76
- "type_mapping": [
77
- [
78
- "amount",
79
- "Balance"
80
- ],
81
- [
82
- "until",
83
- "BlockNumber"
84
- ]
85
- ]
86
- },
87
- "AccountData": {
88
- "type": "struct",
89
- "type_mapping": [
90
- [
91
- "free",
92
- "Balance"
93
- ],
94
- [
95
- "reserved",
96
- "Balance"
97
- ],
98
- [
99
- "free_kton",
100
- "Balance"
101
- ],
102
- [
103
- "reserved_kton",
104
- "Balance"
105
- ]
106
- ]
107
- },
108
- "RingBalance": "Balance",
109
- "KtonBalance": "Balance",
110
- "TsInMs": "u64",
111
- "Power": "u32",
112
- "DepositId": "U256",
113
- "StakingBalanceT": {
114
- "type": "enum",
115
- "type_mapping": [
116
- [
117
- "RingBalance",
118
- "Balance"
119
- ],
120
- [
121
- "KtonBalance",
122
- "Balance"
123
- ]
124
- ]
125
- },
126
- "StakingLedgerT": {
127
- "type": "struct",
128
- "type_mapping": [
129
- [
130
- "stash",
131
- "AccountId"
132
- ],
133
- [
134
- "active_ring",
135
- "Compact<Balance>"
136
- ],
137
- [
138
- "active_deposit_ring",
139
- "Compact<Balance>"
140
- ],
141
- [
142
- "active_kton",
143
- "Compact<Balance>"
144
- ],
145
- [
146
- "deposit_items",
147
- "Vec<TimeDepositItem>"
148
- ],
149
- [
150
- "ring_staking_lock",
151
- "StakingLock"
152
- ],
153
- [
154
- "kton_staking_lock",
155
- "StakingLock"
156
- ],
157
- [
158
- "claimed_rewards",
159
- "Vec<EraIndex>"
160
- ]
161
- ]
162
- },
163
- "TimeDepositItem": {
164
- "type": "struct",
165
- "type_mapping": [
166
- [
167
- "value",
168
- "Compact<Balance>"
169
- ],
170
- [
171
- "start_time",
172
- "Compact<TsInMs>"
173
- ],
174
- [
175
- "expire_time",
176
- "Compact<TsInMs>"
177
- ]
178
- ]
179
- },
180
- "ExposureT": {
181
- "type": "struct",
182
- "type_mapping": [
183
- [
184
- "own_ring_balance",
185
- "Compact<Balance>"
186
- ],
187
- [
188
- "own_kton_balance",
189
- "Compact<Balance>"
190
- ],
191
- [
192
- "own_power",
193
- "Power"
194
- ],
195
- [
196
- "total_power",
197
- "Power"
198
- ],
199
- [
200
- "others",
201
- "Vec<IndividualExposure>"
202
- ]
203
- ]
204
- },
205
- "IndividualExposure": {
206
- "type": "struct",
207
- "type_mapping": [
208
- [
209
- "who",
210
- "AccountId"
211
- ],
212
- [
213
- "ring_balance",
214
- "Compact<Balance>"
215
- ],
216
- [
217
- "kton_balance",
218
- "Compact<Balance>"
219
- ],
220
- [
221
- "power",
222
- "Power"
223
- ]
224
- ]
225
- },
226
- "ElectionResultT": {
227
- "type": "struct",
228
- "type_mapping": [
229
- [
230
- "elected_stashes",
231
- "Vec<AccountId>"
232
- ],
233
- [
234
- "exposures",
235
- "Vec<(AccountId, ExposureT)>"
236
- ],
237
- [
238
- "compute",
239
- "ElectionCompute"
240
- ]
241
- ]
242
- },
243
- "RKT": {
244
- "type": "struct",
245
- "type_mapping": [
246
- [
247
- "r",
248
- "Balance"
249
- ],
250
- [
251
- "k",
252
- "Balance"
253
- ]
254
- ]
255
- },
256
- "SpanRecord": {
257
- "type": "struct",
258
- "type_mapping": [
259
- [
260
- "slashed",
261
- "RKT"
262
- ],
263
- [
264
- "paid_out",
265
- "RKT"
266
- ]
267
- ]
268
- },
269
- "UnappliedSlash": {
270
- "type": "struct",
271
- "type_mapping": [
272
- [
273
- "validator",
274
- "AccountId"
275
- ],
276
- [
277
- "own",
278
- "RKT"
279
- ],
280
- [
281
- "others",
282
- "Vec<(AccountId, RKT)>"
283
- ],
284
- [
285
- "reporters",
286
- "Vec<AccountId>"
287
- ],
288
- [
289
- "payout",
290
- "RKT"
291
- ]
292
- ]
293
- },
294
- "TreasuryProposal": {
295
- "type": "struct",
296
- "type_mapping": [
297
- [
298
- "proposer",
299
- "AccountId"
300
- ],
301
- [
302
- "beneficiary",
303
- "AccountId"
304
- ],
305
- [
306
- "ring_value",
307
- "Balance"
308
- ],
309
- [
310
- "kton_value",
311
- "Balance"
312
- ],
313
- [
314
- "ring_bond",
315
- "Balance"
316
- ],
317
- [
318
- "kton_bond",
319
- "Balance"
320
- ]
321
- ]
322
- },
323
- "MappedRing": "u128",
324
- "EthereumTransactionIndex": "(H256, u64)",
325
- "EthereumBlockNumber": "u64",
326
- "EthereumHeader": {
327
- "type": "struct",
328
- "type_mapping": [
329
- [
330
- "parent_hash",
331
- "H256"
332
- ],
333
- [
334
- "timestamp",
335
- "u64"
336
- ],
337
- [
338
- "number",
339
- "EthereumBlockNumber"
340
- ],
341
- [
342
- "author",
343
- "EthereumAddress"
344
- ],
345
- [
346
- "transactions_root",
347
- "H256"
348
- ],
349
- [
350
- "uncles_hash",
351
- "H256"
352
- ],
353
- [
354
- "extra_data",
355
- "Bytes"
356
- ],
357
- [
358
- "state_root",
359
- "H256"
360
- ],
361
- [
362
- "receipts_root",
363
- "H256"
364
- ],
365
- [
366
- "log_bloom",
367
- "Bloom"
368
- ],
369
- [
370
- "gas_used",
371
- "U256"
372
- ],
373
- [
374
- "gas_limit",
375
- "U256"
376
- ],
377
- [
378
- "difficulty",
379
- "U256"
380
- ],
381
- [
382
- "seal",
383
- "Vec<Bytes>"
384
- ],
385
- [
386
- "hash",
387
- "Option<H256>"
388
- ]
389
- ]
390
- },
391
- "EthereumAddress": "H160",
392
- "Bloom": "[u8; 256]",
393
- "H128": "[u8; 16]",
394
- "EthashProof": {
395
- "type": "struct",
396
- "type_mapping": [
397
- [
398
- "dag_nodes",
399
- "(H512, H512)"
400
- ],
401
- [
402
- "proof",
403
- "Vec<H128>"
404
- ]
405
- ]
406
- },
407
- "EthereumReceipt": {
408
- "type": "struct",
409
- "type_mapping": [
410
- [
411
- "gas_used",
412
- "U256"
413
- ],
414
- [
415
- "log_bloom",
416
- "Bloom"
417
- ],
418
- [
419
- "logs",
420
- "Vec<LogEntry>"
421
- ],
422
- [
423
- "outcome",
424
- "TransactionOutcome"
425
- ]
426
- ]
427
- },
428
- "EthereumNetworkType": {
429
- "type": "enum",
430
- "type_mapping": [
431
- [
432
- "Mainnet",
433
- "Null"
434
- ],
435
- [
436
- "Ropsten",
437
- "Null"
438
- ]
439
- ]
440
- },
441
- "RedeemFor": {
442
- "type": "enum",
443
- "type_mapping": [
444
- [
445
- "Token",
446
- "Null"
447
- ],
448
- [
449
- "Deposit",
450
- "Null"
451
- ]
452
- ]
453
- },
454
- "EthereumReceiptProof": {
455
- "type": "struct",
456
- "type_mapping": [
457
- [
458
- "index",
459
- "u64"
460
- ],
461
- [
462
- "proof",
463
- "Bytes"
464
- ],
465
- [
466
- "header_hash",
467
- "H256"
468
- ]
469
- ]
470
- },
471
- "EthereumReceiptProofThing": "(EthereumHeader, EthereumReceiptProof, MMRProof)",
472
- "MMRProof": {
473
- "type": "struct",
474
- "type_mapping": [
475
- [
476
- "member_leaf_index",
477
- "u64"
478
- ],
479
- [
480
- "last_leaf_index",
481
- "u64"
482
- ],
483
- [
484
- "proof",
485
- "Vec<H256>"
486
- ]
487
- ]
488
- },
489
- "EthereumRelayHeaderParcel": {
490
- "type": "struct",
491
- "type_mapping": [
492
- [
493
- "header",
494
- "EthereumHeader"
495
- ],
496
- [
497
- "mmr_root",
498
- "H256"
499
- ]
500
- ]
501
- },
502
- "EthereumRelayProofs": {
503
- "type": "struct",
504
- "type_mapping": [
505
- [
506
- "ethash_proof",
507
- "Vec<EthashProof>"
508
- ],
509
- [
510
- "mmr_proof",
511
- "Vec<H256>"
512
- ]
513
- ]
514
- },
515
- "OtherSignature": {
516
- "type": "enum",
517
- "type_mapping": [
518
- [
519
- "Eth",
520
- "EcdsaSignature"
521
- ],
522
- [
523
- "Tron",
524
- "EcdsaSignature"
525
- ]
526
- ]
527
- },
528
- "EcdsaSignature": "[u8; 65]",
529
- "OtherAddress": {
530
- "type": "enum",
531
- "type_mapping": [
532
- [
533
- "Eth",
534
- "[u8; 20]"
535
- ],
536
- [
537
- "Tron",
538
- "[u8; 20]"
539
- ]
540
- ]
541
- },
542
- "AddressT": "[u8; 20]",
543
- "MerkleMountainRangeRootLog": {
544
- "type": "struct",
545
- "type_mapping": [
546
- [
547
- "prefix",
548
- "[u8; 4]"
549
- ],
550
- [
551
- "mmr_root",
552
- "Hash"
553
- ]
554
- ]
555
- },
556
- "RelayHeaderId": "EthereumBlockNumber",
557
- "RelayHeaderParcel": "EthereumRelayHeaderParcel",
558
- "RelayProofs": "EthereumRelayProofs",
559
- "RelayAffirmationId": {
560
- "type": "struct",
561
- "type_mapping": [
562
- [
563
- "game_id",
564
- "EthereumBlockNumber"
565
- ],
566
- [
567
- "round",
568
- "u32"
569
- ],
570
- [
571
- "index",
572
- "u32"
573
- ]
574
- ]
575
- },
576
- "RelayAffirmationT": {
577
- "type": "struct",
578
- "type_mapping": [
579
- [
580
- "relayer",
581
- "AccountId"
582
- ],
583
- [
584
- "relay_header_parcels",
585
- "EthereumRelayHeaderParcel"
586
- ],
587
- [
588
- "bond",
589
- "Balance"
590
- ],
591
- [
592
- "maybe_extended_relay_affirmation_id",
593
- "Option<RelayAffirmationId>"
594
- ],
595
- [
596
- "verified",
597
- "bool"
598
- ]
599
- ]
600
- },
601
- "RelayVotingState": {
602
- "type": "struct",
603
- "type_mapping": [
604
- [
605
- "ayes",
606
- "Vec<AccountId>"
607
- ],
608
- [
609
- "nays",
610
- "Vec<AccountId>"
611
- ]
612
- ]
613
- },
614
- "ProxyType": {
615
- "type": "enum",
616
- "type_mapping": [
617
- [
618
- "Any",
619
- "Null"
620
- ],
621
- [
622
- "NonTransfer",
623
- "Null"
624
- ],
625
- [
626
- "Governance",
627
- "Null"
628
- ],
629
- [
630
- "Staking",
631
- "Null"
632
- ],
633
- [
634
- "IdentityJudgement",
635
- "Null"
636
- ],
637
- [
638
- "EthereumBridge",
639
- "Null"
640
- ]
641
- ]
642
- },
643
- "BalancesRuntimeDispatchInfo": {
644
- "type": "struct",
645
- "type_mapping": [
646
- [
647
- "usable_balance",
648
- "Balance"
649
- ]
650
- ]
651
- },
652
- "StakingRuntimeDispatchInfo": {
653
- "type": "struct",
654
- "type_mapping": [
655
- [
656
- "power",
657
- "Power"
658
- ]
659
- ]
660
- }
661
- }
662
- }