duneanalytics / duneanalytics/evm.codes
feat: Add support for Vyper in the Playground
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 827
- Forks
- 199
- Avg merge
- 15m
- Merged PRs (30d)
- 1
Description
Description
Currently, evm.codes is the gold standard for interactive EVM opcode debugging, but it is primarily focused on Solidity and Yul. As Vyper remains a critical language for Ethereum (powering protocols like Curve and others), adding Vyper support would make this tool the ultimate cross-language playground for the ecosystem.
The Challenge: Python in the Browser
Since Vyper is a Python-based application with specific dependencies, running it in a browser environment requires a way to execute Python code without a backend. I have been researching ways to achieve this and would like to propose an implementation strategy.
Proposed Technical Approaches
To run the Vyper compiler client-side, we could utilize one of the following:
Pyodide (WASM): (Recommended) A WASM-based CPython interpreter. It is robust, handles complex dependencies well, and can be isolated in a Web Worker to prevent UI blocking.
Brython: Transpiles Python to JS at runtime.
Skulpt: A pure JavaScript implementation of a Python interpreter.
Given that Vyper relies on specific libraries (like ast and semantic-version), Pyodide seems the most viable for a high-fidelity compilation experience similar to the existing soljson.js workflow.
I would like to implement this!
I am highly interested in carrying out this work. My goal is to create a seamless experience where switching the language dropdown to "Vyper" initializes a Vyper-specific worker, compiles the source to bytecode, and feeds it directly into the existing EVM emulator.
I’ve been exploring the site's architecture and would appreciate any guidance on the preferred way to integrate this into the existing Playground component.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reading the existing Playground component and tracing the current soljson.js workflow. Compare Pyodide, Brython, and Skulpt against Vyper's stated dependencies and browser constraints. Done means selecting an integration approach, adding the Vyper language path, compiling source client-side, and feeding bytecode into the existing EVM emulator.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python, typescript, wasm
- Domain
- blockchain, compilers, frontend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100