Files
tendermint/CHANGELOG_PENDING.md
Dev Ojha cdba0d82f5 p2p: ensure peers can't change IP of known nodes (#5136)
Closes #1581 

This fixes the error in #1581, and also documents the purpose of this line. It ensures that if a peer tells us an address we know about, whose ID is the same as our current ID, we ignore it.

This removes the previous case where the ID's matched, but the IP's did not, which could yield a potential overwrite of the IP associated with the address later on. (This then would yield an eclipse attack)

This was not a vulnerability before though, thanks to a defensive check here 95fc7e58ee/p2p/pex/addrbook.go (L522))
2020-07-22 09:56:38 +04:00

9.4 KiB

v0.34

**

Special thanks to external contributors on this release:

Friendly reminder, we have a bug bounty program.

BREAKING CHANGES:

  • CLI/RPC/Config

    • [evidence] #4959 Add json tags to DuplicateVoteEvidence
    • [light] #4946 tendermint lite cmd has been renamed to tendermint light
    • [privval] #4582 round in private_validator_state.json is no longer a string in json it is now a number
    • [rpc] #4792 /validators are now sorted by voting power (@melekes)
    • [rpc] #4937 Return an error when page pagination param is 0 in /validators, tx_search (@melekes)
    • [rpc] #5137 The json tags of gasWanted & gasUsed in ResponseCheckTx & ResponseDeliverTx have been made snake_case. (gas_wanted & gas_used)
  • Apps

    • [abci] #4704 Add ABCI methods ListSnapshots, LoadSnapshotChunk, OfferSnapshot, and ApplySnapshotChunk for state sync snapshots. ABCIVersion bumped to 0.17.0.
    • [abci] #4989 Proof within ResponseQuery has been renamed to ProofOps
    • [abci] CheckTxType Protobuf enum names are now uppercase, to follow Protobuf style guide
  • P2P Protocol

    • [blockchain] #4637 Migrate blockchain reactor(s) to Protobuf encoding
    • [evidence] #4949 Migrate evidence reactor to Protobuf encoding
    • [mempool] #4940 Migrate mempool from to Protobuf encoding
    • [p2p/pex] #4973 Migrate p2p/pex reactor to Protobuf encoding
    • [statesync] #4943 Migrate state sync reactor to Protobuf encoding
  • Blockchain Protocol

    • [evidence] #4780 Cap evidence to an absolute number (@cmwaters)
      • Add max_num to consensus evidence parameters (default: 50 items).
    • [evidence] #4725 Remove Pubkey from DuplicateVoteEvidence
    • [state] #4845 Include BeginBlock#Events, EndBlock#Events, DeliverTx#Events, GasWanted and GasUsed into LastResultsHash (@melekes)
    • [types] #4792 Sort validators by voting power to enable faster commit verification (@melekes)
  • On-disk serialization

    • [state] #4679 Migrate state module to Protobuf encoding
      • BlockStoreStateJSON is now BlockStoreState and is encoded as binary in the database
    • [store] #4778 Migrate store module to Protobuf encoding
  • Light client, private validator

    • [light] #4964 Migrate light module migration to Protobuf encoding
    • [privval] #4985 Migrate privval module to Protobuf encoding
  • Go API

    • [light] #4946 Rename lite2 pkg to light. Remove lite implementation.
    • [crypto] #4721 Remove SimpleHashFromMap() and SimpleProofsFromMap() (@erikgrinaker)
    • [crypto] #4940 All keys have become []byte instead of [<size>]byte. The byte method no longer returns the marshaled value but just the []byte form of the data.
    • [crypto] \4988 Removal of key type multisig
    • [crypto] #4989 Remove Simple prefixes from SimpleProof, SimpleValueOp & SimpleProofNode.
      • merkle.Proof has been renamed to ProofOps.
      • Protobuf messages Proof & ProofOp has been moved to proto/crypto/merkle
      • SimpleHashFromByteSlices has been renamed to HashFromByteSlices
      • SimpleHashFromByteSlicesIterative has been renamed to HashFromByteSlicesIterative
      • SimpleProofsFromByteSlices has been renamed to ProofsFromByteSlices
    • [crypto] #4941 Remove suffixes from all keys.
      • ed25519: type PrivKeyEd25519 is now PrivKey
      • ed25519: type PubKeyEd25519 is now PubKey
      • secp256k1: typePrivKeySecp256k1 is now PrivKey
      • secp256k1: typePubKeySecp256k1 is now PubKey
      • sr25519: type PrivKeySr25519 is now PrivKey
      • sr25519: type PubKeySr25519 is now PubKey
      • multisig: type PubKeyMultisigThreshold is now PubKey
    • [libs] #4831 Remove Bech32 pkg from Tendermint. This pkg now lives in the cosmos-sdk
    • [rpc/client] #4947 Validators, TxSearch page/per_page params become pointers (@melekes)
      • UnconfirmedTxs limit param is a pointer
    • [proto] #5025 All proto files have been moved to /proto directory.
    • [state] #4679 TxResult is a Protobuf type defined in abci types directory
    • [types] #4939 SignedMsgType has moved to a Protobuf enum types
    • [types] #4962 ConsensusParams, BlockParams, EvidenceParams, ValidatorParams & HashedParams are now Protobuf types
    • [types] #4852 Vote & Proposal SignBytes is now func VoteSignBytes & ProposalSignBytes
    • [types] #4798 Simplify VerifyCommitTrusting func + remove extra validation (@melekes)
    • [types] #4845 Remove ABCIResult
    • [types] #5029 Rename all values from PartsHeader to PartSetHeader to have consistency
    • [types] #4939 Total in Parts & PartSetHeader has been changed from a int to a uint32
    • [types] #4939 Vote: ValidatorIndex & Round are now int32
    • [types] #4939 Proposal: POLRound & Round are now int32
    • [types] #4939 Block: Round is now int32
    • [consensus] #4582 RoundState: Round, LockedRound & CommitRound are now int32
    • [consensus] #4582 HeightVoteSet: round is now int32
    • [rpc/jsonrpc/server] #5141 Remove WriteRPCResponseArrayHTTP (use WriteRPCResponseHTTP instead) (@melekes)

