protos/vm_errors.proto in libra_client-0.1.7 vs protos/vm_errors.proto in libra_client-0.2.1
- old
+ new
@@ -22,271 +22,14 @@
// 5. Runtime Statuses: errors that can arise from the execution of a
// transaction (assuming the prologue executes without error). These are
// errors that can occur during execution due to things such as division
// by zero, running out of gas, etc. These do not signify an issue with
// the VM.
-
-// NB: we make a distinction between a status and an error here: A
-// status contains errors, along with possible affirmation of a successful
-// execution or valid prologue.
-
-// The status of a transaction as determined by the prologue.
-enum VMValidationStatusCode {
- // We don't want the default value to be valid
- UnknownValidationStatus = 0;
- // The transaction has a bad signature
- InvalidSignature = 1;
- // Bad account authentication key
- InvalidAuthKey = 2;
- // Sequence number is too old
- SequenceNumberTooOld = 3;
- // Sequence number is too new
- SequenceNumberTooNew = 4;
- // Insufficient balance to pay minimum transaction fee
- InsufficientBalanceForTransactionFee = 5;
- // The transaction has expired
- TransactionExpired = 6;
- // The sending account does not exist
- SendingAccountDoesNotExist = 7;
- // This write set transaction was rejected because it did not meet the
- // requirements for one.
- RejectedWriteSet = 8;
- // This write set transaction cannot be applied to the current state.
- InvalidWriteSet = 9;
- // Length of program field in raw transaction exceeded max length
- ExceededMaxTransactionSize = 10;
- // This script is not on our whitelist of script.
- UnknownScript = 11;
- // Transaction is trying to publish a new module.
- UnknownModule = 12;
- // Max gas units submitted with transaction exceeds max gas units bound
- // in VM
- MaxGasUnitsExceedsMaxGasUnitsBound = 13;
- // Max gas units submitted with transaction not enough to cover the
- // intrinsic cost of the transaction.
- MaxGasUnitsBelowMinTransactionGasUnits = 14;
- // Gas unit price submitted with transaction is below minimum gas price
- // set in the VM.
- GasUnitPriceBelowMinBound = 15;
- // Gas unit price submitted with the transaction is above the maximum
- // gas price set in the VM.
- GasUnitPriceAboveMaxBound = 16;
-}
-
-message VMValidationStatus {
- VMValidationStatusCode code = 1;
- string message = 2;
-}
-
-message VMVerificationStatusList {
- repeated VMVerificationStatus status_list = 1;
-}
-
-message VMVerificationStatus {
- enum StatusKind {
- SCRIPT = 0;
- MODULE = 1;
- DEPENDENCY = 2;
- }
- StatusKind status_kind = 1;
- // For StatusKind::SCRIPT and DEPENDENCY this is ignored.
- uint32 module_idx = 2;
- VMVerificationErrorKind error_kind = 3;
- string message = 4;
- // For StatusKind::SCRIPT and MODULE this is ignored.
- ModuleId dependency_id = 5;
-}
-
-// When a code module/script is published it is verified. These are the
-// possible errors that can arise from the verification process.
-enum VMVerificationErrorKind {
- // Likewise default to a unknown verification error
- UnknownVerificationError = 0;
- IndexOutOfBounds = 1;
- CodeUnitIndexOutOfBounds = 2;
- RangeOutOfBounds = 3;
- InvalidSignatureToken = 4;
- InvalidFieldDefReference = 5;
- RecursiveStructDefinition = 6;
- InvalidResourceField = 7;
- InvalidFallThrough = 8;
- JoinFailure = 9;
- NegativeStackSizeWithinBlock = 10;
- UnbalancedStack = 11;
- InvalidMainFunctionSignature = 12;
- DuplicateElement = 13;
- InvalidModuleHandle = 14;
- UnimplementedHandle = 15;
- InconsistentFields = 16;
- UnusedFields = 17;
- LookupFailed = 18;
- VisibilityMismatch = 19;
- TypeResolutionFailure = 20;
- TypeMismatch = 21;
- MissingDependency = 22;
- PopReferenceError = 23;
- PopResourceError = 24;
- ReleaseRefTypeMismatchError = 25;
- BrTypeMismatchError = 26;
- AbortTypeMismatchError = 27;
- StLocTypeMismatchError = 28;
- StLocUnsafeToDestroyError = 29;
- RetUnsafeToDestroyError = 30;
- RetTypeMismatchError = 31;
- FreezeRefTypeMismatchError = 32;
- FreezeRefExistsMutableBorrowError = 33;
- BorrowFieldTypeMismatchError = 34;
- BorrowFieldBadFieldError = 35;
- BorrowFieldExistsMutableBorrowError = 36;
- CopyLocUnavailableError = 37;
- CopyLocResourceError = 38;
- CopyLocExistsBorrowError = 39;
- MoveLocUnavailableError = 40;
- MoveLocExistsBorrowError = 41;
- BorrowLocReferenceError = 42;
- BorrowLocUnavailableError = 43;
- BorrowLocExistsBorrowError = 44;
- CallTypeMismatchError = 45;
- CallBorrowedMutableReferenceError = 46;
- PackTypeMismatchError = 47;
- UnpackTypeMismatchError = 48;
- ReadRefTypeMismatchError = 49;
- ReadRefResourceError = 50;
- ReadRefExistsMutableBorrowError = 51;
- WriteRefTypeMismatchError = 52;
- WriteRefResourceError = 53;
- WriteRefExistsBorrowError = 54;
- WriteRefNoMutableReferenceError = 55;
- IntegerOpTypeMismatchError = 56;
- BooleanOpTypeMismatchError = 57;
- EqualityOpTypeMismatchError = 58;
- ExistsResourceTypeMismatchError = 59;
- ExistsNoResourceError = 60;
- BorrowGlobalTypeMismatchError = 61;
- BorrowGlobalNoResourceError = 62;
- MoveFromTypeMismatchError = 63;
- MoveFromNoResourceError = 64;
- MoveToSenderTypeMismatchError = 65;
- MoveToSenderNoResourceError = 66;
- CreateAccountTypeMismatchError = 67;
- GlobalReferenceError = 68;
- // The self address of a module the transaction is publishing is not the sender address
- ModuleAddressDoesNotMatchSender = 69;
- // The module does not have any module handles. Each module or script must have at least one module handle.
- NoModuleHandles = 70;
- MissingAcquiresResourceAnnotationError = 71;
- ExtraneousAcquiresResourceAnnotationError = 72;
- DuplicateAcquiresResourceAnnotationError = 73;
- InvalidAcquiresResourceAnnotationError = 74;
-}
-
-// These are errors that the VM might raise if a violation of internal
-// invariants takes place.
-enum VMInvariantViolationError {
- UnknownInvariantViolationError = 0;
- OutOfBoundsIndex = 1;
- OutOfBoundsRange = 2;
- EmptyValueStack = 3;
- EmptyCallStack = 4;
- PCOverflow = 5;
- LinkerError = 6;
- LocalReferenceError = 7;
- StorageError = 8;
- InternalTypeError = 9;
- EventKeyMismatch = 10;
-}
-
-// Errors that can arise from binary decoding (deserialization)
-enum BinaryError {
- UnknownBinaryError = 0;
- Malformed = 1;
- BadMagic = 2;
- UnknownVersion = 3;
- UnknownTableType = 4;
- UnknownSignatureType = 5;
- UnknownSerializedType = 6;
- UnknownOpcode = 7;
- BadHeaderTable = 8;
- UnexpectedSignatureType = 9;
- DuplicateTable = 10;
-}
-
-//*************************
-// Runtime errors/status
-//*************************
-
-enum RuntimeStatus {
- UnknownRuntimeStatus = 0;
- Executed = 1;
- OutOfGas = 2;
- // We tried to access a resource that does not exist under the account.
- ResourceDoesNotExist = 3;
- // We tried to create a resource under an account where that resource
- // already exists.
- ResourceAlreadyExists = 4;
- // We accessed an account that is evicted.
- EvictedAccountAccess = 5;
- // We tried to create an account at an address where an account already
- // exists.
- AccountAddressAlreadyExists = 6;
- TypeError = 7;
- MissingData = 8;
- DataFormatError = 9;
- InvalidData = 10;
- RemoteDataError = 11;
- CannotWriteExistingResource = 12;
- ValueSerializationError = 13;
- ValueDeserializationError = 14;
- // The sender is trying to publish a module named `M`, but the sender's account already contains
- // a module with this name.
- DuplicateModuleName = 15;
- ExecutionStackOverflow = 16;
- CallStackOverflow = 17;
-}
-
-// user-defined abort error code number
-message Aborted {
- uint64 aborted_error_code = 1;
-}
-
-message ArithmeticError {
- enum ArithmeticErrorType {
- UnknownArithmeticError = 0;
- Underflow = 1;
- Overflow = 2;
- DivisionByZero = 3;
- // Fill with more later
- }
- ArithmeticErrorType error_code = 1;
-}
-
-message DynamicReferenceError {
- enum DynamicReferenceErrorType {
- UnknownDynamicReferenceError = 0;
- MoveOfBorrowedResource = 1;
- GlobalRefAlreadyReleased = 2;
- MissingReleaseRef = 3;
- GlobalAlreadyBorrowed = 4;
- // Fill with with more later
- }
- DynamicReferenceErrorType error_code = 1;
-}
-
-message ExecutionStatus {
- oneof execution_status {
- RuntimeStatus runtime_status = 1;
- Aborted aborted = 2;
- ArithmeticError arithmetic_error = 3;
- DynamicReferenceError reference_error = 4;
- }
-}
-
-// The status of the VM
message VMStatus {
- oneof error_type {
- VMValidationStatus validation = 1;
- VMVerificationStatusList verification = 2;
- VMInvariantViolationError invariant_violation = 3;
- BinaryError deserialization = 4;
- ExecutionStatus execution = 5;
- }
+ // e.g. assertion violation, out of gas
+ uint64 major_status = 1;
+ // Any substatus code. e.g. assertion error number
+ bool has_sub_status = 2;
+ uint64 sub_status = 3;
+ bool has_message = 4;
+ string message = 5;
}