test_sdk1 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.
- checksums.yaml +7 -0
- data/CONTRIBUTING.md +1 -0
- data/LICENSE +201 -0
- data/README.md +147 -0
- data/SECURITY.md +12 -0
- 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 +36 -0
- data/lib/entity/bid.rb +24 -0
- data/lib/entity/bid_info.rb +51 -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 +37 -0
- data/lib/entity/deploy.rb +44 -0
- data/lib/entity/deploy_approval.rb +24 -0
- data/lib/entity/deploy_executable.rb +162 -0
- data/lib/entity/deploy_executable_item_internal.rb +26 -0
- data/lib/entity/deploy_executable_transfer.rb +50 -0
- data/lib/entity/deploy_hash.rb +16 -0
- data/lib/entity/deploy_header.rb +60 -0
- data/lib/entity/deploy_info.rb +44 -0
- data/lib/entity/deploy_named_argument.rb +19 -0
- data/lib/entity/deploy_transfer.rb +10 -0
- data/lib/entity/disabled_version.rb +26 -0
- data/lib/entity/era_info.rb +18 -0
- data/lib/entity/era_summary.rb +44 -0
- data/lib/entity/era_validator.rb +23 -0
- data/lib/entity/executable_deploy_item.rb +11 -0
- data/lib/entity/group.rb +25 -0
- data/lib/entity/module_bytes.rb +50 -0
- data/lib/entity/peer.rb +25 -0
- data/lib/entity/seigniorage_allocation.rb +18 -0
- data/lib/entity/stored_contract_by_hash.rb +50 -0
- data/lib/entity/stored_contract_by_name.rb +50 -0
- data/lib/entity/stored_value.rb +57 -0
- data/lib/entity/stored_versioned_contract_by_hash.rb +61 -0
- data/lib/entity/stored_versioned_contract_by_name.rb +61 -0
- data/lib/entity/transfer.rb +65 -0
- data/lib/entity/validator_weight.rb +23 -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 +233 -0
- data/lib/rpc/rpc_error.rb +79 -0
- data/lib/serialization/cl_type_serializer.rb +76 -0
- data/lib/serialization/cl_value_bytes_parsers.rb +498 -0
- data/lib/serialization/cl_value_serializer.rb +259 -0
- data/lib/serialization/deploy_approval_serializer.rb +15 -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 +19 -0
- data/lib/serialization/deploy_serializer.rb +268 -0
- data/lib/serialization/test.rb +431 -0
- data/lib/test_sdk1.rb +289 -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 +94 -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 +10 -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/client_spec.rb +25 -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 +452 -0
- data/spec/spec_helper.rb +100 -0
- data/spec/string_spec.rb +68 -0
- data/spec/testnet_spec.rb +498 -0
- data/spec/time_utils_spec.rb +87 -0
- metadata +198 -0
@@ -0,0 +1,40 @@
|
|
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>
|
data/lib/crypto/keys.rb
ADDED
File without changes
|
@@ -0,0 +1,44 @@
|
|
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
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Casper
|
2
|
+
module Entity
|
3
|
+
# An Account is a structure that represents a user on a Casper Network.
|
4
|
+
class Account
|
5
|
+
|
6
|
+
# @param [CLAccountHash] account_hash
|
7
|
+
# @param [Array] named_keys
|
8
|
+
# @param [CLUref] main_purse The account's main purse URef
|
9
|
+
# @param [Array] associated_keys
|
10
|
+
# @param [Array<ActionThresHolds>] action_thresholds
|
11
|
+
def initialize(account_hash, named_keys, main_purse, associated_keys, action_thresholds)
|
12
|
+
@account_hash = account_hash
|
13
|
+
@named_keys = named_keys
|
14
|
+
@main_purse = main_purse
|
15
|
+
@associated_keys = associated_keys
|
16
|
+
@action_thresholds = action_thresholds
|
17
|
+
end
|
18
|
+
|
19
|
+
# @return [CLAccountHash]
|
20
|
+
def get_account_hash
|
21
|
+
@account_hash
|
22
|
+
end
|
23
|
+
|
24
|
+
# @return [Array]
|
25
|
+
def get_named_keys
|
26
|
+
@named_keys
|
27
|
+
end
|
28
|
+
|
29
|
+
# @return [CLUref]
|
30
|
+
def get_main_purse
|
31
|
+
@main_purse
|
32
|
+
end
|
33
|
+
|
34
|
+
# @return [Array<AssociatedKey>]
|
35
|
+
def get_associated_keys
|
36
|
+
@associated_keys
|
37
|
+
end
|
38
|
+
|
39
|
+
# @return [ActionThresHolds]
|
40
|
+
def get_action_thresholds
|
41
|
+
@action_thresholds
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Casper
|
2
|
+
module Entity
|
3
|
+
|
4
|
+
# @note The minimum weight thresholds that have to be met when executing an action of a certain type.
|
5
|
+
class ActionThresholds
|
6
|
+
|
7
|
+
# @param [Integer] deployment Threshold required to perform deployment actions.
|
8
|
+
# @param [Integer] key_management Threshold required to perform key management actions.
|
9
|
+
def initialize(deployment, key_management)
|
10
|
+
@deployment = deployment
|
11
|
+
@key_management = key_management
|
12
|
+
end
|
13
|
+
|
14
|
+
# @return [Integer] deployment
|
15
|
+
def get_deployment
|
16
|
+
@deployment
|
17
|
+
end
|
18
|
+
|
19
|
+
# @return [Integer] key_management
|
20
|
+
def get_key_management
|
21
|
+
@key_management
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Casper
|
2
|
+
module Entity
|
3
|
+
# A key granted limited permissions to an Account, for purposes such as multisig.
|
4
|
+
class AssociatedKey
|
5
|
+
|
6
|
+
# @param [CLAccountHash] account_hash
|
7
|
+
# @param [Integer] weight
|
8
|
+
def initialize(account_hash, weight)
|
9
|
+
@account_hash = account_hash
|
10
|
+
@weight = weight
|
11
|
+
end
|
12
|
+
|
13
|
+
# @return [CLAccountHash] account hash of associated key
|
14
|
+
def get_account_hash
|
15
|
+
@account_hash
|
16
|
+
end
|
17
|
+
|
18
|
+
# @return [Integer] weight of an associated key.
|
19
|
+
def get_weight
|
20
|
+
@weight
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module Casper
|
2
|
+
module Entity
|
3
|
+
class AuctionState
|
4
|
+
# @param [String] state_root_hash
|
5
|
+
# @param [Integer] block_height
|
6
|
+
# @param [Array] era_validators
|
7
|
+
# @param [Array] bids
|
8
|
+
def initialize(state_root_hash, block_height, era_validators, bids)
|
9
|
+
@state_root_hash = state_root_hash
|
10
|
+
@block_height = block_height
|
11
|
+
@era_validators = era_validators
|
12
|
+
@bids = bids
|
13
|
+
end
|
14
|
+
|
15
|
+
# @return [String] returns state root hash as a String
|
16
|
+
def get_state_root_hash
|
17
|
+
@state_root_hash
|
18
|
+
end
|
19
|
+
|
20
|
+
# @return [Integer] returns block height as an Integer
|
21
|
+
def get_block_height
|
22
|
+
@block_height
|
23
|
+
end
|
24
|
+
|
25
|
+
# @return [Array<Hash>] returns array of hashes
|
26
|
+
def get_era_validators
|
27
|
+
@era_validators
|
28
|
+
end
|
29
|
+
|
30
|
+
# @return [Array<Hash>] returns array of hashes
|
31
|
+
def get_bids
|
32
|
+
@bids
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/entity/bid.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
module Casper
|
2
|
+
module Entity
|
3
|
+
class Bid
|
4
|
+
|
5
|
+
# @param [String] public_key
|
6
|
+
# @param [BidInfo] bid_info
|
7
|
+
def initialize(public_key, bid_info)
|
8
|
+
@public_key = public_key
|
9
|
+
@BidInfo = bid_info
|
10
|
+
|
11
|
+
end
|
12
|
+
|
13
|
+
# @return [String] public_key
|
14
|
+
def get_public_key
|
15
|
+
@public_key
|
16
|
+
end
|
17
|
+
|
18
|
+
# @return [BidInfo] bid_info
|
19
|
+
def get_bid_info
|
20
|
+
@bid_info
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module Casper
|
2
|
+
module Entity
|
3
|
+
class BidInfo
|
4
|
+
|
5
|
+
# @param [String] bonding_purse
|
6
|
+
# @param [String] staked_amount
|
7
|
+
# @param [Integer] delegation_rate
|
8
|
+
# @param [VestingSchedule] vesting_schedule
|
9
|
+
# @param [Hash<Delegator>] delegators
|
10
|
+
# @param [Boolean] inactive
|
11
|
+
def initialize(bonding_purse, staked_amount, delegation_rate, vesting_schedule, delegators, inactive)
|
12
|
+
@bonding_purse = bonding_purse
|
13
|
+
@staked_amount = staked_amount
|
14
|
+
@delegation_rate = delegation_rate
|
15
|
+
@vesting_schedule = vesting_schedule
|
16
|
+
@delegators = delegators
|
17
|
+
@inactive = inactive
|
18
|
+
end
|
19
|
+
|
20
|
+
# @return [String] bonding_purse
|
21
|
+
def get_bonding_purse
|
22
|
+
@bonding_purse
|
23
|
+
end
|
24
|
+
|
25
|
+
# @return [String] staked_amount
|
26
|
+
def get_staked_amount
|
27
|
+
@staked_amount
|
28
|
+
end
|
29
|
+
|
30
|
+
# @return [Integer] delegation_rate
|
31
|
+
def get_delegation_rate
|
32
|
+
@delegation_rate
|
33
|
+
end
|
34
|
+
|
35
|
+
# @return [VestingSchedule] vesting_schedule
|
36
|
+
def get_vesting_schedule
|
37
|
+
@vesting_schedule
|
38
|
+
end
|
39
|
+
|
40
|
+
# @return [Delegator] delegators
|
41
|
+
def get_delegators
|
42
|
+
@delegators
|
43
|
+
end
|
44
|
+
|
45
|
+
# @return [true, false] inactive
|
46
|
+
def get_inactive
|
47
|
+
@inactive
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -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
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Casper
|
2
|
+
module Entity
|
3
|
+
class Delegator
|
4
|
+
|
5
|
+
# @param [String] public_key
|
6
|
+
# @param [String] staked_amount
|
7
|
+
# @param [String] bonding_purse
|
8
|
+
# @param [String] delegatee
|
9
|
+
def initialize(public_key, staked_amount, bonding_purse, delegatee)
|
10
|
+
@public_key = public_key
|
11
|
+
@staked_amount = staked_amount
|
12
|
+
@bonding_purse = bonding_purse
|
13
|
+
@delegatee = delegatee
|
14
|
+
end
|
15
|
+
|
16
|
+
# @return [String] public_key
|
17
|
+
def get_public_key
|
18
|
+
@public_key
|
19
|
+
end
|
20
|
+
|
21
|
+
# @return [String] staked_amount
|
22
|
+
def get_staked_amount
|
23
|
+
@staked_amount
|
24
|
+
end
|
25
|
+
|
26
|
+
# @return [String] bonding_purse
|
27
|
+
def get_bonding_purse
|
28
|
+
@bonding_purse
|
29
|
+
end
|
30
|
+
|
31
|
+
# @return [String] delegatee
|
32
|
+
def get_delegatee
|
33
|
+
@delegatee
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module Casper
|
2
|
+
module Entity
|
3
|
+
class Deploy
|
4
|
+
|
5
|
+
# @param [String] hash
|
6
|
+
# @param [DeployHeader] header
|
7
|
+
# @param [DeployExecutable] payment
|
8
|
+
# @param [DeployExecutable] session
|
9
|
+
# @param [DeployApproval] approvals
|
10
|
+
def initialize(hash, header, payment, session, approvals)
|
11
|
+
@hash = hash
|
12
|
+
@header = header
|
13
|
+
@payment = payment
|
14
|
+
@session = session
|
15
|
+
@approvals = approvals
|
16
|
+
end
|
17
|
+
|
18
|
+
# @return [String] hash
|
19
|
+
def get_hash
|
20
|
+
@hash
|
21
|
+
end
|
22
|
+
|
23
|
+
# @return [DeployHeader] header
|
24
|
+
def get_header
|
25
|
+
@header
|
26
|
+
end
|
27
|
+
|
28
|
+
# @return [DeployExecutable] payment
|
29
|
+
def get_payment
|
30
|
+
@payment
|
31
|
+
end
|
32
|
+
|
33
|
+
# @return [DeployExecutable] session
|
34
|
+
def get_session
|
35
|
+
@session
|
36
|
+
end
|
37
|
+
|
38
|
+
# @return [DeployApproval] approvals
|
39
|
+
def get_approvals
|
40
|
+
@approvals
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Casper
|
2
|
+
module Entity
|
3
|
+
class DeployApproval
|
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]
|
11
|
+
end
|
12
|
+
|
13
|
+
# @return [String] signer
|
14
|
+
def get_signer
|
15
|
+
@signer
|
16
|
+
end
|
17
|
+
|
18
|
+
# return [String] signature
|
19
|
+
def get_signature
|
20
|
+
@signature
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -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] stored_contract_by_hash
|
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_versioned_contract_by_hash
|
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_versioned_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
|