Multichain Automaton is a sophisticated deployment and verification script designed to streamline the deployment of stETH/wstETH custom token bridge following reference architecture solutions on OP Stack-compatible networks for example OP Mainnet, Base, Zircuit, and Mode. It utilizes recommended initialization parameters and automates the verification of deployment artifacts.
Multichain Automaton serves a single purpose: to facilitate the fastest possible wstETH/stETH deployments on OP Stack-compatible networks using the reference architecture without compromising security and transparency. This might position you more favorably for potential recognition of the token by the Lido DAO.
The script performs the following steps:
- Forked network deployment: Runs the deployment on a forked environment.
- Artifact verification: Verifies the state of the resulting deployment artifacts.
- Live network deployment: Executes the deployment on the live environment.
- Real artifact verification: Verifies the state of the real deployment artifacts.
- Code verification: Checks the bytecode and source code for consistency.
- Storage and getter verification: Verifies storage values and public getter results.
- E2E testing: Performs comprehensive tests to ensure functionality.
Navigate to the root folder of the project and run:
bash initialize.sh
This command installs all necessary dependencies for the automaton and its submodules, and compiles the contracts.
- deployer must have ETH on both networks.
- config setup with EM brakes.
Create config file using existing one for unichain (./configs/unichain_sepolia.yaml
) as an example.
Before running the script, set up your environment variables by copying .env.example
and fill it with your data:
cp .env.example .env
Execute the script with your configuration file:
yarn start ./path/to/config.yaml
Note: During execution, you will be prompted to confirm certain steps in the deployment process. The entire process typically takes around 15 minutes, depending on network conditions and RPC response times.
To create the image use this command with linux/amd64
architecture:
docker buildx build --platform linux/amd64 -t <build_name> .
Provide .env file and path to config to run it:
docker run --env-file .env --rm \
-v $(pwd)/configs:/app/configs \
-v $(pwd)/artifacts:/app/artifacts \
<build_name> ./path/to/config.yaml
Or you can pull and run the Docker image that builds each time a tagged branch is pushed.
docker run -t --env-file .env --rm \
-v $(pwd)/configs:/app/configs \
-v $(pwd)/artifacts:/app/artifacts \
ghcr.io/lidofinance/automaton:<tag_name> ./path/to/config.yaml
main.log
- Main script execution logs
deployment_fork_result.json
- Deployment results for forked networksl1_fork_deployment_node.log
- L1 network fork deployment node logsl2_fork_deployment_node.log
- L2 network fork deployment node logsl1_fork_deployment_args.json
- L1 forked network deployment argumentsl2_fork_deployment_args.json
- L2 forked network deployment argumentsl2_fork_gov_executor_deployment_args.json
- L2 forked network gov executor deployment arguments
deployment_live_result.json
- Deployment results for live networksl1_live_deployment_node.log
- L1 network after live deployment node logsl2_live_deployment_node.log
- L2 network after live deployment node logsl1_live_deployment_args.json
- L1 live network deployment argumentsl2_live_deployment_args.json
- L2 live network deployment argumentsl2_live_gov_executor_deployment_args.json
- L2 live network gov executor deployment arguments
Contributions are appreciated! Please read the Contributing Guidelines to get started.
This project is licensed under the MIT License.
For any questions or feedback, please open an issue on the GitHub repository.