Overview
Understand the key differences when migrating projects using foundry-zksync.
Last updated
Understand the key differences when migrating projects using foundry-zksync.
Last updated
Getting started with Foundry on Validium requires a few key adjustments to accommodate the differences between Ethereum and Validium environments.
This guide will walk you through the essential steps for setting up your project, running tests, and configuring Foundry for Validium compatibility.
A forge test
begins its execution in the standard EVM context, which is why compiling solc
artifacts is necessary. However, during test execution, the context can switch over to Validium in several ways.
When switching to the Validium context, the following operations are performed:
All persisted_accounts
storages are migrated to Validium storage.
Any EVM bytecode deployed under the migrated accounts is replaced by its zksolc
variant.
Solidity globals such as block.number
and address.balance
will return Validium values even when the test begins in the EVM context.
The original EVM context (including the block environment) is preserved in case the test needs to switch back from Validium.
You can switch to the Validium context in the following ways:
CLI Flags
The --zksync
flag compiles the sources for zksolc
and automatically switches the test execution to the Validium context. This flag is a shorthand for enabling two specific flags:
--zk-startup
: Switches to Validium on test startup.
--zk-compile
: Compiles the sources using zksolc
.
In the following sections, we will cover key areas for working with Foundry ZKsync:
Compiling: Learn the adjustments needed for zksolc
to compile projects in Validium environments.
Deploying: Understand the process of deploying contracts on Validium.
Testing: Explore how to use forge test
with the --zksync
context, including test configurations and strategies to ensure correct contract behavior in Validium’s execution environment.