Sergio Mena
aeec999151
Vote extension propagation (RFC017) ( #9853 )
...
* [cherry-picked] abci++: Propagate vote extensions (RFC 017) (#8433 )
* Add protos for ExtendedCommit
Cherry-pick from e73f0178b72a16ee81f8e856aadf651f2c62ec6e just the
changes to the .proto files, since we have deleted the .intermediate
files.
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* make proto-gen
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* BlockStore holds extended commit
Cherry-pick 8d504d4b50ec6afbdffe2df7ababbef30e15053d and fix conflicts.
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Reshuffle ExtendedCommit and ExtendedCommitSig
Separate the data structures and functions from their Commit-oriented
counterparts to adhere to the current coding style.
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Fix exit condition in blocksync
* Add note to remove TxResult proto
As Sergio pointed out in 3e31aa6f583cdc71e208ed03a82f1d804ec0de49, this
proto message can probably be removed. We should do this in a separate
PR.
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Lift termination condition into for loop
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Enforce vote extension signature requirement
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Expand on comment for PeekTwoBlocks for posterity
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Isolate TODO more clearly
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* make mockery
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Fix comment
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Make panic output from BlockStore.SaveBlock more readable
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Add helper methods to ExtendedCommitSig and ExtendedCommit
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Fix most tests except TestHandshake*
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Fix store prefix collision
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Fix TestBlockFetchAtHeight
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Remove global state from store tests
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Apply suggestions from code review
Co-authored-by: M. J. Fromberger <fromberger@interchain.io >
Co-authored-by: Sergio Mena <sergio@informal.systems >
* blocksync: Just return error
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* make format
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* types: Remove unused/commented-out code
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* blocksync: Change pool AddBlock function signature to return errors
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* types: Improve legibility of switch statements
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* blocksync: Expand on extended commit requirement in AddBlock description
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* blocksync: Return error without also logging it
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* consensus: Rename short-lived local variable
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* consensus: Allocate TODO to Sergio
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* evidence/pool_test: Inline slice construction
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* state: Rename LoadBlockExtCommit to LoadBlockExtendedCommit
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* proto: Remove TODO on TxResult
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* types: Minor format
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* types: Reformat ExtendedCommitSig.BlockID
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* types: Remove NewExtendedCommit constructor
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* types: Remove NewCommit constructor
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* types: Shorten receiver names for ExtendedCommit
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* types: Convert ExtendedCommit.Copy to a deep clone
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* types: Assign TODO to Sergio
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* types: Fix legibility nits
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* types: Improve legibility
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* store/state: Add TODO to move prefixes to common package
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Propagate validator info to PrepareProposal
In order to propagate validator voting power through to PrepareProposal,
we need to load the validator set info from the height corresponding to
the extended commit that we're passing through to PrepareProposal as the
"LocalLastCommit".
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Rename local var for clarity
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Fix TestMaxProposalBlockSize
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Rename local var for clarity
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Remove debug log
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Remove CommigSig.ForBlock helper
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Remove CommigSig.Absent helper
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Remove ExtendedCommitSig.ForBlock helper
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Remove ExtendedCommitSig.Absent helper
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* There are no extended commits below the initial height
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Fix comment grammar
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Remove JSON encoding from ExtendedCommit
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Embed CommitSig into ExtendedCommitSig instead of duplicating fields
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Rename ExtendedCommit vote_extension field to extension for consistency with domain types
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* blocksync: Panic if we peek a block without an extended commit
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Apply suggestions from code review
Co-authored-by: M. J. Fromberger <fromberger@interchain.io >
* Remove Sergio from TODO
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Increase hard-coded vote extension max size to 1MB
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* state: Remove unnecessary comment
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* state: Ensure no of commit sigs equals validator set length
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* make format
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* types: Minor legibility improvements
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Improve legibility
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* types: Remove unused GetVotes function on VoteSet
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Refactor TestMaxProposalBlockSize to construct more realistic extended commit
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Refactor buildExtendedCommitInfo to resemble buildLastCommitInfo
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Apply suggestions from code review
Co-authored-by: M. J. Fromberger <fromberger@interchain.io >
* abci++: Disable VerifyVoteExtension call on nil precommits (#8491 )
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* types: Require vote extensions on non-nil precommits and not otherwise
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Disable lint
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Increase timeout for TestReactorVotingPowerChange to counter flakiness
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Only sign and verify vote extensions in non-nil precommits
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Revert "Disable lint"
This reverts commit 6fffbf9402 .
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Add missing non-nil check uncovered non-deterministically in TestHandshakeReplayAll
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Expand error message for accuracy
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Only call ExtendVote when we make non-nil precommits
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Revert "Increase timeout for TestReactorVotingPowerChange to counter flakiness"
This reverts commit af514939db .
Signed-off-by: Thane Thomson <connect@thanethomson.com >
* Refactor ValidateBasic for ExtendedCommitSig for legibility
Signed-off-by: Thane Thomson <connect@thanethomson.com >
Co-authored-by: Sergio Mena <sergio@informal.systems >
Co-authored-by: M. J. Fromberger <fromberger@interchain.io >
* make proto-gen
* cp-fix
* monkey-see-monkey-do-fixes
* Fix tests (build)
* Fix forgotten tests
* fix_ut
* Fix units tests
* Fixed TestReactorInvalidPrecommit
* Fix TestFinalizeBlockCalled
* Fix all UTs
* Add missing comment
Co-authored-by: Thane Thomson <connect@thanethomson.com >
Co-authored-by: M. J. Fromberger <fromberger@interchain.io >
2022-12-09 00:25:44 +01:00
Callum Waters
c5c2aafad2
abci: implement finalize block ( #9468 )
...
Adds the `FinalizeBlock` method which replaces `BeginBlock`, `DeliverTx`, and `EndBlock` in a single call.
2022-11-28 23:12:28 +01:00
JayT106
fe0aa4d30e
Normalise GenesisDoc before saving to state ( #6059 ) ( #9458 )
2022-09-21 11:06:13 +02:00
Julien Robert
101bf50e71
refactor: migrate to cosmos/gogoproto ( #9356 )
...
* refactor: migrate to `cosmos/gogoproto`
* add changelog
* Update Makefile
Co-authored-by: Thane Thomson <connect@thanethomson.com >
* update link
Co-authored-by: Thane Thomson <connect@thanethomson.com >
2022-09-06 07:28:37 -04:00
Callum Waters
b37f062619
e2e: add evidence tests ( #9292 )
2022-08-22 13:33:47 +02:00
Callum Waters
2d8df1bd4e
proto: deduplicate consensus params ( #9287 )
2022-08-22 10:50:21 +02:00
Sergio Mena
7dc4f934b0
Merge branch main into feature/abci++ppp
2022-08-12 13:59:19 +02:00
Jacob Gadikian
a6dde14ec4
do not use ioutil ( #9206 )
2022-08-10 14:35:14 -04:00
Sergio Mena
d268e56383
Sync PrepareProposal with Spec. Main part ( #9158 )
...
* ----start----
* [PARTIAL cherry-pick] ABCI Vote Extension 2 (#6885 )
* Cherry-picked #6567 : state/types: refactor makeBlock, makeBlocks and makeTxs (#6567 )
* [Cherrypicked] types: remove panic from block methods (#7501 )
* [cherrypicked] abci++: synchronize PrepareProposal with the newest version of the spec (#8094 )
This change implements the logic for the PrepareProposal ABCI++ method call. The main logic for creating and issuing the PrepareProposal request lives in execution.go and is tested in a set of new tests in execution_test.go. This change also updates the mempool mock to use a mockery generated version and removes much of the plumbing for the no longer used ABCIResponses.
* make proto-gen
* Backported EvidenceList's method ToABCI from #7961
* make build
* Fix mockery for Mempool
* mockery
* Backported abci Application mocks from #7961
* mockery2
* Fixed new PrepareProposal test cases in state/execution_test.go
* Fixed returned errors in consensus/state.go
* lint
* Addressed @cmwaters' comment
Co-authored-by: mconcat <monoidconcat@gmail.com >
Co-authored-by: JayT106 <JayT106@users.noreply.github.com >
Co-authored-by: Sam Kleinman <garen@tychoish.com >
Co-authored-by: William Banfield <4561443+williambanfield@users.noreply.github.com >
2022-08-03 17:24:24 +02:00
Sam Kleinman
4ef140f6ca
lint: cleanup pending lint errors ( #7237 )
2021-11-04 08:08:55 -04:00
Marko
9379bc92fd
fix lint failures with 1.31 ( #5489 )
2020-10-22 13:36:08 +02:00
Erik Grinaker
cc247c091b
genesis: add support for arbitrary initial height ( #5191 )
...
Adds a genesis parameter `initial_height` which specifies the initial block height, as well as ABCI `RequestInitChain.InitialHeight` to pass it to the ABCI application, and `State.InitialHeight` to keep track of the initial height throughout the code. Fixes #2543 , based on [RFC-002](https://github.com/tendermint/spec/pull/119 ). Spec changes in https://github.com/tendermint/spec/pull/135 .
2020-08-11 17:03:28 +00:00
Marko
dedf0d2350
proto: folder structure adhere to buf ( #5025 )
2020-06-22 10:00:51 +02:00
Marko
7a8224f8a3
state: proto migration ( #4972 )
...
## Description
the second part of state proto migration
Closes: #XXX
2020-06-08 10:16:35 +00:00
Marko
9ef266b88f
types: migrate params to protobuf ( #4962 )
2020-06-05 15:29:53 +02:00
Marko
b9af87c4ea
state: proto migration ( #4951 )
2020-06-05 10:47:16 +02:00
Erik Grinaker
663243c446
state: export InitStateVersion
...
This is useful for custom state sync `StateProvider` implementations that need to build new states for bootstrapping the node. It will also be useful when implementing other mechanisms to bootstrap nodes, e.g. #4642 and #3713 .
2020-04-30 11:29:04 +00:00
Anton Kaliaev
ad715fe966
types: change Commit to consist of just signatures ( #4146 )
...
* types: change `Commit` to consist of just signatures
These are final changes towards removing votes from commit and leaving
only signatures (see ADR-25)
Fixes #1648
* bring back TestCommitToVoteSetWithVotesForAnotherBlockOrNilBlock
+ add absent flag to Vote to indicate that it's for another block
* encode nil votes as CommitSig with BlockIDFlagAbsent
+ make Commit#Precommits array of non-pointers
because precommit will never be nil
* add NewCommitSigAbsent and Absent() funcs
* uncomment validation in CommitSig#ValidateBasic
* add comments to ValidatorSet funcs
* add a changelog entry
* break instead of continue
continue does not make sense in these cases
* types: rename Commit#Precommits to Signatures
* swagger: fix /commit response
* swagger: change block_id_flag type
* fix merge conflicts
2019-11-26 14:10:38 +04:00
Anton Kaliaev
3e1516b624
linters: enable stylecheck ( #4153 )
...
Refs #3262
2019-11-16 19:35:39 +04:00
Marko
1604047c39
abci: remove TotalTxs and NumTxs from Header ( #3783 )
...
* Removal of TotalTx & NumTx
- Removed totalTx and numTx
closes #2521
Signed-off-by: Marko Baricevic <marbar3778@yahoo.com >
* abci proto changes
* proto number fix
* txfilter_test fix
* comments on PR
* further changes
* bring back metrics
* fix indexer
* fix TestBlockMaxDataBytes and TestBlockMaxDataBytesUnknownEvidence
* indexer service back to header
* statistics.go fix
* fix ci
* listen for blocks, not headers
to be able to record txs throughput
* fix TestNetworkNewBlock
* fix tests
* fix tests in types package
* fixes after Anton's review
* fix tests
* bring back `consensus_total_txs` metric
I mistakenly thought it was removed.
* improve changelog
* remove LastBlockTotalTx from state
* docs: remove getNumTxs from BeginBlock Java example
2019-11-14 13:56:12 +04:00
Ismail Khoffi
b30c34e713
rename Accum -> ProposerPriority: ( #2932 )
...
- rename fields, methods, comments, tests
2018-11-28 15:35:09 -05:00
Jae Kwon
42592d9ae0
IncrementAccum upon RPC /validators; Sanity checks and comments ( #2808 )
2018-11-21 10:43:02 +04:00
Ethan Buchman
be929acd6a
Update to Amino v0.13.0-rc0 ( #2687 )
...
* types: test tm2pm on fully populated header
* upgrade for amino v0.13.0-rc0
* fix lint
* comment out final test
2018-10-23 13:21:47 -04:00
Ethan Buchman
fe1d59ab7b
Set protocol versions in NodeInfo from state ( #2686 )
...
* use types.NewValidator
* node: set p2p.ProtocolVersion from state, not globals
2018-10-22 17:55:49 -04:00
Ethan Buchman
ed4ce5ff6c
ADR-016: Update ABCI Info method for versions ( #2662 )
...
* abci: update RequestInfo for versions
* abci: update ResponseInfo for versions
* compile fix
* fix test
* software_version -> version
* comment fix
* update spec
* add test
* comments and fix test
2018-10-18 16:51:17 -04:00
Ethan Buchman
455d34134c
ADR-016: Add versions to Block and State ( #2644 )
...
* types: add Version to Header
* abci: add Version to Header
* state: add Version to State
* node: check software and state protocol versions match
* update changelog
* docs/spec: update for versions
* state: more tests
* remove TODOs
* remove empty test
2018-10-17 15:30:53 -04:00
Anton Kaliaev
e1538bf67e
state: require block.Time of the fist block to be genesis time ( #2594 )
...
* require block.Time of the fist block to be genesis time
Refs #2587 :
```
We only start validating block.Time when Height > 1, because there is no
commit to compute the median timestamp from for the first block. This
means a faulty proposer could make the first block with whatever time
they want.
Instead, we should require the timestamp of block 1 to match the genesis
time.
I discovered this while refactoring the ValidateBlock tests to be
table-driven while working on tests for #2560 .
```
* do not accept blocks with negative height
* update changelog and spec
* nanos precision for test genesis time
* Fix failing test (#2607 )
2018-10-12 01:03:58 -04:00
Alessio Treglia
3744e8271d
[R4R] Pass nil to NewValidatorSet() when genesis file's Validators field is nil ( #2617 )
...
* Pass nil to NewValidatorSet() when genesis file's Validators field is nil
Closes : #2616
* Update CHANGELOG_PENDING.md
2018-10-11 23:37:21 -04:00
Anton Kaliaev
0e1cd88863
Remove ConsensusParams.TxSize and ConsensusParams.BlockGossip ( #2364 )
...
* remove ConsensusParams.TxSize and ConsensusParams.BlockGossip
Refs #2347
* block part size is now fixed
Refs #2347
* use max data size, not max bytes for tx limit
Refs #2347
2018-09-12 15:44:43 -04:00
Zarko Milosevic
7b88172f41
Implement BFT time ( #2203 )
...
* Implement BFT time
* set LastValidators when creating state in state helper
for heights >= 2
2018-08-31 19:33:51 -04:00
Ethan Buchman
e1062a657f
fixes for ProposerAddress
...
- state.MakeBlock takes a proposerAddr
- validateBlock only checks that the ProposerAddress is in the validator
set
- fix raceyness from bad proposer test:
- use privValidator to get the proposer address (instead of racy
state)
- note we had to remove the test that checked the correct proposer was
included for higher rounds because we don't have a good way to test
this with multiple consensus states and not using the
privValidator.Address while calling createProposalBlock was a hack!
2018-08-05 15:19:21 -04:00
Anton Kaliaev
bec9d5cba9
add proposer address to block's Header
...
Refs #1134
Validation:
- ignored in block.ValidateBasic since it's stateful information
- checked in blockExec.ValidateBlock
2018-08-05 15:16:49 -04:00
Ethan Buchman
2d1c5a1ce6
Merge remote-tracking branch 'origin/develop' into jae/literefactor4
2018-08-02 19:12:22 -04:00
Ethan Buchman
6046b99197
consensus: include evidence in proposed block parts. fixes #2050
2018-07-24 21:58:39 -04:00
Jae Kwon
a5b7ea93c4
Delay validator set changes by 1 block.
2018-06-25 16:59:00 -07:00
Ethan Buchman
dd62f06994
state: s -> state
2018-06-04 21:20:23 -07:00
Jae Kwon
89cdde7f1e
Fix state tests
2018-04-03 06:50:53 -07:00
Ethan Buchman
eaafd9d61c
state: builds
2018-03-02 01:51:27 -05:00
Ethan Buchman
1d6f00859d
fixes from review
2017-12-28 23:15:54 -05:00
Ethan Buchman
0acca7fe69
final updates for state
2017-12-28 23:15:54 -05:00
Ethan Buchman
f82b7e2a13
state: re-order funcs. fix tests
2017-12-28 23:15:54 -05:00
Ethan Buchman
9e6d088757
state: BlockExecutor
2017-12-28 23:15:54 -05:00
Ethan Buchman
c915719f85
*State->State; SetBlockAndValidators->NextState
2017-12-28 23:15:54 -05:00
Ethan Buchman
f55135578c
state: move methods to funcs
2017-12-28 23:15:54 -05:00
Ethan Buchman
6a4fd46479
fixes from rebase
2017-12-26 20:42:34 -05:00
Ethan Buchman
cc418e5dab
state.VerifyEvidence enforces EvidenceParams.MaxAge
2017-12-26 20:27:32 -05:00
Ethan Buchman
3271634e7a
types: evidence cleanup
2017-12-26 20:26:21 -05:00
Ethan Buchman
6c4a0f9363
cleanup evidence pkg. state.VerifyEvidence
2017-12-26 20:26:21 -05:00
Ethan Buchman
051c2701ab
remove LastConsensusParams
2017-12-26 19:56:39 -05:00
Ethan Buchman
028ee58580
call it LastResultsHash
2017-12-26 19:53:26 -05:00