在本地运行Arbitrum需要准备下列事项:
- 本地运行的以太坊链(L1)
- L1上部署的一系列Arbitrum合约
- Arbitrum链(L2)
- L1与L2间的交互这,也即Arbitrum验证者
先构建一个包含Arbitrum合约(eth-bridge
)的本地Geth的docker image,请运行:
yarn docker:build:geth
启动本地Geth:
yarn docker:geth
注意,停止、重启客户端都会丧失所有区块链状态。现在你应该能看到终端中出现的各种Geth信息更新。Geth运行在localhost:7545上。
为通过上面配置的Arbitrum geth docker image来启动一条本地rollup链并附带一个或多个验证者,打开第二个终端窗口,在Arbitrum目录中执行:
yarn demo:initialize [--validatorcount N=1]
若Geth没有启动或Hardhat部署的桥合约有问题,该指令会报错。具体讲,报错bridge_eth_addresses.json
会确实,L2无法与L1上的桥进行通信。执行demo:initialize
会在配置一条本地的L2 rollup链 —— 在/rollups/local/
中有关于demo:initialize
的更多信息。另外,该目录还包含了些为验证者预定义的钱包。这一套可以作为多个验证者在多台机器上的轻度模拟。
执行yarn demo:deploy
。
与区块链docker image不同的是,验证者可以随意停止并重启,不会丢失任何状态。此时,你会看到Geth在第一个终端中,第二个终端则有arbitrum_arb-validator1_1
和arbitrum_arb-node_1
。你还可以观察L1 L2以及验证者之间的交互以及一系列预定义的交易。