casper_network 0.2.1 → 1.0.1

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 (135) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +15 -4
  3. data/lib/casper_network.rb +62 -8
  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/auction_state.rb +1 -0
  16. data/lib/entity/bid.rb +1 -0
  17. data/lib/entity/bid_info.rb +1 -0
  18. data/lib/entity/contract.rb +47 -0
  19. data/lib/entity/contract_package.rb +41 -0
  20. data/lib/entity/contract_version.rb +33 -0
  21. data/lib/entity/delegator.rb +1 -0
  22. data/lib/entity/deploy.rb +1 -0
  23. data/lib/entity/deploy_approval.rb +8 -6
  24. data/lib/entity/deploy_executable.rb +155 -1
  25. data/lib/entity/deploy_executable_item_internal.rb +27 -0
  26. data/lib/entity/deploy_executable_transfer.rb +51 -0
  27. data/lib/entity/deploy_hash.rb +1 -0
  28. data/lib/entity/deploy_header.rb +18 -15
  29. data/lib/entity/deploy_info.rb +45 -0
  30. data/lib/entity/deploy_named_argument.rb +20 -0
  31. data/lib/entity/deploy_transfer.rb +11 -0
  32. data/lib/entity/disabled_version.rb +26 -0
  33. data/lib/entity/era_info.rb +18 -0
  34. data/lib/entity/era_summary.rb +1 -0
  35. data/lib/entity/era_validator.rb +1 -0
  36. data/lib/entity/executable_deploy_item.rb +11 -0
  37. data/lib/entity/group.rb +25 -0
  38. data/lib/entity/module_bytes.rb +51 -0
  39. data/lib/entity/peer.rb +1 -0
  40. data/lib/entity/seigniorage_allocation.rb +18 -0
  41. data/lib/entity/stored_contract_by_hash.rb +51 -0
  42. data/lib/entity/stored_contract_by_name.rb +52 -0
  43. data/lib/entity/stored_value.rb +57 -0
  44. data/lib/entity/stored_versioned_contract_by_hash.rb +63 -0
  45. data/lib/entity/stored_versioned_contract_by_name.rb +63 -0
  46. data/lib/entity/transfer.rb +66 -0
  47. data/lib/entity/validator_weight.rb +1 -0
  48. data/lib/entity/vesting_schedule.rb +22 -0
  49. data/lib/include.rb +18 -0
  50. data/lib/rpc/rpc.rb +227 -0
  51. data/lib/rpc/rpc_client.rb +45 -39
  52. data/lib/rpc/rpc_error.rb +1 -0
  53. data/lib/serialization/cl_type_serializer.rb +77 -0
  54. data/lib/serialization/cl_value_bytes_parsers.rb +498 -0
  55. data/lib/serialization/cl_value_serializer.rb +260 -0
  56. data/lib/serialization/deploy_approval_serializer.rb +16 -0
  57. data/lib/serialization/deploy_executable_serializer.rb +27 -0
  58. data/lib/serialization/deploy_header_serializer.rb +49 -0
  59. data/lib/serialization/deploy_named_arg_serializer.rb +20 -0
  60. data/lib/serialization/deploy_serializer.rb +269 -0
  61. data/lib/serialization/test.rb +431 -0
  62. data/lib/types/cl_account_hash.rb +24 -0
  63. data/lib/types/cl_account_hash_type.rb +22 -0
  64. data/lib/types/cl_any.rb +25 -0
  65. data/lib/types/cl_any_type.rb +22 -0
  66. data/lib/types/cl_bool.rb +32 -0
  67. data/lib/types/cl_bool_type.rb +35 -0
  68. data/lib/types/cl_byte_array.rb +25 -0
  69. data/lib/types/cl_byte_array_type.rb +27 -0
  70. data/lib/types/cl_i32.rb +26 -0
  71. data/lib/types/cl_i32_type.rb +26 -0
  72. data/lib/types/cl_i64.rb +26 -0
  73. data/lib/types/cl_i64_type.rb +27 -0
  74. data/lib/types/cl_key.rb +39 -0
  75. data/lib/types/cl_key_type.rb +27 -0
  76. data/lib/types/cl_list.rb +25 -0
  77. data/lib/types/cl_list_type.rb +26 -0
  78. data/lib/types/cl_map.rb +25 -0
  79. data/lib/types/cl_map_type.rb +26 -0
  80. data/lib/types/cl_option.rb +33 -0
  81. data/lib/types/cl_option_type.rb +52 -0
  82. data/lib/types/cl_public_key.rb +152 -0
  83. data/lib/types/cl_public_key_type.rb +26 -0
  84. data/lib/types/cl_result.rb +25 -0
  85. data/lib/types/cl_result_type.rb +26 -0
  86. data/lib/types/cl_string.rb +39 -0
  87. data/lib/types/cl_string_type.rb +32 -0
  88. data/lib/types/cl_tuple.rb +151 -0
  89. data/lib/types/cl_tuple_type.rb +108 -0
  90. data/lib/types/cl_type.rb +96 -0
  91. data/lib/types/cl_type_tag.rb +51 -0
  92. data/lib/types/cl_u128.rb +26 -0
  93. data/lib/types/cl_u128_type.rb +26 -0
  94. data/lib/types/cl_u256.rb +26 -0
  95. data/lib/types/cl_u256_type.rb +26 -0
  96. data/lib/types/cl_u32.rb +26 -0
  97. data/lib/types/cl_u32_type.rb +26 -0
  98. data/lib/types/cl_u512.rb +26 -0
  99. data/lib/types/cl_u512_type.rb +26 -0
  100. data/lib/types/cl_u64.rb +26 -0
  101. data/lib/types/cl_u64_type.rb +27 -0
  102. data/lib/types/cl_u8.rb +26 -0
  103. data/lib/types/cl_u8_type.rb +26 -0
  104. data/lib/types/cl_unit.rb +38 -0
  105. data/lib/types/cl_unit_type.rb +22 -0
  106. data/lib/types/cl_uref.rb +120 -0
  107. data/lib/types/cl_uref_type.rb +46 -0
  108. data/lib/types/cl_value.rb +11 -0
  109. data/lib/types/constants.rb +50 -0
  110. data/lib/types/error.rb +7 -0
  111. data/lib/utils/base_16.rb +18 -0
  112. data/lib/utils/byte_utils.rb +107 -0
  113. data/lib/utils/find_byte_parser_by_cl_type.rb +53 -0
  114. data/lib/utils/hash_utils.rb +19 -0
  115. data/lib/utils/hex_utils.rb +12 -0
  116. data/lib/utils/time_utils.rb +85 -0
  117. data/lib/utils/utils.rb +2 -0
  118. data/lib/version.rb +3 -0
  119. data/spec/a_spec.rb +697 -0
  120. data/spec/byte_utils_spec.rb +72 -0
  121. data/spec/cl_public_spec.rb +169 -0
  122. data/spec/cl_types_spec.rb +715 -0
  123. data/spec/cl_value_serializer_spec.rb +140 -0
  124. data/spec/crypto_spec.rb +42 -0
  125. data/spec/deploy_approval_serializer_spec.rb +26 -0
  126. data/spec/deploy_executable_serializer_spec.rb +0 -0
  127. data/spec/deploy_header_serializer_spec.rb +21 -0
  128. data/spec/deploy_named_arg_serializer_spec.rb +49 -0
  129. data/spec/deploy_serializer_spec.rb +77 -0
  130. data/spec/deploy_serializer_test_spec.rb +225 -0
  131. data/spec/mainnet_spec.rb +8 -8
  132. data/spec/string_spec.rb +68 -0
  133. data/spec/testnet_spec.rb +11 -11
  134. data/spec/time_utils_spec.rb +87 -0
  135. metadata +130 -2
