Dapple is a Solidity developer multitool designed to manage the growing complexity of interconnected smart contract systems.
Its core functionality encompasses three main areas:
- Package management
- Contract building
- Deployment scripting
These concepts are related in a way unique to the smart contract ecosystem, due to each blockchain's universal singleton nature.
The central data model for Dapple is the dappfile
, whose definition
will normally reference IPFS objects and Ethereum contract addresses.
The normal way to install Dapple is through npm:
$ npm install -g dapple
$ dapple --help
You can read about detailed system specific installation on the documentation.
Use dapple init
to generate a project skeleton:
mkdir foo;
cd foo;
dapple init
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.
Now try writing a contract and a test (see Dapple test harness docs):
$ vim contracts/dapp.sol
$ vim contracts/dapp_test.sol
$ dapple test
Finally, try building your project:
$ dapple build
By default, dapple build
builds the entire contracts/
tree, and
emits the following:
- cached build objects
classes.json
— a list of type definitionsjs_module.js
— a JavaScript module which wrapsclasses.json
and addsContract
objects instantiated fromweb3.js
for each object in thedappfile
- Dappsys — a contract system framework (Nexus's "standard library")
- Feedbase — a simple paid feed app
- stringutils — string manipulation library
- RanDAOPlus - Experimental Ethereum RNG based on PoW
- Aliasing and imports
- Environments and object linking
- Ignore/add