scale.rb 0.2.16 → 0.3.0
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 +4 -4
- data/.gitignore +1 -0
- data/Cargo.lock +8 -4
- data/Cargo.toml +2 -3
- data/Dockerfile +4 -1
- data/Gemfile.lock +43 -35
- data/README.md +44 -1
- data/Rakefile +6 -0
- data/exe/scale +39 -79
- data/lib/address.rb +3 -0
- data/lib/common.rb +163 -0
- data/lib/helper.rb +25 -8
- data/lib/metadata/metadata.rb +28 -18
- data/lib/metadata/metadata_v0.rb +24 -20
- data/lib/metadata/metadata_v1.rb +13 -9
- data/lib/metadata/metadata_v10.rb +2 -2
- data/lib/metadata/metadata_v11.rb +2 -2
- data/lib/metadata/metadata_v12.rb +9 -8
- data/lib/metadata/metadata_v13.rb +161 -0
- data/lib/metadata/metadata_v2.rb +2 -2
- data/lib/metadata/metadata_v3.rb +2 -2
- data/lib/metadata/metadata_v4.rb +21 -11
- data/lib/metadata/metadata_v5.rb +21 -11
- data/lib/metadata/metadata_v6.rb +9 -9
- data/lib/metadata/metadata_v7.rb +26 -15
- data/lib/metadata/metadata_v8.rb +9 -9
- data/lib/metadata/metadata_v9.rb +2 -2
- data/lib/scale.rb +41 -341
- data/lib/scale/base.rb +177 -95
- data/lib/scale/block.rb +17 -13
- data/lib/scale/trie.rb +1 -1
- data/lib/scale/types.rb +139 -40
- data/lib/scale/version.rb +1 -1
- data/lib/scale_bytes.rb +63 -0
- data/lib/substrate_client.rb +31 -17
- data/lib/type_builder.rb +279 -0
- data/lib/type_registry.rb +91 -0
- data/lib/type_registry/crab.json +676 -595
- data/lib/type_registry/darwinia.json +730 -554
- data/lib/type_registry/default.json +3 -2
- data/lib/type_registry/pangolin.json +771 -0
- data/scale.gemspec +7 -5
- data/scripts/mmr_root_to_sign.rb +10 -0
- data/src/lib.rs +80 -25
- metadata +59 -30
- data/lib/type_registry/edgeware.json +0 -124
- data/lib/type_registry/joystream.json +0 -49
- data/lib/type_registry/kulupu.json +0 -15
- data/lib/type_registry/plasm.json +0 -89
- data/lib/type_registry/robonomics.json +0 -39
- data/lib/type_registry/westend.json +0 -63
- data/src/storage_key.rs +0 -41
@@ -0,0 +1,161 @@
|
|
1
|
+
module Scale
|
2
|
+
module Types
|
3
|
+
class MetadataV13
|
4
|
+
include Base
|
5
|
+
attr_accessor :call_index, :event_index
|
6
|
+
|
7
|
+
def initialize(value)
|
8
|
+
@call_index = {}
|
9
|
+
@event_index = {}
|
10
|
+
super(value)
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.decode(scale_bytes)
|
14
|
+
modules = Scale::Types.get("Vec<MetadataV13Module>").decode(scale_bytes).value
|
15
|
+
|
16
|
+
value = {
|
17
|
+
magicNumber: 1_635_018_093,
|
18
|
+
metadata: {
|
19
|
+
version: 12,
|
20
|
+
modules: modules.map(&:value)
|
21
|
+
}
|
22
|
+
}
|
23
|
+
|
24
|
+
result = MetadataV13.new(value)
|
25
|
+
|
26
|
+
call_module_index = 0
|
27
|
+
event_module_index = 0
|
28
|
+
|
29
|
+
modules.map(&:value).each do |m|
|
30
|
+
module_index = m[:index]
|
31
|
+
if m[:calls]
|
32
|
+
m[:calls].each_with_index do |call, index|
|
33
|
+
call[:lookup] = "%02x%02x" % [module_index, index]
|
34
|
+
result.call_index[call[:lookup]] = [m, call]
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
if m[:events]
|
39
|
+
m[:events].each_with_index do |event, index|
|
40
|
+
event[:lookup] = "%02x%02x" % [module_index, index]
|
41
|
+
result.event_index[event[:lookup]] = [m, event]
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
result
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
class MetadataV13ModuleStorage
|
51
|
+
include Base
|
52
|
+
def self.decode(scale_bytes)
|
53
|
+
prefix = String.decode(scale_bytes).value
|
54
|
+
items = Scale::Types.get("Vec<MetadataV13ModuleStorageEntry>").decode(scale_bytes).value.map(&:value)
|
55
|
+
result = {
|
56
|
+
prefix: prefix,
|
57
|
+
items: items
|
58
|
+
}
|
59
|
+
|
60
|
+
MetadataV13ModuleStorage.new(result)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
class MetadataV13ModuleStorageEntry
|
65
|
+
include Base
|
66
|
+
def self.decode(scale_bytes)
|
67
|
+
name = String.decode(scale_bytes).value
|
68
|
+
modifier_enum = {
|
69
|
+
"type" => "enum",
|
70
|
+
"value_list" => ["Optional", "Default"]
|
71
|
+
}
|
72
|
+
modifier = Scale::Types.get(modifier_enum).decode(scale_bytes).value
|
73
|
+
result = {
|
74
|
+
name: name,
|
75
|
+
modifier: modifier
|
76
|
+
}
|
77
|
+
|
78
|
+
storage_function_type_enum = {
|
79
|
+
"type" => "enum",
|
80
|
+
"value_list" => %w[Plain Map DoubleMap NMap]
|
81
|
+
}
|
82
|
+
storage_function_type = Scale::Types.get(storage_function_type_enum).decode(scale_bytes).value
|
83
|
+
if storage_function_type == "Plain"
|
84
|
+
result[:type] = {
|
85
|
+
Plain: String.decode(scale_bytes).value
|
86
|
+
}
|
87
|
+
elsif storage_function_type == "Map"
|
88
|
+
result[:type] = {
|
89
|
+
Map: {
|
90
|
+
hasher: StorageHasher.decode(scale_bytes).value,
|
91
|
+
key: String.decode(scale_bytes).value,
|
92
|
+
value: String.decode(scale_bytes).value,
|
93
|
+
linked: Bool.decode(scale_bytes).value
|
94
|
+
}
|
95
|
+
}
|
96
|
+
elsif storage_function_type == "DoubleMap"
|
97
|
+
result[:type] = {
|
98
|
+
DoubleMap: {
|
99
|
+
hasher: StorageHasher.decode(scale_bytes).value,
|
100
|
+
key1: String.decode(scale_bytes).value,
|
101
|
+
key2: String.decode(scale_bytes).value,
|
102
|
+
value: String.decode(scale_bytes).value,
|
103
|
+
key2Hasher: StorageHasher.decode(scale_bytes).value
|
104
|
+
}
|
105
|
+
}
|
106
|
+
elsif storage_function_type == "NMap"
|
107
|
+
keys = Scale::Types.get("Vec<String>").decode(scale_bytes).value.map(&:value)
|
108
|
+
hashers = Scale::Types.get("Vec<StorageHasher>").decode(scale_bytes).value.map(&:value)
|
109
|
+
result[:type] = {
|
110
|
+
NMap: {
|
111
|
+
hashers: hashers,
|
112
|
+
keys: keys,
|
113
|
+
value: String.decode(scale_bytes).value,
|
114
|
+
}
|
115
|
+
}
|
116
|
+
end
|
117
|
+
|
118
|
+
result[:fallback] = Hex.decode(scale_bytes).value
|
119
|
+
result[:documentation] = Scale::Types.get("Vec<String>").decode(scale_bytes).value.map(&:value)
|
120
|
+
|
121
|
+
MetadataV13ModuleStorageEntry.new(result)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
class MetadataV13Module
|
126
|
+
include Base
|
127
|
+
def self.decode(scale_bytes)
|
128
|
+
name = String.decode(scale_bytes).value
|
129
|
+
|
130
|
+
result = {
|
131
|
+
name: name
|
132
|
+
}
|
133
|
+
|
134
|
+
has_storage = Bool.decode(scale_bytes).value
|
135
|
+
if has_storage
|
136
|
+
storage = MetadataV13ModuleStorage.decode(scale_bytes).value
|
137
|
+
result[:storage] = storage
|
138
|
+
result[:prefix] = storage[:prefix]
|
139
|
+
end
|
140
|
+
|
141
|
+
has_calls = Bool.decode(scale_bytes).value
|
142
|
+
if has_calls
|
143
|
+
calls = Scale::Types.get("Vec<MetadataModuleCall>").decode(scale_bytes).value
|
144
|
+
result[:calls] = calls.map(&:value)
|
145
|
+
end
|
146
|
+
|
147
|
+
has_events = Bool.decode(scale_bytes).value
|
148
|
+
if has_events
|
149
|
+
events = Scale::Types.get("Vec<MetadataModuleEvent>").decode(scale_bytes).value
|
150
|
+
result[:events] = events.map(&:value)
|
151
|
+
end
|
152
|
+
|
153
|
+
result[:constants] = Scale::Types.get("Vec<MetadataV7ModuleConstants>").decode(scale_bytes).value.map(&:value)
|
154
|
+
result[:errors] = Scale::Types.get("Vec<MetadataModuleError>").decode(scale_bytes).value.map(&:value)
|
155
|
+
|
156
|
+
result[:index] = U8.decode(scale_bytes).value
|
157
|
+
MetadataV13Module.new(result)
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
161
|
+
end
|
data/lib/metadata/metadata_v2.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Scale
|
2
2
|
module Types
|
3
3
|
class MetadataV2
|
4
|
-
include
|
4
|
+
include Base
|
5
5
|
attr_accessor :call_index, :event_index
|
6
6
|
|
7
7
|
def initialize(value)
|
@@ -11,7 +11,7 @@ module Scale
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def self.decode(scale_bytes)
|
14
|
-
modules = Scale::Types.
|
14
|
+
modules = Scale::Types.get("Vec<MetadataModule>").decode(scale_bytes).value
|
15
15
|
|
16
16
|
value = {
|
17
17
|
magicNumber: 1_635_018_093,
|
data/lib/metadata/metadata_v3.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Scale
|
2
2
|
module Types
|
3
3
|
class MetadataV3
|
4
|
-
include
|
4
|
+
include Base
|
5
5
|
attr_accessor :call_index, :event_index
|
6
6
|
|
7
7
|
def initialize(value)
|
@@ -11,7 +11,7 @@ module Scale
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def self.decode(scale_bytes)
|
14
|
-
modules = Scale::Types.
|
14
|
+
modules = Scale::Types.get("Vec<MetadataModule>").decode(scale_bytes).value
|
15
15
|
|
16
16
|
value = {
|
17
17
|
magicNumber: 1_635_018_093,
|
data/lib/metadata/metadata_v4.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Scale
|
2
2
|
module Types
|
3
3
|
class MetadataV4
|
4
|
-
include
|
4
|
+
include Base
|
5
5
|
attr_accessor :call_index, :event_index
|
6
6
|
|
7
7
|
def initialize(value)
|
@@ -11,7 +11,7 @@ module Scale
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def self.decode(scale_bytes)
|
14
|
-
modules = Scale::Types.
|
14
|
+
modules = Scale::Types.get("Vec<MetadataV4Module>").decode(scale_bytes).value
|
15
15
|
|
16
16
|
value = {
|
17
17
|
magicNumber: 1_635_018_093,
|
@@ -49,7 +49,7 @@ module Scale
|
|
49
49
|
end
|
50
50
|
|
51
51
|
class MetadataV4Module
|
52
|
-
include
|
52
|
+
include Base
|
53
53
|
def self.decode(scale_bytes)
|
54
54
|
name = String.decode(scale_bytes).value
|
55
55
|
prefix = String.decode(scale_bytes).value
|
@@ -61,19 +61,19 @@ module Scale
|
|
61
61
|
|
62
62
|
has_storage = Bool.decode(scale_bytes).value
|
63
63
|
if has_storage
|
64
|
-
storages = Scale::Types.
|
64
|
+
storages = Scale::Types.get("Vec<MetadataV4ModuleStorage>").decode(scale_bytes).value
|
65
65
|
result[:storage] = storages.map(&:value)
|
66
66
|
end
|
67
67
|
|
68
68
|
has_calls = Bool.decode(scale_bytes).value
|
69
69
|
if has_calls
|
70
|
-
calls = Scale::Types.
|
70
|
+
calls = Scale::Types.get("Vec<MetadataModuleCall>").decode(scale_bytes).value
|
71
71
|
result[:calls] = calls.map(&:value)
|
72
72
|
end
|
73
73
|
|
74
74
|
has_events = Bool.decode(scale_bytes).value
|
75
75
|
if has_events
|
76
|
-
events = Scale::Types.
|
76
|
+
events = Scale::Types.get("Vec<MetadataModuleEvent>").decode(scale_bytes).value
|
77
77
|
result[:events] = events.map(&:value)
|
78
78
|
end
|
79
79
|
|
@@ -82,14 +82,24 @@ module Scale
|
|
82
82
|
end
|
83
83
|
|
84
84
|
class MetadataV4ModuleStorage
|
85
|
-
include
|
85
|
+
include Base
|
86
86
|
def self.decode(scale_bytes)
|
87
|
+
name = String.decode(scale_bytes).value
|
88
|
+
modifier_enum = {
|
89
|
+
"type" => "enum",
|
90
|
+
"value_list" => ["Optional", "Default"]
|
91
|
+
}
|
92
|
+
modifier = Scale::Types.get(modifier_enum).decode(scale_bytes).value
|
87
93
|
result = {
|
88
|
-
name:
|
89
|
-
modifier:
|
94
|
+
name: name,
|
95
|
+
modifier: modifier
|
90
96
|
}
|
91
97
|
|
92
|
-
|
98
|
+
storage_function_type_enum = {
|
99
|
+
"type" => "enum",
|
100
|
+
"value_list" => %w[Plain Map DoubleMap]
|
101
|
+
}
|
102
|
+
storage_function_type = Scale::Types.get(storage_function_type_enum).decode(scale_bytes).value
|
93
103
|
if storage_function_type == "Plain"
|
94
104
|
result[:type] = {
|
95
105
|
Plain: String.decode(scale_bytes).value
|
@@ -116,7 +126,7 @@ module Scale
|
|
116
126
|
end
|
117
127
|
|
118
128
|
result[:fallback] = Hex.decode(scale_bytes).value
|
119
|
-
result[:documentation] = Scale::Types.
|
129
|
+
result[:documentation] = Scale::Types.get("Vec<String>").decode(scale_bytes).value.map(&:value)
|
120
130
|
|
121
131
|
MetadataV4ModuleStorage.new(result)
|
122
132
|
end
|
data/lib/metadata/metadata_v5.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Scale
|
2
2
|
module Types
|
3
3
|
class MetadataV5
|
4
|
-
include
|
4
|
+
include Base
|
5
5
|
attr_accessor :call_index, :event_index
|
6
6
|
|
7
7
|
def initialize(value)
|
@@ -11,7 +11,7 @@ module Scale
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def self.decode(scale_bytes)
|
14
|
-
modules = Scale::Types.
|
14
|
+
modules = Scale::Types.get("Vec<MetadataV5Module>").decode(scale_bytes).value
|
15
15
|
|
16
16
|
value = {
|
17
17
|
magicNumber: 1_635_018_093,
|
@@ -49,7 +49,7 @@ module Scale
|
|
49
49
|
end
|
50
50
|
|
51
51
|
class MetadataV5Module
|
52
|
-
include
|
52
|
+
include Base
|
53
53
|
def self.decode(scale_bytes)
|
54
54
|
name = String.decode(scale_bytes).value
|
55
55
|
prefix = String.decode(scale_bytes).value
|
@@ -61,19 +61,19 @@ module Scale
|
|
61
61
|
|
62
62
|
has_storage = Bool.decode(scale_bytes).value
|
63
63
|
if has_storage
|
64
|
-
storages = Scale::Types.
|
64
|
+
storages = Scale::Types.get("Vec<MetadataV5ModuleStorage>").decode(scale_bytes).value
|
65
65
|
result[:storage] = storages.map(&:value)
|
66
66
|
end
|
67
67
|
|
68
68
|
has_calls = Bool.decode(scale_bytes).value
|
69
69
|
if has_calls
|
70
|
-
calls = Scale::Types.
|
70
|
+
calls = Scale::Types.get("Vec<MetadataModuleCall>").decode(scale_bytes).value
|
71
71
|
result[:calls] = calls.map(&:value)
|
72
72
|
end
|
73
73
|
|
74
74
|
has_events = Bool.decode(scale_bytes).value
|
75
75
|
if has_events
|
76
|
-
events = Scale::Types.
|
76
|
+
events = Scale::Types.get("Vec<MetadataModuleEvent>").decode(scale_bytes).value
|
77
77
|
result[:events] = events.map(&:value)
|
78
78
|
end
|
79
79
|
|
@@ -82,14 +82,24 @@ module Scale
|
|
82
82
|
end
|
83
83
|
|
84
84
|
class MetadataV5ModuleStorage
|
85
|
-
include
|
85
|
+
include Base
|
86
86
|
def self.decode(scale_bytes)
|
87
|
+
name = String.decode(scale_bytes).value
|
88
|
+
modifier_enum = {
|
89
|
+
"type" => "enum",
|
90
|
+
"value_list" => ["Optional", "Default"]
|
91
|
+
}
|
92
|
+
modifier = Scale::Types.get(modifier_enum).decode(scale_bytes).value
|
87
93
|
result = {
|
88
|
-
name:
|
89
|
-
modifier:
|
94
|
+
name: name,
|
95
|
+
modifier: modifier
|
90
96
|
}
|
91
97
|
|
92
|
-
|
98
|
+
storage_function_type_enum = {
|
99
|
+
"type" => "enum",
|
100
|
+
"value_list" => %w[Plain Map DoubleMap]
|
101
|
+
}
|
102
|
+
storage_function_type = Scale::Types.get(storage_function_type_enum).decode(scale_bytes).value
|
93
103
|
if storage_function_type == "Plain"
|
94
104
|
result[:type] = {
|
95
105
|
Plain: String.decode(scale_bytes).value
|
@@ -116,7 +126,7 @@ module Scale
|
|
116
126
|
end
|
117
127
|
|
118
128
|
result[:fallback] = Hex.decode(scale_bytes).value
|
119
|
-
result[:documentation] = Scale::Types.
|
129
|
+
result[:documentation] = Scale::Types.get("Vec<String>").decode(scale_bytes).value.map(&:value)
|
120
130
|
|
121
131
|
MetadataV5ModuleStorage.new(result)
|
122
132
|
end
|
data/lib/metadata/metadata_v6.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Scale
|
2
2
|
module Types
|
3
3
|
class MetadataV6
|
4
|
-
include
|
4
|
+
include Base
|
5
5
|
attr_accessor :call_index, :event_index
|
6
6
|
|
7
7
|
def initialize(value)
|
@@ -11,7 +11,7 @@ module Scale
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def self.decode(scale_bytes)
|
14
|
-
modules = Scale::Types.
|
14
|
+
modules = Scale::Types.get("Vec<MetadataV6Module>").decode(scale_bytes).value
|
15
15
|
|
16
16
|
value = {
|
17
17
|
magicNumber: 1_635_018_093,
|
@@ -49,7 +49,7 @@ module Scale
|
|
49
49
|
end
|
50
50
|
|
51
51
|
class MetadataV6Module
|
52
|
-
include
|
52
|
+
include Base
|
53
53
|
def self.decode(scale_bytes)
|
54
54
|
name = String.decode(scale_bytes).value
|
55
55
|
prefix = String.decode(scale_bytes).value
|
@@ -61,23 +61,23 @@ module Scale
|
|
61
61
|
|
62
62
|
has_storage = Bool.decode(scale_bytes).value
|
63
63
|
if has_storage
|
64
|
-
storages = Scale::Types.
|
64
|
+
storages = Scale::Types.get("Vec<MetadataV6ModuleStorage>").decode(scale_bytes).value
|
65
65
|
result[:storage] = storages.map(&:value)
|
66
66
|
end
|
67
67
|
|
68
68
|
has_calls = Bool.decode(scale_bytes).value
|
69
69
|
if has_calls
|
70
|
-
calls = Scale::Types.
|
70
|
+
calls = Scale::Types.get("Vec<MetadataModuleCall>").decode(scale_bytes).value
|
71
71
|
result[:calls] = calls.map(&:value)
|
72
72
|
end
|
73
73
|
|
74
74
|
has_events = Bool.decode(scale_bytes).value
|
75
75
|
if has_events
|
76
|
-
events = Scale::Types.
|
76
|
+
events = Scale::Types.get("Vec<MetadataModuleEvent>").decode(scale_bytes).value
|
77
77
|
result[:events] = events.map(&:value)
|
78
78
|
end
|
79
79
|
|
80
|
-
result[:constants] = Scale::Types.
|
80
|
+
result[:constants] = Scale::Types.get("Vec<MetadataV6ModuleConstants>").decode(scale_bytes).value.map(&:value)
|
81
81
|
|
82
82
|
MetadataV6Module.new(result)
|
83
83
|
end
|
@@ -86,13 +86,13 @@ module Scale
|
|
86
86
|
class MetadataV6ModuleStorage < MetadataV5ModuleStorage; end
|
87
87
|
|
88
88
|
class MetadataV6ModuleConstants
|
89
|
-
include
|
89
|
+
include Base
|
90
90
|
def self.decode(scale_bytes)
|
91
91
|
result = {
|
92
92
|
name: String.decode(scale_bytes).value,
|
93
93
|
type: String.decode(scale_bytes).value, # convert
|
94
94
|
value: Hex.decode(scale_bytes).value,
|
95
|
-
documentation: Scale::Types.
|
95
|
+
documentation: Scale::Types.get("Vec<String>").decode(scale_bytes).value.map(&:value)
|
96
96
|
}
|
97
97
|
MetadataV6ModuleConstants.new result
|
98
98
|
end
|
data/lib/metadata/metadata_v7.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Scale
|
2
2
|
module Types
|
3
3
|
class MetadataV7
|
4
|
-
include
|
4
|
+
include Base
|
5
5
|
attr_accessor :call_index, :event_index
|
6
6
|
|
7
7
|
def initialize(value)
|
@@ -11,7 +11,7 @@ module Scale
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def self.decode(scale_bytes)
|
14
|
-
modules = Scale::Types.
|
14
|
+
modules = Scale::Types.get("Vec<MetadataV7Module>").decode(scale_bytes).value
|
15
15
|
|
16
16
|
value = {
|
17
17
|
magicNumber: 1_635_018_093,
|
@@ -49,7 +49,7 @@ module Scale
|
|
49
49
|
end
|
50
50
|
|
51
51
|
class MetadataV7Module
|
52
|
-
include
|
52
|
+
include Base
|
53
53
|
def self.decode(scale_bytes)
|
54
54
|
name = String.decode(scale_bytes).value
|
55
55
|
|
@@ -66,27 +66,27 @@ module Scale
|
|
66
66
|
|
67
67
|
has_calls = Bool.decode(scale_bytes).value
|
68
68
|
if has_calls
|
69
|
-
calls = Scale::Types.
|
69
|
+
calls = Scale::Types.get("Vec<MetadataModuleCall>").decode(scale_bytes).value
|
70
70
|
result[:calls] = calls.map(&:value)
|
71
71
|
end
|
72
72
|
|
73
73
|
has_events = Bool.decode(scale_bytes).value
|
74
74
|
if has_events
|
75
|
-
events = Scale::Types.
|
75
|
+
events = Scale::Types.get("Vec<MetadataModuleEvent>").decode(scale_bytes).value
|
76
76
|
result[:events] = events.map(&:value)
|
77
77
|
end
|
78
78
|
|
79
|
-
result[:constants] = Scale::Types.
|
79
|
+
result[:constants] = Scale::Types.get("Vec<MetadataV7ModuleConstants>").decode(scale_bytes).value.map(&:value)
|
80
80
|
|
81
81
|
MetadataV7Module.new(result)
|
82
82
|
end
|
83
83
|
end
|
84
84
|
|
85
85
|
class MetadataV7ModuleStorage
|
86
|
-
include
|
86
|
+
include Base
|
87
87
|
def self.decode(scale_bytes)
|
88
88
|
prefix = String.decode(scale_bytes).value
|
89
|
-
items = Scale::Types.
|
89
|
+
items = Scale::Types.get("Vec<MetadataV7ModuleStorageEntry>").decode(scale_bytes).value.map(&:value)
|
90
90
|
result = {
|
91
91
|
prefix: prefix,
|
92
92
|
items: items
|
@@ -97,13 +97,24 @@ module Scale
|
|
97
97
|
end
|
98
98
|
|
99
99
|
class MetadataV7ModuleStorageEntry
|
100
|
-
include
|
100
|
+
include Base
|
101
101
|
def self.decode(scale_bytes)
|
102
|
+
name = String.decode(scale_bytes).value
|
103
|
+
modifier_enum = {
|
104
|
+
"type" => "enum",
|
105
|
+
"value_list" => ["Optional", "Default"]
|
106
|
+
}
|
107
|
+
modifier = Scale::Types.get(modifier_enum).decode(scale_bytes).value
|
102
108
|
result = {
|
103
|
-
name:
|
104
|
-
modifier:
|
109
|
+
name: name,
|
110
|
+
modifier: modifier
|
111
|
+
}
|
112
|
+
|
113
|
+
storage_function_type_enum = {
|
114
|
+
"type" => "enum",
|
115
|
+
"value_list" => %w[Plain Map DoubleMap]
|
105
116
|
}
|
106
|
-
storage_function_type = Scale::Types.
|
117
|
+
storage_function_type = Scale::Types.get(storage_function_type_enum).decode(scale_bytes).value
|
107
118
|
if storage_function_type == "Plain"
|
108
119
|
result[:type] = {
|
109
120
|
Plain: String.decode(scale_bytes).value
|
@@ -130,20 +141,20 @@ module Scale
|
|
130
141
|
end
|
131
142
|
|
132
143
|
result[:fallback] = Hex.decode(scale_bytes).value
|
133
|
-
result[:documentation] = Scale::Types.
|
144
|
+
result[:documentation] = Scale::Types.get("Vec<String>").decode(scale_bytes).value.map(&:value)
|
134
145
|
|
135
146
|
MetadataV7ModuleStorageEntry.new(result)
|
136
147
|
end
|
137
148
|
end
|
138
149
|
|
139
150
|
class MetadataV7ModuleConstants
|
140
|
-
include
|
151
|
+
include Base
|
141
152
|
def self.decode(scale_bytes)
|
142
153
|
result = {
|
143
154
|
name: String.decode(scale_bytes).value,
|
144
155
|
type: String.decode(scale_bytes).value, # convert
|
145
156
|
value: Hex.decode(scale_bytes).value,
|
146
|
-
documentation: Scale::Types.
|
157
|
+
documentation: Scale::Types.get("Vec<String>").decode(scale_bytes).value.map(&:value)
|
147
158
|
}
|
148
159
|
MetadataV7ModuleConstants.new result
|
149
160
|
end
|