casper_network 0.2.0 → 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 +4 -4
  2. data/CONTRIBUTING.md +1 -0
  3. data/LICENSE +201 -0
  4. data/README.md +165 -0
  5. data/SECURITY.md +12 -0
  6. data/lib/casper_network.rb +253 -178
  7. data/lib/crypto/00_asymmetric_key.rb +95 -0
  8. data/lib/crypto/01_ed25519.rb +67 -0
  9. data/lib/crypto/asymmetric_key.rb +87 -0
  10. data/lib/crypto/ed25519_key.rb +44 -0
  11. data/lib/crypto/key_pair.rb +40 -0
  12. data/lib/crypto/keys.rb +7 -0
  13. data/lib/crypto/secp256k1_key.rb +0 -0
  14. data/lib/crypto/test_ed25519_key.rb +44 -0
  15. data/lib/entity/account.rb +45 -0
  16. data/lib/entity/action_thresholds.rb +25 -0
  17. data/lib/entity/associated_key.rb +24 -0
  18. data/lib/entity/auction_state.rb +36 -0
  19. data/lib/entity/bid.rb +24 -0
  20. data/lib/entity/bid_info.rb +51 -0
  21. data/lib/entity/contract.rb +47 -0
  22. data/lib/entity/contract_package.rb +41 -0
  23. data/lib/entity/contract_version.rb +33 -0
  24. data/lib/entity/delegator.rb +37 -0
  25. data/lib/entity/deploy.rb +44 -0
  26. data/lib/entity/deploy_approval.rb +24 -0
  27. data/lib/entity/deploy_executable.rb +162 -0
  28. data/lib/entity/deploy_executable_item_internal.rb +26 -0
  29. data/lib/entity/deploy_executable_transfer.rb +50 -0
  30. data/lib/entity/deploy_hash.rb +16 -0
  31. data/lib/entity/deploy_header.rb +60 -0
  32. data/lib/entity/deploy_info.rb +44 -0
  33. data/lib/entity/deploy_named_argument.rb +19 -0
  34. data/lib/entity/deploy_transfer.rb +10 -0
  35. data/lib/entity/disabled_version.rb +26 -0
  36. data/lib/entity/era_info.rb +18 -0
  37. data/lib/entity/era_summary.rb +44 -0
  38. data/lib/entity/era_validator.rb +23 -0
  39. data/lib/entity/executable_deploy_item.rb +11 -0
  40. data/lib/entity/group.rb +25 -0
  41. data/lib/entity/module_bytes.rb +50 -0
  42. data/lib/entity/peer.rb +25 -0
  43. data/lib/entity/seigniorage_allocation.rb +18 -0
  44. data/lib/entity/stored_contract_by_hash.rb +50 -0
  45. data/lib/entity/stored_contract_by_name.rb +50 -0
  46. data/lib/entity/stored_value.rb +57 -0
  47. data/lib/entity/stored_versioned_contract_by_hash.rb +61 -0
  48. data/lib/entity/stored_versioned_contract_by_name.rb +61 -0
  49. data/lib/entity/transfer.rb +65 -0
  50. data/lib/entity/validator_weight.rb +23 -0
  51. data/lib/entity/vesting_schedule.rb +22 -0
  52. data/lib/include.rb +18 -0
  53. data/lib/rpc/rpc.rb +227 -0
  54. data/lib/rpc/rpc_client.rb +233 -0
  55. data/lib/rpc/rpc_error.rb +79 -0
  56. data/lib/serialization/cl_type_serializer.rb +76 -0
  57. data/lib/serialization/cl_value_bytes_parsers.rb +498 -0
  58. data/lib/serialization/cl_value_serializer.rb +259 -0
  59. data/lib/serialization/deploy_approval_serializer.rb +15 -0
  60. data/lib/serialization/deploy_executable_serializer.rb +26 -0
  61. data/lib/serialization/deploy_header_serializer.rb +49 -0
  62. data/lib/serialization/deploy_named_arg_serializer.rb +19 -0
  63. data/lib/serialization/deploy_serializer.rb +268 -0
  64. data/lib/serialization/test.rb +431 -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 +119 -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 +162 -7
