mirror of
https://github.com/tendermint/tendermint.git
synced 2026-01-08 06:15:33 +00:00
* add time warping lunatic attack test * create too high and connecton refused errors and add to the light client provider * add height check to provider * introduce block lag * add detection logic for processing forward lunatic attack * add node-side verification logic * clean up tests and formatting * update adr's * update testing * fix fetching the latest block * format * update changelog * implement suggestions * modify ADR's * format * clean up node evidence verification
44 lines
1.5 KiB
Go
44 lines
1.5 KiB
Go
package provider
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
)
|
|
|
|
var (
|
|
// ErrHeightTooHigh is returned when the height is higher than the last
|
|
// block that the provider has. The light client will not remove the provider
|
|
ErrHeightTooHigh = errors.New("height requested is too high")
|
|
// ErrLightBlockNotFound is returned when a provider can't find the
|
|
// requested header (i.e. it has been pruned).
|
|
// The light client will not remove the provider
|
|
ErrLightBlockNotFound = errors.New("light block not found")
|
|
// ErrNoResponse is returned if the provider doesn't respond to the
|
|
// request in a given time. The light client will not remove the provider
|
|
ErrNoResponse = errors.New("client failed to respond")
|
|
// ErrConnectionClosed is returned if the provider closes the connection.
|
|
// In this case we remove the provider.
|
|
ErrConnectionClosed = errors.New("client closed connection")
|
|
)
|
|
|
|
// ErrBadLightBlock is returned when a provider returns an invalid
|
|
// light block. The light client will remove the provider.
|
|
type ErrBadLightBlock struct {
|
|
Reason error
|
|
}
|
|
|
|
func (e ErrBadLightBlock) Error() string {
|
|
return fmt.Sprintf("client provided bad signed header: %s", e.Reason.Error())
|
|
}
|
|
|
|
// ErrUnreliableProvider is a generic error that indicates that the provider isn't
|
|
// behaving in a reliable manner to the light client. The light client will
|
|
// remove the provider
|
|
type ErrUnreliableProvider struct {
|
|
Reason string
|
|
}
|
|
|
|
func (e ErrUnreliableProvider) Error() string {
|
|
return fmt.Sprintf("client deemed unreliable: %s", e.Reason)
|
|
}
|