scale_rb 0.1.15 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|