mirror of
https://github.com/fluencelabs/tendermint
synced 2025-05-25 20:21:21 +00:00
Merge pull request #2340 from tendermint/bucky/changelog
name drop external contribs in changelog
This commit is contained in:
commit
bbc30f992e
@ -1,5 +1,8 @@
|
||||
# Pending
|
||||
|
||||
Special thanks to external contributors with PRs included in this release: ackratos, james-ray, bradyjoestar,
|
||||
peerlink, Ahmah2009, bluele, b00f
|
||||
|
||||
BREAKING CHANGES:
|
||||
|
||||
* CLI/RPC/Config
|
||||
@ -21,9 +24,11 @@ BREAKING CHANGES:
|
||||
|
||||
* Go API
|
||||
- [lite] \#1815 Complete refactor of the package
|
||||
- [node] \#2212 NewNode now accepts a `*p2p.NodeKey`
|
||||
- [node] \#2212 NewNode now accepts a `*p2p.NodeKey` (@bradyjoestar)
|
||||
- [libs/common] \#2199 Remove Fmt, in favor of fmt.Sprintf
|
||||
- [libs/common] SplitAndTrim was deleted
|
||||
- [libs/common] \#2274 Remove unused Math functions like MaxInt, MaxInt64,
|
||||
MinInt, MinInt64 (@Ahmah2009)
|
||||
- [libs/clist] Panics if list extends beyond MaxLength
|
||||
- [crypto] \#2205 Rename AminoRoute variables to no longer be prefixed by signature type.
|
||||
|
||||
@ -49,10 +54,11 @@ BREAKING CHANGES:
|
||||
* P2P Protocol
|
||||
- [p2p] \#2263 Update secret connection to use a little endian encoded nonce
|
||||
- [blockchain] \#2213 Fix Amino routes for blockchain reactor messages
|
||||
(@peerlink)
|
||||
|
||||
|
||||
FEATURES:
|
||||
- [types] \#2015 Allow genesis file to have 0 validators
|
||||
- [types] \#2015 Allow genesis file to have 0 validators (@b00f)
|
||||
- Initial validator set can be determined by the app in ResponseInitChain
|
||||
- [rpc] \#2161 New event `ValidatorSetUpdates` for when the validator set changes
|
||||
- [crypto/multisig] \#2164 Introduce multisig pubkey and signature format
|
||||
@ -60,14 +66,15 @@ FEATURES:
|
||||
|
||||
IMPROVEMENTS:
|
||||
- [docs] Lint documentation with `write-good` and `stop-words`.
|
||||
- [scripts] Added json2wal tool, which is supposed to help our users restore
|
||||
- [scripts] \#2196 Added json2wal tool, which is supposed to help our users restore (@bradyjoestar)
|
||||
corrupted WAL files and compose test WAL files (@bradyjoestar)
|
||||
- [mempool] \#2234 Now stores txs by hash inside of the cache, to mitigate memory leakage
|
||||
- [mempool] \#2166 Set explicit capacity for map when updating txs (@bluele)
|
||||
|
||||
BUG FIXES:
|
||||
- [config] \#2284 Replace `db_path` with `db_dir` from automatically generated configuration files.
|
||||
- [mempool] \#2188 Fix OOM issue from cache map and list getting out of sync
|
||||
- [state] \#2051 KV store index supports searching by `tx.height`
|
||||
- [state] \#2051 KV store index supports searching by `tx.height` (@ackratos)
|
||||
- [rpc] \#2327 `/dial_peers` does not try to dial existing peers
|
||||
- [node] \#2323 Filter empty strings from config lists
|
||||
- [abci/client] \#2236 Fix closing GRPC connection
|
||||
- [node] \#2323 Filter empty strings from config lists (@james-ray)
|
||||
- [abci/client] \#2236 Fix closing GRPC connection (@bradyjoestar)
|
||||
|
@ -17,10 +17,10 @@ The community has provided a number of addtional implementations, see the [Tende
|
||||
A detailed description of the ABCI methods and message types is contained in:
|
||||
|
||||
- [A prose specification](specification.md)
|
||||
- [A protobuf file](https://github.com/tendermint/abci/blob/master/types/types.proto)
|
||||
- [A Go interface](https://github.com/tendermint/abci/blob/master/types/application.go).
|
||||
- [A protobuf file](https://github.com/tendermint/tendermint/blob/master/abci/types/types.proto)
|
||||
- [A Go interface](https://github.com/tendermint/tendermint/blob/master/abci/types/application.go).
|
||||
|
||||
For more background information on ABCI, motivations, and tendermint, please visit [the documentation](http://tendermint.readthedocs.io/en/master/).
|
||||
For more background information on ABCI, motivations, and tendermint, please visit [the documentation](https://tendermint.com/docs/).
|
||||
The two guides to focus on are the `Application Development Guide` and `Using ABCI-CLI`.
|
||||
|
||||
|
||||
@ -94,7 +94,7 @@ Note the length-prefixing used in the socket implementation does not apply for G
|
||||
The `abci-cli` tool wraps an ABCI client and can be used for probing/testing an ABCI server.
|
||||
For instance, `abci-cli test` will run a test sequence against a listening server running the Counter application (see below).
|
||||
It can also be used to run some example applications.
|
||||
See [the documentation](http://tendermint.readthedocs.io/en/master/) for more details.
|
||||
See [the documentation](https://tendermint.com/docs/) for more details.
|
||||
|
||||
### Examples
|
||||
|
||||
|
@ -123,7 +123,7 @@
|
||||
"abciServers": [
|
||||
{
|
||||
"name": "abci",
|
||||
"url": "https://github.com/tendermint/abci",
|
||||
"url": "https://github.com/tendermint/tendermint/tree/master/abci",
|
||||
"language": "Go",
|
||||
"author": "Tendermint"
|
||||
},
|
||||
|
@ -8,9 +8,9 @@ The Tendermint blockchains consists of a short list of basic data types:
|
||||
|
||||
- `Block`
|
||||
- `Header`
|
||||
- `Vote`
|
||||
- `BlockID`
|
||||
- `Signature`
|
||||
- `Time`
|
||||
- `Vote`
|
||||
- `Evidence`
|
||||
|
||||
## Block
|
||||
@ -42,29 +42,29 @@ the data in the current block, the previous block, and the results returned by t
|
||||
```go
|
||||
type Header struct {
|
||||
// basic block info
|
||||
ChainID string `json:"chain_id"`
|
||||
Height int64 `json:"height"`
|
||||
Time time.Time `json:"time"`
|
||||
NumTxs int64 `json:"num_txs"`
|
||||
TotalTxs int64 `json:"total_txs"`
|
||||
ChainID string
|
||||
Height int64
|
||||
Time time.Time
|
||||
NumTxs int64
|
||||
TotalTxs int64
|
||||
|
||||
// prev block info
|
||||
LastBlockID BlockID `json:"last_block_id"`
|
||||
LastBlockID BlockID
|
||||
|
||||
// hashes of block data
|
||||
LastCommitHash cmn.HexBytes `json:"last_commit_hash"` // commit from validators from the last block
|
||||
DataHash cmn.HexBytes `json:"data_hash"` // transactions
|
||||
LastCommitHash []byte // commit from validators from the last block
|
||||
DataHash []byte // Merkle root of transactions
|
||||
|
||||
// hashes from the app output from the prev block
|
||||
ValidatorsHash cmn.HexBytes `json:"validators_hash"` // validators for the current block
|
||||
NextValidatorsHash cmn.HexBytes `json:"next_validators_hash"` // validators for the next block
|
||||
ConsensusHash cmn.HexBytes `json:"consensus_hash"` // consensus params for current block
|
||||
AppHash cmn.HexBytes `json:"app_hash"` // state after txs from the previous block
|
||||
LastResultsHash cmn.HexBytes `json:"last_results_hash"` // root hash of all results from the txs from the previous block
|
||||
ValidatorsHash []byte // validators for the current block
|
||||
NextValidatorsHash []byte // validators for the next block
|
||||
ConsensusHash []byte // consensus params for current block
|
||||
AppHash []byte // state after txs from the previous block
|
||||
LastResultsHash []byte // root hash of all results from the txs from the previous block
|
||||
|
||||
// consensus info
|
||||
EvidenceHash cmn.HexBytes `json:"evidence_hash"` // evidence included in the block
|
||||
ProposerAddress Address `json:"proposer_address"` // original proposer of the block
|
||||
EvidenceHash []byte // evidence included in the block
|
||||
ProposerAddress []byte // original proposer of the block
|
||||
```
|
||||
|
||||
Further details on each of these fields is described below.
|
||||
@ -90,6 +90,16 @@ type PartsHeader struct {
|
||||
}
|
||||
```
|
||||
|
||||
## Time
|
||||
|
||||
Tendermint uses the
|
||||
[Google.Protobuf.WellKnownTypes.Timestamp](https://developers.google.com/protocol-buffers/docs/reference/csharp/class/google/protobuf/well-known-types/timestamp)
|
||||
format, which uses two integers, one for Seconds and for Nanoseconds.
|
||||
|
||||
TODO: clarify exact format and reconcile [this
|
||||
comment](https://github.com/tendermint/tendermint/blob/892b170818cd3be4cd3f919d72dde1ad60c28bbb/types/proto3/block.proto#L43).
|
||||
|
||||
|
||||
## Vote
|
||||
|
||||
A vote is a signed message from a validator for a particular block.
|
||||
@ -97,14 +107,14 @@ The vote includes information about the validator signing it.
|
||||
|
||||
```go
|
||||
type Vote struct {
|
||||
Timestamp int64
|
||||
Address []byte
|
||||
Index int
|
||||
Height int64
|
||||
Round int
|
||||
Type int8
|
||||
BlockID BlockID
|
||||
Signature Signature
|
||||
ValidatorAddress []byte
|
||||
ValidatorIndex int
|
||||
Height int64
|
||||
Round int
|
||||
Timestamp Time
|
||||
Type int8
|
||||
BlockID BlockID
|
||||
Signature []byte
|
||||
}
|
||||
```
|
||||
|
||||
@ -114,41 +124,9 @@ a _precommit_ has `vote.Type == 2`.
|
||||
|
||||
## Signature
|
||||
|
||||
Tendermint allows for multiple signature schemes to be used by prepending a single type-byte
|
||||
to the signature bytes. Different signatures may also come with fixed or variable lengths.
|
||||
Currently, Tendermint supports Ed25519 and Secp256k1.
|
||||
|
||||
### ED25519
|
||||
|
||||
An ED25519 signature has `Type == 0x1`. It looks like:
|
||||
|
||||
```go
|
||||
// Implements Signature
|
||||
type Ed25519Signature struct {
|
||||
Type int8 = 0x1
|
||||
Signature [64]byte
|
||||
}
|
||||
```
|
||||
|
||||
where `Signature` is the 64 byte signature.
|
||||
|
||||
### Secp256k1
|
||||
|
||||
A `Secp256k1` signature has `Type == 0x2`. It looks like:
|
||||
|
||||
```go
|
||||
// Implements Signature
|
||||
type Secp256k1Signature struct {
|
||||
Type int8 = 0x2
|
||||
Signature []byte
|
||||
}
|
||||
```
|
||||
|
||||
where `Signature` is the DER encoded signature, ie:
|
||||
|
||||
```hex
|
||||
0x30 <length of whole message> <0x02> <length of R> <R> 0x2 <length of S> <S>.
|
||||
```
|
||||
Signatures in Tendermint are raw bytes representing the underlying signature.
|
||||
The only signature scheme currently supported for Tendermint validators is
|
||||
ED25519. The signature is the raw 64-byte ED25519 signature.
|
||||
|
||||
## Evidence
|
||||
|
||||
|
@ -42,12 +42,14 @@ definition](https://github.com/tendermint/tendermint/blob/master/types/genesis.g
|
||||
- `genesis_time`: Official time of blockchain start.
|
||||
- `chain_id`: ID of the blockchain. This must be unique for
|
||||
every blockchain. If your testnet blockchains do not have unique
|
||||
chain IDs, you will have a bad time.
|
||||
- `validators`:
|
||||
- `pub_key`: The first element specifies the `pub_key` type. 1
|
||||
chain IDs, you will have a bad time. The ChainID must be less than 50 bytes.
|
||||
- `validators`: List of initial validators. Note this may be overridden entirely by the
|
||||
application, and may be left empty to make explicit that the
|
||||
application will initialize the validator set with ResponseInitChain.
|
||||
- `pub_key`: The first element specifies the `pub_key` type. 1
|
||||
== Ed25519. The second element are the pubkey bytes.
|
||||
- `power`: The validator's voting power.
|
||||
- `name`: Name of the validator (optional).
|
||||
- `power`: The validator's voting power.
|
||||
- `name`: Name of the validator (optional).
|
||||
- `app_hash`: The expected application hash (as returned by the
|
||||
`ResponseInfo` ABCI message) upon genesis. If the app's hash does
|
||||
not match, Tendermint will panic.
|
||||
@ -93,8 +95,7 @@ definition](https://github.com/tendermint/tendermint/blob/master/types/genesis.g
|
||||
"power": "1",
|
||||
"name": "node3"
|
||||
}
|
||||
],
|
||||
"app_hash": ""
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user