scale_rb 0.1.15 → 0.2.2
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/Gemfile.lock +1 -1
- data/lib/address.rb +85 -89
- data/lib/client/abstract_ws_client.rb +85 -81
- data/lib/client/http_client.rb +35 -4
- data/lib/client/http_client_metadata.rb +1 -1
- data/lib/client/http_client_storage.rb +6 -6
- data/lib/client/rpc_request_builder.rb +44 -42
- data/lib/codec.rb +11 -11
- data/lib/hasher.rb +39 -37
- data/lib/metadata/metadata.rb +130 -122
- data/lib/metadata/metadata_v10.rb +72 -69
- data/lib/metadata/metadata_v11.rb +78 -75
- data/lib/metadata/metadata_v12.rb +42 -39
- data/lib/metadata/metadata_v13.rb +71 -68
- data/lib/metadata/metadata_v14.rb +185 -181
- data/lib/metadata/metadata_v9.rb +92 -89
- data/lib/monkey_patching.rb +22 -22
- data/lib/portable_codec.rb +236 -232
- data/lib/scale_rb/version.rb +1 -1
- data/lib/scale_rb.rb +0 -1
- data/lib/storage_helper.rb +52 -50
- data/scale_rb.gemspec +6 -1
- metadata +15 -15
data/lib/codec.rb
CHANGED
@@ -145,12 +145,12 @@ module ScaleRb
|
|
145
145
|
when 0
|
146
146
|
[bytes[0] >> 2, bytes[1..]]
|
147
147
|
when 1
|
148
|
-
[bytes[0..1].
|
148
|
+
[bytes[0..1]._flip._to_uint >> 2, bytes[2..]]
|
149
149
|
when 2
|
150
|
-
[bytes[0..3].
|
150
|
+
[bytes[0..3]._flip._to_uint >> 2, bytes[4..]]
|
151
151
|
when 3
|
152
152
|
length = 4 + (bytes[0] >> 2)
|
153
|
-
[bytes[1..length].
|
153
|
+
[bytes[1..length]._flip._to_uint, bytes[length + 1..]]
|
154
154
|
else
|
155
155
|
raise Unreachable, 'type: Compact'
|
156
156
|
end
|
@@ -220,7 +220,7 @@ module ScaleRb
|
|
220
220
|
|
221
221
|
def decode_bytes(bytes)
|
222
222
|
length, remaining_bytes = _do_decode_compact(bytes)
|
223
|
-
value = remaining_bytes[0...length].
|
223
|
+
value = remaining_bytes[0...length]._to_hex
|
224
224
|
# debug 'length', length
|
225
225
|
# debug 'value', value
|
226
226
|
[
|
@@ -246,7 +246,7 @@ module ScaleRb
|
|
246
246
|
length, remaining_bytes = _do_decode_compact(bytes)
|
247
247
|
raise NotEnoughBytesError, 'type: String' if remaining_bytes.length < length
|
248
248
|
|
249
|
-
value = remaining_bytes[0...length].
|
249
|
+
value = remaining_bytes[0...length]._to_utf8
|
250
250
|
# debug 'byte length', length
|
251
251
|
# debug 'value', value.inspect
|
252
252
|
[
|
@@ -260,7 +260,7 @@ module ScaleRb
|
|
260
260
|
byte_length = bit_length / 8
|
261
261
|
raise NotEnoughBytesError, "type: #{type}" if bytes.length < byte_length
|
262
262
|
|
263
|
-
value = bytes[0...byte_length].
|
263
|
+
value = bytes[0...byte_length]._flip._to_int(bit_length)
|
264
264
|
# debug 'value', value
|
265
265
|
[
|
266
266
|
value,
|
@@ -273,7 +273,7 @@ module ScaleRb
|
|
273
273
|
byte_length = bit_length / 8
|
274
274
|
raise NotEnoughBytesError, "type: #{type_def}" if bytes.length < byte_length
|
275
275
|
|
276
|
-
value = bytes[0...byte_length].
|
276
|
+
value = bytes[0...byte_length]._flip._to_uint
|
277
277
|
# debug 'value', value
|
278
278
|
[
|
279
279
|
value,
|
@@ -396,16 +396,16 @@ module ScaleRb
|
|
396
396
|
|
397
397
|
def encode_compact(value)
|
398
398
|
return [value << 2] if (value >= 0) && (value < 64)
|
399
|
-
return ((value << 2) + 1).
|
400
|
-
return ((value << 2) + 2).
|
399
|
+
return ((value << 2) + 1)._to_bytes._flip if value < 2**14
|
400
|
+
return ((value << 2) + 2)._to_bytes._flip if value < 2**30
|
401
401
|
|
402
|
-
bytes = value.
|
402
|
+
bytes = value._to_bytes._flip
|
403
403
|
[(((bytes.length - 4) << 2) + 3)] + bytes
|
404
404
|
end
|
405
405
|
|
406
406
|
def encode_uint(type, value)
|
407
407
|
bit_length = type[1..].to_i
|
408
|
-
value.
|
408
|
+
value._to_bytes(bit_length)._flip
|
409
409
|
end
|
410
410
|
|
411
411
|
def encode_option(type, value, registry = {})
|
data/lib/hasher.rb
CHANGED
@@ -3,52 +3,54 @@
|
|
3
3
|
require 'xxhash'
|
4
4
|
require 'blake2b'
|
5
5
|
|
6
|
-
module
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
6
|
+
module ScaleRb
|
7
|
+
module Hasher
|
8
|
+
class << self
|
9
|
+
# params:
|
10
|
+
# hasher: 'Identity' | 'Twox64Concat' | 'Blake2128Concat'
|
11
|
+
# bytes: u8 array
|
12
|
+
# return: u8 array
|
13
|
+
def apply_hasher(hasher, bytes)
|
14
|
+
function_name = hasher.gsub('_', '')._underscore
|
15
|
+
Hasher.send(function_name, bytes)
|
16
|
+
end
|
15
17
|
end
|
16
|
-
end
|
17
18
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
19
|
+
class << self
|
20
|
+
def identity(bytes)
|
21
|
+
bytes
|
22
|
+
end
|
22
23
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
24
|
+
def twox64_concat(bytes)
|
25
|
+
data = bytes._to_utf8
|
26
|
+
twox64(data) + bytes
|
27
|
+
end
|
27
28
|
|
28
|
-
|
29
|
-
|
30
|
-
|
29
|
+
def blake2128_concat(bytes)
|
30
|
+
blake2_128(bytes) + bytes
|
31
|
+
end
|
31
32
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
33
|
+
def twox64(str)
|
34
|
+
result = XXhash.xxh64 str, 0
|
35
|
+
result._to_bytes.reverse
|
36
|
+
end
|
36
37
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
38
|
+
def twox128(str)
|
39
|
+
bytes = []
|
40
|
+
2.times do |i|
|
41
|
+
result = XXhash.xxh64 str, i
|
42
|
+
bytes += result._to_bytes.reverse
|
43
|
+
end
|
44
|
+
bytes
|
42
45
|
end
|
43
|
-
bytes
|
44
|
-
end
|
45
46
|
|
46
|
-
|
47
|
-
|
48
|
-
|
47
|
+
def blake2_128(bytes)
|
48
|
+
Blake2b.hex(bytes, 16)._to_bytes
|
49
|
+
end
|
49
50
|
|
50
|
-
|
51
|
-
|
51
|
+
def blake2_256(bytes)
|
52
|
+
Blake2b.hex(bytes, 32)._to_bytes
|
53
|
+
end
|
52
54
|
end
|
53
55
|
end
|
54
56
|
end
|
data/lib/metadata/metadata.rb
CHANGED
@@ -1,129 +1,137 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
3
|
+
module ScaleRb
|
4
|
+
module Metadata
|
5
|
+
class << self
|
6
|
+
def decode_metadata(bytes)
|
7
|
+
metadata, = ScaleRb.decode('MetadataTop', bytes, TYPES)
|
8
|
+
metadata
|
9
|
+
end
|
10
|
+
|
11
|
+
def build_registry(metadata)
|
12
|
+
raise ScaleRb::NotImplemented, metadata._get(:metadata).keys.first unless metadata._get(:metadata)._key?(:v14)
|
13
|
+
|
14
|
+
metadata_v14 = metadata._get(:metadata)._get(:v14)
|
15
|
+
MetadataV14.build_registry(metadata_v14)
|
16
|
+
end
|
17
|
+
|
18
|
+
def get_module(pallet_name, metadata)
|
19
|
+
version = metadata._get(:metadata).keys.first
|
20
|
+
raise ScaleRb::NotImplemented, metadata._get(:metadata).keys.first unless %w[v9 v10 v11 v12 v13
|
21
|
+
v14].include?(version.to_s)
|
22
|
+
|
23
|
+
Metadata.const_get("Metadata#{version.upcase}").get_module(pallet_name, metadata)
|
24
|
+
end
|
25
|
+
|
26
|
+
def get_module_by_index(pallet_index, metadata)
|
27
|
+
version = metadata._get(:metadata).keys.first
|
28
|
+
raise ScaleRb::NotImplemented, metadata._get(:metadata).keys.first unless %w[v9 v10 v11 v12 v13
|
29
|
+
v14].include?(version.to_s)
|
30
|
+
|
31
|
+
Metadata.const_get("Metadata#{version.upcase}").get_module_by_index(pallet_index, metadata)
|
32
|
+
end
|
33
|
+
|
34
|
+
def get_storage_item(pallet_name, item_name, metadata)
|
35
|
+
version = metadata._get(:metadata).keys.first
|
36
|
+
raise ScaleRb::NotImplemented, metadata._get(:metadata).keys.first unless %w[v9 v10 v11 v12 v13
|
37
|
+
v14].include?(version.to_s)
|
38
|
+
|
39
|
+
Metadata.const_get("Metadata#{version.upcase}").get_storage_item(pallet_name, item_name, metadata)
|
40
|
+
end
|
41
|
+
|
42
|
+
def get_calls_type(pallet_name, metadata)
|
43
|
+
version = metadata._get(:metadata).keys.first
|
44
|
+
raise ScaleRb::NotImplemented, metadata._get(:metadata).keys.first unless %w[v9 v10 v11 v12 v13
|
45
|
+
v14].include?(version.to_s)
|
46
|
+
|
47
|
+
Metadata.const_get("Metadata#{version.upcase}").get_calls_type(pallet_name, metadata)
|
48
|
+
end
|
49
|
+
|
50
|
+
def get_calls_type_id(pallet_name, metadata)
|
51
|
+
version = metadata._get(:metadata).keys.first
|
52
|
+
raise ScaleRb::NotImplemented, metadata._get(:metadata).keys.first unless %w[v9 v10 v11 v12 v13
|
53
|
+
v14].include?(version.to_s)
|
54
|
+
|
55
|
+
Metadata.const_get("Metadata#{version.upcase}").get_calls_type_id(pallet_name, metadata)
|
56
|
+
end
|
57
|
+
|
58
|
+
def get_call_type(pallet_name, call_name, metadata)
|
59
|
+
version = metadata._get(:metadata).keys.first
|
60
|
+
raise ScaleRb::NotImplemented, metadata._get(:metadata).keys.first unless %w[v9 v10 v11 v12 v13
|
61
|
+
v14].include?(version.to_s)
|
62
|
+
|
63
|
+
Metadata.const_get("Metadata#{version.upcase}").get_call_type(pallet_name, call_name, metadata)
|
64
|
+
end
|
65
|
+
|
66
|
+
# call examples:
|
67
|
+
# {:pallet_name=>"Deposit", :call_name=>"Claim", :call=>["claim", []]}
|
68
|
+
# {:pallet_name=>"Balances", :call_name=>"Transfer", :call=>[{:transfer=>{:dest=>[10, 18, 135, 151, 117, 120, 248, 136, 189, 193, 199, 98, 119, 129, 175, 28, 192, 0, 230, 171], :value=>11000000000000000000}}, []]}
|
69
|
+
def encode_call(call, metadata)
|
70
|
+
calls_type_id = get_calls_type_id(call[:pallet_name], metadata)
|
71
|
+
pallet_index = get_module(call[:pallet_name], metadata)._get(:index)
|
72
|
+
[pallet_index] + PortableCodec.encode(calls_type_id, call[:call].first, build_registry(metadata))
|
73
|
+
end
|
74
|
+
|
75
|
+
# callbytes's structure is: pallet_index + call_index + argsbytes
|
76
|
+
#
|
77
|
+
# callbytes examples:
|
78
|
+
# "0x0901"._to_bytes
|
79
|
+
# "0x05000a1287977578f888bdc1c7627781af1cc000e6ab1300004c31b8d9a798"._to_bytes
|
80
|
+
def decode_call(callbytes, metadata)
|
81
|
+
pallet_index = callbytes[0]
|
82
|
+
pallet = get_module_by_index(pallet_index, metadata)
|
83
|
+
|
84
|
+
pallet_name = pallet._get(:name)
|
85
|
+
|
86
|
+
# Remove the pallet_index
|
87
|
+
# The callbytes we used below should not contain the pallet index.
|
88
|
+
# This is because the pallet index is not part of the call type.
|
89
|
+
# Its structure is: call_index + call_args
|
90
|
+
callbytes_without_pallet_index = callbytes[1..]
|
91
|
+
calls_type_id = pallet._get(:calls)._get(:type)
|
92
|
+
decoded = PortableCodec.decode(
|
93
|
+
calls_type_id,
|
94
|
+
callbytes_without_pallet_index,
|
95
|
+
build_registry(metadata)
|
96
|
+
)
|
97
|
+
|
98
|
+
{
|
99
|
+
pallet_name: pallet_name,
|
100
|
+
call_name: decoded.first.is_a?(String) ? decoded.first._to_camel : decoded.first.keys.first.to_s._to_camel,
|
101
|
+
call: decoded
|
102
|
+
}
|
103
|
+
end
|
8
104
|
end
|
9
105
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
raise ScaleRb::NotImplemented, metadata._get(:metadata).keys.first unless %w[v9 v10 v11 v12 v13 v14].include?(version.to_s)
|
34
|
-
|
35
|
-
Metadata.const_get("Metadata#{version.upcase}").get_storage_item(pallet_name, item_name, metadata)
|
36
|
-
end
|
37
|
-
|
38
|
-
def get_calls_type(pallet_name, metadata)
|
39
|
-
version = metadata._get(:metadata).keys.first
|
40
|
-
raise ScaleRb::NotImplemented, metadata._get(:metadata).keys.first unless %w[v9 v10 v11 v12 v13 v14].include?(version.to_s)
|
41
|
-
|
42
|
-
Metadata.const_get("Metadata#{version.upcase}").get_calls_type(pallet_name, metadata)
|
43
|
-
end
|
44
|
-
|
45
|
-
def get_calls_type_id(pallet_name, metadata)
|
46
|
-
version = metadata._get(:metadata).keys.first
|
47
|
-
raise ScaleRb::NotImplemented, metadata._get(:metadata).keys.first unless %w[v9 v10 v11 v12 v13 v14].include?(version.to_s)
|
48
|
-
|
49
|
-
Metadata.const_get("Metadata#{version.upcase}").get_calls_type_id(pallet_name, metadata)
|
50
|
-
end
|
51
|
-
|
52
|
-
def get_call_type(pallet_name, call_name, metadata)
|
53
|
-
version = metadata._get(:metadata).keys.first
|
54
|
-
raise ScaleRb::NotImplemented, metadata._get(:metadata).keys.first unless %w[v9 v10 v11 v12 v13 v14].include?(version.to_s)
|
55
|
-
|
56
|
-
Metadata.const_get("Metadata#{version.upcase}").get_call_type(pallet_name, call_name, metadata)
|
57
|
-
end
|
58
|
-
|
59
|
-
# call examples:
|
60
|
-
# {:pallet_name=>"Deposit", :call_name=>"Claim", :call=>["claim", []]}
|
61
|
-
# {:pallet_name=>"Balances", :call_name=>"Transfer", :call=>[{:transfer=>{:dest=>[10, 18, 135, 151, 117, 120, 248, 136, 189, 193, 199, 98, 119, 129, 175, 28, 192, 0, 230, 171], :value=>11000000000000000000}}, []]}
|
62
|
-
def encode_call(call, metadata)
|
63
|
-
calls_type_id = get_calls_type_id(call[:pallet_name], metadata)
|
64
|
-
pallet_index = get_module(call[:pallet_name], metadata)._get(:index)
|
65
|
-
[pallet_index] + PortableCodec.encode(calls_type_id, call[:call].first, build_registry(metadata))
|
66
|
-
end
|
67
|
-
|
68
|
-
# callbytes's structure is: pallet_index + call_index + argsbytes
|
69
|
-
#
|
70
|
-
# callbytes examples:
|
71
|
-
# "0x0901".to_bytes
|
72
|
-
# "0x05000a1287977578f888bdc1c7627781af1cc000e6ab1300004c31b8d9a798".to_bytes
|
73
|
-
def decode_call(callbytes, metadata)
|
74
|
-
pallet_index = callbytes[0]
|
75
|
-
pallet = get_module_by_index(pallet_index, metadata)
|
76
|
-
|
77
|
-
pallet_name = pallet._get(:name)
|
78
|
-
|
79
|
-
# Remove the pallet_index
|
80
|
-
# The callbytes we used below should not contain the pallet index.
|
81
|
-
# This is because the pallet index is not part of the call type.
|
82
|
-
# Its structure is: call_index + call_args
|
83
|
-
callbytes_without_pallet_index = callbytes[1..]
|
84
|
-
calls_type_id = pallet._get(:calls)._get(:type)
|
85
|
-
decoded = PortableCodec.decode(
|
86
|
-
calls_type_id,
|
87
|
-
callbytes_without_pallet_index,
|
88
|
-
build_registry(metadata)
|
89
|
-
)
|
90
|
-
|
91
|
-
{
|
92
|
-
pallet_name: pallet_name,
|
93
|
-
call_name: decoded.first.is_a?(String) ? decoded.first.to_camel : decoded.first.keys.first.to_s.to_camel,
|
94
|
-
call: decoded
|
106
|
+
TYPES = {
|
107
|
+
'MetadataTop' => {
|
108
|
+
magicNumber: 'U32',
|
109
|
+
metadata: 'Metadata'
|
110
|
+
},
|
111
|
+
'Metadata' => {
|
112
|
+
_enum: {
|
113
|
+
v0: 'MetadataV0',
|
114
|
+
v1: 'MetadataV1',
|
115
|
+
v2: 'MetadataV2',
|
116
|
+
v3: 'MetadataV3',
|
117
|
+
v4: 'MetadataV4',
|
118
|
+
v5: 'MetadataV5',
|
119
|
+
v6: 'MetadataV6',
|
120
|
+
v7: 'MetadataV7',
|
121
|
+
v8: 'MetadataV8',
|
122
|
+
v9: 'MetadataV9',
|
123
|
+
v10: 'MetadataV10',
|
124
|
+
v11: 'MetadataV11',
|
125
|
+
v12: 'MetadataV12',
|
126
|
+
v13: 'MetadataV13',
|
127
|
+
v14: 'MetadataV14'
|
128
|
+
}
|
95
129
|
}
|
96
|
-
|
130
|
+
}.merge(MetadataV14::TYPES)
|
131
|
+
.merge(MetadataV13::TYPES)
|
132
|
+
.merge(MetadataV12::TYPES)
|
133
|
+
.merge(MetadataV11::TYPES)
|
134
|
+
.merge(MetadataV10::TYPES)
|
135
|
+
.merge(MetadataV9::TYPES)
|
97
136
|
end
|
98
|
-
|
99
|
-
TYPES = {
|
100
|
-
'MetadataTop' => {
|
101
|
-
magicNumber: 'U32',
|
102
|
-
metadata: 'Metadata'
|
103
|
-
},
|
104
|
-
'Metadata' => {
|
105
|
-
_enum: {
|
106
|
-
v0: 'MetadataV0',
|
107
|
-
v1: 'MetadataV1',
|
108
|
-
v2: 'MetadataV2',
|
109
|
-
v3: 'MetadataV3',
|
110
|
-
v4: 'MetadataV4',
|
111
|
-
v5: 'MetadataV5',
|
112
|
-
v6: 'MetadataV6',
|
113
|
-
v7: 'MetadataV7',
|
114
|
-
v8: 'MetadataV8',
|
115
|
-
v9: 'MetadataV9',
|
116
|
-
v10: 'MetadataV10',
|
117
|
-
v11: 'MetadataV11',
|
118
|
-
v12: 'MetadataV12',
|
119
|
-
v13: 'MetadataV13',
|
120
|
-
v14: 'MetadataV14'
|
121
|
-
}
|
122
|
-
}
|
123
|
-
}.merge(MetadataV14::TYPES)
|
124
|
-
.merge(MetadataV13::TYPES)
|
125
|
-
.merge(MetadataV12::TYPES)
|
126
|
-
.merge(MetadataV11::TYPES)
|
127
|
-
.merge(MetadataV10::TYPES)
|
128
|
-
.merge(MetadataV9::TYPES)
|
129
137
|
end
|
@@ -1,80 +1,83 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
4
|
-
module
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
3
|
+
module ScaleRb
|
4
|
+
module Metadata
|
5
|
+
module MetadataV10
|
6
|
+
class << self
|
7
|
+
def get_module(module_name, metadata)
|
8
|
+
metadata._get(:metadata)._get(:v10)._get(:modules).find do |m|
|
9
|
+
m._get(:name) == module_name
|
10
|
+
end
|
9
11
|
end
|
10
|
-
end
|
11
12
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
13
|
+
def get_storage_item(module_name, item_name, metadata)
|
14
|
+
modula = get_module(module_name, metadata)
|
15
|
+
raise "Module `#{module_name}` not found" if modula.nil?
|
16
|
+
|
17
|
+
modula._get(:storage)._get(:items).find do |item|
|
18
|
+
item._get(:name) == item_name
|
19
|
+
end
|
17
20
|
end
|
18
21
|
end
|
19
|
-
end
|
20
22
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
23
|
+
TYPES = {
|
24
|
+
ErrorMetadataV10: 'ErrorMetadataV9',
|
25
|
+
EventMetadataV10: 'EventMetadataV9',
|
26
|
+
FunctionArgumentMetadataV10: 'FunctionArgumentMetadataV9',
|
27
|
+
FunctionMetadataV10: 'FunctionMetadataV9',
|
28
|
+
MetadataV10: {
|
29
|
+
modules: 'Vec<ModuleMetadataV10>'
|
30
|
+
},
|
31
|
+
ModuleConstantMetadataV10: 'ModuleConstantMetadataV9',
|
32
|
+
ModuleMetadataV10: {
|
33
|
+
name: 'Text',
|
34
|
+
storage: 'Option<StorageMetadataV10>',
|
35
|
+
calls: 'Option<Vec<FunctionMetadataV10>>',
|
36
|
+
events: 'Option<Vec<EventMetadataV10>>',
|
37
|
+
constants: 'Vec<ModuleConstantMetadataV10>',
|
38
|
+
errors: 'Vec<ErrorMetadataV10>'
|
39
|
+
},
|
40
|
+
StorageEntryModifierV10: 'StorageEntryModifierV9',
|
41
|
+
StorageEntryMetadataV10: {
|
42
|
+
name: 'Text',
|
43
|
+
modifier: 'StorageEntryModifierV10',
|
44
|
+
type: 'StorageEntryTypeV10',
|
45
|
+
fallback: 'Bytes',
|
46
|
+
docs: 'Vec<Text>'
|
47
|
+
},
|
48
|
+
StorageEntryTypeV10: {
|
49
|
+
_enum: {
|
50
|
+
Plain: 'Type',
|
51
|
+
Map: {
|
52
|
+
hasher: 'StorageHasherV10',
|
53
|
+
key: 'Type',
|
54
|
+
value: 'Type',
|
55
|
+
linked: 'bool'
|
56
|
+
},
|
57
|
+
DoubleMap: {
|
58
|
+
hasher: 'StorageHasherV10',
|
59
|
+
key1: 'Type',
|
60
|
+
key2: 'Type',
|
61
|
+
value: 'Type',
|
62
|
+
key2Hasher: 'StorageHasherV10'
|
63
|
+
}
|
61
64
|
}
|
65
|
+
},
|
66
|
+
StorageMetadataV10: {
|
67
|
+
prefix: 'Text',
|
68
|
+
items: 'Vec<StorageEntryMetadataV10>'
|
69
|
+
},
|
70
|
+
StorageHasherV10: {
|
71
|
+
_enum: %w[
|
72
|
+
Blake2_128
|
73
|
+
Blake2_256
|
74
|
+
Blake2_128Concat
|
75
|
+
Twox128
|
76
|
+
Twox256
|
77
|
+
Twox64Concat
|
78
|
+
]
|
62
79
|
}
|
63
|
-
}
|
64
|
-
|
65
|
-
prefix: 'Text',
|
66
|
-
items: 'Vec<StorageEntryMetadataV10>'
|
67
|
-
},
|
68
|
-
StorageHasherV10: {
|
69
|
-
_enum: %w[
|
70
|
-
Blake2_128
|
71
|
-
Blake2_256
|
72
|
-
Blake2_128Concat
|
73
|
-
Twox128
|
74
|
-
Twox256
|
75
|
-
Twox64Concat
|
76
|
-
]
|
77
|
-
}
|
78
|
-
}.freeze
|
80
|
+
}.freeze
|
81
|
+
end
|
79
82
|
end
|
80
83
|
end
|