* reorganizing basic concepts, adding outline to navigate easy
* Update spec/abci++/README.md
Co-authored-by: Sergio Mena <sergio@informal.systems>
* Update spec/abci++/abci++_basic_concepts_002_draft.md
Co-authored-by: Sergio Mena <sergio@informal.systems>
* Update spec/abci++/abci++_basic_concepts_002_draft.md
Co-authored-by: Sergio Mena <sergio@informal.systems>
* Update spec/abci++/abci++_basic_concepts_002_draft.md
Co-authored-by: Sergio Mena <sergio@informal.systems>
* Update spec/abci++/abci++_basic_concepts_002_draft.md
Co-authored-by: Sergio Mena <sergio@informal.systems>
* Update spec/abci++/abci++_basic_concepts_002_draft.md
Co-authored-by: Sergio Mena <sergio@informal.systems>
* Update spec/abci++/abci++_basic_concepts_002_draft.md
Co-authored-by: Sergio Mena <sergio@informal.systems>
* Update spec/abci++/abci++_basic_concepts_002_draft.md
Co-authored-by: Sergio Mena <sergio@informal.systems>
* Update spec/abci++/abci++_basic_concepts_002_draft.md
Co-authored-by: Sergio Mena <sergio@informal.systems>
* Update spec/abci++/abci++_basic_concepts_002_draft.md
Co-authored-by: M. J. Fromberger <fromberger@interchain.io>
* Update spec/abci++/abci++_basic_concepts_002_draft.md
Co-authored-by: M. J. Fromberger <fromberger@interchain.io>
* Update spec/abci++/abci++_basic_concepts_002_draft.md
Co-authored-by: M. J. Fromberger <fromberger@interchain.io>
* address problem with snapshot list data type
* Update spec/abci++/abci++_basic_concepts_002_draft.md
Co-authored-by: M. J. Fromberger <fromberger@interchain.io>
* Update spec/abci++/abci++_basic_concepts_002_draft.md
Co-authored-by: M. J. Fromberger <fromberger@interchain.io>
* Update spec/abci++/abci++_basic_concepts_002_draft.md
Co-authored-by: M. J. Fromberger <fromberger@interchain.io>
* Update spec/abci++/abci++_basic_concepts_002_draft.md
Co-authored-by: William Banfield <4561443+williambanfield@users.noreply.github.com>
* Update spec/abci++/abci++_basic_concepts_002_draft.md
Co-authored-by: M. J. Fromberger <fromberger@interchain.io>
* clarify handling events in same-execution model
* remove outdated text about vote extension singing
* clarification apphash state-sync
Co-authored-by: Sergio Mena <sergio@informal.systems>
Co-authored-by: M. J. Fromberger <fromberger@interchain.io>
Co-authored-by: William Banfield <4561443+williambanfield@users.noreply.github.com>
Fixes#8052 again. Ideally we would have some way of detecting that this
happens before merging, but the way we build docs right now is kind of
complicated.
This change set implements the most recent version of `FinalizeBlock`.
# What does this change actually contain?
* This change set is rather large but fear not! The majority of the files touched and changes are renaming `ResponseDeliverTx` to `ExecTxResult`. This should be a pretty inoffensive change since they're effectively the same type but with a different name.
* The `execBlockOnProxyApp` was totally removed since it served as just a wrapper around the logic that is now mostly encapsulated within `FinalizeBlock`
* The `updateState` helper function has been made a public method on `State`. It was being exposed as a shim through the testing infrastructure, so this seemed innocuous.
* Tests already existed to ensure that the application received the `ByzantineValidators` and the `ValidatorUpdates`, but one was fixed up to ensure that `LastCommitInfo` was being sent across.
* Tests were removed from the `psql` indexer that seemed to search for an event in the indexer that was not being created.
# Questions for reviewers
* We store this [ABCIResponses](5721a13ab1/proto/tendermint/state/types.pb.go (L37)) type in the data base as the block results. This type has changed since v0.35 to contain the `FinalizeBlock` response. I'm wondering if we need to do any shimming to keep the old data retrieveable?
* Similarly, this change is exposed via the RPC through [ResultBlockResults](5721a13ab1/rpc/coretypes/responses.go (L69)) changing. Should we somehow shim or notify for this change?
closes: #7658
This PR implements a hack. It does effectively 2 things:
1. It checks in a set of protos, suffixed with `.intermediate` that allow the abci proto generation to proceed.
2. Adds a script / makefile to enable the generation.
The script is pretty simple. It copies over the 'intermediate' files over to be the `.proto` files for the `abci/types.proto` file and the `types/types.proto` files, generates all the protos, and then reverts all of the changes made to the `*.proto` files and the `*.pb.go` files, except for the single abci file.
If this is too ugly, I'm happy to tweak it, but my goal here is to have some working version of the protos that currently build the abci code so that we can coordinate changes to the code and not have them all sit in different branches that make breaking changes across each other.
The end goal is to have the `.intermediate` files disappear completely, since they should be moving towards containing everything that the `.proto` files contain.
This change adds an overview of the proposer-based timestamps algorithm. The goal of this documentation is to give a plain enough explanation of the algorithm so that application developers and validators can understand both the utility of the algorithm and understand how the new constrains may affect their network and topology.
I'm blanking on the scheme we decided on for docs linking, so if anyone could remind me what link format we decided on, I'll go clean that up ASAP.
Once this is merged, I intend to create a runbook for chains that see slower block-times or higher nil prevotes and link that runbook to this document to provide a higher-level overview.
closes: #8046
* Changed the spec text to agreed VoteExtension solution
* Revert "Removed protobufs related to vote extensions"
This reverts commit 4566f1e302.
* Changes to ABCI protocol buffers
* Update spec/core/data_structures.md
Co-authored-by: M. J. Fromberger <fromberger@interchain.io>
* Update spec/core/data_structures.md
Co-authored-by: M. J. Fromberger <fromberger@interchain.io>
* Fix dangling link in ABCI++ readme
* Addressed comments
Co-authored-by: M. J. Fromberger <fromberger@interchain.io>
Since the goal of reading events at the head of the event log is to satisfy a
subscription style interface, there is no point in allowing head polling with
no wait interval. The pagination case already bypasses long polling, so the
extra option is unneessary.
Set a minimum default long-polling interval for the head case.
Add a test for minimum delay.
* Update ADR template
The reason for this proposed update to the ADR template is twofold:
1. There's currently no easy way to cross-reference between ADRs and
issues/PRs on GitHub. This may be easy to manage for those with
context while they're working on implementing an ADR, but after time
passes and for complex ADRs it gets more difficult for newcomers to
the codebase to track both the implementation status of the ADR or
its historical context and discussions.
2. We should not allow for "proposed" ADRs. An ADR is a **decision
record**, which implies acceptance, and not a proposal. RFCs provide
a mechanism to make proposals.
Signed-off-by: Thane Thomson <connect@thanethomson.com>
* Add example of one ADR superseding another
Signed-off-by: Thane Thomson <connect@thanethomson.com>
* Move "Proposed" ToC entries to "Accepted".
It's possible some of these should actually be "Implemented", but I did not try
to go through each one to distinguish.
* Revert "Move "Proposed" ToC entries to "Accepted"."
This reverts commit d8d2907e98.
Signed-off-by: Thane Thomson <connect@thanethomson.com>
* Fix Markdown formatting
Signed-off-by: Thane Thomson <connect@thanethomson.com>
* Add "Deprecated" section to ADR TOC
Signed-off-by: Thane Thomson <connect@thanethomson.com>
* Expand ADR template to explicitly cater for rejected ADRs
Signed-off-by: Thane Thomson <connect@thanethomson.com>
Co-authored-by: M. J. Fromberger <fromberger@interchain.io>
This is mostly an extremely small change where I double a somewhat
arbitrarly set timeout from 1m to 2m for an entire test. When I put
these timeouts in the test, they were arbitrary based on my local
performance (which is quite fact,) and I expected that they'd need to
be tweaked in the future.
A big chunk of this PR is reworking a collection of helper functions
that produce somewhat intractable messages when a test fails, so that
the error messages take up less vertical space, hopefully without
losing any debugability.
We're waiting between trying witnesses (which shouldn't be neccessary
because the witnesses shouldn't depend on each other,) and also
between *attempts*, and really the outer sleep should be enough.
This is a little coarse, but the idea is that we'll send information
about the channels a peer has upon the peer-up event that we send to
reactors that we can then use to reject peers (if neeeded) from reactors.
This solves the problem where statesync would hang in test networks
(and presumably real) where we would attempt to statesync from seed
nodes, thereby hanging silently forever.