@@ -0,0 +1,47 @@
1
+ module Casper
2
+ module Entity
3
+
4
+ # Information, entry points and named keys belonging to a Contract
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,5 +1,6 @@
1
1
  module Casper
2
2
  module Entity
3
+ # A delegator associated with the given validator.
3
4
  class Delegator
4
5
 
5
6
  # @param [String] public_key
data/lib/entity/deploy.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  module Casper
2
2
  module Entity
3
+ # Deploy, an item containing a smart contract along with the requester's signature(s).
3
4
  class Deploy
4
5
 
5
6
  # @param [String] hash
@@ -1,12 +1,14 @@
1
1
  module Casper
2
2
  module Entity
3
+ # Signature and Public Key of the signer.
3
4
  class DeployApproval
4
-
5
- # @param [String] signer
6
- # @param [String] signature
7
- def initialize(signer, signature)
8
- @signer = signer
9
- @signature = signature
5
+
6
+ # @param [Hash] approval
7
+ # @option approval [String] :signer
8
+ # @option approval [String] :signature
9
+ def initialize(approval = {})
10
+ @signer = approval[:signer]
11
+ @signature = approval[:signature]
10
12
  end
11
13
 
12
14
  # @return [String] signer
@@ -1,8 +1,162 @@
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
7
+ # DeployExecutable
3
8
  class DeployExecutable
