casper_network 0.2.1 → 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 (125) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +15 -4
  3. data/lib/casper_network.rb +62 -7
  4. data/lib/crypto/00_asymmetric_key.rb +95 -0
  5. data/lib/crypto/01_ed25519.rb +67 -0
  6. data/lib/crypto/asymmetric_key.rb +87 -0
  7. data/lib/crypto/ed25519_key.rb +44 -0
  8. data/lib/crypto/key_pair.rb +40 -0
  9. data/lib/crypto/keys.rb +7 -0
  10. data/lib/crypto/secp256k1_key.rb +0 -0
  11. data/lib/crypto/test_ed25519_key.rb +44 -0
  12. data/lib/entity/account.rb +45 -0
  13. data/lib/entity/action_thresholds.rb +25 -0
  14. data/lib/entity/associated_key.rb +24 -0
  15. data/lib/entity/contract.rb +47 -0
  16. data/lib/entity/contract_package.rb +41 -0
  17. data/lib/entity/contract_version.rb +33 -0
  18. data/lib/entity/deploy_approval.rb +7 -6
  19. data/lib/entity/deploy_executable.rb +154 -1
  20. data/lib/entity/deploy_executable_item_internal.rb +26 -0
  21. data/lib/entity/deploy_executable_transfer.rb +50 -0
  22. data/lib/entity/deploy_header.rb +17 -15
  23. data/lib/entity/deploy_info.rb +44 -0
  24. data/lib/entity/deploy_named_argument.rb +19 -0
  25. data/lib/entity/deploy_transfer.rb +10 -0
  26. data/lib/entity/disabled_version.rb +26 -0
  27. data/lib/entity/era_info.rb +18 -0
  28. data/lib/entity/executable_deploy_item.rb +11 -0
  29. data/lib/entity/group.rb +25 -0
  30. data/lib/entity/module_bytes.rb +50 -0
  31. data/lib/entity/seigniorage_allocation.rb +18 -0
  32. data/lib/entity/stored_contract_by_hash.rb +50 -0
  33. data/lib/entity/stored_contract_by_name.rb +50 -0
  34. data/lib/entity/stored_value.rb +57 -0
  35. data/lib/entity/stored_versioned_contract_by_hash.rb +61 -0
  36. data/lib/entity/stored_versioned_contract_by_name.rb +61 -0
  37. data/lib/entity/transfer.rb +65 -0
  38. data/lib/entity/vesting_schedule.rb +22 -0
  39. data/lib/include.rb +18 -0
  40. data/lib/rpc/rpc.rb +227 -0
  41. data/lib/rpc/rpc_client.rb +45 -39
  42. data/lib/serialization/cl_type_serializer.rb +76 -0
  43. data/lib/serialization/cl_value_bytes_parsers.rb +498 -0
  44. data/lib/serialization/cl_value_serializer.rb +259 -0
  45. data/lib/serialization/deploy_approval_serializer.rb +15 -0
  46. data/lib/serialization/deploy_executable_serializer.rb +26 -0
  47. data/lib/serialization/deploy_header_serializer.rb +49 -0
  48. data/lib/serialization/deploy_named_arg_serializer.rb +19 -0
  49. data/lib/serialization/deploy_serializer.rb +268 -0
  50. data/lib/serialization/test.rb +431 -0
  51. data/lib/types/cl_account_hash.rb +24 -0
  52. data/lib/types/cl_account_hash_type.rb +22 -0
  53. data/lib/types/cl_any.rb +25 -0
  54. data/lib/types/cl_any_type.rb +22 -0
  55. data/lib/types/cl_bool.rb +32 -0
  56. data/lib/types/cl_bool_type.rb +35 -0
  57. data/lib/types/cl_byte_array.rb +25 -0
  58. data/lib/types/cl_byte_array_type.rb +27 -0
  59. data/lib/types/cl_i32.rb +26 -0
  60. data/lib/types/cl_i32_type.rb +26 -0
  61. data/lib/types/cl_i64.rb +26 -0
  62. data/lib/types/cl_i64_type.rb +27 -0
  63. data/lib/types/cl_key.rb +39 -0
  64. data/lib/types/cl_key_type.rb +27 -0
  65. data/lib/types/cl_list.rb +25 -0
  66. data/lib/types/cl_list_type.rb +26 -0
  67. data/lib/types/cl_map.rb +25 -0
  68. data/lib/types/cl_map_type.rb +26 -0
  69. data/lib/types/cl_option.rb +33 -0
  70. data/lib/types/cl_option_type.rb +52 -0
  71. data/lib/types/cl_public_key.rb +152 -0
  72. data/lib/types/cl_public_key_type.rb +26 -0
  73. data/lib/types/cl_result.rb +25 -0
  74. data/lib/types/cl_result_type.rb +26 -0
  75. data/lib/types/cl_string.rb +39 -0
  76. data/lib/types/cl_string_type.rb +32 -0
  77. data/lib/types/cl_tuple.rb +151 -0
  78. data/lib/types/cl_tuple_type.rb +108 -0
  79. data/lib/types/cl_type.rb +94 -0
  80. data/lib/types/cl_type_tag.rb +51 -0
  81. data/lib/types/cl_u128.rb +26 -0
  82. data/lib/types/cl_u128_type.rb +26 -0
  83. data/lib/types/cl_u256.rb +26 -0
  84. data/lib/types/cl_u256_type.rb +26 -0
  85. data/lib/types/cl_u32.rb +26 -0
  86. data/lib/types/cl_u32_type.rb +26 -0
  87. data/lib/types/cl_u512.rb +26 -0
  88. data/lib/types/cl_u512_type.rb +26 -0
  89. data/lib/types/cl_u64.rb +26 -0
  90. data/lib/types/cl_u64_type.rb +27 -0
  91. data/lib/types/cl_u8.rb +26 -0
  92. data/lib/types/cl_u8_type.rb +26 -0
  93. data/lib/types/cl_unit.rb +38 -0
  94. data/lib/types/cl_unit_type.rb +22 -0
  95. data/lib/types/cl_uref.rb +119 -0
  96. data/lib/types/cl_uref_type.rb +46 -0
  97. data/lib/types/cl_value.rb +10 -0
  98. data/lib/types/constants.rb +50 -0
  99. data/lib/types/error.rb +7 -0
  100. data/lib/utils/base_16.rb +18 -0
  101. data/lib/utils/byte_utils.rb +107 -0
  102. data/lib/utils/find_byte_parser_by_cl_type.rb +53 -0
  103. data/lib/utils/hash_utils.rb +19 -0
  104. data/lib/utils/hex_utils.rb +12 -0
  105. data/lib/utils/time_utils.rb +85 -0
  106. data/lib/utils/utils.rb +2 -0
  107. data/lib/version.rb +3 -0
  108. data/spec/a_spec.rb +697 -0
  109. data/spec/byte_utils_spec.rb +72 -0
  110. data/spec/cl_public_spec.rb +169 -0
  111. data/spec/cl_types_spec.rb +715 -0
  112. data/spec/cl_value_serializer_spec.rb +140 -0
  113. data/spec/client_spec.rb +20 -20
  114. data/spec/crypto_spec.rb +42 -0
  115. data/spec/deploy_approval_serializer_spec.rb +26 -0
  116. data/spec/deploy_executable_serializer_spec.rb +0 -0
  117. data/spec/deploy_header_serializer_spec.rb +21 -0
  118. data/spec/deploy_named_arg_serializer_spec.rb +49 -0
  119. data/spec/deploy_serializer_spec.rb +77 -0
  120. data/spec/deploy_serializer_test_spec.rb +225 -0
  121. data/spec/mainnet_spec.rb +8 -8
  122. data/spec/string_spec.rb +68 -0
  123. data/spec/testnet_spec.rb +11 -11
  124. data/spec/time_utils_spec.rb +87 -0
  125. metadata +130 -2
