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
Dev Ojha
12fa9d1cab
crypto/merkle: Remove byter in favor of plain byte slices ( #2595 )
...
* crypto/merkle: Remove byter in favor of plain byte slices
This PR is fully backwards compatible in terms of function output!
(The Go API differs though) The only test case changes was to refactor
it to be table driven.
* Update godocs per review comments
2018-10-10 12:46:09 -04:00
Joon
71a34adfe5
General Merkle Proof ( #2298 )
...
* first commit
finalize rebase
add protoc_merkle to Makefile
* in progress
* fix kvstore
* fix tests
* remove iavl dependency
* fix tx_test
* fix test_abci_cli
fix test_apps
* fix test_apps
* fix test_cover
* rm rebase residue
* address comment in progress
* finalize rebase
2018-09-28 20:03:19 -04:00
Anton Kaliaev
8d50bb9dad
conesnsu: follow up to removing some consensus params ( #2427 )
...
* follow up to removing some consensus params Refs #2382
* change args type to int64 in state#makeParams
* make valsCount and evidenceCount ints again
* MaxEvidenceBytesPerBlock: include magic number in godoc
* [spec] creating a proposal
* test state#TxFilter
* panic if MaxDataBytes is less than 0
* fixes after review
* use amino#UvarintSize to calculate overhead
0c74291f3b/encoder.go (L85-L90)
* avoid cyclic imports
* you can do better Go, come on
* remove testdouble package
2018-09-21 11:00:36 +02: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
Zach
7f6bd5c161
docs & spec: deduplicate block-structure.md ( #2331 )
2018-09-05 12:21:04 -04:00
Anton Kaliaev
166fd82b70
max-bytes PR follow-up ( #2318 )
...
* ReapMaxTxs: return all txs if max is negative
this mirrors ReapMaxBytes behavior
See https://github.com/tendermint/tendermint/pull/2184#discussion_r214439950
* increase MaxAminoOverheadForBlock
tested with:
```
func TestMaxAminoOverheadForBlock(t *testing.T) {
maxChainID := ""
for i := 0; i < MaxChainIDLen; i++ {
maxChainID += "𠜎"
}
h := Header{
ChainID: maxChainID,
Height: 10,
Time: time.Now().UTC(),
NumTxs: 100,
TotalTxs: 200,
LastBlockID: makeBlockID(make([]byte, 20), 300, make([]byte, 20)),
LastCommitHash: tmhash.Sum([]byte("last_commit_hash")),
DataHash: tmhash.Sum([]byte("data_hash")),
ValidatorsHash: tmhash.Sum([]byte("validators_hash")),
NextValidatorsHash: tmhash.Sum([]byte("next_validators_hash")),
ConsensusHash: tmhash.Sum([]byte("consensus_hash")),
AppHash: tmhash.Sum([]byte("app_hash")),
LastResultsHash: tmhash.Sum([]byte("last_results_hash")),
EvidenceHash: tmhash.Sum([]byte("evidence_hash")),
ProposerAddress: tmhash.Sum([]byte("proposer_address")),
}
b := Block{
Header: h,
Data: Data{Txs: makeTxs(10000, 100)},
Evidence: EvidenceData{},
LastCommit: &Commit{},
}
bz, err := cdc.MarshalBinary(b)
require.NoError(t, err)
assert.Equal(t, MaxHeaderBytes+MaxAminoOverheadForBlock-2, len(bz)-1000000-20000-1)
}
```
* fix MaxYYY constants calculation
by using math.MaxInt64
See https://github.com/tendermint/tendermint/pull/2184#discussion_r214444244
* pass mempool filter as an option
See https://github.com/tendermint/tendermint/pull/2184#discussion_r214445869
* fixes after Dev's comments
2018-09-04 11:46:34 +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
Anton Kaliaev
02d1b03abb
update comment for MaxBlockSizeBytes
2018-08-31 16:01:22 +04:00
Anton Kaliaev
e957f322c7
be more precise in comments
2018-08-31 16:01:21 +04:00
Anton Kaliaev
0f7485690e
limit chain ID to 50 symbols max
2018-08-31 16:01:21 +04:00
Anton Kaliaev
d73c5cbdb1
reap max bytes from the mempool & check transaction size
...
See ADR 020: Limiting txs size inside a block docs/architecture/adr-020-block-size.md
Refs #2035
2018-08-31 16:01:21 +04:00
Anton Kaliaev
d7035abe73
change ABCI header to match Tendermint exactly
...
Now that Tendermint Amino will be compatible with proto3, the Header in ABCI
should exactly match the Tendermint header - they will then be encoded
identically in ABCI and in Tendermint Core.
Refs #265
2018-08-05 16:57:38 -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
Jae Kwon
e719a93d1d
Addressed review for #1815 except those marked as 'TODO make issue'
2018-08-02 03:10:50 -07:00
Ethan Buchman
6046b99197
consensus: include evidence in proposed block parts. fixes #2050
2018-07-24 21:58:39 -04:00
Ethan Buchman
ea31c4836a
Merge branch 'develop' into jae/literefactor4
2018-07-23 23:28:14 -04:00
Alexander Simmerl
ed8714e40c
Merge pull request #1965 from tendermint/693-part-2
...
make Block Header and Data non-pointers
2018-07-20 17:42:42 +02:00
Anton Kaliaev
270659f03f
make Block Header and Data non-pointers
...
make BlockMeta Header a non-pointer
Refs #693
2018-07-13 12:05:54 +04:00
Anton Kaliaev
95980d944b
[types] add tests for Block and Commit
...
Refs #693
2018-07-12 22:40:05 +04:00
Ethan Buchman
5453aa6169
Merge branch 'develop' into jae/literefactor4
2018-07-02 14:57:30 -04:00
Ethan Buchman
ec710395b7
RIPEMD160 -> SHA256
2018-07-02 14:27:43 -04:00
Ethan Buchman
d55243f0e6
fix import paths
2018-07-01 22:36:49 -04:00
Anton Kaliaev
9563927bbd
print only tx's hash and size when logging blocks
...
Closes #1799
2018-06-29 12:40:32 +04:00
Jae Kwon
bf0ff212b9
Refactor "lite" to handle delayed validator set changes.
...
Also, fix consensus liveness issue.
2018-06-25 17:12:25 -07:00
Jae Kwon
a5b7ea93c4
Delay validator set changes by 1 block.
2018-06-25 16:59:00 -07:00
Anton Kaliaev
489d9b9184
more metrics
2018-06-20 12:38:45 +04:00
Ethan Buchman
162811476a
update some comments
2018-05-14 16:32:19 -04:00
Jae Kwon
b42d5a2211
blockID -> block_id for JSON
2018-04-21 20:24:50 -07:00
Ethan Buchman
bb1b249e8a
types: lock block on MakePartSet
2018-04-09 15:04:59 +03:00
Ethan Buchman
c170800fbd
Merge branch 'develop' into jae/aminoify
2018-04-07 16:16:53 +03:00
Jae Kwon
02531ca5a3
Fix race testing (cont;) Bump version to 0.19.0
2018-04-06 17:06:46 -07:00
Jae Kwon
d24e4cb821
Fix race testing
2018-04-06 17:02:29 -07:00
Jae Kwon
45ec5fd170
WIP consensus
2018-04-05 07:05:45 -07:00
Jae Kwon
1b9323f105
Fix blockchain tests
2018-04-05 05:17:43 -07:00
Ethan Buchman
d14aacf03e
Merge pull request #1300 from tendermint/lite-proxy-hardening-and-tests
...
lite/proxy: Validation* tests and hardening for nil dereferences
2018-04-03 22:43:38 +03:00
Ethan Buchman
39ff4d22e9
minor cleanup
2018-04-03 22:34:18 +03:00
Jae Kwon
89cdde7f1e
Fix state tests
2018-04-03 06:50:53 -07:00
Thomas Corbière
2644a529f0
Fix lint errors ( #1390 )
...
* use increment and decrement operators.
* remove unnecessary else branches.
* fix package comment with leading space.
* fix receiver names.
* fix error strings.
* remove omittable code.
* remove redundant return statement.
* Revert changes (code is generated.)
* use cfg as receiver name for all config-related types.
* use lsi as the receiver name for the LastSignedInfo type.
2018-04-02 10:21:17 +02:00
Jae Kwon
34974e3932
Make types use Amino; Refactor PrivValidator* to FilePV/SocketPV
2018-03-31 00:18:43 +02:00
Alex Hernandez
575a46d9d4
fix typo on block header ( #1387 )
2018-03-29 11:28:29 +02:00
Emmanuel T Odeke
8723c91db9
types: Hash invoked for nil Data and Header should not panic
...
Fixes https://github.com/tendermint/tendermint/issues/1298
Fixes https://github.com/tendermint/tendermint/issues/1299
Found while writing tests in https://github.com/tendermint/tendermint/pull/1300
2018-03-10 21:44:08 -08:00
Ethan Buchman
c394eef7b8
types: TestValidatorSetVerifyCommit
2018-03-02 04:21:23 -05:00
Ethan Buchman
3395f5fb0e
types: builds
2018-03-02 01:28:38 -05:00
Ethan Buchman
200787ede2
types: update for new go-wire. WriteSignBytes -> SignBytes
2018-03-02 01:25:54 -05:00
Ethan Buchman
7a5060dc52
replace data.Bytes with cmn.HexBytes
2018-02-03 03:47:01 -05:00
Ethan Buchman
4e3488c677
update types
2018-02-03 03:23:10 -05:00
Ethan Buchman
3271634e7a
types: evidence cleanup
2017-12-26 20:26:21 -05:00
Ethan Buchman
10c43c9edc
introduce evidence store
2017-12-26 20:25:14 -05:00