FEATURES:

  • [abci] #5031 Add AppVersion to consensus parameters (@james-ray)
    • ... making it possible to update your ABCI application version via EndBlock response
  • [evidence] #4532 Handle evidence from light clients (@melekes)
  • [evidence] #4821 Amnesia evidence can be detected, verified and committed (@cmwaters)
  • [light] #4532 Submit conflicting headers, if any, to a full node & all witnesses (@melekes)
  • [p2p] #4981 Expose SaveAs func on NodeKey (@melekes)
  • [rpc] #4532 Support BlockByHash query (@fedekunze)
  • [rpc] #4979 Support EXISTS operator in /tx_search query (@melekes)
  • [rpc] #5017 Add /check_tx endpoint to check transactions without executing them or adding them to the mempool (@melekes)
  • [statesync] Add state sync support, where a new node can be rapidly bootstrapped by fetching state snapshots from peers instead of replaying blocks. See the [statesync] config section.
  • [rpc] #5108 Subscribe using the websocket for new evidence events (@cmwaters)

IMPROVEMENTS:

  • [consensus] #4578 Attempt to repair the consensus WAL file (data/cs.wal/wal) automatically in case of corruption (@alessio)
    • The original WAL file will be backed up to data/cs.wal/wal.CORRUPTED.
  • [evidence] #4722 Improved evidence db (@cmwaters)
  • [evidence] #4839 Reject duplicate evidence from being proposed (@cmwaters)
  • [evidence] #4892 Remove redundant header from phantom validator evidence (@cmwaters)
  • [light] #4935 Fetch and compare a new header with witnesses in parallel (@melekes)
  • [light] #4929 compare header w/ witnesses only when doing bisection (@melekes)
  • [light] #4916 validate basic for inbound validator sets and headers before further processing them (@cmwaters)
  • [p2p/conn] #4795 Return err on signChallenge() instead of panic
  • [state] #4781 Export InitStateVersion for the initial state version (@erikgrinaker)
  • [txindex] #4466 Allow to index an event at runtime (@favadi)
    • abci.EventAttribute replaces KV.Pair
  • [libs] #5126 Add a sync package which wraps sync.(RW)Mutex & deadlock.(RW)Mutex and use a build flag (deadlock) in order to enable deadlock checking
  • [types] #4905 Add ValidateBasic to validator and validator set (@cmwaters)
  • [rpc] #4968 JSON encoding is now handled by libs/json, not Amino
  • [mempool] Add RemoveTxByKey() exported function for custom mempool cleaning (@p4u)

BUG FIXES:

  • [blockchain/v2] Correctly set block store base in status responses (@erikgrinaker)
  • [consensus] #4895 Cache the address of the validator to reduce querying a remote KMS (@joe-bowman)
  • [consensus] #4970 Stricter on LastCommitRound check (@cuonglm)
  • [p2p]#5136 Fix error for peer with the same ID but different IPs (@valardragon)
  • [proxy] #5078 Fix a bug, where TM does not exit when ABCI app crashes (@melekes)