This repository has been archived by the owner. It is now read-only.
DEPRECATED. To be removed December, 2018 (use monax/bosmarmot)
Clone or download
silasdavis Update to compilers 0.18.1 fixing issue with too long library linking
flag argument.

Updated 0.18.1 dind and platform-deployer images

Signed-off-by: Silas Davis <silas@monax.io>
Latest commit f88eec9 Mar 22, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github fixes Apr 15, 2017
chains Merge pull request #1415 from zramsay/gosimple May 30, 2017
clean core: apply the gosimple tool May 30, 2017
cmd fix #1390 Jul 10, 2017
config pkgs: remove remote compiler functionality Jun 9, 2017
data core: apply the gosimple tool May 30, 2017
definitions Merge pull request #1399 from zramsay/issue-1150-deprecate-machine-flag Jun 19, 2017
docker core: new paths for remaining files May 29, 2017
docs Update epm.yaml to be correctly parsed by CLI Dec 4, 2017
initialize compilers needs port 9099 Jul 9, 2017
keys Merge pull request #1415 from zramsay/gosimple May 30, 2017
list core: apply megacheck to remaining code May 30, 2017
loaders pkgs: force use of yaml file, always Jul 9, 2017
log core: apply the gosimple tool May 30, 2017
misc Update to compilers 0.18.1 fixing issue with too long library linking Mar 22, 2018
perform Merge pull request #1415 from zramsay/gosimple May 30, 2017
pkgs fix #1390 Jul 10, 2017
services core: apply the gosimple tool May 30, 2017
tests add test for #1390 Jul 10, 2017
testutil core: apply the gosimple tool May 30, 2017
util planned deprecation is not actual deprecation Jul 9, 2017
vendor VERY DIRTY fix of compilers within vendor - ony doing this because co… Jul 10, 2017
version Update to compilers 0.18.1 fixing issue with too long library linking Mar 22, 2018
.dockerignore Update to compilers 0.18.1 fixing issue with too long library linking Mar 22, 2018
.gitignore Update to compilers 0.18.1 fixing issue with too long library linking Mar 22, 2018
.goxc.json readme: remove reference to glide & moar re-naming Apr 14, 2017
CHANGELOG.md Merge pull request #1412 from monax/master May 29, 2017
LICENSE.md eris:cli is GPL3 May 28, 2015
Makefile core: apply megacheck to remaining code May 30, 2017
README.md core: new paths for remaining files May 29, 2017
glide.yaml core: new paths for remaining files May 29, 2017
install_vendor.sh add TRASH_CACHE comment Apr 26, 2017
vendor.conf Update vendored Burrow to latest develop to capture logging templatin… Jul 10, 2017

README.md

Introduction

Monax is an application platform for building, testing, maintaining, and
operating applications built to run on an ecosystem level.

monax is a tool which makes it easy for developers to build, test, manage, and operate smart contract applications. No matter the blockchain.

For the motivation behind this tool see this post.

Install (For Developers)

  • Install Docker.
  • Install Go.
go get github.com/monax/monax/cmd/monax
monax init

See below for the directory structure created by init.

Install (For Non-Developers)

Please see our getting started page for those who are not familiar with go and/or docker.

Overview

The monax tool is centered around a very few concepts:

  • services — things that you turn on or off
  • chains — develop permissioned chains
  • pkgs — our smart contract tool chain
  • keys — wrapping of our key management tooling

These concepts provide the core functionality of what we think a true smart contract application platform requires.

To get started using monax to see what the tooling can do and how it can help your development patterns for smart contract applications, please see our tutorial series.

Architecture of the Tool

monax is mostly an opinionated wrapper around Docker's API. We have found that running applications locally which require sophisticated installation paths and/or complex configuration work best when used from Docker's container based system.

Each of the concepts listed above is described in a bit more detail below.

Services

Services are "things that you turn on or off". Examples of services include:

  • a PGP daemon
  • an IPFS node
  • a Bitcoin node
  • an Ethereum node
  • a Tendermint test chain node
  • BigchainDB service
  • ZCash node

Services work from a base of service definition files. These files are held on the host in the following location: ~/.monax/services. Service definition files tell monax how a docker container should be started. The specification for service definition files is located here.

To see the various ways in which monax can interact with services, please type:

monax services

Chains

Chains are an opinionated toolchain around permissioned chains. They can be most easily thought of as your "develop" branch for chains. In other words, if you need to work on a permissioned chain, then it is best to use monax chains. Chains hardcode most of the service starting criteria, but still allow for some flexibility as to how chains are worked with.

To see the various ways in which monax can help you develop chains, please type:

monax chains

Pkgs

Pkgs are an opinionated toolkit to help you deploy and test your smart contract packages on both permissioned and unpermissioned blockchain networks.

monax pkgs is a package manager to deal with contracts. The package manager is a yaml based automation framework which makes it trivial to deploy and test your smart contract systems. The specification for monax:jobs definition files is located here.

Pkgs give you access to test your smart contracts both against "throwaway chains" which are one time use chains that are needed for the sole purpose of testing smart contract packages, as well as existing blockchain networks.

To see the various ways in which monax can help you develop smart contract applications, please type:

monax pkgs

Keys

Keys is an opinionated toolchain around monax-keys. Please note that this concept of the monax platform is for development only and should not be used in production because it has not been fully security audited and we do not plan for it to be. In production the keys service should be replaced with your audited security system of choice.

To see the various ways in which monax can help you manage your various key pairs, please type:

monax keys

Directory Structure

Created by monax init in $HOME directory:

├── .monax/
│   ├── monax.toml
│   ├── apps/
│   ├── bundles/
│   ├── chains/
│       ├── account-types/
│       ├── chain-types/
│   ├── keys/
│       ├── data/
│       ├── names/
│   ├── scratch/
│       ├── data/
│       ├── languages/
│   ├── services/
│       ├── keys.toml

Contributions

Are Welcome! Before submitting a pull request please:

  • fork from develop
  • go fmt your changes
  • have tests
  • pull request
  • be awesome

See our CONTRIBUTING.md and PULL_REQUEST_TEMPLATE.md for more details.

Please note that this repository is GPLv3.0 per the LICENSE file. Any code which is contributed via pull request shall be deemed to have consented to GPLv3.0 via submission of the code (were such code accepted into the repository).

Bug Reporting

Found a bug in our stack? Make an issue!

The issue template specifies what needs to be included in your issue and will autopopulate the issue.

License

Proudly GPL-3. See license file