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.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +490 -89
  3. data/lib/casper_network.rb +28 -10
  4. data/lib/crypto/asymmetric_key.rb +19 -18
  5. data/lib/crypto/ed25519.rb +114 -0
  6. data/lib/crypto/ed25519_key.rb +111 -10
  7. data/lib/crypto/keys.rb +1 -2
  8. data/lib/crypto/keys_util.rb +20 -0
  9. data/lib/entity/auction_state.rb +56 -8
  10. data/lib/entity/bid.rb +1 -1
  11. data/lib/entity/bid_info.rb +1 -1
  12. data/lib/entity/block.rb +39 -0
  13. data/lib/entity/block_body.rb +35 -0
  14. data/lib/entity/block_header.rb +81 -0
  15. data/lib/entity/block_info.rb +56 -0
  16. data/lib/entity/block_proof.rb +24 -0
  17. data/lib/entity/deploy.rb +154 -1
  18. data/lib/entity/deploy_executable.rb +50 -7
  19. data/lib/entity/deploy_executable_item_internal.rb +1 -1
  20. data/lib/entity/deploy_header.rb +17 -0
  21. data/lib/entity/deploy_named_argument.rb +61 -2
  22. data/lib/entity/era_summary.rb +13 -12
  23. data/lib/entity/module_bytes.rb +9 -2
  24. data/lib/entity/status.rb +80 -0
  25. data/lib/entity/stored_value.rb +86 -11
  26. data/lib/entity/transfer.rb +7 -7
  27. data/lib/include.rb +2 -0
  28. data/lib/serialization/cl_value_serializer.rb +69 -12
  29. data/lib/serialization/deploy_serializer.rb +129 -15
  30. data/lib/types/cl_option.rb +9 -1
  31. data/lib/types/cl_public_key.rb +2 -0
  32. data/lib/types/cl_value.rb +8 -0
  33. data/lib/utils/byte_utils.rb +28 -0
  34. data/lib/utils/helpers.rb +10 -0
  35. data/lib/version.rb +1 -1
  36. data/spec/cl_value_serializer_spec.rb +15 -1
  37. data/spec/client_spec.rb +3 -3
  38. data/spec/deploy_executable_spec.rb +90 -0
  39. data/spec/testnet_spec.rb +5 -3
  40. metadata +13 -24
  41. data/lib/crypto/00_asymmetric_key.rb +0 -95
  42. data/lib/crypto/01_ed25519.rb +0 -67
  43. data/lib/crypto/key_pair.rb +0 -40
  44. data/lib/crypto/secp256k1_key.rb +0 -0
  45. data/lib/crypto/test_ed25519_key.rb +0 -44
  46. data/lib/entity/executable_deploy_item.rb +0 -11
  47. data/lib/serialization/test.rb +0 -431
  48. data/lib/types/cl_account_hash.rb +0 -24
  49. data/lib/types/cl_account_hash_type.rb +0 -22
  50. data/lib/utils/utils.rb +0 -2
  51. data/spec/a_spec.rb +0 -697
  52. data/spec/cl_public_spec.rb +0 -169
  53. data/spec/crypto_spec.rb +0 -42
  54. data/spec/deploy_executable_serializer_spec.rb +0 -0
  55. data/spec/deploy_serializer_test_spec.rb +0 -225
  56. 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.0.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-09-20 00:00:00.000000000 Z
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/secp256k1_key.rb
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/deploy_executable_serializer_spec.rb
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/deploy_executable_serializer_spec.rb
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
@@ -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
-
@@ -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
@@ -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
@@ -1,11 +0,0 @@
1
- module Casper
2
- module Entity
3
- # Represents possible variants of an executable Deploy.
4
- class ExecutableDeployItem
5
-
6
- def initialize
7
- end
8
-
9
- end
10
- end
11
- end