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
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: casper_network
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.2
|
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
|
@@ -21,20 +21,22 @@ files:
|
|
21
21
|
- README.md
|
22
22
|
- SECURITY.md
|
23
23
|
- lib/casper_network.rb
|
24
|
-
- lib/crypto/00_asymmetric_key.rb
|
25
|
-
- lib/crypto/01_ed25519.rb
|
26
24
|
- lib/crypto/asymmetric_key.rb
|
25
|
+
- lib/crypto/ed25519.rb
|
27
26
|
- lib/crypto/ed25519_key.rb
|
28
|
-
- lib/crypto/key_pair.rb
|
29
27
|
- lib/crypto/keys.rb
|
30
|
-
- lib/crypto/
|
31
|
-
- lib/crypto/test_ed25519_key.rb
|
28
|
+
- lib/crypto/keys_util.rb
|
32
29
|
- lib/entity/account.rb
|
33
30
|
- lib/entity/action_thresholds.rb
|
34
31
|
- lib/entity/associated_key.rb
|
35
32
|
- lib/entity/auction_state.rb
|
36
33
|
- lib/entity/bid.rb
|
37
34
|
- lib/entity/bid_info.rb
|
35
|
+
- lib/entity/block.rb
|
36
|
+
- lib/entity/block_body.rb
|
37
|
+
- lib/entity/block_header.rb
|
38
|
+
- lib/entity/block_info.rb
|
39
|
+
- lib/entity/block_proof.rb
|
38
40
|
- lib/entity/contract.rb
|
39
41
|
- lib/entity/contract_package.rb
|
40
42
|
- lib/entity/contract_version.rb
|
@@ -53,11 +55,11 @@ files:
|
|
53
55
|
- lib/entity/era_info.rb
|
54
56
|
- lib/entity/era_summary.rb
|
55
57
|
- lib/entity/era_validator.rb
|
56
|
-
- lib/entity/executable_deploy_item.rb
|
57
58
|
- lib/entity/group.rb
|
58
59
|
- lib/entity/module_bytes.rb
|
59
60
|
- lib/entity/peer.rb
|
60
61
|
- lib/entity/seigniorage_allocation.rb
|
62
|
+
- lib/entity/status.rb
|
61
63
|
- lib/entity/stored_contract_by_hash.rb
|
62
64
|
- lib/entity/stored_contract_by_name.rb
|
63
65
|
- lib/entity/stored_value.rb
|
@@ -78,9 +80,6 @@ files:
|
|
78
80
|
- lib/serialization/deploy_header_serializer.rb
|
79
81
|
- lib/serialization/deploy_named_arg_serializer.rb
|
80
82
|
- lib/serialization/deploy_serializer.rb
|
81
|
-
- lib/serialization/test.rb
|
82
|
-
- lib/types/cl_account_hash.rb
|
83
|
-
- lib/types/cl_account_hash_type.rb
|
84
83
|
- lib/types/cl_any.rb
|
85
84
|
- lib/types/cl_any_type.rb
|
86
85
|
- lib/types/cl_bool.rb
|
@@ -132,26 +131,21 @@ files:
|
|
132
131
|
- lib/utils/byte_utils.rb
|
133
132
|
- lib/utils/find_byte_parser_by_cl_type.rb
|
134
133
|
- lib/utils/hash_utils.rb
|
134
|
+
- lib/utils/helpers.rb
|
135
135
|
- lib/utils/hex_utils.rb
|
136
136
|
- lib/utils/time_utils.rb
|
137
|
-
- lib/utils/utils.rb
|
138
137
|
- lib/version.rb
|
139
|
-
- spec/a_spec.rb
|
140
138
|
- spec/byte_utils_spec.rb
|
141
|
-
- spec/cl_public_spec.rb
|
142
139
|
- spec/cl_types_spec.rb
|
143
140
|
- spec/cl_value_serializer_spec.rb
|
144
141
|
- spec/client_spec.rb
|
145
|
-
- spec/crypto_spec.rb
|
146
142
|
- spec/deploy_approval_serializer_spec.rb
|
147
|
-
- spec/
|
143
|
+
- spec/deploy_executable_spec.rb
|
148
144
|
- spec/deploy_header_serializer_spec.rb
|
149
145
|
- spec/deploy_named_arg_serializer_spec.rb
|
150
146
|
- spec/deploy_serializer_spec.rb
|
151
|
-
- spec/deploy_serializer_test_spec.rb
|
152
147
|
- spec/mainnet_spec.rb
|
153
148
|
- spec/spec_helper.rb
|
154
|
-
- spec/string_spec.rb
|
155
149
|
- spec/testnet_spec.rb
|
156
150
|
- spec/time_utils_spec.rb
|
157
151
|
homepage: https://github.com/saitgulmez/casper-ruby-sdk.git
|
@@ -178,21 +172,16 @@ signing_key:
|
|
178
172
|
specification_version: 4
|
179
173
|
summary: Casper Ruby SDK
|
180
174
|
test_files:
|
181
|
-
- spec/a_spec.rb
|
182
175
|
- spec/byte_utils_spec.rb
|
183
|
-
- spec/cl_public_spec.rb
|
184
176
|
- spec/cl_types_spec.rb
|
185
177
|
- spec/cl_value_serializer_spec.rb
|
186
178
|
- spec/client_spec.rb
|
187
|
-
- spec/crypto_spec.rb
|
188
179
|
- spec/deploy_approval_serializer_spec.rb
|
189
|
-
- spec/
|
180
|
+
- spec/deploy_executable_spec.rb
|
190
181
|
- spec/deploy_header_serializer_spec.rb
|
191
182
|
- spec/deploy_named_arg_serializer_spec.rb
|
192
183
|
- spec/deploy_serializer_spec.rb
|
193
|
-
- spec/deploy_serializer_test_spec.rb
|
194
184
|
- spec/mainnet_spec.rb
|
195
185
|
- spec/spec_helper.rb
|
196
|
-
- spec/string_spec.rb
|
197
186
|
- spec/testnet_spec.rb
|
198
187
|
- spec/time_utils_spec.rb
|
@@ -1,95 +0,0 @@
|
|
1
|
-
require_relative '../utils/base_16.rb'
|
2
|
-
require_relative '../types/cl_public_key.rb'
|
3
|
-
require_relative '../utils/hex_utils.rb'
|
4
|
-
require_relative '../utils/hash_utils.rb'
|
5
|
-
|
6
|
-
CLPublicKeyTag = {
|
7
|
-
ED25519: 1,
|
8
|
-
SECP256K1: 2
|
9
|
-
}
|
10
|
-
|
11
|
-
SignatureAlgorithm = {
|
12
|
-
Ed25519: 'ed25519',
|
13
|
-
Secp256K1: 'secp256k1'
|
14
|
-
}
|
15
|
-
|
16
|
-
class AsymmetricKey
|
17
|
-
attr_reader :public_key, :private_key, :signature_algorithm
|
18
|
-
include Utils::HashUtils
|
19
|
-
# @param [CLPublicKey] public_key
|
20
|
-
# @param [Array] private_key
|
21
|
-
# @param [SignatureAlgorithm] signature_algorithm
|
22
|
-
def initialize(public_key, private_key, signature_algorithm)
|
23
|
-
@public_key = public_key
|
24
|
-
@private_key = private_key
|
25
|
-
@signature_algorithm = signature_algorithm
|
26
|
-
@tag = @public_key.get_cl_public_key_tag
|
27
|
-
end
|
28
|
-
|
29
|
-
# @return [CLPublicKey]
|
30
|
-
def get_public_key
|
31
|
-
@public_key
|
32
|
-
end
|
33
|
-
|
34
|
-
def get_signature_algorithm
|
35
|
-
@signature_algorithm
|
36
|
-
end
|
37
|
-
|
38
|
-
# Get public hex-encoded string
|
39
|
-
#
|
40
|
-
# @return [String]
|
41
|
-
def get_public_key_hex
|
42
|
-
"0#{@tag}" + Utils::Base16.encode16(@public_key.get_value)
|
43
|
-
end
|
44
|
-
|
45
|
-
# @param [CLPublicKey] public_key
|
46
|
-
# @return [String] account_hex
|
47
|
-
def account_hex(public_key)
|
48
|
-
account_hex = @public_key.to_hex
|
49
|
-
end
|
50
|
-
|
51
|
-
# @return [Array<Integer>]
|
52
|
-
def account_hash
|
53
|
-
@tag = @public_key.get_cl_public_key_tag
|
54
|
-
key_name = CLPublicKeyTag.key(@tag).to_s
|
55
|
-
prefix = key_name.downcase.unpack("C*") + [0]
|
56
|
-
bytes = prefix + @public_key.get_value
|
57
|
-
result_array = Utils::HashUtils.byte_hash(bytes)
|
58
|
-
@public_key.get_value.length == 0 ? [] : result_array
|
59
|
-
#** @public_key.to_account_hash_byte_array
|
60
|
-
end
|
61
|
-
|
62
|
-
# @param [String] path_to_private_key
|
63
|
-
def create_from_private_key_file(path_to_private_key)
|
64
|
-
puts "AsymmetricKey::create_from_private_key_file is called!"
|
65
|
-
end
|
66
|
-
|
67
|
-
# Get public key which is stored in pem
|
68
|
-
def export_public_key_in_pem
|
69
|
-
puts "AsymmetricKey::export_public_key_in_pem is called!"
|
70
|
-
end
|
71
|
-
|
72
|
-
# @param [String] message
|
73
|
-
# @return [String]
|
74
|
-
def sign(message)
|
75
|
-
puts "AsymmetricKey:sign is called!"
|
76
|
-
end
|
77
|
-
|
78
|
-
|
79
|
-
# @param [String] signature
|
80
|
-
# @param [String] message
|
81
|
-
# @return [Boolean]
|
82
|
-
def verify(signature, message)
|
83
|
-
puts "AsymmetricKey::verify is called!"
|
84
|
-
end
|
85
|
-
|
86
|
-
protected
|
87
|
-
attr_accessor :private_key
|
88
|
-
|
89
|
-
def to_pem(tag, content)
|
90
|
-
line1 = "-----BEGIN #{tag}-----\n"
|
91
|
-
line2 = "#{content}"
|
92
|
-
line3 = "-----END #{tag}-----\n"
|
93
|
-
line1 + line2 + line3
|
94
|
-
end
|
95
|
-
end
|
data/lib/crypto/01_ed25519.rb
DELETED
@@ -1,67 +0,0 @@
|
|
1
|
-
require 'openssl'
|
2
|
-
require 'ed25519'
|
3
|
-
require_relative './asymmetric_key.rb'
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
class Ed25519Key < AsymmetricKey
|
8
|
-
|
9
|
-
def initialize(public_key, private_key)
|
10
|
-
super(public_key, private_key, SignatureAlgorithm[:Ed25519])
|
11
|
-
end
|
12
|
-
|
13
|
-
# @param [Array] public_key
|
14
|
-
# @return [String]
|
15
|
-
# def self.account_hex(public_key)
|
16
|
-
# '01' + Utils::Base16.encode16(public_key)
|
17
|
-
# end
|
18
|
-
|
19
|
-
|
20
|
-
def create_from_private_key_file(path_to_private_key)
|
21
|
-
|
22
|
-
end
|
23
|
-
|
24
|
-
|
25
|
-
def parse_private_key_file(path)
|
26
|
-
end
|
27
|
-
|
28
|
-
def parse_public_key_file(path)
|
29
|
-
end
|
30
|
-
|
31
|
-
def parse_private_key(bytes)
|
32
|
-
end
|
33
|
-
|
34
|
-
def parse_public_key(bytes)
|
35
|
-
end
|
36
|
-
|
37
|
-
def read_base_64_with_pem(content)
|
38
|
-
end
|
39
|
-
|
40
|
-
# private method
|
41
|
-
def read_base_64_file(path)
|
42
|
-
end
|
43
|
-
|
44
|
-
# private
|
45
|
-
def parse_key(bytes, from, to)
|
46
|
-
end
|
47
|
-
|
48
|
-
def export_private_key_in_pem
|
49
|
-
end
|
50
|
-
|
51
|
-
def export_public_key_in_pem
|
52
|
-
end
|
53
|
-
|
54
|
-
def sign(msg)
|
55
|
-
end
|
56
|
-
|
57
|
-
def verify(signature, msg)
|
58
|
-
end
|
59
|
-
|
60
|
-
def private_to_public(private_key)
|
61
|
-
end
|
62
|
-
|
63
|
-
def load_keypair_from_private_file(private_key_path)
|
64
|
-
end
|
65
|
-
|
66
|
-
end
|
67
|
-
|
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>
|
data/lib/crypto/secp256k1_key.rb
DELETED
File without changes
|
@@ -1,44 +0,0 @@
|
|
1
|
-
require 'openssl'
|
2
|
-
require 'ed25519'
|
3
|
-
require_relative './asymmetric_key.rb'
|
4
|
-
|
5
|
-
# SignatureAlgorithm = {
|
6
|
-
# Ed25519: 'ed25519',
|
7
|
-
# Secp256K1: 'secp256k1'
|
8
|
-
# }
|
9
|
-
public_key = [
|
10
|
-
72, 211, 174, 85, 36, 108, 106, 103,
|
11
|
-
8, 124, 245, 68, 60, 206, 180, 170,
|
12
|
-
17, 175, 158, 175, 142, 32, 64, 61,
|
13
|
-
195, 38, 169, 191, 55, 231, 249, 39
|
14
|
-
]
|
15
|
-
|
16
|
-
private_key = [
|
17
|
-
236, 126, 0, 243, 8, 76, 9, 186, 180, 175, 7,
|
18
|
-
155, 21, 92, 86, 47, 12, 70, 89, 171, 48, 87,
|
19
|
-
37, 172, 174, 34, 140, 219, 24, 190, 42, 192, 72,
|
20
|
-
211, 174, 85, 36, 108, 106, 103, 8, 124, 245, 68,
|
21
|
-
60, 206, 180, 170, 17, 175, 158, 175, 142, 32, 64,
|
22
|
-
61, 195, 38, 169, 191, 55, 231, 249, 39
|
23
|
-
]
|
24
|
-
class Ed25519Key < AsymmetricKey
|
25
|
-
|
26
|
-
def initialize(public_key, private_key)
|
27
|
-
# super(keypair.public_key, keypair.secret_key, SignatureAlgorithm[:Ed25519])
|
28
|
-
super(public_key, private_key, SignatureAlgorithm[:Ed25519])
|
29
|
-
end
|
30
|
-
|
31
|
-
# Generate the account_hex for the Ed25519 public key
|
32
|
-
#
|
33
|
-
# @param [Array] public_key
|
34
|
-
# @return [String]
|
35
|
-
def account_hex(public_key)
|
36
|
-
'01' + Utils::Base16.encode16(public_key)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
ed25519 = Ed25519Key.new(public_key, private_key)
|
41
|
-
|
42
|
-
puts ed25519.account_hash(public_key)
|
43
|
-
puts ed25519.get_signature_algorithm
|
44
|
-
puts ed25519.get_public_key
|