Merge branch 'develop' into jae/aminoify

This commit is contained in:
Ethan Buchman 2018-04-09 17:28:17 +03:00
commit db29b5066d
3 changed files with 99 additions and 59 deletions

View File

@ -1,11 +1,34 @@
# Changelog # Changelog
## 0.14.0 (April 7, 2018) ## 0.15.0 (TBD)
BREAKING CHANGES BREAKING CHANGES
* Remove go-wire, use go-amino * Remove go-wire, use go-amino
## 0.14.0 (April 9, 2018)
BREAKING CHANGES:
* [client/builder] Renamed to `client/core` and refactored to use a CoreContext
struct
* [server] Refactor to improve useability and de-duplicate code
* [types] `Result.ToQuery -> Error.QueryResult`
* [makefile] `make build` and `make install` only build/install `gaiacli` and
`gaiad`. Use `make build_examples` and `make install_examples` for
`basecoind/basecli` and `democoind/democli`
* [staking] Various fixes/improvements
FEATURES:
* [democoin] Added Proof-of-Work module
BUG FIXES
* [client] Reuse Tendermint RPC client to avoid excessive open files
* [client] Fix setting log level
* [basecoin] Sort coins in genesis
## 0.13.1 (April 3, 2018) ## 0.13.1 (April 3, 2018)
BUG FIXES BUG FIXES

129
README.md
View File

