test_sdk1 1.0.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.
Files changed (140) hide show
  1. checksums.yaml +7 -0
  2. data/CONTRIBUTING.md +1 -0
  3. data/LICENSE +201 -0
  4. data/README.md +147 -0
  5. data/SECURITY.md +12 -0
  6. data/lib/crypto/00_asymmetric_key.rb +95 -0
  7. data/lib/crypto/01_ed25519.rb +67 -0
  8. data/lib/crypto/asymmetric_key.rb +87 -0
  9. data/lib/crypto/ed25519_key.rb +44 -0
  10. data/lib/crypto/key_pair.rb +40 -0
  11. data/lib/crypto/keys.rb +7 -0
  12. data/lib/crypto/secp256k1_key.rb +0 -0
  13. data/lib/crypto/test_ed25519_key.rb +44 -0
  14. data/lib/entity/account.rb +45 -0
  15. data/lib/entity/action_thresholds.rb +25 -0
  16. data/lib/entity/associated_key.rb +24 -0
  17. data/lib/entity/auction_state.rb +36 -0
  18. data/lib/entity/bid.rb +24 -0
  19. data/lib/entity/bid_info.rb +51 -0
  20. data/lib/entity/contract.rb +47 -0
  21. data/lib/entity/contract_package.rb +41 -0
  22. data/lib/entity/contract_version.rb +33 -0
  23. data/lib/entity/delegator.rb +37 -0
  24. data/lib/entity/deploy.rb +44 -0
  25. data/lib/entity/deploy_approval.rb +24 -0
  26. data/lib/entity/deploy_executable.rb +162 -0
  27. data/lib/entity/deploy_executable_item_internal.rb +26 -0
  28. data/lib/entity/deploy_executable_transfer.rb +50 -0
  29. data/lib/entity/deploy_hash.rb +16 -0
  30. data/lib/entity/deploy_header.rb +60 -0
  31. data/lib/entity/deploy_info.rb +44 -0
  32. data/lib/entity/deploy_named_argument.rb +19 -0
  33. data/lib/entity/deploy_transfer.rb +10 -0
  34. data/lib/entity/disabled_version.rb +26 -0
  35. data/lib/entity/era_info.rb +18 -0
  36. data/lib/entity/era_summary.rb +44 -0
  37. data/lib/entity/era_validator.rb +23 -0
  38. data/lib/entity/executable_deploy_item.rb +11 -0
  39. data/lib/entity/group.rb +25 -0
  40. data/lib/entity/module_bytes.rb +50 -0
  41. data/lib/entity/peer.rb +25 -0
  42. data/lib/entity/seigniorage_allocation.rb +18 -0
  43. data/lib/entity/stored_contract_by_hash.rb +50 -0
  44. data/lib/entity/stored_contract_by_name.rb +50 -0
  45. data/lib/entity/stored_value.rb +57 -0
  46. data/lib/entity/stored_versioned_contract_by_hash.rb +61 -0
  47. data/lib/entity/stored_versioned_contract_by_name.rb +61 -0
  48. data/lib/entity/transfer.rb +65 -0
  49. data/lib/entity/validator_weight.rb +23 -0
  50. data/lib/entity/vesting_schedule.rb +22 -0
  51. data/lib/include.rb +18 -0
  52. data/lib/rpc/rpc.rb +227 -0
  53. data/lib/rpc/rpc_client.rb +233 -0
  54. data/lib/rpc/rpc_error.rb +79 -0
  55. data/lib/serialization/cl_type_serializer.rb +76 -0
  56. data/lib/serialization/cl_value_bytes_parsers.rb +498 -0
  57. data/lib/serialization/cl_value_serializer.rb +259 -0
  58. data/lib/serialization/deploy_approval_serializer.rb +15 -0
  59. data/lib/serialization/deploy_executable_serializer.rb +27 -0
  60. data/lib/serialization/deploy_header_serializer.rb +49 -0
  61. data/lib/serialization/deploy_named_arg_serializer.rb +19 -0
  62. data/lib/serialization/deploy_serializer.rb +268 -0
  63. data/lib/serialization/test.rb +431 -0
  64. data/lib/test_sdk1.rb +289 -0
  65. data/lib/types/cl_account_hash.rb +24 -0
  66. data/lib/types/cl_account_hash_type.rb +22 -0
  67. data/lib/types/cl_any.rb +25 -0
  68. data/lib/types/cl_any_type.rb +22 -0
  69. data/lib/types/cl_bool.rb +32 -0
  70. data/lib/types/cl_bool_type.rb +35 -0
  71. data/lib/types/cl_byte_array.rb +25 -0
  72. data/lib/types/cl_byte_array_type.rb +27 -0
  73. data/lib/types/cl_i32.rb +26 -0
  74. data/lib/types/cl_i32_type.rb +26 -0
  75. data/lib/types/cl_i64.rb +26 -0
  76. data/lib/types/cl_i64_type.rb +27 -0
  77. data/lib/types/cl_key.rb +39 -0
  78. data/lib/types/cl_key_type.rb +27 -0
  79. data/lib/types/cl_list.rb +25 -0
  80. data/lib/types/cl_list_type.rb +26 -0
  81. data/lib/types/cl_map.rb +25 -0
  82. data/lib/types/cl_map_type.rb +26 -0
  83. data/lib/types/cl_option.rb +33 -0
  84. data/lib/types/cl_option_type.rb +52 -0
  85. data/lib/types/cl_public_key.rb +152 -0
  86. data/lib/types/cl_public_key_type.rb +26 -0
  87. data/lib/types/cl_result.rb +25 -0
  88. data/lib/types/cl_result_type.rb +26 -0
  89. data/lib/types/cl_string.rb +39 -0
  90. data/lib/types/cl_string_type.rb +32 -0
  91. data/lib/types/cl_tuple.rb +151 -0
  92. data/lib/types/cl_tuple_type.rb +108 -0
  93. data/lib/types/cl_type.rb +94 -0
  94. data/lib/types/cl_type_tag.rb +51 -0
  95. data/lib/types/cl_u128.rb +26 -0
  96. data/lib/types/cl_u128_type.rb +26 -0
  97. data/lib/types/cl_u256.rb +26 -0
  98. data/lib/types/cl_u256_type.rb +26 -0
  99. data/lib/types/cl_u32.rb +26 -0
  100. data/lib/types/cl_u32_type.rb +26 -0
  101. data/lib/types/cl_u512.rb +26 -0
  102. data/lib/types/cl_u512_type.rb +26 -0
  103. data/lib/types/cl_u64.rb +26 -0
  104. data/lib/types/cl_u64_type.rb +27 -0
  105. data/lib/types/cl_u8.rb +26 -0
  106. data/lib/types/cl_u8_type.rb +26 -0
  107. data/lib/types/cl_unit.rb +38 -0
  108. data/lib/types/cl_unit_type.rb +22 -0
  109. data/lib/types/cl_uref.rb +120 -0
  110. data/lib/types/cl_uref_type.rb +46 -0
  111. data/lib/types/cl_value.rb +10 -0
  112. data/lib/types/constants.rb +50 -0
  113. data/lib/types/error.rb +7 -0
  114. data/lib/utils/base_16.rb +18 -0
  115. data/lib/utils/byte_utils.rb +107 -0
  116. data/lib/utils/find_byte_parser_by_cl_type.rb +53 -0
  117. data/lib/utils/hash_utils.rb +19 -0
  118. data/lib/utils/hex_utils.rb +12 -0
  119. data/lib/utils/time_utils.rb +85 -0
  120. data/lib/utils/utils.rb +2 -0
  121. data/lib/version.rb +3 -0
  122. data/spec/a_spec.rb +697 -0
  123. data/spec/byte_utils_spec.rb +72 -0
  124. data/spec/cl_public_spec.rb +169 -0
  125. data/spec/cl_types_spec.rb +715 -0
  126. data/spec/cl_value_serializer_spec.rb +140 -0
  127. data/spec/client_spec.rb +25 -0
  128. data/spec/crypto_spec.rb +42 -0
  129. data/spec/deploy_approval_serializer_spec.rb +26 -0
  130. data/spec/deploy_executable_serializer_spec.rb +0 -0
  131. data/spec/deploy_header_serializer_spec.rb +21 -0
  132. data/spec/deploy_named_arg_serializer_spec.rb +49 -0
  133. data/spec/deploy_serializer_spec.rb +77 -0
  134. data/spec/deploy_serializer_test_spec.rb +225 -0
  135. data/spec/mainnet_spec.rb +452 -0
  136. data/spec/spec_helper.rb +100 -0
  137. data/spec/string_spec.rb +68 -0
  138. data/spec/testnet_spec.rb +498 -0
  139. data/spec/time_utils_spec.rb +87 -0
  140. metadata +198 -0