@@ -0,0 +1,162 @@
1
+ require_relative './deploy_named_argument.rb'
2
+ require_relative './module_bytes.rb'
3
+ require_relative './deploy_executable_transfer.rb'
4
+
5
+ module Casper
6
+ module Entity
7
+ class DeployExecutable
8
+ attr_accessor :module_bytes, :transfer, :stored_contract_by_hash, :stored_contract_by_name,
9
+ :stored_versioned_contract_by_hash, :stored_versioned_contract_by_name
10
+ def initialize
11
+ @module_bytes = nil
12
+ @stored_contract_by_hash = nil
13
+ @stored_contract_by_name = nil
14
+ @stored_versioned_contract_by_hash = nil
15
+ @stored_versioned_contract_by_name = nil
16
+ @transfer = nil
17
+ end
18
+
19
+ def standard_payment(payment_amount)
20
+ @module_bytes = ModuleBytes.new("", [])
21
+ arg = DeployNamedArgument.new("amount", CLu512.new(payment_amount))
22
+ @module_bytes.set_arg(arg) # => Add arg and return args
23
+ @module_bytes
24
+ end
25
+
26
+ # @param [Integer] id
27
+ # @param [Integer] amount
28
+ # @param [CLURef | CLPublicKey] target
29
+ # @param [CLURef | CLPublicKey] source_purse
30
+ # @return [DeployExecutable]
31
+ def new_transfer(id, amount, target, source_purse = nil)
32
+ if target.instance_of? CLURef
33
+ @target = target
34
+ elsif target.instance_of? CLPublicKey
35
+ @target = target.to_account_hash_byte_array
36
+ else
37
+ raise ArgumentError.new("Please specify target")
38
+ end
39
+ arg1 = DeployNamedArgument.new("amount", CLu512.new(amount))
40
+ # arg2 = DeployNamedArgument.new("target", @target)
41
+ @transfer = DeployExecutableTransfer.new([])
42
+ # @transfer.set_arg(DeployNamedArgument.new("target", @target))
43
+ # @transfer.set_arg(arg1)
44
+ # @transfer.set_arg(arg2)
45
+ # @transfer
46
+
47
+ if source_purse != nil
48
+ @transfer.set_arg(DeployNamedArgument.new("source", source_purse))
49
+ # @transfer
50
+ end
51
+ @transfer.set_arg(DeployNamedArgument.new("target", @target))
52
+ @transfer.set_arg(DeployNamedArgument.new("id", CLu64.new(id)))
53
+ @transfer
54
+ end
55
+
56
+ def set_module_bytes(module_bytes)
57
+ @module_bytes = module_bytes
58
+ end
59
+
60
+ # @return [ModuleBytes] module_bytes
61
+ def get_module_bytes
62
+ @module_bytes
63
+ end
64
+
65
+ # @return [Boolean]
66
+ def module_bytes?
67
+ @module_bytes != nil
68
+ end
69
+
70
+ # @param [DeployExecutableTransfer] transfer
71
+ def set_transfer(transfer)
72
+ @transfer = transfer
73
+ end
74
+
75
+ def get_transfer
76
+ @transfer
77
+ end
78
+
79
+ # @return [Boolean]
80
+ def transfer?
81
+ @transfer != nil
82
+ end
83
+
84
+ # @param [StoredContractByHash] transfer
85
+ def set_stored_contract_by_hash(stored_contract_by_hash)
86
+ @stored_contract_by_hash = stored_contract_by_hash
87
+ end
88
+
89
+ def get_stored_contract_by_hash
90
+ @stored_contract_by_hash
91
+ end
92
+
93
+ # @return [Boolean]
94
+ def stored_contract_by_hash?
95
+ @stored_contract_by_hash != nil
96
+ end
97
+
98
+ # @param [StoredContractByName] stored_contract_by_name
99
+ def set_stored_contract_by_name(stored_contract_by_name)
100
+ @stored_contract_by_name = stored_contract_by_name
101
+ end
102
+
103
+ def get_stored_contract_by_name
104
+ @stored_contract_by_name
105
+ end
106
+
107
+ # @return [Boolean]
108
+ def stored_contract_by_name?
109
+ @stored_contract_by_name != nil
110
+ end
111
+
112
+ # @param [StoredVersionedContractByHash] stored_contract_by_name
113
+ def set_stored_versioned_contract_by_hash(stored_versioned_contract_by_hash)
114
+ @stored_versioned_contract_by_hash = stored_versioned_contract_by_hash
115
+ end
116
+
117
+ def get_stored_versioned_contract_by_hash
118
+ @stored_versioned_contract_by_hash
119
+ end
120
+
121
+ # @return [Boolean]
122
+ def stored_versioned_contract_by_hash?
123
+ @stored_versioned_contract_by_hash != nil
124
+ end
125
+
126
+ # @param [StoredVersionedContractByName] stored_contract_by_name
127
+ def set_stored_versioned_contract_by_name(stored_versioned_contract_by_name)
128
+ @stored_versioned_contract_by_name = stored_versioned_contract_by_name
129
+ end
130
+
131
+ def get_stored_versioned_contract_by_name
132
+ @stored_versioned_contract_by_name
133
+ end
134
+
135
+ # @return [Boolean]
136
+ def stored_versioned_contract_by_name?
137
+ @stored_versioned_contract_by_name != nil
138
+ end
139
+
140
+ def to_bytes
141
+ if module_bytes?
142
+ @module_bytes.to_bytes
143
+ elsif stored_contract_by_name?
144
+ @stored_contract_by_name.to_bytes
145
+ elsif stored_contract_by_hash?
146
+ @stored_contract_by_hash.to_bytes
147
+ elsif stored_contract_by_name?
148
+ @stored_contract_by_name.to_bytes
149
+ elsif stored_versioned_contract_by_hash?
150
+ @stored_versioned_contract_by_hash.to_bytes
151
+ elsif stored_versioned_contract_by_name?
152
+ @stored_versioned_contract_by_name.to_bytes
153
+ elsif stored_versioned_contract_by_hash?
154
+ @stored_versioned_contract_by_hash.to_bytes
155
+ elsif transfer?
156
+ @transfer.to_bytes
157
+ end
158
+ raise "failed to serialize ExecutableDeployItemJsonWrapper"
159
+ end
160
+ end
161
+ end
162
+ end
@@ -0,0 +1,26 @@
1
+ require_relative './deploy_named_argument.rb'
2
+
3
+ module Casper
4
+ module Entity
5
+ class DeployExecutableItemInternal
6
+ attr_accessor :args
7
+ def initialize(deploy_named_args = [])
8
+ @args = deploy_named_args
9
+ end
10
+
11
+ # @return [Array<DeployNamedArg>]
12
+ def get_args
13
+ @args
14
+ end
15
+
16
+ # @return [DeployNamedArg]
17
+ def get_arg_by_name(arg)
18
+ @args.include?(arg) == true ? arg : nil
19
+ end
20
+
21
+ def set_arg(deploy_named_arg)
22
+ @args << [deploy_named_arg]
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,50 @@
1
+ require_relative './deploy_executable_item_internal.rb'
2
+
3
+ =begin
4
+ "Transfer": {
5
+ "args": [
6
+ [
7
+ "amount",
8
+ {
9
+ "cl_type": "I32",
10
+ "bytes": "e8030000",
11
+ "parsed": 1000
12
+ }
13
+ ]
14
+ ]
15
+ }
16
+
17
+ =end
18
+ module Casper
19
+ module Entity
20
+ class DeployExecutableTransfer < DeployExecutableItemInternal
21
+
22
+ # @param [Array<Array<DeployNamedArgument>>] args
23
+ def initialize(args)
24
+ @tag = 5
25
+ @args = args
26
+ end
27
+
28
+ def get_tag
29
+ @tag
30
+ end
31
+
32
+ def get_args
33
+ @args
34
+ end
35
+
36
+ def to_bytes
37
+ serializer = DeployNamedArgSerializer.new
38
+ num_of_args = @args.length
39
+ bytes = Utils::ByteUtils.to_u8(@tag) + Utils::ByteUtils.to_u32(num_of_args)
40
+
41
+ @args.each do |arg|
42
+ arg.each do |item|
43
+ bytes += serializer.to_bytes(item)
44
+ end
45
+ end
46
+ Utils::ByteUtils.hex_to_byte_array(bytes)
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,16 @@
1
+ module Casper
2
+ module Entity
3
+ class DeployHash
4
+
5
+ # @param [String] hash
6
+ def initialize(hash)
7
+ @hash = hash
8
+ end
9
+
10
+ # @return [String] hash
11
+ def get_hash
12
+ @hash
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,60 @@
1
+ module Casper
2
+ module Entity
3
+ class DeployHeader
4
+
5
+ # @param [Hash] header
6
+ # @option header [String] :account
7
+ # @option header [Integer] :timestamp
8
+ # @option header [Integer] :ttl
9
+ # @option header [Integer] :gas_price
10
+ # @option header [String] :body_hash
11
+ # @option header [Array] :dependencies
12
+ # @option header [String] :chain_name
13
+ def initialize(header = {})
14
+ @account = header[:account]
15
+ @timestamp = header[:timestamp]
16
+ @ttl = header[:ttl]
17
+ @gas_price = header[:gas_price]
18
+ @body_hash = header[:body_hash]
19
+ @dependencies = header[:dependencies]
20
+ @chain_name = header[:chain_name]
21
+ end
22
+
23
+
24
+ # @return [String] account
25
+ def get_account
26
+ @account
27
+ end
28
+
29
+ # @return [Integer] timestamp
30
+ def get_timestamp
31
+ @timestamp
32
+ end
33
+
34
+ # @return [Integer] ttl
35
+ def get_ttl
36
+ @ttl
37
+ end
38
+
39
+ # @return [Integer] gas_price
40
+ def get_gas_price
41
+ @gas_price
42
+ end
43
+
44
+ # @return [String] body_hash
45
+ def get_body_hash
46
+ @body_hash
47
+ end
48
+
49
+ # @return [Array] dependencies
50
+ def get_dependencies
51
+ @dependencies
52
+ end
53
+
54
+ # @return [String] chain_name
55
+ def get_chain_name
56
+ @chain_name
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,44 @@
1
+ module Casper
2
+ module Entity
3
+ class DeployInfo
4
+
5
+ # @param [String] hash
6
+ # @param [Array] transfers
7
+ # @param [String] from
8
+ # @param [String] source
9
+ # @param [String] gas
10
+ def initialize(hash, transfers, from, source, gas)
11
+ @hash = hash
12
+ @transfers = transfers
13
+ @from = from
14
+ @source = source
15
+ @gas = gas
16
+ end
17
+
18
+ # @return [String] hash
19
+ def get_hash
20
+ @hash
21
+ end
22
+
23
+ # @return [Array] transfers
24
+ def get_transfers
25
+ @transfers
26
+ end
27
+
28
+ # @return [String] from
29
+ def get_from
30
+ @from
31
+ end
32
+
33
+ # @return [String] source
34
+ def get_source
35
+ @source
36
+ end
37
+
38
+ # @return [String] gas
39
+ def get_gas
40
+ @gas
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,19 @@
1
+ module Casper
2
+ module Entity
3
+ class DeployNamedArgument
4
+
5
+ def initialize(name, clvalue)
6
+ @name = name
7
+ @value = clvalue
8
+ end
9
+
10
+ def get_name
11
+ @name
12
+ end
13
+
14
+ def get_value
15
+ @value
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,10 @@
1
+ module Casper
2
+ module Entity
3
+ class DeployTransfer
4
+
5
+ def initialize
6
+ end
7
+
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,26 @@
1
+ module Casper
2
+ module Entity
3
+
4
+ # A disabled version of a contract.
5
+ class DisabledVersion
6
+
7
+ # @param [Integer] protocol_version_major
8
+ # @param [Integer] contract_version
9
+ def initialize(protocol_version_major, contract_version)
10
+ @protocol_version_major = protocol_version_major
11
+ @contract_version = contract_version
12
+ end
13
+
14
+ # @return [Integer] protocol_version_major
15
+ def get_protocol_version_major
16
+ @protocol_version_major
17
+ end
18
+
19
+ # @return [Integer] contract_version
20
+ def get_contract_version
21
+ @contract_version
22
+ end
23
+
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,18 @@
1
+ module Casper
2
+ module Entity
3
+
4
+ # Auction metadata, intended to be recorded each era.
5
+ class EraInfo
6
+
7
+ # @param [Array] seigniorage_allocations rewards list allocated to validators and delegators
8
+ def initialize(seigniorage_allocations)
9
+ @seigniorage_allocations = seigniorage_allocations
10
+ end
11
+
12
+ # @return [Array]
13
+ def get_seigniorage_allocations
14
+ @seigniorage_allocations
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,44 @@
1
+ module Casper
2
+ module Entity
3
+ class EraSummary
4
+
5
+ # @param [String] block_hash_
6
+ # @param [Integer] era_id_
7
+ # @param [StoredValue] stored_value_
8
+ # @param [String] state_root_hash_
9
+ # @param [String] merkle_proof_
10
+ def initialize(block_hash_, era_id_, stored_value_, state_root_hash_, merkle_proof_)
11
+ @block_hash = block_hash_
12
+ @era_id = era_id_
13
+ @stored_value = stored_value_
14
+ @state_root_hash = state_root_hash_
15
+ @merkle_proof = merkle_proof_
16
+ end
17
+
18
+ # @return [String] block_hash
19
+ def get_block_hash
20
+ @block_hash
21
+ end
22
+
23
+ # @return [Integer] era_id
24
+ def get_era_id
25
+ @era_id
26
+ end
27
+
28
+ # @return [StoredValue] StoredValue
29
+ def get_stored_value
30
+ @stored_value
31
+ end
32
+
33
+ # @return [String] state_root_hash
34
+ def get_state_root_hash
35
+ @state_root_hash
36
+ end
37
+
38
+ # @return [String] merkle_proof
39
+ def get_merkle_proof
40
+ @merkle_proof
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,23 @@
1
+ module Casper
2
+ module Entity
3
+ class EraValidator
4
+
5
+ # @param [Integer] era_id
6
+ # @param [Array<ValidatorWeight>] validator_weights
7
+ def initialize(era_id, validator_weights)
8
+ @era_id = era_id
9
+ @validator_weights = validator_weights
10
+ end
11
+
12
+ # @return [Integer] era_id
13
+ def get_era_id
14
+ @era_id
15
+ end
16
+
17
+ # @return [Array<ValidatorWeight>] validator_weights
18
+ def get_validator_weights
19
+ @validator_weights
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,11 @@
1
+ module Casper
2
+ module Entity
3
+
4
+ class ExecutableDeployItem
5
+
6
+ def initialize
7
+ end
8
+
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,25 @@
1
+ module Casper
2
+ module Entity
3
+
4
+ class Group
5
+
6
+ # @param [String] group
7
+ # @param [Array<CLURef>] keys
8
+ def initialize(group, keys)
9
+ @group = group
10
+ @keys = keys
11
+ end
12
+
13
+ # @return [String] group
14
+ def get_group
15
+ @group
16
+ end
17
+
18
+ # @return [Array<CLURef>] keys
19
+ def get_keys
20
+ @keys
21
+ end
22
+
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,50 @@
1
+ require_relative './deploy_executable_item_internal.rb'
2
+
3
+ module Casper
4
+ module Entity
5
+ class ModuleBytes < DeployExecutableItemInternal
6
+
7
+ # @param [String] module_bytes
8
+ # @param [Array<Array<DeployNamedArgument>>] args
9
+ def initialize(module_bytes=nil, args = [])
10
+ @tag = 0
11
+ @module_bytes = module_bytes
12
+ @args = args
13
+ end
14
+
15
+ def get_tag
16
+ @tag
17
+ end
18
+
19
+ def get_module_bytes
20
+ @module_bytes
21
+ end
22
+
23
+ def get_args
24
+ @args
25
+ end
26
+
27
+ def set_arg(deploy_named_arg)
28
+ @args << [deploy_named_arg]
29
+ end
30
+
31
+ def to_bytes
32
+ bytes = ""
33
+ serializer = DeployNamedArgSerializer.new
34
+ num_of_args = @args.length
35
+ bytes += Utils::ByteUtils.to_u8(@tag)
36
+
37
+ if @module_bytes == ""
38
+ bytes += Utils::ByteUtils.to_u32(0)
39
+ end
40
+ bytes += Utils::ByteUtils.to_u32(num_of_args)
41
+ @args.each do |arg|
42
+ arg.each do |item|
43
+ bytes += serializer.to_bytes(item)
44
+ end
45
+ end
46
+ Utils::ByteUtils.hex_to_byte_array(bytes)
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,25 @@
1
+ module Casper
2
+ module Entity
3
+ class Peer
4
+
5
+ # @param [Hash] peer
6
+ # @option peer [String] :node_id
7
+ # @option peer [String] :address
8
+ def initialize(peer = {})
9
+ @node_id = peer[:node_id]
10
+ @address = peer[:address]
11
+ end
12
+
13
+ # @return [String] node_id
14
+ def get_node_id
15
+ @node_id
16
+ end
17
+
18
+ # @return [String] address
19
+ def get_address
20
+ @address
21
+ end
22
+ end
23
+ end
24
+ end
25
+
@@ -0,0 +1,18 @@
1
+ module Casper
2
+ module Entity
3
+
4
+ # Information about seigniorage allocation.
5
+ class SeigniorageAllocation
6
+
7
+ # @param [Array] seigniorage_allocations rewards list allocated to validators and delegators
8
+ def initialize(seigniorage_allocations)
9
+ @seigniorage_allocations = seigniorage_allocations
10
+ end
11
+
12
+ # @return [Array]
13
+ def get_seigniorage_allocations
14
+ @seigniorage_allocations
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,50 @@
1
+ require_relative './deploy_executable_item_internal.rb'
2
+
3
+ module Casper
4
+ module Entity
5
+ class StoredContractByHash < DeployExecutableItemInternal
6
+
7
+ # @param [String] hash
8
+ # @param [String] entry_point
9
+ # @param [Array<Array<DeployNamedArgument>>] args
10
+ def initialize(hash, entry_point, args)
11
+ @tag = 1
12
+ @hash = hash
13
+ @entry_point = entry_point
14
+ @args = args
15
+ end
16
+
17
+ def get_tag
18
+ @tag
19
+ end
20
+
21
+ def get_hash
22
+ @hash
23
+ end
24
+
25
+ def get_entry_point
26
+ @entry_point
27
+ end
28
+
29
+ def get_args
30
+ @args
31
+ end
32
+
33
+ def to_bytes
34
+ serializer = DeployNamedArgSerializer.new
35
+ num_of_args = @args.length
36
+ bytes = Utils::ByteUtils.to_u8(@tag)
37
+ bytes += @hash
38
+ bytes += CLValueBytesParsers::CLStringBytesParser.to_bytes(@entry_point)
39
+ bytes += Utils::ByteUtils.to_u32(num_of_args)
40
+ @args.each do |arg|
41
+ arg.each do |item|
42
+ bytes += serializer.to_bytes(item)
43
+ end
44
+ end
45
+ Utils::ByteUtils.hex_to_byte_array(bytes)
46
+ end
47
+
48
+ end
49
+ end
50
+ end