使用Kurtosis快速验证Polygon CDK新版本
前置介绍
官方部署:https://docs.polygon.technology/cdk/getting-started/local-deployment/
Polygon CDK Kurtosis 包允许您轻松自定义和实例化 CDK 链的所有组件。它使用Kurtosis工具来协调 Docker 容器中链组件的设置,并使用Starlark脚本(一种 Python 方言)中定义的逻辑来定义设置链的分步过程。
Polygon CDK Kurtosis Package
https://github.com/0xPolygon/kurtosis-cdk
通过kurtosis{用于打包和启动临时后端堆栈的平台},通过Docker和k8s 部署私有、可移植、模块化的Polygon CDK开发网络
软件包将部署:
- 本地 L1 链,使用ethereum-package ,完全可定制并支持多客户端。
- 本地 L2 链,使用Polygon Chain 开发套件(CDK),具有可定制的组件,例如序列器、序列发送器、聚合器、rpc、证明器、dac 等。它将首先在 L1 链上部署Polygon zkEVM 智能合约,然后再部署不同的组件。
- zkEVM桥接基础设施,促进 L1 和 L2 链之间的资产桥接,反之亦然。
- Agglayer是一种正在开发中的互操作性协议,它允许进行无需信任的跨链代币传输和消息传递,以及 L2 链之间的更复杂操作,并由 zk 证明保护。
- 附加服务,如交易垃圾邮件发送者、监控工具、无需权限的节点等。
模块版本对应关系
Fork ID | CDK Erigon | ZkEVM Prover | ZkEVM Contracts | Data Availability | Bridge |
---|---|---|---|---|---|
13 | v2.60.0-beta4 | v9.0.0-RC1-fork.13 | v8.1.0-rc.1-fork.13 | 0.0.10 | v0.6.0-RC1 |
12 | v2.1.2 | v8.0.0-RC14-fork.12 | v8.0.0-rc.4-fork.12 | 0.0.10 | v0.6.0-RC1 |
11 | v2.1.2 | v7.0.4-fork.11 | v7.0.0-rc.2-fork.11 | 0.0.10 | v0.6.0-RC1 |
9 | v2.1.2 | v6.0.8 | v6.0.0-rc.1-fork.9 | 0.0.10 | v0.6.0-RC1 |
当前测试时,默认测试 fork12
部署测试
Kurtosis部署
环境准备
- Docker
echo "deb [trusted=yes] https://apt.fury.io/kurtosis-tech/ /" | sudo tee /etc/apt/sources.list.d/kurtosis.list sudo apt update sudo apt install kurtosis-cli
- jq
- yq (v3)
curl -L https://foundry.paradigm.xyz | bash source ~/.bashrc foundryup
git clone https://github.com/0xPolygon/polygon-cli.git make install export PATH="$HOME/go/bin:$PATH"
部署
git clone https://github.com/0xPolygon/kurtosis-cdk.git
sudo su
kurtosis clean --all
ulimit -n 1000000
kurtosis run --enclave cdk .
默认部署包括cdk-erigon作为序列器,以及cdk-node作为序列发送器和聚合器。您可以通过查看 input_parser.star 来验证这些组件的默认版本和默认 fork ID。您可以通过查看input_parser.star来检查已部署组件的默认版本和默认 fork ID
当前cdk-erigon为v2.1.2版本,对应fork ID 12
查看网络布局
kurtosis enclave inspect cdk
L2 RPC 测试调用
export ETH_RPC_URL="$(kurtosis port print cdk cdk-erigon-rpc-001 rpc)"
cast block-number
默认情况下,CDK 处于test
模式配置,这意味着地址为 的管理员账户中有一些预先存入的价值
cast balance --ether 0xE34aaF64b29273B7D567FCFc40544c014EEe9970
测试交易
private_key="0x12d7de8621a77640c9241b2595ba78ce443d05e94090365ab3bb5e19df82c625"
cast send --legacy --private-key "$private_key" --value 0.01ether 0x0000000000000000000000000000000000000000
blockHash 0xec514afabfa829f1b4e9339fd72e31fb2a1888a18046fe21743fe38b55bd24c3
blockNumber 45
contractAddress
cumulativeGasUsed 21000
effectiveGasPrice 1000000000
from 0xE34aaF64b29273B7D567FCFc40544c014EEe9970
gasUsed 21000
logs []
logsBloom 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
root
status 1 (success)
transactionHash 0xa58b3383c1b1f53369723fdc537c88daa03585cb6a89aa49ebd493953d519fdf
transactionIndex 0
type 0
blobGasPrice
blobGasUsed
authorizationList
to 0x0000000000000000000000000000000000000000
批量交易,需要安装polygon-cli
polycli loadtest --rpc-url "$ETH_RPC_URL" --legacy --private-key "$private_key" --verbosity 700 --requests 50000 --rate-limit 50 --concurrency 5 --mode t
polycli loadtest --rpc-url "$ETH_RPC_URL" --legacy --private-key "$private_key" --verbosity 700 --requests 500 --rate-limit 10 --mode 2
polycli loadtest --rpc-url "$ETH_RPC_URL" --legacy --private-key "$private_key" --verbosity 700 --requests 500 --rate-limit 3 --mode uniswapv3
获取输出日志
kurtosis service logs cdk agglayer --follow
排查错误
kurtosis service shell cdk contracts-001
jq . /opt/zkevm/combined.json
检查系统状态
cast rpc zkevm_batchNumber
cast rpc zkevm_virtualBatchNumber
cast rpc zkevm_verifiedBatchNumber
如果验证批次的数量不断增加,则表明系统运行正常
访问zkevm-bridge
用户界面
open "$(kurtosis port print cdk zkevm-bridge-proxy-001 web-ui)"
查看cdk-erigon-rpc-001
日志
kurtosis service logs cdk cdk-erigon-rpc-001 --follow
停止本地开发网络并将其删除
kurtosis clean --all