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

Download history 144/week @ 2025-01-21

144 downloads per month

MIT/Apache

615KB
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–46MB
~683K SLoC