mirror of
https://github.com/tendermint/tendermint.git
synced 2026-01-08 22:23:11 +00:00
Closes #7073 As part of the 0.36 cycle we've discussed and decided to remove the mutex in tendermint that protects the ABCI application. First, applications should be able to be responsible for their own concurrency control, and can make more fine-grained decisions about concurrent use than tendermint ever could. Second, I've observed in recent weeks as we've been making this change that the mutex wasn't applied particularly consistently in many cases (e.g. multiple "local" connections to the application had multiple locks, etc.) so this will give more consistent experiences across ABCI execution environments, and simplifies the tendermint ABCI handling code.
5.4 KiB
5.4 KiB
Unreleased Changes
Friendly reminder: We have a bug bounty program.
vX.X
Month, DD, YYYY
Special thanks to external contributors on this release:
BREAKING CHANGES
-
CLI/RPC/Config
- [rpc] #7121 Remove the deprecated gRPC interface to the RPC service. (@creachadair)
- [blocksync] #7159 Remove support for disabling blocksync in any circumstance. (@tychoish)
- [mempool] #7171 Remove legacy mempool implementation. (@tychoish)
- [rpc] #7575 Rework how RPC responses are written back via HTTP. (@creachadair)
- [rpc] #7713 Remove unused options for websocket clients. (@creachadair)
- [config] #7930 Add new event subscription options and defaults. (@creachadair)
- [rpc] #7982 Add new Events interface and deprecate Subscribe. (@creachadair)
-
Apps
- [tendermint/spec] #7804 Migrate spec from spec repo.
- [abci] #7984 Remove the locks preventing concurrent use of ABCI applications by Tendermint. (@tychoish)
-
P2P Protocol
- [p2p] #7035 Remove legacy P2P routing implementation and associated configuration options. (@tychoish)
- [p2p] #7265 Peer manager reduces peer score for each failed dial attempts for peers that have not successfully dialed. (@tychoish)
- [p2p] #7594 always advertise self, to enable mutual address discovery. (@altergui)
-
Go API
- [rpc] #7474 Remove the "URI" RPC client. (@creachadair)
- [libs/pubsub] #7451 Internalize the pubsub packages. (@creachadair)
- [libs/sync] #7450 Internalize and remove the library. (@creachadair)
- [libs/async] #7449 Move library to internal. (@creachadair)
- [pubsub] #7231 Remove unbuffered subscriptions and rework the Subscription interface. (@creachadair)
- [eventbus] #7231 Move the EventBus type to the internal/eventbus package. (@creachadair)
- [blocksync] #7046 Remove v2 implementation of the blocksync service and recactor, which was disabled in the previous release. (@tychoish)
- [p2p] #7064 Remove WDRR queue implementation. (@tychoish)
- [config] #7169
WriteConfigFilenow returns an error. (@tychoish) - [libs/service] #7288 Remove SetLogger method on
service.Serviceinterface. (@tychoish) - [abci/client] #7607 Simplify client interface (removes most "async" methods). (@creachadair)
- [libs/json] #7673 Remove the libs/json (tmjson) library. (@creachadair)
-
Blockchain Protocol
FEATURES
- [rpc] #7270 Add
headerandheader_by_hashRPC Client queries. (@fedekunze) - [rpc] [#7701] Add
ApplicationInfotostatusrpc call which contains the application version. (@jonasbostoen) - [cli] #7033 Add a
rollbackcommand to rollback to the previous tendermint state in the event of non-determinstic app hash or reverting an upgrade. - [mempool, rpc] #7041 Add removeTx operation to the RPC layer. (@tychoish)
- [consensus] #7354 add a new
synchronyfield to theConsensusParameterstruct for controlling the parameters of the proposer-based timestamp algorithm. (@williambanfield) - [consensus] #7376 Update the proposal logic per the Propose-based timestamps specification so that the proposer will wait for the previous block time to occur before proposing the next block. (@williambanfield)
- [consensus] #7391 Use the proposed block timestamp as the proposal timestamp. Update the block validation logic to ensure that the proposed block's timestamp matches the timestamp in the proposal message. (@williambanfield)
- [consensus] #7415 Update proposal validation logic to Prevote nil if a proposal does not meet the conditions for Timelyness per the proposer-based timestamp specification. (@anca)
- [consensus] #7382 Update block validation to no longer require the block timestamp to be the median of the timestamps of the previous commit. (@anca)
- [consensus] #7711 Use the proposer timestamp for the first height instead of the genesis time. Chains will still start consensus at the genesis time. (@anca)
IMPROVEMENTS
- [internal/protoio] #7325 Optimized
MarshalDelimitedby inlining the common case and using async.Poolin the worst case. (@odeke-em) - [consensus] #6969 remove logic to 'unlock' a locked block.
- [evidence] #7700 Evidence messages contain single Evidence instead of EvidenceList (@jmalicevic)
- [evidence] #7802 Evidence pool emits events when evidence is validated and updates a metric when the number of evidence in the evidence pool changes. (@jmalicevic)
- [pubsub] #7319 Performance improvements for the event query API (@creachadair)
- [node] #7521 Define concrete type for seed node implementation (@spacech1mp)
- [rpc] #7612 paginate mempool /unconfirmed_txs rpc endpoint (@spacech1mp)
- [light] #7536 rpc /status call returns info about the light client (@jmalicevic)
- [types] #7765 Replace EvidenceData with EvidenceList to avoid unnecessary nesting of evidence fields within a block. (@jmalicevic)
BUG FIXES
- fix: assignment copies lock value in
BitArray.UnmarshalJSON()(@lklimek) - [light] #7640 Light Client: fix absence proof verification (@ashcherbakov)
- [light] #7641 Light Client: fix querying against the latest height (@ashcherbakov)
- [cli] #7837 fix app hash in state rollback. (@yihuang)