4
-
9
+ attr_accessor :module_bytes, :transfer, :stored_contract_by_hash, :stored_contract_by_name,
10
+ :stored_versioned_contract_by_hash, :stored_versioned_contract_by_name
5
11
  def initialize
12
+ @module_bytes = nil
13
+ @stored_contract_by_hash = nil
14
+ @stored_contract_by_name = nil
15
+ @stored_versioned_contract_by_hash = nil
16
+ @stored_versioned_contract_by_name = nil
17
+ @transfer = nil
18
+ end
19
+
20
+ def standard_payment(payment_amount)
21
+ @module_bytes = ModuleBytes.new("", [])
22
+ arg = DeployNamedArgument.new("amount", CLu512.new(payment_amount))
23
+ @module_bytes.set_arg(arg) # => Add arg and return args
24
+ @module_bytes
25
+ end
26
+
27
+ # @param [Integer] id
28
+ # @param [Integer] amount
29
+ # @param [CLURef | CLPublicKey] target
30
+ # @param [CLURef | CLPublicKey] source_purse
31
+ # @return [DeployExecutable]
32
+ def new_transfer(id, amount, target, source_purse = nil)
33
+ if target.instance_of? CLURef
34
+ @target = target
35
+ elsif target.instance_of? CLPublicKey
36
+ @target = target.to_account_hash_byte_array
37
+ else
38
+ raise ArgumentError.new("Please specify target")
39
+ end
40
+ arg1 = DeployNamedArgument.new("amount", CLu512.new(amount))
41
+ # arg2 = DeployNamedArgument.new("target", @target)
42
+ @transfer = DeployExecutableTransfer.new([])
43
+ # @transfer.set_arg(DeployNamedArgument.new("target", @target))
44
+ # @transfer.set_arg(arg1)
45
+ # @transfer.set_arg(arg2)
46
+ # @transfer
47
+
48
+ if source_purse != nil
49
+ @transfer.set_arg(DeployNamedArgument.new("source", source_purse))
50
+ # @transfer
51
+ end
52
+ @transfer.set_arg(DeployNamedArgument.new("target", @target))
53
+ @transfer.set_arg(DeployNamedArgument.new("id", CLu64.new(id)))
54
+ @transfer
55
+ end
56
+
57
+ def set_module_bytes(module_bytes)
58
+ @module_bytes = module_bytes
59
+ end
60
+
61
+ # @return [ModuleBytes] module_bytes
62
+ def get_module_bytes
63
+ @module_bytes
64
+ end
65
+
66
+ # @return [Boolean]
67
+ def module_bytes?
68
+ @module_bytes != nil
69
+ end
70
+
71
+ # @param [DeployExecutableTransfer] transfer
72
+ def set_transfer(transfer)
73
+ @transfer = transfer
74
+ end
75
+
76
+ def get_transfer
77
+ @transfer
78
+ end
79
+
80
+ # @return [Boolean]
81
+ def transfer?
82
+ @transfer != nil
83
+ end
84
+
85
+ # @param [StoredContractByHash] stored_contract_by_hash
86
+ def set_stored_contract_by_hash(stored_contract_by_hash)
87
+ @stored_contract_by_hash = stored_contract_by_hash
88
+ end
89
+
90
+ def get_stored_contract_by_hash
91
+ @stored_contract_by_hash
92
+ end
93
+
94
+ # @return [Boolean]
95
+ def stored_contract_by_hash?
96
+ @stored_contract_by_hash != nil
97
+ end
98
+
99
+ # @param [StoredContractByName] stored_contract_by_name
100
+ def set_stored_contract_by_name(stored_contract_by_name)
101
+ @stored_contract_by_name = stored_contract_by_name
102
+ end
103
+
104
+ def get_stored_contract_by_name
105
+ @stored_contract_by_name
106
+ end
107
+
108
+ # @return [Boolean]
109
+ def stored_contract_by_name?
110
+ @stored_contract_by_name != nil
111
+ end
112
+
113
+ # @param [StoredVersionedContractByHash] stored_versioned_contract_by_hash
114
+ def set_stored_versioned_contract_by_hash(stored_versioned_contract_by_hash)
115
+ @stored_versioned_contract_by_hash = stored_versioned_contract_by_hash
116
+ end
117
+
118
+ def get_stored_versioned_contract_by_hash
119
+ @stored_versioned_contract_by_hash
120
+ end
121
+
122
+ # @return [Boolean]
123
+ def stored_versioned_contract_by_hash?
124
+ @stored_versioned_contract_by_hash != nil
125
+ end
126
+
127
+ # @param [StoredVersionedContractByName] stored_versioned_contract_by_name
128
+ def set_stored_versioned_contract_by_name(stored_versioned_contract_by_name)
129
+ @stored_versioned_contract_by_name = stored_versioned_contract_by_name
130
+ end
131
+
132
+ def get_stored_versioned_contract_by_name
133
+ @stored_versioned_contract_by_name
134
+ end
135
+
136
+ # @return [Boolean]
137
+ def stored_versioned_contract_by_name?
138
+ @stored_versioned_contract_by_name != nil
139
+ end
140
+
141
+ def to_bytes
142
+ if module_bytes?
143
+ @module_bytes.to_bytes
144
+ elsif stored_contract_by_name?
145
+ @stored_contract_by_name.to_bytes
146
+ elsif stored_contract_by_hash?
147
+ @stored_contract_by_hash.to_bytes
148
+ elsif stored_contract_by_name?
149
+ @stored_contract_by_name.to_bytes
150
+ elsif stored_versioned_contract_by_hash?
151
+ @stored_versioned_contract_by_hash.to_bytes
152
+ elsif stored_versioned_contract_by_name?
153
+ @stored_versioned_contract_by_name.to_bytes
154
+ elsif stored_versioned_contract_by_hash?
155
+ @stored_versioned_contract_by_hash.to_bytes
156
+ elsif transfer?
157
+ @transfer.to_bytes
158
+ end
159
+ raise "failed to serialize ExecutableDeployItemJsonWrapper"
6
160
  end
