One of the interesting things is that zkEVM takes YUL as input and uses LLVM to generate the bytecode of the circuit. This means few things: 👇
First of all, the @zksync team didn't have to reimplement the whole solc but rather write only the LLVM backend. While this for sure is still not a trivial task, it makes bug surface smaller and toolchain audits easier.
Smart contracts written in other languages like Vyper or YUL+ can be ported to zkEVM too.
Smart contracts written in old solidity versions will have to be porter to a compiler that supports YUL. On the other hand compatibility with new solidity releases is free (as long as YUL spec doesn't change).
After all, I think it strikes a pretty good compromise and provides a good enough compatibility layer with existing tools. Porting already existing smart contracts should be painless as long as there is a source code available.
• • •
Missing some Tweet in this thread? You can try to
force a refresh
👉Incremental generation and typed getContractFactory (!) with @HardhatHQ
👉No more index signature for @ethersproject - catches more mistakes early
👉By default doesn't generate overloads when not needed - less clutter
I also couldn't help myself from adding a readme section with current users of TypeChain. All these awesome companies/protocols (and many others!) use TC: @MakerDAO (duh), @Uniswap, @AaveAave, @optimismPBC, and @zksync.