PROPOSAL: Lower block times in 2 phases #522
-
NOTE: If the following proposal passes, nodes will be required to upgrade to a new binary by June 1st at 06:00 GMT. The new binary, while we could create a proposal that does not require it, is required under this proposal so as to provide a graceful error message to those who have not upgraded that they must. Otherwise, users who did not upgrade in time would simply stop performing their Consensus duties without an understanding of why their node broke.This proposal fixes a bug that results in validators unnecessarily waiting idle for 5 seconds in between blocks due to timeout_commit being defaulted to 5 seconds. The timeout_commit parameter in node configurations measures how long nodes will wait only after a consensus has been reached before beginning the next block. This timeout ensures that validators other than the 2/3 who reached consensus have a chance to participate in stake rewards. Fast block times are essential for the mainstream adoption of permissionless blockchains as true decentralized database replacements. Data collected from monitoring the ABCI state history via Mainnet gRPC of dozens of blocks indicates that 99/100 of the bonded validators will be able to keep up with this change without missing any blocks. We thus conclude that the probability of a user being on a validator that is removed from the consensus as a result from this is 1%, or negligible as compared to the benefits of significantly faster blocks. This proposal would, as a side effect, result in increased stake rewards distribution per unit time. This is because the block time would be lowered by 3 seconds flat, and as such there would be more blocks per year. A YES VOTE means that you are voting to decrease block times by ~3 seconds per block, and increasing the requirements for validators to maintain uptime, performance, and connectivity so as to not be punished for slowing down the network. A NO VOTE means that you are voting to keep block times in their current state. Validators will not have stringent uptime and performance requirements. Proposal execution is divided into two phases. This is to maintain compatibility with validators whose timeout_commit is still 5 seconds for a reasonable amount of time. PHASE 1 (IMMEDIATELY UPON PASSING):All validators MUST, as soon as possible upon this proposal passing, update the following parameters in their config.toml file:
PHASE 2 (June 1st at 06:00:00 GMT):(1) All validators MUST update the following parameters in their config.toml file:
NETWORK RISK:The network will halt if and only if under two thirds of staked validators have completed Phase 1 by the Phase 2 deadline (June 1st at 06:00:00 GMT). IBC compatibility is unaffected. If over two thirds of staked validators have completed Phase 1 by the Phase 2 deadline, there is no risk of a network halt. As a reminder, the timeout_commit stage is only entered after a consensus is reached. |
Beta Was this translation helpful? Give feedback.
Replies: 10 comments 21 replies
-
I spun up an AWS instance (because many nodes are on AWS so it uses Amazon's own backbone to reduce network latency) and ran a script that would query the ABCI Consensus state dumps of mainnet.crypto.org as well as multiple other public nodes that had it open, for 4 in total, in parallel. These data were aggregated and resulted in the following conclusions over 5,000 measured Crypto.org Mainnet blocks:
Non-active validators were not measured by this script. The following ABCI endpoint was used in all measurements: https://mainnet.crypto.org:26657/dump_consensus_state |
Beta Was this translation helpful? Give feedback.
-
The |
Beta Was this translation helpful? Give feedback.
-
Thank you for the proposal -- the default config was already partially adjusted: https://github.com/crypto-org-chain/chain-main/pull/494/files If you also intend to submit this proposal for on-chain voting, it'll be good to clarify a few items for the full context:
|
Beta Was this translation helpful? Give feedback.
-
To shorten the block commit timeout, It might need to consider the impact to the db layer during the block execution (especially the CosmWasm transaction allow in the feature?) and the total DB scales. When the DB states become a huge amount (we might be able to prune it) the changes might lead to the commit failed and the consensus will be halt (or break). |
Beta Was this translation helpful? Give feedback.
-
@tomtau Thank you for your questions. There is a lot of misunderstanding at what
"timeout-commit = how long we wait after committing a block, before starting on the new height (this gives us a chance to receive some more precommits, even though we already have +2/3)" (emphasis added)
As you can see, these parameters specify a height and/or timestamp on the destination chain. These are the only timeout-related parameters, and there is no default assumed in the Rust code.
|
Beta Was this translation helpful? Give feedback.
-
Is there any reason why the proposal was submitted on-chain as |
Beta Was this translation helpful? Give feedback.
-
@tomtau I have clearly noted the behavior of this proposal as it relates to software upgrades in large text at the top of this GitHub discussion. I have also copied and pasted the note onto the Crypto.org Chain Discord. Users are welcome to change their vote if they feel misled. I will remain fully transparent on this proposal-- indeed, it is on-chain and thus cannot be untransparent-- and will remain to answer questions as they come up. Users will vote as they see fit given the proposal as-is. If they think requiring a new binary is an improper mechanism to provide a better UX to outdated nodes, they may vote |
Beta Was this translation helpful? Give feedback.
-
i don't think they will notice a 1 second different whether we cut it down by 3 or 2 seconds from the user perspective. 9 years instead of 10 is less of an impact and wouldn't make much of a difference if we don't end up updating blocks_per_year. i'm leaning towards yes, but maybe it's better to do this later when we have more tx per block. i feel like we're burning through blocks so fast without much tx that we're increase sizes of full nodes in the long run unnecessarily. just something to consider although i don't think its a big factor |
Beta Was this translation helpful? Give feedback.
-
On our journey of building a fully decentralized, open-source public chain -- Since every governance proposal could impact different stakeholders of the Crypto.org chain, especially the validators and users. Thus, for the stability and availability of the Crypto.org chain mainnet : Timeline wise, we would like to suggest:
|
Beta Was this translation helpful? Give feedback.
-
I'm confused with the wordings. This is a behaviour in Tendermint Core which is not a bug. The |
Beta Was this translation helpful? Give feedback.
On our journey of building a fully decentralized, open-source public chain --
Valuable suggestions, involvement and strong commitment from the community have been well received and appreciated by the team since we launched Crypto.org mainnet on 25th of March, 2021.
Since every governance proposal could impact different stakeholders of the Crypto.org chain, especially the validators and users.
After extensive evaluation, we found the impact of this proposal is not yet known and the suggested changes could potentially affect the regular operation of the current Crypto.org mainnet.
Thus, for the stability and availability of the Crypto.org chain mainnet :
We believe that it would be best to …