test_sdk1 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|