@@ -0,0 +1,79 @@
1
+
2
+ module Casper
3
+ module RpcError
4
+ class ErrorHandle
5
+ # @param [Integer] code
6
+ # @param [String] message
7
+ # @param [String] data
8
+ def initialize(code = 0, message = "", data = "")
9
+ @code = code
10
+ @message = message
11
+ @data = data
12
+ end
13
+
14
+ # @return [String] err
15
+ def self.invalid_param
16
+ @code = -32602
17
+ @message = "Invalid params"
18
+ @err = "Server error #{@code}: #{@message}"
19
+ end
20
+
21
+ # @param [String] url
22
+ # @return [String]
23
+ def error_handling(url)
24
+ begin
25
+ response = RestClient.get(url)
26
+ parsed = JSON.parse(response)
27
+ # p parsed
28
+ rescue RestClient::ResourceNotFound => e
29
+ e.class.inspect
30
+ # "ResourceNotFound"
31
+ rescue Errno::ECONNREFUSED => e
32
+ e.class.inspect
33
+ # p e.class
34
+ # "Errno::ECONNREFUSED"
35
+ rescue SocketError => e
36
+ e.class.inspect
37
+ # "Socket Error"
38
+ rescue
39
+ "Timed out connecting to server"
40
+ end
41
+ end
42
+
43
+ # @return [String]
44
+ def invalid_address
45
+ "getaddrinfo: Name or service not known (SocketError)"
46
+ end
47
+
48
+ # @return [String]
49
+ def invalid_parameter
50
+ "Server error -32602: Invalid params"
51
+ end
52
+ end
53
+
54
+ class ServerError < StandardError
55
+
56
+ # @return [String]
57
+ def initialize(code, message)
58
+ super("Server error #{code}: #{message}")
59
+ end
60
+ end
61
+
62
+ class InvalidParameter
63
+
64
+ def initialize
65
+ end
66
+
67
+ # @return [String]
68
+ def self.error
69
+ "Server error -32602: Invalid params"
70
+ end
71
+
72
+ # @return [String]
73
+ def self.argument_error
74
+ "ArgumentError"
75
+ end
76
+ end
77
+
78
+ end
79
+ end
@@ -0,0 +1,76 @@
1
+ require_relative '../types/cl_bool_type.rb'
2
+ require_relative '../types/cl_bool.rb'
3
+ require_relative '../types/cl_i32_type.rb'
4
+ require_relative '../types/cl_i64_type.rb'
5
+ require_relative '../types/cl_u8_type.rb'
6
+ require_relative '../types/cl_u32_type.rb'
7
+ require_relative '../types/cl_u64_type.rb'
8
+ require_relative '../types/cl_u128_type.rb'
9
+ require_relative '../types/cl_u256_type.rb'
10
+ require_relative '../types/cl_u512_type.rb'
11
+ require_relative '../types/cl_unit_type.rb'
12
+ require_relative '../types/cl_string_type.rb'
13
+ require_relative '../types/cl_key_type.rb'
14
+ require_relative '../types/cl_option_type.rb'
15
+ require_relative '../types/cl_list_type.rb'
16
+ require_relative '../types/cl_byte_array_type.rb'
17
+ require_relative '../types/cl_result_type.rb'
18
+ require_relative '../types/cl_map_type.rb'
19
+ require_relative '../types/cl_tuple_type.rb'
20
+ require_relative '../types/cl_any_type.rb'
21
+ require_relative '../types/cl_public_key_type.rb'
22
+
23
+ class CLTypeSerizalizer
24
+
25
+ def self.serialize_cl_type(cl_type)
26
+ if cl_type.to_string == "Bool"
27
+ [0].pack("C*").unpack1("H*")
28
+ elsif cl_type.to_string == "I32"
29
+ [1].pack("C*").unpack1("H*")
30
+ elsif cl_type.to_string == "I64"
31
+ [2].pack("C*").unpack1("H*")
32
+ elsif cl_type.to_string == "U8"
33
+ [3].pack("C*").unpack1("H*")
34
+ elsif cl_type.to_string == "U32"
35
+ [4].pack("C*").unpack1("H*")
36
+ elsif cl_type.to_string == "U64"
37
+ [5].pack("C*").unpack1("H*")
38
+ elsif cl_type.to_string == "U128"
39
+ [6].pack("C*").unpack1("H*")
40
+ elsif cl_type.to_string == "U256"
41
+ [7].pack("C*").unpack1("H*")
42
+ elsif cl_type.to_string == "U512"
43
+ [8].pack("C*").unpack1("H*")
44
+ elsif cl_type.to_string == "Unit"
45
+ [9].pack("C*").unpack1("H*")
46
+ elsif cl_type.to_string == "String"
47
+ [10].pack("C*").unpack1("H*")
48
+ elsif cl_type.to_string == "Key"
49
+ [11].pack("C*").unpack1("H*")
50
+ elsif cl_type.to_string == "URef"
51
+ [12].pack("C*").unpack1("H*")
52
+ elsif cl_type.to_string == "Option"
53
+ [13].pack("C*").unpack1("H*") + serialize_cl_type(cl_type.get_inner_type)
54
+ elsif cl_type.to_string == "List"
55
+ [14].pack("C*").unpack1("H*")
56
+ elsif cl_type.to_string == "ByteArray"
57
+ [15].pack("C*").unpack1("H*")
58
+ elsif cl_type.to_string == "Result"
59
+ [16].pack("C*").unpack1("H*")
60
+ elsif cl_type.to_string == "Map"
61
+ [17].pack("C*").unpack1("H*")
62
+ elsif cl_type.to_string == "Tuple1"
63
+ [18].pack("C*").unpack1("H*") + cl_type.get_data[0].to_bytes
64
+ elsif cl_type.to_string == "Tuple2"
65
+ [19].pack("C*").unpack1("H*") + cl_type.get_data[0].to_bytes + cl_type.get_data[1].to_bytes
66
+ elsif cl_type.to_string == "Tuple3"
67
+ [20].pack("C*").unpack1("H*") + cl_type.get_data[0].to_bytes + cl_type.get_data[1].to_bytes + cl_type.get_data[2].to_bytes
68
+ elsif cl_type.to_string == "Any"
69
+ [21].pack("C*").unpack1("H*")
70
+ elsif cl_type.to_string == "PublicKey"
71
+ [22].pack("C*").unpack1("H*")
72
+ else
73
+ "Undefined"
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,498 @@
1
+ require_relative '../types/constants.rb'
2
+ require_relative '../types/error.rb'
3
+ require 'active_support/core_ext/hash/keys'
4
+
5
+ class FalseClass; def to_i; 0 end end
6
+ class TrueClass; def to_i; 1 end end
7
+
8
+ module CLValueBytesParsers
9
+
10
+ module CLBoolBytesParser
11
+ extend self
12
+ def to_bytes(clbool)
13
+ value = clbool.get_value
14
+ if value == true || value == false
15
+ [value.to_i].pack("C").unpack("C")
16
+ else
17
+ "CLValue TypeError"
18
+ end
19
+ end
20
+
21
+ def from_bytes(bytes)
22
+ if bytes.first == 1
23
+ CLBool.new(true)
24
+ else
25
+ CLBool.new(false)
26
+ end
27
+ end
28
+ end
29
+
30
+ module CLStringBytesParser
31
+ extend self
32
+ # @param [String] raw_bytes
33
+ def from_bytes(raw_bytes)
34
+ first_4_bytes = raw_bytes[0..7]
35
+ string_length = [first_4_bytes].pack("H*").unpack("l").first
36
+ rest = raw_bytes[8..raw_bytes.length]
37
+ len2 = (rest.length) / 2
38
+ if string_length == len2
39
+ hex_to_string_value = [raw_bytes[8..raw_bytes.length]].pack("H*")
40
+ else
41
+ raise "Error"
42
+ end
43
+ end
44
+
45
+ # @param [String] value
46
+ def to_bytes(value)
47
+ len = value.length
48
+ hex1 = len.to_s(16).rjust(8, '0').scan(/../).reverse.join('')
49
+ hex2 = value.unpack("H*").first
50
+ hex1 + hex2
51
+ end
52
+
53
+ def to_json
54
+ end
55
+
56
+ def from_json
57
+ end
58
+ end
59
+
60
+
61
+ module CLI32BytesParser
62
+ extend self
63
+ @@check = 0
64
+ def from_bytes(byte_array)
65
+ if @@check < 0
66
+ @@check = 0
67
+ bytes = byte_array.map { |b| b.chr }.join
68
+ bytes.unpack("B*").first.scan(/[01]{8}/)
69
+ bytes.unpack("l*").first
70
+ else
71
+ byte_array.reverse.inject(0) {|m, b| (m << 8) + b }
72
+ end
73
+ end
74
+
75
+ def to_bytes(clvalue)
76
+ value = clvalue.get_value
77
+ if value < 0 && value >= MIN_I32
78
+ @@check = value
79
+ [value].pack("l<*").unpack("C*")
80
+ elsif value >= 0 && value <= MAX_I32
81
+ [value].pack("l<*").unpack("C*")
82
+ else
83
+ "Parameter value '#{value}' is out of range."
84
+ end
85
+ end
86
+ end
87
+
88
+ module CLI64BytesParser
89
+ extend self
90
+ @@check = 0
91
+ def from_bytes(byte_array)
92
+ if @@check < 0
93
+ @@check = 0
94
+ bytes = byte_array.map { |b| b.chr }.join
95
+ bytes.unpack("B*").first.scan(/[01]{8}/)
96
+ bytes.reverse.unpack("q*").first
97
+ else
98
+ byte_array.reverse.inject(0) {|m, b| (m << 8) + b }
99
+ end
100
+ end
101
+
102
+ def to_bytes(value)
103
+ if value < 0 && value >= MIN_I64
104
+ @@check = value
105
+ [value].pack("q>*").unpack("C*")
106
+ elsif value >= 0 && value <= MAX_I64
107
+ [value].pack("q<*").unpack("C*")
108
+ else
109
+ "Parameter value '#{value}' is out of range."
110
+ end
111
+ end
112
+ end
113
+
114
+ module CLU8BytesParser
115
+ extend self
116
+ def from_bytes(byte_array)
117
+ byte_array.reverse.inject(0) {|m, b| (m << 8) + b }
118
+ end
119
+
120
+ def to_bytes(value)
121
+ if value < 0 || value > MAX_U8
122
+ @@check = value
123
+ "Parameter value '#{value}' is out of range."
124
+ else
125
+ [value].pack("C").unpack("C")
126
+ end
127
+ end
128
+ end
129
+
130
+ module CLU32BytesParser
131
+ extend self
132
+ def from_bytes(byte_array)
133
+ byte_array.reverse.inject(0) {|m, b| (m << 8) + b }
134
+ end
135
+
136
+ def to_bytes(value)
137
+ if value < 0 || value > MAX_U32
138
+ "Parameter value '#{value}' is out of range."
139
+ else
140
+ [value].pack("L<*").unpack("C*")
141
+ end
142
+ end
143
+ end
144
+
145
+ module CLU64BytesParser
146
+ extend self
147
+ def from_bytes(byte_array)
148
+ byte_array.reverse.inject(0) {|m, b| (m << 8) + b }
149
+ end
150
+
151
+ def to_bytes(value)
152
+ if value < 0 || value > MAX_U64
153
+ "Parameter value '#{value}' is out of range."
154
+ else
155
+ [value].pack("Q<*").unpack("C*")
156
+ end
157
+ end
158
+ end
159
+
160
+ module CLU128BytesParser
161
+ extend self
162
+ def from_bytes(byte_array)
163
+ byte_array.reverse.inject(0) {|m, b| (m << 8) + b }
164
+ end
165
+
166
+ def to_bytes(value)
167
+ if value < 0 || value > MAX_U128
168
+ "Parameter value '#{value}' is out of range."
169
+ else
170
+ str = value.to_s(16)
171
+ arr = str.scan(/[0-9a-f]{4}/).map { |x| x.to_i(16) }
172
+ packed = arr.pack("n*").unpack("C*").reverse()
173
+ end
174
+ end
175
+ end
176
+
177
+ module CLU256BytesParser
178
+ extend self
179
+ def from_bytes(byte_array)
180
+ byte_array.reverse.inject(0) {|m, b| (m << 8) + b }
181
+ end
182
+
183
+ def to_bytes(value)
184
+ if value < 0 || value > MAX_U256
185
+ "Parameter value '#{value}' is out of range."
186
+ else
187
+ str = value.to_s(16)
188
+ arr = str.scan(/[0-9a-f]{4}/).map { |x| x.to_i(16) }
189
+ packed = arr.pack("n*").unpack("C*").reverse()
190
+ end
191
+ end
192
+ end
193
+
194
+ module CLU512BytesParser
195
+ extend self
196
+ def from_bytes(byte_array)
197
+ byte_array.reverse.inject(0) {|m, b| (m << 8) + b }
198
+ end
199
+
200
+ def to_bytes(value)
201
+ if value < 0 || value > MAX_U512
202
+ "Parameter value '#{value}' is out of range."
203
+ else
204
+ str = value.to_s(16)
205
+ arr = str.scan(/[0-9a-f]{4}/).map { |x| x.to_i(16) }
206
+ packed = arr.pack("n*").unpack("C*").reverse()
207
+ end
208
+ end
209
+ end
210
+
211
+ module CLUnitBytesParser
212
+ extend self
213
+ def from_bytes(byte_array)
214
+ if byte_array.empty?
215
+ [].pack("")
216
+ else
217
+ "byte_array should be empty!"
218
+ end
219
+ end
220
+
221
+ def to_bytes
222
+ "".bytes
223
+ end
224
+ end
225
+
226
+ module CLTupleBytesParser
227
+ extend self
228
+ def to_bytes(tuple)
229
+ # tuple_name can be Tuple1 or Tuple2 or Tuple3
230
+ tuple_name = tuple.get_tuple_name
231
+ size = tuple.get_size
232
+ data = tuple.get_value
233
+ if size == 1
234
+ type = data[0].get_cl_type
235
+ value = data[0]
236
+ convert_to_bytes(type, value)
237
+ elsif size == 2
238
+ # puts data[0]
239
+ # puts data[1]
240
+ clvalue1 = data[0]
241
+ type_of_clvalue1 = clvalue1.get_cl_type
242
+ clvalue2 = data[1]
243
+ type_of_clvalue2 = clvalue2.get_cl_type
244
+ convert_to_bytes(type_of_clvalue1, clvalue1) + convert_to_bytes(type_of_clvalue2, clvalue2)
245
+ # elsif size == 3
246
+ else
247
+ raise "error"
248
+ end
249
+ end
250
+
251
+ def from_bytes(types, byte_array)
252
+ size = types.size
253
+ if size == 1
254
+ type = types[0]
255
+ convert_from_bytes(type, byte_array)
256
+ elsif size == 2
257
+ type_of_clvalue1 = types[0]
258
+ type_of_clvalue2 = types[1]
259
+ else
260
+ raise "error"
261
+ end
262
+ end
263
+ end
264
+
265
+ module CLKeyBytesParser
266
+ extend self
267
+
268
+ def to_bytes(cl_list)
269
+
270
+ end
271
+
272
+ def from_bytes(byte_array)
273
+
274
+ end
275
+ end
276
+
277
+ module CLURefBytesParser
278
+ extend self
279
+
280
+ # @param [String] str
281
+ # @return [Array<Integer>] decoded
282
+ def decode_base_16(str)
283
+ decoded = [str].pack('H*').unpack("C*")
284
+ end
285
+
286
+ # @param [Array<Integer>] byte_array
287
+ # @return [String] encoded
288
+ def encode_base_16(byte_array)
289
+ encoded = byte_array.pack("C*").unpack("H*").first
290
+ end
291
+
292
+ # @param [CLURef] clvalue
293
+ # @return [Array<Integer>] value
294
+ def to_bytes(clvalue)
295
+ value = clvalue.get_value
296
+ access_rights = clvalue.get_access_rights
297
+ value = value.dup
298
+ value.push(access_rights)
299
+ end
300
+
301
+ # @param [Array<Integer>] byte_array
302
+ # @return [CLURef] uref
303
+ def from_bytes(byte_array)
304
+ get_access_rights = byte_array.last
305
+ byte_array = byte_array[0..byte_array.size-2]
306
+ # p byte_array
307
+ uref = CLURef.new(byte_array, get_access_rights)
308
+ end
309
+ end
310
+
311
+ module CLOptionBytesParser
312
+ extend self
313
+
314
+ # @param [CLOption] cl_option
315
+ def to_bytes(cl_option)
316
+
317
+ end
318
+ end
319
+
320
+ module CLListBytesParser
321
+ extend self
322
+
323
+ def to_bytes(cl_list)
324
+
325
+ end
326
+
327
+ def from_bytes(byte_array)
328
+
329
+ end
330
+ end
331
+
332
+ module CLByteArrayBytesParser
333
+ extend self
334
+
335
+ def to_bytes(cl_byte_array)
336
+
337
+ end
338
+
339
+ def from_bytes(byte_array)
340
+
341
+ end
342
+ end
343
+
344
+ module CLResultBytesParser
345
+ extend self
346
+
347
+ def to_bytes(cl_result)
348
+
349
+ end
350
+
351
+ def from_bytes(byte_array)
352
+
353
+ end
354
+ end
355
+
356
+ module CLMapBytesParser
357
+ extend self
358
+
359
+ def to_bytes(cl_map)
360
+
361
+ end
362
+
363
+ def from_bytes(byte_array)
364
+
365
+ end
366
+ end
367
+
368
+ module CLAnyBytesParser
369
+ extend self
370
+
371
+ def to_bytes(cl_any)
372
+
373
+ end
374
+
375
+ def from_bytes(byte_array)
376
+
377
+ end
378
+ end
379
+
380
+ module CLPublicKeyBytesParser
381
+ extend self
382
+ # @param [String] str
383
+ # @return [Array<Integer>] decoded
384
+ def decode_base_16(str)
385
+ decoded = [str].pack('H*').unpack("C*")
386
+ end
387
+
388
+ # @param [Array<Integer>] byte_array
389
+ # @return [String] encoded
390
+ def encode_base_16(byte_array)
391
+ encoded = byte_array.pack("C*").unpack("H*").first
392
+ end
393
+
394
+ def to_bytes(cl_public_key)
395
+ tag = cl_public_key.get_cl_public_key_tag
396
+ raw_public_key = cl_public_key.get_value
397
+ [tag] + raw_public_key
398
+ end
399
+
400
+ def from_bytes(byte_array)
401
+ byte_array
402
+ # tag = byte_array[0]
403
+ tag = 0
404
+ if byte_array[0] == 1 && byte_array.size == 33
405
+ tag = 1
406
+ elsif byte_array[0] == 2 && byte_array.size == 34
407
+ tag = 2
408
+ else
409
+ raise ArgumentError.new("Invalid parameter")
410
+ end
411
+ CLPublicKey.new(byte_array[1..], tag)
412
+ end
413
+ end
414
+ end
415
+
416
+
417
+ def convert_to_bytes(type, value)
418
+ case type
419
+ when "Bool"
420
+ CLValueBytesParsers::CLBoolBytesParser.to_bytes(value)
421
+ when "I32"
422
+ CLValueBytesParsers::CLI32BytesParser.to_bytes(value)
423
+ when "I64"
424
+ CLValueBytesParsers::CLI64BytesParser.to_bytes(value)
425
+ when "U8"
426
+ CLValueBytesParsers::CLU8BytesParser.to_bytes(value)
427
+ when "U32"
428
+ CLValueBytesParsers::CLU32BytesParser.to_bytes(value)
429
+ when "U64"
430
+ CLValueBytesParsers::CLU64BytesParser.to_bytes(value)
431
+ when "U128"
432
+ CLValueBytesParsers::CLU128BytesParser.to_bytes(value)
433
+ when "U256"
434
+ CLValueBytesParsers::CLU256BytesParser.to_bytes(value)
435
+ when "U512"
436
+ CLValueBytesParsers::CLU512BytesParser.to_bytes(value)
437
+ when "Unit"
438
+ CLValueBytesParsers::CLUnitBytesParser.to_bytes(value)
439
+ when "String"
440
+ CLValueBytesParsers::CLStringBytesParser.to_bytes(value)
441
+ # when "Key"
442
+ # when "URef"
443
+ # when "Option"
444
+ # when "List"
445
+ # when "ByteArray"
446
+ # when "Result"
447
+ # when "Map"
448
+ # when "Tuple1"
449
+ # when "Tuple2"
450
+ # when "Tuple3"
451
+ # when "Any"
452
+ # when "PublicKey"
453
+ else
454
+ "Unknown"
455
+ end
456
+ end
457
+
458
+ def convert_from_bytes(type, byte_array)
459
+ # p type
460
+ case type
461
+ when "Bool"
462
+ CLValueBytesParsers::CLBoolBytesParser.from_bytes(byte_array)
463
+ when "I32"
464
+ CLValueBytesParsers::CLI32BytesParser.from_bytes(byte_array)
465
+ when "I64"
466
+ CLValueBytesParsers::CLI64BytesParser.to_bytes(value)
467
+ when "U8"
468
+ CLValueBytesParsers::CLU8BytesParser.to_bytes(value)
469
+ when "U32"
470
+ CLValueBytesParsers::CLU32BytesParser.to_bytes(value)
471
+ when "U64"
472
+ CLValueBytesParsers::CLU64BytesParser.to_bytes(value)
473
+ when "U128"
474
+ CLValueBytesParsers::CLU128BytesParser.to_bytes(value)
475
+ when "U256"
476
+ CLValueBytesParsers::CLU256BytesParser.to_bytes(value)
477
+ when "U512"
478
+ CLValueBytesParsers::CLU512BytesParser.to_bytes(value)
479
+ when "Unit"
480
+ CLValueBytesParsers::CLUnitBytesParser.to_bytes(value)
481
+ when "String"
482
+ CLValueBytesParsers::CLUnitBytesParser.to_bytes(value)
483
+ # when "Key"
484
+ # when "URef"
485
+ # when "Option"
486
+ # when "List"
487
+ # when "ByteArray"
488
+ # when "Result"
489
+ # when "Map"
490
+ # when "Tuple1"
491
+ # when "Tuple2"
492
+ # when "Tuple3"
493
+ # when "Any"
494
+ # when "PublicKey"
495
+ else
496
+ "Unknown"
497
+ end
498
+ end