Interactive Solidity development environment combining smart contract compilation, testing and Jupyter notebook functionality. Build, test and deploy blockchain applications with ease.
SoliCode is an innovative smart contract development tool that brings the interactive development experience of Jupyter Notebook to Solidity development. The project aims to simplify the blockchain application development process, enabling developers to write and test smart contracts more intuitively and efficiently. SoliCode's distinguishing feature is that the entire project is based on frontend development without any backend server running, allowing SoliCode to be embedded and run in any webpage. It also supports sending transactions directly using Solidity without the need to write JavaScript scripts. The tool offers segmented code writing with built-in console functionality and can print detailed information about any variable, making data debugging convenient. It can connect to real networks, allowing you to quickly query on-chain information.
This project is developed using @ethereumjs/evm, @ethereumjs/vm, jotai, React, Vite, shadcn, and Tailwind. It extensively employs intrusive techniques to bypass certain EVM limitations. For example, to address the inability to stop at specific opcodes, I implemented multiple approaches including regular expressions, code analysis, and opcode position querying to locate special positions and pause execution, thereby enabling stack data printing. The project also utilizes Web Worker technology to enable asynchronous compilation. Similarly, I implemented a custom compilation method to achieve the trick of sending transactions directly from within contracts - a highly complex feature that required several hours of research. Additionally, I utilized Hardhat's open-source code to implement the console parsing functionality.