Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
0369547
feat: dio script to generate -w config from debug_traceCall (#96)
wjmelements Mar 7, 2026
60bbf70
feat: evm -nx interactive network fetch, dio fallback to evm when deb…
wjmelements Mar 7, 2026
84173b3
fix: include output in dio-generated test cases
wjmelements Mar 7, 2026
5ede5e0
fix: trim leading zeros from storage keys in dio output
wjmelements Mar 7, 2026
4cdeba6
refactor: rename dio to dio.py, generalize Makefile rule for .py scripts
wjmelements Mar 7, 2026
7df4926
fix: allow ETH_RPC_URL with stdin input by moving early-exit into arg…
wjmelements Mar 7, 2026
e8e84bd
feat: parameterize network post fn, add WebSocket support for ws:// w…
wjmelements Mar 7, 2026
fc3d10d
feat: rewrite dio in C with HTTP and WebSocket support
wjmelements Mar 8, 2026
9f62a23
refactor: drop debug_traceCall path from dio, always use runViaEvm
wjmelements Mar 8, 2026
1e8d416
strip newlines
wjmelements Mar 8, 2026
7d0e6e4
no special output for network mode
wjmelements Mar 8, 2026
94ce789
code review
wjmelements Mar 8, 2026
6253250
add gasUsed, logs, status to dio; logIndex to evm -w
wjmelements Mar 8, 2026
81e8c40
code review
wjmelements Mar 9, 2026
b038606
feat: improve RPC error messages in dio
wjmelements Mar 9, 2026
b5a1e15
code review: jArrayNext, json tests
wjmelements Mar 9, 2026
6f9a652
feat: support value field in dio call JSON
wjmelements Mar 9, 2026
8caec49
feat: treat evm -x calls without `to` as contract creation
wjmelements Mar 9, 2026
4949114
feat: move writeConfig to src/config.c with tests
wjmelements Mar 10, 2026
0448e64
rm dio.py
wjmelements Mar 10, 2026
664efc5
ci: install libcurl-dev and document libcurl dependency
wjmelements Mar 10, 2026
9d74d45
fix: resolve gcc warnings not emitted by clang
wjmelements Mar 10, 2026
24d55ac
feat: compute CREATE address from from+nonce when address unspecified
wjmelements Mar 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .github/workflows/check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,8 @@ jobs:
with:
submodules: recursive

- name: Install dependencies
run: sudo apt-get install -y libcurl4-openssl-dev

- name: make check
run: make check
3 changes: 3 additions & 0 deletions .github/workflows/make.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ jobs:
with:
submodules: recursive

- name: Install dependencies
run: sudo apt-get install -y libcurl4-openssl-dev

- name: delete generated file README.md
run: rm -f README.md

Expand Down
5 changes: 4 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ OCFLAGS=$(filter-out $(CCSTD), $(CFLAGS)) -fmodules
MKDIRS=lib bin tst/bin .pass .pass/tst/bin .make .make/bin .make/tst/bin .make/lib .pass/tst/in .pass/tst/diotst
SECP256K1=secp256k1/.libs/libsecp256k1.a
INCLUDE=$(addprefix -I,include) -Isecp256k1/include
EXECS=$(patsubst %.c, bin/%, $(wildcard *.c))
CURL_LDFLAGS := $(shell curl-config --libs 2>/dev/null || echo -lcurl)
EXECS=$(patsubst %.c, bin/%, $(wildcard *.c)) $(patsubst %.py, bin/%, $(wildcard *.py))
TESTS=$(patsubst tst/%.c, tst/bin/%, $(wildcard tst/*.c))
SRC=$(wildcard src/*.cpp) $(wildcard src/*.m) $(wildcard src/%.c)
LIBS=$(patsubst src/%.cpp, lib/%.o, $(wildcard src/*.cpp)) $(patsubst src/%.m, lib/%.o, $(wildcard src/*.m)) $(patsubst src/%.c, lib/%.o, $(wildcard src/*.c))
Expand Down Expand Up @@ -73,6 +74,8 @@ bin/%: %.cpp
$(CPP) $(CXXFLAGS) $(INCLUDE) $^ -o $@
bin/%: %.c
$(CC) $(CFLAGS) $(INCLUDE) $^ -o $@
bin/dio: dio.c | bin
$(CC) $(CFLAGS) $(INCLUDE) $^ $(CURL_LDFLAGS) -o $@
lib/%.o: src/%.m include/%.h | lib
$(CC) -c $(OCFLAGS) $(INCLUDE) $< -o $@
lib/%.o: src/%.cpp include/%.h | lib
Expand Down
24 changes: 24 additions & 0 deletions NOTICES/LIBCURL_LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
dio.c links against libcurl (https://curl.se/libcurl/).

COPYRIGHT AND PERMISSION NOTICE

Copyright (c) 1996 - 2024, Daniel Stenberg, <daniel@haxx.se>, and many
contributors, see the THANKS file.

All rights reserved.

Permission to use, copy, modify, and distribute this software for any purpose
with or without fee is hereby granted, provided that the above copyright
notice and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of a copyright holder shall not
be used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization of the copyright holder.
11 changes: 9 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,18 @@ EVM
Fast assembler, disassembler, execution, and testing for the Ethereum Virtual Machine (EVM) supporting expressive syntax.

## Installation
### Dependencies
`libcurl` is required to build `dio`.
* macOS: already installed by default
* Arch Linux: `sudo pacman -S curl`
* Debian/Ubuntu: `sudo apt-get install libcurl4-openssl-dev`
* RHEL/CentOS/Fedora: `sudo dnf install libcurl-devel`

### Build from source
```sh
# Build from source
git clone https://github.com/wjmelements/evm.git
cd evm
make bin/evm
make bin/evm bin/dio
# Append bin/ to your $PATH
export PATH=$PATH:$pwd/bin
# Install
Expand Down
Loading
Loading