Easy-to-use framework to build Tendermint ABCI applications
Clone or download
husio Merge pull request #276 from iov-one/move-nft-types-issue-255
Move custom nft implementations into cmd/bnsd
Latest commit c25d96a Jan 18, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
app Nft benchmark issue 224 2 (#270) Jan 17, 2019
architecture WIP: NFT architecture document (#111) Sep 17, 2018
cmd Move custom nft implementations into cmd/bnsd Jan 17, 2019
commands initial conversion (#169) Oct 29, 2018
coverage Add codecov support Mar 22, 2018
crypto Escrow cleanup (#159) Oct 23, 2018
docs Update copyright year (#250) Jan 2, 2019
errors Rename all imports to iov-one/weave Aug 13, 2018
examples remove print from tests Jan 3, 2019
orm fix sequence key creation (#200) Nov 28, 2018
store initial conversion (#169) Oct 29, 2018
tmtest refactor tests using tendermint server (#243) Dec 19, 2018
x Move custom nft implementations into cmd/bnsd Jan 17, 2019
.codecov.yml codecov ignores .pb.go files Mar 22, 2018
.gitignore Nft (#157) Oct 9, 2018
.travis.yml Tendermint upgrade (#266) Jan 9, 2019
CODEOWNERS Add alpe to CODEOWNERS Aug 13, 2018
Gopkg.lock Tendermint upgrade (#266) Jan 9, 2019
Gopkg.toml Tendermint upgrade (#266) Jan 9, 2019
LICENSE Update copyright year (#250) Jan 2, 2019
Makefile Move custom nft implementations into cmd/bnsd Jan 17, 2019
README.md fixed official (#146) Oct 2, 2018
README_BOV.md Update copyright year (#250) Jan 2, 2019
README_DOCKER.md Update README_DOCKER.md Sep 5, 2018
ROADMAP.md Begin roadmap for q3 work Jul 27, 2018
abci.go initial conversion (#169) Oct 29, 2018
abci_test.go initial conversion (#169) Oct 29, 2018
conditions.go Rename all imports to iov-one/weave Aug 13, 2018
context.go Add acceptance test scenarios (#190) Nov 19, 2018
context_test.go initial conversion (#169) Oct 29, 2018
handler.go Cleanup comments, spelling Mar 16, 2018
hex.go Address pr comments Feb 20, 2018
query.go A bit more housekeeping... Mar 16, 2018
store.go Cleanup comments, spelling Mar 16, 2018
tx.go Minor code cleanup May 23, 2018
util_test.go Rename Permission -> Condition May 23, 2018
version.go Bump version to 0.7.0 Sep 6, 2018

README.md

Iov Weave

Build Status TravisCI codecov LoC Go Report Card API Reference ReadTheDocs license

IOV Weave is a framework for quickly building your custom ABCI application to run a blockchain on top of the best-of-class BFT Proof-of-stake Tendermint consensus engine. It provides much commonly used functionality that can quickly be imported in your custom chain, as well as a simple framework for adding the custom functionality unique to your project.

Note: Requires Go 1.9+

It is inspired by the routing and middleware model of many web application frameworks, and informed by years of wrestling with blockchain state machines. More directly, it is based on the official cosmos-sdk, both the 0.8 release as well as the future 0.9 rewrite. Naturally, as I was the main author of 0.8.

While both of those are extremely powerful and flexible and contain advanced features, they have a steep learning curve for novice users. Thus, this library aims to favor simplicity over power when there is a choice. If you hit limitations in the design of this library (such as maintaining multiple merkle stores in one app), I highly advise you to use the official cosmos sdk.

On the other hand, if you want to try out tendermint, or have a design that doesn't require an advanced setup, you should try this library and give feedback, especially on ease-of-use. The end goal is to make blockchain development almost as productive as web development (in golang), by providing defaults and best practices for many choices, while allowing extreme flexibility in business logic and data modelling.

For more details on the design goals, see the Design Document

Prerequisites

Instructions

First, make sure you have set up the requirements. If you have a solid go and node developer setup, you may skip this, but good to go through it to be sure.

Once you are set up, you should be able to run something like the following to compile both mycoind (sample app) and tendermint (a BFT consensus engine):

go get github.com/iov-one/weave
cd $GOPATH/src/github.com/iov-one/weave
make deps
make install
# test it built properly
tendermint version
# 0.21.0-46369a1a
mycoind version
# v0.6.0-7-g3aa16c9

Note that this app relies on a separate tendermint process to drive it. It is helpful to first read a primer on tendermint as well as the documentation on the tendermint cli commands.

Once it compiles, I highly suggest going through the tutorials on readthedocs

History

The original version, until v0.6.0 was released under confio/weave. The original author, Ethan Frey, had previously worked on the Cosmos SDK and wanted to make a simpler framework he could use to start building demo apps, while the main sdk matured. Thus, confio/weave was born the first few months of 2018. This framework was designed to be open source and shared, but the only real usage and development was by IOV, so it was donated to that organization in August 2018 to be developed further for their BNS blockchain, as well as a companion to iov-core client libraries that deprecated confio/weave-js