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/storage_helper.rb
CHANGED
@@ -1,64 +1,66 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
3
|
+
module ScaleRb
|
4
|
+
module StorageHelper
|
5
|
+
class << self
|
6
|
+
# key: {
|
7
|
+
# value: ,
|
8
|
+
# type: ,
|
9
|
+
# hashers: []
|
10
|
+
# }
|
11
|
+
def encode_storage_key(pallet_name, item_name, key = nil, registry = nil)
|
12
|
+
storage_key = Hasher.twox128(pallet_name) + Hasher.twox128(item_name)
|
12
13
|
|
13
|
-
|
14
|
+
if key && registry
|
14
15
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
16
|
+
key_types, key_values, key_hashers =
|
17
|
+
if key[:hashers].length == 1
|
18
|
+
[
|
19
|
+
[key[:type]],
|
20
|
+
[key[:value]],
|
21
|
+
key[:hashers]
|
22
|
+
]
|
23
|
+
else
|
24
|
+
[
|
25
|
+
registry[key[:type]]._get(:def)._get(:tuple).first(key[:value].length),
|
26
|
+
key[:value],
|
27
|
+
key[:hashers].first(key[:value].length)
|
28
|
+
]
|
29
|
+
end
|
30
|
+
|
31
|
+
if key_types.class != key_values.class || key_types.length != key_values.length
|
32
|
+
raise "Key's value doesn't match key's type, key's value: #{key_values.inspect}, but key's type: #{key_types.inspect}. Please check your key's value."
|
28
33
|
end
|
29
34
|
|
30
|
-
|
31
|
-
|
35
|
+
storage_key + PortableCodec._encode_types_with_hashers(key_types, key_values, registry, key_hashers)
|
36
|
+
else
|
37
|
+
storage_key
|
32
38
|
end
|
33
|
-
|
34
|
-
storage_key + PortableCodec._encode_types_with_hashers(key_types, key_values, registry, key_hashers)
|
35
|
-
else
|
36
|
-
storage_key
|
37
39
|
end
|
38
|
-
end
|
39
40
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
41
|
+
# data: hex string
|
42
|
+
# type: portable type id
|
43
|
+
# optional: boolean
|
44
|
+
# fallback: hex string
|
45
|
+
# returns nil or data
|
46
|
+
def decode_storage(data, type, optional, fallback, registry)
|
47
|
+
data ||= (optional ? nil : fallback)
|
48
|
+
PortableCodec.decode(type, data._to_bytes, registry)[0] if data
|
49
|
+
end
|
49
50
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
51
|
+
# storage_item: the storage item from metadata
|
52
|
+
def decode_storage2(data, storage_item, registry)
|
53
|
+
modifier = storage_item._get(:modifier) # Default | Optional
|
54
|
+
fallback = storage_item._get(:fallback)
|
55
|
+
type = storage_item._get(:type)._get(:plain) || storage_item._get(:type)._get(:map)._get(:value)
|
56
|
+
decode_storage(data, type, modifier == 'Optional', fallback, registry)
|
57
|
+
end
|
57
58
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
59
|
+
def decode_storage3(data, pallet_name, item_name, metadata)
|
60
|
+
registry = Metadata.build_registry(metadata)
|
61
|
+
storage_item = Metadata.get_storage_item(pallet_name, item_name, metadata)
|
62
|
+
decode_storage2(data, storage_item, registry)
|
63
|
+
end
|
62
64
|
end
|
63
65
|
end
|
64
66
|
end
|
data/scale_rb.gemspec
CHANGED
@@ -16,6 +16,11 @@ Gem::Specification.new do |spec|
|
|
16
16
|
|
17
17
|
spec.metadata['homepage_uri'] = spec.homepage
|
18
18
|
|
19
|
+
spec.metadata = {
|
20
|
+
'bug_tracker_uri' => 'https://github.com/wuminzhe/scale_rb/issues/',
|
21
|
+
'source_code_uri' => 'https://github.com/wuminzhe/scale_rb.git'
|
22
|
+
}
|
23
|
+
|
19
24
|
# Specify which files should be added to the gem when it is released.
|
20
25
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
21
26
|
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
@@ -26,7 +31,7 @@ Gem::Specification.new do |spec|
|
|
26
31
|
spec.require_paths = ['lib']
|
27
32
|
|
28
33
|
# for hashers
|
34
|
+
spec.add_dependency 'base58'
|
29
35
|
spec.add_dependency 'blake2b_rs', '~> 0.1.4'
|
30
36
|
spec.add_dependency 'xxhash'
|
31
|
-
spec.add_dependency "base58"
|
32
37
|
end
|
metadata
CHANGED
@@ -1,45 +1,45 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scale_rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aki Wu
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-03-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: base58
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0
|
19
|
+
version: '0'
|
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
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: blake2b_rs
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 0.1.4
|
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:
|
40
|
+
version: 0.1.4
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: xxhash
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
@@ -99,8 +99,8 @@ homepage: https://github.com/wuminzhe/scale_rb
|
|
99
99
|
licenses:
|
100
100
|
- MIT
|
101
101
|
metadata:
|
102
|
-
|
103
|
-
|
102
|
+
bug_tracker_uri: https://github.com/wuminzhe/scale_rb/issues/
|
103
|
+
source_code_uri: https://github.com/wuminzhe/scale_rb.git
|
104
104
|
post_install_message:
|
105
105
|
rdoc_options: []
|
106
106
|
require_paths:
|