-
[x] Stage 1: zkGo
- [x] Dry-run zkWASM
- [x] Softfloat support issue (Frank/Qi) (link)
- [x] No bulk memory such as memory.copy, memory.fill (Frank) link
- [x] Set default impl of wasip1 (noop or template) (Po) link
- [ ]
static link with wasm-ld
- [x] or zkWASM with wasip1 default support (need to discuss with Sinka)
- [x] Other zkWASM no support instructions?
- [ ]
Add env.wasm_exit support in zkWASM (sinka)
- [x] Add clean exit in zkGo
- [ ] zkWASM hostio support (Po)
- [x] Stage 1 Publication Preparation
- [x] Article
- [x] Better code organization
- [x] Toolchain for zkWASM go compilation
- [x] zkWASM node simulator
- [x] zkWASM adapter
- [x] Replace floating point opcode to softfloat?
- [x] Or even better, remove them?
- [x] Memory size issue: solved by removing cache in client (and be completed moved to server)
- [ ] Reduce memory to 39MB (or no GC 47MB) from ~300MB
- [x] External Oracle support in WASM (with WASI?) (Qi)
- [x]
tiny-go compiled wasm with target=zkwasm
- [x] zkWASM emulator with provable state/trace
-
[x] zkWASM optimization (Oct 11 ZK Fraud Proof Meeting)
- [ ] DUP
Compact overhead due to wasm generated from goroutine (large etable before zkMain())
- [x] Indicator eid continuation problem
- [x] Parallel dump segments
- [x] DUP(Segment memory dump): Large Memory Occupation: find ot invent an alternative of std::vec to avoid OOM
-
[ ] Explore Arb rust interpreter
-
[x] op-program compilation with WASM target [yanlong / po)
-
[x] Golang host communication In WASM (WASI)
-
[x] [zkwASM training (Q1)
-
[x] WASH emulator used in Arb
- Arbitrum now uses a customized emulator as they use customized WAWM
-
[x] mini-program (like Fib) with host func to input and be verified on zkWASM
- [x] A program with target=wasm-freestanding is here with libc support (memory)
- [ ]
A program with simple scheduler support (Frank) or with fmt.Println()?
- [x] A program to reuse
wasm_input
to read public/private inputs for preimage get with integrity check link
-
[ ] Find a WASM emulator to replay block transition
-
[ ] Explore tiny-go compiled wasm interpreter with go runtime with geth compiled op-program
- [ ] Implement a fully-functional interpreter on existing go implementation (e.g., https://github.com/mattn/gowasmer/blob/matn/gowasmer.go)
- [ ] Implement an interpreter with hostio (POSIX style)
- [ ] Replay a simple program with I0 (read/write/open/close with similar IO size as op-program) compiled with geth
-
[ ] Explore tiny-go compiled op-program
- [x] Issue of compilatlon e.g., missing crypto library in tiny-go (or more libraries)? (code)
- [x] Any issue of zkWASM running tiny-go compiled code, e.g., all syscalls/hostio to virtual functions? A: Expose 3-5 external functions
- [ ] Need to confirm the time and efforts with sinka on compilation and zkWASM support (Qi)
- [ ] Replay the tiny-go compiled op-program in any emulator (emulator can be node+wasm_exec.js, target=wasm/wasi)
- [ ] Replay op-program native binary
- [ ] Check memory size usage
- [ ] Check # instructions using Cannon example command line
- [ ] Replace hint/preimage IO with external functions (Qi)