/dapple

A tool for contract system developers.

Primary LanguageJavaScript



[![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.

Installation

npm install -g dapple

Basic Usage

Create a package directory
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 definitions
  • js_module.js, a javascript module which wrapps classes.json and adds instantiated web3js Contract objects for each object in the dappfile.
dapple build

Example dapple packages

dappsys: A contract system framework, Nexus's "standard library".

feedbase: Simple paid feed app.

Feature docs

To document:

  • Aliasing and imports
  • Environments and object linking
  • Ignore/add