2 releases (0 unstable)
new 26.2.1-non-semver-compat | Jan 29, 2025 |
---|---|
26.1.0-non-semver-compat | Jan 22, 2025 |
#670 in Magic Beans
144 downloads per month
615KB
14K
SLoC
ZKsync Era VM Interfaces
This crate declares interfaces used by all version of the ZKsync Era VM.
See also
zksync_multivm
: crate with ZKsync Era VM implementations.zksync_state
: crate with VM state implementations.
lib.rs
:
ZKsync Era VM interfaces.
Developer guidelines
Which types should be put in this crate and which ones in zksync_multivm
or other downstream crates?
- This crate should contain logic not tied to a particular VM version; in contrast, most logic in
zksync_multivm
is version-specific. - This crate should not have heavyweight dependencies (like VM implementations). Anything heavier than
serde
is discouraged. In contrast,zksync_multivm
depends on old VM versions. - If a type belongs in this crate, still be thorough about its methods. VM implementation details belong to
zksync_multivm
and should be implemented as functions / extension traits there, rather than as methods here.
Which types should be put in this crate vs zksync_types
?
- In this case, we want to separate types by domain. If a certain type clearly belongs to the VM domain
(e.g., can only be produced by VM execution), it probably belongs here. In contrast, if a type is more general / fundamental,
it may belong to
zksync_types
.
Dependencies
~31–46MB
~683K SLoC