casper_network 1.0.1 → 1.1.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/README.md +490 -89
- data/lib/casper_network.rb +28 -10
- data/lib/crypto/asymmetric_key.rb +19 -18
- data/lib/crypto/ed25519.rb +114 -0
- data/lib/crypto/ed25519_key.rb +111 -10
- data/lib/crypto/keys.rb +1 -2
- data/lib/crypto/keys_util.rb +20 -0
- data/lib/entity/auction_state.rb +56 -8
- data/lib/entity/bid.rb +1 -1
- data/lib/entity/bid_info.rb +1 -1
- data/lib/entity/block.rb +39 -0
- data/lib/entity/block_body.rb +35 -0
- data/lib/entity/block_header.rb +81 -0
- data/lib/entity/block_info.rb +56 -0
- data/lib/entity/block_proof.rb +24 -0
- data/lib/entity/deploy.rb +154 -1
- data/lib/entity/deploy_executable.rb +50 -7
- data/lib/entity/deploy_executable_item_internal.rb +1 -1
- data/lib/entity/deploy_header.rb +17 -0
- data/lib/entity/deploy_named_argument.rb +61 -2
- data/lib/entity/era_summary.rb +13 -12
- data/lib/entity/module_bytes.rb +9 -2
- data/lib/entity/status.rb +80 -0
- data/lib/entity/stored_value.rb +86 -11
- data/lib/entity/transfer.rb +7 -7
- data/lib/include.rb +2 -0
- data/lib/serialization/cl_value_serializer.rb +69 -12
- data/lib/serialization/deploy_serializer.rb +129 -15
- data/lib/types/cl_option.rb +9 -1
- data/lib/types/cl_public_key.rb +2 -0
- data/lib/types/cl_value.rb +8 -0
- data/lib/utils/byte_utils.rb +28 -0
- data/lib/utils/helpers.rb +10 -0
- data/lib/version.rb +1 -1
- data/spec/cl_value_serializer_spec.rb +15 -1
- data/spec/client_spec.rb +3 -3
- data/spec/deploy_executable_spec.rb +90 -0
- data/spec/testnet_spec.rb +5 -3
- metadata +13 -24
- data/lib/crypto/00_asymmetric_key.rb +0 -95
- data/lib/crypto/01_ed25519.rb +0 -67
- data/lib/crypto/key_pair.rb +0 -40
- data/lib/crypto/secp256k1_key.rb +0 -0
- data/lib/crypto/test_ed25519_key.rb +0 -44
- data/lib/entity/executable_deploy_item.rb +0 -11
- data/lib/serialization/test.rb +0 -431
- data/lib/types/cl_account_hash.rb +0 -24
- data/lib/types/cl_account_hash_type.rb +0 -22
- data/lib/utils/utils.rb +0 -2
- data/spec/a_spec.rb +0 -697
- data/spec/cl_public_spec.rb +0 -169
- data/spec/crypto_spec.rb +0 -42
- data/spec/deploy_executable_serializer_spec.rb +0 -0
- data/spec/deploy_serializer_test_spec.rb +0 -225
- data/spec/string_spec.rb +0 -68
@@ -3,34 +3,45 @@ require_relative './deploy_approval_serializer'
|
|
3
3
|
require_relative './deploy_executable_serializer'
|
4
4
|
require_relative './deploy_named_arg_serializer'
|
5
5
|
require_relative '../utils/byte_utils.rb'
|
6
|
-
|
6
|
+
require_relative '../types/cl_option.rb'
|
7
|
+
require_relative '../utils/helpers.rb'
|
7
8
|
# Byte serializer for Deploy object
|
8
9
|
class DeploySerializer
|
9
|
-
|
10
|
+
include Utils::Helpers
|
11
|
+
attr_accessor :payment_session_serializer, :transfer_serializer, :payment_serializer
|
12
|
+
def initialize
|
13
|
+
end
|
14
|
+
|
10
15
|
def to_bytes(deploy)
|
16
|
+
@payment_session_serializer = ""
|
17
|
+
@amount_serializer = ""
|
18
|
+
@target_serializer = ""
|
19
|
+
@id_serializer = ""
|
20
|
+
@transfer_serializer = ""
|
21
|
+
@payment_serializer = ""
|
11
22
|
result = ""
|
12
23
|
deploy_header = Casper::Entity::DeployHeader.new(deploy.get_header)
|
13
24
|
result += DeployHeaderSerializer.new().to_bytes(deploy_header)
|
14
25
|
|
15
26
|
deploy_hash = Casper::Entity::DeployHash.new(deploy.get_hash)
|
16
27
|
result += deploy_hash.get_hash
|
17
|
-
|
18
28
|
payment = deploy.get_payment
|
19
29
|
session = deploy.get_session
|
20
30
|
if payment.keys[0] == :ModuleBytes
|
21
31
|
temp_args = []
|
22
32
|
module_bytes = payment[:ModuleBytes][:module_bytes]
|
23
33
|
args = payment[:ModuleBytes][:args]
|
24
|
-
module_bytes = Casper::Entity::ModuleBytes.new(module_bytes, args)
|
34
|
+
# module_bytes = Casper::Entity::ModuleBytes.new(module_bytes, args)
|
25
35
|
args.each do |arg|
|
26
36
|
name1 = arg[0]
|
27
37
|
clvalue_hash = arg[1]
|
28
38
|
clvalue = build_cl_value(arg[1])
|
29
|
-
# puts clvalue
|
30
39
|
temp_args << [Casper::Entity::DeployNamedArgument.new(name1, clvalue)]
|
31
40
|
end
|
32
41
|
temp = Utils::ByteUtils.byte_array_to_hex(Casper::Entity::ModuleBytes.new(module_bytes, temp_args).to_bytes)
|
33
42
|
result += temp
|
43
|
+
@payment_serializer += temp
|
44
|
+
@payment_session_serializer += temp
|
34
45
|
temp = nil
|
35
46
|
elsif payment.keys[0] == :StoredContractByHash
|
36
47
|
temp_args = []
|
@@ -43,11 +54,11 @@ class DeploySerializer
|
|
43
54
|
name1 = arg[0] # => "quantity"
|
44
55
|
clvalue_hash = arg[1] # => {:cl_type=>"I32", :bytes=>"e8030000", :parsed=>1000}
|
45
56
|
clvalue = build_cl_value(arg[1])
|
46
|
-
# puts clvalue
|
47
57
|
temp_args << [Casper::Entity::DeployNamedArgument.new(name1, clvalue)]
|
48
58
|
end
|
49
59
|
temp = Utils::ByteUtils.byte_array_to_hex(Casper::Entity::StoredContractByHash.new(name, entry_point, temp_args).to_bytes)
|
50
60
|
result += temp
|
61
|
+
@payment_session_serializer += temp
|
51
62
|
temp = nil
|
52
63
|
elsif payment.keys[0] == :StoredContractByName
|
53
64
|
temp_args = []
|
@@ -64,6 +75,7 @@ class DeploySerializer
|
|
64
75
|
end
|
65
76
|
temp = Utils::ByteUtils.byte_array_to_hex(Casper::Entity::StoredContractByName.new(name, entry_point, temp_args).to_bytes)
|
66
77
|
result += temp
|
78
|
+
@payment_session_serializer += temp
|
67
79
|
temp = nil
|
68
80
|
elsif payment.keys[0] == :StoredVersionedContractByHash
|
69
81
|
temp_args = []
|
@@ -81,6 +93,7 @@ class DeploySerializer
|
|
81
93
|
end
|
82
94
|
temp = Utils::ByteUtils.byte_array_to_hex(Casper::Entity::StoredVersionedContractByHash.new(name, version,entry_point, temp_args).to_bytes)
|
83
95
|
result += temp
|
96
|
+
@payment_session_serializer += temp
|
84
97
|
temp = nil
|
85
98
|
elsif payment.keys[0] == :StoredVersionedContractByName
|
86
99
|
temp_args = []
|
@@ -98,6 +111,7 @@ class DeploySerializer
|
|
98
111
|
end
|
99
112
|
temp = Utils::ByteUtils.byte_array_to_hex(Casper::Entity::StoredVersionedContractByName.new(name, version,entry_point, temp_args).to_bytes)
|
100
113
|
result += temp
|
114
|
+
@payment_session_serializer += temp
|
101
115
|
temp = nil
|
102
116
|
elsif payment.keys[0] == :Transfer
|
103
117
|
temp_args = []
|
@@ -108,11 +122,11 @@ class DeploySerializer
|
|
108
122
|
name1 = arg[0] # => "amount"
|
109
123
|
clvalue_hash = arg[1] # => {:cl_type=>"I32", :bytes=>"e8030000", :parsed=>1000}
|
110
124
|
clvalue = build_cl_value(arg[1])
|
111
|
-
# puts clvalue
|
112
125
|
temp_args << [Casper::Entity::DeployNamedArgument.new(name1, clvalue)]
|
113
126
|
end
|
114
127
|
temp = Utils::ByteUtils.byte_array_to_hex(Casper::Entity::DeployExecutableTransfer.new(temp_args).to_bytes)
|
115
128
|
result += temp
|
129
|
+
@payment_session_serializer += temp
|
116
130
|
temp = nil
|
117
131
|
end
|
118
132
|
|
@@ -120,7 +134,7 @@ class DeploySerializer
|
|
120
134
|
temp_args = []
|
121
135
|
module_bytes = session[:ModuleBytes][:module_bytes]
|
122
136
|
args = session[:ModuleBytes][:args]
|
123
|
-
module_bytes = Casper::Entity::ModuleBytes.new(module_bytes, args)
|
137
|
+
# module_bytes = Casper::Entity::ModuleBytes.new(module_bytes, args)
|
124
138
|
args.each do |arg|
|
125
139
|
name1 = arg[0]
|
126
140
|
clvalue_hash = arg[1]
|
@@ -129,6 +143,7 @@ class DeploySerializer
|
|
129
143
|
end
|
130
144
|
temp = Utils::ByteUtils.byte_array_to_hex(Casper::Entity::ModuleBytes.new(module_bytes, temp_args).to_bytes)
|
131
145
|
result += temp
|
146
|
+
@payment_session_serializer += temp
|
132
147
|
temp = nil
|
133
148
|
elsif session.keys[0] == :StoredContractByHash
|
134
149
|
temp_args = []
|
@@ -141,11 +156,11 @@ class DeploySerializer
|
|
141
156
|
name1 = arg[0] # => "quantity"
|
142
157
|
clvalue_hash = arg[1] # => {:cl_type=>"I32", :bytes=>"e8030000", :parsed=>1000}
|
143
158
|
clvalue = build_cl_value(arg[1])
|
144
|
-
# puts clvalue
|
145
159
|
temp_args << [Casper::Entity::DeployNamedArgument.new(name1, clvalue)]
|
146
160
|
end
|
147
161
|
temp = Utils::ByteUtils.byte_array_to_hex(Casper::Entity::StoredContractByHash.new(name, entry_point, temp_args).to_bytes)
|
148
162
|
result += temp
|
163
|
+
@payment_session_serializer += temp
|
149
164
|
temp = nil
|
150
165
|
elsif session.keys[0] == :StoredContractByName
|
151
166
|
temp_args = []
|
@@ -162,6 +177,7 @@ class DeploySerializer
|
|
162
177
|
end
|
163
178
|
temp = Utils::ByteUtils.byte_array_to_hex(Casper::Entity::StoredContractByName.new(name, entry_point, temp_args).to_bytes)
|
164
179
|
result += temp
|
180
|
+
@payment_session_serializer += temp
|
165
181
|
temp = nil
|
166
182
|
elsif session.keys[0] == :StoredVersionedContractByHash
|
167
183
|
temp_args = []
|
@@ -179,6 +195,7 @@ class DeploySerializer
|
|
179
195
|
end
|
180
196
|
temp = Utils::ByteUtils.byte_array_to_hex(Casper::Entity::StoredVersionedContractByHash.new(name, version,entry_point, temp_args).to_bytes)
|
181
197
|
result += temp
|
198
|
+
@payment_session_serializer += temp
|
182
199
|
temp = nil
|
183
200
|
elsif session.keys[0] == :StoredVersionedContractByName
|
184
201
|
temp_args = []
|
@@ -196,6 +213,7 @@ class DeploySerializer
|
|
196
213
|
end
|
197
214
|
temp = Utils::ByteUtils.byte_array_to_hex(Casper::Entity::StoredVersionedContractByName.new(name, version,entry_point, temp_args).to_bytes)
|
198
215
|
result += temp
|
216
|
+
@payment_session_serializer += temp
|
199
217
|
temp = nil
|
200
218
|
|
201
219
|
elsif session.keys[0] == :Transfer
|
@@ -203,31 +221,120 @@ class DeploySerializer
|
|
203
221
|
args = session[:Transfer][:args]
|
204
222
|
|
205
223
|
transfer = Casper::Entity::DeployExecutableTransfer.new(args)
|
224
|
+
# args.each do |arg|
|
225
|
+
# name1 = arg[0] # => "amount"
|
226
|
+
# clvalue_hash = arg[1] # => {:cl_type=>"I32", :bytes=>"e8030000", :parsed=>1000}
|
227
|
+
# clvalue = build_cl_value(arg[1])
|
228
|
+
# # puts clvalue
|
229
|
+
# temp_args << [Casper::Entity::DeployNamedArgument.new(name1, clvalue)]
|
230
|
+
# end
|
231
|
+
|
206
232
|
args.each do |arg|
|
207
|
-
name1 = arg[0]
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
233
|
+
name1 = arg[0]
|
234
|
+
if name1 == "amount" || name1 == "target"
|
235
|
+
clvalue_hash = arg[1]
|
236
|
+
clvalue = build_cl_value(arg[1])
|
237
|
+
temp_args << [Casper::Entity::DeployNamedArgument.new(name1, clvalue)]
|
238
|
+
elsif name1 == "id"
|
239
|
+
bytes = arg[1][:bytes]
|
240
|
+
parsed = arg[1][:parsed]
|
241
|
+
h = arg[1][:cl_type]
|
242
|
+
key, value = h.first
|
243
|
+
cl_type = h.keys[0]
|
244
|
+
inner_type = value
|
245
|
+
# data = { "cl_type": inner_type, "bytes": bytes, "parsed": parsed}
|
246
|
+
# clvalue = CLOption.new(data, inner_type)
|
247
|
+
|
248
|
+
inner_clvalue = Utils::Helpers.construct_inner_clvalue(inner_type, parsed)
|
249
|
+
clvalue = CLOption.new(inner_clvalue, inner_type)
|
250
|
+
# type = clvalue.get_cl_type
|
251
|
+
# puts type
|
252
|
+
# value = clvalue.get_value
|
253
|
+
# puts value
|
254
|
+
# tag = CLType::TAGS[type.to_sym]
|
255
|
+
# puts tag
|
256
|
+
# cl_value = { "cl_type": cl_type, "bytes": bytes, "parsed": parsed}
|
257
|
+
# clvalue = build_cl_value(cloption)
|
258
|
+
# puts cloption.get_value
|
259
|
+
temp_args << [Casper::Entity::DeployNamedArgument.new(name1, clvalue)]
|
260
|
+
end
|
212
261
|
end
|
213
262
|
temp = Utils::ByteUtils.byte_array_to_hex(Casper::Entity::DeployExecutableTransfer.new(temp_args).to_bytes)
|
263
|
+
@target_serializer = temp
|
214
264
|
result += temp
|
265
|
+
@transfer_serializer += temp
|
266
|
+
@payment_session_serializer += temp
|
215
267
|
temp = nil
|
216
268
|
end
|
217
269
|
|
218
270
|
approvals = deploy.get_approvals
|
219
271
|
num_of_approvals = approvals.size
|
272
|
+
approval_serializer = ""
|
220
273
|
deploy_approval_serializer = DeployApprovalSerializer.new
|
221
274
|
result += Utils::ByteUtils.to_u32(num_of_approvals)
|
275
|
+
approval_serializer += Utils::ByteUtils.to_u32(num_of_approvals)
|
276
|
+
# @payment_session_serializer += Utils::ByteUtils.to_u32(num_of_approvals)
|
222
277
|
for approval in approvals
|
223
278
|
deploy_approval = Casper::Entity::DeployApproval.new(approval)
|
279
|
+
# @payment_session_serializer += deploy_approval_serializer.to_bytes(deploy_approval)
|
224
280
|
result += deploy_approval_serializer.to_bytes(deploy_approval)
|
281
|
+
approval_serializer += deploy_approval_serializer.to_bytes(deploy_approval)
|
225
282
|
end
|
226
|
-
# result
|
227
283
|
Utils::ByteUtils.hex_to_byte_array(result)
|
228
284
|
end
|
229
285
|
|
230
286
|
def build_cl_value(h = {})
|
287
|
+
cl_type = h[:cl_type]
|
288
|
+
bytes = h[:bytes]
|
289
|
+
parsed = h[:parsed]
|
290
|
+
if cl_type == "Bool"
|
291
|
+
CLValueBytesParsers::CLBoolBytesParser.from_bytes([bytes])
|
292
|
+
elsif cl_type == "I32"
|
293
|
+
value = Utils::ByteUtils.hex_to_integer(bytes)
|
294
|
+
CLi32.new(value)
|
295
|
+
elsif cl_type == "I64"
|
296
|
+
value = Utils::ByteUtils.hex_to_i64_value(bytes)
|
297
|
+
CLi64.new(value)
|
298
|
+
elsif cl_type == "U8"
|
299
|
+
value = Utils::ByteUtils.hex_to_u8_value(bytes)
|
300
|
+
CLu8.new(value)
|
301
|
+
elsif cl_type == "U32"
|
302
|
+
value = Utils::ByteUtils.hex_to_u32_value(bytes)
|
303
|
+
CLu32.new(value)
|
304
|
+
elsif cl_type == "U64"
|
305
|
+
value = Utils::ByteUtils.hex_to_u64_value(bytes)
|
306
|
+
CLu64.new(value)
|
307
|
+
elsif cl_type == "U512"
|
308
|
+
bytes = h[:bytes] # => 0400f90295
|
309
|
+
num_of_bytes = bytes[0..1] # => 04
|
310
|
+
bytes = bytes[2..] # => "00f90295"
|
311
|
+
value = [bytes].pack("H*").unpack("L*").first
|
312
|
+
# CLu512.new(value)
|
313
|
+
CLu512.new(parsed.to_i)
|
314
|
+
# value = Utils::ByteUtils.hex_to_u64_value(bytes)
|
315
|
+
# CLu512.new(value)
|
316
|
+
# value = Utils::ByteUtils.hex_to_u512_value(bytes)
|
317
|
+
# CLu512.new(value)
|
318
|
+
elsif cl_type == "Unit"
|
319
|
+
# value = CLValueBytesParsers::CLUnitBytesParser.from_bytes(bytes)
|
320
|
+
if bytes == ""
|
321
|
+
value = nil
|
322
|
+
CLUnit.new(value)
|
323
|
+
end
|
324
|
+
elsif cl_type == "String"
|
325
|
+
value = CLValueBytesParsers::CLStringBytesParser.from_bytes(bytes)
|
326
|
+
CLString.new(value)
|
327
|
+
elsif cl_type == "URef"
|
328
|
+
value = Utils::ByteUtils.hex_to_byte_array(bytes)
|
329
|
+
CLValueBytesParsers::CLURefBytesParser.from_bytes(value)
|
330
|
+
# elsif cl_type = "Option"
|
331
|
+
|
332
|
+
elsif cl_type == "PublicKey"
|
333
|
+
CLPublicKey.from_hex(bytes)
|
334
|
+
end
|
335
|
+
end
|
336
|
+
|
337
|
+
def build_cl_value_with_option(h = {})
|
231
338
|
cl_type = h[:cl_type]
|
232
339
|
bytes = h[:bytes]
|
233
340
|
parsed = h[:parsed]
|
@@ -248,6 +355,11 @@ class DeploySerializer
|
|
248
355
|
elsif cl_type == "U64"
|
249
356
|
value = Utils::ByteUtils.hex_to_u64_value(bytes)
|
250
357
|
CLu32.new(value)
|
358
|
+
elsif cl_type == "U512"
|
359
|
+
value = Utils::ByteUtils.hex_to_u64_value(bytes)
|
360
|
+
CLu512.new(value)
|
361
|
+
# value = Utils::ByteUtils.hex_to_u512_value(bytes)
|
362
|
+
# CLu512.new(value)
|
251
363
|
elsif cl_type == "Unit"
|
252
364
|
# value = CLValueBytesParsers::CLUnitBytesParser.from_bytes(bytes)
|
253
365
|
if bytes == ""
|
@@ -260,6 +372,8 @@ class DeploySerializer
|
|
260
372
|
elsif cl_type == "URef"
|
261
373
|
value = Utils::ByteUtils.hex_to_byte_array(bytes)
|
262
374
|
CLValueBytesParsers::CLURefBytesParser.from_bytes(value)
|
375
|
+
# elsif cl_type = "Option"
|
376
|
+
|
263
377
|
elsif cl_type == "PublicKey"
|
264
378
|
CLPublicKey.from_hex(bytes)
|
265
379
|
end
|
data/lib/types/cl_option.rb
CHANGED
@@ -18,6 +18,7 @@ class CLOption < CLValue
|
|
18
18
|
elsif data == nil && inner_type != nil
|
19
19
|
@inner_type = inner_type
|
20
20
|
else
|
21
|
+
# @inner_type = data[:cl_type]
|
21
22
|
@inner_type = data.get_cl_type
|
22
23
|
end
|
23
24
|
end
|
@@ -27,7 +28,14 @@ class CLOption < CLValue
|
|
27
28
|
end
|
28
29
|
|
29
30
|
def get_cl_type
|
30
|
-
CLOptionType.new(@inner_type)
|
31
|
+
CLOptionType.new(@inner_type).get_type
|
32
|
+
=begin
|
31
33
|
@inner_type
|
34
|
+
get_type
|
35
|
+
=end
|
36
|
+
end
|
37
|
+
|
38
|
+
def get_inner_type
|
39
|
+
@inner_type
|
32
40
|
end
|
33
41
|
end
|
data/lib/types/cl_public_key.rb
CHANGED
data/lib/types/cl_value.rb
CHANGED
data/lib/utils/byte_utils.rb
CHANGED
@@ -27,6 +27,11 @@ module Utils
|
|
27
27
|
# byte_array.pack("C*").unpack1("H*")
|
28
28
|
byte_array.pack("C*").unpack("H*").first
|
29
29
|
end
|
30
|
+
|
31
|
+
def byte_array_to_hex_64(byte_array)
|
32
|
+
# byte_array.pack("C*").unpack1("H*")
|
33
|
+
byte_array.pack("C*").unpack("H*").first
|
34
|
+
end
|
30
35
|
|
31
36
|
# @param [String] str
|
32
37
|
# @return [Array]
|
@@ -74,6 +79,15 @@ module Utils
|
|
74
79
|
# @param [Integer] n
|
75
80
|
# @return [String]
|
76
81
|
def to_u64(n)
|
82
|
+
# bytes = Utils::ByteUtils.byte_array_to_hex(to_byte_array(n)) + "0000"
|
83
|
+
# puts "bytes: #{bytes}"
|
84
|
+
# puts "bytes_conversion: #{[bytes].pack("H*").unpack("C*")}"
|
85
|
+
[n].pack("Q<*").unpack("H*").first
|
86
|
+
end
|
87
|
+
|
88
|
+
# @param [Integer] n
|
89
|
+
# @return [String]
|
90
|
+
def to_u512(n)
|
77
91
|
[n].pack("Q<*").unpack("H*").first
|
78
92
|
end
|
79
93
|
|
@@ -103,5 +117,19 @@ module Utils
|
|
103
117
|
def hex_to_u64_value(hex_str)
|
104
118
|
[hex_str].pack("H*").unpack("Q*").first
|
105
119
|
end
|
120
|
+
def hex_to_u512_value(hex_str)
|
121
|
+
[hex_str].pack("H*").unpack("Q*").first
|
122
|
+
end
|
123
|
+
|
124
|
+
# @return byte array containing two's complement representation of Bignum/Fixnum
|
125
|
+
def to_byte_array(num)
|
126
|
+
result = []
|
127
|
+
begin
|
128
|
+
result << (num & 0xff)
|
129
|
+
num >>= 8
|
130
|
+
end until (num == 0 || num == -1) && (result.last[7] == num[7])
|
131
|
+
# result.reverse
|
132
|
+
result
|
133
|
+
end
|
106
134
|
end
|
107
135
|
end
|
data/lib/version.rb
CHANGED
@@ -69,6 +69,18 @@ describe CLValueSerializer do
|
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
72
|
+
describe "CLu512 Value Serializer" do
|
73
|
+
let(:u512_1) { CLu512.new(1000000000)}
|
74
|
+
let(:u512_2) { CLu512.new(23000000000)}
|
75
|
+
|
76
|
+
it "should serialize CLu512 values" do
|
77
|
+
# puts serializer.to_bytes(u512_1)
|
78
|
+
expect(serializer.to_bytes(u512_1)).to eql("040000000300ca9a08")
|
79
|
+
# puts serializer.to_bytes(u512_2)
|
80
|
+
expect(serializer.to_bytes(u512_2)).to eql("05000000040026e85a08")
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
72
84
|
describe "CLString Value Serializer" do
|
73
85
|
let (:str1) { CLString.new("Hello, Casper!") }
|
74
86
|
it "should serialize CLString values" do
|
@@ -133,8 +145,10 @@ describe CLValueSerializer do
|
|
133
145
|
describe "CLUnit Value Serializer" do
|
134
146
|
let(:unit) {CLUnit.new()}
|
135
147
|
it "should serialize CLUnit values" do
|
136
|
-
puts serializer.to_bytes(unit)
|
148
|
+
# puts serializer.to_bytes(unit)
|
137
149
|
expect(serializer.to_bytes(unit)).to eql("0000000009")
|
138
150
|
end
|
139
151
|
end
|
152
|
+
|
153
|
+
|
140
154
|
end
|
data/spec/client_spec.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# client_spec.rb
|
2
|
-
require './lib/
|
2
|
+
require './lib/rpc/rpc_client.rb'
|
3
3
|
|
4
|
-
describe
|
5
|
-
client1 =
|
4
|
+
describe Casper::RpcClient do
|
5
|
+
client1 = Casper::RpcClient.new("185.246.84.43")
|
6
6
|
# Test info_get_peers()
|
7
7
|
describe "#info_get_peers" do
|
8
8
|
it "returns peers array." do
|
@@ -0,0 +1,90 @@
|
|
1
|
+
require_relative '../lib/entity/deploy_named_argument.rb'
|
2
|
+
require_relative '../lib/serialization/deploy_named_arg_serializer.rb'
|
3
|
+
require_relative '../lib/entity/deploy_executable_item_internal.rb'
|
4
|
+
require_relative '../lib/entity/deploy_executable.rb'
|
5
|
+
require_relative '../lib/entity/stored_contract_by_hash.rb'
|
6
|
+
require_relative '../lib/entity/stored_contract_by_name.rb'
|
7
|
+
require_relative '../lib/entity/stored_versioned_contract_by_hash.rb'
|
8
|
+
require_relative '../lib/entity/stored_versioned_contract_by_name.rb'
|
9
|
+
require_relative '../lib/serialization/deploy_executable_serializer.rb'
|
10
|
+
require_relative '../lib/entity/deploy.rb'
|
11
|
+
require_relative '../lib/entity/deploy_hash.rb'
|
12
|
+
require_relative '../lib/entity/deploy_header.rb'
|
13
|
+
require_relative '../lib/entity/deploy_approval.rb'
|
14
|
+
require_relative '../lib/entity/deploy_info.rb'
|
15
|
+
require_relative '../lib/entity/deploy.rb'
|
16
|
+
require_relative '../lib/serialization/deploy_serializer.rb'
|
17
|
+
|
18
|
+
|
19
|
+
RSpec.describe Casper::Entity::DeployExecutable do
|
20
|
+
# describe Casper::Entity::DeployExecutable do
|
21
|
+
let(:args) {[]}
|
22
|
+
|
23
|
+
|
24
|
+
# ModuleBytes
|
25
|
+
describe Casper::Entity::ModuleBytes do
|
26
|
+
it "ModuleBytes serialization" do
|
27
|
+
args = []
|
28
|
+
arg1 = Casper::Entity::DeployNamedArgument.new("amount", CLu512.new(2500000000))
|
29
|
+
args << [arg1]
|
30
|
+
module_bytes = Casper::Entity::ModuleBytes.new("", args)
|
31
|
+
# puts Utils::ByteUtils.byte_array_to_hex(module_bytes.to_bytes)
|
32
|
+
expect(Utils::ByteUtils.byte_array_to_hex(module_bytes.to_bytes)).to eql("00000000000100000006000000616d6f756e74050000000400f9029508")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# StoredContractByHash
|
37
|
+
describe Casper::Entity::StoredContractByHash do
|
38
|
+
it "StoredContractByHash serialization" do
|
39
|
+
arg1 = Casper::Entity::DeployNamedArgument.new("quantity", CLi32.new(1000))
|
40
|
+
args << [arg1]
|
41
|
+
stored_contract_by_hash = Casper::Entity::StoredContractByHash.new("c4c411864f7b717c27839e56f6f1ebe5da3f35ec0043f437324325d65a22afa4", "pclphXwfYmCmdITj8hnh", args)
|
42
|
+
# puts Utils::ByteUtils.byte_array_to_hex(stored_contract_by_hash.to_bytes)
|
43
|
+
expect(Utils::ByteUtils.byte_array_to_hex(stored_contract_by_hash.to_bytes)).to eql("01c4c411864f7b717c27839e56f6f1ebe5da3f35ec0043f437324325d65a22afa41400000070636c7068587766596d436d6449546a38686e6801000000080000007175616e7469747904000000e803000001")
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
# StoredContractByName
|
48
|
+
describe Casper::Entity::StoredContractByName do
|
49
|
+
it "StoredContractByName serialization" do
|
50
|
+
arg1 = Casper::Entity::DeployNamedArgument.new("quantity", CLi32.new(1000))
|
51
|
+
args << [arg1]
|
52
|
+
stored_contract_by_name = Casper::Entity::StoredContractByName.new("casper-example", "example-entry-point", args)
|
53
|
+
# puts Utils::ByteUtils.byte_array_to_hex(stored_contract_by_name.to_bytes)
|
54
|
+
expect(Utils::ByteUtils.byte_array_to_hex(stored_contract_by_name.to_bytes)).to eql("020e0000006361737065722d6578616d706c65130000006578616d706c652d656e7472792d706f696e7401000000080000007175616e7469747904000000e803000001")
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
# StoredVersionedContractByHash
|
59
|
+
describe Casper::Entity::StoredVersionedContractByHash do
|
60
|
+
it "StoredVersionedContractByHash serialization" do
|
61
|
+
arg1 = Casper::Entity::DeployNamedArgument.new("test", CLString.new("Hello, World!"))
|
62
|
+
args << [arg1]
|
63
|
+
stored_versioned_contract_by_hash = Casper::Entity::StoredVersionedContractByHash.new("b348fdd0d0b3f66468687df93141b5924f6bb957d5893c08b60d5a78d0b9a423", nil, "PsLz5c7JsqT8BK8ll0kF", args)
|
64
|
+
# puts Utils::ByteUtils.byte_array_to_hex(stored_versioned_contract_by_hash.to_bytes)
|
65
|
+
expect(Utils::ByteUtils.byte_array_to_hex(stored_versioned_contract_by_hash.to_bytes)).to eql("03b348fdd0d0b3f66468687df93141b5924f6bb957d5893c08b60d5a78d0b9a423001400000050734c7a3563374a73715438424b386c6c306b46010000000400000074657374110000000d00000048656c6c6f2c20576f726c64210a")
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
# StoredVersionedContractByName
|
70
|
+
describe Casper::Entity::StoredVersionedContractByName do
|
71
|
+
it "StoredVersionedContractByName serialization" do
|
72
|
+
arg1 = Casper::Entity::DeployNamedArgument.new("test", CLString.new("Hello, World!"))
|
73
|
+
args << [arg1]
|
74
|
+
stored_versioned_contract_by_name = Casper::Entity::StoredVersionedContractByName.new("test-contract", nil, "PsLz5c7JsqT8BK8ll0kF", args)
|
75
|
+
# puts Utils::ByteUtils.byte_array_to_hex(stored_versioned_contract_by_name.to_bytes)
|
76
|
+
expect(Utils::ByteUtils.byte_array_to_hex(stored_versioned_contract_by_name.to_bytes)).to eql("040d000000746573742d636f6e7472616374001400000050734c7a3563374a73715438424b386c6c306b46010000000400000074657374110000000d00000048656c6c6f2c20576f726c64210a")
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
# DeployExecutableTransfer
|
81
|
+
describe Casper::Entity::DeployExecutableTransfer do
|
82
|
+
it "DeployExecutableTransfer serialization" do
|
83
|
+
arg1 = Casper::Entity::DeployNamedArgument.new("amount", CLi32.new(1000))
|
84
|
+
args << [arg1]
|
85
|
+
transfer = Casper::Entity::DeployExecutableTransfer.new(args)
|
86
|
+
# puts Utils::ByteUtils.byte_array_to_hex(transfer.to_bytes)
|
87
|
+
expect(Utils::ByteUtils.byte_array_to_hex(transfer.to_bytes)).to eql("050100000006000000616d6f756e7404000000e803000001")
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
data/spec/testnet_spec.rb
CHANGED
@@ -6,7 +6,9 @@ require './lib/rpc/rpc_client.rb'
|
|
6
6
|
# Ip Address taken from Testnet
|
7
7
|
# client = Casper::RpcClient.new("65.21.227.101") # IP is taken from "TestNet"
|
8
8
|
# client = Casper::RpcClient.new("138.201.54.44") # IP is taken from "TestNet"
|
9
|
-
client = Casper::RpcClient.new("5.9.23.55") # IP is taken from "TestNet"
|
9
|
+
# client = Casper::RpcClient.new("5.9.23.55") # IP is taken from "TestNet"
|
10
|
+
client = Casper::RpcClient.new("65.21.235.219") # IP is taken from "TestNet"
|
11
|
+
|
10
12
|
|
11
13
|
# block_Hash taken from Testnet
|
12
14
|
block_hash = "71e19e2e9629c716dc9578066cfeceace559d32fe51b08245ddd4d218f8c18da"
|
@@ -250,8 +252,8 @@ describe Casper::RpcClient do
|
|
250
252
|
expect(peers_from_info_get_status.size).to be > 0
|
251
253
|
end
|
252
254
|
|
253
|
-
it "passes, node public key is :
|
254
|
-
our_public_signing_key = "
|
255
|
+
it "passes, node public key is : 01ac58a7b87cd67f03b1ccf371a1f3979efb6ddafb9fbb7b59096ed5a6425eccc3" do
|
256
|
+
our_public_signing_key = "01ac58a7b87cd67f03b1ccf371a1f3979efb6ddafb9fbb7b59096ed5a6425eccc3"
|
255
257
|
expect(node_status[:our_public_signing_key]).to eql(our_public_signing_key)
|
256
258
|
end
|
257
259
|
end
|