project screenshot 1
project screenshot 2
project screenshot 3
project screenshot 4
project screenshot 5
project screenshot 6

SoliCode

Interactive Solidity development environment combining smart contract compilation, testing and Jupyter notebook functionality. Build, test and deploy blockchain applications with ease.

SoliCode

Created At

ETHGlobal Bangkok

Project Description

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.

How it's Made

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.

background image mobile

Join the mailing list

Get the latest news and updates