From e4ee34cfbc923ce902118c7ff503cb2b8f542478 Mon Sep 17 00:00:00 2001 From: Ethan Buchman Date: Tue, 18 Sep 2018 22:32:44 -0400 Subject: [PATCH] version: types --- version/version.go | 58 +++++++++++++++++++++++++++++++++++----------- 1 file changed, 44 insertions(+), 14 deletions(-) diff --git a/version/version.go b/version/version.go index d8bab5772..5a089141f 100644 --- a/version/version.go +++ b/version/version.go @@ -1,26 +1,56 @@ package version -// Version components -const ( - Maj = "0" - Min = "25" - Fix = "0" -) - var ( - // Version is the current version of Tendermint - // Must be a string because scripts like dist.sh read this file. - Version = "0.25.0" - // GitCommit is the current HEAD set using ldflags. GitCommit string -) -// ABCIVersion is the version of the ABCI library -const ABCIVersion = "0.14.0" + // Version is the built softwares version. + Version string = TMCoreSemVer +) func init() { if GitCommit != "" { Version += "-" + GitCommit } } + +const ( + // TMCoreSemVer is the current version of Tendermint Core. + // It's the Semantic Version of the software. + // Must be a string because scripts like dist.sh read this file. + TMCoreSemVer = "0.25.0" + + // ABCISemVer is the semantic version of the ABCI library + ABCISemVer = "0.14.0" + ABCIVersion = ABCISemVer +) + +// Protocol is used for implementation agnostic versioning. +type Protocol uint64 + +var ( + // P2PProtocol versions all p2p behaviour and msgs. + P2PProtocol Protocol = 4 + + // BlockProtocol versions all block data structures and processing. + BlockProtocol Protocol = 7 +) + +//------------------------------------------------------------------------ +// Version types + +// App includes the protocol and software version for the application. +// This information is included in ResponseInfo. The App.Protocol can be +// updated in ResponseEndBlock. +type App struct { + Protocol Protocol `json:"protocol"` + Software string `json:"software"` +} + +// Consensus captures the consensus rules for processing a block in the blockchain, +// including all blockchain data structures and the rules of the application's +// state transition machine. +type Consensus struct { + Block Protocol `json:"block"` + App Protocol `json:"app"` +}