Jump start your Smart Contracts development with no configuration.
This skeleton repository gives you a good foundation for building or starting with the development of Smart contracts for Ethereum blockchain written in Solidity language.
- Clone this repo.
- Run
npm install
.
That's all!
- Truffle framework: The most popular development framework for Ethereum.
- OpenZeppelin: Framework of reusable and secure smart contracts in the Solidity language.
- Solium: Linter to identify and fix style & security issues in Solidity.
- Solidity Coverage: Code coverage for Solidity testing.
- Babel: Compiler for next-generation Javascript.
- Mocha: Javascript testing framework.
- Chai: Javascript BDD/TDD assertion library.
The only (base) requirement is Node with NPX.
Note: If you are developing on Windows the "Bash on Linux on Windows" is highly recommended for running code coverage. If you want to run it directly in Powershell/cmd, follow this guide (Not recommended).
(npx is bundled with npm 5.2+ and higher.)
Tests are located in test/
folder and are mostly written in javascript. This skeleton gives you preconfigured support for ES2015+ features. Thanks to the new import
, async
/await
and arrow functions the tests are much cleaner and simpler.
See the Mocha and Chai documentation for writing tests.
npm test
The contracts are compiled automatically when running the commands (e.g. npm test
, npm run migrate
, ..). Yet it can be handy to run the compilation manually as then the files are persisted and not deleted on command exit.
Running the compile method will generate a build/
folder with JSON files containing the contracts bytecode, source map, abi and more. This can speed up running the tests as it will not recompile them on every run (unless changing the contracts code).
npm run compile
Running the code coverage command will generate a coverage/
folder. Open the index.html
to view the results.
npm run coverage
Linting will statically analyze your code to identify style & security issues.
npm run lint
To publish and interact with your contracts, you will need to "migrate" them.
This changes and may need a bit of configuration depending to which network and/or RPC you are deploying.
Please see Truffle's Ganache or Geth's geth --dev
command for running personal developer blockchain.
npm run migrate