service/sdk_validator/resdb_validator/exceptions.py (24 lines of code) (raw):

# Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. """ Custom exceptions used in the `resdb_validator` package. """ class ResDBError(Exception): """Base class for ResDB exceptions.""" class ConfigurationError(ResDBError): """Raised when there is a problem with server configuration""" class DatabaseDoesNotExist(ResDBError): """Raised when trying to delete the database but the db is not there""" class StartupError(ResDBError): """Raised when there is an error starting up the system""" class CyclicBlockchainError(ResDBError): """Raised when there is a cycle in the blockchain""" class KeypairMismatchException(ResDBError): """Raised if the private key(s) provided for signing don't match any of the current owner(s) """ class OperationError(ResDBError): """Raised when an operation cannot go through""" ################################################################################ # Validation errors # # All validation errors (which are handleable errors, not faults) should # subclass ValidationError. However, where possible they should also have their # own distinct type to differentiate them from other validation errors, # especially for the purposes of testing. class ValidationError(ResDBError): """Raised if there was an error in validation""" class DoubleSpend(ValidationError): """Raised if a double spend is found""" class InvalidHash(ValidationError): """Raised if there was an error checking the hash for a particular operation """ class SchemaValidationError(ValidationError): """Raised if there was any error validating an object's schema""" class InvalidSignature(ValidationError): """Raised if there was an error checking the signature for a particular operation """ class AssetIdMismatch(ValidationError): """Raised when multiple transaction inputs related to different assets""" class AmountError(ValidationError): """Raised when there is a problem with a transaction's output amounts""" class InputDoesNotExist(ValidationError): """Raised if a transaction input does not exist""" class TransactionOwnerError(ValidationError): """Raised if a user tries to transfer a transaction they don't own""" class DuplicateTransaction(ValidationError): """Raised if a duplicated transaction is found""" class ThresholdTooDeep(ValidationError): """Raised if threshold condition is too deep""" class MultipleValidatorOperationError(ValidationError): """Raised when a validator update pending but new request is submited""" class MultipleInputsError(ValidationError): """Raised if there were multiple inputs when only one was expected""" class InvalidProposer(ValidationError): """Raised if the public key is not a part of the validator set""" class UnequalValidatorSet(ValidationError): """Raised if the validator sets differ""" class InvalidPowerChange(ValidationError): """Raised if proposed power change in validator set is >=1/3 total power""" class InvalidPublicKey(ValidationError): """Raised if public key doesn't match the encoding type"""