Browse Source

Merge branch 'release/v0.22.0' into 1762-tm-stops-producing-blocks

pull/1824/head
Ethan Buchman 6 years ago
committed by GitHub
parent
commit
d6394bcbfd
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 54 additions and 36 deletions
  1. +32
    -16
      CHANGELOG.md
  2. +4
    -4
      docs/app-development.md
  3. +2
    -2
      docs/getting-started.md
  4. +3
    -4
      docs/spec/blockchain/encoding.md
  5. +6
    -5
      p2p/peer_set.go
  6. +5
    -3
      p2p/pex/pex_reactor.go
  7. +2
    -2
      version/version.go

+ 32
- 16
CHANGELOG.md View File

@ -1,23 +1,46 @@
# Changelog
## TBD
## 0.22.0
BUG FIXES:
- [rpc] Limit maximum number of HTTP/WebSocket connections
(`rpc.max_open_connections`) and gRPC connections
(`rpc.grpc_max_open_connections`). Check out "Running In Production" guide if
you want to increase them.
- [rpc] Limit maximum request body size to 1MB (header is limited to 1MB).
*July 1st, 2018*
BREAKING CHANGES:
- [config] Rename `skip_upnp` to `upnp`, and turn it off by default.
- [config] Rename `max_packet_msg_size` to `max_packet_msg_payload_size`.
- [types] Update Amino to v0.10.1
* Amino is now fully proto3 compatible for the basic types
* JSON-encoded types now use the type name instead of the prefix bytes
* Integers are encoded as strings
- [crypto] Update go-crypto to v0.10.0 and merge into `crypto`
* privKey.Sign returns error.
* ed25519 address is the first 20-bytes of the SHA256 of the pubkey
* `tmlibs/merkle` -> `crypto/merkle`. Uses SHA256 instead of RIPEMD160
- [rpc] `syncing` is now called `catching_up`.
FEATURES
- [cmd] Added metrics (served under `/metrics` using a Prometheus client;
disabled by default). See the new `instrumentation` section in the config and
[metrics](https://tendermint.readthedocs.io/projects/tools/en/develop/metrics.html)
guide.
- [p2p] Rudimentary IPv6 support
IMPROVEMENT
- [crypto] Make public key size into public constants
- [p2p] Add IPv6 support to peering.
- [rpc/client] Supports https and wss now.
- [stdout] Txs inside blocks are now logged as hashes (plus size in bytes).
- [crypto] Make public key size into public constants
- [mempool] Log tx hash, not entire tx
- [abci] Merged in github.com/tendermint/abci
- [docs] Move from .rst to .md
BUG FIXES:
- [rpc] Limit maximum number of HTTP/WebSocket connections
(`rpc.max_open_connections`) and gRPC connections
(`rpc.grpc_max_open_connections`). Check out "Running In Production" guide if
you want to increase them.
- [rpc] Limit maximum request body size to 1MB (header is limited to 1MB).
- [consensus] Fix a halting bug where `create_empty_blocks=false`
- [p2p] Fix panic in seed mode
## 0.21.0
@ -34,13 +57,6 @@ IMPROVEMENT
- [pubsub] Set default capacity to 0
- [docs] Various improvements
FEATURES
- [main] added metrics (served under `/metrics` using a Prometheus client;
disabled by default). See the new `instrumentation` section in the config and
[metrics](https://tendermint.readthedocs.io/projects/tools/en/v0.21.0/metrics.html)
guide.
BUG FIXES
- [consensus] Fix an issue where we don't make blocks after `fast_sync` when `create_empty_blocks=false`


+ 4
- 4
docs/app-development.md View File

@ -394,13 +394,13 @@ serialize each query as a single byte array. Additionally, certain
instance about which peers to connect to.
Tendermint Core currently uses the Query connection to filter peers upon
connecting, according to IP address or public key. For instance,
connecting, according to IP address or node ID. For instance,
returning non-OK ABCI response to either of the following queries will
cause Tendermint to not connect to the corresponding peer:
- `p2p/filter/addr/<addr>`, where `<addr>` is an IP address.
- `p2p/filter/pubkey/<pubkey>`, where `<pubkey>` is the hex-encoded
ED25519 key of the node (not it's validator key)
- `p2p/filter/addr/<ip addr>`, where `<ip addr>` is an IP address.
- `p2p/filter/id/<id>`, where `<is>` is the hex-encoded node ID (the hash of
the node's p2p pubkey).
Note: these query formats are subject to change!


+ 2
- 2
docs/getting-started.md View File

@ -125,8 +125,8 @@ The result should look like:
Note the `value` in the result (`YWJjZA==`); this is the base64-encoding
of the ASCII of `abcd`. You can verify this in a python 2 shell by
running `"61626364".decode('base64')` or in python 3 shell by running
`import codecs; codecs.decode("61626364", 'base64').decode('ascii')`.
running `"YWJjZA==".decode('base64')` or in python 3 shell by running
`import codecs; codecs.decode("YWJjZA==", 'base64').decode('ascii')`.
Stay tuned for a future release that [makes this output more
human-readable](https://github.com/tendermint/tendermint/issues/1794).


+ 3
- 4
docs/spec/blockchain/encoding.md View File

@ -84,14 +84,13 @@ Addresses for each public key types are computed as follows:
#### Ed25519
RIPEMD160 hash of the Amino encoded public key:
First 20-bytes of the SHA256 hash of the raw 32-byte public key:
```
address = RIPEMD160(AMINO(pubkey))
address = SHA256(pubkey)[:20]
```
NOTE: this will soon change to the truncated 20-bytes of the SHA256 of the raw
public key
NOTE: before v0.22.0, this was the RIPEMD160 of the Amino encoded public key.
#### Secp256k1


+ 6
- 5
p2p/peer_set.go View File

@ -55,8 +55,8 @@ func (ps *PeerSet) Add(peer Peer) error {
return nil
}
// Has returns true iff the PeerSet contains
// the peer referred to by this peerKey.
// Has returns true if the set contains the peer referred to by this
// peerKey, otherwise false.
func (ps *PeerSet) Has(peerKey ID) bool {
ps.mtx.Lock()
_, ok := ps.lookup[peerKey]
@ -64,8 +64,8 @@ func (ps *PeerSet) Has(peerKey ID) bool {
return ok
}
// HasIP returns true if the PeerSet contains the peer referred to by this IP
// address.
// HasIP returns true if the set contains the peer referred to by this IP
// address, otherwise false.
func (ps *PeerSet) HasIP(peerIP net.IP) bool {
ps.mtx.Lock()
defer ps.mtx.Unlock()
@ -85,7 +85,8 @@ func (ps *PeerSet) hasIP(peerIP net.IP) bool {
return false
}
// Get looks up a peer by the provided peerKey.
// Get looks up a peer by the provided peerKey. Returns nil if peer is not
// found.
func (ps *PeerSet) Get(peerKey ID) Peer {
ps.mtx.Lock()
defer ps.mtx.Unlock()


+ 5
- 3
p2p/pex/pex_reactor.go View File

@ -77,10 +77,10 @@ type PEXReactor struct {
attemptsToDial sync.Map // address (string) -> {number of attempts (int), last time dialed (time.Time)}
}
func (pexR *PEXReactor) minReceiveRequestInterval() time.Duration {
func (r *PEXReactor) minReceiveRequestInterval() time.Duration {
// NOTE: must be less than ensurePeersPeriod, otherwise we'll request
// peers too quickly from others and they'll think we're bad!
return pexR.ensurePeersPeriod / 3
return r.ensurePeersPeriod / 3
}
// PEXReactorConfig holds reactor specific configuration data.
@ -628,7 +628,9 @@ func (r *PEXReactor) crawlPeers() {
}
// Ask for more addresses
peer := r.Switch.Peers().Get(pi.Addr.ID)
r.RequestAddrs(peer)
if peer != nil {
r.RequestAddrs(peer)
}
}
}


+ 2
- 2
version/version.go View File

@ -3,14 +3,14 @@ package version
// Version components
const (
Maj = "0"
Min = "21"
Min = "22"
Fix = "0"
)
var (
// Version is the current version of Tendermint
// Must be a string because scripts like dist.sh read this file.
Version = "0.21.0"
Version = "0.22.0"
// GitCommit is the current HEAD set using ldflags.
GitCommit string


Loading…
Cancel
Save