# Solidity Starter Kit
(opens new window) (opens new window) (opens new window)
A starter kit for Ethereum Smart Contracts development
# Development
# Install dependencies
npm install
# Usage (using Truffle)
Open the Truffle console
npm run truffle:console
# Compile
npm run truffle:compile
# Test
npm run truffle:test
# Usage (using Hardhat)
Open the Hardhat console
npm run hardhat:console
# Compile
npm run hardhat:compile
# Test
npm run hardhat:test
# Code Coverage
npm run hardhat:coverage
# Linter
Use Solhint
npm run lint:sol
Use ESLint
npm run lint:js
Use ESLint and fix
npm run lint:fix
# Use web3 console in your browser (i.e. to use MetaMask)
By default it takes contracts compiled with Truffle.
To use Hardhat compiled contracts change ./build/contracts
with ./artifacts
in bs-config.json
npm run dev
# Flattener
This allow to flatten the code into a single file
Edit scripts/flat.sh
to add your contracts
npm run flat
# Analysis
Note: it is better to analyze the flattened code to have a bigger overview on the entire codebase. So run the flattener first.
# Describe
The describe
command shows a summary of the contracts and methods in the files provided
surya describe dist/SampleContract.dist.sol
# Dependencies
The dependencies
command outputs the c3-linearization of a given contract's inheirtance graph. Contracts will be listed starting with most-derived, ie. if the same function is defined in more than one contract, the solidity compiler will use the definition in whichever contract is listed first.
surya dependencies SampleContract dist/SampleContract.dist.sol
# Generate Report
Edit scripts/analyze.sh
to add your contracts
npm run analyze
The inheritance
command outputs a DOT-formatted graph of the inheritance tree.
The graph
command outputs a DOT-formatted graph of the control flow.
The mdreport
command creates a markdown description report with tables comprising information about the system's files, contracts and their functions.
The sol2uml
generates UML class diagram from Solidity contracts.
# License
Code released under the MIT License (opens new window).