libra_client 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/Gemfile.lock +8 -6
- data/lib/libra/version.rb +1 -1
- data/libra_client.gemspec +1 -0
- data/proto-lib/admission_control_pb.rb +10 -7
- data/proto-lib/consensus_pb.rb +105 -0
- data/proto-lib/events_pb.rb +1 -1
- data/proto-lib/execution_pb.rb +51 -0
- data/proto-lib/execution_services_pb.rb +37 -0
- data/proto-lib/language_storage_pb.rb +17 -0
- data/proto-lib/mempool_pb.rb +18 -0
- data/proto-lib/mempool_status_pb.rb +7 -2
- data/proto-lib/network_pb.rb +59 -0
- data/proto-lib/node_debug_interface_pb.rb +39 -0
- data/proto-lib/node_debug_interface_services_pb.rb +32 -0
- data/proto-lib/proof_pb.rb +6 -0
- data/proto-lib/secret_service_pb.rb +54 -0
- data/proto-lib/secret_service_services_pb.rb +34 -0
- data/proto-lib/state_synchronizer_pb.rb +33 -0
- data/proto-lib/storage_pb.rb +61 -0
- data/proto-lib/storage_services_pb.rb +47 -0
- data/proto-lib/transaction_pb.rb +11 -0
- data/proto-lib/validator_public_keys_pb.rb +19 -0
- data/proto-lib/validator_set_pb.rb +17 -0
- data/proto-lib/vm_errors_pb.rb +84 -70
- data/protos/admission_control.proto +11 -4
- data/protos/consensus.proto +147 -0
- data/protos/events.proto +1 -1
- data/protos/execution.proto +92 -0
- data/protos/language_storage.proto +12 -0
- data/protos/mempool.proto +18 -0
- data/protos/mempool_status.proto +6 -1
- data/protos/network.proto +81 -0
- data/protos/node_debug_interface.proto +40 -0
- data/protos/proof.proto +15 -0
- data/protos/secret_service.proto +64 -0
- data/protos/state_synchronizer.proto +29 -0
- data/protos/storage.proto +115 -0
- data/protos/transaction.proto +16 -1
- data/protos/validator_public_keys.proto +18 -0
- data/protos/validator_set.proto +13 -0
- data/protos/vm_errors.proto +87 -71
- metadata +42 -2
data/protos/proof.proto
CHANGED
@@ -51,6 +51,21 @@ message SparseMerkleProof {
|
|
51
51
|
repeated bytes non_default_siblings = 3;
|
52
52
|
}
|
53
53
|
|
54
|
+
message AccumulatorConsistencyProof {
|
55
|
+
// The root hashes of the frozen subtrees that form the small accumulator.
|
56
|
+
// Note that none of these hashes should be default hash.
|
57
|
+
repeated bytes frozen_subtree_roots = 1;
|
58
|
+
|
59
|
+
// The total number of siblings.
|
60
|
+
uint32 num_siblings = 2;
|
61
|
+
|
62
|
+
// The non-default siblings. Note that the entire list of siblings always
|
63
|
+
// start of zero or more non-default siblings, followed by zero of more
|
64
|
+
// default siblings. So given the total number of siblings and the non-default
|
65
|
+
// siblings we should be able to construct the entire sibling list.
|
66
|
+
repeated bytes non_default_siblings = 3;
|
67
|
+
}
|
68
|
+
|
54
69
|
// The complete proof used to authenticate a signed transaction.
|
55
70
|
message SignedTransactionProof {
|
56
71
|
AccumulatorProof ledger_info_to_transaction_info_proof = 1;
|
@@ -0,0 +1,64 @@
|
|
1
|
+
// Copyright (c) The Libra Core Contributors
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
3
|
+
|
4
|
+
syntax = "proto3";
|
5
|
+
|
6
|
+
package secret_service;
|
7
|
+
|
8
|
+
// -----------------------------------------------------------------------------
|
9
|
+
// ---------------- Service definition
|
10
|
+
// -----------------------------------------------------------------------------
|
11
|
+
service SecretService {
|
12
|
+
// API to request key generation
|
13
|
+
rpc GenerateKey (GenerateKeyRequest) returns (GenerateKeyResponse) {}
|
14
|
+
// API to request a public key
|
15
|
+
rpc GetPublicKey (PublicKeyRequest) returns (PublicKeyResponse) {}
|
16
|
+
// API to request a signature
|
17
|
+
rpc Sign (SignRequest) returns (SignResponse) {}
|
18
|
+
}
|
19
|
+
|
20
|
+
message GenerateKeyRequest {
|
21
|
+
// Spec gives a way to generate the key (potentially BIP32 private derivation path here)
|
22
|
+
KeyType spec = 1;
|
23
|
+
}
|
24
|
+
|
25
|
+
message GenerateKeyResponse {
|
26
|
+
bytes key_id = 1;
|
27
|
+
ErrorCode code = 2;
|
28
|
+
}
|
29
|
+
|
30
|
+
message PublicKeyRequest {
|
31
|
+
bytes key_id = 1;
|
32
|
+
}
|
33
|
+
|
34
|
+
message PublicKeyResponse {
|
35
|
+
bytes public_key = 1;
|
36
|
+
ErrorCode code = 2;
|
37
|
+
}
|
38
|
+
|
39
|
+
message SignRequest {
|
40
|
+
bytes key_id = 1;
|
41
|
+
// message_hash should be a prehashed message of length crypto::HashValue::LENGTH = 32 bytes
|
42
|
+
bytes message_hash = 2;
|
43
|
+
}
|
44
|
+
|
45
|
+
message SignResponse {
|
46
|
+
bytes signature = 1;
|
47
|
+
ErrorCode code = 2;
|
48
|
+
}
|
49
|
+
|
50
|
+
enum ErrorCode {
|
51
|
+
Success = 0;
|
52
|
+
KeyIdNotFound = 1;
|
53
|
+
WrongLength = 2;
|
54
|
+
InvalidParameters = 3;
|
55
|
+
AuthenticationFailed = 4;
|
56
|
+
Unspecified = 5;
|
57
|
+
|
58
|
+
// Good examples of more error codes: https://developers.yubico.com/YubiHSM2/Component_Reference/KSP/Status_codes.html
|
59
|
+
}
|
60
|
+
|
61
|
+
enum KeyType {
|
62
|
+
Ed25519 = 0;
|
63
|
+
BLS12381 = 1;
|
64
|
+
}
|
@@ -0,0 +1,29 @@
|
|
1
|
+
// Copyright (c) The Libra Core Contributors
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
3
|
+
|
4
|
+
syntax = "proto3";
|
5
|
+
|
6
|
+
package network;
|
7
|
+
|
8
|
+
import "ledger_info.proto";
|
9
|
+
import "transaction.proto";
|
10
|
+
|
11
|
+
message GetChunkRequest {
|
12
|
+
uint64 known_version = 1;
|
13
|
+
uint64 limit = 2;
|
14
|
+
uint64 timeout = 3;
|
15
|
+
types.LedgerInfoWithSignatures ledger_info_with_sigs = 4;
|
16
|
+
}
|
17
|
+
|
18
|
+
message GetChunkResponse {
|
19
|
+
types.LedgerInfoWithSignatures ledger_info_with_sigs = 1;
|
20
|
+
// chunk of transactions with proof corresponding to version in `ledger_info_with_sigs`
|
21
|
+
types.TransactionListWithProof txn_list_with_proof = 2;
|
22
|
+
}
|
23
|
+
|
24
|
+
message StateSynchronizerMsg {
|
25
|
+
oneof message {
|
26
|
+
GetChunkRequest chunk_request = 1;
|
27
|
+
GetChunkResponse chunk_response = 2;
|
28
|
+
}
|
29
|
+
}
|
@@ -0,0 +1,115 @@
|
|
1
|
+
// Copyright (c) The Libra Core Contributors
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
3
|
+
|
4
|
+
syntax = "proto3";
|
5
|
+
|
6
|
+
package storage;
|
7
|
+
|
8
|
+
import "get_with_proof.proto";
|
9
|
+
import "ledger_info.proto";
|
10
|
+
import "transaction.proto";
|
11
|
+
import "account_state_blob.proto";
|
12
|
+
import "proof.proto";
|
13
|
+
|
14
|
+
// -----------------------------------------------------------------------------
|
15
|
+
// ---------------- Service definition for storage
|
16
|
+
// -----------------------------------------------------------------------------
|
17
|
+
service Storage {
|
18
|
+
// Write APIs.
|
19
|
+
|
20
|
+
// Persist transactions. Called by Execution when either syncing nodes or
|
21
|
+
// committing blocks during normal operation.
|
22
|
+
rpc SaveTransactions(SaveTransactionsRequest)
|
23
|
+
returns (SaveTransactionsResponse);
|
24
|
+
|
25
|
+
// Read APIs.
|
26
|
+
|
27
|
+
// Used to get a piece of data and return the proof of it. If the client
|
28
|
+
// knows and trusts a ledger info at version v, it should pass v in as the
|
29
|
+
// client_known_version and we will return the latest ledger info together
|
30
|
+
// with the proof that it derives from v.
|
31
|
+
rpc UpdateToLatestLedger(
|
32
|
+
types.UpdateToLatestLedgerRequest)
|
33
|
+
returns (types.UpdateToLatestLedgerResponse);
|
34
|
+
|
35
|
+
// When we receive a request from a peer validator asking a list of
|
36
|
+
// transactions for state synchronization, this API can be used to serve the
|
37
|
+
// request. Note that the peer should specify a ledger version and all proofs
|
38
|
+
// in the response will be relative to this given ledger version.
|
39
|
+
rpc GetTransactions(GetTransactionsRequest) returns (GetTransactionsResponse);
|
40
|
+
|
41
|
+
rpc GetAccountStateWithProofByVersion(
|
42
|
+
GetAccountStateWithProofByVersionRequest)
|
43
|
+
returns (GetAccountStateWithProofByVersionResponse);
|
44
|
+
|
45
|
+
// Returns information needed for libra core to start up.
|
46
|
+
rpc GetStartupInfo(GetStartupInfoRequest)
|
47
|
+
returns (GetStartupInfoResponse);
|
48
|
+
}
|
49
|
+
|
50
|
+
message SaveTransactionsRequest {
|
51
|
+
// Transactions to persist.
|
52
|
+
repeated types.TransactionToCommit txns_to_commit = 1;
|
53
|
+
|
54
|
+
// The version of the first transaction in `txns_to_commit`.
|
55
|
+
uint64 first_version = 2;
|
56
|
+
|
57
|
+
// If this is set, Storage will check its state after applying the above
|
58
|
+
// transactions matches info in this LedgerInfo before committing otherwise
|
59
|
+
// it denies the request.
|
60
|
+
types.LedgerInfoWithSignatures ledger_info_with_signatures = 3;
|
61
|
+
}
|
62
|
+
|
63
|
+
message SaveTransactionsResponse {}
|
64
|
+
|
65
|
+
message GetTransactionsRequest {
|
66
|
+
// The version to start with.
|
67
|
+
uint64 start_version = 1;
|
68
|
+
// The size of the transaction batch.
|
69
|
+
uint64 batch_size = 2;
|
70
|
+
// All the proofs returned in the response should be relative to this
|
71
|
+
// given version.
|
72
|
+
uint64 ledger_version = 3;
|
73
|
+
// Used to return the events associated with each transaction
|
74
|
+
bool fetch_events = 4;
|
75
|
+
}
|
76
|
+
|
77
|
+
message GetTransactionsResponse {
|
78
|
+
types.TransactionListWithProof txn_list_with_proof = 1;
|
79
|
+
}
|
80
|
+
|
81
|
+
message GetAccountStateWithProofByVersionRequest {
|
82
|
+
/// The account address to query with.
|
83
|
+
bytes address = 1;
|
84
|
+
|
85
|
+
/// The version the query is based on.
|
86
|
+
uint64 version = 2;
|
87
|
+
}
|
88
|
+
|
89
|
+
message GetAccountStateWithProofByVersionResponse {
|
90
|
+
/// The optional blob of account state blob.
|
91
|
+
types.AccountStateBlob account_state_blob = 1;
|
92
|
+
|
93
|
+
/// The state root hash the query is based on.
|
94
|
+
types.SparseMerkleProof sparse_merkle_proof = 2;
|
95
|
+
}
|
96
|
+
|
97
|
+
message GetStartupInfoRequest {}
|
98
|
+
|
99
|
+
message GetStartupInfoResponse {
|
100
|
+
// When this is empty, Storage needs to be bootstrapped via the bootstrap API
|
101
|
+
StartupInfo info = 1;
|
102
|
+
}
|
103
|
+
|
104
|
+
message StartupInfo {
|
105
|
+
// The latest LedgerInfo. Note that at start up storage can have more
|
106
|
+
// transactions than the latest LedgerInfo indicates due to an incomplete
|
107
|
+
// start up sync.
|
108
|
+
types.LedgerInfo ledger_info = 1;
|
109
|
+
// The latest version. All fields below are based on this version.
|
110
|
+
uint64 latest_version = 2;
|
111
|
+
// The latest account state root hash.
|
112
|
+
bytes account_state_root_hash = 3;
|
113
|
+
// From left to right, root hashes of all frozen subtrees.
|
114
|
+
repeated bytes ledger_frozen_subtree_hashes = 4;
|
115
|
+
}
|
data/protos/transaction.proto
CHANGED
@@ -24,11 +24,15 @@ message RawTransaction {
|
|
24
24
|
// This bypasses the rules for regular transactions so will typically be
|
25
25
|
// rejected. Only under special circumstances will it be accepted.
|
26
26
|
WriteSet write_set = 4;
|
27
|
+
// The transaction script to execute.
|
28
|
+
Script script = 8;
|
29
|
+
// The MOVE Module to publish.
|
30
|
+
Module module = 9;
|
27
31
|
}
|
28
32
|
// Maximal total gas specified by wallet to spend for this transaction.
|
29
33
|
uint64 max_gas_amount = 5;
|
30
34
|
// The price to be paid for each unit of gas.
|
31
|
-
uint64 gas_unit_price = 6;
|
35
|
+
uint64 gas_unit_price = 6;
|
32
36
|
// Expiration time for this transaction. If storage is queried and
|
33
37
|
// the time returned is greater than or equal to this time and this
|
34
38
|
// transaction has not been included, you can be certain that it will
|
@@ -44,6 +48,12 @@ message Program {
|
|
44
48
|
repeated bytes modules = 3;
|
45
49
|
}
|
46
50
|
|
51
|
+
// The code for the transaction to execute
|
52
|
+
message Script {
|
53
|
+
bytes code = 1;
|
54
|
+
repeated TransactionArgument arguments = 2;
|
55
|
+
}
|
56
|
+
|
47
57
|
// An argument to the transaction if the transaction takes arguments
|
48
58
|
message TransactionArgument {
|
49
59
|
enum ArgType {
|
@@ -56,6 +66,11 @@ message TransactionArgument {
|
|
56
66
|
bytes data = 2;
|
57
67
|
}
|
58
68
|
|
69
|
+
// A Move Module to publish
|
70
|
+
message Module {
|
71
|
+
bytes code = 1;
|
72
|
+
}
|
73
|
+
|
59
74
|
// A generic structure that represents signed RawTransaction
|
60
75
|
message SignedTransaction {
|
61
76
|
// The serialized Protobuf bytes for RawTransaction, for which the signature
|
@@ -0,0 +1,18 @@
|
|
1
|
+
// Copyright (c) The Libra Core Contributors
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
3
|
+
|
4
|
+
syntax = "proto3";
|
5
|
+
|
6
|
+
package types;
|
7
|
+
|
8
|
+
// Protobuf definition for the Rust struct ValidatorPublicKeys
|
9
|
+
message ValidatorPublicKeys {
|
10
|
+
// Validator account address
|
11
|
+
bytes account_address = 1;
|
12
|
+
// Consensus public key
|
13
|
+
bytes consensus_public_key = 2;
|
14
|
+
// Network signing publick key
|
15
|
+
bytes network_signing_public_key = 3;
|
16
|
+
/// Network identity publick key
|
17
|
+
bytes network_identity_public_key = 4;
|
18
|
+
}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
// Copyright (c) The Libra Core Contributors
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
3
|
+
|
4
|
+
syntax = "proto3";
|
5
|
+
|
6
|
+
package types;
|
7
|
+
|
8
|
+
import "validator_public_keys.proto";
|
9
|
+
|
10
|
+
// Protobuf definition for the Rust struct ValidatorSet.
|
11
|
+
message ValidatorSet {
|
12
|
+
repeated ValidatorPublicKeys validator_public_keys = 1;
|
13
|
+
}
|
data/protos/vm_errors.proto
CHANGED
@@ -5,6 +5,8 @@ syntax = "proto3";
|
|
5
5
|
|
6
6
|
package types;
|
7
7
|
|
8
|
+
import "language_storage.proto";
|
9
|
+
|
8
10
|
// The statuses and errors produced by the VM can be categorized into a
|
9
11
|
// couple different types:
|
10
12
|
// 1. Validation Statuses: all the errors that can (/should) be
|
@@ -83,12 +85,15 @@ message VMVerificationStatus {
|
|
83
85
|
enum StatusKind {
|
84
86
|
SCRIPT = 0;
|
85
87
|
MODULE = 1;
|
88
|
+
DEPENDENCY = 2;
|
86
89
|
}
|
87
90
|
StatusKind status_kind = 1;
|
88
|
-
// For StatusKind::SCRIPT this is ignored.
|
91
|
+
// For StatusKind::SCRIPT and DEPENDENCY this is ignored.
|
89
92
|
uint32 module_idx = 2;
|
90
93
|
VMVerificationErrorKind error_kind = 3;
|
91
94
|
string message = 4;
|
95
|
+
// For StatusKind::SCRIPT and MODULE this is ignored.
|
96
|
+
ModuleId dependency_id = 5;
|
92
97
|
}
|
93
98
|
|
94
99
|
// When a code module/script is published it is verified. These are the
|
@@ -97,74 +102,81 @@ enum VMVerificationErrorKind {
|
|
97
102
|
// Likewise default to a unknown verification error
|
98
103
|
UnknownVerificationError = 0;
|
99
104
|
IndexOutOfBounds = 1;
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
105
|
+
CodeUnitIndexOutOfBounds = 2;
|
106
|
+
RangeOutOfBounds = 3;
|
107
|
+
InvalidSignatureToken = 4;
|
108
|
+
InvalidFieldDefReference = 5;
|
109
|
+
RecursiveStructDefinition = 6;
|
110
|
+
InvalidResourceField = 7;
|
111
|
+
InvalidFallThrough = 8;
|
112
|
+
JoinFailure = 9;
|
113
|
+
NegativeStackSizeWithinBlock = 10;
|
114
|
+
UnbalancedStack = 11;
|
115
|
+
InvalidMainFunctionSignature = 12;
|
116
|
+
DuplicateElement = 13;
|
117
|
+
InvalidModuleHandle = 14;
|
118
|
+
UnimplementedHandle = 15;
|
119
|
+
InconsistentFields = 16;
|
120
|
+
UnusedFields = 17;
|
121
|
+
LookupFailed = 18;
|
122
|
+
VisibilityMismatch = 19;
|
123
|
+
TypeResolutionFailure = 20;
|
124
|
+
TypeMismatch = 21;
|
125
|
+
MissingDependency = 22;
|
126
|
+
PopReferenceError = 23;
|
127
|
+
PopResourceError = 24;
|
128
|
+
ReleaseRefTypeMismatchError = 25;
|
129
|
+
BrTypeMismatchError = 26;
|
130
|
+
AbortTypeMismatchError = 27;
|
131
|
+
StLocTypeMismatchError = 28;
|
132
|
+
StLocUnsafeToDestroyError = 29;
|
133
|
+
RetUnsafeToDestroyError = 30;
|
134
|
+
RetTypeMismatchError = 31;
|
135
|
+
FreezeRefTypeMismatchError = 32;
|
136
|
+
FreezeRefExistsMutableBorrowError = 33;
|
137
|
+
BorrowFieldTypeMismatchError = 34;
|
138
|
+
BorrowFieldBadFieldError = 35;
|
139
|
+
BorrowFieldExistsMutableBorrowError = 36;
|
140
|
+
CopyLocUnavailableError = 37;
|
141
|
+
CopyLocResourceError = 38;
|
142
|
+
CopyLocExistsBorrowError = 39;
|
143
|
+
MoveLocUnavailableError = 40;
|
144
|
+
MoveLocExistsBorrowError = 41;
|
145
|
+
BorrowLocReferenceError = 42;
|
146
|
+
BorrowLocUnavailableError = 43;
|
147
|
+
BorrowLocExistsBorrowError = 44;
|
148
|
+
CallTypeMismatchError = 45;
|
149
|
+
CallBorrowedMutableReferenceError = 46;
|
150
|
+
PackTypeMismatchError = 47;
|
151
|
+
UnpackTypeMismatchError = 48;
|
152
|
+
ReadRefTypeMismatchError = 49;
|
153
|
+
ReadRefResourceError = 50;
|
154
|
+
ReadRefExistsMutableBorrowError = 51;
|
155
|
+
WriteRefTypeMismatchError = 52;
|
156
|
+
WriteRefResourceError = 53;
|
157
|
+
WriteRefExistsBorrowError = 54;
|
158
|
+
WriteRefNoMutableReferenceError = 55;
|
159
|
+
IntegerOpTypeMismatchError = 56;
|
160
|
+
BooleanOpTypeMismatchError = 57;
|
161
|
+
EqualityOpTypeMismatchError = 58;
|
162
|
+
ExistsResourceTypeMismatchError = 59;
|
163
|
+
ExistsNoResourceError = 60;
|
164
|
+
BorrowGlobalTypeMismatchError = 61;
|
165
|
+
BorrowGlobalNoResourceError = 62;
|
166
|
+
MoveFromTypeMismatchError = 63;
|
167
|
+
MoveFromNoResourceError = 64;
|
168
|
+
MoveToSenderTypeMismatchError = 65;
|
169
|
+
MoveToSenderNoResourceError = 66;
|
170
|
+
CreateAccountTypeMismatchError = 67;
|
171
|
+
GlobalReferenceError = 68;
|
164
172
|
// The self address of a module the transaction is publishing is not the sender address
|
165
|
-
ModuleAddressDoesNotMatchSender =
|
173
|
+
ModuleAddressDoesNotMatchSender = 69;
|
166
174
|
// The module does not have any module handles. Each module or script must have at least one module handle.
|
167
|
-
NoModuleHandles =
|
175
|
+
NoModuleHandles = 70;
|
176
|
+
MissingAcquiresResourceAnnotationError = 71;
|
177
|
+
ExtraneousAcquiresResourceAnnotationError = 72;
|
178
|
+
DuplicateAcquiresResourceAnnotationError = 73;
|
179
|
+
InvalidAcquiresResourceAnnotationError = 74;
|
168
180
|
}
|
169
181
|
|
170
182
|
// These are errors that the VM might raise if a violation of internal
|
@@ -179,6 +191,8 @@ enum VMInvariantViolationError {
|
|
179
191
|
LinkerError = 6;
|
180
192
|
LocalReferenceError = 7;
|
181
193
|
StorageError = 8;
|
194
|
+
InternalTypeError = 9;
|
195
|
+
EventKeyMismatch = 10;
|
182
196
|
}
|
183
197
|
|
184
198
|
// Errors that can arise from binary decoding (deserialization)
|
@@ -225,11 +239,13 @@ enum RuntimeStatus {
|
|
225
239
|
// The sender is trying to publish a module named `M`, but the sender's account already contains
|
226
240
|
// a module with this name.
|
227
241
|
DuplicateModuleName = 15;
|
242
|
+
ExecutionStackOverflow = 16;
|
243
|
+
CallStackOverflow = 17;
|
228
244
|
}
|
229
245
|
|
230
|
-
// user-defined
|
231
|
-
message
|
232
|
-
uint64
|
246
|
+
// user-defined abort error code number
|
247
|
+
message Aborted {
|
248
|
+
uint64 aborted_error_code = 1;
|
233
249
|
}
|
234
250
|
|
235
251
|
message ArithmeticError {
|
@@ -258,7 +274,7 @@ message DynamicReferenceError {
|
|
258
274
|
message ExecutionStatus {
|
259
275
|
oneof execution_status {
|
260
276
|
RuntimeStatus runtime_status = 1;
|
261
|
-
|
277
|
+
Aborted aborted = 2;
|
262
278
|
ArithmeticError arithmetic_error = 3;
|
263
279
|
DynamicReferenceError reference_error = 4;
|
264
280
|
}
|