1 release (0 unstable)
new 26.1.0-non-semver-compat | Jan 22, 2025 |
---|
#254 in Magic Beans
605KB
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–47MB
~690K SLoC