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.
- checksums.yaml +4 -4
- data/README.md +15 -4
- data/lib/casper_network.rb +62 -8
- data/lib/crypto/00_asymmetric_key.rb +95 -0
- data/lib/crypto/01_ed25519.rb +67 -0
- data/lib/crypto/asymmetric_key.rb +87 -0
- data/lib/crypto/ed25519_key.rb +44 -0
- data/lib/crypto/key_pair.rb +40 -0
- data/lib/crypto/keys.rb +7 -0
- data/lib/crypto/secp256k1_key.rb +0 -0
- data/lib/crypto/test_ed25519_key.rb +44 -0
- data/lib/entity/account.rb +45 -0
- data/lib/entity/action_thresholds.rb +25 -0
- data/lib/entity/associated_key.rb +24 -0
- data/lib/entity/auction_state.rb +1 -0
- data/lib/entity/bid.rb +1 -0
- data/lib/entity/bid_info.rb +1 -0
- data/lib/entity/contract.rb +47 -0
- data/lib/entity/contract_package.rb +41 -0
- data/lib/entity/contract_version.rb +33 -0
- data/lib/entity/delegator.rb +1 -0
- data/lib/entity/deploy.rb +1 -0
- data/lib/entity/deploy_approval.rb +8 -6
- data/lib/entity/deploy_executable.rb +155 -1
- data/lib/entity/deploy_executable_item_internal.rb +27 -0
- data/lib/entity/deploy_executable_transfer.rb +51 -0
- data/lib/entity/deploy_hash.rb +1 -0
- data/lib/entity/deploy_header.rb +18 -15
- data/lib/entity/deploy_info.rb +45 -0
- data/lib/entity/deploy_named_argument.rb +20 -0
- data/lib/entity/deploy_transfer.rb +11 -0
- data/lib/entity/disabled_version.rb +26 -0
- data/lib/entity/era_info.rb +18 -0
- data/lib/entity/era_summary.rb +1 -0
- data/lib/entity/era_validator.rb +1 -0
- data/lib/entity/executable_deploy_item.rb +11 -0
- data/lib/entity/group.rb +25 -0
- data/lib/entity/module_bytes.rb +51 -0
- data/lib/entity/peer.rb +1 -0
- data/lib/entity/seigniorage_allocation.rb +18 -0
- data/lib/entity/stored_contract_by_hash.rb +51 -0
- data/lib/entity/stored_contract_by_name.rb +52 -0
- data/lib/entity/stored_value.rb +57 -0
- data/lib/entity/stored_versioned_contract_by_hash.rb +63 -0
- data/lib/entity/stored_versioned_contract_by_name.rb +63 -0
- data/lib/entity/transfer.rb +66 -0
- data/lib/entity/validator_weight.rb +1 -0
- data/lib/entity/vesting_schedule.rb +22 -0
- data/lib/include.rb +18 -0
- data/lib/rpc/rpc.rb +227 -0
- data/lib/rpc/rpc_client.rb +45 -39
- data/lib/rpc/rpc_error.rb +1 -0
- data/lib/serialization/cl_type_serializer.rb +77 -0
- data/lib/serialization/cl_value_bytes_parsers.rb +498 -0
- data/lib/serialization/cl_value_serializer.rb +260 -0
- data/lib/serialization/deploy_approval_serializer.rb +16 -0
- data/lib/serialization/deploy_executable_serializer.rb +27 -0
- data/lib/serialization/deploy_header_serializer.rb +49 -0
- data/lib/serialization/deploy_named_arg_serializer.rb +20 -0
- data/lib/serialization/deploy_serializer.rb +269 -0
- data/lib/serialization/test.rb +431 -0
- data/lib/types/cl_account_hash.rb +24 -0
- data/lib/types/cl_account_hash_type.rb +22 -0
- data/lib/types/cl_any.rb +25 -0
- data/lib/types/cl_any_type.rb +22 -0
- data/lib/types/cl_bool.rb +32 -0
- data/lib/types/cl_bool_type.rb +35 -0
- data/lib/types/cl_byte_array.rb +25 -0
- data/lib/types/cl_byte_array_type.rb +27 -0
- data/lib/types/cl_i32.rb +26 -0
- data/lib/types/cl_i32_type.rb +26 -0
- data/lib/types/cl_i64.rb +26 -0
- data/lib/types/cl_i64_type.rb +27 -0
- data/lib/types/cl_key.rb +39 -0
- data/lib/types/cl_key_type.rb +27 -0
- data/lib/types/cl_list.rb +25 -0
- data/lib/types/cl_list_type.rb +26 -0
- data/lib/types/cl_map.rb +25 -0
- data/lib/types/cl_map_type.rb +26 -0
- data/lib/types/cl_option.rb +33 -0
- data/lib/types/cl_option_type.rb +52 -0
- data/lib/types/cl_public_key.rb +152 -0
- data/lib/types/cl_public_key_type.rb +26 -0
- data/lib/types/cl_result.rb +25 -0
- data/lib/types/cl_result_type.rb +26 -0
- data/lib/types/cl_string.rb +39 -0
- data/lib/types/cl_string_type.rb +32 -0
- data/lib/types/cl_tuple.rb +151 -0
- data/lib/types/cl_tuple_type.rb +108 -0
- data/lib/types/cl_type.rb +96 -0
- data/lib/types/cl_type_tag.rb +51 -0
- data/lib/types/cl_u128.rb +26 -0
- data/lib/types/cl_u128_type.rb +26 -0
- data/lib/types/cl_u256.rb +26 -0
- data/lib/types/cl_u256_type.rb +26 -0
- data/lib/types/cl_u32.rb +26 -0
- data/lib/types/cl_u32_type.rb +26 -0
- data/lib/types/cl_u512.rb +26 -0
- data/lib/types/cl_u512_type.rb +26 -0
- data/lib/types/cl_u64.rb +26 -0
- data/lib/types/cl_u64_type.rb +27 -0
- data/lib/types/cl_u8.rb +26 -0
- data/lib/types/cl_u8_type.rb +26 -0
- data/lib/types/cl_unit.rb +38 -0
- data/lib/types/cl_unit_type.rb +22 -0
- data/lib/types/cl_uref.rb +120 -0
- data/lib/types/cl_uref_type.rb +46 -0
- data/lib/types/cl_value.rb +11 -0
- data/lib/types/constants.rb +50 -0
- data/lib/types/error.rb +7 -0
- data/lib/utils/base_16.rb +18 -0
- data/lib/utils/byte_utils.rb +107 -0
- data/lib/utils/find_byte_parser_by_cl_type.rb +53 -0
- data/lib/utils/hash_utils.rb +19 -0
- data/lib/utils/hex_utils.rb +12 -0
- data/lib/utils/time_utils.rb +85 -0
- data/lib/utils/utils.rb +2 -0
- data/lib/version.rb +3 -0
- data/spec/a_spec.rb +697 -0
- data/spec/byte_utils_spec.rb +72 -0
- data/spec/cl_public_spec.rb +169 -0
- data/spec/cl_types_spec.rb +715 -0
- data/spec/cl_value_serializer_spec.rb +140 -0
- data/spec/crypto_spec.rb +42 -0
- data/spec/deploy_approval_serializer_spec.rb +26 -0
- data/spec/deploy_executable_serializer_spec.rb +0 -0
- data/spec/deploy_header_serializer_spec.rb +21 -0
- data/spec/deploy_named_arg_serializer_spec.rb +49 -0
- data/spec/deploy_serializer_spec.rb +77 -0
- data/spec/deploy_serializer_test_spec.rb +225 -0
- data/spec/mainnet_spec.rb +8 -8
- data/spec/string_spec.rb +68 -0
- data/spec/testnet_spec.rb +11 -11
- data/spec/time_utils_spec.rb +87 -0
- 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
|
data/lib/entity/delegator.rb
CHANGED
data/lib/entity/deploy.rb
CHANGED
@@ -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 [
|
6
|
-
# @
|
7
|
-
|
8
|
-
|
9
|
-
@
|
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
|
data/lib/entity/deploy_hash.rb
CHANGED
data/lib/entity/deploy_header.rb
CHANGED
@@ -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 [
|
6
|
-
# @
|
7
|
-
# @
|
8
|
-
# @
|
9
|
-
# @
|
10
|
-
# @
|
11
|
-
# @
|
12
|
-
|
13
|
-
|
14
|
-
@
|
15
|
-
@
|
16
|
-
@
|
17
|
-
@
|
18
|
-
@
|
19
|
-
@
|
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,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
|
data/lib/entity/era_summary.rb
CHANGED
data/lib/entity/era_validator.rb
CHANGED
data/lib/entity/group.rb
ADDED
@@ -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
|