@@ -0,0 +1,47 @@
1
+ module Casper
2
+ module Entity
3
+
4
+ # Contract entity class
5
+ class Contract
6
+
7
+ # @param [String] contract_package_hash
8
+ # @param [String] contract_wasm_hash
9
+ # @param [Array] entry_points
10
+ # @param [Array] named_keys
11
+ # @param [String] protocol_version
12
+ def initialize(contract_package_hash, contract_wasm_hash, named_keys, entry_points, protocol_version)
13
+ @contract_package_hash = contract_package_hash
14
+ @contract_wasm_hash = contract_wasm_hash
15
+ @entry_points = entry_points
16
+ @named_keys = named_keys
17
+ @protocol_version = protocol_version
18
+ end
19
+
20
+ # @return [String] contract_package_hash
21
+ def get_contract_package_hash
22
+ @contract_package_hash
23
+ end
24
+
25
+ # @return [String] contract_wasm_hash
26
+ def get_contract_wasm_hash
27
+ @contract_wasm_hash
28
+ end
29
+
30
+ # @return [Array] entry_points
31
+ def get_entry_points
32
+ @entry_points
33
+ end
34
+
35
+ # @return [Array] named_keys
36
+ def get_named_keys
37
+ @named_keys
38
+ end
39
+
40
+ # @return [String] protocol_version
41
+ def get_protocol_version
42
+ @protocol_version
43
+ end
44
+
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,41 @@
1
+ module Casper
2
+ module Entity
3
+
4
+ # Contract definition, metadata and security container.
5
+ class ContractPackage
6
+
7
+ # @param [CLURef] access_key
8
+ # @param [ContractVersion] versions
9
+ # @param [DisabledVersion] disabled_versions
10
+ # @param [Group] groups
11
+ def initialize(access_key, versions, disabled_versions, groups)
12
+ @access_key = access_key
13
+ @versions = versions
14
+ @disabled_versions = disabled_versions
15
+ @groups = groups
16
+ end
17
+
18
+ # @return [CLURef] access_key
19
+ def get_access_key
20
+ @access_key
21
+ end
22
+
23
+ # @return [ContractVersion] versions
24
+ def get_versions
25
+ @versions
26
+ end
27
+
28
+ # @return [DisabledVersion] versions
29
+ def get_disabled_versions
30
+ @disabled_versions
31
+ end
32
+
33
+ # @return [Group] groups
34
+ def get_groups
35
+ @groups
36
+ end
37
+
38
+
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,33 @@
1
+ module Casper
2
+ module Entity
3
+
4
+ # The version of the contract.
5
+ class ContractVersion
6
+
7
+ # @param [Integer] protocol_version_major
8
+ # @param [Integer] contract_version
9
+ # @param [String] contract_hash
10
+ def initialize(protocol_version_major, contract_version, contract_hash)
11
+ @protocol_version_major = protocol_version_major
12
+ @contract_version = contract_version
13
+ @contract_hash = contract_hash
14
+ end
15
+
16
+ # @return [Integer] protocol_version_major
17
+ def get_protocol_version_major
18
+ @protocol_version_major
19
+ end
20
+
21
+ # @return [Integer] contract_version
22
+ def get_contract_version
23
+ @contract_version
24
+ end
25
+
26
+ # @return [String] contract_hash
27
+ def get_contract_hash
28
+ @contract_hash
29
+ end
30
+
31
+ end
32
+ end
33
+ end
@@ -1,12 +1,13 @@
1
1
  module Casper