7
161
  end
8
162
  end
@@ -0,0 +1,27 @@
1
+ require_relative './deploy_named_argument.rb'
2
+
3
+ module Casper
4
+ module Entity
5
+ # DeployExecutableItemInternal
6
+ class DeployExecutableItemInternal
7
+ attr_accessor :args
8
+ def initialize(deploy_named_args = [])
9
+ @args = deploy_named_args
10
+ end
11
+
12
+ # @return [Array<DeployNamedArg>]
13
+ def get_args
14
+ @args
15
+ end
16
+
17
+ # @return [DeployNamedArg]
18
+ def get_arg_by_name(arg)
19
+ @args.include?(arg) == true ? arg : nil
20
+ end
21
+
22
+ def set_arg(deploy_named_arg)
23
+ @args << [deploy_named_arg]
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,51 @@
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
+ # A native transfer which does not contain or reference a Wasm code.
21
+ class DeployExecutableTransfer < DeployExecutableItemInternal
22
+
23
+ # @param [Array<Array<DeployNamedArgument>>] args
24
+ def initialize(args)
25
+ @tag = 5
26
+ @args = args
27
+ end
28
+
29
+ def get_tag
30
+ @tag
31
+ end
32
+
33
+ def get_args
34
+ @args
35
+ end
36
+
37
+ def to_bytes
38
+ serializer = DeployNamedArgSerializer.new
39
+ num_of_args = @args.length
40
+ bytes = Utils::ByteUtils.to_u8(@tag) + Utils::ByteUtils.to_u32(num_of_args)
41
+
42
+ @args.each do |arg|
43
+ arg.each do |item|
44
+ bytes += serializer.to_bytes(item)
45
+ end
46
+ end
47
+ Utils::ByteUtils.hex_to_byte_array(bytes)
48
+ end
49
+ end
50
+ end
51
+ end
@@ -1,5 +1,6 @@
1
1
  module Casper
2
2
  module Entity
3
+ # Hex-encoded Deploy hash.
3
4
  class DeployHash
4
5
 
5
6
  # @param [String] hash
@@ -1,24 +1,27 @@
1
1
  module Casper
2
2
  module Entity
3
+ # Header information of a Deploy.
3
4
  class DeployHeader
