Go to file
Ethan Buchman 098d17711a fix test 2017-10-11 23:44:40 -04:00
app Merge pull request #255 from cosmos/feature/staking 2017-10-11 16:53:16 -04:00
benchmarks strings -> mycoin (cointype change) 2017-10-11 13:24:49 -04:00
client Make sure height in store increments every block, even if empty 2017-10-10 15:03:39 +02:00
docs typo 2017-10-11 14:31:53 -04:00
errors IBC test just rawtx, coin ibc in that module 2017-07-27 16:27:06 -04:00
examples fix test 2017-10-11 23:44:40 -04:00
modules strings -> mycoin (cointype change) 2017-10-11 13:24:49 -04:00
publish Rename all packages and imports to cosmos-sdk 2017-08-21 22:15:15 +01:00
server/commands GetInitCmd takes app options 2017-10-11 23:29:32 -04:00
stack Merge pull request #255 from cosmos/feature/staking 2017-10-11 16:53:16 -04:00
state cleanup 2017-10-10 13:55:17 +02:00
tests integrated init --static, fix tests 2017-10-10 03:13:02 -04:00
version fix test 2017-10-11 23:44:40 -04:00
.gitignore Move keys command from go-crypto here 2017-09-08 20:47:46 +02:00
CHANGELOG.md changelog and version 2017-10-11 23:30:50 -04:00
Dockerfile Dockerfile and Dockerfile.dev for development 2017-03-14 16:15:03 +04:00
Dockerfile.dev add jq to Dockerfile.dev [ci skip] 2017-06-23 12:13:29 +04:00
LICENSE Add Apache2.0 license 2016-09-10 15:53:15 -07:00
Makefile Move the tests into basecoin examples 2017-09-08 20:51:14 +02:00
README.md readme, changelog, version bump 2017-10-11 16:57:38 -04:00
RELEASE.md Update RELEASE from learning from 0.6.0 2017-06-23 11:10:32 +02:00
ROADMAP.md Add thoughts on a release process 2017-06-22 13:04:47 +02:00
Vagrantfile Add vagrantfile so i can build dist on osx (docker) 2017-06-29 14:44:34 +02:00
_gen.go Start tx holder with gen 2017-06-30 18:37:47 +02:00
circle.yml circle fix, minor IBC tutorial 2017-06-29 05:52:07 -04:00
context.go Rename all packages and imports to cosmos-sdk 2017-08-21 22:15:15 +01:00
glide.lock update glide 2017-10-11 17:23:37 -04:00
glide.yaml update glide 2017-10-11 17:23:37 -04:00
handler.go Rename all packages and imports to cosmos-sdk 2017-08-21 22:15:15 +01:00
tx.go Rename all packages and imports to cosmos-sdk 2017-08-21 22:15:15 +01:00
tx_test.go Rename all packages and imports to cosmos-sdk 2017-08-21 22:15:15 +01:00
txinner_wrapper.go Rename all packages and imports to cosmos-sdk 2017-08-21 22:15:15 +01:00

README.md

Cosmos SDK

banner

version API Reference Rocket.Chat license LoC Go Report Card

Branch Tests Coverage
develop CircleCI codecov
master CircleCI codecov

!!!!!!!!!!!!!!!!!!!!!

THIS REPOSITORY IS UNDERGOING RAPID DEVELOPMENT AND NONE OF ITS INTERFACES ARE CONSIDERED STABLE.

USE AT YOUR OWN RISK.

!!!!!!!!!!!!!!!!!!!!!

The Cosmos SDK is the middleware platform that the Cosmos Hub is constructed from. The Hub is a blockchain (or, internet of blockchains) in which the Atom supply resides. The Atoms supply is defined at genesis and can change based on the rules of the Hub.

Under the hood, the Cosmos SDK is an ABCI application designed to be used with the Tendermint consensus engine to form a Proof-of-Stake cryptocurrency. It also provides a general purpose framework for extending the feature-set of the cryptocurrency by implementing plugins.

This SDK affords you all the tools you need to rapidly develop robust blockchains and blockchain applications which are interoperable with The Cosmos Hub. It is a blockchain development 'starter-pack' of common blockchain modules while not enforcing their use thus giving maximum flexibility for application customization. For example, does your app require fees, how do you want to log messages, do you enable IBC, do you even have a cryptocurrency? In this way, the Cosmos SDK is the Rails of cryptocurrencies.

Within this repository, the basecoin app serves as a reference implementation for how we build ABCI applications in Go, and is the framework in which we implement the Cosmos Hub. It's easy to use, and doesn't require any forking - just implement your plugin, import the libraries, and away you go with a full-stack blockchain and command line tool for transacting.

Prerequisites

Installation

go get -u github.com/cosmos/cosmos-sdk/cmd/basecoin

See the install guide for more details.

Guides

To deploy a testnet, see our repository of deployment tools.

Inspiration

The basic concept for this SDK comes from years of web development. A number of patterns have arisen in that realm of software which enable people to build remote servers with APIs remarkably quickly and with high stability. The ABCI application interface is similar to a web API (DeliverTx is like POST and Query is like GET while SetOption is like the admin playing with the config file). Here are some patterns that might be useful:

  • MVC - separate data model (storage) from business logic (controllers)
  • Routers - easily direct each request to the appropriate controller
  • Middleware - a series of wrappers that provide global functionality (like authentication) to all controllers
  • Modules (gems, package, etc) - developers can write a self-contained package with a given set of functionality, which can be imported and reused in other apps

Also at play is the concept of different tables/schemas in databases, thus you can keep the different modules safely separated and avoid any accidental (or malicious) overwriting of data.

Not all of these can be compare one-to-one in the blockchain world, but they do provide inspiration for building orthogonal pieces that can easily be combined into various applications.