1 release (0 unstable)

new 26.1.0-non-semver-compat Jan 22, 2025

#254 in Magic Beans

MIT/Apache

605KB
14K SLoC

ZKsync Era VM Interfaces

This crate declares interfaces used by all version of the ZKsync Era VM.

See also


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