scale.rb 0.2.9 → 0.2.15

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.
@@ -12,7 +12,6 @@
12
12
  "CallHashOf": "CallHash",
13
13
  "Fixed64": "u64",
14
14
  "Fixed128": "u128",
15
- "AccountId": "GenericAccountId",
16
15
  "AccountIdOf": "AccountId",
17
16
  "AccountVoteSplit": {
18
17
  "type": "struct",
data/scale.gemspec CHANGED
@@ -33,10 +33,11 @@ Gem::Specification.new do |spec|
33
33
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
34
34
  spec.require_paths = ["lib"]
35
35
 
36
- spec.add_dependency "substrate_common.rb", "~> 0.1.9"
36
+ spec.add_dependency "substrate_common.rb", "~> 0.1.10"
37
+ spec.add_dependency "activesupport", "~> 6.0.0"
37
38
  spec.add_dependency "json", "~> 2.3.0"
38
- spec.add_dependency "activesupport", ">= 4.0.0"
39
39
  spec.add_dependency "thor", "~> 0.19.0"
40
+ spec.add_dependency "kontena-websocket-client", "~> 0.1.1"
40
41
 
41
42
  spec.add_development_dependency "bundler", "~> 1.17"
42
43
  spec.add_development_dependency "pry"
@@ -2,7 +2,6 @@ require "scale"
2
2
 
3
3
 
4
4
  client = SubstrateClient.new("ws://127.0.0.1:9944/")
5
- client.init
6
5
  metadata = client.get_metadata nil
7
6
 
8
7
  the_module = metadata.get_module("CertificateModule")
@@ -23,7 +22,7 @@ puts "CertificateModule storages:"
23
22
  puts "---------------------------------------"
24
23
  puts the_module[:storage][:items]
25
24
 
26
- # Scale::TypeRegistry.instance.metadata = metadata.value
25
+ # Scale::TypeRegistry.instance.metadata = metadata
27
26
  # puts metadata.value.event_index["0400"][1]
28
27
  # puts metadata.value.event_index["0401"][1]
29
28
  # puts metadata.value.event_index["0402"][1]
@@ -31,4 +30,4 @@ puts the_module[:storage][:items]
31
30
  # scale_bytes = Scale::Bytes.new(hex_events)
32
31
  # Scale::Types.get("Vec<EventRecord>").decode(scale_bytes).value.each do |er|
33
32
  # puts er.value
34
- # end
33
+ # end
data/src/lib.rs CHANGED
@@ -1,6 +1,17 @@
1
1
  extern crate parity_scale_codec;
2
2
  use std::slice;
3
- use parity_scale_codec::{Decode};
3
+ use parity_scale_codec::{Encode, Decode};
4
+ use frame_support::Twox128;
5
+ use frame_support::Blake2_128Concat;
6
+ use frame_support::StorageHasher;
7
+
8
+ fn to_u8_vec(v_pointer: *const u8, len: usize) -> Vec<u8> {
9
+ let data_slice = unsafe {
10
+ assert!(!v_pointer.is_null());
11
+ slice::from_raw_parts(v_pointer, len)
12
+ };
13
+ data_slice.to_vec()
14
+ }
4
15
 
5
16
  fn decode_from_raw_parts<T: Decode + PartialEq + std::fmt::Debug>(v_pointer: *const u8, len: usize) -> T {
6
17
  let data_slice = unsafe {
@@ -49,6 +60,36 @@ pub extern fn parse_opt_bool(v_pointer: *const u8, len: usize, inner_value: bool
49
60
  assert_eq!(decode_from_raw_parts::<Option<bool>>(v_pointer, len), expectation);
50
61
  }
51
62
 
63
+ #[no_mangle]
64
+ pub extern fn assert_storage_key_for_value(
65
+ mv_pointer: *const u8, mv_len: usize,
66
+ sv_pointer: *const u8, sv_len: usize,
67
+ ev_pointer: *const u8, ev_len: usize
68
+ ) {
69
+ let m = to_u8_vec(mv_pointer, mv_len);
70
+ let s = to_u8_vec(sv_pointer, sv_len);
71
+ let e = to_u8_vec(ev_pointer, ev_len);
72
+
73
+ let k = [Twox128::hash(&m), Twox128::hash(&s)].concat();
74
+ assert_eq!(k, e);
75
+ }
76
+
77
+ #[no_mangle]
78
+ pub extern fn assert_storage_key_for_map_black2128concat(
79
+ mv_pointer: *const u8, mv_len: usize,
80
+ sv_pointer: *const u8, sv_len: usize,
81
+ pv_pointer: *const u8, pv_len: usize,
82
+ ev_pointer: *const u8, ev_len: usize,
83
+ ) {
84
+ let m = to_u8_vec(mv_pointer, mv_len);
85
+ let s = to_u8_vec(sv_pointer, sv_len);
86
+ let p = to_u8_vec(pv_pointer, pv_len);
87
+ let e = to_u8_vec(ev_pointer, ev_len);
88
+ let mut k = [Twox128::hash(&m), Twox128::hash(&s)].concat();
89
+ k.extend(p.using_encoded(Blake2_128Concat::hash));
90
+ assert_eq!(k, e);
91
+ }
92
+
52
93
  #[test]
53
94
  fn opt_bool_is_broken()
54
95
  {
@@ -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,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scale.rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.9
4
+ version: 0.2.15
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-10-18 00:00:00.000000000 Z
11
+ date: 2021-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: substrate_common.rb
@@ -16,42 +16,42 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.9
19
+ version: 0.1.10
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.10
27
27
  - !ruby/object:Gem::Dependency
28
- name: json
28
+ name: activesupport
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 2.3.0
33
+ version: 6.0.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 2.3.0
40
+ version: 6.0.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: activesupport
42
+ name: json
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 4.0.0
47
+ version: 2.3.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 4.0.0
54
+ version: 2.3.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: thor
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 0.19.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: kontena-websocket-client
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.1.1
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.1.1
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: bundler
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -144,7 +158,6 @@ executables:
144
158
  extensions: []
145
159
  extra_rdoc_files: []
146
160
  files:
147
- - ".DS_Store"
148
161
  - ".dockerignore"
149
162
  - ".gitignore"
150
163
  - Cargo.lock
@@ -160,6 +173,7 @@ files:
160
173
  - bin/setup
161
174
  - exe/scale
162
175
  - grants_badge.png
176
+ - lib/helper.rb
163
177
  - lib/metadata/metadata.rb
164
178
  - lib/metadata/metadata_v0.rb
165
179
  - lib/metadata/metadata_v1.rb
@@ -177,8 +191,11 @@ files:
177
191
  - lib/scale.rb
178
192
  - lib/scale/base.rb
179
193
  - lib/scale/block.rb
194
+ - lib/scale/trie.rb
180
195
  - lib/scale/types.rb
181
196
  - lib/scale/version.rb
197
+ - lib/substrate_client.rb
198
+ - lib/type_registry/crab.json
182
199
  - lib/type_registry/darwinia.json
183
200
  - lib/type_registry/default.json
184
201
  - lib/type_registry/edgeware.json
@@ -194,6 +211,7 @@ files:
194
211
  - scripts/block_events.rb
195
212
  - scripts/example.rb
196
213
  - src/lib.rs
214
+ - src/storage_key.rs
197
215
  homepage: https://github.com/itering/scale.rb
198
216
  licenses:
199
217
  - MIT
data/.DS_Store DELETED
Binary file