@ -1,56 +1,73 @@
# Cosmos SDK # Cosmos SDK
![banner](docs/graphics/cosmos-sdk-image.png)
![banner](docs/graphics/cosmos-sdk-image.png)
[![version](https://img.shields.io/github/tag/cosmos/cosmos-sdk.svg)](https://github.com/cosmos/cosmos-sdk/releases/latest)
[![version](https://img.shields.io/github/tag/cosmos/cosmos-sdk.svg)](https://github.com/cosmos/cosmos-sdk/releases/latest) [![API Reference](https://godoc.org/github.com/cosmos/cosmos-sdk?status.svg
[![API Reference](https://godoc.org/github.com/cosmos/cosmos-sdk?status.svg )](https://godoc.org/github.com/cosmos/cosmos-sdk)
)](https://godoc.org/github.com/cosmos/cosmos-sdk) [![Rocket.Chat](https://demo.rocket.chat/images/join-chat.svg)](https://cosmos.rocket.chat/)
[![Rocket.Chat](https://demo.rocket.chat/images/join-chat.svg)](https://cosmos.rocket.chat/) [![license](https://img.shields.io/github/license/cosmos/cosmos-sdk.svg)](https://github.com/cosmos/cosmos-sdk/blob/master/LICENSE)
[![license](https://img.shields.io/github/license/cosmos/cosmos-sdk.svg)](https://github.com/cosmos/cosmos-sdk/blob/master/LICENSE) [![LoC](https://tokei.rs/b1/github/cosmos/cosmos-sdk)](https://github.com/cosmos/cosmos-sdk)
[![LoC](https://tokei.rs/b1/github/cosmos/cosmos-sdk)](https://github.com/cosmos/cosmos-sdk) [![Go Report Card](https://goreportcard.com/badge/github.com/cosmos/cosmos-sdk)](https://goreportcard.com/report/github.com/cosmos/cosmos-sdk)
[![Go Report Card](https://goreportcard.com/badge/github.com/cosmos/cosmos-sdk)](https://goreportcard.com/report/github.com/cosmos/cosmos-sdk)
Branch | Tests | Coverage
Branch | Tests | Coverage ----------|-------|---------
----------|-------|--------- develop | [![CircleCI](https://circleci.com/gh/cosmos/cosmos-sdk/tree/develop.svg?style=shield)](https://circleci.com/gh/cosmos/cosmos-sdk/tree/develop) | [![codecov](https://codecov.io/gh/cosmos/cosmos-sdk/branch/develop/graph/badge.svg)](https://codecov.io/gh/cosmos/cosmos-sdk)
develop | [![CircleCI](https://circleci.com/gh/cosmos/cosmos-sdk/tree/develop.svg?style=shield)](https://circleci.com/gh/cosmos/cosmos-sdk/tree/develop) | [![codecov](https://codecov.io/gh/cosmos/cosmos-sdk/branch/develop/graph/badge.svg)](https://codecov.io/gh/cosmos/cosmos-sdk) master | [![CircleCI](https://circleci.com/gh/cosmos/cosmos-sdk/tree/master.svg?style=shield)](https://circleci.com/gh/cosmos/cosmos-sdk/tree/master) | [![codecov](https://codecov.io/gh/cosmos/cosmos-sdk/branch/master/graph/badge.svg)](https://codecov.io/gh/cosmos/cosmos-sdk)
master | [![CircleCI](https://circleci.com/gh/cosmos/cosmos-sdk/tree/master.svg?style=shield)](https://circleci.com/gh/cosmos/cosmos-sdk/tree/master) | [![codecov](https://codecov.io/gh/cosmos/cosmos-sdk/branch/master/graph/badge.svg)](https://codecov.io/gh/cosmos/cosmos-sdk)
**WARNING**: the libraries are still undergoing breaking changes as we get better ideas and start building out the Apps.
WARNING: the libraries are still undergoing breaking changes as we get better ideas and start building out the Apps. **Note**: Requires [Go 1.9+](https://golang.org/dl/)
**Note: Requires Go 1.9+**
## Overview
The Cosmos SDK is a platform for building multi-asset Proof-of-Stake
cryptocurrencies, like the [Cosmos Hub](https://cosmos.network). It is both a The Cosmos-SDK is a platform for building multi-asset Proof-of-Stake (PoS) blockchains, like the [Cosmos Hub](https://cosmos.network). It is both a library for building and securely interacting with blockchain applications.
library for building applications and a set of tools for securely interacting
with them. The goal of the Cosmos-SDK is to allow developers to easily create custom interoperable blockchain applications within the Cosmos Network without having to recreate common blockchain functionality, thus abstracting away the complexities of building a Tendermint ABCI application. We envision the SDK as the `npm`-like framework to build secure blockchain applications on top of Tendermint.
The goals of the SDK are to abstract away the complexities of building a In terms of its design, the SDK optimizes flexibility and security. The framework is designed around a modular execution stack which allows applications to mix and match elements as desired. In addition, all modules are sandboxed for greater application security.
Tendermint ABCI application in Golang and to provide a framework for building
interoperable blockchain applications in the Cosmos Network. It is based on two major principles:
It is inspired by capabilities-based security, and informed by years of - **Composability**: Anyone can create a module for the Cosmos-SDK and integrating the already-built modules is as simple as importing them into your blockchain application.
wrestling with blockchain state machines.
- **Capabilities**: The SDK is inspired by capabilities-based security, and informed by years of wrestling with blockchain state machines. Most developers will need to access other 3rd party modules when building their own modules. Given that the Cosmos-SDK is an open framework and that we assume that some those modules may be malicious, we designed the SDK using object-capabilities (_ocaps_) based principles. In practice, this means that instead of having each module keep an access control list for other modules, each module implements `keepers` that can be passed to other modules to grant a pre-defined set of capabilities. For example, if an instance of module A's `keepers` is passed to module B, the latter will be able to call a restricted set of module A's functions.
The SDK is fast, safe, and easy-to-use. It is generic enough to be used to
implement the state machines of other existing blockchains, like Bitcoin and The capabilities of each `keeper` are defined by the module's developer, and it's their job to understand and audit the safety of foreign code from 3rd party modules based on the capabilities they are passing into each 3rd party module. For a deeper look at capabilities, you can read this [article](http://habitatchronicles.com/2017/05/what-are-capabilities/).
Ethereum, allowing seamless integration with them and their data structures.
It comes with batteries included, is easily extensible, and does not require _Note: For now the Cosmos-SDK only exists in [Golang](https://golang.org/), which means that developers can only develop SDK modules in Golang. In the future, we expect that the SDK will be implemented in other programming languages. Funding opportunities supported by the Tendermint team may be available eventually._
developers to fork it to access any of its current or extended functionality.
It provides both REST and command line interfaces for secure user interactions. ## Application architecture
Applications in the Cosmos-SDK are defined in terms of handlers that process #### Modules
messages and read and write to a store. Handlers are given restricted
capabilities that determine which parts of the store they can access. The SDK The Cosmos-SDK has all the necessary pre-built modules to add functionality on top of a `BaseApp`, which is the template to build a blockchain dApp in Cosmos. In this context, a `module` is a fundamental unit in the Cosmos-SDK. Each module is an extension of the `BaseApp` functionalities that defines transactions, handles application state and the state transition logic. Each module also contains handlers for messages and transactions, as well as REST and CLI for secure user interactions.
provides common data structures for Accounts, multi-asset Coins, checking
signatures, preventing replay, and so on. Some of the most important modules already integrated in the SDK are:
For more details on the design goals, see the [SDK Guide](docs/guide.md) - `Auth`: Defines a standard account structure (`BaseAccount`) and how transaction signers are authenticated.
- `Bank`: Defines how coins (i.e cryptocurrencies) are transferred.
## Prerequisites - `Governance`: Governance related implementation including proposals and voting.
- `Staking`: Proof of Stake related implementation including bonding and delegation transactions, inflation, fees, unbonding, etc.
* [golang](https://golang.org/doc/install) - `IBC`: Defines the intereoperability of blockchain zones according to the specifications of the [IBC Protocol](https://cosmos.network/whitepaper#inter-blockchain-communication-ibc).
## Getting Started
#### Directories
- See the [SDK Guide](docs/guide.md)
The key directories of the SDK are:
- `baseapp`: Defines the template for a basic [ABCI ](https://cosmos.network/whitepaper#abci) application so that your Cosmos-SDK application can communicate with the underlying Tendermint node.
- `client`: CLI and REST server tooling.
- `server`: RPC server to communicate with the node.
- `examples`: Contains examples on how to build working standalone applications.
- `store`: Contains code for the multistore (_i.e._ state). Each module can create any number of `KVStores` (key-value stores) from the multistore.
- `types`: Common types required in any SDK-based application.
- `x`(for e**X**tensions): Folder for storing the `BaseApp` module and all the already-built modules described in the previous section.
## Prerequisites
- [Golang](https://golang.org/doc/install)
## Getting Started
See the [documentation](https://cosmos-sdk.readthedocs.io).

View File

@ -6,10 +6,10 @@ package version
// TODO improve // TODO improve
const Maj = "0" const Maj = "0"
const Min = "14" const Min = "15"
const Fix = "0" const Fix = "0"
const Version = "0.14.0-rc1" const Version = "0.15.0-rc1"
// GitCommit set by build flags // GitCommit set by build flags
var GitCommit = "" var GitCommit = ""