* validate reactor messages Refs #2683 * validate blockchain messages Refs #2683 * validate evidence messages Refs #2683 * todo * check ProposalPOL and signature sizes * add a changelog entry * check addr is valid when we add it to the addrbook * validate incoming netAddr (not just nil check!) * fixes after Bucky's review * check timestamps * beef up block#ValidateBasic * move some checks into bcBlockResponseMessage * update Gopkg.lock Fix ``` grouped write of manifest, lock and vendor: failed to export github.com/tendermint/go-amino: fatal: failed to unpack tree object 6dcc6ddc143e116455c94b25c1004c99e0d0ca12 ``` by running `dep ensure -update` * bump year since now we check it * generate test/p2p/data on the fly using tendermint testnet * allow sync chains older than 1 year * use full path when creating a testnet * move testnet gen to test/docker/Dockerfile * relax LastCommitRound check Refs #2737 * fix conflicts after merge * add small comment * some ValidateBasic updates * fixes * AppHash length is not fixed
9.2 KiB
Pending
v0.26.0
October 29, 2018
Special thanks to external contributors on this release: @bradyjoestar, @connorwstein, @goolAdapter, @HaoyangLiu, @james-ray, @overbool, @phymbert, @Slamper, @Uzair1995
This release is primarily about adding Version fields to various data structures, optimizing consensus messages for signing and verification in restricted environments (like HSMs and the Ethereum Virtual Machine), and aligning the consensus code with the specification. It also includes our first take at a generalized merkle proof system.
See the UPGRADING.md for details on upgrading to the new version.
Please note that we are still making breaking changes to the protocols. While the new Version fields should help us to keep the software backwards compatible even while upgrading the protocols, we cannot guarantee that new releases will be compatible with old chains just yet. Thanks for bearing with us!
Friendly reminder, we have a bug bounty program.
BREAKING CHANGES:
-
CLI/RPC/Config
- [config] #2232 timeouts as time.Duration, not ints
- [config] #2505 Remove Mempool.RecheckEmpty (it was effectively useless anyways)
- [config] #2490
mempool.wal
is disabled by default - [privval] #2459 Split
SocketPVMsg
s implementations into Request and Response, where the Response may contain a error message (returned by the remote signer) - [state] #2644 Add Version field to State, breaking the format of State as encoded on disk.
- [rpc] #2298
/abci_query
takesprove
argument instead oftrusted
and switches the default behaviour toprove=false
- [rpc] #2654 Remove all
node_info.other.*_version
fields in/status
and/net_info
-
Apps
-
Go API
- [config] #2232 timeouts as time.Duration, not ints
- [crypto/merkle & lite] #2298 Various changes to accomodate General Merkle trees
- [crypto/merkle] #2595 Remove all Hasher objects in favor of byte slices
- [crypto/merkle] #2635 merkle.SimpleHashFromTwoHashes is no longer exported
- [node] #2479 Remove node.RunForever
- [rpc/client] #2298
ABCIQueryOptions.Trusted
->ABCIQueryOptions.Prove
- [types] #2298 Remove
Index
andTotal
fields fromTxProof
. - [types] #2598
VoteTypeXxx
are now of typeSignedMsgType byte
and namedXxxType
, eg.PrevoteType
,PrecommitType
.
-
Blockchain Protocol
- [abci] #2636 Add ValidatorParams field to ConsensusParams. (Used to control which pubkey types validators can use, by abci type)
- [types] Update SignBytes for
Vote
/Proposal
/Heartbeat
: - [types] #2512 Remove the pubkey field from the validator hash
- [types] #2644 Add Version struct to Header
- [types] #2609 ConsensusParams.Hash() is the hash of the amino encoded struct instead of the Merkle tree of the fields
- [state] #2587 Require block.Time of the fist block to be genesis time
- [state] #2644 Require block.Version to match state.Version
- [types] #2670 Header.Hash() builds Merkle tree out of fields in the same order they appear in the header, instead of sorting by field name
- [types] #2682 Use proto3
varint
encoding for ints that are usually unsigned (instead of zigzag encoding).
-
P2P Protocol
- [p2p] #2654 Add
ProtocolVersion
struct with protocol versions to top of DefaultNodeInfo and requireProtocolVersion.Block
to match during peer handshake
- [p2p] #2654 Add
FEATURES:
- [abci] #2557 Add
Codespace
field toResponse{CheckTx, DeliverTx, Query}
- [abci] #2662 Add
BlockVersion
andP2PVersion
toRequestInfo
- [crypto/merkle] #2298 General Merkle Proof scheme for chaining various types of Merkle trees together
IMPROVEMENTS:
- Additional Metrics
- [config] #2232 Added ValidateBasic method, which performs basic checks
- [crypto/ed25519] #2558 Switch to use latest
golang.org/x/crypto
through our fork at github.com/tendermint/crypto - [tools] #2238 Binary dependencies are now locked to a specific git commit
- [libs/log] #2706 Add year to log format
- [consensus] [#2683] validate all incoming messages
- [evidence] [#2683] validate all incoming messages
- [blockchain] [#2683] validate all incoming messages
- [p2p/pex] [#2683] validate pexAddrsMessage addresses
BUG FIXES:
- [autofile] #2428 Group.RotateFile need call Flush() before rename (@goolAdapter)
- [common] #2533 Fixed a bug in the
BitArray.Or
method - [common] #2506 Fixed a bug in the
BitArray.Sub
method (@james-ray) - [common] #2534 Fix
BitArray.PickRandom
to choose uniformly from true bits - [consensus] #1690 Wait for timeoutPrecommit before starting next round
- [consensus] #1745 Wait for Proposal or timeoutProposal before entering prevote
- [consensus] #2583 ensure valid block property with faulty proposer
- [consensus] #2642 Only propose ValidBlock, not LockedBlock
- [consensus] #2642 Initialized ValidRound and LockedRound to -1
- [consensus] #1637 Limit the amount of evidence that can be included in a block
- [consensus] #2646 Simplify Proposal message (align with spec)
- [crypto] #2733 Fix general merkle keypath to start w/ last op's key
- [evidence] #2515 Fix db iter leak (@goolAdapter)
- [libs/event] #2518 Fix event concurrency flaw (@goolAdapter)
- [node] #2434 Make node respond to signal interrupts while sleeping for genesis time
- [state] #2616 Pass nil to NewValidatorSet() when genesis file's Validators field is nil
- [p2p] #2555 Fix p2p switch FlushThrottle value (@goolAdapter)
- [p2p] #2668 Reconnect to originally dialed address (not self-reported address) for persistent peers