Package Exports
- surya
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (surya) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme

Sūrya, The Sun God: A Solidity Inspector
Surya is an utility tool for smart contract systems. It provides a number of visual outputs and information about the contracts' structure. Also supports querying the function call graph in multiple ways to aid in the manual inspection of contracts.
Currently only supports Solidity but we hope to extend the tool to encompass other languages.
The name stems from the sun deity Surya
Why the sun, you ask? Because "sun" in latin and portuguese is Sol.
Getting Started
Install it via npm:
npm install -g surya
Command List
All the commands that take in an array of files also take in a flag (-i
/--import
) that resolves file imports automatically.
Please be aware that in the case you use Truffle's "node_modules" remapping import statements, Surya searches up the project directory recursively until it finds a contracts
directory in the Truffle project up until the directory you ran the command in. This is so that we try to prevent any kind of path traversal vulnerabilities that could come from exposing Surya as a service.
describe
The describe
command shows a summary of the contracts and methods in the files provided.
surya describe *.sol

Functions will be listed as:
[Pub]
public[Ext]
external[Prv]
private[Int]
internal
A yellow ($)
denotes a function is payable
.
A red #
indicates that it's able to modify state.
inheritance
The inheritance
command outputs a DOT-formatted graph of the inheritance tree.
surya inheritance MyContract.sol | dot -Tpng > MyContract.png

graph
The graph
command outputs a DOT-formatted graph of the control flow.
surya graph contracts/**/*.sol | dot -Tpng > MyContract.png

parse
The parse
command outputs a "treefied" AST object coming from the parser.
surya parse MyContract.sol

ftrace
The ftrace
command outputs a "treefied" function call trace stemming from the defined "CONTRACT::FUNCTION" and traversing "all|internal|external" types of calls.
External calls are marked in orange
and internal calls are uncolored
.
surya ftrace APMRegistry::_newRepo all MyContract.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 Exchange Exchange.sol

mdreport
The mdreport
command creates a markdown description report with tables comprising information about the system's files, contracts and their functions.
surya mdreport report_outfile.md MyContract.sol
License
GPL-3.0
Kudos
Created by @federicobond extended by @GNSPS