2
2
  module Entity
3
3
  class DeployApproval
4
-
5
- # @param [String] signer
6
- # @param [String] signature
7
- def initialize(signer, signature)
8
- @signer = signer
9
- @signature = signature
4
+
5
+ # @param [Hash] approval
6
+ # @option approval [String] :signer
7
+ # @option approval [String] :signature
8
+ def initialize(approval = {})
9
+ @signer = approval[:signer]
10
+ @signature = approval[:signature]
10
11
  end
11
12
 
12
13
  # @return [String] signer
@@ -1,8 +1,161 @@
1
+ require_relative './deploy_named_argument.rb'
2
+ require_relative './module_bytes.rb'
3
+ require_relative './deploy_executable_transfer.rb'
4
+
1
5
  module Casper
2
6
  module Entity
3
7
  class DeployExecutable
4
-
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
5
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"
6
159
  end
7
160
  end
8
161
  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
@@ -2,23 +2,25 @@ module Casper
2
2
  module Entity
3
3
  class DeployHeader
4
4
 
5
- # @param [String] account
6
- # @param [Integer] timestamp
7
- # @param [Integer] ttl
8
- # @param [Integer] gas_price
9
- # @param [String] body_hash
10
- # @param [Array] dependencies
11
- # @param [String] chain_name
12
- def initialize(account, timestamp, ttl, gas_price, body_hash, dependencies, chain_name)
13
- @account = account
14
- @timestamp = timestamp
15
- @ttl = ttl
16
- @gas_price = gas_price
17
- @body_hash = body_hash
18
- @dependencies = dependencies
19
- @chain_name = chain_name
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]
20
21
  end
21
22
 
23
+
22
24
  # @return [String] account
23
25
  def get_account
24
26
  @account
@@ -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,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,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