test_sdk1 1.0.3 → 1.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +478 -89
- data/lib/crypto/asymmetric_key.rb +19 -18
- data/lib/crypto/ed25519_key.rb +99 -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 +108 -6
- 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 +69 -2
- data/lib/entity/era_summary.rb +13 -12
- data/lib/entity/module_bytes.rb +16 -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/cl_value_serializer1.rb +314 -0
- data/lib/serialization/cl_value_serializer_update.rb +320 -0
- data/lib/serialization/deploy_header_serializer.rb +1 -0
- data/lib/serialization/deploy_named_arg_serializer.rb +1 -0
- data/lib/serialization/deploy_serializer.rb +144 -10
- data/lib/serialization/deploy_serializer1.rb +392 -0
- data/lib/serialization/deploy_serializer_update.rb +397 -0
- data/lib/serialization/test.rb +33 -13
- data/lib/test_sdk1.rb +29 -10
- data/lib/types/cl_option.rb +8 -2
- 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 +16 -1
- data/spec/dene_spec.rb +186 -0
- data/spec/deploy_executable_spec.rb +90 -0
- data/spec/deploy_executable_test_spec.rb +117 -0
- data/spec/deploy_serializer_spec.rb +5 -3
- data/spec/deploy_serializer_test_spec.rb +7 -1
- data/spec/testnet_spec.rb +3 -1
- data/spec/time_utils_spec.rb +3 -0
- metadata +20 -5
- data/lib/crypto/key_pair.rb +0 -40
- data/spec/deploy_executable_serializer_spec.rb +0 -0
data/lib/version.rb
CHANGED
@@ -69,6 +69,16 @@ 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
|
+
puts serializer.to_bytes(u512_2)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
72
82
|
describe "CLString Value Serializer" do
|
73
83
|
let (:str1) { CLString.new("Hello, Casper!") }
|
74
84
|
it "should serialize CLString values" do
|
@@ -133,8 +143,13 @@ describe CLValueSerializer do
|
|
133
143
|
describe "CLUnit Value Serializer" do
|
134
144
|
let(:unit) {CLUnit.new()}
|
135
145
|
it "should serialize CLUnit values" do
|
136
|
-
puts serializer.to_bytes(unit)
|
146
|
+
# puts serializer.to_bytes(unit)
|
137
147
|
expect(serializer.to_bytes(unit)).to eql("0000000009")
|
148
|
+
serializer = CLValueSerializer.new
|
149
|
+
clvalue = CLOption.new(CLi32.new(-10))
|
150
|
+
puts serializer.to_bytes(clvalue)
|
138
151
|
end
|
139
152
|
end
|
153
|
+
|
154
|
+
|
140
155
|
end
|
data/spec/dene_spec.rb
ADDED
@@ -0,0 +1,186 @@
|
|
1
|
+
require_relative '../lib/types/cl_string.rb'
|
2
|
+
require_relative '../lib/types/cl_bool.rb'
|
3
|
+
require_relative '../lib/types/cl_i32.rb'
|
4
|
+
require_relative '../lib/types/cl_i64.rb'
|
5
|
+
require_relative '../lib/types/cl_u8.rb'
|
6
|
+
require_relative '../lib/types/cl_u32.rb'
|
7
|
+
require_relative '../lib/types/cl_u64.rb'
|
8
|
+
require_relative '../lib/types/cl_u128.rb'
|
9
|
+
require_relative '../lib/types/cl_u256.rb'
|
10
|
+
require_relative '../lib/types/cl_u512.rb'
|
11
|
+
require_relative '../lib/types/cl_unit.rb'
|
12
|
+
require_relative '../lib/types/cl_tuple.rb'
|
13
|
+
require_relative '../lib/types/cl_uref.rb'
|
14
|
+
require_relative '../lib/types/cl_public_key.rb'
|
15
|
+
require_relative '../lib/types/constants.rb'
|
16
|
+
require_relative '../lib/serialization/cl_value_bytes_parsers.rb'
|
17
|
+
require_relative '../lib/serialization/cl_value_serializer.rb'
|
18
|
+
require_relative '../lib/entity/deploy_executable.rb'
|
19
|
+
require_relative '../lib/entity/stored_contract_by_hash.rb'
|
20
|
+
require_relative '../lib/entity/stored_contract_by_name.rb'
|
21
|
+
require_relative '../lib/entity/stored_versioned_contract_by_hash.rb'
|
22
|
+
require_relative '../lib/entity/stored_versioned_contract_by_name.rb'
|
23
|
+
require_relative '../lib/entity/deploy_executable_transfer.rb'
|
24
|
+
require_relative '../lib/entity/deploy.rb'
|
25
|
+
require_relative '../lib/entity/deploy_hash.rb'
|
26
|
+
require_relative '../lib/serialization/deploy_serializer.rb'
|
27
|
+
require 'json'
|
28
|
+
|
29
|
+
RSpec.describe CLValueSerializer do
|
30
|
+
it "***************** TEST *************************" do
|
31
|
+
serializer = CLValueSerializer.new
|
32
|
+
|
33
|
+
clvalue = CLString.new("Hello, World!")
|
34
|
+
puts "#{clvalue.to_bytes(clvalue.get_value)}"
|
35
|
+
puts CLString.to_bytes(clvalue)
|
36
|
+
puts CLValueBytesParsers::CLStringBytesParser.to_bytes(clvalue.get_value)
|
37
|
+
# puts "#{CLValueBytesParsers::CLStringBytesParser.from_bytes("0e0000006361737065722d6578616d706c65")}: 0e0000006361737065722d6578616d706c65"
|
38
|
+
expect(CLString.to_bytes(clvalue)).to eql("0d00000048656c6c6f2c20576f726c6421")
|
39
|
+
expect(CLValueBytesParsers::CLStringBytesParser.to_bytes(clvalue.get_value)).to eql("0d00000048656c6c6f2c20576f726c6421")
|
40
|
+
expect(clvalue.to_bytes(clvalue.get_value)).to eql("0d00000048656c6c6f2c20576f726c6421")
|
41
|
+
|
42
|
+
# clvalue = CLu32.new(1024)
|
43
|
+
puts serializer.to_bytes(clvalue)
|
44
|
+
MIN_U32 = 0
|
45
|
+
MAX_U32 = 2.pow(32) - 1
|
46
|
+
clvalue = CLu32.new(1024)
|
47
|
+
puts serializer.to_bytes(clvalue)
|
48
|
+
clvalue = CLu32.new(MIN_U32)
|
49
|
+
puts serializer.to_bytes(clvalue)
|
50
|
+
clvalue = CLu32.new(MAX_U32)
|
51
|
+
puts serializer.to_bytes(clvalue)
|
52
|
+
|
53
|
+
puts serializer.to_bytes(CLOption.new(CLu32.new(MIN_U32)))
|
54
|
+
# => "0500000001000000000d04"
|
55
|
+
|
56
|
+
|
57
|
+
# Important!!!!!!! Need a Fix
|
58
|
+
clvalue = CLu512.new(123456789101112131415)
|
59
|
+
puts serializer.to_bytes(clvalue)
|
60
|
+
|
61
|
+
clvalue = CLu512.new(2500000000)
|
62
|
+
puts serializer.to_bytes(clvalue)
|
63
|
+
# => "050000000400f9029508"
|
64
|
+
|
65
|
+
|
66
|
+
clvalue = CLTuple2.new([CLu32.new(127), CLString.new("ABCDE")])
|
67
|
+
puts serializer.to_bytes(clvalue)
|
68
|
+
# => 0d0000007f00000005000000414243444513040a
|
69
|
+
|
70
|
+
# Important!!!!!!! Need a Fix
|
71
|
+
clvalue = CLOption.new(CLTuple2.new([CLu32.new(127), CLString.new("ABCDE")]))
|
72
|
+
puts serializer.to_bytes(clvalue)
|
73
|
+
|
74
|
+
# ModuleBytes
|
75
|
+
args = []
|
76
|
+
arg1 = Casper::Entity::DeployNamedArgument.new("amount", CLu512.new(2500000000))
|
77
|
+
args << [arg1]
|
78
|
+
module_bytes = Casper::Entity::ModuleBytes.new("", args)
|
79
|
+
puts Utils::ByteUtils.byte_array_to_hex(module_bytes.to_bytes)
|
80
|
+
expect(Utils::ByteUtils.byte_array_to_hex(module_bytes.to_bytes)).to eql("00000000000100000006000000616d6f756e74050000000400f9029508")
|
81
|
+
|
82
|
+
args = []
|
83
|
+
|
84
|
+
# StoredContractByHash
|
85
|
+
arg1 = Casper::Entity::DeployNamedArgument.new("quantity", CLi32.new(1000))
|
86
|
+
args << [arg1]
|
87
|
+
stored_contract_by_hash = Casper::Entity::StoredContractByHash.new("c4c411864f7b717c27839e56f6f1ebe5da3f35ec0043f437324325d65a22afa4", "pclphXwfYmCmdITj8hnh", args)
|
88
|
+
# puts Utils::ByteUtils.byte_array_to_hex(stored_contract_by_hash.to_bytes)
|
89
|
+
expect(Utils::ByteUtils.byte_array_to_hex(stored_contract_by_hash.to_bytes)).to eql("01c4c411864f7b717c27839e56f6f1ebe5da3f35ec0043f437324325d65a22afa41400000070636c7068587766596d436d6449546a38686e6801000000080000007175616e7469747904000000e803000001")
|
90
|
+
|
91
|
+
args = []
|
92
|
+
|
93
|
+
# StoredContractByName
|
94
|
+
arg1 = Casper::Entity::DeployNamedArgument.new("quantity", CLi32.new(1000))
|
95
|
+
args << [arg1]
|
96
|
+
stored_contract_by_name = Casper::Entity::StoredContractByName.new("casper-example", "example-entry-point", args)
|
97
|
+
puts Utils::ByteUtils.byte_array_to_hex(stored_contract_by_name.to_bytes)
|
98
|
+
expect(Utils::ByteUtils.byte_array_to_hex(stored_contract_by_name.to_bytes)).to eql("020e0000006361737065722d6578616d706c65130000006578616d706c652d656e7472792d706f696e7401000000080000007175616e7469747904000000e803000001")
|
99
|
+
|
100
|
+
args = []
|
101
|
+
|
102
|
+
# StoredVersionedContractByHash
|
103
|
+
arg1 = Casper::Entity::DeployNamedArgument.new("test", CLString.new("Hello, World!"))
|
104
|
+
args << [arg1]
|
105
|
+
stored_versioned_contract_by_hash = Casper::Entity::StoredVersionedContractByHash.new("b348fdd0d0b3f66468687df93141b5924f6bb957d5893c08b60d5a78d0b9a423", nil, "PsLz5c7JsqT8BK8ll0kF", args)
|
106
|
+
puts Utils::ByteUtils.byte_array_to_hex(stored_versioned_contract_by_hash.to_bytes)
|
107
|
+
expect(Utils::ByteUtils.byte_array_to_hex(stored_versioned_contract_by_hash.to_bytes)).to eql("03b348fdd0d0b3f66468687df93141b5924f6bb957d5893c08b60d5a78d0b9a423001400000050734c7a3563374a73715438424b386c6c306b46010000000400000074657374110000000d00000048656c6c6f2c20576f726c64210a")
|
108
|
+
|
109
|
+
args = []
|
110
|
+
|
111
|
+
# StoredVersionedContractByName
|
112
|
+
arg1 = Casper::Entity::DeployNamedArgument.new("test", CLString.new("Hello, World!"))
|
113
|
+
args << [arg1]
|
114
|
+
stored_versioned_contract_by_name = Casper::Entity::StoredVersionedContractByName.new("test-contract", nil, "PsLz5c7JsqT8BK8ll0kF", args)
|
115
|
+
puts Utils::ByteUtils.byte_array_to_hex(stored_versioned_contract_by_name.to_bytes)
|
116
|
+
expect(Utils::ByteUtils.byte_array_to_hex(stored_versioned_contract_by_name.to_bytes)).to eql("040d000000746573742d636f6e7472616374001400000050734c7a3563374a73715438424b386c6c306b46010000000400000074657374110000000d00000048656c6c6f2c20576f726c64210a")
|
117
|
+
|
118
|
+
|
119
|
+
# DeployExecutableTransfer
|
120
|
+
args = []
|
121
|
+
arg1 = Casper::Entity::DeployNamedArgument.new("amount", CLi32.new(1000))
|
122
|
+
args << [arg1]
|
123
|
+
transfer = Casper::Entity::DeployExecutableTransfer.new(args)
|
124
|
+
puts Utils::ByteUtils.byte_array_to_hex(transfer.to_bytes)
|
125
|
+
expect(Utils::ByteUtils.byte_array_to_hex(transfer.to_bytes)).to eql("050100000006000000616d6f756e7404000000e803000001")
|
126
|
+
|
127
|
+
# Serialization of Deploy objects
|
128
|
+
serializer = DeploySerializer.new
|
129
|
+
serialized_deploy = "01d9bf2148748a85c89da5aad8ee0b0fc2d105fd39d41a4c796536354f0ae2900ca856a4d37501000080ee36000000000001000000000000004811966d37fe5674a8af4001884ea0d9042d1c06668da0c963769c3a01ebd08f0100000001010101010101010101010101010101010101010101010101010101010101010e0000006361737065722d6578616d706c6501da3c604f71e0e7df83ff1ab4ef15bb04de64ca02e3d2b78de6950e8b5ee187020e0000006361737065722d6578616d706c65130000006578616d706c652d656e7472792d706f696e7401000000080000007175616e7469747904000000e803000001050100000006000000616d6f756e7404000000e8030000010100000001d9bf2148748a85c89da5aad8ee0b0fc2d105fd39d41a4c796536354f0ae2900c012dbf03817a51794a8e19e0724884075e6d1fbec326b766ecfa6658b41f81290da85e23b24e88b1c8d9761185c961daee1adab0649912a6477bcd2e69bd91bd08"
|
130
|
+
json_deploy = '{
|
131
|
+
"hash": "01da3c604f71e0e7df83ff1ab4ef15bb04de64ca02e3d2b78de6950e8b5ee187",
|
132
|
+
"header": {
|
133
|
+
"account": "01d9bf2148748a85c89da5aad8ee0b0fc2d105fd39d41a4c796536354f0ae2900c",
|
134
|
+
"timestamp": "2020-11-17T00:39:24.072Z",
|
135
|
+
"ttl": "1h",
|
136
|
+
"gas_price": 1,
|
137
|
+
"body_hash": "4811966d37fe5674a8af4001884ea0d9042d1c06668da0c963769c3a01ebd08f",
|
138
|
+
"dependencies": [
|
139
|
+
"0101010101010101010101010101010101010101010101010101010101010101"
|
140
|
+
],
|
141
|
+
"chain_name": "casper-example"
|
142
|
+
},
|
143
|
+
"payment": {
|
144
|
+
"StoredContractByName": {
|
145
|
+
"name": "casper-example",
|
146
|
+
"entry_point": "example-entry-point",
|
147
|
+
"args": [
|
148
|
+
[
|
149
|
+
"quantity",
|
150
|
+
{
|
151
|
+
"cl_type": "I32",
|
152
|
+
"bytes": "e8030000",
|
153
|
+
"parsed": 1000
|
154
|
+
}
|
155
|
+
]
|
156
|
+
]
|
157
|
+
}
|
158
|
+
},
|
159
|
+
"session": {
|
160
|
+
"Transfer": {
|
161
|
+
"args": [
|
162
|
+
[
|
163
|
+
"amount",
|
164
|
+
{
|
165
|
+
"cl_type": "I32",
|
166
|
+
"bytes": "e8030000",
|
167
|
+
"parsed": 1000
|
168
|
+
}
|
169
|
+
]
|
170
|
+
]
|
171
|
+
}
|
172
|
+
},
|
173
|
+
"approvals": [
|
174
|
+
{
|
175
|
+
"signer": "01d9bf2148748a85c89da5aad8ee0b0fc2d105fd39d41a4c796536354f0ae2900c",
|
176
|
+
"signature": "012dbf03817a51794a8e19e0724884075e6d1fbec326b766ecfa6658b41f81290da85e23b24e88b1c8d9761185c961daee1adab0649912a6477bcd2e69bd91bd08"
|
177
|
+
}
|
178
|
+
]
|
179
|
+
}'
|
180
|
+
h_deploy = JSON.parse(json_deploy)
|
181
|
+
h_deploy.deep_symbolize_keys!
|
182
|
+
deploy = Casper::Entity::Deploy.new(h_deploy[:hash], h_deploy[:header], h_deploy[:payment], h_deploy[:session], h_deploy[:approvals])
|
183
|
+
puts Utils::ByteUtils.byte_array_to_hex(serializer.to_bytes(deploy))
|
184
|
+
expect(Utils::ByteUtils.byte_array_to_hex(serializer.to_bytes(deploy))).to eql(serialized_deploy)
|
185
|
+
end
|
186
|
+
end
|
@@ -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
|
@@ -0,0 +1,117 @@
|
|
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
|
+
h1 = {
|
21
|
+
"hash": "3755a8f1734923b1eb57c71d012d01973d1c85858eb0e0eb56f0f30c591a9bd6",
|
22
|
+
"header": {
|
23
|
+
"ttl": "30m",
|
24
|
+
"account": "01ccee19366eaf03487cb81197ae8edcb1b47f214cee00d6597380096b9f8463c1",
|
25
|
+
"body_hash": "42751eb696c9ed4d11715f03fe8e053065ce671991d808b6870e2a1e49fe356c",
|
26
|
+
"gas_price": 1,
|
27
|
+
"timestamp": "2022-10-11T22:50:00.000Z",
|
28
|
+
"chain_name": "casper-test",
|
29
|
+
"dependencies": []
|
30
|
+
},
|
31
|
+
"payment": {
|
32
|
+
"ModuleBytes": {
|
33
|
+
"args": [
|
34
|
+
[
|
35
|
+
"amount",
|
36
|
+
{
|
37
|
+
"bytes": "0400f90295",
|
38
|
+
"parsed": "2500000000",
|
39
|
+
"cl_type": "U512"
|
40
|
+
}
|
41
|
+
]
|
42
|
+
],
|
43
|
+
"module_bytes": ""
|
44
|
+
}
|
45
|
+
},
|
46
|
+
"session": {
|
47
|
+
"Transfer": {
|
48
|
+
"args": [
|
49
|
+
[
|
50
|
+
"amount",
|
51
|
+
{
|
52
|
+
"bytes": "0400f90295",
|
53
|
+
"parsed": "2500000000",
|
54
|
+
"cl_type": "U512"
|
55
|
+
}
|
56
|
+
],
|
57
|
+
[
|
58
|
+
"target",
|
59
|
+
{
|
60
|
+
"bytes": "01fe58ff1043c90607cfcb5f99e33900e8bfab5f3b18c44078eef9c82dab9126f3",
|
61
|
+
"parsed": "01fe58ff1043c90607cfcb5f99e33900e8bfab5f3b18c44078eef9c82dab9126f3",
|
62
|
+
"cl_type": "PublicKey"
|
63
|
+
}
|
64
|
+
],
|
65
|
+
[
|
66
|
+
"id",
|
67
|
+
{
|
68
|
+
"bytes": "010100000000000000",
|
69
|
+
"parsed": 1,
|
70
|
+
"cl_type": {
|
71
|
+
"Option": "U64"
|
72
|
+
}
|
73
|
+
}
|
74
|
+
]
|
75
|
+
]
|
76
|
+
}
|
77
|
+
},
|
78
|
+
"approvals": [
|
79
|
+
{
|
80
|
+
"signer": "01ccee19366eaf03487cb81197ae8edcb1b47f214cee00d6597380096b9f8463c1",
|
81
|
+
"signature": "013945ac2e025344509c1241ca1aa724b95d0830ab15b24ffdafd6b4ebb833456eb72ae6a33af2c87bafec14dafc07373b4aa6d5cbe4152e0d792095fce951870f"
|
82
|
+
}
|
83
|
+
]
|
84
|
+
}
|
85
|
+
|
86
|
+
let(:hash) {Casper::Entity::DeployHash.new(h1[:hash])}
|
87
|
+
let(:header) {Casper::Entity::DeployHeader.new(h1[:header])}
|
88
|
+
let(:session) {h1[:session]}
|
89
|
+
let(:payment) {h1[:payment]}
|
90
|
+
|
91
|
+
it "Serialize Deploy Executable" do
|
92
|
+
deploy = Casper::Entity::Deploy.new(h1[:hash], h1[:header], h1[:payment], h1[:session], h1[:approvals])
|
93
|
+
|
94
|
+
# deploy_serializer = DeploySerializer.new
|
95
|
+
|
96
|
+
# deploy_serialized_to_bytes = deploy_serializer.to_bytes(deploy)
|
97
|
+
|
98
|
+
|
99
|
+
deploy_executable = Casper::Entity::DeployExecutable.new(payment)
|
100
|
+
# puts deploy_executable.module_bytes.get_module_bytes
|
101
|
+
# puts deploy_executable.module_bytes.get_args
|
102
|
+
puts deploy_executable.get_module_bytes
|
103
|
+
puts deploy_executable.to_bytes
|
104
|
+
|
105
|
+
puts "Session is called...."
|
106
|
+
executable_transfer = Casper::Entity::DeployExecutable.new(session)
|
107
|
+
puts executable_transfer
|
108
|
+
puts executable_transfer.transfer?
|
109
|
+
transfer = executable_transfer.transfer
|
110
|
+
puts transfer
|
111
|
+
# puts transfer.get_args[0][0].get_name
|
112
|
+
# puts transfer.get_args[0][0].get_value
|
113
|
+
puts transfer.to_bytes
|
114
|
+
# puts transfer.to_bytes
|
115
|
+
end
|
116
|
+
|
117
|
+
end
|
@@ -20,7 +20,7 @@ describe DeploySerializer do
|
|
20
20
|
let(:serializer) { DeploySerializer.new }
|
21
21
|
it "should serialize Deploy" do
|
22
22
|
serialized_deploy = "01d9bf2148748a85c89da5aad8ee0b0fc2d105fd39d41a4c796536354f0ae2900ca856a4d37501000080ee36000000000001000000000000004811966d37fe5674a8af4001884ea0d9042d1c06668da0c963769c3a01ebd08f0100000001010101010101010101010101010101010101010101010101010101010101010e0000006361737065722d6578616d706c6501da3c604f71e0e7df83ff1ab4ef15bb04de64ca02e3d2b78de6950e8b5ee187020e0000006361737065722d6578616d706c65130000006578616d706c652d656e7472792d706f696e7401000000080000007175616e7469747904000000e803000001050100000006000000616d6f756e7404000000e8030000010100000001d9bf2148748a85c89da5aad8ee0b0fc2d105fd39d41a4c796536354f0ae2900c012dbf03817a51794a8e19e0724884075e6d1fbec326b766ecfa6658b41f81290da85e23b24e88b1c8d9761185c961daee1adab0649912a6477bcd2e69bd91bd08"
|
23
|
-
json_deploy = {
|
23
|
+
json_deploy = '{
|
24
24
|
"hash": "01da3c604f71e0e7df83ff1ab4ef15bb04de64ca02e3d2b78de6950e8b5ee187",
|
25
25
|
"header": {
|
26
26
|
"account": "01d9bf2148748a85c89da5aad8ee0b0fc2d105fd39d41a4c796536354f0ae2900c",
|
@@ -69,8 +69,10 @@ describe DeploySerializer do
|
|
69
69
|
"signature": "012dbf03817a51794a8e19e0724884075e6d1fbec326b766ecfa6658b41f81290da85e23b24e88b1c8d9761185c961daee1adab0649912a6477bcd2e69bd91bd08"
|
70
70
|
}
|
71
71
|
]
|
72
|
-
}
|
73
|
-
|
72
|
+
}'
|
73
|
+
h_deploy = JSON.parse(json_deploy)
|
74
|
+
h_deploy.deep_symbolize_keys!
|
75
|
+
deploy = Casper::Entity::Deploy.new(h_deploy[:hash], h_deploy[:header], h_deploy[:payment], h_deploy[:session], h_deploy[:approvals])
|
74
76
|
# puts Utils::ByteUtils.hex_to_byte_array(serializer.to_bytes(deploy))
|
75
77
|
expect(Utils::ByteUtils.byte_array_to_hex(serializer.to_bytes(deploy))).to eql(serialized_deploy)
|
76
78
|
end
|
@@ -12,12 +12,15 @@ RSpec.describe Utils::TimeUtils do
|
|
12
12
|
|
13
13
|
it "should serialize Deploy" do
|
14
14
|
ms = time_utils.to_epoc_ms("2020-11-17T00:39:24.072Z")
|
15
|
+
puts ms
|
15
16
|
timestamp_serialized = byte_utils.to_u64(ms)
|
16
17
|
puts "timestamp_serialized: #{timestamp_serialized}"
|
17
18
|
|
18
19
|
ttl_serialized = byte_utils.to_u64(3600000)
|
19
20
|
# ttl_serialized = byte_utils.to_u64(1603994401469)
|
20
|
-
puts "ttl_serialized: #{ttl_serialized}"
|
21
|
+
puts "ttl_serialized 3600000: #{ttl_serialized}"
|
22
|
+
ttl_serialized = byte_utils.to_u64(1603994401469)
|
23
|
+
puts "ttl_serialized 1603994401469: #{ttl_serialized}"
|
21
24
|
|
22
25
|
gas_price_serialized = byte_utils.to_u64(1)
|
23
26
|
puts "gas_price_serialized: #{gas_price_serialized}"
|
@@ -219,7 +222,10 @@ RSpec.describe Utils::TimeUtils do
|
|
219
222
|
puts "lWJWKdZUEudSakJzw1tn: " + CLValueBytesParsers::CLStringBytesParser.to_bytes("lWJWKdZUEudSakJzw1tn")
|
220
223
|
puts "S1cXRT3E1jyFlWBAIVQ8: " + CLValueBytesParsers::CLStringBytesParser.to_bytes("S1cXRT3E1jyFlWBAIVQ8")
|
221
224
|
puts "CLi32.new(1000): " + serializer.to_bytes(CLi32.new(1000))
|
225
|
+
puts "target: " + CLValueBytesParsers::CLStringBytesParser.to_bytes("target")
|
222
226
|
end
|
223
227
|
end
|
228
|
+
|
229
|
+
|
224
230
|
end
|
225
231
|
|
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"
|
data/spec/time_utils_spec.rb
CHANGED
@@ -11,6 +11,8 @@ RSpec.describe Utils::TimeUtils do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
it "should convert iso datetime to ms from unix epoch" do
|
14
|
+
timestamp = "2022-10-11T21:30:00.000Z"
|
15
|
+
puts "timestamp value: #{time_utils.to_epoc_ms(timestamp)}"
|
14
16
|
date = "2020-11-17T00:39:24.072Z"
|
15
17
|
expect(time_utils.to_epoc_ms(date)).to eql(1605573564072)
|
16
18
|
end
|
@@ -18,6 +20,7 @@ RSpec.describe Utils::TimeUtils do
|
|
18
20
|
it "should convert miliseconds to iso datetime" do
|
19
21
|
date = "2020-11-17T00:39:24.072Z"
|
20
22
|
milliseconds = 1605573564072
|
23
|
+
# puts time_utils.to_iso_string(1640908800555) == "2021-12-31T00:00:00.555Z"
|
21
24
|
expect(time_utils.to_iso_string(milliseconds)).to eql("2020-11-17T00:39:24.072Z")
|
22
25
|
end
|
23
26
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: test_sdk1
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mehmet Sait Gülmez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-10-19 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Ruby gem enables developers to interact with the Casper Network.
|
14
14
|
email: cenggulmez.65@gmail.com
|
@@ -24,8 +24,8 @@ files:
|
|
24
24
|
- lib/crypto/01_ed25519.rb
|
25
25
|
- lib/crypto/asymmetric_key.rb
|
26
26
|
- lib/crypto/ed25519_key.rb
|
27
|
-
- lib/crypto/key_pair.rb
|
28
27
|
- lib/crypto/keys.rb
|
28
|
+
- lib/crypto/keys_util.rb
|
29
29
|
- lib/crypto/secp256k1_key.rb
|
30
30
|
- lib/crypto/test_ed25519_key.rb
|
31
31
|
- lib/entity/account.rb
|
@@ -34,6 +34,11 @@ files:
|
|
34
34
|
- lib/entity/auction_state.rb
|
35
35
|
- lib/entity/bid.rb
|
36
36
|
- lib/entity/bid_info.rb
|
37
|
+
- lib/entity/block.rb
|
38
|
+
- lib/entity/block_body.rb
|
39
|
+
- lib/entity/block_header.rb
|
40
|
+
- lib/entity/block_info.rb
|
41
|
+
- lib/entity/block_proof.rb
|
37
42
|
- lib/entity/contract.rb
|
38
43
|
- lib/entity/contract_package.rb
|
39
44
|
- lib/entity/contract_version.rb
|
@@ -57,6 +62,7 @@ files:
|
|
57
62
|
- lib/entity/module_bytes.rb
|
58
63
|
- lib/entity/peer.rb
|
59
64
|
- lib/entity/seigniorage_allocation.rb
|
65
|
+
- lib/entity/status.rb
|
60
66
|
- lib/entity/stored_contract_by_hash.rb
|
61
67
|
- lib/entity/stored_contract_by_name.rb
|
62
68
|
- lib/entity/stored_value.rb
|
@@ -72,11 +78,15 @@ files:
|
|
72
78
|
- lib/serialization/cl_type_serializer.rb
|
73
79
|
- lib/serialization/cl_value_bytes_parsers.rb
|
74
80
|
- lib/serialization/cl_value_serializer.rb
|
81
|
+
- lib/serialization/cl_value_serializer1.rb
|
82
|
+
- lib/serialization/cl_value_serializer_update.rb
|
75
83
|
- lib/serialization/deploy_approval_serializer.rb
|
76
84
|
- lib/serialization/deploy_executable_serializer.rb
|
77
85
|
- lib/serialization/deploy_header_serializer.rb
|
78
86
|
- lib/serialization/deploy_named_arg_serializer.rb
|
79
87
|
- lib/serialization/deploy_serializer.rb
|
88
|
+
- lib/serialization/deploy_serializer1.rb
|
89
|
+
- lib/serialization/deploy_serializer_update.rb
|
80
90
|
- lib/serialization/test.rb
|
81
91
|
- lib/test_sdk1.rb
|
82
92
|
- lib/types/cl_account_hash.rb
|
@@ -132,6 +142,7 @@ files:
|
|
132
142
|
- lib/utils/byte_utils.rb
|
133
143
|
- lib/utils/find_byte_parser_by_cl_type.rb
|
134
144
|
- lib/utils/hash_utils.rb
|
145
|
+
- lib/utils/helpers.rb
|
135
146
|
- lib/utils/hex_utils.rb
|
136
147
|
- lib/utils/time_utils.rb
|
137
148
|
- lib/utils/utils.rb
|
@@ -143,8 +154,10 @@ files:
|
|
143
154
|
- spec/cl_value_serializer_spec.rb
|
144
155
|
- spec/client_spec.rb
|
145
156
|
- spec/crypto_spec.rb
|
157
|
+
- spec/dene_spec.rb
|
146
158
|
- spec/deploy_approval_serializer_spec.rb
|
147
|
-
- spec/
|
159
|
+
- spec/deploy_executable_spec.rb
|
160
|
+
- spec/deploy_executable_test_spec.rb
|
148
161
|
- spec/deploy_header_serializer_spec.rb
|
149
162
|
- spec/deploy_named_arg_serializer_spec.rb
|
150
163
|
- spec/deploy_serializer_spec.rb
|
@@ -185,8 +198,10 @@ test_files:
|
|
185
198
|
- spec/cl_value_serializer_spec.rb
|
186
199
|
- spec/client_spec.rb
|
187
200
|
- spec/crypto_spec.rb
|
201
|
+
- spec/dene_spec.rb
|
188
202
|
- spec/deploy_approval_serializer_spec.rb
|
189
|
-
- spec/
|
203
|
+
- spec/deploy_executable_spec.rb
|
204
|
+
- spec/deploy_executable_test_spec.rb
|
190
205
|
- spec/deploy_header_serializer_spec.rb
|
191
206
|
- spec/deploy_named_arg_serializer_spec.rb
|
192
207
|
- spec/deploy_serializer_spec.rb
|
data/lib/crypto/key_pair.rb
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
require 'ed25519'
|
2
|
-
|
3
|
-
|
4
|
-
signing_key = Ed25519::SigningKey.generate
|
5
|
-
puts "signing_key:\t #{signing_key}"
|
6
|
-
|
7
|
-
message = "hello"
|
8
|
-
signature = signing_key.sign(message)
|
9
|
-
puts "signature:\t #{signature}"
|
10
|
-
|
11
|
-
verify_key = signing_key.verify_key
|
12
|
-
puts "verify_key:\t #{verify_key}"
|
13
|
-
|
14
|
-
check_validity_of_signature = verify_key.verify(signature, message)
|
15
|
-
puts "check_validity_of_signature:\t #{check_validity_of_signature}"
|
16
|
-
|
17
|
-
# Serializing Keys
|
18
|
-
signature_key_bytes = signing_key.to_bytes
|
19
|
-
puts "signature_key_bytes:\t #{signature_key_bytes}"
|
20
|
-
verify_key_bytes = verify_key.to_bytes
|
21
|
-
puts "verify_key_bytes:\t #{verify_key_bytes}"
|
22
|
-
|
23
|
-
signing_key = Ed25519::SigningKey.new(signature_key_bytes)
|
24
|
-
puts "signing_key:\t #{signing_key}"
|
25
|
-
verify_key = Ed25519::VerifyKey.new(verify_key_bytes)
|
26
|
-
puts "verify_key:\t #{verify_key}"
|
27
|
-
|
28
|
-
|
29
|
-
require "ssh_data"
|
30
|
-
|
31
|
-
# key_data = File.read("/home/mehmet/Desktop/casper-ruby-sdk/lib/crypto/id_ed25519")
|
32
|
-
# key = SSHData::PrivateKey.parse_openssh(key_data)
|
33
|
-
#=> <SSHData::PrivateKey::ED25519>
|
34
|
-
|
35
|
-
# SSHData::PrivateKey::ED25519.generate
|
36
|
-
#=> raises SSHData::AlgorithmError
|
37
|
-
|
38
|
-
|
39
|
-
# SSHData::PrivateKey::ED25519.generate
|
40
|
-
#=> <SSHData::PrivateKey::ED25519>
|
File without changes
|