4
5
 
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
6
+ # @param [Hash] header
7
+ # @option header [String] :account
8
+ # @option header [Integer] :timestamp
9
+ # @option header [Integer] :ttl
10
+ # @option header [Integer] :gas_price
11
+ # @option header [String] :body_hash
12
+ # @option header [Array] :dependencies
13
+ # @option header [String] :chain_name
14
+ def initialize(header = {})
15
+ @account = header[:account]
16
+ @timestamp = header[:timestamp]
17
+ @ttl = header[:ttl]
18
+ @gas_price = header[:gas_price]
19
+ @body_hash = header[:body_hash]
20
+ @dependencies = header[:dependencies]
21
+ @chain_name = header[:chain_name]
20
22
  end
21
23
 
24
+
22
25
  # @return [String] account
23
26
  def get_account
24
27
  @account
@@ -0,0 +1,45 @@
1
+ module Casper
2
+ module Entity
3
+ # Information relating to the given Deploy.
4
+ class DeployInfo
5
+
6
+ # @param [String] hash
7
+ # @param [Array] transfers
8
+ # @param [String] from
9
+ # @param [String] source
10
+ # @param [String] gas
11
+ def initialize(hash, transfers, from, source, gas)
12
+ @hash = hash
13
+ @transfers = transfers
14
+ @from = from
15
+ @source = source
16
+ @gas = gas
17
+ end
18
+
19
+ # @return [String] hash
20
+ def get_hash
21
+ @hash
22
+ end
23
+
24
+ # @return [Array] transfers
25
+ def get_transfers
26
+ @transfers
27
+ end
28
+
29
+ # @return [String] from
30
+ def get_from
31
+ @from
32
+ end
33
+
34
+ # @return [String] source
35
+ def get_source
36
+ @source
37
+ end
38
+
39
+ # @return [String] gas
40
+ def get_gas
41
+ @gas
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,20 @@
1
+ module Casper
2
+ module Entity
3
+ # Named arguments passed as input in a Deploy item.
4
+ class DeployNamedArgument
5
+
6
+ def initialize(name, clvalue)
7
+ @name = name
8
+ @value = clvalue
9
+ end
10
+
11
+ def get_name
12
+ @name
13
+ end
14
+
15
+ def get_value
16
+ @value
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,11 @@
1
+ module Casper
2
+ module Entity
3
+ # A native transfer which does not contain or reference a Wasm code.
4
+ class DeployTransfer
5
+
6
+ def initialize
7
+ end
8
+
9
+ end
10
+ end
11
+ 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
@@ -1,5 +1,6 @@
1
1
  module Casper
2
2
  module Entity
3
+ # The summary of an era.
3
4
  class EraSummary
4
5
 
5
6
  # @param [String] block_hash_
@@ -1,5 +1,6 @@
1
1
  module Casper
2
2
  module Entity
3
+ # Validator and weights for an Era.
3
4
  class EraValidator
4
5
 
5
6
  # @param [Integer] era_id
@@ -0,0 +1,11 @@
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
@@ -0,0 +1,25 @@
1
+ module Casper
2
+ module Entity
3
+ # Group
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,51 @@
1
+ require_relative './deploy_executable_item_internal.rb'
2
+
3
+ module Casper
4
+ module Entity
5
+ # Executable specified as raw bytes that represent Wasm code and an instance of RuntimeArgs.
6
+ class ModuleBytes < DeployExecutableItemInternal
7
+
8
+ # @param [String] module_bytes
9
+ # @param [Array<Array<DeployNamedArgument>>] args
10
+ def initialize(module_bytes=nil, args = [])
11
+ @tag = 0
12
+ @module_bytes = module_bytes
13
+ @args = args
14
+ end
15
+
16
+ def get_tag
17
+ @tag
18
+ end
19
+
20
+ def get_module_bytes
21
+ @module_bytes
22
+ end
23
+
24
+ def get_args
25
+ @args
26
+ end
27
+
28
+ def set_arg(deploy_named_arg)
29
+ @args << [deploy_named_arg]
30
+ end
31
+
32
+ def to_bytes
33
+ bytes = ""
34
+ serializer = DeployNamedArgSerializer.new
35
+ num_of_args = @args.length
36
+ bytes += Utils::ByteUtils.to_u8(@tag)
37
+
38
+ if @module_bytes == ""
39
+ bytes += Utils::ByteUtils.to_u32(0)
40
+ end
41
+ bytes += Utils::ByteUtils.to_u32(num_of_args)
42
+ @args.each do |arg|
43
+ arg.each do |item|
44
+ bytes += serializer.to_bytes(item)
45
+ end
46
+ end
47
+ Utils::ByteUtils.hex_to_byte_array(bytes)
48
+ end
49
+ end
50
+ end
51
+ end