This tool was made to design Smart contracts visually and generate DVM code to be deployed on the DERO Blockchain.
This is alpha software made for the dArch hackathon, mostly for educational purposes. Code generated may include bugs, please thoroughly check/audit the code before deploying.
Download application from the releases page.
The tool is now based on the wails project. You need go and wails-cli installed (instructions on website).
wails dev
Prebuilt binaries are available on the release section of this repository. To build on your platform :
wails build
- Graph & UI
- Add, remove, edit nodes and links
- Store in local storage
- Import / Export
- Code generation
- Split "Let-Dim" node,
- DIMs are put at the top of the function, variables declared in the start node like the args
- make let nodes like a process with one input
- make a variable node to use the name
- Make an Operation node for +, -, *, /, %, and also boolean &&, ||, ... (check docs)
- Refactor the control node to make it simpler. Conditions can be made with operation nodes
- Fix IF THEN ELSE case
- Display Code in an expandable window on the right side
- Manage variable type
- Export only a subset of functions
- Rename function
- Make links splines instead of straight lines
- Remove function or process
- [OPTIONAL] Change function to process and vice versa
- [OPTIONAL] Graph schema Versionning and retrocompatibility
- Handle backward case
- Code generation
- Parenthesis on expressions?
- Docs
- Write some basic documentation
- Make a tutorial video
- Deployment
- Package using electron-like framework
- Build a simulator GUI
- Install / Test on DERO simulator
- Refactor
- Header?
- Rename "process" into "subroutine"
- UI components
- Graph types all in one place
- Read from a smart contract
Depending on how the smart contract is formatted it might be hard. I'm open to any advice on parsing.
Right clicking a blank area of canvas brings up a list of nodes that can be created.
- Double clicking implemented instead, to keep the context menu and make life easier for trackpads.
Perhaps a menu of object primitives along the top that can bed dragged into the scene
dero1qysmkhsvkm2622t7cxgsx8kap59tn4nfhsesdvpdgeqw7umm52xq6qgph5v2v