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
|
# Pending
|
||||||
|
|
||||||
|
Special thanks to external contributors with PRs included in this release: ackratos, james-ray, bradyjoestar,
|
||||||
|
peerlink, Ahmah2009, bluele, b00f
|
||||||
|
|
||||||
BREAKING CHANGES:
|
BREAKING CHANGES:
|
||||||
|
|
||||||
* CLI/RPC/Config
|
* CLI/RPC/Config
|
||||||
@ -21,9 +24,11 @@ BREAKING CHANGES:
|
|||||||
|
|
||||||
* Go API
|
* Go API
|
||||||
- [lite] \#1815 Complete refactor of the package
|
- [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] \#2199 Remove Fmt, in favor of fmt.Sprintf
|
||||||
- [libs/common] SplitAndTrim was deleted
|
- [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
|
- [libs/clist] Panics if list extends beyond MaxLength
|
||||||
- [crypto] \#2205 Rename AminoRoute variables to no longer be prefixed by signature type.
|
- [crypto] \#2205 Rename AminoRoute variables to no longer be prefixed by signature type.
|
||||||
|
|
||||||
@ -49,10 +54,11 @@ BREAKING CHANGES:
|
|||||||
* P2P Protocol
|
* P2P Protocol
|
||||||
- [p2p] \#2263 Update secret connection to use a little endian encoded nonce
|
- [p2p] \#2263 Update secret connection to use a little endian encoded nonce
|
||||||
- [blockchain] \#2213 Fix Amino routes for blockchain reactor messages
|
- [blockchain] \#2213 Fix Amino routes for blockchain reactor messages
|
||||||
|
(@peerlink)
|
||||||
|
|
||||||
|
|
||||||
FEATURES:
|
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
|
- Initial validator set can be determined by the app in ResponseInitChain
|
||||||
- [rpc] \#2161 New event `ValidatorSetUpdates` for when the validator set changes
|
- [rpc] \#2161 New event `ValidatorSetUpdates` for when the validator set changes
|
||||||
- [crypto/multisig] \#2164 Introduce multisig pubkey and signature format
|
- [crypto/multisig] \#2164 Introduce multisig pubkey and signature format
|
||||||
@ -60,14 +66,15 @@ FEATURES:
|
|||||||
|
|
||||||
IMPROVEMENTS:
|
IMPROVEMENTS:
|
||||||
- [docs] Lint documentation with `write-good` and `stop-words`.
|
- [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)
|
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] \#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:
|
BUG FIXES:
|
||||||
- [config] \#2284 Replace `db_path` with `db_dir` from automatically generated configuration files.
|
- [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
|
- [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
|
- [rpc] \#2327 `/dial_peers` does not try to dial existing peers
|
||||||
- [node] \#2323 Filter empty strings from config lists
|
- [node] \#2323 Filter empty strings from config lists (@james-ray)
|
||||||
- [abci/client] \#2236 Fix closing GRPC connection
|
- [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 detailed description of the ABCI methods and message types is contained in:
|
||||||
|
|
||||||
- [A prose specification](specification.md)
|
- [A prose specification](specification.md)
|
||||||
- [A protobuf file](https://github.com/tendermint/abci/blob/master/types/types.proto)
|
- [A protobuf file](https://github.com/tendermint/tendermint/blob/master/abci/types/types.proto)
|
||||||
- [A Go interface](https://github.com/tendermint/abci/blob/master/types/application.go).
|
- [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`.
|
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.
|
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).
|
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.
|
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
|
### Examples
|
||||||
|
|
||||||
|
@ -123,7 +123,7 @@
|
|||||||
"abciServers": [
|
"abciServers": [
|
||||||
{
|
{
|
||||||
"name": "abci",
|
"name": "abci",
|
||||||
"url": "https://github.com/tendermint/abci",
|
"url": "https://github.com/tendermint/tendermint/tree/master/abci",
|
||||||
"language": "Go",
|
"language": "Go",
|
||||||
"author": "Tendermint"
|
"author": "Tendermint"
|
||||||
},
|
},
|
||||||
|
@ -8,9 +8,9 @@ The Tendermint blockchains consists of a short list of basic data types:
|
|||||||
|
|
||||||
- `Block`
|
- `Block`
|
||||||
- `Header`
|
- `Header`
|
||||||
- `Vote`
|
|
||||||
- `BlockID`
|
- `BlockID`
|
||||||
- `Signature`
|
- `Time`
|
||||||
|
- `Vote`
|
||||||
- `Evidence`
|
- `Evidence`
|
||||||
|
|
||||||
## Block
|
## Block
|
||||||
@ -42,29 +42,29 @@ the data in the current block, the previous block, and the results returned by t
|
|||||||
```go
|
```go
|
||||||
type Header struct {
|
type Header struct {
|
||||||
// basic block info
|
// basic block info
|
||||||
ChainID string `json:"chain_id"`
|
ChainID string
|
||||||
Height int64 `json:"height"`
|
Height int64
|
||||||
Time time.Time `json:"time"`
|
Time time.Time
|
||||||
NumTxs int64 `json:"num_txs"`
|
NumTxs int64
|
||||||
TotalTxs int64 `json:"total_txs"`
|
TotalTxs int64
|
||||||
|
|
||||||
// prev block info
|
// prev block info
|
||||||
LastBlockID BlockID `json:"last_block_id"`
|
LastBlockID BlockID
|
||||||
|
|
||||||
// hashes of block data
|
// hashes of block data
|
||||||
LastCommitHash cmn.HexBytes `json:"last_commit_hash"` // commit from validators from the last block
|
LastCommitHash []byte // commit from validators from the last block
|
||||||
DataHash cmn.HexBytes `json:"data_hash"` // transactions
|
DataHash []byte // Merkle root of transactions
|
||||||
|
|
||||||
// hashes from the app output from the prev block
|
// hashes from the app output from the prev block
|
||||||
ValidatorsHash cmn.HexBytes `json:"validators_hash"` // validators for the current block
|
ValidatorsHash []byte // validators for the current block
|
||||||
NextValidatorsHash cmn.HexBytes `json:"next_validators_hash"` // validators for the next block
|
NextValidatorsHash []byte // validators for the next block
|
||||||
ConsensusHash cmn.HexBytes `json:"consensus_hash"` // consensus params for current block
|
ConsensusHash []byte // consensus params for current block
|
||||||
AppHash cmn.HexBytes `json:"app_hash"` // state after txs from the previous block
|
AppHash []byte // 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
|
LastResultsHash []byte // root hash of all results from the txs from the previous block
|
||||||
|
|
||||||
// consensus info
|
// consensus info
|
||||||
EvidenceHash cmn.HexBytes `json:"evidence_hash"` // evidence included in the block
|
EvidenceHash []byte // evidence included in the block
|
||||||
ProposerAddress Address `json:"proposer_address"` // original proposer of the block
|
ProposerAddress []byte // original proposer of the block
|
||||||
```
|
```
|
||||||
|
|
||||||
Further details on each of these fields is described below.
|
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
|
## Vote
|
||||||
|
|
||||||
A vote is a signed message from a validator for a particular block.
|
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
|
```go
|
||||||
type Vote struct {
|
type Vote struct {
|
||||||
Timestamp int64
|
ValidatorAddress []byte
|
||||||
Address []byte
|
ValidatorIndex int
|
||||||
Index int
|
Height int64
|
||||||
Height int64
|
Round int
|
||||||
Round int
|
Timestamp Time
|
||||||
Type int8
|
Type int8
|
||||||
BlockID BlockID
|
BlockID BlockID
|
||||||
Signature Signature
|
Signature []byte
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -114,41 +124,9 @@ a _precommit_ has `vote.Type == 2`.
|
|||||||
|
|
||||||
## Signature
|
## Signature
|
||||||
|
|
||||||
Tendermint allows for multiple signature schemes to be used by prepending a single type-byte
|
Signatures in Tendermint are raw bytes representing the underlying signature.
|
||||||
to the signature bytes. Different signatures may also come with fixed or variable lengths.
|
The only signature scheme currently supported for Tendermint validators is
|
||||||
Currently, Tendermint supports Ed25519 and Secp256k1.
|
ED25519. The signature is the raw 64-byte ED25519 signature.
|
||||||
|
|
||||||
### 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>.
|
|
||||||
```
|
|
||||||
|
|
||||||
## Evidence
|
## Evidence
|
||||||
|
|
||||||
|
@ -42,12 +42,14 @@ definition](https://github.com/tendermint/tendermint/blob/master/types/genesis.g
|
|||||||
- `genesis_time`: Official time of blockchain start.
|
- `genesis_time`: Official time of blockchain start.
|
||||||
- `chain_id`: ID of the blockchain. This must be unique for
|
- `chain_id`: ID of the blockchain. This must be unique for
|
||||||
every blockchain. If your testnet blockchains do not have unique
|
every blockchain. If your testnet blockchains do not have unique
|
||||||
chain IDs, you will have a bad time.
|
chain IDs, you will have a bad time. The ChainID must be less than 50 bytes.
|
||||||
- `validators`:
|
- `validators`: List of initial validators. Note this may be overridden entirely by the
|
||||||
- `pub_key`: The first element specifies the `pub_key` type. 1
|
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.
|
== Ed25519. The second element are the pubkey bytes.
|
||||||
- `power`: The validator's voting power.
|
- `power`: The validator's voting power.
|
||||||
- `name`: Name of the validator (optional).
|
- `name`: Name of the validator (optional).
|
||||||
- `app_hash`: The expected application hash (as returned by the
|
- `app_hash`: The expected application hash (as returned by the
|
||||||
`ResponseInfo` ABCI message) upon genesis. If the app's hash does
|
`ResponseInfo` ABCI message) upon genesis. If the app's hash does
|
||||||
not match, Tendermint will panic.
|
not match, Tendermint will panic.
|
||||||
@ -93,8 +95,7 @@ definition](https://github.com/tendermint/tendermint/blob/master/types/genesis.g
|
|||||||
"power": "1",
|
"power": "1",
|
||||||
"name": "node3"
|
"name": "node3"
|
||||||
}
|
}
|
||||||
],
|
]
|
||||||
"app_hash": ""
|
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user