OSDN Git Service

Thanos did someting
[bytom/vapor.git] / vendor / github.com / btcsuite / btcd / blockchain / error.go
diff --git a/vendor/github.com/btcsuite/btcd/blockchain/error.go b/vendor/github.com/btcsuite/btcd/blockchain/error.go
deleted file mode 100644 (file)
index eb30d8a..0000000
+++ /dev/null
@@ -1,288 +0,0 @@
-// Copyright (c) 2014-2016 The btcsuite developers
-// Use of this source code is governed by an ISC
-// license that can be found in the LICENSE file.
-
-package blockchain
-
-import (
-       "fmt"
-)
-
-// DeploymentError identifies an error that indicates a deployment ID was
-// specified that does not exist.
-type DeploymentError uint32
-
-// Error returns the assertion error as a human-readable string and satisfies
-// the error interface.
-func (e DeploymentError) Error() string {
-       return fmt.Sprintf("deployment ID %d does not exist", uint32(e))
-}
-
-// AssertError identifies an error that indicates an internal code consistency
-// issue and should be treated as a critical and unrecoverable error.
-type AssertError string
-
-// Error returns the assertion error as a human-readable string and satisfies
-// the error interface.
-func (e AssertError) Error() string {
-       return "assertion failed: " + string(e)
-}
-
-// ErrorCode identifies a kind of error.
-type ErrorCode int
-
-// These constants are used to identify a specific RuleError.
-const (
-       // ErrDuplicateBlock indicates a block with the same hash already
-       // exists.
-       ErrDuplicateBlock ErrorCode = iota
-
-       // ErrBlockTooBig indicates the serialized block size exceeds the
-       // maximum allowed size.
-       ErrBlockTooBig
-
-       // ErrBlockWeightTooHigh indicates that the block's computed weight
-       // metric exceeds the maximum allowed value.
-       ErrBlockWeightTooHigh
-
-       // ErrBlockVersionTooOld indicates the block version is too old and is
-       // no longer accepted since the majority of the network has upgraded
-       // to a newer version.
-       ErrBlockVersionTooOld
-
-       // ErrInvalidTime indicates the time in the passed block has a precision
-       // that is more than one second.  The chain consensus rules require
-       // timestamps to have a maximum precision of one second.
-       ErrInvalidTime
-
-       // ErrTimeTooOld indicates the time is either before the median time of
-       // the last several blocks per the chain consensus rules or prior to the
-       // most recent checkpoint.
-       ErrTimeTooOld
-
-       // ErrTimeTooNew indicates the time is too far in the future as compared
-       // the current time.
-       ErrTimeTooNew
-
-       // ErrDifficultyTooLow indicates the difficulty for the block is lower
-       // than the difficulty required by the most recent checkpoint.
-       ErrDifficultyTooLow
-
-       // ErrUnexpectedDifficulty indicates specified bits do not align with
-       // the expected value either because it doesn't match the calculated
-       // valued based on difficulty regarted rules or it is out of the valid
-       // range.
-       ErrUnexpectedDifficulty
-
-       // ErrHighHash indicates the block does not hash to a value which is
-       // lower than the required target difficultly.
-       ErrHighHash
-
-       // ErrBadMerkleRoot indicates the calculated merkle root does not match
-       // the expected value.
-       ErrBadMerkleRoot
-
-       // ErrBadCheckpoint indicates a block that is expected to be at a
-       // checkpoint height does not match the expected one.
-       ErrBadCheckpoint
-
-       // ErrForkTooOld indicates a block is attempting to fork the block chain
-       // before the most recent checkpoint.
-       ErrForkTooOld
-
-       // ErrCheckpointTimeTooOld indicates a block has a timestamp before the
-       // most recent checkpoint.
-       ErrCheckpointTimeTooOld
-
-       // ErrNoTransactions indicates the block does not have a least one
-       // transaction.  A valid block must have at least the coinbase
-       // transaction.
-       ErrNoTransactions
-
-       // ErrTooManyTransactions indicates the block has more transactions than
-       // are allowed.
-       ErrTooManyTransactions
-
-       // ErrNoTxInputs indicates a transaction does not have any inputs.  A
-       // valid transaction must have at least one input.
-       ErrNoTxInputs
-
-       // ErrNoTxOutputs indicates a transaction does not have any outputs.  A
-       // valid transaction must have at least one output.
-       ErrNoTxOutputs
-
-       // ErrTxTooBig indicates a transaction exceeds the maximum allowed size
-       // when serialized.
-       ErrTxTooBig
-
-       // ErrBadTxOutValue indicates an output value for a transaction is
-       // invalid in some way such as being out of range.
-       ErrBadTxOutValue
-
-       // ErrDuplicateTxInputs indicates a transaction references the same
-       // input more than once.
-       ErrDuplicateTxInputs
-
-       // ErrBadTxInput indicates a transaction input is invalid in some way
-       // such as referencing a previous transaction outpoint which is out of
-       // range or not referencing one at all.
-       ErrBadTxInput
-
-       // ErrMissingTxOut indicates a transaction output referenced by an input
-       // either does not exist or has already been spent.
-       ErrMissingTxOut
-
-       // ErrUnfinalizedTx indicates a transaction has not been finalized.
-       // A valid block may only contain finalized transactions.
-       ErrUnfinalizedTx
-
-       // ErrDuplicateTx indicates a block contains an identical transaction
-       // (or at least two transactions which hash to the same value).  A
-       // valid block may only contain unique transactions.
-       ErrDuplicateTx
-
-       // ErrOverwriteTx indicates a block contains a transaction that has
-       // the same hash as a previous transaction which has not been fully
-       // spent.
-       ErrOverwriteTx
-
-       // ErrImmatureSpend indicates a transaction is attempting to spend a
-       // coinbase that has not yet reached the required maturity.
-       ErrImmatureSpend
-
-       // ErrSpendTooHigh indicates a transaction is attempting to spend more
-       // value than the sum of all of its inputs.
-       ErrSpendTooHigh
-
-       // ErrBadFees indicates the total fees for a block are invalid due to
-       // exceeding the maximum possible value.
-       ErrBadFees
-
-       // ErrTooManySigOps indicates the total number of signature operations
-       // for a transaction or block exceed the maximum allowed limits.
-       ErrTooManySigOps
-
-       // ErrFirstTxNotCoinbase indicates the first transaction in a block
-       // is not a coinbase transaction.
-       ErrFirstTxNotCoinbase
-
-       // ErrMultipleCoinbases indicates a block contains more than one
-       // coinbase transaction.
-       ErrMultipleCoinbases
-
-       // ErrBadCoinbaseScriptLen indicates the length of the signature script
-       // for a coinbase transaction is not within the valid range.
-       ErrBadCoinbaseScriptLen
-
-       // ErrBadCoinbaseValue indicates the amount of a coinbase value does
-       // not match the expected value of the subsidy plus the sum of all fees.
-       ErrBadCoinbaseValue
-
-       // ErrMissingCoinbaseHeight indicates the coinbase transaction for a
-       // block does not start with the serialized block block height as
-       // required for version 2 and higher blocks.
-       ErrMissingCoinbaseHeight
-
-       // ErrBadCoinbaseHeight indicates the serialized block height in the
-       // coinbase transaction for version 2 and higher blocks does not match
-       // the expected value.
-       ErrBadCoinbaseHeight
-
-       // ErrScriptMalformed indicates a transaction script is malformed in
-       // some way.  For example, it might be longer than the maximum allowed
-       // length or fail to parse.
-       ErrScriptMalformed
-
-       // ErrScriptValidation indicates the result of executing transaction
-       // script failed.  The error covers any failure when executing scripts
-       // such signature verification failures and execution past the end of
-       // the stack.
-       ErrScriptValidation
-
-       // ErrUnexpectedWitness indicates that a block includes transactions
-       // with witness data, but doesn't also have a witness commitment within
-       // the coinbase transaction.
-       ErrUnexpectedWitness
-
-       // ErrInvalidWitnessCommitment indicates that a block's witness
-       // commitment is not well formed.
-       ErrInvalidWitnessCommitment
-
-       // ErrWitnessCommitmentMismatch indicates that the witness commitment
-       // included in the block's coinbase transaction doesn't match the
-       // manually computed witness commitment.
-       ErrWitnessCommitmentMismatch
-)
-
-// Map of ErrorCode values back to their constant names for pretty printing.
-var errorCodeStrings = map[ErrorCode]string{
-       ErrDuplicateBlock:            "ErrDuplicateBlock",
-       ErrBlockTooBig:               "ErrBlockTooBig",
-       ErrBlockVersionTooOld:        "ErrBlockVersionTooOld",
-       ErrBlockWeightTooHigh:        "ErrBlockWeightTooHigh",
-       ErrInvalidTime:               "ErrInvalidTime",
-       ErrTimeTooOld:                "ErrTimeTooOld",
-       ErrTimeTooNew:                "ErrTimeTooNew",
-       ErrDifficultyTooLow:          "ErrDifficultyTooLow",
-       ErrUnexpectedDifficulty:      "ErrUnexpectedDifficulty",
-       ErrHighHash:                  "ErrHighHash",
-       ErrBadMerkleRoot:             "ErrBadMerkleRoot",
-       ErrBadCheckpoint:             "ErrBadCheckpoint",
-       ErrForkTooOld:                "ErrForkTooOld",
-       ErrCheckpointTimeTooOld:      "ErrCheckpointTimeTooOld",
-       ErrNoTransactions:            "ErrNoTransactions",
-       ErrTooManyTransactions:       "ErrTooManyTransactions",
-       ErrNoTxInputs:                "ErrNoTxInputs",
-       ErrNoTxOutputs:               "ErrNoTxOutputs",
-       ErrTxTooBig:                  "ErrTxTooBig",
-       ErrBadTxOutValue:             "ErrBadTxOutValue",
-       ErrDuplicateTxInputs:         "ErrDuplicateTxInputs",
-       ErrBadTxInput:                "ErrBadTxInput",
-       ErrMissingTxOut:              "ErrMissingTxOut",
-       ErrUnfinalizedTx:             "ErrUnfinalizedTx",
-       ErrDuplicateTx:               "ErrDuplicateTx",
-       ErrOverwriteTx:               "ErrOverwriteTx",
-       ErrImmatureSpend:             "ErrImmatureSpend",
-       ErrSpendTooHigh:              "ErrSpendTooHigh",
-       ErrBadFees:                   "ErrBadFees",
-       ErrTooManySigOps:             "ErrTooManySigOps",
-       ErrFirstTxNotCoinbase:        "ErrFirstTxNotCoinbase",
-       ErrMultipleCoinbases:         "ErrMultipleCoinbases",
-       ErrBadCoinbaseScriptLen:      "ErrBadCoinbaseScriptLen",
-       ErrBadCoinbaseValue:          "ErrBadCoinbaseValue",
-       ErrMissingCoinbaseHeight:     "ErrMissingCoinbaseHeight",
-       ErrBadCoinbaseHeight:         "ErrBadCoinbaseHeight",
-       ErrScriptMalformed:           "ErrScriptMalformed",
-       ErrScriptValidation:          "ErrScriptValidation",
-       ErrUnexpectedWitness:         "ErrUnexpectedWitness",
-       ErrInvalidWitnessCommitment:  "ErrInvalidWitnessCommitment",
-       ErrWitnessCommitmentMismatch: "ErrWitnessCommitmentMismatch",
-}
-
-// String returns the ErrorCode as a human-readable name.
-func (e ErrorCode) String() string {
-       if s := errorCodeStrings[e]; s != "" {
-               return s
-       }
-       return fmt.Sprintf("Unknown ErrorCode (%d)", int(e))
-}
-
-// RuleError identifies a rule violation.  It is used to indicate that
-// processing of a block or transaction failed due to one of the many validation
-// rules.  The caller can use type assertions to determine if a failure was
-// specifically due to a rule violation and access the ErrorCode field to
-// ascertain the specific reason for the rule violation.
-type RuleError struct {
-       ErrorCode   ErrorCode // Describes the kind of error
-       Description string    // Human readable description of the issue
-}
-
-// Error satisfies the error interface and prints human-readable errors.
-func (e RuleError) Error() string {
-       return e.Description
-}
-
-// ruleError creates an RuleError given a set of arguments.
-func ruleError(c ErrorCode, desc string) RuleError {
-       return RuleError{ErrorCode: c, Description: desc}
-}