Skip to content

Commit

Permalink
Merge pull request #180 from tendermint/feature/rige-docs
Browse files Browse the repository at this point in the history
Feature/rige docs
  • Loading branch information
ethanfrey authored Jul 24, 2017
2 parents 31cfdbf + 11c2c53 commit fb42662
Show file tree
Hide file tree
Showing 4 changed files with 265 additions and 192 deletions.
28 changes: 13 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,15 @@
# Basecoin
# Quark

_DISCLAIMER: Basecoin is not associated with Coinbase.com, an excellent Bitcoin/Ethereum service._
Quark is an [ABCI application](https://github.com/tendermint/abci) designed to
be used with the [Tendermint consensus engine](https://tendermint.com/) 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.

Basecoin is an [ABCI application](https://github.com/tendermint/abci) designed to be used with the [Tendermint consensus engine](https://tendermint.com/) 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.

Basecoin serves as a reference implementation for how we build ABCI applications in Go,
and is the framework in which we implement the [Cosmos Hub](https://cosmos.network).
**It's easy to use, and doesn't require any forking** - just implement your plugin, import the basecoin libraries,
and away you go with a full-stack blockchain and command line tool for transacting.

WARNING: Currently uses plain-text private keys for transactions and is otherwise not production ready.
Quark serves as a reference implementation for how we build ABCI applications
in Go, and is the framework in which we implement the [Cosmos
Hub](https://cosmos.network). **It's easy to use, and doesn't require any
forking** - just implement your plugin, import the quark libraries, and away
you go with a full-stack blockchain and command line tool for transacting.

## Prerequisites

Expand All @@ -28,10 +26,10 @@ See the [install guide](/docs/guide/install.md) for more details.

## Guide

1. Getting started with the [Basecoin basics](/docs/guide/basecoin-basics.md)
1. Getting started with the [Quark basics](/docs/guide/basecoin-basics.md)
1. Learning to [use the plugin system](/docs/guide/basecoin-plugins.md)
1. More features of the [Basecoin tool](/docs/guide/basecoin-tool.md)
1. Learn how to use [InterBlockchain Communication (IBC)](/docs/guide/ibc.md)
1. More features of the [Quark tool](/docs/guide/basecoin-tool.md)
1. Learn how to use [Inter-Blockchain Communication (IBC)](/docs/guide/ibc.md)
1. See [more examples](github.com/tendermint/basecoin-examples)


Expand Down
47 changes: 27 additions & 20 deletions docs/quark/README.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,39 @@
# Quark

Quarks are the building blocks of atoms. And in a similar vein, this
package is a framework for building the cosmos. It gives you all the tools
you need to quickly build up powerful abci applications to run on tendermint,
while also providing maximum flexibility to customize aspects of your
application (do you require fees, how do you want to log messages, do you
enable IBC, do you even have a cryptocurrency?)

However, when power and flexibility meet, the result is also some level of
Quarks are the fundamental building blocks of atoms through which DNA, life,
and matter arise. Similarly this package is the core framework for constructing
the atom tokens which will power [The Cosmos Network](https://cosmos.network/).

The Quark framework affords you all the tools you need to rapidly develop
robust blockchains and blockchain applications which are interoperable with The
Cosmos Hub. Quark is an abstraction of [Tendermint](https://tendermint.com/)
which provides the core consensus engine for your blockchain. Beyond consensus,
Quark provides a blockchain development 'starter-pack' of common blockchain
modules while not enforcing their use thus giving maximum flexibility for
application customization. For example, do you require fees, how do you
want to log messages, do you enable IBC, do you even have a cryptocurrency?

Disclaimer: when power and flexibility meet, the result is also some level of
complexity and a learning curve. Here is an introduction to the core concepts
embedded in quarks, so you can apply them properly.
embedded in Quark.

## Inspiration

The basic concept came from years of web development. After decades of web
development, a number of patterns have arisen that enabled people to build
remote servers with APIs remarkably quickly and with high stability.
I think the ABCI app interface is similar to a web api (DeliverTx is like POST
and Query is like GET and SetOption is like the admin playing with the config
file). Here are some patterns that might be useful:
The basic concept came 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](https://github.com/tendermint/abci) application interface is similar to
a web API (DeliverTx is like POST and Query is like GET and `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, ...) - people can write a self-contained package
with a given set of functionality, which can be imported and reused in
other apps
* Modules (gems, package, ...) - developers can write a self-contained package
with a given set of functionality, which can be imported and reused in other
apps

Also, the idea of different tables/schemas in databases, so you can keep the
different modules safely separated and avoid any accidental (or malicious)
Expand All @@ -41,6 +48,6 @@ into various applications.
* [Glossary of the terms](glossary.md)
* [Standard modules](stdlib.md)
* Guide to building a module
* Demo of cli tool
* Demo of CLI tool
* IBC in detail
* Diagrams!!!
* Diagrams... Coming Soon!
Loading

0 comments on commit fb42662

Please sign in to comment.