Minion-L2 is a tool to deploy a Layer 2 system over an Ethereum Proof of Stake network.
In order to deploy a Layer 2 system, Minion-L2 starts by deploying a Ethereum Proof of Stake network. The tool deploys one L1 node per given hosts. Such nodes are made of a Geth execution client and a Lighthouse consensus client (beacon and validator nodes). Each nodes has the same amount of validators. The execution clients are peers of each other using enodes. The consensus clients are peers of each other using enr throught a Lighthouse bootnode.
Please refer to the usage section to see what are the customizable parameters for the L1 network.
- Optimism: Minion-L2 deploys one OP node per L1 node. The deployment was based on this tutorial, but with some corrections, modifications and improvements. The OP nodes are made of an OP-Geth execution engine and an Optimism rollup node. The first given host will be running the unique sequencer, as well as the unique batcher (
op-batcher
) and proposer (op-proposer
). The execution clients are not peers of each other. The rollup nodes are peers of each other using libp2p. - Arbitrum: It was planned to be the next release, but due to a lack of time, it will not be. Feel free to implement it and open a PR; I would greatly appreciate it!
Please refer to the usage section to see what are the customizable parameters for each L2 network.
No installation is required. Just run the script minion-L2.sh
.
To see the available options, run the command:
./minion-L2.sh --help
You may want to customize the L1 network. You can check the marked customizable parameters in the file ./eth-pos/constants.sh. Also, you can modify the initial genesis file, but DO NOT MODIFY the config
section, and DO NOT REMOVE the already existing allocated addresses/smart contracts in the alloc
section.
You may want to customize the L2 network. You can check the marked customizable parameters in the file ./L2/<network>/constants.sh
.
You can have a look directly in the generate-configuration.sh
scripts for each network and modify the code to fit your needs. Furthermore, you can adjust the way the executables are launched (flags, options, etc...) in the <network>.sh
scripts for each network.