@ -1,16 +0,0 @@ | |||||
# top-most EditorConfig file | |||||
root = true | |||||
# Unix-style newlines with a newline ending every file | |||||
[*] | |||||
charset = utf-8 | |||||
end_of_line = lf | |||||
insert_final_newline = true | |||||
trim_trailing_whitespace = true | |||||
[*.{sh,Makefile}] | |||||
indent_style = tab | |||||
[*.proto] | |||||
indent_style = space | |||||
indent_size = 2 |
@ -1,29 +0,0 @@ | |||||
*.swp | |||||
*.swo | |||||
.bak | |||||
*.bak | |||||
.DS_Store | |||||
build/* | |||||
rpc/test/.tendermint | |||||
.tendermint | |||||
remote_dump | |||||
.revision | |||||
vendor | |||||
.vagrant | |||||
test/p2p/data/ | |||||
test/logs | |||||
coverage.txt | |||||
docs/_build | |||||
docs/tools | |||||
*.log | |||||
abci-cli | |||||
abci/types/types.pb.go | |||||
scripts/wal2json/wal2json | |||||
scripts/cutWALUntil/cutWALUntil | |||||
.idea/ | |||||
*.iml | |||||
libs/pubsub/query/fuzz_test/output | |||||
shunit2 |
@ -1,919 +0,0 @@ | |||||
# Changelog | |||||
## 0.22.0 | |||||
*July 1st, 2018* | |||||
BREAKING CHANGES: | |||||
- [config] Rename `skip_upnp` to `upnp`, and turn it off by default. | |||||
- [types] Update Amino to v0.10.1 | |||||
* Amino is now fully proto3 compatible for the basic types | |||||
* JSON-encoded types now use the type name instead of the prefix bytes | |||||
* Integers are encoded as strings | |||||
- [crypto] Update go-crypto to v0.10.0 and merge into `crypto` | |||||
* privKey.Sign returns error. | |||||
* ed25519 address is the first 20-bytes of the SHA256 of the pubkey | |||||
* `tmlibs/merkle` -> `crypto/merkle`. Uses SHA256 instead of RIPEMD160 | |||||
- [rpc] `syncing` is now called `catching_up`. | |||||
FEATURES | |||||
- [cmd] Added metrics (served under `/metrics` using a Prometheus client; | |||||
disabled by default). See the new `instrumentation` section in the config and | |||||
[metrics](https://tendermint.readthedocs.io/projects/tools/en/develop/metrics.html) | |||||
guide. | |||||
- [p2p] Add IPv6 support to peering. | |||||
IMPROVEMENT | |||||
- [rpc/client] Supports https and wss now. | |||||
- [crypto] Make public key size into public constants | |||||
- [mempool] Log tx hash, not entire tx | |||||
- [abci] Merged in github.com/tendermint/abci and | |||||
github.com/tendermint/go-crypto | |||||
- [docs] Move from .rst to .md | |||||
BUG FIXES: | |||||
- [rpc] Limit maximum number of HTTP/WebSocket connections | |||||
(`rpc.max_open_connections`) and gRPC connections | |||||
(`rpc.grpc_max_open_connections`). Check out "Running In Production" guide if | |||||
you want to increase them. | |||||
- [rpc] Limit maximum request body size to 1MB (header is limited to 1MB). | |||||
- [consensus] Fix a halting bug where `create_empty_blocks=false` | |||||
- [p2p] Fix panic in seed mode | |||||
## 0.21.0 | |||||
*June 21th, 2018* | |||||
BREAKING CHANGES | |||||
- [config] Change default ports from 4665X to 2665X. Ports over 32768 are | |||||
ephemeral and reserved for use by the kernel. | |||||
- [cmd] `unsafe_reset_all` removes the addrbook.json | |||||
IMPROVEMENT | |||||
- [pubsub] Set default capacity to 0 | |||||
- [docs] Various improvements | |||||
BUG FIXES | |||||
- [consensus] Fix an issue where we don't make blocks after `fast_sync` when `create_empty_blocks=false` | |||||
- [mempool] Fix #1761 where we don't process txs if `cache_size=0` | |||||
- [rpc] Fix memory leak in Websocket (when using `/subscribe` method) | |||||
- [config] Escape paths in config - fixes config paths on Windows | |||||
## 0.20.0 | |||||
*June 6th, 2018* | |||||
This is the first in a series of breaking releases coming to Tendermint after | |||||
soliciting developer feedback and conducting security audits. | |||||
This release does not break any blockchain data structures or | |||||
protocols other than the ABCI messages between Tendermint and the application. | |||||
Applications that upgrade for ABCI v0.11.0 should be able to continue running Tendermint | |||||
v0.20.0 on blockchains created with v0.19.X | |||||
BREAKING CHANGES | |||||
- [abci] Upgrade to | |||||
[v0.11.0](https://github.com/tendermint/abci/blob/master/CHANGELOG.md#0110) | |||||
- [abci] Change Query path for filtering peers by node ID from | |||||
`p2p/filter/pubkey/<id>` to `p2p/filter/id/<id>` | |||||
## 0.19.9 | |||||
*June 5th, 2018* | |||||
BREAKING CHANGES | |||||
- [types/priv_validator] Moved to top level `privval` package | |||||
FEATURES | |||||
- [config] Collapse PeerConfig into P2PConfig | |||||
- [docs] Add quick-install script | |||||
- [docs/spec] Add table of Amino prefixes | |||||
BUG FIXES | |||||
- [rpc] Return 404 for unknown endpoints | |||||
- [consensus] Flush WAL on stop | |||||
- [evidence] Don't send evidence to peers that are behind | |||||
- [p2p] Fix memory leak on peer disconnects | |||||
- [rpc] Fix panic when `per_page=0` | |||||
## 0.19.8 | |||||
*June 4th, 2018* | |||||
BREAKING: | |||||
- [p2p] Remove `auth_enc` config option, peer connections are always auth | |||||
encrypted. Technically a breaking change but seems no one was using it and | |||||
arguably a bug fix :) | |||||
BUG FIXES | |||||
- [mempool] Fix deadlock under high load when `skip_timeout_commit=true` and | |||||
`create_empty_blocks=false` | |||||
## 0.19.7 | |||||
*May 31st, 2018* | |||||
BREAKING: | |||||
- [libs/pubsub] TagMap#Get returns a string value | |||||
- [libs/pubsub] NewTagMap accepts a map of strings | |||||
FEATURES | |||||
- [rpc] the RPC documentation is now published to https://tendermint.github.io/slate | |||||
- [p2p] AllowDuplicateIP config option to refuse connections from same IP. | |||||
- true by default for now, false by default in next breaking release | |||||
- [docs] Add docs for query, tx indexing, events, pubsub | |||||
- [docs] Add some notes about running Tendermint in production | |||||
IMPROVEMENTS: | |||||
- [consensus] Consensus reactor now receives events from a separate synchronous event bus, | |||||
which is not dependant on external RPC load | |||||
- [consensus/wal] do not look for height in older files if we've seen height - 1 | |||||
- [docs] Various cleanup and link fixes | |||||
## 0.19.6 | |||||
*May 29th, 2018* | |||||
BUG FIXES | |||||
- [blockchain] Fix fast-sync deadlock during high peer turnover | |||||
BUG FIX: | |||||
- [evidence] Dont send peers evidence from heights they haven't synced to yet | |||||
- [p2p] Refuse connections to more than one peer with the same IP | |||||
- [docs] Various fixes | |||||
## 0.19.5 | |||||
*May 20th, 2018* | |||||
BREAKING CHANGES | |||||
- [rpc/client] TxSearch and UnconfirmedTxs have new arguments (see below) | |||||
- [rpc/client] TxSearch returns ResultTxSearch | |||||
- [version] Breaking changes to Go APIs will not be reflected in breaking | |||||
version change, but will be included in changelog. | |||||
FEATURES | |||||
- [rpc] `/tx_search` takes `page` (starts at 1) and `per_page` (max 100, default 30) args to paginate results | |||||
- [rpc] `/unconfirmed_txs` takes `limit` (max 100, default 30) arg to limit the output | |||||
- [config] `mempool.size` and `mempool.cache_size` options | |||||
IMPROVEMENTS | |||||
- [docs] Lots of updates | |||||
- [consensus] Only Fsync() the WAL before executing msgs from ourselves | |||||
BUG FIXES | |||||
- [mempool] Enforce upper bound on number of transactions | |||||
## 0.19.4 (May 17th, 2018) | |||||
IMPROVEMENTS | |||||
- [state] Improve tx indexing by using batches | |||||
- [consensus, state] Improve logging (more consensus logs, fewer tx logs) | |||||
- [spec] Moved to `docs/spec` (TODO cleanup the rest of the docs ...) | |||||
BUG FIXES | |||||
- [consensus] Fix issue #1575 where a late proposer can get stuck | |||||
## 0.19.3 (May 14th, 2018) | |||||
FEATURES | |||||
- [rpc] New `/consensus_state` returns just the votes seen at the current height | |||||
IMPROVEMENTS | |||||
- [rpc] Add stringified votes and fraction of power voted to `/dump_consensus_state` | |||||
- [rpc] Add PeerStateStats to `/dump_consensus_state` | |||||
BUG FIXES | |||||
- [cmd] Set GenesisTime during `tendermint init` | |||||
- [consensus] fix ValidBlock rules | |||||
## 0.19.2 (April 30th, 2018) | |||||
FEATURES: | |||||
- [p2p] Allow peers with different Minor versions to connect | |||||
- [rpc] `/net_info` includes `n_peers` | |||||
IMPROVEMENTS: | |||||
- [p2p] Various code comments, cleanup, error types | |||||
- [p2p] Change some Error logs to Debug | |||||
BUG FIXES: | |||||
- [p2p] Fix reconnect to persistent peer when first dial fails | |||||
- [p2p] Validate NodeInfo.ListenAddr | |||||
- [p2p] Only allow (MaxNumPeers - MaxNumOutboundPeers) inbound peers | |||||
- [p2p/pex] Limit max msg size to 64kB | |||||
- [p2p] Fix panic when pex=false | |||||
- [p2p] Allow multiple IPs per ID in AddrBook | |||||
- [p2p] Fix before/after bugs in addrbook isBad() | |||||
## 0.19.1 (April 27th, 2018) | |||||
Note this release includes some small breaking changes in the RPC and one in the | |||||
config that are really bug fixes. v0.19.1 will work with existing chains, and make Tendermint | |||||
easier to use and debug. With <3 | |||||
BREAKING (MINOR) | |||||
- [config] Removed `wal_light` setting. If you really needed this, let us know | |||||
FEATURES: | |||||
- [networks] moved in tooling from devops repo: terraform and ansible scripts for deploying testnets ! | |||||
- [cmd] Added `gen_node_key` command | |||||
BUG FIXES | |||||
Some of these are breaking in the RPC response, but they're really bugs! | |||||
- [spec] Document address format and pubkey encoding pre and post Amino | |||||
- [rpc] Lower case JSON field names | |||||
- [rpc] Fix missing entries, improve, and lower case the fields in `/dump_consensus_state` | |||||
- [rpc] Fix NodeInfo.Channels format to hex | |||||
- [rpc] Add Validator address to `/status` | |||||
- [rpc] Fix `prove` in ABCIQuery | |||||
- [cmd] MarshalJSONIndent on init | |||||
## 0.19.0 (April 13th, 2018) | |||||
BREAKING: | |||||
- [cmd] improved `testnet` command; now it can fill in `persistent_peers` for you in the config file and much more (see `tendermint testnet --help` for details) | |||||
- [cmd] `show_node_id` now returns an error if there is no node key | |||||
- [rpc]: changed the output format for the `/status` endpoint (see https://godoc.org/github.com/tendermint/tendermint/rpc/core#Status) | |||||
Upgrade from go-wire to go-amino. This is a sweeping change that breaks everything that is | |||||
serialized to disk or over the network. | |||||
See github.com/tendermint/go-amino for details on the new format. | |||||
See `scripts/wire2amino.go` for a tool to upgrade | |||||
genesis/priv_validator/node_key JSON files. | |||||
FEATURES | |||||
- [test] docker-compose for local testnet setup (thanks Greg!) | |||||
## 0.18.0 (April 6th, 2018) | |||||
BREAKING: | |||||
- [types] Merkle tree uses different encoding for varints (see tmlibs v0.8.0) | |||||
- [types] ValidtorSet.GetByAddress returns -1 if no validator found | |||||
- [p2p] require all addresses come with an ID no matter what | |||||
- [rpc] Listening address must contain tcp:// or unix:// prefix | |||||
FEATURES: | |||||
- [rpc] StartHTTPAndTLSServer (not used yet) | |||||
- [rpc] Include validator's voting power in `/status` | |||||
- [rpc] `/tx` and `/tx_search` responses now include the transaction hash | |||||
- [rpc] Include peer NodeIDs in `/net_info` | |||||
IMPROVEMENTS: | |||||
- [config] trim whitespace from elements of lists (like `persistent_peers`) | |||||
- [rpc] `/tx_search` results are sorted by height | |||||
- [p2p] do not try to connect to ourselves (ok, maybe only once) | |||||
- [p2p] seeds respond with a bias towards good peers | |||||
BUG FIXES: | |||||
- [rpc] fix subscribing using an abci.ResponseDeliverTx tag | |||||
- [rpc] fix tx_indexers matchRange | |||||
- [rpc] fix unsubscribing (see tmlibs v0.8.0) | |||||
## 0.17.1 (March 27th, 2018) | |||||
BUG FIXES: | |||||
- [types] Actually support `app_state` in genesis as `AppStateJSON` | |||||
## 0.17.0 (March 27th, 2018) | |||||
BREAKING: | |||||
- [types] WriteSignBytes -> SignBytes | |||||
IMPROVEMENTS: | |||||
- [all] renamed `dummy` (`persistent_dummy`) to `kvstore` (`persistent_kvstore`) (name "dummy" is deprecated and will not work in the next breaking release) | |||||
- [docs] note on determinism (docs/determinism.rst) | |||||
- [genesis] `app_options` field is deprecated. please rename it to `app_state` in your genesis file(s). `app_options` will not work in the next breaking release | |||||
- [p2p] dial seeds directly without potential peers | |||||
- [p2p] exponential backoff for addrs in the address book | |||||
- [p2p] mark peer as good if it contributed enough votes or block parts | |||||
- [p2p] stop peer if it sends incorrect data, msg to unknown channel, msg we did not expect | |||||
- [p2p] when `auth_enc` is true, all dialed peers must have a node ID in their address | |||||
- [spec] various improvements | |||||
- switched from glide to dep internally for package management | |||||
- [wire] prep work for upgrading to new go-wire (which is now called go-amino) | |||||
FEATURES: | |||||
- [config] exposed `auth_enc` flag to enable/disable encryption | |||||
- [config] added the `--p2p.private_peer_ids` flag and `PrivatePeerIDs` config variable (see config for description) | |||||
- [rpc] added `/health` endpoint, which returns empty result for now | |||||
- [types/priv_validator] new format and socket client, allowing for remote signing | |||||
BUG FIXES: | |||||
- [consensus] fix liveness bug by introducing ValidBlock mechanism | |||||
## 0.16.0 (February 20th, 2018) | |||||
BREAKING CHANGES: | |||||
- [config] use $TMHOME/config for all config and json files | |||||
- [p2p] old `--p2p.seeds` is now `--p2p.persistent_peers` (persistent peers to which TM will always connect to) | |||||
- [p2p] now `--p2p.seeds` only used for getting addresses (if addrbook is empty; not persistent) | |||||
- [p2p] NodeInfo: remove RemoteAddr and add Channels | |||||
- we must have at least one overlapping channel with peer | |||||
- we only send msgs for channels the peer advertised | |||||
- [p2p/conn] pong timeout | |||||
- [lite] comment out IAVL related code | |||||
FEATURES: | |||||
- [p2p] added new `/dial_peers&persistent=_` **unsafe** endpoint | |||||
- [p2p] persistent node key in `$THMHOME/config/node_key.json` | |||||
- [p2p] introduce peer ID and authenticate peers by ID using addresses like `ID@IP:PORT` | |||||
- [p2p/pex] new seed mode crawls the network and serves as a seed. | |||||
- [config] MempoolConfig.CacheSize | |||||
- [config] P2P.SeedMode (`--p2p.seed_mode`) | |||||
IMPROVEMENT: | |||||
- [p2p/pex] stricter rules in the PEX reactor for better handling of abuse | |||||
- [p2p] various improvements to code structure including subpackages for `pex` and `conn` | |||||
- [docs] new spec! | |||||
- [all] speed up the tests! | |||||
BUG FIX: | |||||
- [blockchain] StopPeerForError on timeout | |||||
- [consensus] StopPeerForError on a bad Maj23 message | |||||
- [state] flush mempool conn before calling commit | |||||
- [types] fix priv val signing things that only differ by timestamp | |||||
- [mempool] fix memory leak causing zombie peers | |||||
- [p2p/conn] fix potential deadlock | |||||
## 0.15.0 (December 29, 2017) | |||||
BREAKING CHANGES: | |||||
- [p2p] enable the Peer Exchange reactor by default | |||||
- [types] add Timestamp field to Proposal/Vote | |||||
- [types] add new fields to Header: TotalTxs, ConsensusParamsHash, LastResultsHash, EvidenceHash | |||||
- [types] add Evidence to Block | |||||
- [types] simplify ValidateBasic | |||||
- [state] updates to support changes to the header | |||||
- [state] Enforce <1/3 of validator set can change at a time | |||||
FEATURES: | |||||
- [state] Send indices of absent validators and addresses of byzantine validators in BeginBlock | |||||
- [state] Historical ConsensusParams and ABCIResponses | |||||
- [docs] Specification for the base Tendermint data structures. | |||||
- [evidence] New evidence reactor for gossiping and managing evidence | |||||
- [rpc] `/block_results?height=X` returns the DeliverTx results for a given height. | |||||
IMPROVEMENTS: | |||||
- [consensus] Better handling of corrupt WAL file | |||||
BUG FIXES: | |||||
- [lite] fix race | |||||
- [state] validate block.Header.ValidatorsHash | |||||
- [p2p] allow seed addresses to be prefixed with eg. `tcp://` | |||||
- [p2p] use consistent key to refer to peers so we dont try to connect to existing peers | |||||
- [cmd] fix `tendermint init` to ignore files that are there and generate files that aren't. | |||||
## 0.14.0 (December 11, 2017) | |||||
BREAKING CHANGES: | |||||
- consensus/wal: removed separator | |||||
- rpc/client: changed Subscribe/Unsubscribe/UnsubscribeAll funcs signatures to be identical to event bus. | |||||
FEATURES: | |||||
- new `tendermint lite` command (and `lite/proxy` pkg) for running a light-client RPC proxy. | |||||
NOTE it is currently insecure and its APIs are not yet covered by semver | |||||
IMPROVEMENTS: | |||||
- rpc/client: can act as event bus subscriber (See https://github.com/tendermint/tendermint/issues/945). | |||||
- p2p: use exponential backoff from seconds to hours when attempting to reconnect to persistent peer | |||||
- config: moniker defaults to the machine's hostname instead of "anonymous" | |||||
BUG FIXES: | |||||
- p2p: no longer exit if one of the seed addresses is incorrect | |||||
## 0.13.0 (December 6, 2017) | |||||
BREAKING CHANGES: | |||||
- abci: update to v0.8 using gogo/protobuf; includes tx tags, vote info in RequestBeginBlock, data.Bytes everywhere, use int64, etc. | |||||
- types: block heights are now `int64` everywhere | |||||
- types & node: EventSwitch and EventCache have been replaced by EventBus and EventBuffer; event types have been overhauled | |||||
- node: EventSwitch methods now refer to EventBus | |||||
- rpc/lib/types: RPCResponse is no longer a pointer; WSRPCConnection interface has been modified | |||||
- rpc/client: WaitForOneEvent takes an EventsClient instead of types.EventSwitch | |||||
- rpc/client: Add/RemoveListenerForEvent are now Subscribe/Unsubscribe | |||||
- rpc/core/types: ResultABCIQuery wraps an abci.ResponseQuery | |||||
- rpc: `/subscribe` and `/unsubscribe` take `query` arg instead of `event` | |||||
- rpc: `/status` returns the LatestBlockTime in human readable form instead of in nanoseconds | |||||
- mempool: cached transactions return an error instead of an ABCI response with BadNonce | |||||
FEATURES: | |||||
- rpc: new `/unsubscribe_all` WebSocket RPC endpoint | |||||
- rpc: new `/tx_search` endpoint for filtering transactions by more complex queries | |||||
- p2p/trust: new trust metric for tracking peers. See ADR-006 | |||||
- config: TxIndexConfig allows to set what DeliverTx tags to index | |||||
IMPROVEMENTS: | |||||
- New asynchronous events system using `tmlibs/pubsub` | |||||
- logging: Various small improvements | |||||
- consensus: Graceful shutdown when app crashes | |||||
- tests: Fix various non-deterministic errors | |||||
- p2p: more defensive programming | |||||
BUG FIXES: | |||||
- consensus: fix panic where prs.ProposalBlockParts is not initialized | |||||
- p2p: fix panic on bad channel | |||||
## 0.12.1 (November 27, 2017) | |||||
BUG FIXES: | |||||
- upgrade tmlibs dependency to enable Windows builds for Tendermint | |||||
## 0.12.0 (October 27, 2017) | |||||
BREAKING CHANGES: | |||||
- rpc/client: websocket ResultsCh and ErrorsCh unified in ResponsesCh. | |||||
- rpc/client: ABCIQuery no longer takes `prove` | |||||
- state: remove GenesisDoc from state. | |||||
- consensus: new binary WAL format provides efficiency and uses checksums to detect corruption | |||||
- use scripts/wal2json to convert to json for debugging | |||||
FEATURES: | |||||
- new `certifiers` pkg contains the tendermint light-client library (name subject to change)! | |||||
- rpc: `/genesis` includes the `app_options` . | |||||
- rpc: `/abci_query` takes an additional `height` parameter to support historical queries. | |||||
- rpc/client: new ABCIQueryWithOptions supports options like `trusted` (set false to get a proof) and `height` to query a historical height. | |||||
IMPROVEMENTS: | |||||
- rpc: `/genesis` result includes `app_options` | |||||
- rpc/lib/client: add jitter to reconnects. | |||||
- rpc/lib/types: `RPCError` satisfies the `error` interface. | |||||
BUG FIXES: | |||||
- rpc/client: fix ws deadlock after stopping | |||||
- blockchain: fix panic on AddBlock when peer is nil | |||||
- mempool: fix sending on TxsAvailable when a tx has been invalidated | |||||
- consensus: dont run WAL catchup if we fast synced | |||||
## 0.11.1 (October 10, 2017) | |||||
IMPROVEMENTS: | |||||
- blockchain/reactor: respondWithNoResponseMessage for missing height | |||||
BUG FIXES: | |||||
- rpc: fixed client WebSocket timeout | |||||
- rpc: client now resubscribes on reconnection | |||||
- rpc: fix panics on missing params | |||||
- rpc: fix `/dump_consensus_state` to have normal json output (NOTE: technically breaking, but worth a bug fix label) | |||||
- types: fixed out of range error in VoteSet.addVote | |||||
- consensus: fix wal autofile via https://github.com/tendermint/tmlibs/blob/master/CHANGELOG.md#032-october-2-2017 | |||||
## 0.11.0 (September 22, 2017) | |||||
BREAKING: | |||||
- genesis file: validator `amount` is now `power` | |||||
- abci: Info, BeginBlock, InitChain all take structs | |||||
- rpc: various changes to match JSONRPC spec (http://www.jsonrpc.org/specification), including breaking ones: | |||||
- requests that previously returned HTTP code 4XX now return 200 with an error code in the JSONRPC. | |||||
- `rpctypes.RPCResponse` uses new `RPCError` type instead of `string`. | |||||
- cmd: if there is no genesis, exit immediately instead of waiting around for one to show. | |||||
- types: `Signer.Sign` returns an error. | |||||
- state: every validator set change is persisted to disk, which required some changes to the `State` structure. | |||||
- p2p: new `p2p.Peer` interface used for all reactor methods (instead of `*p2p.Peer` struct). | |||||
FEATURES: | |||||
- rpc: `/validators?height=X` allows querying of validators at previous heights. | |||||
- rpc: Leaving the `height` param empty for `/block`, `/validators`, and `/commit` will return the value for the latest height. | |||||
IMPROVEMENTS: | |||||
- docs: Moved all docs from the website and tools repo in, converted to `.rst`, and cleaned up for presentation on `tendermint.readthedocs.io` | |||||
BUG FIXES: | |||||
- fix WAL openning issue on Windows | |||||
## 0.10.4 (September 5, 2017) | |||||
IMPROVEMENTS: | |||||
- docs: Added Slate docs to each rpc function (see rpc/core) | |||||
- docs: Ported all website docs to Read The Docs | |||||
- config: expose some p2p params to tweak performance: RecvRate, SendRate, and MaxMsgPacketPayloadSize | |||||
- rpc: Upgrade the websocket client and server, including improved auto reconnect, and proper ping/pong | |||||
BUG FIXES: | |||||
- consensus: fix panic on getVoteBitArray | |||||
- consensus: hang instead of panicking on byzantine consensus failures | |||||
- cmd: dont load config for version command | |||||
## 0.10.3 (August 10, 2017) | |||||
FEATURES: | |||||
- control over empty block production: | |||||
- new flag, `--consensus.create_empty_blocks`; when set to false, blocks are only created when there are txs or when the AppHash changes. | |||||
- new config option, `consensus.create_empty_blocks_interval`; an empty block is created after this many seconds. | |||||
- in normal operation, `create_empty_blocks = true` and `create_empty_blocks_interval = 0`, so blocks are being created all the time (as in all previous versions of tendermint). The number of empty blocks can be reduced by increasing `create_empty_blocks_interval` or by setting `create_empty_blocks = false`. | |||||
- new `TxsAvailable()` method added to Mempool that returns a channel which fires when txs are available. | |||||
- new heartbeat message added to consensus reactor to notify peers that a node is waiting for txs before entering propose step. | |||||
- rpc: Add `syncing` field to response returned by `/status`. Is `true` while in fast-sync mode. | |||||
IMPROVEMENTS: | |||||
- various improvements to documentation and code comments | |||||
BUG FIXES: | |||||
- mempool: pass height into constructor so it doesn't always start at 0 | |||||
## 0.10.2 (July 10, 2017) | |||||
FEATURES: | |||||
- Enable lower latency block commits by adding consensus reactor sleep durations and p2p flush throttle timeout to the config | |||||
IMPROVEMENTS: | |||||
- More detailed logging in the consensus reactor and state machine | |||||
- More in-code documentation for many exposed functions, especially in consensus/reactor.go and p2p/switch.go | |||||
- Improved readability for some function definitions and code blocks with long lines | |||||
## 0.10.1 (June 28, 2017) | |||||
FEATURES: | |||||
- Use `--trace` to get stack traces for logged errors | |||||
- types: GenesisDoc.ValidatorHash returns the hash of the genesis validator set | |||||
- types: GenesisDocFromFile parses a GenesiDoc from a JSON file | |||||
IMPROVEMENTS: | |||||
- Add a Code of Conduct | |||||
- Variety of improvements as suggested by `megacheck` tool | |||||
- rpc: deduplicate tests between rpc/client and rpc/tests | |||||
- rpc: addresses without a protocol prefix default to `tcp://`. `http://` is also accepted as an alias for `tcp://` | |||||
- cmd: commands are more easily reuseable from other tools | |||||
- DOCKER: automate build/push | |||||
BUG FIXES: | |||||
- Fix log statements using keys with spaces (logger does not currently support spaces) | |||||
- rpc: set logger on websocket connection | |||||
- rpc: fix ws connection stability by setting write deadline on pings | |||||
## 0.10.0 (June 2, 2017) | |||||
Includes major updates to configuration, logging, and json serialization. | |||||
Also includes the Grand Repo-Merge of 2017. | |||||
BREAKING CHANGES: | |||||
- Config and Flags: | |||||
- The `config` map is replaced with a [`Config` struct](https://github.com/tendermint/tendermint/blob/master/config/config.go#L11), | |||||
containing substructs: `BaseConfig`, `P2PConfig`, `MempoolConfig`, `ConsensusConfig`, `RPCConfig` | |||||
- This affects the following flags: | |||||
- `--seeds` is now `--p2p.seeds` | |||||
- `--node_laddr` is now `--p2p.laddr` | |||||
- `--pex` is now `--p2p.pex` | |||||
- `--skip_upnp` is now `--p2p.skip_upnp` | |||||
- `--rpc_laddr` is now `--rpc.laddr` | |||||
- `--grpc_laddr` is now `--rpc.grpc_laddr` | |||||
- Any configuration option now within a substract must come under that heading in the `config.toml`, for instance: | |||||
``` | |||||
[p2p] | |||||
laddr="tcp://1.2.3.4:46656" | |||||
[consensus] | |||||
timeout_propose=1000 | |||||
``` | |||||
- Use viper and `DefaultConfig() / TestConfig()` functions to handle defaults, and remove `config/tendermint` and `config/tendermint_test` | |||||
- Change some function and method signatures to | |||||
- Change some [function and method signatures](https://gist.github.com/ebuchman/640d5fc6c2605f73497992fe107ebe0b) accomodate new config | |||||
- Logger | |||||
- Replace static `log15` logger with a simple interface, and provide a new implementation using `go-kit`. | |||||
See our new [logging library](https://github.com/tendermint/tmlibs/log) and [blog post](https://tendermint.com/blog/abstracting-the-logger-interface-in-go) for more details | |||||
- Levels `warn` and `notice` are removed (you may need to change them in your `config.toml`!) | |||||
- Change some [function and method signatures](https://gist.github.com/ebuchman/640d5fc6c2605f73497992fe107ebe0b) to accept a logger | |||||
- JSON serialization: | |||||
- Replace `[TypeByte, Xxx]` with `{"type": "some-type", "data": Xxx}` in RPC and all `.json` files by using `go-wire/data`. For instance, a public key is now: | |||||
``` | |||||
"pub_key": { | |||||
"type": "ed25519", | |||||
"data": "83DDF8775937A4A12A2704269E2729FCFCD491B933C4B0A7FFE37FE41D7760D0" | |||||
} | |||||
``` | |||||
- Remove type information about RPC responses, so `[TypeByte, {"jsonrpc": "2.0", ... }]` is now just `{"jsonrpc": "2.0", ... }` | |||||
- Change `[]byte` to `data.Bytes` in all serialized types (for hex encoding) | |||||
- Lowercase the JSON tags in `ValidatorSet` fields | |||||
- Introduce `EventDataInner` for serializing events | |||||
- Other: | |||||
- Send InitChain message in handshake if `appBlockHeight == 0` | |||||
- Do not include the `Accum` field when computing the validator hash. This makes the ValidatorSetHash unique for a given validator set, rather than changing with every block (as the Accum changes) | |||||
- Unsafe RPC calls are not enabled by default. This includes `/dial_seeds`, and all calls prefixed with `unsafe`. Use the `--rpc.unsafe` flag to enable. | |||||
FEATURES: | |||||
- Per-module log levels. For instance, the new default is `state:info,*:error`, which means the `state` package logs at `info` level, and everything else logs at `error` level | |||||
- Log if a node is validator or not in every consensus round | |||||
- Use ldflags to set git hash as part of the version | |||||
- Ignore `address` and `pub_key` fields in `priv_validator.json` and overwrite them with the values derrived from the `priv_key` | |||||
IMPROVEMENTS: | |||||
- Merge `tendermint/go-p2p -> tendermint/tendermint/p2p` and `tendermint/go-rpc -> tendermint/tendermint/rpc/lib` | |||||
- Update paths for grand repo merge: | |||||
- `go-common -> tmlibs/common` | |||||
- `go-data -> go-wire/data` | |||||
- All other `go-` libs, except `go-crypto` and `go-wire`, are merged under `tmlibs` | |||||
- No global loggers (loggers are passed into constructors, or preferably set with a SetLogger method) | |||||
- Return HTTP status codes with errors for RPC responses | |||||
- Limit `/blockchain_info` call to return a maximum of 20 blocks | |||||
- Use `.Wrap()` and `.Unwrap()` instead of eg. `PubKeyS` for `go-crypto` types | |||||
- RPC JSON responses use pretty printing (via `json.MarshalIndent`) | |||||
- Color code different instances of the consensus for tests | |||||
- Isolate viper to `cmd/tendermint/commands` and do not read config from file for tests | |||||
## 0.9.2 (April 26, 2017) | |||||
BUG FIXES: | |||||
- Fix bug in `ResetPrivValidator` where we were using the global config and log (causing external consumers, eg. basecoin, to fail). | |||||
## 0.9.1 (April 21, 2017) | |||||
FEATURES: | |||||
- Transaction indexing - txs are indexed by their hash using a simple key-value store; easily extended to more advanced indexers | |||||
- New `/tx?hash=X` endpoint to query for transactions and their DeliverTx result by hash. Optionally returns a proof of the tx's inclusion in the block | |||||
- `tendermint testnet` command initializes files for a testnet | |||||
IMPROVEMENTS: | |||||
- CLI now uses Cobra framework | |||||
- TMROOT is now TMHOME (TMROOT will stop working in 0.10.0) | |||||
- `/broadcast_tx_XXX` also returns the Hash (can be used to query for the tx) | |||||
- `/broadcast_tx_commit` also returns the height the block was committed in | |||||
- ABCIResponses struct persisted to disk before calling Commit; makes handshake replay much cleaner | |||||
- WAL uses #ENDHEIGHT instead of #HEIGHT (#HEIGHT will stop working in 0.10.0) | |||||
- Peers included via `--seeds`, under `seeds` in the config, or in `/dial_seeds` are now persistent, and will be reconnected to if the connection breaks | |||||
BUG FIXES: | |||||
- Fix bug in fast-sync where we stop syncing after a peer is removed, even if they're re-added later | |||||
- Fix handshake replay to handle validator set changes and results of DeliverTx when we crash after app.Commit but before state.Save() | |||||
## 0.9.0 (March 6, 2017) | |||||
BREAKING CHANGES: | |||||
- Update ABCI to v0.4.0, where Query is now `Query(RequestQuery) ResponseQuery`, enabling precise proofs at particular heights: | |||||
``` | |||||
message RequestQuery{ | |||||
bytes data = 1; | |||||
string path = 2; | |||||
uint64 height = 3; | |||||
bool prove = 4; | |||||
} | |||||
message ResponseQuery{ | |||||
CodeType code = 1; | |||||
int64 index = 2; | |||||
bytes key = 3; | |||||
bytes value = 4; | |||||
bytes proof = 5; | |||||
uint64 height = 6; | |||||
string log = 7; | |||||
} | |||||
``` | |||||
- `BlockMeta` data type unifies its Hash and PartSetHash under a `BlockID`: | |||||
``` | |||||
type BlockMeta struct { | |||||
BlockID BlockID `json:"block_id"` // the block hash and partsethash | |||||
Header *Header `json:"header"` // The block's Header | |||||
} | |||||
``` | |||||
- `ValidatorSet.Proposer` is exposed as a field and persisted with the `State`. Use `GetProposer()` to initialize or update after validator-set changes. | |||||
- `tendermint gen_validator` command output is now pure JSON | |||||
FEATURES: | |||||
- New RPC endpoint `/commit?height=X` returns header and commit for block at height `X` | |||||
- Client API for each endpoint, including mocks for testing | |||||
IMPROVEMENTS: | |||||
- `Node` is now a `BaseService` | |||||
- Simplified starting Tendermint in-process from another application | |||||
- Better organized Makefile | |||||
- Scripts for auto-building binaries across platforms | |||||
- Docker image improved, slimmed down (using Alpine), and changed from tendermint/tmbase to tendermint/tendermint | |||||
- New repo files: `CONTRIBUTING.md`, Github `ISSUE_TEMPLATE`, `CHANGELOG.md` | |||||
- Improvements on CircleCI for managing build/test artifacts | |||||
- Handshake replay is doen through the consensus package, possibly using a mockApp | |||||
- Graceful shutdown of RPC listeners | |||||
- Tests for the PEX reactor and DialSeeds | |||||
BUG FIXES: | |||||
- Check peer.Send for failure before updating PeerState in consensus | |||||
- Fix panic in `/dial_seeds` with invalid addresses | |||||
- Fix proposer selection logic in ValidatorSet by taking the address into account in the `accumComparable` | |||||
- Fix inconcistencies with `ValidatorSet.Proposer` across restarts by persisting it in the `State` | |||||
## 0.8.0 (January 13, 2017) | |||||
BREAKING CHANGES: | |||||
- New data type `BlockID` to represent blocks: | |||||
``` | |||||
type BlockID struct { | |||||
Hash []byte `json:"hash"` | |||||
PartsHeader PartSetHeader `json:"parts"` | |||||
} | |||||
``` | |||||
- `Vote` data type now includes validator address and index: | |||||
``` | |||||
type Vote struct { | |||||
ValidatorAddress []byte `json:"validator_address"` | |||||
ValidatorIndex int `json:"validator_index"` | |||||
Height int `json:"height"` | |||||
Round int `json:"round"` | |||||
Type byte `json:"type"` | |||||
BlockID BlockID `json:"block_id"` // zero if vote is nil. | |||||
Signature crypto.Signature `json:"signature"` | |||||
} | |||||
``` | |||||
- Update TMSP to v0.3.0, where it is now called ABCI and AppendTx is DeliverTx | |||||
- Hex strings in the RPC are now "0x" prefixed | |||||
FEATURES: | |||||
- New message type on the ConsensusReactor, `Maj23Msg`, for peers to alert others they've seen a Maj23, | |||||
in order to track and handle conflicting votes intelligently to prevent Byzantine faults from causing halts: | |||||
``` | |||||
type VoteSetMaj23Message struct { | |||||
Height int | |||||
Round int | |||||
Type byte | |||||
BlockID types.BlockID | |||||
} | |||||
``` | |||||
- Configurable block part set size | |||||
- Validator set changes | |||||
- Optionally skip TimeoutCommit if we have all the votes | |||||
- Handshake between Tendermint and App on startup to sync latest state and ensure consistent recovery from crashes | |||||
- GRPC server for BroadcastTx endpoint | |||||
IMPROVEMENTS: | |||||
- Less verbose logging | |||||
- Better test coverage (37% -> 49%) | |||||
- Canonical SignBytes for signable types | |||||
- Write-Ahead Log for Mempool and Consensus via tmlibs/autofile | |||||
- Better in-process testing for the consensus reactor and byzantine faults | |||||
- Better crash/restart testing for individual nodes at preset failure points, and of networks at arbitrary points | |||||
- Better abstraction over timeout mechanics | |||||
BUG FIXES: | |||||
- Fix memory leak in mempool peer | |||||
- Fix panic on POLRound=-1 | |||||
- Actually set the CommitTime | |||||
- Actually send BeginBlock message | |||||
- Fix a liveness issues caused by Byzantine proposals/votes. Uses the new `Maj23Msg`. | |||||
## 0.7.4 (December 14, 2016) | |||||
FEATURES: | |||||
- Enable the Peer Exchange reactor with the `--pex` flag for more resilient gossip network (feature still in development, beware dragons) | |||||
IMPROVEMENTS: | |||||
- Remove restrictions on RPC endpoint `/dial_seeds` to enable manual network configuration | |||||
## 0.7.3 (October 20, 2016) | |||||
IMPROVEMENTS: | |||||
- Type safe FireEvent | |||||
- More WAL/replay tests | |||||
- Cleanup some docs | |||||
BUG FIXES: | |||||
- Fix deadlock in mempool for synchronous apps | |||||
- Replay handles non-empty blocks | |||||
- Fix race condition in HeightVoteSet | |||||
## 0.7.2 (September 11, 2016) | |||||
BUG FIXES: | |||||
- Set mustConnect=false so tendermint will retry connecting to the app | |||||
## 0.7.1 (September 10, 2016) | |||||
FEATURES: | |||||
- New TMSP connection for Query/Info | |||||
- New RPC endpoints: | |||||
- `tmsp_query` | |||||
- `tmsp_info` | |||||
- Allow application to filter peers through Query (off by default) | |||||
IMPROVEMENTS: | |||||
- TMSP connection type enforced at compile time | |||||
- All listen/client urls use a "tcp://" or "unix://" prefix | |||||
BUG FIXES: | |||||
- Save LastSignature/LastSignBytes to `priv_validator.json` for recovery | |||||
- Fix event unsubscribe | |||||
- Fix fastsync/blockchain reactor | |||||
## 0.7.0 (August 7, 2016) | |||||
BREAKING CHANGES: | |||||
- Strict SemVer starting now! | |||||
- Update to ABCI v0.2.0 | |||||
- Validation types now called Commit | |||||
- NewBlock event only returns the block header | |||||
FEATURES: | |||||
- TMSP and RPC support TCP and UNIX sockets | |||||
- Addition config options including block size and consensus parameters | |||||
- New WAL mode `cswal_light`; logs only the validator's own votes | |||||
- New RPC endpoints: | |||||
- for starting/stopping profilers, and for updating config | |||||
- `/broadcast_tx_commit`, returns when tx is included in a block, else an error | |||||
- `/unsafe_flush_mempool`, empties the mempool | |||||
IMPROVEMENTS: | |||||
- Various optimizations | |||||
- Remove bad or invalidated transactions from the mempool cache (allows later duplicates) | |||||
- More elaborate testing using CircleCI including benchmarking throughput on 4 digitalocean droplets | |||||
BUG FIXES: | |||||
- Various fixes to WAL and replay logic | |||||
- Various race conditions | |||||
## PreHistory | |||||
Strict versioning only began with the release of v0.7.0, in late summer 2016. | |||||
The project itself began in early summer 2014 and was workable decentralized cryptocurrency software by the end of that year. | |||||
Through the course of 2015, in collaboration with Eris Industries (now Monax Indsutries), | |||||
many additional features were integrated, including an implementation from scratch of the Ethereum Virtual Machine. | |||||
That implementation now forms the heart of [Burrow](https://github.com/hyperledger/burrow). | |||||
In the later half of 2015, the consensus algorithm was upgraded with a more asynchronous design and a more deterministic and robust implementation. | |||||
By late 2015, frustration with the difficulty of forking a large monolithic stack to create alternative cryptocurrency designs led to the | |||||
invention of the Application Blockchain Interface (ABCI), then called the Tendermint Socket Protocol (TMSP). | |||||
The Ethereum Virtual Machine and various other transaction features were removed, and Tendermint was whittled down to a core consensus engine | |||||
driving an application running in another process. | |||||
The ABCI interface and implementation were iterated on and improved over the course of 2016, | |||||
until versioned history kicked in with v0.7.0. |
@ -1,429 +0,0 @@ | |||||
# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. | |||||
[[projects]] | |||||
branch = "master" | |||||
name = "github.com/beorn7/perks" | |||||
packages = ["quantile"] | |||||
revision = "3a771d992973f24aa725d07868b467d1ddfceafb" | |||||
[[projects]] | |||||
branch = "master" | |||||
name = "github.com/btcsuite/btcd" | |||||
packages = ["btcec"] | |||||
revision = "86fed781132ac890ee03e906e4ecd5d6fa180c64" | |||||
[[projects]] | |||||
branch = "master" | |||||
name = "github.com/btcsuite/btcutil" | |||||
packages = ["base58"] | |||||
revision = "d4cc87b860166d00d6b5b9e0d3b3d71d6088d4d4" | |||||
[[projects]] | |||||
name = "github.com/davecgh/go-spew" | |||||
packages = ["spew"] | |||||
revision = "346938d642f2ec3594ed81d874461961cd0faa76" | |||||
version = "v1.1.0" | |||||
[[projects]] | |||||
branch = "master" | |||||
name = "github.com/ebuchman/fail-test" | |||||
packages = ["."] | |||||
revision = "95f809107225be108efcf10a3509e4ea6ceef3c4" | |||||
[[projects]] | |||||
branch = "master" | |||||
name = "github.com/fortytw2/leaktest" | |||||
packages = ["."] | |||||
revision = "b008db64ef8daabb22ff6daa557f33b41d8f6ccd" | |||||
[[projects]] | |||||
name = "github.com/fsnotify/fsnotify" | |||||
packages = ["."] | |||||
revision = "c2828203cd70a50dcccfb2761f8b1f8ceef9a8e9" | |||||
version = "v1.4.7" | |||||
[[projects]] | |||||
name = "github.com/go-kit/kit" | |||||
packages = [ | |||||
"log", | |||||
"log/level", | |||||
"log/term", | |||||
"metrics", | |||||
"metrics/discard", | |||||
"metrics/internal/lv", | |||||
"metrics/prometheus" | |||||
] | |||||
revision = "4dc7be5d2d12881735283bcab7352178e190fc71" | |||||
version = "v0.6.0" | |||||
[[projects]] | |||||
name = "github.com/go-logfmt/logfmt" | |||||
packages = ["."] | |||||
revision = "390ab7935ee28ec6b286364bba9b4dd6410cb3d5" | |||||
version = "v0.3.0" | |||||
[[projects]] | |||||
name = "github.com/go-stack/stack" | |||||
packages = ["."] | |||||
revision = "259ab82a6cad3992b4e21ff5cac294ccb06474bc" | |||||
version = "v1.7.0" | |||||
[[projects]] | |||||
name = "github.com/gogo/protobuf" | |||||
packages = [ | |||||
"gogoproto", | |||||
"jsonpb", | |||||
"proto", | |||||
"protoc-gen-gogo/descriptor", | |||||
"sortkeys", | |||||
"types" | |||||
] | |||||
revision = "1adfc126b41513cc696b209667c8656ea7aac67c" | |||||
version = "v1.0.0" | |||||
[[projects]] | |||||
name = "github.com/golang/protobuf" | |||||
packages = [ | |||||
"proto", | |||||
"ptypes", | |||||
"ptypes/any", | |||||
"ptypes/duration", | |||||
"ptypes/timestamp" | |||||
] | |||||
revision = "925541529c1fa6821df4e44ce2723319eb2be768" | |||||
version = "v1.0.0" | |||||
[[projects]] | |||||
branch = "master" | |||||
name = "github.com/golang/snappy" | |||||
packages = ["."] | |||||
revision = "2e65f85255dbc3072edf28d6b5b8efc472979f5a" | |||||
[[projects]] | |||||
name = "github.com/gorilla/websocket" | |||||
packages = ["."] | |||||
revision = "ea4d1f681babbce9545c9c5f3d5194a789c89f5b" | |||||
version = "v1.2.0" | |||||
[[projects]] | |||||
branch = "master" | |||||
name = "github.com/hashicorp/hcl" | |||||
packages = [ | |||||
".", | |||||
"hcl/ast", | |||||
"hcl/parser", | |||||
"hcl/printer", | |||||
"hcl/scanner", | |||||
"hcl/strconv", | |||||
"hcl/token", | |||||
"json/parser", | |||||
"json/scanner", | |||||
"json/token" | |||||
] | |||||
revision = "ef8a98b0bbce4a65b5aa4c368430a80ddc533168" | |||||
[[projects]] | |||||
name = "github.com/inconshreveable/mousetrap" | |||||
packages = ["."] | |||||
revision = "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75" | |||||
version = "v1.0" | |||||
[[projects]] | |||||
branch = "master" | |||||
name = "github.com/jmhodges/levigo" | |||||
packages = ["."] | |||||
revision = "c42d9e0ca023e2198120196f842701bb4c55d7b9" | |||||
[[projects]] | |||||
branch = "master" | |||||
name = "github.com/kr/logfmt" | |||||
packages = ["."] | |||||
revision = "b84e30acd515aadc4b783ad4ff83aff3299bdfe0" | |||||
[[projects]] | |||||
name = "github.com/magiconair/properties" | |||||
packages = ["."] | |||||
revision = "c2353362d570a7bfa228149c62842019201cfb71" | |||||
version = "v1.8.0" | |||||
[[projects]] | |||||
name = "github.com/matttproud/golang_protobuf_extensions" | |||||
packages = ["pbutil"] | |||||
revision = "c12348ce28de40eed0136aa2b644d0ee0650e56c" | |||||
version = "v1.0.1" | |||||
[[projects]] | |||||
branch = "master" | |||||
name = "github.com/mitchellh/mapstructure" | |||||
packages = ["."] | |||||
revision = "bb74f1db0675b241733089d5a1faa5dd8b0ef57b" | |||||
[[projects]] | |||||
name = "github.com/pelletier/go-toml" | |||||
packages = ["."] | |||||
revision = "c01d1270ff3e442a8a57cddc1c92dc1138598194" | |||||
version = "v1.2.0" | |||||
[[projects]] | |||||
name = "github.com/pkg/errors" | |||||
packages = ["."] | |||||
revision = "645ef00459ed84a119197bfb8d8205042c6df63d" | |||||
version = "v0.8.0" | |||||
[[projects]] | |||||
name = "github.com/pmezard/go-difflib" | |||||
packages = ["difflib"] | |||||
revision = "792786c7400a136282c1664665ae0a8db921c6c2" | |||||
version = "v1.0.0" | |||||
[[projects]] | |||||
name = "github.com/prometheus/client_golang" | |||||
packages = [ | |||||
"prometheus", | |||||
"prometheus/promhttp" | |||||
] | |||||
revision = "c5b7fccd204277076155f10851dad72b76a49317" | |||||
version = "v0.8.0" | |||||
[[projects]] | |||||
branch = "master" | |||||
name = "github.com/prometheus/client_model" | |||||
packages = ["go"] | |||||
revision = "99fa1f4be8e564e8a6b613da7fa6f46c9edafc6c" | |||||
[[projects]] | |||||
branch = "master" | |||||
name = "github.com/prometheus/common" | |||||
packages = [ | |||||
"expfmt", | |||||
"internal/bitbucket.org/ww/goautoneg", | |||||
"model" | |||||
] | |||||
revision = "7600349dcfe1abd18d72d3a1770870d9800a7801" | |||||
[[projects]] | |||||
branch = "master" | |||||
name = "github.com/prometheus/procfs" | |||||
packages = [ | |||||
".", | |||||
"internal/util", | |||||
"nfs", | |||||
"xfs" | |||||
] | |||||
revision = "40f013a808ec4fa79def444a1a56de4d1727efcb" | |||||
[[projects]] | |||||
branch = "master" | |||||
name = "github.com/rcrowley/go-metrics" | |||||
packages = ["."] | |||||
revision = "e2704e165165ec55d062f5919b4b29494e9fa790" | |||||
[[projects]] | |||||
name = "github.com/spf13/afero" | |||||
packages = [ | |||||
".", | |||||
"mem" | |||||
] | |||||
revision = "787d034dfe70e44075ccc060d346146ef53270ad" | |||||
version = "v1.1.1" | |||||
[[projects]] | |||||
name = "github.com/spf13/cast" | |||||
packages = ["."] | |||||
revision = "8965335b8c7107321228e3e3702cab9832751bac" | |||||
version = "v1.2.0" | |||||
[[projects]] | |||||
name = "github.com/spf13/cobra" | |||||
packages = ["."] | |||||
revision = "ef82de70bb3f60c65fb8eebacbb2d122ef517385" | |||||
version = "v0.0.3" | |||||
[[projects]] | |||||
branch = "master" | |||||
name = "github.com/spf13/jwalterweatherman" | |||||
packages = ["."] | |||||
revision = "7c0cea34c8ece3fbeb2b27ab9b59511d360fb394" | |||||
[[projects]] | |||||
name = "github.com/spf13/pflag" | |||||
packages = ["."] | |||||
revision = "583c0c0531f06d5278b7d917446061adc344b5cd" | |||||
version = "v1.0.1" | |||||
[[projects]] | |||||
name = "github.com/spf13/viper" | |||||
packages = ["."] | |||||
revision = "b5e8006cbee93ec955a89ab31e0e3ce3204f3736" | |||||
version = "v1.0.2" | |||||
[[projects]] | |||||
name = "github.com/stretchr/testify" | |||||
packages = [ | |||||
"assert", | |||||
"require" | |||||
] | |||||
revision = "f35b8ab0b5a2cef36673838d662e249dd9c94686" | |||||
version = "v1.2.2" | |||||
[[projects]] | |||||
branch = "master" | |||||
name = "github.com/syndtr/goleveldb" | |||||
packages = [ | |||||
"leveldb", | |||||
"leveldb/cache", | |||||
"leveldb/comparer", | |||||
"leveldb/errors", | |||||
"leveldb/filter", | |||||
"leveldb/iterator", | |||||
"leveldb/journal", | |||||
"leveldb/memdb", | |||||
"leveldb/opt", | |||||
"leveldb/storage", | |||||
"leveldb/table", | |||||
"leveldb/util" | |||||
] | |||||
revision = "0d5a0ceb10cf9ab89fdd744cc8c50a83134f6697" | |||||
[[projects]] | |||||
branch = "master" | |||||
name = "github.com/tendermint/ed25519" | |||||
packages = [ | |||||
".", | |||||
"edwards25519", | |||||
"extra25519" | |||||
] | |||||
revision = "d8387025d2b9d158cf4efb07e7ebf814bcce2057" | |||||
[[projects]] | |||||
name = "github.com/tendermint/go-amino" | |||||
packages = ["."] | |||||
revision = "2106ca61d91029c931fd54968c2bb02dc96b1412" | |||||
version = "0.10.1" | |||||
[[projects]] | |||||
name = "github.com/tendermint/tmlibs" | |||||
packages = [ | |||||
"autofile", | |||||
"cli", | |||||
"cli/flags", | |||||
"clist", | |||||
"common", | |||||
"db", | |||||
"flowrate", | |||||
"log", | |||||
"merkle", | |||||
"merkle/tmhash", | |||||
"test" | |||||
] | |||||
revision = "49596e0a1f48866603813df843c9409fc19805c6" | |||||
version = "v0.9.0" | |||||
[[projects]] | |||||
branch = "master" | |||||
name = "golang.org/x/crypto" | |||||
packages = [ | |||||
"bcrypt", | |||||
"blowfish", | |||||
"chacha20poly1305", | |||||
"curve25519", | |||||
"hkdf", | |||||
"internal/chacha20", | |||||
"internal/subtle", | |||||
"nacl/box", | |||||
"nacl/secretbox", | |||||
"openpgp/armor", | |||||
"openpgp/errors", | |||||
"poly1305", | |||||
"ripemd160", | |||||
"salsa20/salsa" | |||||
] | |||||
revision = "a49355c7e3f8fe157a85be2f77e6e269a0f89602" | |||||
[[projects]] | |||||
branch = "master" | |||||
name = "golang.org/x/net" | |||||
packages = [ | |||||
"context", | |||||
"http/httpguts", | |||||
"http2", | |||||
"http2/hpack", | |||||
"idna", | |||||
"internal/timeseries", | |||||
"netutil", | |||||
"trace" | |||||
] | |||||
revision = "4cb1c02c05b0e749b0365f61ae859a8e0cfceed9" | |||||
[[projects]] | |||||
branch = "master" | |||||
name = "golang.org/x/sys" | |||||
packages = [ | |||||
"cpu", | |||||
"unix" | |||||
] | |||||
revision = "7138fd3d9dc8335c567ca206f4333fb75eb05d56" | |||||
[[projects]] | |||||
name = "golang.org/x/text" | |||||
packages = [ | |||||
"collate", | |||||
"collate/build", | |||||
"internal/colltab", | |||||
"internal/gen", | |||||
"internal/tag", | |||||
"internal/triegen", | |||||
"internal/ucd", | |||||
"language", | |||||
"secure/bidirule", | |||||
"transform", | |||||
"unicode/bidi", | |||||
"unicode/cldr", | |||||
"unicode/norm", | |||||
"unicode/rangetable" | |||||
] | |||||
revision = "f21a4dfb5e38f5895301dc265a8def02365cc3d0" | |||||
version = "v0.3.0" | |||||
[[projects]] | |||||
name = "google.golang.org/genproto" | |||||
packages = ["googleapis/rpc/status"] | |||||
revision = "7fd901a49ba6a7f87732eb344f6e3c5b19d1b200" | |||||
[[projects]] | |||||
name = "google.golang.org/grpc" | |||||
packages = [ | |||||
".", | |||||
"balancer", | |||||
"codes", | |||||
"connectivity", | |||||
"credentials", | |||||
"grpclb/grpc_lb_v1/messages", | |||||
"grpclog", | |||||
"internal", | |||||
"keepalive", | |||||
"metadata", | |||||
"naming", | |||||
"peer", | |||||
"resolver", | |||||
"stats", | |||||
"status", | |||||
"tap", | |||||
"transport" | |||||
] | |||||
revision = "5b3c4e850e90a4cf6a20ebd46c8b32a0a3afcb9e" | |||||
version = "v1.7.5" | |||||
[[projects]] | |||||
name = "gopkg.in/yaml.v2" | |||||
packages = ["."] | |||||
revision = "5420a8b6744d3b0345ab293f6fcba19c978f1183" | |||||
version = "v2.2.1" | |||||
[solve-meta] | |||||
analyzer-name = "dep" | |||||
analyzer-version = 1 | |||||
inputs-digest = "c25289282b94abc7f0c390e592e5e1636b7f26cb4773863ac39cde7fdc7b5bdf" | |||||
solver-name = "gps-cdcl" | |||||
solver-version = 1 |
@ -1,99 +0,0 @@ | |||||
# Gopkg.toml example | |||||
# | |||||
# Refer to https://github.com/golang/dep/blob/master/docs/Gopkg.toml.md | |||||
# for detailed Gopkg.toml documentation. | |||||
# | |||||
# required = ["github.com/user/thing/cmd/thing"] | |||||
# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"] | |||||
# | |||||
# [[constraint]] | |||||
# name = "github.com/user/project" | |||||
# version = "1.0.0" | |||||
# | |||||
# [[constraint]] | |||||
# name = "github.com/user/project2" | |||||
# branch = "dev" | |||||
# source = "github.com/myfork/project2" | |||||
# | |||||
# [[override]] | |||||
# name = "github.com/x/y" | |||||
# version = "2.4.0" | |||||
# | |||||
# [prune] | |||||
# non-go = false | |||||
# go-tests = true | |||||
# unused-packages = true | |||||
[[constraint]] | |||||
name = "github.com/ebuchman/fail-test" | |||||
branch = "master" | |||||
[[constraint]] | |||||
name = "github.com/fortytw2/leaktest" | |||||
branch = "master" | |||||
[[constraint]] | |||||
name = "github.com/go-kit/kit" | |||||
version = "~0.6.0" | |||||
[[constraint]] | |||||
name = "github.com/gogo/protobuf" | |||||
version = "~1.0.0" | |||||
[[constraint]] | |||||
name = "github.com/golang/protobuf" | |||||
version = "~1.0.0" | |||||
[[constraint]] | |||||
name = "github.com/gorilla/websocket" | |||||
version = "~1.2.0" | |||||
[[constraint]] | |||||
name = "github.com/pkg/errors" | |||||
version = "~0.8.0" | |||||
[[constraint]] | |||||
name = "github.com/rcrowley/go-metrics" | |||||
branch = "master" | |||||
[[constraint]] | |||||
name = "github.com/spf13/cobra" | |||||
version = "~0.0.1" | |||||
[[constraint]] | |||||
name = "github.com/spf13/viper" | |||||
version = "~1.0.0" | |||||
[[constraint]] | |||||
name = "github.com/stretchr/testify" | |||||
version = "~1.2.1" | |||||
[[constraint]] | |||||
name = "github.com/tendermint/go-amino" | |||||
version = "~0.10.1" | |||||
[[override]] | |||||
name = "github.com/tendermint/tmlibs" | |||||
version = "~0.9.0" | |||||
[[constraint]] | |||||
name = "google.golang.org/grpc" | |||||
version = "~1.7.3" | |||||
# this got updated and broke, so locked to an old working commit ... | |||||
[[override]] | |||||
name = "google.golang.org/genproto" | |||||
revision = "7fd901a49ba6a7f87732eb344f6e3c5b19d1b200" | |||||
[prune] | |||||
go-tests = true | |||||
unused-packages = true | |||||
[[constraint]] | |||||
name = "github.com/prometheus/client_golang" | |||||
version = "0.8.0" | |||||
[[constraint]] | |||||
branch = "master" | |||||
name = "golang.org/x/net" |
@ -1,204 +0,0 @@ | |||||
Tendermint Core | |||||
License: Apache2.0 | |||||
Apache License | |||||
Version 2.0, January 2004 | |||||
http://www.apache.org/licenses/ | |||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION | |||||
1. Definitions. | |||||
"License" shall mean the terms and conditions for use, reproduction, | |||||
and distribution as defined by Sections 1 through 9 of this document. | |||||
"Licensor" shall mean the copyright owner or entity authorized by | |||||
the copyright owner that is granting the License. | |||||
"Legal Entity" shall mean the union of the acting entity and all | |||||
other entities that control, are controlled by, or are under common | |||||
control with that entity. For the purposes of this definition, | |||||
"control" means (i) the power, direct or indirect, to cause the | |||||
direction or management of such entity, whether by contract or | |||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the | |||||
outstanding shares, or (iii) beneficial ownership of such entity. | |||||
"You" (or "Your") shall mean an individual or Legal Entity | |||||
exercising permissions granted by this License. | |||||
"Source" form shall mean the preferred form for making modifications, | |||||
including but not limited to software source code, documentation | |||||
source, and configuration files. | |||||
"Object" form shall mean any form resulting from mechanical | |||||
transformation or translation of a Source form, including but | |||||
not limited to compiled object code, generated documentation, | |||||
and conversions to other media types. | |||||
"Work" shall mean the work of authorship, whether in Source or | |||||
Object form, made available under the License, as indicated by a | |||||
copyright notice that is included in or attached to the work | |||||
(an example is provided in the Appendix below). | |||||
"Derivative Works" shall mean any work, whether in Source or Object | |||||
form, that is based on (or derived from) the Work and for which the | |||||
editorial revisions, annotations, elaborations, or other modifications | |||||
represent, as a whole, an original work of authorship. For the purposes | |||||
of this License, Derivative Works shall not include works that remain | |||||
separable from, or merely link (or bind by name) to the interfaces of, | |||||
the Work and Derivative Works thereof. | |||||
"Contribution" shall mean any work of authorship, including | |||||
the original version of the Work and any modifications or additions | |||||
to that Work or Derivative Works thereof, that is intentionally | |||||
submitted to Licensor for inclusion in the Work by the copyright owner | |||||
or by an individual or Legal Entity authorized to submit on behalf of | |||||
the copyright owner. For the purposes of this definition, "submitted" | |||||
means any form of electronic, verbal, or written communication sent | |||||
to the Licensor or its representatives, including but not limited to | |||||
communication on electronic mailing lists, source code control systems, | |||||
and issue tracking systems that are managed by, or on behalf of, the | |||||
Licensor for the purpose of discussing and improving the Work, but | |||||
excluding communication that is conspicuously marked or otherwise | |||||
designated in writing by the copyright owner as "Not a Contribution." | |||||
"Contributor" shall mean Licensor and any individual or Legal Entity | |||||
on behalf of whom a Contribution has been received by Licensor and | |||||
subsequently incorporated within the Work. | |||||
2. Grant of Copyright License. Subject to the terms and conditions of | |||||
this License, each Contributor hereby grants to You a perpetual, | |||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable | |||||
copyright license to reproduce, prepare Derivative Works of, | |||||
publicly display, publicly perform, sublicense, and distribute the | |||||
Work and such Derivative Works in Source or Object form. | |||||
3. Grant of Patent License. Subject to the terms and conditions of | |||||
this License, each Contributor hereby grants to You a perpetual, | |||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable | |||||
(except as stated in this section) patent license to make, have made, | |||||
use, offer to sell, sell, import, and otherwise transfer the Work, | |||||
where such license applies only to those patent claims licensable | |||||
by such Contributor that are necessarily infringed by their | |||||
Contribution(s) alone or by combination of their Contribution(s) | |||||
with the Work to which such Contribution(s) was submitted. If You | |||||
institute patent litigation against any entity (including a | |||||
cross-claim or counterclaim in a lawsuit) alleging that the Work | |||||
or a Contribution incorporated within the Work constitutes direct | |||||
or contributory patent infringement, then any patent licenses | |||||
granted to You under this License for that Work shall terminate | |||||
as of the date such litigation is filed. | |||||
4. Redistribution. You may reproduce and distribute copies of the | |||||
Work or Derivative Works thereof in any medium, with or without | |||||
modifications, and in Source or Object form, provided that You | |||||
meet the following conditions: | |||||
(a) You must give any other recipients of the Work or | |||||
Derivative Works a copy of this License; and | |||||
(b) You must cause any modified files to carry prominent notices | |||||
stating that You changed the files; and | |||||
(c) You must retain, in the Source form of any Derivative Works | |||||
that You distribute, all copyright, patent, trademark, and | |||||
attribution notices from the Source form of the Work, | |||||
excluding those notices that do not pertain to any part of | |||||
the Derivative Works; and | |||||
(d) If the Work includes a "NOTICE" text file as part of its | |||||
distribution, then any Derivative Works that You distribute must | |||||
include a readable copy of the attribution notices contained | |||||
within such NOTICE file, excluding those notices that do not | |||||
pertain to any part of the Derivative Works, in at least one | |||||
of the following places: within a NOTICE text file distributed | |||||
as part of the Derivative Works; within the Source form or | |||||
documentation, if provided along with the Derivative Works; or, | |||||
within a display generated by the Derivative Works, if and | |||||
wherever such third-party notices normally appear. The contents | |||||
of the NOTICE file are for informational purposes only and | |||||
do not modify the License. You may add Your own attribution | |||||
notices within Derivative Works that You distribute, alongside | |||||
or as an addendum to the NOTICE text from the Work, provided | |||||
that such additional attribution notices cannot be construed | |||||
as modifying the License. | |||||
You may add Your own copyright statement to Your modifications and | |||||
may provide additional or different license terms and conditions | |||||
for use, reproduction, or distribution of Your modifications, or | |||||
for any such Derivative Works as a whole, provided Your use, | |||||
reproduction, and distribution of the Work otherwise complies with | |||||
the conditions stated in this License. | |||||
5. Submission of Contributions. Unless You explicitly state otherwise, | |||||
any Contribution intentionally submitted for inclusion in the Work | |||||
by You to the Licensor shall be under the terms and conditions of | |||||
this License, without any additional terms or conditions. | |||||
Notwithstanding the above, nothing herein shall supersede or modify | |||||
the terms of any separate license agreement you may have executed | |||||
with Licensor regarding such Contributions. | |||||
6. Trademarks. This License does not grant permission to use the trade | |||||
names, trademarks, service marks, or product names of the Licensor, | |||||
except as required for reasonable and customary use in describing the | |||||
origin of the Work and reproducing the content of the NOTICE file. | |||||
7. Disclaimer of Warranty. Unless required by applicable law or | |||||
agreed to in writing, Licensor provides the Work (and each | |||||
Contributor provides its Contributions) on an "AS IS" BASIS, | |||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | |||||
implied, including, without limitation, any warranties or conditions | |||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A | |||||
PARTICULAR PURPOSE. You are solely responsible for determining the | |||||
appropriateness of using or redistributing the Work and assume any | |||||
risks associated with Your exercise of permissions under this License. | |||||
8. Limitation of Liability. In no event and under no legal theory, | |||||
whether in tort (including negligence), contract, or otherwise, | |||||
unless required by applicable law (such as deliberate and grossly | |||||
negligent acts) or agreed to in writing, shall any Contributor be | |||||
liable to You for damages, including any direct, indirect, special, | |||||
incidental, or consequential damages of any character arising as a | |||||
result of this License or out of the use or inability to use the | |||||
Work (including but not limited to damages for loss of goodwill, | |||||
work stoppage, computer failure or malfunction, or any and all | |||||
other commercial damages or losses), even if such Contributor | |||||
has been advised of the possibility of such damages. | |||||
9. Accepting Warranty or Additional Liability. While redistributing | |||||
the Work or Derivative Works thereof, You may choose to offer, | |||||
and charge a fee for, acceptance of support, warranty, indemnity, | |||||
or other liability obligations and/or rights consistent with this | |||||
License. However, in accepting such obligations, You may act only | |||||
on Your own behalf and on Your sole responsibility, not on behalf | |||||
of any other Contributor, and only if You agree to indemnify, | |||||
defend, and hold each Contributor harmless for any liability | |||||
incurred by, or claims asserted against, such Contributor by reason | |||||
of your accepting any such warranty or additional liability. | |||||
END OF TERMS AND CONDITIONS | |||||
APPENDIX: How to apply the Apache License to your work. | |||||
To apply the Apache License to your work, attach the following | |||||
boilerplate notice, with the fields enclosed by brackets "{}" | |||||
replaced with your own identifying information. (Don't include | |||||
the brackets!) The text should be enclosed in the appropriate | |||||
comment syntax for the file format. We also recommend that a | |||||
file or class name and description of purpose be included on the | |||||
same "printed page" as the copyright notice for easier | |||||
identification within third-party archives. | |||||
Copyright 2016 All in Bits, Inc | |||||
Licensed under the Apache License, Version 2.0 (the "License"); | |||||
you may not use this file except in compliance with the License. | |||||
You may obtain a copy of the License at | |||||
http://www.apache.org/licenses/LICENSE-2.0 | |||||
Unless required by applicable law or agreed to in writing, software | |||||
distributed under the License is distributed on an "AS IS" BASIS, | |||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
See the License for the specific language governing permissions and | |||||
limitations under the License. |
@ -1,236 +0,0 @@ | |||||
GOTOOLS = \ | |||||
github.com/golang/dep/cmd/dep \ | |||||
gopkg.in/alecthomas/gometalinter.v2 | |||||
PACKAGES=$(shell go list ./... | grep -v '/vendor/') | |||||
BUILD_TAGS?=tendermint | |||||
BUILD_FLAGS = -ldflags "-X github.com/tendermint/tendermint/version.GitCommit=`git rev-parse --short=8 HEAD`" | |||||
all: check build test install | |||||
check: check_tools ensure_deps | |||||
######################################## | |||||
### Build | |||||
build: | |||||
CGO_ENABLED=0 go build $(BUILD_FLAGS) -tags '$(BUILD_TAGS)' -o build/tendermint ./cmd/tendermint/ | |||||
build_race: | |||||
CGO_ENABLED=0 go build -race $(BUILD_FLAGS) -tags '$(BUILD_TAGS)' -o build/tendermint ./cmd/tendermint | |||||
install: | |||||
CGO_ENABLED=0 go install $(BUILD_FLAGS) -tags '$(BUILD_TAGS)' ./cmd/tendermint | |||||
######################################## | |||||
### Distribution | |||||
# dist builds binaries for all platforms and packages them for distribution | |||||
dist: | |||||
@BUILD_TAGS='$(BUILD_TAGS)' sh -c "'$(CURDIR)/scripts/dist.sh'" | |||||
######################################## | |||||
### Tools & dependencies | |||||
check_tools: | |||||
@# https://stackoverflow.com/a/25668869 | |||||
@echo "Found tools: $(foreach tool,$(notdir $(GOTOOLS)),\ | |||||
$(if $(shell which $(tool)),$(tool),$(error "No $(tool) in PATH")))" | |||||
get_tools: | |||||
@echo "--> Installing tools" | |||||
go get -u -v $(GOTOOLS) | |||||
@gometalinter.v2 --install | |||||
update_tools: | |||||
@echo "--> Updating tools" | |||||
@go get -u $(GOTOOLS) | |||||
#Run this from CI | |||||
get_vendor_deps: | |||||
@rm -rf vendor/ | |||||
@echo "--> Running dep" | |||||
@dep ensure -vendor-only | |||||
#Run this locally. | |||||
ensure_deps: | |||||
@rm -rf vendor/ | |||||
@echo "--> Running dep" | |||||
@dep ensure | |||||
draw_deps: | |||||
@# requires brew install graphviz or apt-get install graphviz | |||||
go get github.com/RobotsAndPencils/goviz | |||||
@goviz -i github.com/tendermint/tendermint/cmd/tendermint -d 3 | dot -Tpng -o dependency-graph.png | |||||
get_deps_bin_size: | |||||
@# Copy of build recipe with additional flags to perform binary size analysis | |||||
$(eval $(shell go build -work -a $(BUILD_FLAGS) -tags '$(BUILD_TAGS)' -o build/tendermint ./cmd/tendermint/ 2>&1)) | |||||
@find $(WORK) -type f -name "*.a" | xargs -I{} du -hxs "{}" | sort -rh | sed -e s:${WORK}/::g > deps_bin_size.log | |||||
@echo "Results can be found here: $(CURDIR)/deps_bin_size.log" | |||||
######################################## | |||||
### Testing | |||||
## required to be run first by most tests | |||||
build_docker_test_image: | |||||
docker build -t tester -f ./test/docker/Dockerfile . | |||||
### coverage, app, persistence, and libs tests | |||||
test_cover: | |||||
# run the go unit tests with coverage | |||||
bash test/test_cover.sh | |||||
test_apps: | |||||
# run the app tests using bash | |||||
# requires `abci-cli` and `tendermint` binaries installed | |||||
bash test/app/test.sh | |||||
test_persistence: | |||||
# run the persistence tests using bash | |||||
# requires `abci-cli` installed | |||||
docker run --name run_persistence -t tester bash test/persist/test_failure_indices.sh | |||||
# TODO undockerize | |||||
# bash test/persist/test_failure_indices.sh | |||||
test_p2p: | |||||
docker rm -f rsyslog || true | |||||
rm -rf test/logs || true | |||||
mkdir test/logs | |||||
cd test/ | |||||
docker run -d -v "logs:/var/log/" -p 127.0.0.1:5514:514/udp --name rsyslog voxxit/rsyslog | |||||
cd .. | |||||
# requires 'tester' the image from above | |||||
bash test/p2p/test.sh tester | |||||
need_abci: | |||||
bash scripts/install_abci_apps.sh | |||||
test_integrations: | |||||
make build_docker_test_image | |||||
make get_tools | |||||
make get_vendor_deps | |||||
make install | |||||
make need_abci | |||||
make test_cover | |||||
make test_apps | |||||
make test_persistence | |||||
make test_p2p | |||||
test_release: | |||||
@go test -tags release $(PACKAGES) | |||||
test100: | |||||
@for i in {1..100}; do make test; done | |||||
vagrant_test: | |||||
vagrant up | |||||
vagrant ssh -c 'make test_integrations' | |||||
### go tests | |||||
test: | |||||
@echo "--> Running go test" | |||||
@go test $(PACKAGES) | |||||
test_race: | |||||
@echo "--> Running go test --race" | |||||
@go test -v -race $(PACKAGES) | |||||
######################################## | |||||
### Formatting, linting, and vetting | |||||
fmt: | |||||
@go fmt ./... | |||||
metalinter: | |||||
@echo "--> Running linter" | |||||
@gometalinter.v2 --vendor --deadline=600s --disable-all \ | |||||
--enable=deadcode \ | |||||
--enable=gosimple \ | |||||
--enable=misspell \ | |||||
--enable=safesql \ | |||||
./... | |||||
#--enable=gas \ | |||||
#--enable=maligned \ | |||||
#--enable=dupl \ | |||||
#--enable=errcheck \ | |||||
#--enable=goconst \ | |||||
#--enable=gocyclo \ | |||||
#--enable=goimports \ | |||||
#--enable=golint \ <== comments on anything exported | |||||
#--enable=gotype \ | |||||
#--enable=ineffassign \ | |||||
#--enable=interfacer \ | |||||
#--enable=megacheck \ | |||||
#--enable=staticcheck \ | |||||
#--enable=structcheck \ | |||||
#--enable=unconvert \ | |||||
#--enable=unparam \ | |||||
#--enable=unused \ | |||||
#--enable=varcheck \ | |||||
#--enable=vet \ | |||||
#--enable=vetshadow \ | |||||
metalinter_all: | |||||
@echo "--> Running linter (all)" | |||||
gometalinter.v2 --vendor --deadline=600s --enable-all --disable=lll ./... | |||||
########################################################### | |||||
### Docker image | |||||
build-docker: | |||||
cp build/tendermint DOCKER/tendermint | |||||
docker build --label=tendermint --tag="tendermint/tendermint" DOCKER | |||||
rm -rf DOCKER/tendermint | |||||
########################################################### | |||||
### Local testnet using docker | |||||
# Build linux binary on other platforms | |||||
build-linux: | |||||
GOOS=linux GOARCH=amd64 $(MAKE) build | |||||
build-docker-localnode: | |||||
cd networks/local | |||||
make | |||||
# Run a 4-node testnet locally | |||||
localnet-start: localnet-stop | |||||
@if ! [ -f build/node0/config/genesis.json ]; then docker run --rm -v $(CURDIR)/build:/tendermint:Z tendermint/localnode testnet --v 4 --o . --populate-persistent-peers --starting-ip-address 192.167.10.2 ; fi | |||||
docker-compose up | |||||
# Stop testnet | |||||
localnet-stop: | |||||
docker-compose down | |||||
########################################################### | |||||
### Remote full-nodes (sentry) using terraform and ansible | |||||
# Server management | |||||
sentry-start: | |||||
@if [ -z "$(DO_API_TOKEN)" ]; then echo "DO_API_TOKEN environment variable not set." ; false ; fi | |||||
@if ! [ -f $(HOME)/.ssh/id_rsa.pub ]; then ssh-keygen ; fi | |||||
cd networks/remote/terraform && terraform init && terraform apply -var DO_API_TOKEN="$(DO_API_TOKEN)" -var SSH_KEY_FILE="$(HOME)/.ssh/id_rsa.pub" | |||||
@if ! [ -f $(CURDIR)/build/node0/config/genesis.json ]; then docker run --rm -v $(CURDIR)/build:/tendermint:Z tendermint/localnode testnet --v 0 --n 4 --o . ; fi | |||||
cd networks/remote/ansible && ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook -i inventory/digital_ocean.py -l sentrynet install.yml | |||||
@echo "Next step: Add your validator setup in the genesis.json and config.tml files and run \"make sentry-config\". (Public key of validator, chain ID, peer IP and node ID.)" | |||||
# Configuration management | |||||
sentry-config: | |||||
cd networks/remote/ansible && ansible-playbook -i inventory/digital_ocean.py -l sentrynet config.yml -e BINARY=$(CURDIR)/build/tendermint -e CONFIGDIR=$(CURDIR)/build | |||||
sentry-stop: | |||||
@if [ -z "$(DO_API_TOKEN)" ]; then echo "DO_API_TOKEN environment variable not set." ; false ; fi | |||||
cd networks/remote/terraform && terraform destroy -var DO_API_TOKEN="$(DO_API_TOKEN)" -var SSH_KEY_FILE="$(HOME)/.ssh/id_rsa.pub" | |||||
# meant for the CI, inspect script & adapt accordingly | |||||
build-slate: | |||||
bash scripts/slate.sh | |||||
# To avoid unintended conflicts with file names, always add to .PHONY | |||||
# unless there is a reason not to. | |||||
# https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html | |||||
.PHONY: check build build_race dist install check_tools get_tools update_tools get_vendor_deps draw_deps test_cover test_apps test_persistence test_p2p test test_race test_integrations test_release test100 vagrant_test fmt build-linux localnet-start localnet-stop build-docker build-docker-localnode sentry-start sentry-config sentry-stop build-slate |
@ -1,138 +0,0 @@ | |||||
# Tendermint | |||||
[Byzantine-Fault Tolerant](https://en.wikipedia.org/wiki/Byzantine_fault_tolerance) | |||||
[State Machine Replication](https://en.wikipedia.org/wiki/State_machine_replication). | |||||
Or [Blockchain](https://en.wikipedia.org/wiki/Blockchain_(database)) for short. | |||||
[![version](https://img.shields.io/github/tag/tendermint/tendermint.svg)](https://github.com/tendermint/tendermint/releases/latest) | |||||
[![API Reference]( | |||||
https://camo.githubusercontent.com/915b7be44ada53c290eb157634330494ebe3e30a/68747470733a2f2f676f646f632e6f72672f6769746875622e636f6d2f676f6c616e672f6764646f3f7374617475732e737667 | |||||
)](https://godoc.org/github.com/tendermint/tendermint) | |||||
[![Go version](https://img.shields.io/badge/go-1.9.2-blue.svg)](https://github.com/moovweb/gvm) | |||||
[![riot.im](https://img.shields.io/badge/riot.im-JOIN%20CHAT-green.svg)](https://riot.im/app/#/room/#tendermint:matrix.org) | |||||
[![license](https://img.shields.io/github/license/tendermint/tendermint.svg)](https://github.com/tendermint/tendermint/blob/master/LICENSE) | |||||
[![](https://tokei.rs/b1/github/tendermint/tendermint?category=lines)](https://github.com/tendermint/tendermint) | |||||
Branch | Tests | Coverage | |||||
----------|-------|---------- | |||||
master | [![CircleCI](https://circleci.com/gh/tendermint/tendermint/tree/master.svg?style=shield)](https://circleci.com/gh/tendermint/tendermint/tree/master) | [![codecov](https://codecov.io/gh/tendermint/tendermint/branch/master/graph/badge.svg)](https://codecov.io/gh/tendermint/tendermint) | |||||
develop | [![CircleCI](https://circleci.com/gh/tendermint/tendermint/tree/develop.svg?style=shield)](https://circleci.com/gh/tendermint/tendermint/tree/develop) | [![codecov](https://codecov.io/gh/tendermint/tendermint/branch/develop/graph/badge.svg)](https://codecov.io/gh/tendermint/tendermint) | |||||
Tendermint Core is Byzantine Fault Tolerant (BFT) middleware that takes a state transition machine - written in any programming language - | |||||
and securely replicates it on many machines. | |||||
For protocol details, see [the specification](/docs/spec). | |||||
## A Note on Production Readiness | |||||
While Tendermint is being used in production in private, permissioned | |||||
environments, we are still working actively to harden and audit it in preparation | |||||
for use in public blockchains, such as the [Cosmos Network](https://cosmos.network/). | |||||
We are also still making breaking changes to the protocol and the APIs. | |||||
Thus we tag the releases as *alpha software*. | |||||
In any case, if you intend to run Tendermint in production, | |||||
please [contact us](https://riot.im/app/#/room/#tendermint:matrix.org) :) | |||||
## Security | |||||
To report a security vulnerability, see our [bug bounty | |||||
program](https://tendermint.com/security). | |||||
For examples of the kinds of bugs we're looking for, see [SECURITY.md](SECURITY.md) | |||||
## Minimum requirements | |||||
Requirement|Notes | |||||
---|--- | |||||
Go version | Go1.9 or higher | |||||
## Install | |||||
See the [install instructions](/docs/install.rst) | |||||
## Quick Start | |||||
- [Single node](/docs/using-tendermint.rst) | |||||
- [Local cluster using docker-compose](/networks/local) | |||||
- [Remote cluster using terraform and ansible](/docs/terraform-and-ansible.md) | |||||
- [Join the public testnet](https://cosmos.network/testnet) | |||||
## Resources | |||||
### Tendermint Core | |||||
For details about the blockchain data structures and the p2p protocols, see the | |||||
the [Tendermint specification](/docs/spec). | |||||
For details on using the software, [Read The Docs](https://tendermint.readthedocs.io/en/master/). | |||||
Additional information about some - and eventually all - of the sub-projects below, can be found at Read The Docs. | |||||
### Sub-projects | |||||
* [ABCI](http://github.com/tendermint/abci), the Application Blockchain Interface | |||||
* [Go-Wire](http://github.com/tendermint/go-wire), a deterministic serialization library | |||||
* [Go-Crypto](http://github.com/tendermint/tendermint/crypto), an elliptic curve cryptography library | |||||
* [TmLibs](http://github.com/tendermint/tmlibs), an assortment of Go libraries used internally | |||||
* [IAVL](http://github.com/tendermint/iavl), Merkleized IAVL+ Tree implementation | |||||
### Tools | |||||
* [Deployment, Benchmarking, and Monitoring](http://tendermint.readthedocs.io/projects/tools/en/develop/index.html#tendermint-tools) | |||||
### Applications | |||||
* [Cosmos SDK](http://github.com/cosmos/cosmos-sdk); a cryptocurrency application framework | |||||
* [Ethermint](http://github.com/tendermint/ethermint); Ethereum on Tendermint | |||||
* [Many more](https://tendermint.readthedocs.io/en/master/ecosystem.html#abci-applications) | |||||
### More | |||||
* [Master's Thesis on Tendermint](https://atrium.lib.uoguelph.ca/xmlui/handle/10214/9769) | |||||
* [Original Whitepaper](https://tendermint.com/static/docs/tendermint.pdf) | |||||
* [Tendermint Blog](https://blog.cosmos.network/tendermint/home) | |||||
* [Cosmos Blog](https://blog.cosmos.network) | |||||
## Contributing | |||||
Yay open source! Please see our [contributing guidelines](CONTRIBUTING.md). | |||||
## Versioning | |||||
### SemVer | |||||
Tendermint uses [SemVer](http://semver.org/) to determine when and how the version changes. | |||||
According to SemVer, anything in the public API can change at any time before version 1.0.0 | |||||
To provide some stability to Tendermint users in these 0.X.X days, the MINOR version is used | |||||
to signal breaking changes across a subset of the total public API. This subset includes all | |||||
interfaces exposed to other processes (cli, rpc, p2p, etc.), but does not | |||||
include the in-process Go APIs. | |||||
That said, breaking changes in the following packages will be documented in the | |||||
CHANGELOG even if they don't lead to MINOR version bumps: | |||||
- types | |||||
- rpc/client | |||||
- config | |||||
- node | |||||
Exported objects in these packages that are not covered by the versioning scheme | |||||
are explicitly marked by `// UNSTABLE` in their go doc comment and may change at any time. | |||||
Functions, types, and values in any other package may also change at any time. | |||||
### Upgrades | |||||
In an effort to avoid accumulating technical debt prior to 1.0.0, | |||||
we do not guarantee that breaking changes (ie. bumps in the MINOR version) | |||||
will work with existing tendermint blockchains. In these cases you will | |||||
have to start a new blockchain, or write something custom to get the old | |||||
data into the new chain. | |||||
However, any bump in the PATCH version should be compatible with existing histories | |||||
(if not please open an [issue](https://github.com/tendermint/tendermint/issues)). | |||||
## Code of Conduct | |||||
Please read, understand and adhere to our [code of conduct](CODE_OF_CONDUCT.md). |
@ -1,23 +0,0 @@ | |||||
package version | |||||
// Version components | |||||
const ( | |||||
Maj = "0" | |||||
Min = "22" | |||||
Fix = "0" | |||||
) | |||||
var ( | |||||
// Version is the current version of Tendermint | |||||
// Must be a string because scripts like dist.sh read this file. | |||||
Version = "0.22.0" | |||||
// GitCommit is the current HEAD set using ldflags. | |||||
GitCommit string | |||||
) | |||||
func init() { | |||||
if GitCommit != "" { | |||||
Version += "-" + GitCommit | |||||
} | |||||
} |