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
..
2018-10-05 23:44:53 -04:00
2018-08-07 19:47:51 -04:00
2018-09-23 02:25:33 -04:00
2018-10-04 17:22:41 -04:00

Tendermint

Welcome to the Tendermint Core documentation!

Tendermint Core is a blockchain application platform; it provides the equivalent of a web-server, database, and supporting libraries for blockchain applications written in any programming language. Like a web-server serving web applications, Tendermint serves blockchain applications.

More formally, Tendermint Core performs Byzantine Fault Tolerant (BFT) State Machine Replication (SMR) for arbitrary deterministic, finite state machines. For more background, see What is Tendermint?.

To get started quickly with an example application, see the quick start guide.

To learn about application development on Tendermint, see the Application Blockchain Interface.

For more details on using Tendermint, see the respective documentation for Tendermint Core, benchmarking and monitoring, and network deployments.

Contribute

To contribute to the documentation, see this file for details of the build process and considerations when making changes.

Version

This documentation is built from the following commit: