commit
2f90b184f1
11
CHANGELOG.md
11
CHANGELOG.md
|
@ -1,5 +1,16 @@
|
|||
# Changelog
|
||||
|
||||
## 0.19.1
|
||||
|
||||
*June 25, 2018*
|
||||
|
||||
* Update to Tendermint v0.21.0 (fixes websocket memory leak and a few other
|
||||
things)
|
||||
|
||||
BREAKING CHANGES:
|
||||
* Changes the default ports from `4665X` to `2665X`
|
||||
|
||||
|
||||
## 0.19.0
|
||||
|
||||
*June 13, 2018*
|
||||
|
|
|
@ -256,7 +256,7 @@
|
|||
"leveldb/table",
|
||||
"leveldb/util"
|
||||
]
|
||||
revision = "e2150783cd35f5b607daca48afd8c57ec54cc995"
|
||||
revision = "0d5a0ceb10cf9ab89fdd744cc8c50a83134f6697"
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/tendermint/abci"
|
||||
|
@ -267,8 +267,8 @@
|
|||
"server",
|
||||
"types"
|
||||
]
|
||||
revision = "ebee2fe114020aa49c70bbbae50b7079fc7e7b90"
|
||||
version = "v0.11.0"
|
||||
revision = "198dccf0ddfd1bb176f87657e3286a05a6ed9540"
|
||||
version = "v0.12.0"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
|
@ -347,11 +347,10 @@
|
|||
"types",
|
||||
"version"
|
||||
]
|
||||
revision = "27bd1deabe4ba6a2d9b463b8f3e3f1e31b993e61"
|
||||
version = "v0.20.0"
|
||||
revision = "46369a1ab76f274ab47179c4176221842b8207b4"
|
||||
version = "v0.21.0"
|
||||
|
||||
[[projects]]
|
||||
branch = "develop"
|
||||
name = "github.com/tendermint/tmlibs"
|
||||
packages = [
|
||||
"autofile",
|
||||
|
@ -366,7 +365,8 @@
|
|||
"merkle",
|
||||
"merkle/tmhash"
|
||||
]
|
||||
revision = "0c98d10b4ffbd87978d79c160e835b3d3df241ec"
|
||||
revision = "49596e0a1f48866603813df843c9409fc19805c6"
|
||||
version = "v0.9.0"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
|
@ -374,6 +374,7 @@
|
|||
packages = [
|
||||
"blowfish",
|
||||
"curve25519",
|
||||
"internal/subtle",
|
||||
"nacl/box",
|
||||
"nacl/secretbox",
|
||||
"openpgp/armor",
|
||||
|
@ -382,7 +383,7 @@
|
|||
"ripemd160",
|
||||
"salsa20/salsa"
|
||||
]
|
||||
revision = "8ac0e0d97ce45cd83d1d7243c060cb8461dda5e9"
|
||||
revision = "a49355c7e3f8fe157a85be2f77e6e269a0f89602"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
|
@ -396,13 +397,13 @@
|
|||
"internal/timeseries",
|
||||
"trace"
|
||||
]
|
||||
revision = "db08ff08e8622530d9ed3a0e8ac279f6d4c02196"
|
||||
revision = "afe8f62b1d6bbd81f31868121a50b06d8188e1f9"
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
name = "golang.org/x/sys"
|
||||
packages = ["unix"]
|
||||
revision = "bff228c7b664c5fce602223a05fb708fd8654986"
|
||||
revision = "a200a19cb90b19de298170992778b1fda7217bd6"
|
||||
|
||||
[[projects]]
|
||||
name = "golang.org/x/text"
|
||||
|
@ -463,6 +464,6 @@
|
|||
[solve-meta]
|
||||
analyzer-name = "dep"
|
||||
analyzer-version = 1
|
||||
inputs-digest = "31f69b235b2d8f879a215c9e8ca0919adc62d21f6830b17931a3a0efb058721f"
|
||||
inputs-digest = "3a437ed2c22314c3762584ff52c76a58916fd9e9fef00035aa01ae65bce08637"
|
||||
solver-name = "gps-cdcl"
|
||||
solver-version = 1
|
||||
|
|
20
Gopkg.toml
20
Gopkg.toml
|
@ -52,29 +52,29 @@
|
|||
name = "github.com/stretchr/testify"
|
||||
version = "~1.2.1"
|
||||
|
||||
[[constraint]]
|
||||
[[override]]
|
||||
name = "github.com/tendermint/abci"
|
||||
version = "=0.11.0"
|
||||
version = "=0.12.0"
|
||||
|
||||
[[constraint]]
|
||||
[[override]]
|
||||
name = "github.com/tendermint/go-crypto"
|
||||
version = "~0.6.2"
|
||||
version = "=0.6.2"
|
||||
|
||||
[[constraint]]
|
||||
[[override]]
|
||||
name = "github.com/tendermint/go-amino"
|
||||
version = "=0.9.9"
|
||||
|
||||
[[constraint]]
|
||||
[[override]]
|
||||
name = "github.com/tendermint/iavl"
|
||||
version = "0.8.0-rc0"
|
||||
version = "=0.8.0-rc0"
|
||||
|
||||
[[constraint]]
|
||||
[[override]]
|
||||
name = "github.com/tendermint/tendermint"
|
||||
version = "=0.20.0"
|
||||
version = "=0.21.0"
|
||||
|
||||
[[override]]
|
||||
name = "github.com/tendermint/tmlibs"
|
||||
branch = "develop"
|
||||
version = "=v0.9.0"
|
||||
|
||||
# this got updated and broke, so locked to an old working commit ...
|
||||
[[override]]
|
||||
|
|
|
@ -87,7 +87,6 @@ func NewBaseApp(name string, cdc *wire.Codec, logger log.Logger, db dbm.DB) *Bas
|
|||
txDecoder: defaultTxDecoder(cdc),
|
||||
}
|
||||
// Register the undefined & root codespaces, which should not be used by any modules
|
||||
app.codespacer.RegisterOrPanic(sdk.CodespaceUndefined)
|
||||
app.codespacer.RegisterOrPanic(sdk.CodespaceRoot)
|
||||
return app
|
||||
}
|
||||
|
@ -137,7 +136,7 @@ func defaultTxDecoder(cdc *wire.Codec) sdk.TxDecoder {
|
|||
// are registered by MakeTxCodec
|
||||
err := cdc.UnmarshalBinary(txBytes, &tx)
|
||||
if err != nil {
|
||||
return nil, sdk.ErrTxDecode("").Trace(err.Error())
|
||||
return nil, sdk.ErrTxDecode("").TraceSDK(err.Error())
|
||||
}
|
||||
return tx, nil
|
||||
}
|
||||
|
@ -486,7 +485,6 @@ func (app *BaseApp) runTx(mode runTxMode, txBytes []byte, tx sdk.Tx) (result sdk
|
|||
// Validate the Msg.
|
||||
err := msg.ValidateBasic()
|
||||
if err != nil {
|
||||
err = err.WithDefaultCodespace(sdk.CodespaceRoot)
|
||||
return err.Result()
|
||||
}
|
||||
|
||||
|
|
|
@ -41,13 +41,13 @@ func (msg MsgSetTrend) String() string {
|
|||
// Validate Basic is used to quickly disqualify obviously invalid messages quickly
|
||||
func (msg MsgSetTrend) ValidateBasic() sdk.Error {
|
||||
if len(msg.Sender) == 0 {
|
||||
return sdk.ErrUnknownAddress(msg.Sender.String()).Trace("")
|
||||
return sdk.ErrUnknownAddress(msg.Sender.String()).TraceSDK("")
|
||||
}
|
||||
if strings.Contains(msg.Cool, "hot") {
|
||||
return sdk.ErrUnauthorized("").Trace("hot is not cool")
|
||||
return sdk.ErrUnauthorized("").TraceSDK("hot is not cool")
|
||||
}
|
||||
if strings.Contains(msg.Cool, "warm") {
|
||||
return sdk.ErrUnauthorized("").Trace("warm is not very cool")
|
||||
return sdk.ErrUnauthorized("").TraceSDK("warm is not very cool")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
@ -91,7 +91,7 @@ func (msg MsgQuiz) String() string {
|
|||
// Validate Basic is used to quickly disqualify obviously invalid messages quickly
|
||||
func (msg MsgQuiz) ValidateBasic() sdk.Error {
|
||||
if len(msg.Sender) == 0 {
|
||||
return sdk.ErrUnknownAddress(msg.Sender.String()).Trace("")
|
||||
return sdk.ErrUnknownAddress(msg.Sender.String()).TraceSDK("")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -72,7 +72,7 @@ func UnsafeResetAllCmd(ctx *Context) *cobra.Command {
|
|||
Short: "Reset blockchain database, priv_validator.json file, and the logger",
|
||||
RunE: func(cmd *cobra.Command, args []string) error {
|
||||
cfg := ctx.Config
|
||||
tcmd.ResetAll(cfg.DBDir(), cfg.PrivValidatorFile(), ctx.Logger)
|
||||
tcmd.ResetAll(cfg.DBDir(), cfg.P2P.AddrBookFile(), cfg.PrivValidatorFile(), ctx.Logger)
|
||||
return nil
|
||||
},
|
||||
}
|
||||
|
|
|
@ -55,9 +55,6 @@ const (
|
|||
CodeOutOfGas CodeType = 12
|
||||
|
||||
// CodespaceRoot is a codespace for error codes in this file only.
|
||||
// Notice that 0 is an "unset" codespace, which can be overridden with
|
||||
// Error.WithDefaultCodespace().
|
||||
CodespaceUndefined CodespaceType = 0
|
||||
CodespaceRoot CodespaceType = 1
|
||||
|
||||
// Maximum reservable codespace (2^16 - 1)
|
||||
|
@ -141,49 +138,64 @@ func ErrOutOfGas(msg string) Error {
|
|||
//----------------------------------------
|
||||
// Error & sdkError
|
||||
|
||||
type cmnError = cmn.Error
|
||||
|
||||
// sdk Error type
|
||||
type Error interface {
|
||||
Error() string
|
||||
// Implements cmn.Error
|
||||
// Error() string
|
||||
// Stacktrace() cmn.Error
|
||||
// Trace(offset int, format string, args ...interface{}) cmn.Error
|
||||
// Data() interface{}
|
||||
cmnError
|
||||
|
||||
// convenience
|
||||
TraceSDK(format string, args ...interface{}) Error
|
||||
|
||||
Code() CodeType
|
||||
Codespace() CodespaceType
|
||||
ABCILog() string
|
||||
ABCICode() ABCICodeType
|
||||
WithDefaultCodespace(codespace CodespaceType) Error
|
||||
Trace(msg string) Error
|
||||
T() interface{}
|
||||
Result() Result
|
||||
QueryResult() abci.ResponseQuery
|
||||
}
|
||||
|
||||
// NewError - create an error
|
||||
func NewError(codespace CodespaceType, code CodeType, msg string) Error {
|
||||
return newError(codespace, code, msg)
|
||||
// NewError - create an error.
|
||||
func NewError(codespace CodespaceType, code CodeType, format string, args ...interface{}) Error {
|
||||
return newError(codespace, code, format, args...)
|
||||
}
|
||||
|
||||
func newErrorWithRootCodespace(code CodeType, msg string) *sdkError {
|
||||
return newError(CodespaceRoot, code, msg)
|
||||
func newErrorWithRootCodespace(code CodeType, format string, args ...interface{}) *sdkError {
|
||||
return newError(CodespaceRoot, code, format, args...)
|
||||
}
|
||||
|
||||
func newError(codespace CodespaceType, code CodeType, msg string) *sdkError {
|
||||
if msg == "" {
|
||||
msg = CodeToDefaultMsg(code)
|
||||
func newError(codespace CodespaceType, code CodeType, format string, args ...interface{}) *sdkError {
|
||||
if format == "" {
|
||||
format = CodeToDefaultMsg(code)
|
||||
}
|
||||
return &sdkError{
|
||||
codespace: codespace,
|
||||
code: code,
|
||||
err: cmn.NewErrorWithT(code, msg),
|
||||
cmnError: cmn.NewError(format, args...),
|
||||
}
|
||||
}
|
||||
|
||||
type sdkError struct {
|
||||
codespace CodespaceType
|
||||
code CodeType
|
||||
err cmn.Error
|
||||
cmnError
|
||||
}
|
||||
|
||||
// Implements ABCIError.
|
||||
func (err *sdkError) TraceSDK(format string, args ...interface{}) Error {
|
||||
err.Trace(1, format, args...)
|
||||
return err
|
||||
}
|
||||
|
||||
// Implements ABCIError.
|
||||
// Overrides err.Error.Error().
|
||||
func (err *sdkError) Error() string {
|
||||
return fmt.Sprintf("Error{%d:%d,%#v}", err.codespace, err.code, err.err)
|
||||
return fmt.Sprintf("Error{%d:%d,%#v}", err.codespace, err.code, err.cmnError)
|
||||
}
|
||||
|
||||
// Implements ABCIError.
|
||||
|
@ -209,33 +221,7 @@ Code: %v
|
|||
ABCICode: %v
|
||||
Error: %#v
|
||||
=== /ABCI Log ===
|
||||
`, err.codespace, err.code, err.ABCICode(), err.err)
|
||||
}
|
||||
|
||||
// Add tracing information with msg.
|
||||
func (err *sdkError) Trace(msg string) Error {
|
||||
return &sdkError{
|
||||
codespace: err.codespace,
|
||||
code: err.code,
|
||||
err: err.err.Trace(msg),
|
||||
}
|
||||
}
|
||||
|
||||
// Implements Error.
|
||||
func (err *sdkError) WithDefaultCodespace(cs CodespaceType) Error {
|
||||
codespace := err.codespace
|
||||
if codespace == CodespaceUndefined {
|
||||
codespace = cs
|
||||
}
|
||||
return &sdkError{
|
||||
codespace: codespace,
|
||||
code: err.code,
|
||||
err: err.err,
|
||||
}
|
||||
}
|
||||
|
||||
func (err *sdkError) T() interface{} {
|
||||
return err.err.T()
|
||||
`, err.codespace, err.code, err.ABCICode(), err.cmnError)
|
||||
}
|
||||
|
||||
func (err *sdkError) Result() Result {
|
||||
|
|
|
@ -7,9 +7,9 @@ package version
|
|||
|
||||
const Maj = "0"
|
||||
const Min = "19"
|
||||
const Fix = "0"
|
||||
const Fix = "1"
|
||||
|
||||
const Version = "0.19.0"
|
||||
const Version = "0.19.1"
|
||||
|
||||
// GitCommit set by build flags
|
||||
var GitCommit = ""
|
||||
|
|
|
@ -27,28 +27,28 @@ func (msg MsgSend) ValidateBasic() sdk.Error {
|
|||
// this just makes sure all the inputs and outputs are properly formatted,
|
||||
// not that they actually have the money inside
|
||||
if len(msg.Inputs) == 0 {
|
||||
return ErrNoInputs(DefaultCodespace).Trace("")
|
||||
return ErrNoInputs(DefaultCodespace).TraceSDK("")
|
||||
}
|
||||
if len(msg.Outputs) == 0 {
|
||||
return ErrNoOutputs(DefaultCodespace).Trace("")
|
||||
return ErrNoOutputs(DefaultCodespace).TraceSDK("")
|
||||
}
|
||||
// make sure all inputs and outputs are individually valid
|
||||
var totalIn, totalOut sdk.Coins
|
||||
for _, in := range msg.Inputs {
|
||||
if err := in.ValidateBasic(); err != nil {
|
||||
return err.Trace("")
|
||||
return err.TraceSDK("")
|
||||
}
|
||||
totalIn = totalIn.Plus(in.Coins)
|
||||
}
|
||||
for _, out := range msg.Outputs {
|
||||
if err := out.ValidateBasic(); err != nil {
|
||||
return err.Trace("")
|
||||
return err.TraceSDK("")
|
||||
}
|
||||
totalOut = totalOut.Plus(out.Coins)
|
||||
}
|
||||
// make sure inputs and outputs match
|
||||
if !totalIn.IsEqual(totalOut) {
|
||||
return sdk.ErrInvalidCoins(totalIn.String()).Trace("inputs and outputs don't match")
|
||||
return sdk.ErrInvalidCoins(totalIn.String()).TraceSDK("inputs and outputs don't match")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
@ -107,11 +107,11 @@ func (msg MsgIssue) Type() string { return "bank" } // TODO: "bank/issue"
|
|||
func (msg MsgIssue) ValidateBasic() sdk.Error {
|
||||
// XXX
|
||||
if len(msg.Outputs) == 0 {
|
||||
return ErrNoOutputs(DefaultCodespace).Trace("")
|
||||
return ErrNoOutputs(DefaultCodespace).TraceSDK("")
|
||||
}
|
||||
for _, out := range msg.Outputs {
|
||||
if err := out.ValidateBasic(); err != nil {
|
||||
return err.Trace("")
|
||||
return err.TraceSDK("")
|
||||
}
|
||||
}
|
||||
return nil
|
||||
|
|
|
@ -65,7 +65,7 @@ func (p IBCPacket) GetSignBytes() []byte {
|
|||
// validator the ibc packey
|
||||
func (p IBCPacket) ValidateBasic() sdk.Error {
|
||||
if p.SrcChain == p.DestChain {
|
||||
return ErrIdenticalChains(DefaultCodespace).Trace("")
|
||||
return ErrIdenticalChains(DefaultCodespace).TraceSDK("")
|
||||
}
|
||||
if !p.Coins.IsValid() {
|
||||
return sdk.ErrInvalidCoins("")
|
||||
|
|
Loading…
Reference in New Issue