[![Dapple Version](https://img.shields.io/badge/version-0.3.0-8D86C9.svg?style=flat-square)](https://github.com/nexusdev/dapple/releases/tag/0.3.0) [![js-semistandard-style](https://img.shields.io/badge/code%20style-semistandard-brightgreen.svg?style=flat-square)](https://github.com/Flet/semistandard) [![Build Status](https://travis-ci.org/NexusDevelopment/dapple.svg?branch=master)](https://travis-ci.org/NexusDevelopment/dapple) [![Slack Status](http://slack.makerdao.com/badge.svg)](https://slack.makerdao.com)
dapple
is a Solidity developer multitool concerned primarily with managing the growing complexity of interconnected smart contract systems. Its core functionality encompasses package management, build process, and deployment scripting. These concepts are related in a way that is unique to the smart contract ecosystem, due to each blockchain's universal singleton nature. The central data model is the dappfile
, whose definition depends on IPFS and also on the Ethereum blockchain specifically.
npm install -g dapple
mkdir mydapp && cd mydapp
dapple init
dapple init
generates a simple boilerplate dappfile
in the current
directory.
If no errors are displayed, the initialization was a success. You should be able
to see the boilerplate dappfile
in your current directory, along with a couple
other directories:
$ ls
build contracts dappfile
By default, build
is where the output of dapple build
gets put, and
contracts
is where Dapple looks for your contract source files. Both of these
are configured in your dappfile
and can be overridden.
Write a contract and test (see dapple test harness docs).
vim contracts/dapp.sol
vim contracts/dapp_test.sol
dapple test
By default, dapple builds the entire contracts
tree, and emits the following:
- dapple build cache objects
classes.json
, all type definitionsjs_module.js
, a javascript module which wrapps classes.json and adds instantiated web3js Contract objects for each object in the dappfile.
dapple build
dappsys: A contract system framework, Nexus's "standard library".
feedbase: Simple paid feed app.
- Basic VM tests
- Testing Exceptions
- Testing Events
- Installing/Publishing Packages
- Deployment Scripting
To document:
- Aliasing and imports
- Environments and object linking
- Ignore/add