diff --git a/.github/workflows/eventindexer.yml b/.github/workflows/eventindexer.yml
index 778faa42143..6158d07fdb2 100644
--- a/.github/workflows/eventindexer.yml
+++ b/.github/workflows/eventindexer.yml
@@ -55,7 +55,7 @@ jobs:
run: go test `go list ./... | grep -v ./contracts | grep -v ./mock | grep -v ./cmd` -coverprofile=coverage.txt -covermode=atomic
- name: eventindexer - Upload coverage to Codecov
- uses: codecov/codecov-action@v4
+ uses: codecov/codecov-action@v5
with:
files: ./packages/eventindexer/coverage.txt
flags: eventindexer
diff --git a/.github/workflows/guardian-prover-health-check.yml b/.github/workflows/guardian-prover-health-check.yml
index ff6b6f45ba9..7bd6a886357 100644
--- a/.github/workflows/guardian-prover-health-check.yml
+++ b/.github/workflows/guardian-prover-health-check.yml
@@ -51,7 +51,7 @@ jobs:
run: go test `go list ./... | grep -v ./contracts | grep -v ./mock | grep -v ./cmd` -coverprofile=coverage.txt -covermode=atomic
- name: guardian-prover-health-check - Upload coverage to Codecov
- uses: codecov/codecov-action@v4
+ uses: codecov/codecov-action@v5
with:
files: ./packages/guardian-prover-health-check/coverage.txt
flags: guardian-prover-health-check
diff --git a/.github/workflows/protocol-monitors.yml b/.github/workflows/protocol-monitors.yml
index ad640962afe..00c96440f94 100644
--- a/.github/workflows/protocol-monitors.yml
+++ b/.github/workflows/protocol-monitors.yml
@@ -5,6 +5,7 @@ on:
types: [opened, synchronize, reopened, ready_for_review]
paths:
- "packages/monitors/**"
+ - "!packages/monitors/**/*.md"
branches-ignore:
- release-please--branches--**
diff --git a/.github/workflows/relayer.yml b/.github/workflows/relayer.yml
index 81238a9a8c1..9c0fe4d683a 100644
--- a/.github/workflows/relayer.yml
+++ b/.github/workflows/relayer.yml
@@ -55,7 +55,7 @@ jobs:
run: go test `go list ./... | grep -v ./contracts | grep -v ./mock | grep -v ./cmd` -coverprofile=coverage.txt -covermode=atomic
- name: relayer - Upload coverage to Codecov
- uses: codecov/codecov-action@v4
+ uses: codecov/codecov-action@v5
with:
files: ./packages/relayer/coverage.txt
flags: relayer
diff --git a/.github/workflows/repo--check-links.yml b/.github/workflows/repo--check-links.yml
new file mode 100644
index 00000000000..44be99f6d9a
--- /dev/null
+++ b/.github/workflows/repo--check-links.yml
@@ -0,0 +1,20 @@
+name: Check links
+
+on:
+ push:
+ paths:
+ - "**/README.md"
+ - docs/**
+
+jobs:
+ check-links:
+ runs-on: ubuntu-latest
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Check links
+ uses: lycheeverse/lychee-action@v2
+ with:
+ args: --no-progress --verbose "**/README.md"
diff --git a/.github/workflows/taiko-client--test.yml b/.github/workflows/taiko-client--test.yml
index 0df43a2b887..f83ff6ed172 100644
--- a/.github/workflows/taiko-client--test.yml
+++ b/.github/workflows/taiko-client--test.yml
@@ -7,6 +7,7 @@ on:
- "packages/taiko-client/**"
- "go.mod"
- "go.sum"
+ - "!**/*.md"
branches-ignore:
- release-please--branches--**
@@ -68,6 +69,6 @@ jobs:
run: make test
- name: Codecov.io
- uses: codecov/codecov-action@v4
+ uses: codecov/codecov-action@v5
with:
files: packages/taiko-client/coverage.out
diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index 462e52e6c57..f175c355e98 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,15 +1,15 @@
{
- "packages/bridge-ui": "2.12.0",
- "packages/docs-site": "1.20.3",
+ "packages/bridge-ui": "2.13.0",
+ "packages/docs-site": "1.21.0",
"packages/eventindexer": "0.13.0",
"packages/fork-diff": "0.6.1",
"packages/guardian-prover-health-check": "0.1.0",
"packages/guardian-prover-health-check-ui": "0.2.0",
- "packages/protocol": "1.10.0",
+ "packages/protocol": "1.11.0",
"packages/relayer": "0.12.0",
"packages/snaefell-ui": "1.1.0",
"packages/supplementary-contracts": "1.0.0",
- "packages/taiko-client": "0.39.2",
+ "packages/taiko-client": "0.40.0",
"packages/taikoon-ui": "1.3.0",
"packages/ui-lib": "1.0.0"
}
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 00000000000..876c140821d
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2023–present Taiko Labs
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/LICENSE.md b/LICENSE.md
deleted file mode 100644
index 8ccef57ef1d..00000000000
--- a/LICENSE.md
+++ /dev/null
@@ -1,9 +0,0 @@
-MIT License
-
-Copyright 2023 Taiko Labs
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/README.md b/README.md
index 22b5ba5f8c8..8ba1fea61f9 100644
--- a/README.md
+++ b/README.md
@@ -3,11 +3,11 @@
- Taiko
+ Taiko Alethia
- A based rollup.
+ The first based rollup.
@@ -17,38 +17,43 @@
[![YouTube](https://img.shields.io/youtube/channel/subscribers/UCxd_ARE9LtAEdnRQA6g1TaQ)](https://www.youtube.com/@taikoxyz)
[![GitPOAP Badge](https://public-api.gitpoap.io/v1/repo/taikoxyz/taiko-mono/badge)](https://www.gitpoap.io/gh/taikoxyz/taiko-mono)
-[![License](https://img.shields.io/github/license/taikoxyz/taiko-mono)](https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE.md)
+[![License](https://img.shields.io/github/license/taikoxyz/taiko-mono)](https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE)
## Documentation
-Get started with Taiko:
+Get started with Taiko Alethia:
-- [Taiko docs](https://docs.taiko.xyz) — High-level concepts, guides, resources, and reference pages for getting started.
-- [Protocol specs](./packages/protocol/docs/README.md) — In-depth specifications of the Taiko protocol for deeper understanding.
-- [Smart contracts](./packages/protocol/contracts/) — Taiko protocol smart contracts, fully documented with NatSpec.
+- [Taiko Alethia docs](https://docs.taiko.xyz) — High-level concepts, guides, resources, and reference pages for getting started.
+- [Protocol specs](./packages/protocol/docs/README.md) — In-depth specifications of the Taiko Alethia protocol for deeper understanding.
+- [Smart contracts](./packages/protocol/contracts/) — Taiko Alethia protocol smart contracts, fully documented with NatSpec.
## Packages
> [!TIP]
-> Make sure your node is using the latest version tags for taiko-client and taiko-geth. Check out the [node releases page](https://docs.taiko.xyz/network-reference/node-releases)!
-
-| Package | Description | Release notes |
-| :---------------------------------------------------------------------------- | :------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| [bridge-ui](./packages/bridge-ui) | Bridge UI. | [![GitHub Release](https://img.shields.io/github/v/release/taikoxyz/taiko-mono?filter=bridge-ui*&label=)](https://github.com/taikoxyz/taiko-mono/blob/main/packages/bridge-ui/CHANGELOG.md) |
-| [docs-site](./packages/docs-site) | End user documentation site. | [![GitHub Release](https://img.shields.io/github/v/release/taikoxyz/taiko-mono?filter=docs-site*&label=)](https://github.com/taikoxyz/taiko-mono/blob/main/packages/docs-site/CHANGELOG.md) |
-| [eventindexer](./packages/eventindexer) | Event indexer. | [![GitHub Release](https://img.shields.io/github/v/release/taikoxyz/taiko-mono?filter=eventindexer*&label=)](https://github.com/taikoxyz/taiko-mono/blob/main/packages/eventindexer/CHANGELOG.md) |
-| [fork-diff](./packages/fork-diff) | Fork diff page. | [![GitHub Release](https://img.shields.io/github/v/release/taikoxyz/taiko-mono?filter=fork-diff*&label=)](https://github.com/taikoxyz/taiko-mono/blob/main/packages/fork-diff/CHANGELOG.md) |
-| [guardian-prover-health-check](./packages/guardian-prover-health-check) | Guardian prover health check service. | [![GitHub Release](https://img.shields.io/github/v/release/taikoxyz/taiko-mono?filter=guardian-prover-health-check*&label=)](https://github.com/taikoxyz/taiko-mono/blob/main/packages/guardian-prover-health-check/CHANGELOG.md) |
-| [guardian-prover-health-check-ui](./packages/guardian-prover-health-check-ui) | Guardian prover health check UI. | [![GitHub Release](https://img.shields.io/github/v/release/taikoxyz/taiko-mono?filter=guardian-prover-health-check-ui*&label=)](https://github.com/taikoxyz/taiko-mono/blob/main/packages/guardian-prover-health-check-ui/CHANGELOG.md) |
-| [protocol](./packages/protocol) | Taiko protocol smart contracts. | [![GitHub Release](https://img.shields.io/github/v/release/taikoxyz/taiko-mono?filter=protocol*&label=)](https://github.com/taikoxyz/taiko-mono/blob/main/packages/protocol/CHANGELOG.md) |
-| [relayer](./packages/relayer) | Bridge backend relayer. | [![GitHub Release](https://img.shields.io/github/v/release/taikoxyz/taiko-mono?filter=relayer*&label=)](https://github.com/taikoxyz/taiko-mono/blob/main/packages/relayer/CHANGELOG.md) |
-| [snaefell-ui](./packages/snaefell-ui) | Snaefell UI. | [![GitHub Release](https://img.shields.io/github/v/release/taikoxyz/taiko-mono?filter=snaefell-ui*&label=)](https://github.com/taikoxyz/taiko-mono/blob/main/packages/snaefell-ui/CHANGELOG.md) |
-| [supplementary-contracts](./packages/supplementary-contracts) | Supplementary contracts not part of the Taiko protocol. | [![GitHub Release](https://img.shields.io/github/v/release/taikoxyz/taiko-mono?filter=supplementary-contracts*&label=)](https://github.com/taikoxyz/taiko-mono/blob/main/packages/supplementary-contracts/CHANGELOG.md) |
-| [taiko-client](./packages/taiko-client) | Taiko client implementation in Go. | [![GitHub Release](https://img.shields.io/github/v/release/taikoxyz/taiko-mono?filter=taiko-client*&label=)](https://github.com/taikoxyz/taiko-mono/blob/main/packages/taiko-client/CHANGELOG.md) |
-| [taikoon-ui](./packages/taikoon-ui) | Taikoon UI. | [![GitHub Release](https://img.shields.io/github/v/release/taikoxyz/taiko-mono?filter=taikoon-ui*&label=)](https://github.com/taikoxyz/taiko-mono/blob/main/packages/taikoon-ui/CHANGELOG.md) |
-| [ui-lib](./packages/ui-lib) | UI library. | [![GitHub Release](https://img.shields.io/github/v/release/taikoxyz/taiko-mono?filter=ui-lib*&label=)](https://github.com/taikoxyz/taiko-mono/blob/main/packages/ui-lib/CHANGELOG.md) |
+> Make sure your node is using the latest version tags for taiko-client and taiko-geth. Check out the [node releases page](https://docs.taiko.xyz/network-reference/software-releases-and-deployments)!
+
+| Package | Description |
+| :---------------------------------------------------------------------------- | :----------------------------------------------------------------- |
+| [balance-monitor](./packages/balance-monitor) | Service that monitors Ethereum L1/L2 addresses and token balances. |
+| [blobstorage](./packages/blobstorage) | Service for storing and retrieving blob data. |
+| [bridge-ui](./packages/bridge-ui) | Bridge UI. |
+| [docs-site](./packages/docs-site) | End user documentation site. |
+| [eventindexer](./packages/eventindexer) | Event indexer. |
+| [fork-diff](./packages/fork-diff) | Fork diff page. |
+| [geth-rpc-gateway](./packages/geth-rpc-gateway) | RPC gateway for geth nodes. |
+| [guardian-prover-health-check](./packages/guardian-prover-health-check) | Guardian prover health check service. |
+| [guardian-prover-health-check-ui](./packages/guardian-prover-health-check-ui) | Guardian prover health check UI. |
+| [monitors](./packages/monitors) | Monitoring and alerting services. |
+| [nfts](./packages/nfts) | NFT-related smart contracts and utilities. |
+| [protocol](./packages/protocol) | Taiko Alethia protocol smart contracts. |
+| [relayer](./packages/relayer) | Bridge backend relayer. |
+| [snaefell-ui](./packages/snaefell-ui) | Snaefell UI. |
+| [supplementary-contracts](./packages/supplementary-contracts) | Supplementary contracts not part of the Taiko Alethia protocol. |
+| [taiko-client](./packages/taiko-client) | Taiko Alethia client implementation in Go. |
+| [taikoon-ui](./packages/taikoon-ui) | Taikoon UI. |
+| [ui-lib](./packages/ui-lib) | UI library. |
## Issues
diff --git a/go.mod b/go.mod
index 004715ea4d9..faec2b2c7fe 100644
--- a/go.mod
+++ b/go.mod
@@ -22,16 +22,16 @@ require (
github.com/joho/godotenv v1.5.1
github.com/labstack/echo-contrib v0.17.1
github.com/labstack/echo-jwt/v4 v4.3.0
- github.com/labstack/echo/v4 v4.13.2
+ github.com/labstack/echo/v4 v4.13.3
github.com/labstack/gommon v0.4.2
github.com/modern-go/reflect2 v1.0.2
github.com/morkid/paginate v1.1.8
github.com/patrickmn/go-cache v2.1.0+incompatible
github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5
github.com/pkg/errors v0.9.1
- github.com/pressly/goose/v3 v3.23.0
+ github.com/pressly/goose/v3 v3.24.0
github.com/prometheus/client_golang v1.20.5
- github.com/prysmaticlabs/prysm/v5 v5.1.2
+ github.com/prysmaticlabs/prysm/v5 v5.2.0
github.com/rabbitmq/amqp091-go v1.10.0
github.com/shopspring/decimal v1.4.0
github.com/stretchr/testify v1.10.0
@@ -208,7 +208,7 @@ require (
go.uber.org/multierr v1.11.0 // indirect
golang.org/x/crypto v0.31.0 // indirect
golang.org/x/mod v0.20.0 // indirect
- golang.org/x/net v0.32.0 // indirect
+ golang.org/x/net v0.33.0 // indirect
golang.org/x/oauth2 v0.21.0 // indirect
golang.org/x/sys v0.28.0 // indirect
golang.org/x/term v0.27.0 // indirect
diff --git a/go.sum b/go.sum
index c8241b11bdd..db0a403ab22 100644
--- a/go.sum
+++ b/go.sum
@@ -383,8 +383,8 @@ github.com/labstack/echo-jwt/v4 v4.3.0 h1:8JcvVCrK9dRkPx/aWY3ZempZLO336Bebh4oAtB
github.com/labstack/echo-jwt/v4 v4.3.0/go.mod h1:OlWm3wqfnq3Ma8DLmmH7GiEAz2S7Bj23im2iPMEAR+Q=
github.com/labstack/echo/v4 v4.0.0/go.mod h1:tZv7nai5buKSg5h/8E6zz4LsD/Dqh9/91Mvs7Z5Zyno=
github.com/labstack/echo/v4 v4.1.15/go.mod h1:GWO5IBVzI371K8XJe50CSvHjQCafK6cw8R/moLhEU6o=
-github.com/labstack/echo/v4 v4.13.2 h1:9aAt4hstpH54qIcqkuUXRLTf+v7yOTfMPWzDtuqLmtA=
-github.com/labstack/echo/v4 v4.13.2/go.mod h1:uc9gDtHB8UWt3FfbYx0HyxcCuvR4YuPYOxF/1QjoV/c=
+github.com/labstack/echo/v4 v4.13.3 h1:pwhpCPrTl5qry5HRdM5FwdXnhXSLSY+WE+YQSeCaafY=
+github.com/labstack/echo/v4 v4.13.3/go.mod h1:o90YNEeQWjDozo584l7AwhJMHN0bOC4tAfg+Xox9q5g=
github.com/labstack/gommon v0.2.8/go.mod h1:/tj9csK2iPSBvn+3NLM9e52usepMtrd5ilFYA+wQNJ4=
github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k=
github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0=
@@ -428,8 +428,8 @@ github.com/mfridman/interpolate v0.0.2/go.mod h1:p+7uk6oE07mpE/Ik1b8EckO0O4ZXiGA
github.com/microcosm-cc/bluemonday v1.0.4/go.mod h1:8iwZnFn2CDDNZ0r6UXhF4xawGvzaqzCRa1n3/lO3W2w=
github.com/microcosm-cc/bluemonday v1.0.26 h1:xbqSvqzQMeEHCqMi64VAs4d8uy6Mequs3rQ0k/Khz58=
github.com/microcosm-cc/bluemonday v1.0.26/go.mod h1:JyzOCs9gkyQyjs+6h10UEVSe02CGwkhd72Xdqh78TWs=
-github.com/microsoft/go-mssqldb v1.7.2 h1:CHkFJiObW7ItKTJfHo1QX7QBBD1iV+mn1eOyRP3b/PA=
-github.com/microsoft/go-mssqldb v1.7.2/go.mod h1:kOvZKUdrhhFQmxLZqbwUV0rHkNkZpthMITIb2Ko1IoA=
+github.com/microsoft/go-mssqldb v1.8.0 h1:7cyZ/AT7ycDsEoWPIXibd+aVKFtteUNhDGf3aobP+tw=
+github.com/microsoft/go-mssqldb v1.8.0/go.mod h1:6znkekS3T2vp0waiMhen4GPU1BiAsrP+iXHcE7a7rFo=
github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g=
github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY=
github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM=
@@ -514,8 +514,8 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw=
github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
-github.com/pressly/goose/v3 v3.23.0 h1:57hqKos8izGek4v6D5+OXBa+Y4Rq8MU//+MmnevdpVA=
-github.com/pressly/goose/v3 v3.23.0/go.mod h1:rpx+D9GX/+stXmzKa+uh1DkjPnNVMdiOCV9iLdle4N8=
+github.com/pressly/goose/v3 v3.24.0 h1:sFbNms7Bd++2VMq6HSgDHDLWa7kHz1qXzPb3ZIU72VU=
+github.com/pressly/goose/v3 v3.24.0/go.mod h1:rEWreU9uVtt0DHCyLzF9gRcWiiTF/V+528DV+4DORug=
github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y=
github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
@@ -533,8 +533,8 @@ github.com/prysmaticlabs/gohashtree v0.0.4-beta.0.20240624100937-73632381301b h1
github.com/prysmaticlabs/gohashtree v0.0.4-beta.0.20240624100937-73632381301b/go.mod h1:HRuvtXLZ4WkaB1MItToVH2e8ZwKwZPY5/Rcby+CvvLY=
github.com/prysmaticlabs/protoc-gen-go-cast v0.0.0-20230228205207-28762a7b9294 h1:q9wE0ZZRdTUAAeyFP/w0SwBEnCqlVy2+on6X2/e+eAU=
github.com/prysmaticlabs/protoc-gen-go-cast v0.0.0-20230228205207-28762a7b9294/go.mod h1:ZVEbRdnMkGhp/pu35zq4SXxtvUwWK0J1MATtekZpH2Y=
-github.com/prysmaticlabs/prysm/v5 v5.1.2 h1:ib9D7Drh7QPoetJPnYXAHaArmjIreXPZ0FboW9EMzT8=
-github.com/prysmaticlabs/prysm/v5 v5.1.2/go.mod h1:ykj3Bl9dHv35cC7fRw6Cd1aCd9l+eNvInHY6gsPbEig=
+github.com/prysmaticlabs/prysm/v5 v5.2.0 h1:JqKKK5aqehZN9GiSOSSw4M57NpbvG0nIxqFK5KpPnRw=
+github.com/prysmaticlabs/prysm/v5 v5.2.0/go.mod h1:cQc+NIMKaHjPvY566HsYcuni763nzuUWnDsDbk45bbs=
github.com/rabbitmq/amqp091-go v1.10.0 h1:STpn5XsHlHGcecLmMFCtg7mqq0RnD+zFr4uzukfVhBw=
github.com/rabbitmq/amqp091-go v1.10.0/go.mod h1:Hy4jKW5kQART1u+JkDTF9YYOQUHXqMuhrgxOEeS7G4o=
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
@@ -720,8 +720,8 @@ golang.org/x/net v0.0.0-20220906165146-f3363e06e74c/go.mod h1:YDH+HFinaLZZlnHAfS
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
-golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI=
-golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs=
+golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
+golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs=
golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
diff --git a/lychee.toml b/lychee.toml
new file mode 100644
index 00000000000..9ba6633e075
--- /dev/null
+++ b/lychee.toml
@@ -0,0 +1,2 @@
+exclude_path = ["node_modules"]
+exclude = ["etherscan.io"]
diff --git a/packages/bridge-ui/CHANGELOG.md b/packages/bridge-ui/CHANGELOG.md
index fb544b962ea..95b3a0b3280 100644
--- a/packages/bridge-ui/CHANGELOG.md
+++ b/packages/bridge-ui/CHANGELOG.md
@@ -1,5 +1,33 @@
# Changelog
+## [2.13.0](https://github.com/taikoxyz/taiko-mono/compare/bridge-ui-v2.12.0...bridge-ui-v2.13.0) (2024-12-17)
+
+
+### Features
+
+* **bridge-ui:** add curve ([#18549](https://github.com/taikoxyz/taiko-mono/issues/18549)) ([fd6feef](https://github.com/taikoxyz/taiko-mono/commit/fd6feef545c2432eea8e71c68dc3f3964fe65c17))
+* **bridge-ui:** add padding when claiming to smart contract ([#18141](https://github.com/taikoxyz/taiko-mono/issues/18141)) ([ce5d485](https://github.com/taikoxyz/taiko-mono/commit/ce5d4859a77631ec406ccb5d571efcd91e5fd2f8))
+* **bridge-ui:** more detailed transactions view ([#17899](https://github.com/taikoxyz/taiko-mono/issues/17899)) ([6fe7c44](https://github.com/taikoxyz/taiko-mono/commit/6fe7c447b7c9c13b5868c65c69a9ddfeb968901a))
+* **bridge-ui:** remove fee padding ([#18546](https://github.com/taikoxyz/taiko-mono/issues/18546)) ([3966bb1](https://github.com/taikoxyz/taiko-mono/commit/3966bb1cea358923284de74b81e3ce512b8291dd))
+
+
+### Bug Fixes
+
+* **bridge-ui:** balance visually not updating correctly when switching chains ([#17832](https://github.com/taikoxyz/taiko-mono/issues/17832)) ([f495e40](https://github.com/taikoxyz/taiko-mono/commit/f495e406633fc9349e8d3a125c463c0be1e15b66))
+* **bridge-ui:** increase pagesize ([#17886](https://github.com/taikoxyz/taiko-mono/issues/17886)) ([9e38a33](https://github.com/taikoxyz/taiko-mono/commit/9e38a33cd361dc6bd2e2e77a8017151eb08400f3))
+
+
+### Workflow
+
+* **protocol:** trigger patch release (1.10.1) ([#18358](https://github.com/taikoxyz/taiko-mono/issues/18358)) ([f4f4796](https://github.com/taikoxyz/taiko-mono/commit/f4f4796488059b02c79d6fb15170df58dd31dc4e))
+
+
+### Build
+
+* **deps-dev:** bump @sveltejs/kit from 2.5.7 to 2.5.21 ([#17901](https://github.com/taikoxyz/taiko-mono/issues/17901)) ([7a32ac4](https://github.com/taikoxyz/taiko-mono/commit/7a32ac40a654521c82cb3ff5b6f5af87d0a915a4))
+* **deps:** bump github.com/stretchr/testify from 1.9.0 to 1.10.0 ([#18539](https://github.com/taikoxyz/taiko-mono/issues/18539)) ([79f3fab](https://github.com/taikoxyz/taiko-mono/commit/79f3fab5f1d1ec1bb4ee18afb9268b622e894780))
+* **deps:** bump golang.org/x/sync from 0.9.0 to 0.10.0 ([#18560](https://github.com/taikoxyz/taiko-mono/issues/18560)) ([3d51970](https://github.com/taikoxyz/taiko-mono/commit/3d51970aa0953bbfecaeebf76ea7e664c875c0e4))
+
## [2.12.0](https://github.com/taikoxyz/taiko-mono/compare/bridge-ui-v2.11.0...bridge-ui-v2.12.0) (2024-07-18)
diff --git a/packages/bridge-ui/package.json b/packages/bridge-ui/package.json
index c44dfca11bd..601c5923d39 100644
--- a/packages/bridge-ui/package.json
+++ b/packages/bridge-ui/package.json
@@ -1,6 +1,6 @@
{
"name": "bridge-ui",
- "version": "2.12.0",
+ "version": "2.13.0",
"private": true,
"scripts": {
"dev": "vite dev",
diff --git a/packages/docs-site/CHANGELOG.md b/packages/docs-site/CHANGELOG.md
index e6d11b67417..d06f345cc23 100644
--- a/packages/docs-site/CHANGELOG.md
+++ b/packages/docs-site/CHANGELOG.md
@@ -1,5 +1,25 @@
# Changelog
+## [1.21.0](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.20.3...docs-site-v1.21.0) (2024-12-23)
+
+
+### Features
+
+* **docs-site:** add doc for SGX Verifier. ([#18579](https://github.com/taikoxyz/taiko-mono/issues/18579)) ([08b2c49](https://github.com/taikoxyz/taiko-mono/commit/08b2c49f19b25643b4570642d1612b15d5d71290))
+
+
+### Chores
+
+* **docs-site:** fix broken link ([#18585](https://github.com/taikoxyz/taiko-mono/issues/18585)) ([38bbb55](https://github.com/taikoxyz/taiko-mono/commit/38bbb55dc076a03751871dde5d61729282a68d9a))
+* **docs-site:** fix typos in node operator guides ([#18586](https://github.com/taikoxyz/taiko-mono/issues/18586)) ([b4bd23c](https://github.com/taikoxyz/taiko-mono/commit/b4bd23ca0798ab239730765a4ca1d8e49ef6e52e))
+* **docs-site:** update proof tier graphic ([#18617](https://github.com/taikoxyz/taiko-mono/issues/18617)) ([becffb7](https://github.com/taikoxyz/taiko-mono/commit/becffb7cc81c6f17436985a81750a5eef7f980e1))
+
+
+### Build
+
+* **deps:** bump github.com/stretchr/testify from 1.9.0 to 1.10.0 ([#18539](https://github.com/taikoxyz/taiko-mono/issues/18539)) ([79f3fab](https://github.com/taikoxyz/taiko-mono/commit/79f3fab5f1d1ec1bb4ee18afb9268b622e894780))
+* **deps:** bump golang.org/x/sync from 0.9.0 to 0.10.0 ([#18560](https://github.com/taikoxyz/taiko-mono/issues/18560)) ([3d51970](https://github.com/taikoxyz/taiko-mono/commit/3d51970aa0953bbfecaeebf76ea7e664c875c0e4))
+
## [1.20.3](https://github.com/taikoxyz/taiko-mono/compare/docs-site-v1.20.2...docs-site-v1.20.3) (2024-12-09)
diff --git a/packages/docs-site/astro.config.ts b/packages/docs-site/astro.config.ts
index 71087619c0d..0c4eeda19e7 100644
--- a/packages/docs-site/astro.config.ts
+++ b/packages/docs-site/astro.config.ts
@@ -92,6 +92,7 @@ export default defineConfig({
items: [
{label: "TaikoL1 Contract", link: "/taiko-protocol/codebase-analysis/taikol1-contract"},
{label: "TaikoL2 Contract", link: "/taiko-protocol/codebase-analysis/taikol2-contract"},
+ {label: "SGXVerifier Contract", link: "/taiko-protocol/codebase-analysis/sgxverifier-contract"},
],
},
{ label: "Block states", link: "/taiko-protocol/block-states" },
diff --git a/packages/docs-site/package.json b/packages/docs-site/package.json
index 1328c3be706..de59304b68e 100644
--- a/packages/docs-site/package.json
+++ b/packages/docs-site/package.json
@@ -1,7 +1,7 @@
{
"name": "docs-site",
"type": "module",
- "version": "1.20.3",
+ "version": "1.21.0",
"scripts": {
"dev": "astro dev",
"start": "astro dev",
diff --git a/packages/docs-site/src/assets/content/docs/network-reference/proof-tier-config-mn.webp b/packages/docs-site/src/assets/content/docs/network-reference/proof-tier-config-mn.webp
index 42b50901739..bedfb3c43b4 100644
Binary files a/packages/docs-site/src/assets/content/docs/network-reference/proof-tier-config-mn.webp and b/packages/docs-site/src/assets/content/docs/network-reference/proof-tier-config-mn.webp differ
diff --git a/packages/docs-site/src/content/docs/network-reference/mainnet-addresses.md b/packages/docs-site/src/content/docs/network-reference/mainnet-addresses.md
index 4e3bab65088..e98c0898edd 100644
--- a/packages/docs-site/src/content/docs/network-reference/mainnet-addresses.md
+++ b/packages/docs-site/src/content/docs/network-reference/mainnet-addresses.md
@@ -23,7 +23,7 @@ description: Network reference page describing various important addresses on Ta
| ------------------------------- | -------------------------------------------- | -------------------------- |
| TaikoL1 | `0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a` | based.taiko.eth |
| RollupAddressManager | `0x579f40D0BE111b823962043702cabe6Aaa290780` | ram.based.taiko.eth |
-| TierRouter | `0x394E30d83d020469a1F8b16E89D7fD5FdB1935b0` | N/A |
+| TierRouter | `0x8a4c692F12d3a9750E744A4CE24a1d351bE52E66` | N/A |
| GuardianProver | `0xE3D777143Ea25A6E031d1e921F396750885f43aC` | guardians.based.taiko.eth |
| GuardianProverMinority | `0x579A8d63a2Db646284CBFE31FE5082c9989E985c` | guardians1.based.taiko.eth |
| AssignmentHook | `0x537a2f0D3a5879b41BCb5A2afE2EA5c4961796F6` | N/A |
diff --git a/packages/docs-site/src/content/docs/network-reference/network-configuration.mdx b/packages/docs-site/src/content/docs/network-reference/network-configuration.mdx
index 7ea3687d077..e615b575524 100644
--- a/packages/docs-site/src/content/docs/network-reference/network-configuration.mdx
+++ b/packages/docs-site/src/content/docs/network-reference/network-configuration.mdx
@@ -26,7 +26,7 @@ You can find all the corresponding values below in the [deployed TierProviderBas
## Tier configuration (Mainnet)
-You can view the full `MainnetTierRouter` tier configuration [here](https://etherscan.io/address/0x394E30d83d020469a1F8b16E89D7fD5FdB1935b0#code):
+You can view the full `MainnetTierRouter` tier configuration [here](https://etherscan.io/address/0x8a4c692F12d3a9750E744A4CE24a1d351bE52E66#code):
![mainnet proof tiers](~/assets/content/docs/network-reference/proof-tier-config-mn.webp)
diff --git a/packages/docs-site/src/content/docs/network-reference/software-releases-and-deployments.md b/packages/docs-site/src/content/docs/network-reference/software-releases-and-deployments.md
index 336964cf320..f07a85dd624 100644
--- a/packages/docs-site/src/content/docs/network-reference/software-releases-and-deployments.md
+++ b/packages/docs-site/src/content/docs/network-reference/software-releases-and-deployments.md
@@ -1,9 +1,9 @@
---
-title: Software releases and Deployments
-description: Network reference page displaying the latest software versions.
+title: Software releases and deployments
+description: Reference page showing the latest Taiko software versions and deployments.
---
-## Software Releases
+## Software releases
It is **highly recommended** you use the latest software. You can find the latest versions here:
@@ -15,12 +15,12 @@ It is **highly recommended** you use the latest software. You can find the lates
| [simple-taiko-node](https://github.com/taikoxyz/simple-taiko-node/tree/main) | [![Github Release](https://img.shields.io/github/v/release/taikoxyz/simple-taiko-node?label=)](https://github.com/taikoxyz/simple-taiko-node/blob/main/CHANGELOG.md) |
| [raiko](https://github.com/taikoxyz/raiko/tree/main) | [![Github Release](https://img.shields.io/github/v/release/taikoxyz/raiko?label=)](https://github.com/taikoxyz/raiko/blob/main/CHANGELOG.md) |
-## Mainnet Deployment Logs
+## Mainnet deployment logs
You can find the contract addresses of the latest smart contract deployments of the Taiko Protocol on Ethereum [here](https://github.com/taikoxyz/taiko-mono/blob/main/packages/protocol/deployments/mainnet-contract-logs-L1.md).
You can find the smart contract addresses of L2 contracts for the Taiko Protocol on Mainnet [here](https://github.com/taikoxyz/taiko-mono/blob/main/packages/protocol/deployments/mainnet-contract-logs-L2.md).
-## Hekla Deployment Logs
+## Hekla deployment logs
You can find the all L1 and L2 contract addresses of the latest smart contract deployments of the Taiko Protocol [here](https://github.com/taikoxyz/taiko-mono/blob/main/packages/protocol/deployments/hekla-contract-logs.md).
diff --git a/packages/docs-site/src/content/docs/taiko-protocol/codebase-analysis/sgxverifier-contract.md b/packages/docs-site/src/content/docs/taiko-protocol/codebase-analysis/sgxverifier-contract.md
new file mode 100644
index 00000000000..3f9c832fb4d
--- /dev/null
+++ b/packages/docs-site/src/content/docs/taiko-protocol/codebase-analysis/sgxverifier-contract.md
@@ -0,0 +1,108 @@
+---
+title: SGXVerifier
+description: Taiko protocol page for "SGXVerifier.sol".
+---
+
+The `SGXVerifier` smart contract implements SGX (Software Guard Extensions) signature proof verification on-chain. This verification ensures integrity and security of rollup state transitions by validating SGX-generated signatures. It also enables management and tracking of SGX instances through registration and replacement.
+
+---
+
+## Core Purpose
+
+1. **Instance Registry**:
+
+- Each SGX instance is uniquely identified by its Ethereum address (derived from an ECDSA public-private key pair generated in the SGX enclave).
+- The registry ensures:
+ - Only valid instances are allowed.
+ - Instances are valid for a predefined duration (`INSTANCE_EXPIRY`).
+
+2. **Instance Lifecycle**:
+
+- **Addition**: SGX instances can be added via the `addInstances` function or the `registerInstance` method (following attestation verification).
+- **Replacement**: Old SGX instances can be replaced with new ones to maintain security.
+- **Deletion**: Instances can be removed using the `deleteInstances` function.
+
+---
+
+## Key Functions
+
+### `addInstances`
+
+- **Purpose**: Adds new SGX instances to the registry.
+- **Input**:
+ - `_instances`: Array of Ethereum addresses corresponding to the SGX instances.
+- **Output**: Returns an array of assigned instance IDs.
+- **Access Control**: Restricted to the owner.
+
+---
+
+### `deleteInstances`
+
+- **Purpose**: Removes SGX instances from the registry.
+- **Input**:
+ - `_ids`: Array of instance IDs to be removed.
+- **Access Control**: Restricted to the owner or the `SGX_WATCHDOG` role.
+
+---
+
+### `registerInstance`
+
+- **Purpose**: Registers an SGX instance by verifying its attestation off-chain and adding it to the registry.
+- **Input**:
+ - `_attestation`: Parsed attestation quote containing SGX enclave report details.
+- **Output**: Returns the assigned instance ID.
+- **Access Control**: Open to external calls.
+
+---
+
+### `verifyProof`
+
+- **Purpose**: Validates the SGX signature proof for a single block state transition.
+- **Input**:
+ - `_ctx`: Context of the proof.
+ - `_tran`: Transition data.
+ - `_proof`: SGX signature proof.
+- **Mechanism**:
+ - Validates the instance ID and signature.
+ - Ensures the SGX instance is valid and replaces it if needed.
+
+---
+
+### `verifyBatchProof`
+
+- **Purpose**: Validates SGX signature proofs for multiple block state transitions in a batch.
+- **Input**:
+ - `_ctxs`: Array of contexts for the batch.
+ - `_proof`: SGX batch signature proof.
+- **Mechanism**:
+ - Verifies the signature against public inputs for all blocks.
+ - Replaces the SGX instance if necessary.
+
+---
+
+## Key Events
+
+1. **`InstanceAdded`**:
+
+- Emitted when a new SGX instance is added or an old instance is replaced.
+- Parameters:
+ - `id`: ID of the SGX instance.
+ - `instance`: Address of the new SGX instance.
+ - `replaced`: Address of the replaced instance (if any).
+ - `validSince`: Timestamp indicating when the instance became valid.
+
+2. **`InstanceDeleted`**:
+
+- Emitted when an SGX instance is removed from the registry.
+- Parameters:
+ - `id`: ID of the SGX instance.
+ - `instance`: Address of the removed instance.
+
+---
+
+## Constants
+
+1. **`INSTANCE_EXPIRY`**: Duration (365 days) for which an SGX instance remains valid.
+2. **`INSTANCE_VALIDITY_DELAY`**: Delay before an SGX instance becomes valid after registration.
+
+---
diff --git a/packages/eventindexer/docs/docs.go b/packages/eventindexer/docs/docs.go
index 561b1402938..abed8494ff4 100644
--- a/packages/eventindexer/docs/docs.go
+++ b/packages/eventindexer/docs/docs.go
@@ -17,7 +17,7 @@ const docTemplate = `{
},
"license": {
"name": "MIT",
- "url": "https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE.md"
+ "url": "https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE"
},
"version": "{{.Version}}"
},
diff --git a/packages/eventindexer/docs/swagger.json b/packages/eventindexer/docs/swagger.json
index aec099185a7..4f663dda8c8 100644
--- a/packages/eventindexer/docs/swagger.json
+++ b/packages/eventindexer/docs/swagger.json
@@ -10,7 +10,7 @@
},
"license": {
"name": "MIT",
- "url": "https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE.md"
+ "url": "https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE"
},
"version": "1.0"
},
diff --git a/packages/eventindexer/docs/swagger.yaml b/packages/eventindexer/docs/swagger.yaml
index 434d1128ca0..14e7e96df6d 100644
--- a/packages/eventindexer/docs/swagger.yaml
+++ b/packages/eventindexer/docs/swagger.yaml
@@ -123,7 +123,7 @@ info:
url: https://community.taiko.xyz/
license:
name: MIT
- url: https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE.md
+ url: https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE
termsOfService: http://swagger.io/terms/
title: Taiko Event Indexer API
version: "1.0"
diff --git a/packages/eventindexer/pkg/http/server.go b/packages/eventindexer/pkg/http/server.go
index 4626bf590d4..707f3a8075d 100644
--- a/packages/eventindexer/pkg/http/server.go
+++ b/packages/eventindexer/pkg/http/server.go
@@ -23,7 +23,7 @@ import (
// @contact.email info@taiko.xyz
// @license.name MIT
-// @license.url https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE.md
+// @license.url https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE
// @host eventindexer.hekla.taiko.xyz
// Server represents an eventindexer http server instance.
diff --git a/packages/monitors/README.md b/packages/monitors/README.md
new file mode 100644
index 00000000000..43f6628df45
--- /dev/null
+++ b/packages/monitors/README.md
@@ -0,0 +1,3 @@
+# Monitors
+
+This package contains monitoring and alerting services for the Taiko protocol. It uses OpenZeppelin Defender for monitoring smart contracts and setting up automated alerts.
diff --git a/packages/protocol/CHANGELOG.md b/packages/protocol/CHANGELOG.md
index d1b9a102079..1e9434fed09 100644
--- a/packages/protocol/CHANGELOG.md
+++ b/packages/protocol/CHANGELOG.md
@@ -1,5 +1,81 @@
# Changelog
+## [1.11.0](https://github.com/taikoxyz/taiko-mono/compare/protocol-v1.10.0...protocol-v1.11.0) (2024-12-24)
+
+
+### Features
+
+* **protocol:** add `lastProposedIn` to slotB ([#18379](https://github.com/taikoxyz/taiko-mono/issues/18379)) ([96b380a](https://github.com/taikoxyz/taiko-mono/commit/96b380a452f1055da960146b4bf1e94c1842da73))
+* **protocol:** adjust the zk ratio(risc0 & sp1) ([#18613](https://github.com/taikoxyz/taiko-mono/issues/18613)) ([431435e](https://github.com/taikoxyz/taiko-mono/commit/431435e6e74799caea94f53438238c63831cf07c))
+* **protocol:** allow `local.params.parentMetaHash` to remain as 0 ([#18451](https://github.com/taikoxyz/taiko-mono/issues/18451)) ([94185fe](https://github.com/taikoxyz/taiko-mono/commit/94185feb207b9a2e74fb05a4898d25ce2008f826))
+* **protocol:** allow any ERC20 tokens or Ether to be used as bonds ([#18380](https://github.com/taikoxyz/taiko-mono/issues/18380)) ([1920521](https://github.com/taikoxyz/taiko-mono/commit/1920521a2478d1e31745742f1ddbb296cdd98f6f))
+* **protocol:** change HeklaTaikoToken's clock mode to timestamp to test the DAO ([#18597](https://github.com/taikoxyz/taiko-mono/issues/18597)) ([ccc9500](https://github.com/taikoxyz/taiko-mono/commit/ccc9500d861d5cc666f038ddb8ceed00a353ee94))
+* **protocol:** decrease the rate of risc0 in Hekla ([#18553](https://github.com/taikoxyz/taiko-mono/issues/18553)) ([57d20db](https://github.com/taikoxyz/taiko-mono/commit/57d20db59ffa23f7038ad80a4322634cc71251ea))
+* **protocol:** increase risc0 frequency in Hekla ([#18407](https://github.com/taikoxyz/taiko-mono/issues/18407)) ([350264c](https://github.com/taikoxyz/taiko-mono/commit/350264c98d6a96ea11d5b1cef684a81605d3826b))
+* **protocol:** increase zk(risc0 & sp1) rate in mainnet ([#18481](https://github.com/taikoxyz/taiko-mono/issues/18481)) ([f24a908](https://github.com/taikoxyz/taiko-mono/commit/f24a908e60c062ad789a34765de5a1037bdb1ff0))
+* **protocol:** introduce ForkManager to improve protocol fork management ([#18508](https://github.com/taikoxyz/taiko-mono/issues/18508)) ([ff5c196](https://github.com/taikoxyz/taiko-mono/commit/ff5c1964a303e21dfeb87f8f9c01fc82ef43a03e))
+* **protocol:** measure gas per block using a debug event ([#18470](https://github.com/taikoxyz/taiko-mono/issues/18470)) ([e84e472](https://github.com/taikoxyz/taiko-mono/commit/e84e472e4a0479301d5ce1d4268d964705dcbbd0))
+* **protocol:** propose a batch blocks conditionally ([#18570](https://github.com/taikoxyz/taiko-mono/issues/18570)) ([e846f62](https://github.com/taikoxyz/taiko-mono/commit/e846f6289fea0b046ddcfcdfaf46f3727efbdf11))
+* **protocol:** request zk proofs(risc0 & sp1) in mainnet ([#18467](https://github.com/taikoxyz/taiko-mono/issues/18467)) ([1fab427](https://github.com/taikoxyz/taiko-mono/commit/1fab427005708036c981f2b8fb47d9aa408e0d94))
+* **protocol:** tolerate invalid BaseFeeConfig on L2 ([#18338](https://github.com/taikoxyz/taiko-mono/issues/18338)) ([f9f5d15](https://github.com/taikoxyz/taiko-mono/commit/f9f5d156f9fef622d921f6e007ecb43ded0130ad))
+* **protocol:** update `B_TIER_ROUTER` in `RollupAddressCache` ([#18370](https://github.com/taikoxyz/taiko-mono/issues/18370)) ([9748ae5](https://github.com/taikoxyz/taiko-mono/commit/9748ae527a75124f8674bb66280b9161ce79d046))
+* **protocol:** update `RollupAddressCache` with new `MainnetTierRouter` address ([#18619](https://github.com/taikoxyz/taiko-mono/issues/18619)) ([b2ca63c](https://github.com/taikoxyz/taiko-mono/commit/b2ca63cd4ed7eca385c317d9a6ade794bf156c79))
+* **protocol:** update sp1 to 3.0.0 prod version ([#18465](https://github.com/taikoxyz/taiko-mono/issues/18465)) ([0b11101](https://github.com/taikoxyz/taiko-mono/commit/0b1110159201f94ff5a4df528eab60b306d4fb25))
+
+
+### Bug Fixes
+
+* **protocol:** fix debitBond bug and add additional tests ([#18443](https://github.com/taikoxyz/taiko-mono/issues/18443)) ([75ff1f8](https://github.com/taikoxyz/taiko-mono/commit/75ff1f87412c763e6ed3431d13689a629a2dd668))
+* **protocol:** revert `B_TIER_OPTIMISTIC` back to `""` ([#18446](https://github.com/taikoxyz/taiko-mono/issues/18446)) ([9549e7f](https://github.com/taikoxyz/taiko-mono/commit/9549e7f3e899b22ff8c9ff7d731aa3ce250fd071))
+
+
+### Chores
+
+* **main:** fix misspelled ([#18581](https://github.com/taikoxyz/taiko-mono/issues/18581)) ([3687c4e](https://github.com/taikoxyz/taiko-mono/commit/3687c4e060b4b316fb185c649e9b089b97d53eda))
+* **protocol:** change bond amounts, proving windows, and cooldown windows ([#18371](https://github.com/taikoxyz/taiko-mono/issues/18371)) ([fac5c16](https://github.com/taikoxyz/taiko-mono/commit/fac5c167357f430cfb030e7ceaa41bb8e4b938d4))
+* **protocol:** delete gas debug event ([#18620](https://github.com/taikoxyz/taiko-mono/issues/18620)) ([06128e8](https://github.com/taikoxyz/taiko-mono/commit/06128e8f64b7bf2997b70959c78ab256404ebab3))
+* **protocol:** fix typos in documentation files ([#18490](https://github.com/taikoxyz/taiko-mono/issues/18490)) ([8d1f9ea](https://github.com/taikoxyz/taiko-mono/commit/8d1f9eab8e02b1868f2e24005699a8ed1d2937fa))
+* **protocol:** optimize Taiko L1 gas cost ([#18376](https://github.com/taikoxyz/taiko-mono/issues/18376)) ([ea0158f](https://github.com/taikoxyz/taiko-mono/commit/ea0158f0cbaa974f90f9174410c705e6cbdc48aa))
+* **protocol:** remove repetitive words in audit report ([#18584](https://github.com/taikoxyz/taiko-mono/issues/18584)) ([8092ee5](https://github.com/taikoxyz/taiko-mono/commit/8092ee56e00ed3e422471a9ed85c42fad6c19a13))
+* **protocol:** restore proving window changes ([#18368](https://github.com/taikoxyz/taiko-mono/issues/18368)) ([9182fba](https://github.com/taikoxyz/taiko-mono/commit/9182fbaf05d309f9827310f3616992c0cc88a22d))
+* **repo:** improve documentation and changelog ([#18489](https://github.com/taikoxyz/taiko-mono/issues/18489)) ([c7b9b4f](https://github.com/taikoxyz/taiko-mono/commit/c7b9b4f01098d4fab337b9ff456ce394cdaf3a79))
+
+
+### Documentation
+
+* **protocol:** add mainnet zkVM verifiers deployment ([#18454](https://github.com/taikoxyz/taiko-mono/issues/18454)) ([3481b68](https://github.com/taikoxyz/taiko-mono/commit/3481b68e8d377c1ae6fc5a1a0e08d8411f94c613))
+* **protocol:** add Ontake fork audit report from OpenZeppelin ([#18491](https://github.com/taikoxyz/taiko-mono/issues/18491)) ([e83adc0](https://github.com/taikoxyz/taiko-mono/commit/e83adc06ac4ce8ebe7e34feaad5691176dba27e2))
+* **protocol:** update Hekla deployments ([#18598](https://github.com/taikoxyz/taiko-mono/issues/18598)) ([a095c69](https://github.com/taikoxyz/taiko-mono/commit/a095c69a240d64606b09a26f2e80ad6daf18c273))
+* **protocol:** update mainnet deployment docs ([#18366](https://github.com/taikoxyz/taiko-mono/issues/18366)) ([bbd69ca](https://github.com/taikoxyz/taiko-mono/commit/bbd69ca583257ade30ac9ea2601509af5bc0789a))
+* **protocol:** update mainnet deployment docs ([#18482](https://github.com/taikoxyz/taiko-mono/issues/18482)) ([9da8499](https://github.com/taikoxyz/taiko-mono/commit/9da849989249072e3a03e611b9c08b00295cf42c))
+* **protocol:** update mainnet deployment docs ([#18621](https://github.com/taikoxyz/taiko-mono/issues/18621)) ([eb542bf](https://github.com/taikoxyz/taiko-mono/commit/eb542bf67dea51fd42c0f5c40ee987e5acadc3fd))
+* **protocol:** upgrade sp1 remote verifier in Hekla ([#18469](https://github.com/taikoxyz/taiko-mono/issues/18469)) ([051b619](https://github.com/taikoxyz/taiko-mono/commit/051b619c6ce93a09c7e14dd8fafc99681c9261ad))
+* **protocol:** upgrade verifiers to support proof aggregation in Hekla ([#18453](https://github.com/taikoxyz/taiko-mono/issues/18453)) ([bfb0386](https://github.com/taikoxyz/taiko-mono/commit/bfb03864ee83ccc3bce989f3e9fd2309eb90c277))
+* **repo:** improve grammar and readability ([#18501](https://github.com/taikoxyz/taiko-mono/issues/18501)) ([61994ff](https://github.com/taikoxyz/taiko-mono/commit/61994ffefcf29981beb567b84a3a55706300cf13))
+
+
+### Code Refactoring
+
+* **protocol:** extra a new function in LibProposing ([#18456](https://github.com/taikoxyz/taiko-mono/issues/18456)) ([5b4b0cd](https://github.com/taikoxyz/taiko-mono/commit/5b4b0cd271534aa72d865afa5fc55e0ee4b16b73))
+* **protocol:** remove unused code post Ontake fork ([#18150](https://github.com/taikoxyz/taiko-mono/issues/18150)) ([8543cec](https://github.com/taikoxyz/taiko-mono/commit/8543cecdef9d10d038bc5a7313230006acd26e22))
+* **protocol:** slightly improve EssentialContract ([#18445](https://github.com/taikoxyz/taiko-mono/issues/18445)) ([3d077f8](https://github.com/taikoxyz/taiko-mono/commit/3d077f8ee520a116028711391c323c7badd1f2c6))
+
+
+### Tests
+
+* **protocol:** check LibEIP1559 function results in fuzz tests ([#18475](https://github.com/taikoxyz/taiko-mono/issues/18475)) ([06e190c](https://github.com/taikoxyz/taiko-mono/commit/06e190c01bc4c4aae25664e8c2c154d8cf46efa5))
+
+
+### Workflow
+
+* **protocol:** make the storage layout table clearer ([#18633](https://github.com/taikoxyz/taiko-mono/issues/18633)) ([7394458](https://github.com/taikoxyz/taiko-mono/commit/73944585586686ad1ce5548ce59e9ea583c4b2ee))
+
+
+### Build
+
+* **deps:** bump github.com/stretchr/testify from 1.9.0 to 1.10.0 ([#18539](https://github.com/taikoxyz/taiko-mono/issues/18539)) ([79f3fab](https://github.com/taikoxyz/taiko-mono/commit/79f3fab5f1d1ec1bb4ee18afb9268b622e894780))
+* **deps:** bump golang.org/x/sync from 0.9.0 to 0.10.0 ([#18560](https://github.com/taikoxyz/taiko-mono/issues/18560)) ([3d51970](https://github.com/taikoxyz/taiko-mono/commit/3d51970aa0953bbfecaeebf76ea7e664c875c0e4))
+
## [1.10.0](https://github.com/taikoxyz/taiko-mono/compare/protocol-v1.9.0...protocol-v1.10.0) (2024-11-01)
diff --git a/packages/protocol/contract_layout_layer1.md b/packages/protocol/contract_layout_layer1.md
index 88c1f86ae62..e69de29bb2d 100644
--- a/packages/protocol/contract_layout_layer1.md
+++ b/packages/protocol/contract_layout_layer1.md
@@ -1,1832 +0,0 @@
-## ERC1155Vault
-
-╭--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+===============================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[50] | 251 | 0 | 1600 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| bridgedToCanonical | mapping(address => struct BaseNFTVault.CanonicalNFT) | 301 | 0 | 32 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| canonicalToBridged | mapping(uint256 => mapping(address => address)) | 302 | 0 | 32 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[48] | 303 | 0 | 1536 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[50] | 351 | 0 | 1600 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[50] | 401 | 0 | 1600 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_\_gap | uint256[50] | 451 | 0 | 1600 | ERC1155Vault |
-╰--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------╯
-
-## ERC20Vault
-
-╭--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+===========================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **gap | uint256[50] | 251 | 0 | 1600 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| bridgedToCanonical | mapping(address => struct ERC20Vault.CanonicalERC20) | 301 | 0 | 32 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| canonicalToBridged | mapping(uint256 => mapping(address => address)) | 302 | 0 | 32 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| btokenDenylist | mapping(address => bool) | 303 | 0 | 32 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| lastMigrationStart | mapping(uint256 => mapping(address => uint256)) | 304 | 0 | 32 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **gap | uint256[46] | 305 | 0 | 1472 | ERC20Vault |
-╰--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------╯
-
-## ERC721Vault
-
-╭--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+=============================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **gap | uint256[50] | 251 | 0 | 1600 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| bridgedToCanonical | mapping(address => struct BaseNFTVault.CanonicalNFT) | 301 | 0 | 32 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| canonicalToBridged | mapping(uint256 => mapping(address => address)) | 302 | 0 | 32 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **gap | uint256[48] | 303 | 0 | 1536 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| \_\_gap | uint256[50] | 351 | 0 | 1600 | ERC721Vault |
-╰--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------╯
-
-## BridgedERC20
-
-╭------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+========================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_balances | mapping(address => uint256) | 251 | 0 | 32 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_allowances | mapping(address => mapping(address => uint256)) | 252 | 0 | 32 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_totalSupply | uint256 | 253 | 0 | 32 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_name | string | 254 | 0 | 32 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_symbol | string | 255 | 0 | 32 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[45] | 256 | 0 | 1440 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| srcToken | address | 301 | 0 | 20 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **srcDecimals | uint8 | 301 | 20 | 1 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| srcChainId | uint256 | 302 | 0 | 32 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| migratingAddress | address | 303 | 0 | 20 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| migratingInbound | bool | 303 | 20 | 1 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_\_gap | uint256[47] | 304 | 0 | 1504 | BridgedERC20 |
-╰------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------╯
-
-## BridgedERC20V2
-
-╭------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+===================================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_balances | mapping(address => uint256) | 251 | 0 | 32 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_allowances | mapping(address => mapping(address => uint256)) | 252 | 0 | 32 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_totalSupply | uint256 | 253 | 0 | 32 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_name | string | 254 | 0 | 32 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_symbol | string | 255 | 0 | 32 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[45] | 256 | 0 | 1440 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| srcToken | address | 301 | 0 | 20 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **srcDecimals | uint8 | 301 | 20 | 1 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| srcChainId | uint256 | 302 | 0 | 32 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| migratingAddress | address | 303 | 0 | 20 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| migratingInbound | bool | 303 | 20 | 1 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[47] | 304 | 0 | 1504 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_hashedName | bytes32 | 351 | 0 | 32 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_hashedVersion | bytes32 | 352 | 0 | 32 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_name | string | 353 | 0 | 32 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_version | string | 354 | 0 | 32 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[48] | 355 | 0 | 1536 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_nonces | mapping(address => struct CountersUpgradeable.Counter) | 403 | 0 | 32 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_\_gap | uint256[49] | 404 | 0 | 1568 | BridgedERC20V2 |
-╰------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------╯
-
-## BridgedERC721
-
-╭--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+=========================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| **gap | uint256[50] | 251 | 0 | 1600 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| \_name | string | 301 | 0 | 32 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| \_symbol | string | 302 | 0 | 32 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| \_owners | mapping(uint256 => address) | 303 | 0 | 32 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| \_balances | mapping(address => uint256) | 304 | 0 | 32 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| \_tokenApprovals | mapping(uint256 => address) | 305 | 0 | 32 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| \_operatorApprovals | mapping(address => mapping(address => bool)) | 306 | 0 | 32 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| **gap | uint256[44] | 307 | 0 | 1408 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| srcToken | address | 351 | 0 | 20 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| srcChainId | uint256 | 352 | 0 | 32 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| \_\_gap | uint256[48] | 353 | 0 | 1536 | BridgedERC721 |
-╰--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------╯
-
-## BridgedERC1155
-
-╭--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+==============================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[50] | 251 | 0 | 1600 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_balances | mapping(uint256 => mapping(address => uint256)) | 301 | 0 | 32 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_operatorApprovals | mapping(address => mapping(address => bool)) | 302 | 0 | 32 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_uri | string | 303 | 0 | 32 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[47] | 304 | 0 | 1504 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| srcToken | address | 351 | 0 | 20 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| srcChainId | uint256 | 352 | 0 | 32 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| symbol | string | 353 | 0 | 32 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| name | string | 354 | 0 | 32 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_\_gap | uint256[46] | 355 | 0 | 1472 | BridgedERC1155 |
-╰--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------╯
-
-## Bridge
-
-╭------------------+-----------------------------------------+------+--------+-------+-------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| **reserved1 | uint64 | 251 | 0 | 8 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| nextMessageId | uint64 | 251 | 8 | 8 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| messageStatus | mapping(bytes32 => enum IBridge.Status) | 252 | 0 | 32 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| **ctx | struct IBridge.Context | 253 | 0 | 64 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| **reserved2 | uint256 | 255 | 0 | 32 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| **reserved3 | uint256 | 256 | 0 | 32 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| \_\_gap | uint256[44] | 257 | 0 | 1408 | Bridge |
-╰------------------+-----------------------------------------+------+--------+-------+-------------------------------------------╯
-
-## QuotaManager
-
-╭------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+==================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | QuotaManager |
-|------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | QuotaManager |
-|------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | QuotaManager |
-|------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | QuotaManager |
-|------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | QuotaManager |
-|------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | QuotaManager |
-|------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | QuotaManager |
-|------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | QuotaManager |
-|------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | QuotaManager |
-|------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | QuotaManager |
-|------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | QuotaManager |
-|------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | QuotaManager |
-|------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | QuotaManager |
-|------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| tokenQuota | mapping(address => struct QuotaManager.Quota) | 251 | 0 | 32 | QuotaManager |
-|------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| quotaPeriod | uint24 | 252 | 0 | 3 | QuotaManager |
-|------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| \_\_gap | uint256[48] | 253 | 0 | 1536 | QuotaManager |
-╰------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------╯
-
-## AddressManager
-
-╭------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+========================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | AddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | AddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | AddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | AddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | AddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | AddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | AddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | AddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | AddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | AddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | AddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | AddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | AddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **addresses | mapping(uint256 => mapping(bytes32 => address)) | 251 | 0 | 32 | AddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[49] | 252 | 0 | 1568 | AddressManager |
-╰------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------╯
-
-## AddressResolver
-
-╭----------------+-------------+------+--------+-------+-------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+====================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | AddressResolver |
-|----------------+-------------+------+--------+-------+-------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | AddressResolver |
-|----------------+-------------+------+--------+-------+-------------------------------------------------------------|
-| addressManager | address | 0 | 2 | 20 | AddressResolver |
-|----------------+-------------+------+--------+-------+-------------------------------------------------------------|
-| \_\_gap | uint256[49] | 1 | 0 | 1568 | AddressResolver |
-╰----------------+-------------+------+--------+-------+-------------------------------------------------------------╯
-
-## EssentialContract
-
-╭------------------+-------------+------+--------+-------+-----------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+==========================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | EssentialContract |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | EssentialContract |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | EssentialContract |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | EssentialContract |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | EssentialContract |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | EssentialContract |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | EssentialContract |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | EssentialContract |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | EssentialContract |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | EssentialContract |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | EssentialContract |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | EssentialContract |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | EssentialContract |
-╰------------------+-------------+------+--------+-------+-----------------------------------------------------------------╯
-
-## SignalService
-
-╭------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+====================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | SignalService |
-|------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | SignalService |
-|------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | SignalService |
-|------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | SignalService |
-|------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | SignalService |
-|------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | SignalService |
-|------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | SignalService |
-|------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | SignalService |
-|------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | SignalService |
-|------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | SignalService |
-|------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | SignalService |
-|------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | SignalService |
-|------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | SignalService |
-|------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| topBlockId | mapping(uint64 => mapping(bytes32 => uint64)) | 251 | 0 | 32 | SignalService |
-|------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| isAuthorized | mapping(address => bool) | 252 | 0 | 32 | SignalService |
-|------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| \_\_gap | uint256[48] | 253 | 0 | 1536 | SignalService |
-╰------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------╯
-
-## TaikoToken
-
-╭-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+================================================================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| **slots_previously_used_by_ERC20SnapshotUpgradeable | uint256[50] | 251 | 0 | 1600 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| \_balances | mapping(address => uint256) | 301 | 0 | 32 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| \_allowances | mapping(address => mapping(address => uint256)) | 302 | 0 | 32 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| \_totalSupply | uint256 | 303 | 0 | 32 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| \_name | string | 304 | 0 | 32 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| \_symbol | string | 305 | 0 | 32 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| **gap | uint256[45] | 306 | 0 | 1440 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| \_hashedName | bytes32 | 351 | 0 | 32 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| \_hashedVersion | bytes32 | 352 | 0 | 32 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| \_name | string | 353 | 0 | 32 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| \_version | string | 354 | 0 | 32 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| **gap | uint256[48] | 355 | 0 | 1536 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| \_nonces | mapping(address => struct CountersUpgradeable.Counter) | 403 | 0 | 32 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| \_PERMIT_TYPEHASH_DEPRECATED_SLOT | bytes32 | 404 | 0 | 32 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| **gap | uint256[49] | 405 | 0 | 1568 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| \_delegates | mapping(address => address) | 454 | 0 | 32 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| \_checkpoints | mapping(address => struct ERC20VotesUpgradeable.Checkpoint[]) | 455 | 0 | 32 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| \_totalSupplyCheckpoints | struct ERC20VotesUpgradeable.Checkpoint[] | 456 | 0 | 32 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| **gap | uint256[47] | 457 | 0 | 1504 | TaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------|
-| **gap | uint256[50] | 504 | 0 | 1600 | TaikoToken |
-╰-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+--------------------------------------------------╯
-
-## ComposeVerifier
-
-╭------------------+-------------+------+--------+-------+------------------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+=================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | ComposeVerifier |
-|------------------+-------------+------+--------+-------+------------------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | ComposeVerifier |
-|------------------+-------------+------+--------+-------+------------------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | ComposeVerifier |
-|------------------+-------------+------+--------+-------+------------------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | ComposeVerifier |
-|------------------+-------------+------+--------+-------+------------------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | ComposeVerifier |
-|------------------+-------------+------+--------+-------+------------------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | ComposeVerifier |
-|------------------+-------------+------+--------+-------+------------------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | ComposeVerifier |
-|------------------+-------------+------+--------+-------+------------------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | ComposeVerifier |
-|------------------+-------------+------+--------+-------+------------------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | ComposeVerifier |
-|------------------+-------------+------+--------+-------+------------------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | ComposeVerifier |
-|------------------+-------------+------+--------+-------+------------------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | ComposeVerifier |
-|------------------+-------------+------+--------+-------+------------------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | ComposeVerifier |
-|------------------+-------------+------+--------+-------+------------------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | ComposeVerifier |
-|------------------+-------------+------+--------+-------+------------------------------------------------------------------------|
-| \_\_gap | uint256[50] | 251 | 0 | 1600 | ComposeVerifier |
-╰------------------+-------------+------+--------+-------+------------------------------------------------------------------------╯
-
-## TeeAnyVerifier
-
-╭------------------+-------------+------+--------+-------+----------------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+===============================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | TeeAnyVerifier |
-|------------------+-------------+------+--------+-------+----------------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | TeeAnyVerifier |
-|------------------+-------------+------+--------+-------+----------------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | TeeAnyVerifier |
-|------------------+-------------+------+--------+-------+----------------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | TeeAnyVerifier |
-|------------------+-------------+------+--------+-------+----------------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | TeeAnyVerifier |
-|------------------+-------------+------+--------+-------+----------------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | TeeAnyVerifier |
-|------------------+-------------+------+--------+-------+----------------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | TeeAnyVerifier |
-|------------------+-------------+------+--------+-------+----------------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | TeeAnyVerifier |
-|------------------+-------------+------+--------+-------+----------------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | TeeAnyVerifier |
-|------------------+-------------+------+--------+-------+----------------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | TeeAnyVerifier |
-|------------------+-------------+------+--------+-------+----------------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | TeeAnyVerifier |
-|------------------+-------------+------+--------+-------+----------------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | TeeAnyVerifier |
-|------------------+-------------+------+--------+-------+----------------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | TeeAnyVerifier |
-|------------------+-------------+------+--------+-------+----------------------------------------------------------------------|
-| **gap | uint256[50] | 251 | 0 | 1600 | TeeAnyVerifier |
-|------------------+-------------+------+--------+-------+----------------------------------------------------------------------|
-| **gap | uint256[50] | 301 | 0 | 1600 | TeeAnyVerifier |
-╰------------------+-------------+------+--------+-------+----------------------------------------------------------------------╯
-
-## ZkAndTeeVerifier
-
-╭------------------+-------------+------+--------+-------+--------------------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+===================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | ZkAndTeeVerifier |
-|------------------+-------------+------+--------+-------+--------------------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | ZkAndTeeVerifier |
-|------------------+-------------+------+--------+-------+--------------------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | ZkAndTeeVerifier |
-|------------------+-------------+------+--------+-------+--------------------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | ZkAndTeeVerifier |
-|------------------+-------------+------+--------+-------+--------------------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | ZkAndTeeVerifier |
-|------------------+-------------+------+--------+-------+--------------------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | ZkAndTeeVerifier |
-|------------------+-------------+------+--------+-------+--------------------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | ZkAndTeeVerifier |
-|------------------+-------------+------+--------+-------+--------------------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | ZkAndTeeVerifier |
-|------------------+-------------+------+--------+-------+--------------------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | ZkAndTeeVerifier |
-|------------------+-------------+------+--------+-------+--------------------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | ZkAndTeeVerifier |
-|------------------+-------------+------+--------+-------+--------------------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | ZkAndTeeVerifier |
-|------------------+-------------+------+--------+-------+--------------------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | ZkAndTeeVerifier |
-|------------------+-------------+------+--------+-------+--------------------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | ZkAndTeeVerifier |
-|------------------+-------------+------+--------+-------+--------------------------------------------------------------------------|
-| **gap | uint256[50] | 251 | 0 | 1600 | ZkAndTeeVerifier |
-|------------------+-------------+------+--------+-------+--------------------------------------------------------------------------|
-| **gap | uint256[50] | 301 | 0 | 1600 | ZkAndTeeVerifier |
-╰------------------+-------------+------+--------+-------+--------------------------------------------------------------------------╯
-
-## ZkAnyVerifier
-
-╭------------------+-------------+------+--------+-------+--------------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+=============================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | ZkAnyVerifier |
-|------------------+-------------+------+--------+-------+--------------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | ZkAnyVerifier |
-|------------------+-------------+------+--------+-------+--------------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | ZkAnyVerifier |
-|------------------+-------------+------+--------+-------+--------------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | ZkAnyVerifier |
-|------------------+-------------+------+--------+-------+--------------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | ZkAnyVerifier |
-|------------------+-------------+------+--------+-------+--------------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | ZkAnyVerifier |
-|------------------+-------------+------+--------+-------+--------------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | ZkAnyVerifier |
-|------------------+-------------+------+--------+-------+--------------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | ZkAnyVerifier |
-|------------------+-------------+------+--------+-------+--------------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | ZkAnyVerifier |
-|------------------+-------------+------+--------+-------+--------------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | ZkAnyVerifier |
-|------------------+-------------+------+--------+-------+--------------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | ZkAnyVerifier |
-|------------------+-------------+------+--------+-------+--------------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | ZkAnyVerifier |
-|------------------+-------------+------+--------+-------+--------------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | ZkAnyVerifier |
-|------------------+-------------+------+--------+-------+--------------------------------------------------------------------|
-| **gap | uint256[50] | 251 | 0 | 1600 | ZkAnyVerifier |
-|------------------+-------------+------+--------+-------+--------------------------------------------------------------------|
-| **gap | uint256[50] | 301 | 0 | 1600 | ZkAnyVerifier |
-╰------------------+-------------+------+--------+-------+--------------------------------------------------------------------╯
-
-## Risc0Verifier
-
-╭------------------+--------------------------+------+--------+-------+------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+==================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | Risc0Verifier |
-|------------------+--------------------------+------+--------+-------+------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | Risc0Verifier |
-|------------------+--------------------------+------+--------+-------+------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | Risc0Verifier |
-|------------------+--------------------------+------+--------+-------+------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | Risc0Verifier |
-|------------------+--------------------------+------+--------+-------+------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | Risc0Verifier |
-|------------------+--------------------------+------+--------+-------+------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | Risc0Verifier |
-|------------------+--------------------------+------+--------+-------+------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | Risc0Verifier |
-|------------------+--------------------------+------+--------+-------+------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | Risc0Verifier |
-|------------------+--------------------------+------+--------+-------+------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | Risc0Verifier |
-|------------------+--------------------------+------+--------+-------+------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | Risc0Verifier |
-|------------------+--------------------------+------+--------+-------+------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | Risc0Verifier |
-|------------------+--------------------------+------+--------+-------+------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | Risc0Verifier |
-|------------------+--------------------------+------+--------+-------+------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | Risc0Verifier |
-|------------------+--------------------------+------+--------+-------+------------------------------------------------------------|
-| isImageTrusted | mapping(bytes32 => bool) | 251 | 0 | 32 | Risc0Verifier |
-|------------------+--------------------------+------+--------+-------+------------------------------------------------------------|
-| \_\_gap | uint256[49] | 252 | 0 | 1568 | Risc0Verifier |
-╰------------------+--------------------------+------+--------+-------+------------------------------------------------------------╯
-
-## SP1Verifier
-
-╭------------------+--------------------------+------+--------+-------+--------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+==============================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | SP1Verifier |
-|------------------+--------------------------+------+--------+-------+--------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | SP1Verifier |
-|------------------+--------------------------+------+--------+-------+--------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | SP1Verifier |
-|------------------+--------------------------+------+--------+-------+--------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | SP1Verifier |
-|------------------+--------------------------+------+--------+-------+--------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | SP1Verifier |
-|------------------+--------------------------+------+--------+-------+--------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | SP1Verifier |
-|------------------+--------------------------+------+--------+-------+--------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | SP1Verifier |
-|------------------+--------------------------+------+--------+-------+--------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | SP1Verifier |
-|------------------+--------------------------+------+--------+-------+--------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | SP1Verifier |
-|------------------+--------------------------+------+--------+-------+--------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | SP1Verifier |
-|------------------+--------------------------+------+--------+-------+--------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | SP1Verifier |
-|------------------+--------------------------+------+--------+-------+--------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | SP1Verifier |
-|------------------+--------------------------+------+--------+-------+--------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | SP1Verifier |
-|------------------+--------------------------+------+--------+-------+--------------------------------------------------------|
-| isProgramTrusted | mapping(bytes32 => bool) | 251 | 0 | 32 | SP1Verifier |
-|------------------+--------------------------+------+--------+-------+--------------------------------------------------------|
-| \_\_gap | uint256[49] | 252 | 0 | 1568 | SP1Verifier |
-╰------------------+--------------------------+------+--------+-------+--------------------------------------------------------╯
-
-## SgxVerifier
-
-╭-------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+======================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | SgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | SgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | SgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | SgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | SgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | SgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | SgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | SgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | SgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | SgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | SgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | SgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | SgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------|
-| nextInstanceId | uint256 | 251 | 0 | 32 | SgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------|
-| instances | mapping(uint256 => struct SgxVerifier.Instance) | 252 | 0 | 32 | SgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------|
-| addressRegistered | mapping(address => bool) | 253 | 0 | 32 | SgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------|
-| \_\_gap | uint256[47] | 254 | 0 | 1504 | SgxVerifier |
-╰-------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------╯
-
-## AutomataDcapV3Attestation
-
-╭-------------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+===================================================================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | AutomataDcapV3Attestation |
-|-------------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | AutomataDcapV3Attestation |
-|-------------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | AutomataDcapV3Attestation |
-|-------------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | AutomataDcapV3Attestation |
-|-------------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | AutomataDcapV3Attestation |
-|-------------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | AutomataDcapV3Attestation |
-|-------------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | AutomataDcapV3Attestation |
-|-------------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | AutomataDcapV3Attestation |
-|-------------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | AutomataDcapV3Attestation |
-|-------------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | AutomataDcapV3Attestation |
-|-------------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | AutomataDcapV3Attestation |
-|-------------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | AutomataDcapV3Attestation |
-|-------------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | AutomataDcapV3Attestation |
-|-------------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| sigVerifyLib | contract ISigVerifyLib | 251 | 0 | 20 | AutomataDcapV3Attestation |
-|-------------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| pemCertLib | contract IPEMCertChainLib | 252 | 0 | 20 | AutomataDcapV3Attestation |
-|-------------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| checkLocalEnclaveReport | bool | 252 | 20 | 1 | AutomataDcapV3Attestation |
-|-------------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| trustedUserMrEnclave | mapping(bytes32 => bool) | 253 | 0 | 32 | AutomataDcapV3Attestation |
-|-------------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| trustedUserMrSigner | mapping(bytes32 => bool) | 254 | 0 | 32 | AutomataDcapV3Attestation |
-|-------------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| serialNumIsRevoked | mapping(uint256 => mapping(bytes => bool)) | 255 | 0 | 32 | AutomataDcapV3Attestation |
-|-------------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| tcbInfo | mapping(string => struct TCBInfoStruct.TCBInfo) | 256 | 0 | 32 | AutomataDcapV3Attestation |
-|-------------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| qeIdentity | struct EnclaveIdStruct.EnclaveId | 257 | 0 | 128 | AutomataDcapV3Attestation |
-|-------------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| \_\_gap | uint256[39] | 261 | 0 | 1248 | AutomataDcapV3Attestation |
-╰-------------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------------------------------------------╯
-
-## TaikoL1
-
-╭------------------+------------------------+------+--------+-------+--------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | TaikoL1 |
-|------------------+------------------------+------+--------+-------+--------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | TaikoL1 |
-|------------------+------------------------+------+--------+-------+--------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | TaikoL1 |
-|------------------+------------------------+------+--------+-------+--------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | TaikoL1 |
-|------------------+------------------------+------+--------+-------+--------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | TaikoL1 |
-|------------------+------------------------+------+--------+-------+--------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | TaikoL1 |
-|------------------+------------------------+------+--------+-------+--------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | TaikoL1 |
-|------------------+------------------------+------+--------+-------+--------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | TaikoL1 |
-|------------------+------------------------+------+--------+-------+--------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | TaikoL1 |
-|------------------+------------------------+------+--------+-------+--------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | TaikoL1 |
-|------------------+------------------------+------+--------+-------+--------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | TaikoL1 |
-|------------------+------------------------+------+--------+-------+--------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | TaikoL1 |
-|------------------+------------------------+------+--------+-------+--------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | TaikoL1 |
-|------------------+------------------------+------+--------+-------+--------------------------------------------|
-| state | struct TaikoData.State | 251 | 0 | 1600 | TaikoL1 |
-|------------------+------------------------+------+--------+-------+--------------------------------------------|
-| \_\_gap | uint256[50] | 301 | 0 | 1600 | TaikoL1 |
-╰------------------+------------------------+------+--------+-------+--------------------------------------------╯
-
-## HeklaTaikoL1
-
-╭------------------+------------------------+------+--------+-------+------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+==========================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | HeklaTaikoL1 |
-|------------------+------------------------+------+--------+-------+------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | HeklaTaikoL1 |
-|------------------+------------------------+------+--------+-------+------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | HeklaTaikoL1 |
-|------------------+------------------------+------+--------+-------+------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | HeklaTaikoL1 |
-|------------------+------------------------+------+--------+-------+------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | HeklaTaikoL1 |
-|------------------+------------------------+------+--------+-------+------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | HeklaTaikoL1 |
-|------------------+------------------------+------+--------+-------+------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | HeklaTaikoL1 |
-|------------------+------------------------+------+--------+-------+------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | HeklaTaikoL1 |
-|------------------+------------------------+------+--------+-------+------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | HeklaTaikoL1 |
-|------------------+------------------------+------+--------+-------+------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | HeklaTaikoL1 |
-|------------------+------------------------+------+--------+-------+------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | HeklaTaikoL1 |
-|------------------+------------------------+------+--------+-------+------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | HeklaTaikoL1 |
-|------------------+------------------------+------+--------+-------+------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | HeklaTaikoL1 |
-|------------------+------------------------+------+--------+-------+------------------------------------------------------|
-| state | struct TaikoData.State | 251 | 0 | 1600 | HeklaTaikoL1 |
-|------------------+------------------------+------+--------+-------+------------------------------------------------------|
-| \_\_gap | uint256[50] | 301 | 0 | 1600 | HeklaTaikoL1 |
-╰------------------+------------------------+------+--------+-------+------------------------------------------------------╯
-
-## HeklaTierRouter
-
-╭------+------+------+--------+-------+----------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+================================================+
-╰------+------+------+--------+-------+----------╯
-
-## MainnetBridge
-
-╭------------------+-----------------------------------------+------+--------+-------+----------------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+===========================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | MainnetBridge |
-|------------------+-----------------------------------------+------+--------+-------+----------------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | MainnetBridge |
-|------------------+-----------------------------------------+------+--------+-------+----------------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | MainnetBridge |
-|------------------+-----------------------------------------+------+--------+-------+----------------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | MainnetBridge |
-|------------------+-----------------------------------------+------+--------+-------+----------------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | MainnetBridge |
-|------------------+-----------------------------------------+------+--------+-------+----------------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | MainnetBridge |
-|------------------+-----------------------------------------+------+--------+-------+----------------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | MainnetBridge |
-|------------------+-----------------------------------------+------+--------+-------+----------------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | MainnetBridge |
-|------------------+-----------------------------------------+------+--------+-------+----------------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | MainnetBridge |
-|------------------+-----------------------------------------+------+--------+-------+----------------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | MainnetBridge |
-|------------------+-----------------------------------------+------+--------+-------+----------------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | MainnetBridge |
-|------------------+-----------------------------------------+------+--------+-------+----------------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetBridge |
-|------------------+-----------------------------------------+------+--------+-------+----------------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | MainnetBridge |
-|------------------+-----------------------------------------+------+--------+-------+----------------------------------------------------------------------|
-| **reserved1 | uint64 | 251 | 0 | 8 | MainnetBridge |
-|------------------+-----------------------------------------+------+--------+-------+----------------------------------------------------------------------|
-| nextMessageId | uint64 | 251 | 8 | 8 | MainnetBridge |
-|------------------+-----------------------------------------+------+--------+-------+----------------------------------------------------------------------|
-| messageStatus | mapping(bytes32 => enum IBridge.Status) | 252 | 0 | 32 | MainnetBridge |
-|------------------+-----------------------------------------+------+--------+-------+----------------------------------------------------------------------|
-| **ctx | struct IBridge.Context | 253 | 0 | 64 | MainnetBridge |
-|------------------+-----------------------------------------+------+--------+-------+----------------------------------------------------------------------|
-| **reserved2 | uint256 | 255 | 0 | 32 | MainnetBridge |
-|------------------+-----------------------------------------+------+--------+-------+----------------------------------------------------------------------|
-| **reserved3 | uint256 | 256 | 0 | 32 | MainnetBridge |
-|------------------+-----------------------------------------+------+--------+-------+----------------------------------------------------------------------|
-| \_\_gap | uint256[44] | 257 | 0 | 1408 | MainnetBridge |
-╰------------------+-----------------------------------------+------+--------+-------+----------------------------------------------------------------------╯
-
-## MainnetSignalService
-
-╭------------------+-----------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+===============================================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | MainnetSignalService |
-|------------------+-----------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | MainnetSignalService |
-|------------------+-----------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | MainnetSignalService |
-|------------------+-----------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | MainnetSignalService |
-|------------------+-----------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | MainnetSignalService |
-|------------------+-----------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | MainnetSignalService |
-|------------------+-----------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | MainnetSignalService |
-|------------------+-----------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | MainnetSignalService |
-|------------------+-----------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | MainnetSignalService |
-|------------------+-----------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | MainnetSignalService |
-|------------------+-----------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | MainnetSignalService |
-|------------------+-----------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetSignalService |
-|------------------+-----------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | MainnetSignalService |
-|------------------+-----------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------|
-| topBlockId | mapping(uint64 => mapping(bytes32 => uint64)) | 251 | 0 | 32 | MainnetSignalService |
-|------------------+-----------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------|
-| isAuthorized | mapping(address => bool) | 252 | 0 | 32 | MainnetSignalService |
-|------------------+-----------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------|
-| \_\_gap | uint256[48] | 253 | 0 | 1536 | MainnetSignalService |
-╰------------------+-----------------------------------------------+------+--------+-------+------------------------------------------------------------------------------------╯
-
-## MainnetERC20Vault
-
-╭--------------------+------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+==================================================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | MainnetERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | MainnetERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | MainnetERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | MainnetERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | MainnetERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | MainnetERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | MainnetERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | MainnetERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | MainnetERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | MainnetERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | MainnetERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | MainnetERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------|
-| **gap | uint256[50] | 251 | 0 | 1600 | MainnetERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------|
-| bridgedToCanonical | mapping(address => struct ERC20Vault.CanonicalERC20) | 301 | 0 | 32 | MainnetERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------|
-| canonicalToBridged | mapping(uint256 => mapping(address => address)) | 302 | 0 | 32 | MainnetERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------|
-| btokenDenylist | mapping(address => bool) | 303 | 0 | 32 | MainnetERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------|
-| lastMigrationStart | mapping(uint256 => mapping(address => uint256)) | 304 | 0 | 32 | MainnetERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------|
-| **gap | uint256[46] | 305 | 0 | 1472 | MainnetERC20Vault |
-╰--------------------+------------------------------------------------------+------+--------+-------+------------------------------------------------------------------------------╯
-
-## MainnetERC1155Vault
-
-╭--------------------+------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+======================================================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | MainnetERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | MainnetERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | MainnetERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | MainnetERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | MainnetERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | MainnetERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | MainnetERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | MainnetERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | MainnetERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | MainnetERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | MainnetERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | MainnetERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------|
-| **gap | uint256[50] | 251 | 0 | 1600 | MainnetERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------|
-| bridgedToCanonical | mapping(address => struct BaseNFTVault.CanonicalNFT) | 301 | 0 | 32 | MainnetERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------|
-| canonicalToBridged | mapping(uint256 => mapping(address => address)) | 302 | 0 | 32 | MainnetERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------|
-| **gap | uint256[48] | 303 | 0 | 1536 | MainnetERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------|
-| **gap | uint256[50] | 351 | 0 | 1600 | MainnetERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------|
-| **gap | uint256[50] | 401 | 0 | 1600 | MainnetERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------|
-| \_\_gap | uint256[50] | 451 | 0 | 1600 | MainnetERC1155Vault |
-╰--------------------+------------------------------------------------------+------+--------+-------+----------------------------------------------------------------------------------╯
-
-## MainnetERC721Vault
-
-╭--------------------+------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+====================================================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | MainnetERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | MainnetERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | MainnetERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | MainnetERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | MainnetERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | MainnetERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | MainnetERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | MainnetERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | MainnetERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | MainnetERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | MainnetERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | MainnetERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------|
-| **gap | uint256[50] | 251 | 0 | 1600 | MainnetERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------|
-| bridgedToCanonical | mapping(address => struct BaseNFTVault.CanonicalNFT) | 301 | 0 | 32 | MainnetERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------|
-| canonicalToBridged | mapping(uint256 => mapping(address => address)) | 302 | 0 | 32 | MainnetERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------|
-| **gap | uint256[48] | 303 | 0 | 1536 | MainnetERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------|
-| \_\_gap | uint256[50] | 351 | 0 | 1600 | MainnetERC721Vault |
-╰--------------------+------------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------╯
-
-## MainnetSharedAddressManager
-
-╭------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+===============================================================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | MainnetSharedAddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | MainnetSharedAddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | MainnetSharedAddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | MainnetSharedAddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | MainnetSharedAddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | MainnetSharedAddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | MainnetSharedAddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | MainnetSharedAddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | MainnetSharedAddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | MainnetSharedAddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | MainnetSharedAddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetSharedAddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | MainnetSharedAddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------------------|
-| **addresses | mapping(uint256 => mapping(bytes32 => address)) | 251 | 0 | 32 | MainnetSharedAddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 252 | 0 | 1568 | MainnetSharedAddressManager |
-╰------------------+-------------------------------------------------+------+--------+-------+--------------------------------------------------------------------------------------------------╯
-
-## RollupAddressCache
-
-╭------+------+------+--------+-------+----------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+================================================+
-╰------+------+------+--------+-------+----------╯
-
-## SharedAddressCache
-
-╭------+------+------+--------+-------+----------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+================================================+
-╰------+------+------+--------+-------+----------╯
-
-## AddressCache
-
-╭------+------+------+--------+-------+----------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+================================================+
-╰------+------+------+--------+-------+----------╯
-
-## MainnetSgxVerifier
-
-╭-------------------+-------------------------------------------------+------+--------+-------+-------------------------------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+===================================================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | MainnetSgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+-------------------------------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | MainnetSgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+-------------------------------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | MainnetSgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+-------------------------------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | MainnetSgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+-------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | MainnetSgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+-------------------------------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | MainnetSgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+-------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | MainnetSgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+-------------------------------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | MainnetSgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+-------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | MainnetSgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+-------------------------------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | MainnetSgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+-------------------------------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | MainnetSgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+-------------------------------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetSgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+-------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | MainnetSgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+-------------------------------------------------------------------------------------|
-| nextInstanceId | uint256 | 251 | 0 | 32 | MainnetSgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+-------------------------------------------------------------------------------------|
-| instances | mapping(uint256 => struct SgxVerifier.Instance) | 252 | 0 | 32 | MainnetSgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+-------------------------------------------------------------------------------------|
-| addressRegistered | mapping(address => bool) | 253 | 0 | 32 | MainnetSgxVerifier |
-|-------------------+-------------------------------------------------+------+--------+-------+-------------------------------------------------------------------------------------|
-| \_\_gap | uint256[47] | 254 | 0 | 1504 | MainnetSgxVerifier |
-╰-------------------+-------------------------------------------------+------+--------+-------+-------------------------------------------------------------------------------------╯
-
-## MainnetSP1Verifier
-
-╭------------------+--------------------------+------+--------+-------+-------------------------------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+===========================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | MainnetSP1Verifier |
-|------------------+--------------------------+------+--------+-------+-------------------------------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | MainnetSP1Verifier |
-|------------------+--------------------------+------+--------+-------+-------------------------------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | MainnetSP1Verifier |
-|------------------+--------------------------+------+--------+-------+-------------------------------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | MainnetSP1Verifier |
-|------------------+--------------------------+------+--------+-------+-------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | MainnetSP1Verifier |
-|------------------+--------------------------+------+--------+-------+-------------------------------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | MainnetSP1Verifier |
-|------------------+--------------------------+------+--------+-------+-------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | MainnetSP1Verifier |
-|------------------+--------------------------+------+--------+-------+-------------------------------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | MainnetSP1Verifier |
-|------------------+--------------------------+------+--------+-------+-------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | MainnetSP1Verifier |
-|------------------+--------------------------+------+--------+-------+-------------------------------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | MainnetSP1Verifier |
-|------------------+--------------------------+------+--------+-------+-------------------------------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | MainnetSP1Verifier |
-|------------------+--------------------------+------+--------+-------+-------------------------------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetSP1Verifier |
-|------------------+--------------------------+------+--------+-------+-------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | MainnetSP1Verifier |
-|------------------+--------------------------+------+--------+-------+-------------------------------------------------------------------------------------|
-| isProgramTrusted | mapping(bytes32 => bool) | 251 | 0 | 32 | MainnetSP1Verifier |
-|------------------+--------------------------+------+--------+-------+-------------------------------------------------------------------------------------|
-| \_\_gap | uint256[49] | 252 | 0 | 1568 | MainnetSP1Verifier |
-╰------------------+--------------------------+------+--------+-------+-------------------------------------------------------------------------------------╯
-
-## MainnetZkAnyVerifier
-
-╭------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+==================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | MainnetZkAnyVerifier |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | MainnetZkAnyVerifier |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | MainnetZkAnyVerifier |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | MainnetZkAnyVerifier |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | MainnetZkAnyVerifier |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | MainnetZkAnyVerifier |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | MainnetZkAnyVerifier |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | MainnetZkAnyVerifier |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | MainnetZkAnyVerifier |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | MainnetZkAnyVerifier |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | MainnetZkAnyVerifier |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetZkAnyVerifier |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | MainnetZkAnyVerifier |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------|
-| **gap | uint256[50] | 251 | 0 | 1600 | MainnetZkAnyVerifier |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------|
-| **gap | uint256[50] | 301 | 0 | 1600 | MainnetZkAnyVerifier |
-╰------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------╯
-
-## MainnetRisc0Verifier
-
-╭------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+===============================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | MainnetRisc0Verifier |
-|------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | MainnetRisc0Verifier |
-|------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | MainnetRisc0Verifier |
-|------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | MainnetRisc0Verifier |
-|------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | MainnetRisc0Verifier |
-|------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | MainnetRisc0Verifier |
-|------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | MainnetRisc0Verifier |
-|------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | MainnetRisc0Verifier |
-|------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | MainnetRisc0Verifier |
-|------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | MainnetRisc0Verifier |
-|------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | MainnetRisc0Verifier |
-|------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetRisc0Verifier |
-|------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | MainnetRisc0Verifier |
-|------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------------------------|
-| isImageTrusted | mapping(bytes32 => bool) | 251 | 0 | 32 | MainnetRisc0Verifier |
-|------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------------------------|
-| \_\_gap | uint256[49] | 252 | 0 | 1568 | MainnetRisc0Verifier |
-╰------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------------------------╯
-
-## MainnetZkAndTeeVerifier
-
-╭------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+========================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | MainnetZkAndTeeVerifier |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | MainnetZkAndTeeVerifier |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | MainnetZkAndTeeVerifier |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | MainnetZkAndTeeVerifier |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | MainnetZkAndTeeVerifier |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | MainnetZkAndTeeVerifier |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | MainnetZkAndTeeVerifier |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | MainnetZkAndTeeVerifier |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | MainnetZkAndTeeVerifier |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | MainnetZkAndTeeVerifier |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | MainnetZkAndTeeVerifier |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetZkAndTeeVerifier |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | MainnetZkAndTeeVerifier |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| **gap | uint256[50] | 251 | 0 | 1600 | MainnetZkAndTeeVerifier |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------------|
-| **gap | uint256[50] | 301 | 0 | 1600 | MainnetZkAndTeeVerifier |
-╰------------------+-------------+------+--------+-------+-----------------------------------------------------------------------------------------------╯
-
-## MainnetTeeAnyVerifier
-
-╭------------------+-------------+------+--------+-------+-------------------------------------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+====================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | MainnetTeeAnyVerifier |
-|------------------+-------------+------+--------+-------+-------------------------------------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | MainnetTeeAnyVerifier |
-|------------------+-------------+------+--------+-------+-------------------------------------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | MainnetTeeAnyVerifier |
-|------------------+-------------+------+--------+-------+-------------------------------------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | MainnetTeeAnyVerifier |
-|------------------+-------------+------+--------+-------+-------------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | MainnetTeeAnyVerifier |
-|------------------+-------------+------+--------+-------+-------------------------------------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | MainnetTeeAnyVerifier |
-|------------------+-------------+------+--------+-------+-------------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | MainnetTeeAnyVerifier |
-|------------------+-------------+------+--------+-------+-------------------------------------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | MainnetTeeAnyVerifier |
-|------------------+-------------+------+--------+-------+-------------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | MainnetTeeAnyVerifier |
-|------------------+-------------+------+--------+-------+-------------------------------------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | MainnetTeeAnyVerifier |
-|------------------+-------------+------+--------+-------+-------------------------------------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | MainnetTeeAnyVerifier |
-|------------------+-------------+------+--------+-------+-------------------------------------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetTeeAnyVerifier |
-|------------------+-------------+------+--------+-------+-------------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | MainnetTeeAnyVerifier |
-|------------------+-------------+------+--------+-------+-------------------------------------------------------------------------------------------|
-| **gap | uint256[50] | 251 | 0 | 1600 | MainnetTeeAnyVerifier |
-|------------------+-------------+------+--------+-------+-------------------------------------------------------------------------------------------|
-| **gap | uint256[50] | 301 | 0 | 1600 | MainnetTeeAnyVerifier |
-╰------------------+-------------+------+--------+-------+-------------------------------------------------------------------------------------------╯
-
-## MainnetGuardianProver
-
-╭-------------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+=====================================================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | MainnetGuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | MainnetGuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | MainnetGuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | MainnetGuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | MainnetGuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | MainnetGuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | MainnetGuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | MainnetGuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | MainnetGuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | MainnetGuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | MainnetGuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetGuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | MainnetGuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
-| guardianIds | mapping(address => uint256) | 251 | 0 | 32 | MainnetGuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
-| approvals | mapping(uint256 => mapping(bytes32 => uint256)) | 252 | 0 | 32 | MainnetGuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
-| guardians | address[] | 253 | 0 | 32 | MainnetGuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
-| version | uint32 | 254 | 0 | 4 | MainnetGuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
-| minGuardians | uint32 | 254 | 4 | 4 | MainnetGuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
-| provingAutoPauseEnabled | bool | 254 | 8 | 1 | MainnetGuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
-| latestProofHash | mapping(uint256 => mapping(uint256 => bytes32)) | 255 | 0 | 32 | MainnetGuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------|
-| \_\_gap | uint256[45] | 256 | 0 | 1440 | MainnetGuardianProver |
-╰-------------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------╯
-
-## MainnetTaikoL1
-
-╭------------------+------------------------+------+--------+-------+-------------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+=======================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | MainnetTaikoL1 |
-|------------------+------------------------+------+--------+-------+-------------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | MainnetTaikoL1 |
-|------------------+------------------------+------+--------+-------+-------------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | MainnetTaikoL1 |
-|------------------+------------------------+------+--------+-------+-------------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | MainnetTaikoL1 |
-|------------------+------------------------+------+--------+-------+-------------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | MainnetTaikoL1 |
-|------------------+------------------------+------+--------+-------+-------------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | MainnetTaikoL1 |
-|------------------+------------------------+------+--------+-------+-------------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | MainnetTaikoL1 |
-|------------------+------------------------+------+--------+-------+-------------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | MainnetTaikoL1 |
-|------------------+------------------------+------+--------+-------+-------------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | MainnetTaikoL1 |
-|------------------+------------------------+------+--------+-------+-------------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | MainnetTaikoL1 |
-|------------------+------------------------+------+--------+-------+-------------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | MainnetTaikoL1 |
-|------------------+------------------------+------+--------+-------+-------------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetTaikoL1 |
-|------------------+------------------------+------+--------+-------+-------------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | MainnetTaikoL1 |
-|------------------+------------------------+------+--------+-------+-------------------------------------------------------------------|
-| state | struct TaikoData.State | 251 | 0 | 1600 | MainnetTaikoL1 |
-|------------------+------------------------+------+--------+-------+-------------------------------------------------------------------|
-| \_\_gap | uint256[50] | 301 | 0 | 1600 | MainnetTaikoL1 |
-╰------------------+------------------------+------+--------+-------+-------------------------------------------------------------------╯
-
-## MainnetRollupAddressManager
-
-╭------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+==========================================================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | MainnetRollupAddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | MainnetRollupAddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | MainnetRollupAddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | MainnetRollupAddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | MainnetRollupAddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | MainnetRollupAddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | MainnetRollupAddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | MainnetRollupAddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | MainnetRollupAddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | MainnetRollupAddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | MainnetRollupAddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetRollupAddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | MainnetRollupAddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------------------|
-| **addresses | mapping(uint256 => mapping(bytes32 => address)) | 251 | 0 | 32 | MainnetRollupAddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------------------|
-| **gap | uint256[49] | 252 | 0 | 1568 | MainnetRollupAddressManager |
-╰------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------------------------------------╯
-
-## MainnetTierRouter
-
-╭------+------+------+--------+-------+----------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+================================================+
-╰------+------+------+--------+-------+----------╯
-
-## MainnetProverSet
-
-╭------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+=============================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | MainnetProverSet |
-|------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | MainnetProverSet |
-|------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | MainnetProverSet |
-|------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | MainnetProverSet |
-|------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | MainnetProverSet |
-|------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | MainnetProverSet |
-|------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | MainnetProverSet |
-|------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | MainnetProverSet |
-|------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | MainnetProverSet |
-|------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | MainnetProverSet |
-|------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | MainnetProverSet |
-|------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetProverSet |
-|------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | MainnetProverSet |
-|------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------|
-| isProver | mapping(address => bool) | 251 | 0 | 32 | MainnetProverSet |
-|------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------|
-| admin | address | 252 | 0 | 20 | MainnetProverSet |
-|------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------|
-| \_\_gap | uint256[48] | 253 | 0 | 1536 | MainnetProverSet |
-╰------------------+--------------------------+------+--------+-------+-----------------------------------------------------------------------╯
-
-## TokenUnlock
-
-╭------------------+--------------------------+------+--------+-------+---------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+=====================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | TokenUnlock |
-|------------------+--------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | TokenUnlock |
-|------------------+--------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | TokenUnlock |
-|------------------+--------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | TokenUnlock |
-|------------------+--------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | TokenUnlock |
-|------------------+--------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | TokenUnlock |
-|------------------+--------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | TokenUnlock |
-|------------------+--------------------------+------+--------+-------+---------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | TokenUnlock |
-|------------------+--------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | TokenUnlock |
-|------------------+--------------------------+------+--------+-------+---------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | TokenUnlock |
-|------------------+--------------------------+------+--------+-------+---------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | TokenUnlock |
-|------------------+--------------------------+------+--------+-------+---------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | TokenUnlock |
-|------------------+--------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | TokenUnlock |
-|------------------+--------------------------+------+--------+-------+---------------------------------------------------------------|
-| amountVested | uint256 | 251 | 0 | 32 | TokenUnlock |
-|------------------+--------------------------+------+--------+-------+---------------------------------------------------------------|
-| recipient | address | 252 | 0 | 20 | TokenUnlock |
-|------------------+--------------------------+------+--------+-------+---------------------------------------------------------------|
-| tgeTimestamp | uint64 | 252 | 20 | 8 | TokenUnlock |
-|------------------+--------------------------+------+--------+-------+---------------------------------------------------------------|
-| isProverSet | mapping(address => bool) | 253 | 0 | 32 | TokenUnlock |
-|------------------+--------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_\_gap | uint256[47] | 254 | 0 | 1504 | TokenUnlock |
-╰------------------+--------------------------+------+--------+-------+---------------------------------------------------------------╯
-
-## ProverSet
-
-╭------------------+--------------------------+------+--------+-------+--------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+========================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | ProverSet |
-|------------------+--------------------------+------+--------+-------+--------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | ProverSet |
-|------------------+--------------------------+------+--------+-------+--------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | ProverSet |
-|------------------+--------------------------+------+--------+-------+--------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | ProverSet |
-|------------------+--------------------------+------+--------+-------+--------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | ProverSet |
-|------------------+--------------------------+------+--------+-------+--------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | ProverSet |
-|------------------+--------------------------+------+--------+-------+--------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | ProverSet |
-|------------------+--------------------------+------+--------+-------+--------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | ProverSet |
-|------------------+--------------------------+------+--------+-------+--------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | ProverSet |
-|------------------+--------------------------+------+--------+-------+--------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | ProverSet |
-|------------------+--------------------------+------+--------+-------+--------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | ProverSet |
-|------------------+--------------------------+------+--------+-------+--------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | ProverSet |
-|------------------+--------------------------+------+--------+-------+--------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | ProverSet |
-|------------------+--------------------------+------+--------+-------+--------------------------------------------------|
-| isProver | mapping(address => bool) | 251 | 0 | 32 | ProverSet |
-|------------------+--------------------------+------+--------+-------+--------------------------------------------------|
-| admin | address | 252 | 0 | 20 | ProverSet |
-|------------------+--------------------------+------+--------+-------+--------------------------------------------------|
-| \_\_gap | uint256[48] | 253 | 0 | 1536 | ProverSet |
-╰------------------+--------------------------+------+--------+-------+--------------------------------------------------╯
-
-## GuardianProver
-
-╭-------------------------+-------------------------------------------------+------+--------+-------+------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+================================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | GuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | GuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | GuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | GuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | GuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | GuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | GuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | GuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | GuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | GuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | GuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | GuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | GuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+------------------------------------------------------------|
-| guardianIds | mapping(address => uint256) | 251 | 0 | 32 | GuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+------------------------------------------------------------|
-| approvals | mapping(uint256 => mapping(bytes32 => uint256)) | 252 | 0 | 32 | GuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+------------------------------------------------------------|
-| guardians | address[] | 253 | 0 | 32 | GuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+------------------------------------------------------------|
-| version | uint32 | 254 | 0 | 4 | GuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+------------------------------------------------------------|
-| minGuardians | uint32 | 254 | 4 | 4 | GuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+------------------------------------------------------------|
-| provingAutoPauseEnabled | bool | 254 | 8 | 1 | GuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+------------------------------------------------------------|
-| latestProofHash | mapping(uint256 => mapping(uint256 => bytes32)) | 255 | 0 | 32 | GuardianProver |
-|-------------------------+-------------------------------------------------+------+--------+-------+------------------------------------------------------------|
-| \_\_gap | uint256[45] | 256 | 0 | 1440 | GuardianProver |
-╰-------------------------+-------------------------------------------------+------+--------+-------+------------------------------------------------------------╯
-
-
-
-## ForkManager
-
-╭---------------+-------------+------+--------+-------+---------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+=========================================================================================================+
-| _initialized | uint8 | 0 | 0 | 1 | ForkManager |
-|---------------+-------------+------+--------+-------+---------------------------------------------------|
-| _initializing | bool | 0 | 1 | 1 | ForkManager |
-|---------------+-------------+------+--------+-------+---------------------------------------------------|
-| __gap | uint256[50] | 1 | 0 | 1600 | ForkManager |
-|---------------+-------------+------+--------+-------+---------------------------------------------------|
-| _owner | address | 51 | 0 | 20 | ForkManager |
-|---------------+-------------+------+--------+-------+---------------------------------------------------|
-| __gap | uint256[49] | 52 | 0 | 1568 | ForkManager |
-|---------------+-------------+------+--------+-------+---------------------------------------------------|
-| _pendingOwner | address | 101 | 0 | 20 | ForkManager |
-|---------------+-------------+------+--------+-------+---------------------------------------------------|
-| __gap | uint256[49] | 102 | 0 | 1568 | ForkManager |
-╰---------------+-------------+------+--------+-------+---------------------------------------------------╯
-
-
diff --git a/packages/protocol/contract_layout_layer2.md b/packages/protocol/contract_layout_layer2.md
index 1733909fe13..e69de29bb2d 100644
--- a/packages/protocol/contract_layout_layer2.md
+++ b/packages/protocol/contract_layout_layer2.md
@@ -1,825 +0,0 @@
-## ERC1155Vault
-
-╭--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+===============================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[50] | 251 | 0 | 1600 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| bridgedToCanonical | mapping(address => struct BaseNFTVault.CanonicalNFT) | 301 | 0 | 32 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| canonicalToBridged | mapping(uint256 => mapping(address => address)) | 302 | 0 | 32 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[48] | 303 | 0 | 1536 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[50] | 351 | 0 | 1600 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[50] | 401 | 0 | 1600 | ERC1155Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_\_gap | uint256[50] | 451 | 0 | 1600 | ERC1155Vault |
-╰--------------------+------------------------------------------------------+------+--------+-------+-----------------------------------------------------------╯
-
-## ERC20Vault
-
-╭--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+===========================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **gap | uint256[50] | 251 | 0 | 1600 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| bridgedToCanonical | mapping(address => struct ERC20Vault.CanonicalERC20) | 301 | 0 | 32 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| canonicalToBridged | mapping(uint256 => mapping(address => address)) | 302 | 0 | 32 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| btokenDenylist | mapping(address => bool) | 303 | 0 | 32 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| lastMigrationStart | mapping(uint256 => mapping(address => uint256)) | 304 | 0 | 32 | ERC20Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **gap | uint256[46] | 305 | 0 | 1472 | ERC20Vault |
-╰--------------------+------------------------------------------------------+------+--------+-------+-------------------------------------------------------╯
-
-## ERC721Vault
-
-╭--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+=============================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **gap | uint256[50] | 251 | 0 | 1600 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| bridgedToCanonical | mapping(address => struct BaseNFTVault.CanonicalNFT) | 301 | 0 | 32 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| canonicalToBridged | mapping(uint256 => mapping(address => address)) | 302 | 0 | 32 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **gap | uint256[48] | 303 | 0 | 1536 | ERC721Vault |
-|--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| \_\_gap | uint256[50] | 351 | 0 | 1600 | ERC721Vault |
-╰--------------------+------------------------------------------------------+------+--------+-------+---------------------------------------------------------╯
-
-## BridgedERC20
-
-╭------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+========================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_balances | mapping(address => uint256) | 251 | 0 | 32 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_allowances | mapping(address => mapping(address => uint256)) | 252 | 0 | 32 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_totalSupply | uint256 | 253 | 0 | 32 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_name | string | 254 | 0 | 32 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_symbol | string | 255 | 0 | 32 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[45] | 256 | 0 | 1440 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| srcToken | address | 301 | 0 | 20 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **srcDecimals | uint8 | 301 | 20 | 1 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| srcChainId | uint256 | 302 | 0 | 32 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| migratingAddress | address | 303 | 0 | 20 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| migratingInbound | bool | 303 | 20 | 1 | BridgedERC20 |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_\_gap | uint256[47] | 304 | 0 | 1504 | BridgedERC20 |
-╰------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------╯
-
-## BridgedERC20V2
-
-╭------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+===================================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_balances | mapping(address => uint256) | 251 | 0 | 32 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_allowances | mapping(address => mapping(address => uint256)) | 252 | 0 | 32 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_totalSupply | uint256 | 253 | 0 | 32 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_name | string | 254 | 0 | 32 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_symbol | string | 255 | 0 | 32 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[45] | 256 | 0 | 1440 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| srcToken | address | 301 | 0 | 20 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **srcDecimals | uint8 | 301 | 20 | 1 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| srcChainId | uint256 | 302 | 0 | 32 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| migratingAddress | address | 303 | 0 | 20 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| migratingInbound | bool | 303 | 20 | 1 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[47] | 304 | 0 | 1504 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_hashedName | bytes32 | 351 | 0 | 32 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_hashedVersion | bytes32 | 352 | 0 | 32 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_name | string | 353 | 0 | 32 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_version | string | 354 | 0 | 32 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[48] | 355 | 0 | 1536 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_nonces | mapping(address => struct CountersUpgradeable.Counter) | 403 | 0 | 32 | BridgedERC20V2 |
-|------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_\_gap | uint256[49] | 404 | 0 | 1568 | BridgedERC20V2 |
-╰------------------+--------------------------------------------------------+------+--------+-------+---------------------------------------------------------------╯
-
-## BridgedERC721
-
-╭--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+=========================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| **gap | uint256[50] | 251 | 0 | 1600 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| \_name | string | 301 | 0 | 32 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| \_symbol | string | 302 | 0 | 32 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| \_owners | mapping(uint256 => address) | 303 | 0 | 32 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| \_balances | mapping(address => uint256) | 304 | 0 | 32 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| \_tokenApprovals | mapping(uint256 => address) | 305 | 0 | 32 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| \_operatorApprovals | mapping(address => mapping(address => bool)) | 306 | 0 | 32 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| **gap | uint256[44] | 307 | 0 | 1408 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| srcToken | address | 351 | 0 | 20 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| srcChainId | uint256 | 352 | 0 | 32 | BridgedERC721 |
-|--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------|
-| \_\_gap | uint256[48] | 353 | 0 | 1536 | BridgedERC721 |
-╰--------------------+----------------------------------------------+------+--------+-------+-------------------------------------------------------------╯
-
-## BridgedERC1155
-
-╭--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+==============================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[50] | 251 | 0 | 1600 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_balances | mapping(uint256 => mapping(address => uint256)) | 301 | 0 | 32 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_operatorApprovals | mapping(address => mapping(address => bool)) | 302 | 0 | 32 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_uri | string | 303 | 0 | 32 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| **gap | uint256[47] | 304 | 0 | 1504 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| srcToken | address | 351 | 0 | 20 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| srcChainId | uint256 | 352 | 0 | 32 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| symbol | string | 353 | 0 | 32 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| name | string | 354 | 0 | 32 | BridgedERC1155 |
-|--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------|
-| \_\_gap | uint256[46] | 355 | 0 | 1472 | BridgedERC1155 |
-╰--------------------+-------------------------------------------------+------+--------+-------+---------------------------------------------------------------╯
-
-## Bridge
-
-╭------------------+-----------------------------------------+------+--------+-------+-------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| **reserved1 | uint64 | 251 | 0 | 8 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| nextMessageId | uint64 | 251 | 8 | 8 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| messageStatus | mapping(bytes32 => enum IBridge.Status) | 252 | 0 | 32 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| **ctx | struct IBridge.Context | 253 | 0 | 64 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| **reserved2 | uint256 | 255 | 0 | 32 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| **reserved3 | uint256 | 256 | 0 | 32 | Bridge |
-|------------------+-----------------------------------------+------+--------+-------+-------------------------------------------|
-| \_\_gap | uint256[44] | 257 | 0 | 1408 | Bridge |
-╰------------------+-----------------------------------------+------+--------+-------+-------------------------------------------╯
-
-## QuotaManager
-
-╭------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+==================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | QuotaManager |
-|------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | QuotaManager |
-|------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | QuotaManager |
-|------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | QuotaManager |
-|------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | QuotaManager |
-|------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | QuotaManager |
-|------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | QuotaManager |
-|------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | QuotaManager |
-|------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | QuotaManager |
-|------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | QuotaManager |
-|------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | QuotaManager |
-|------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | QuotaManager |
-|------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | QuotaManager |
-|------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| tokenQuota | mapping(address => struct QuotaManager.Quota) | 251 | 0 | 32 | QuotaManager |
-|------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| quotaPeriod | uint24 | 252 | 0 | 3 | QuotaManager |
-|------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------|
-| \_\_gap | uint256[48] | 253 | 0 | 1536 | QuotaManager |
-╰------------------+-----------------------------------------------+------+--------+-------+-------------------------------------------------------╯
-
-## AddressManager
-
-╭------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+========================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | AddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | AddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | AddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | AddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | AddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | AddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | AddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | AddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | AddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | AddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | AddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | AddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | AddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **addresses | mapping(uint256 => mapping(bytes32 => address)) | 251 | 0 | 32 | AddressManager |
-|------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------|
-| **gap | uint256[49] | 252 | 0 | 1568 | AddressManager |
-╰------------------+-------------------------------------------------+------+--------+-------+-----------------------------------------------------------╯
-
-## AddressResolver
-
-╭----------------+-------------+------+--------+-------+-------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+====================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | AddressResolver |
-|----------------+-------------+------+--------+-------+-------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | AddressResolver |
-|----------------+-------------+------+--------+-------+-------------------------------------------------------------|
-| addressManager | address | 0 | 2 | 20 | AddressResolver |
-|----------------+-------------+------+--------+-------+-------------------------------------------------------------|
-| \_\_gap | uint256[49] | 1 | 0 | 1568 | AddressResolver |
-╰----------------+-------------+------+--------+-------+-------------------------------------------------------------╯
-
-## EssentialContract
-
-╭------------------+-------------+------+--------+-------+-----------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+==========================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | EssentialContract |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | EssentialContract |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | EssentialContract |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | EssentialContract |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | EssentialContract |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | EssentialContract |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | EssentialContract |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | EssentialContract |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | EssentialContract |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | EssentialContract |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | EssentialContract |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | EssentialContract |
-|------------------+-------------+------+--------+-------+-----------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | EssentialContract |
-╰------------------+-------------+------+--------+-------+-----------------------------------------------------------------╯
-
-## SignalService
-
-╭------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+====================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | SignalService |
-|------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | SignalService |
-|------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | SignalService |
-|------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | SignalService |
-|------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | SignalService |
-|------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | SignalService |
-|------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | SignalService |
-|------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | SignalService |
-|------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | SignalService |
-|------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | SignalService |
-|------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | SignalService |
-|------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | SignalService |
-|------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | SignalService |
-|------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| topBlockId | mapping(uint64 => mapping(bytes32 => uint64)) | 251 | 0 | 32 | SignalService |
-|------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| isAuthorized | mapping(address => bool) | 252 | 0 | 32 | SignalService |
-|------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------|
-| \_\_gap | uint256[48] | 253 | 0 | 1536 | SignalService |
-╰------------------+-----------------------------------------------+------+--------+-------+---------------------------------------------------------╯
-
-## BridgedTaikoToken
-
-╭-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+==============================================================================================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| **slots_previously_used_by_ERC20SnapshotUpgradeable | uint256[50] | 251 | 0 | 1600 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| \_balances | mapping(address => uint256) | 301 | 0 | 32 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| \_allowances | mapping(address => mapping(address => uint256)) | 302 | 0 | 32 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| \_totalSupply | uint256 | 303 | 0 | 32 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| \_name | string | 304 | 0 | 32 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| \_symbol | string | 305 | 0 | 32 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| **gap | uint256[45] | 306 | 0 | 1440 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| \_hashedName | bytes32 | 351 | 0 | 32 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| \_hashedVersion | bytes32 | 352 | 0 | 32 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| \_name | string | 353 | 0 | 32 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| \_version | string | 354 | 0 | 32 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| **gap | uint256[48] | 355 | 0 | 1536 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| \_nonces | mapping(address => struct CountersUpgradeable.Counter) | 403 | 0 | 32 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| \_PERMIT_TYPEHASH_DEPRECATED_SLOT | bytes32 | 404 | 0 | 32 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| **gap | uint256[49] | 405 | 0 | 1568 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| \_delegates | mapping(address => address) | 454 | 0 | 32 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| \_checkpoints | mapping(address => struct ERC20VotesUpgradeable.Checkpoint[]) | 455 | 0 | 32 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| \_totalSupplyCheckpoints | struct ERC20VotesUpgradeable.Checkpoint[] | 456 | 0 | 32 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| **gap | uint256[47] | 457 | 0 | 1504 | BridgedTaikoToken |
-|-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------|
-| **gap | uint256[50] | 504 | 0 | 1600 | BridgedTaikoToken |
-╰-----------------------------------------------------+---------------------------------------------------------------+------+--------+-------+----------------------------------------------------------------╯
-
-## DelegateOwner
-
-╭------------------+-------------+------+--------+-------+--------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+===========================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | DelegateOwner |
-|------------------+-------------+------+--------+-------+--------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | DelegateOwner |
-|------------------+-------------+------+--------+-------+--------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | DelegateOwner |
-|------------------+-------------+------+--------+-------+--------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | DelegateOwner |
-|------------------+-------------+------+--------+-------+--------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | DelegateOwner |
-|------------------+-------------+------+--------+-------+--------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | DelegateOwner |
-|------------------+-------------+------+--------+-------+--------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | DelegateOwner |
-|------------------+-------------+------+--------+-------+--------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | DelegateOwner |
-|------------------+-------------+------+--------+-------+--------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | DelegateOwner |
-|------------------+-------------+------+--------+-------+--------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | DelegateOwner |
-|------------------+-------------+------+--------+-------+--------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | DelegateOwner |
-|------------------+-------------+------+--------+-------+--------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | DelegateOwner |
-|------------------+-------------+------+--------+-------+--------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | DelegateOwner |
-|------------------+-------------+------+--------+-------+--------------------------------------------------|
-| remoteChainId | uint64 | 251 | 0 | 8 | DelegateOwner |
-|------------------+-------------+------+--------+-------+--------------------------------------------------|
-| admin | address | 251 | 8 | 20 | DelegateOwner |
-|------------------+-------------+------+--------+-------+--------------------------------------------------|
-| nextTxId | uint64 | 252 | 0 | 8 | DelegateOwner |
-|------------------+-------------+------+--------+-------+--------------------------------------------------|
-| remoteOwner | address | 252 | 8 | 20 | DelegateOwner |
-|------------------+-------------+------+--------+-------+--------------------------------------------------|
-| \_\_gap | uint256[48] | 253 | 0 | 1536 | DelegateOwner |
-╰------------------+-------------+------+--------+-------+--------------------------------------------------╯
-
-## TaikoL2
-
-╭------------------+-----------------------------+------+--------+-------+--------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+=====================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | TaikoL2 |
-|------------------+-----------------------------+------+--------+-------+--------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | TaikoL2 |
-|------------------+-----------------------------+------+--------+-------+--------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | TaikoL2 |
-|------------------+-----------------------------+------+--------+-------+--------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | TaikoL2 |
-|------------------+-----------------------------+------+--------+-------+--------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | TaikoL2 |
-|------------------+-----------------------------+------+--------+-------+--------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | TaikoL2 |
-|------------------+-----------------------------+------+--------+-------+--------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | TaikoL2 |
-|------------------+-----------------------------+------+--------+-------+--------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | TaikoL2 |
-|------------------+-----------------------------+------+--------+-------+--------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | TaikoL2 |
-|------------------+-----------------------------+------+--------+-------+--------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | TaikoL2 |
-|------------------+-----------------------------+------+--------+-------+--------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | TaikoL2 |
-|------------------+-----------------------------+------+--------+-------+--------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | TaikoL2 |
-|------------------+-----------------------------+------+--------+-------+--------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | TaikoL2 |
-|------------------+-----------------------------+------+--------+-------+--------------------------------------------|
-| \_blockhashes | mapping(uint256 => bytes32) | 251 | 0 | 32 | TaikoL2 |
-|------------------+-----------------------------+------+--------+-------+--------------------------------------------|
-| publicInputHash | bytes32 | 252 | 0 | 32 | TaikoL2 |
-|------------------+-----------------------------+------+--------+-------+--------------------------------------------|
-| parentGasExcess | uint64 | 253 | 0 | 8 | TaikoL2 |
-|------------------+-----------------------------+------+--------+-------+--------------------------------------------|
-| lastSyncedBlock | uint64 | 253 | 8 | 8 | TaikoL2 |
-|------------------+-----------------------------+------+--------+-------+--------------------------------------------|
-| parentTimestamp | uint64 | 253 | 16 | 8 | TaikoL2 |
-|------------------+-----------------------------+------+--------+-------+--------------------------------------------|
-| parentGasTarget | uint64 | 253 | 24 | 8 | TaikoL2 |
-|------------------+-----------------------------+------+--------+-------+--------------------------------------------|
-| l1ChainId | uint64 | 254 | 0 | 8 | TaikoL2 |
-|------------------+-----------------------------+------+--------+-------+--------------------------------------------|
-| \_\_gap | uint256[46] | 255 | 0 | 1472 | TaikoL2 |
-╰------------------+-----------------------------+------+--------+-------+--------------------------------------------╯
-
-## HeklaTaikoL2
-
-╭------------------+-----------------------------+------+--------+-------+------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+===============================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | HeklaTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | HeklaTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | HeklaTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | HeklaTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | HeklaTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | HeklaTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | HeklaTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | HeklaTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | HeklaTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | HeklaTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | HeklaTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | HeklaTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | HeklaTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------|
-| \_blockhashes | mapping(uint256 => bytes32) | 251 | 0 | 32 | HeklaTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------|
-| publicInputHash | bytes32 | 252 | 0 | 32 | HeklaTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------|
-| parentGasExcess | uint64 | 253 | 0 | 8 | HeklaTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------|
-| lastSyncedBlock | uint64 | 253 | 8 | 8 | HeklaTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------|
-| parentTimestamp | uint64 | 253 | 16 | 8 | HeklaTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------|
-| parentGasTarget | uint64 | 253 | 24 | 8 | HeklaTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------|
-| l1ChainId | uint64 | 254 | 0 | 8 | HeklaTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------|
-| \_\_gap | uint256[46] | 255 | 0 | 1472 | HeklaTaikoL2 |
-╰------------------+-----------------------------+------+--------+-------+------------------------------------------------------╯
-
-## MainnetTaikoL2
-
-╭------------------+-----------------------------+------+--------+-------+------------------------------------------------------------╮
-| Name | Type | Slot | Offset | Bytes | Contract |
-+=====================================================================================================================================+
-| \_initialized | uint8 | 0 | 0 | 1 | MainnetTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------------|
-| \_initializing | bool | 0 | 1 | 1 | MainnetTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------------|
-| **gap | uint256[50] | 1 | 0 | 1600 | MainnetTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------------|
-| \_owner | address | 51 | 0 | 20 | MainnetTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------------|
-| **gap | uint256[49] | 52 | 0 | 1568 | MainnetTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------------|
-| \_pendingOwner | address | 101 | 0 | 20 | MainnetTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------------|
-| **gap | uint256[49] | 102 | 0 | 1568 | MainnetTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------------|
-| addressManager | address | 151 | 0 | 20 | MainnetTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------------|
-| **gap | uint256[49] | 152 | 0 | 1568 | MainnetTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------------|
-| **reentry | uint8 | 201 | 0 | 1 | MainnetTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------------|
-| **paused | uint8 | 201 | 1 | 1 | MainnetTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------------|
-| **lastUnpausedAt | uint64 | 201 | 2 | 8 | MainnetTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------------|
-| **gap | uint256[49] | 202 | 0 | 1568 | MainnetTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------------|
-| \_blockhashes | mapping(uint256 => bytes32) | 251 | 0 | 32 | MainnetTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------------|
-| publicInputHash | bytes32 | 252 | 0 | 32 | MainnetTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------------|
-| parentGasExcess | uint64 | 253 | 0 | 8 | MainnetTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------------|
-| lastSyncedBlock | uint64 | 253 | 8 | 8 | MainnetTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------------|
-| parentTimestamp | uint64 | 253 | 16 | 8 | MainnetTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------------|
-| parentGasTarget | uint64 | 253 | 24 | 8 | MainnetTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------------|
-| l1ChainId | uint64 | 254 | 0 | 8 | MainnetTaikoL2 |
-|------------------+-----------------------------+------+--------+-------+------------------------------------------------------------|
-| \_\_gap | uint256[46] | 255 | 0 | 1472 | MainnetTaikoL2 |
-╰------------------+-----------------------------+------+--------+-------+------------------------------------------------------------╯
diff --git a/packages/protocol/contracts/layer1/based/TaikoL1.sol b/packages/protocol/contracts/layer1/based/TaikoL1.sol
index 1ce30755442..0a1175e5fce 100644
--- a/packages/protocol/contracts/layer1/based/TaikoL1.sol
+++ b/packages/protocol/contracts/layer1/based/TaikoL1.sol
@@ -25,13 +25,6 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents {
uint256[50] private __gap;
- /// @dev Emitted to assist with future gas optimizations.
- /// @param isProposeBlock True if measuring gas for proposing a block, false if measuring gas
- /// for proving a block.
- /// @param gasUsed The average gas used per block, including verifications.
- /// @param batchSize The number of blocks proposed or proved.
- event DebugGasPerBlock(bool isProposeBlock, uint256 gasUsed, uint256 batchSize);
-
error L1_FORK_HEIGHT_ERROR();
modifier whenProvingNotPaused() {
@@ -44,16 +37,6 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents {
emit StateVariablesUpdated(state.slotB);
}
- modifier measureGasUsed(bool _isProposeBlock, uint256 _batchSize) {
- uint256 gas = gasleft();
- _;
- unchecked {
- if (_batchSize > 0) {
- emit DebugGasPerBlock(_isProposeBlock, gas - gasleft() / _batchSize, _batchSize);
- }
- }
- }
-
/// @notice Initializes the contract.
/// @param _owner The owner of this contract. msg.sender will be used if this value is zero.
/// @param _rollupAddressManager The address of the {AddressManager} contract.
@@ -90,7 +73,6 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents {
bytes calldata _txList
)
external
- measureGasUsed(true, 1)
whenNotPaused
nonReentrant
emitEventForClient
@@ -106,7 +88,6 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents {
bytes[] calldata _txListArr
)
external
- measureGasUsed(true, _paramsArr.length)
whenNotPaused
nonReentrant
emitEventForClient
@@ -122,7 +103,6 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents {
bytes calldata _input
)
external
- measureGasUsed(false, 1)
whenNotPaused
whenProvingNotPaused
nonReentrant
@@ -138,7 +118,6 @@ contract TaikoL1 is EssentialContract, ITaikoL1, TaikoEvents {
bytes calldata _batchProof
)
external
- measureGasUsed(false, _blockIds.length)
whenNotPaused
whenProvingNotPaused
nonReentrant
diff --git a/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol b/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol
index 3f92804e7e3..003cc333e52 100644
--- a/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol
+++ b/packages/protocol/contracts/layer1/mainnet/addrcache/RollupAddressCache.sol
@@ -37,7 +37,7 @@ contract RollupAddressCache is AddressCache {
return (true, 0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a);
}
if (_name == LibStrings.B_TIER_ROUTER) {
- return (true, 0x394E30d83d020469a1F8b16E89D7fD5FdB1935b0);
+ return (true, 0x8a4c692F12d3a9750E744A4CE24a1d351bE52E66);
}
if (_name == LibStrings.B_TIER_SGX) {
return (true, 0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81);
diff --git a/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol b/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol
index 0499226f1ce..331a3bee38f 100644
--- a/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol
+++ b/packages/protocol/contracts/layer1/mainnet/rollup/MainnetTierRouter.sol
@@ -35,8 +35,8 @@ contract MainnetTierRouter is ITierRouter, TierProviderBase {
/// @inheritdoc ITierProvider
function getMinTier(address _proposer, uint256 _rand) public view override returns (uint16) {
if (_proposer == DAO_FALLBACK_PROPOSER) {
- if (_rand % 200 == 0) return LibTiers.TIER_ZKVM_RISC0;
- else if (_rand % 40 == 1) return LibTiers.TIER_ZKVM_SP1;
+ if (_rand % 1000 == 0) return LibTiers.TIER_ZKVM_RISC0;
+ else if (_rand % 1000 < 99) return LibTiers.TIER_ZKVM_SP1;
else return LibTiers.TIER_SGX;
}
return LibTiers.TIER_SGX;
diff --git a/packages/protocol/deployments/mainnet-contract-logs-L1.md b/packages/protocol/deployments/mainnet-contract-logs-L1.md
index e084844b82d..89b083c9496 100644
--- a/packages/protocol/deployments/mainnet-contract-logs-L1.md
+++ b/packages/protocol/deployments/mainnet-contract-logs-L1.md
@@ -175,14 +175,14 @@
- ens: `ram.based.taiko.eth`
- proxy: `0x579f40D0BE111b823962043702cabe6Aaa290780`
-- impl: `0x52CA3c5566d779b3c6bb5c4f760Ea39E294Fc788`
+- impl: `0x0079a79E5d8DDA67029051d505E5A11DE279B36D`
- names:
- bond_token: `0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800`
- taiko_token: `0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800`
- signal_service: `0x9e0a24964e5397B566c1ed39258e21aB5E35C77C`
- bridge: `0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC`
- taiko: `0x06a9Ab27c7e2255df1815E6CC0168d7755Feb19a`
- - tier_router: `0x394E30d83d020469a1F8b16E89D7fD5FdB1935b0`
+ - tier_router: `0x8a4c692F12d3a9750E744A4CE24a1d351bE52E66`
- tier_sgx: `0xb0f3186FC1963f774f52ff455DC86aEdD0b31F81`
- risc0_groth16_verifier: `0xcF706D99C265fC2349AE43c5f6BFD7931FE5308D`
- tier_zkvm_risc0: `0x55902b2D3DF2A65370A89C86Ae9dd71Ecd508edc`
@@ -217,6 +217,7 @@
- upgraded from `0x3202Fc255aE09F91DbbD5b000b87dA4A2E04eE37` to `0x190D5d50D98D2202a618f75B2fD9986e60E096be` @commit`4fd7b59` @tx`0xf26d0526aa4b8225c603720ce0dc016803188b959c50677d5446087d1f2c4e60`
- upgraded from `0x190D5d50D98D2202a618f75B2fD9986e60E096be` to `0x6D8e6e1a061791AD17A55De5e15a111c58f6Fb3D` @commit`2625c60` @tx`0x5d46840df79d8df508880675e7ea549e9b46137f597ca520c3e0c979439441d1`
- upgraded from `0x6D8e6e1a061791AD17A55De5e15a111c58f6Fb3D` to `0x52CA3c5566d779b3c6bb5c4f760Ea39E294Fc788` @commit`9ae9a5e` @tx`0x43353a74df973d8f6a379b5c8815ac80935a5099f8ab93a4aa204eb5ef2c663e`
+ - upgraded from `0x52CA3c5566d779b3c6bb5c4f760Ea39E294Fc788` to `0x0079a79E5d8DDA67029051d505E5A11DE279B36D` @commit`06128e8` @tx`0xe66aba9f8bfcd86dc0ae32416862ca61a51c47f8ec747799e65f155ef27eeb20`
#### taikoL1
@@ -243,16 +244,20 @@
- Upgrade to `0x4229d14F520848aa83760Cf748abEB8A69cdaB2d` @commit`9345f14` @tx`0x13ea4d044a313cf667d16514465e6b96227ef7198bda7b19c70eefee44e9bccd`
- Upgrade to `0xA3E75eDA1Be2114816f388A5cF53EbA142DCDB17` @commit`ea0158f` @tx`0x78ca7c7d9c7e5aa9c5e6ab80e0229289a8d3bc8df2c2b9ba6baa74a0f60a0703`
- Upgrade to `0xe7c4B445D3C7C8E4D68afb85A068F9fAa18e9A5B` @commit`ea0158f` with new `RollupAddressManagerCache` @commit `9ae9a5e` @tx`0x5eb57ab352b3e3c1ddbc3fe468d582901b88c6a137ce49b0d70857d5218d626d`
+ - Upgrade to `0xb74A66b6CF50AD63E29669F0BDE4354E11758162` @commit`06128e8` @tx`0xe66aba9f8bfcd86dc0ae32416862ca61a51c47f8ec747799e65f155ef27eeb20`
+ - Upgrade to `0xd4896d4537c6425aC5d89B9f122d4E4ac4D65e1c` @commit`ea0158f` with new `RollupAddressManagerCache` @commit `7394458` @tx`0x9c2f36af40c0004110041fc45d980b73b0c8dde8064713a55aeb6f69fca77a99`
+ - Upgrade to `0xe7c4B445D3C7C8E4D68afb85A068F9fAa18e9A5B` @commit`ea0158f` with new `RollupAddressManagerCache` @commit `9ae9a5e` @tx`0x5eb57ab352b3e3c1ddbc3fe468d582901b88c6a137ce49b0d70857d5218d626d`
#### tier_router
-- impl: `0x394E30d83d020469a1F8b16E89D7fD5FdB1935b0`
+- impl: `0x8a4c692F12d3a9750E744A4CE24a1d351bE52E66`
- logs:
- deployed on Oct 24, 2024 @commit`7334b1d`
- deployed on Nov 1, 2024 @commit`f4f4796`
- deployed on Nov 2, 2024 @commit`9182fba`
- deployed on Nov 8, 2024 @commit`1fee7bb` without changes in [PR #18371](https://github.com/taikoxyz/taiko-mono/pull/18371)
- deployed on Nov 10, 2024 @commit`f24a908` without changes in [PR #18371](https://github.com/taikoxyz/taiko-mono/pull/18371)
+ - deployed on Dec 20, 2024 @commit`06128e8` without changes in [PR #18371](https://github.com/taikoxyz/taiko-mono/pull/18371)
#### tier_sgx
@@ -395,7 +400,7 @@
- ens: `labprover.taiko.eth`
- proxy: `0x68d30f47F19c07bCCEf4Ac7FAE2Dc12FCa3e0dC9`
-- impl: `0x3022Ed0346CCE0c08268c8ad081458AfD95E8763`
+- impl: `0xd0d3f025D83D7122de7eC43e86331C57c8A4F30B`
- enabled provers:
- `0x000000629FBCf27A347d1AEbA658435230D74a5f`
- `0x000000633b68f5d8d3a86593ebb815b4663bcbe0`
@@ -412,12 +417,13 @@
- upgraded from `0x518845daA8870bE2C59E49620Fc262AD48953C9a` to `0x74828E5fe803072AF9Df512B3911B4223572D652` @commit`bb2abc5` @tx`0xc1f91c375713f601b99cf6d2cdb80c129e036a7c9ec5f75871c4d13216dbbb5c`
- upgraded from `0x74828E5fe803072AF9Df512B3911B4223572D652` to `0xCE5a119479337a153CA3bd1b2bF9755c78F2B15A` @commit`be34059` @tx`0x170617251f2345eda4bcbd29e316caa0b014602a44244c60b963382ac7da7748`
- upgraded from `0xCE5a119479337a153CA3bd1b2bF9755c78F2B15A` to `0x3022Ed0346CCE0c08268c8ad081458AfD95E8763` @commit`9345f14` @tx`0x13ea4d044a313cf667d16514465e6b96227ef7198bda7b19c70eefee44e9bccd`
+ - upgraded from `0x3022Ed0346CCE0c08268c8ad081458AfD95E8763` to `0xd0d3f025D83D7122de7eC43e86331C57c8A4F30B` @commit`06128e8` @tx`0xe66aba9f8bfcd86dc0ae32416862ca61a51c47f8ec747799e65f155ef27eeb20`
### labcontester.taiko.eth
- ens: `labcontester.taiko.eth`
- proxy: `0xa01d464ca3982DAa97B19fa7F8a232eB11A9DDb3`
-- impl: `0x3022Ed0346CCE0c08268c8ad081458AfD95E8763`
+- impl: `0xd0d3f025D83D7122de7eC43e86331C57c8A4F30B`
- enabled provers:
- `0x00000027F51a57E7FcBC4b481d15fcE5BE68b30B`
- logs:
@@ -428,3 +434,4 @@
- upgraded from `0x518845daA8870bE2C59E49620Fc262AD48953C9a` to `0x74828E5fe803072AF9Df512B3911B4223572D652` @commit`bb2abc5` @tx`0xc1f91c375713f601b99cf6d2cdb80c129e036a7c9ec5f75871c4d13216dbbb5c`
- upgraded from `0x74828E5fe803072AF9Df512B3911B4223572D652` to `0xCE5a119479337a153CA3bd1b2bF9755c78F2B15A` @commit`be34059` @tx`0x170617251f2345eda4bcbd29e316caa0b014602a44244c60b963382ac7da7748`
- upgraded from `0xCE5a119479337a153CA3bd1b2bF9755c78F2B15A` to `0x3022Ed0346CCE0c08268c8ad081458AfD95E8763` @commit`9345f14` @tx`0x13ea4d044a313cf667d16514465e6b96227ef7198bda7b19c70eefee44e9bccd`
+ - upgraded from `0x3022Ed0346CCE0c08268c8ad081458AfD95E8763` to `0xd0d3f025D83D7122de7eC43e86331C57c8A4F30B` @commit`06128e8` @tx`0xe66aba9f8bfcd86dc0ae32416862ca61a51c47f8ec747799e65f155ef27eeb20`
diff --git a/packages/protocol/package.json b/packages/protocol/package.json
index f8a526c81c2..cf9f5272977 100644
--- a/packages/protocol/package.json
+++ b/packages/protocol/package.json
@@ -1,6 +1,6 @@
{
"name": "@taiko/protocol",
- "version": "1.10.0",
+ "version": "1.11.0",
"private": true,
"scripts": {
"buildMerkle": "ts-node ./utils/airdrop/buildMerkleTree.ts ./utils/airdrop/airdrop_db/example_claimList.json",
diff --git a/packages/protocol/script/gen-layouts.sh b/packages/protocol/script/gen-layouts.sh
index a6a774285b4..f3e74433b8d 100755
--- a/packages/protocol/script/gen-layouts.sh
+++ b/packages/protocol/script/gen-layouts.sh
@@ -92,7 +92,7 @@ for contract in "${contracts[@]}"; do
echo "inspect ${contract}"
echo "## ${contract}" >> $output_file
- FOUNDRY_PROFILE=${profile} forge inspect -C ./contracts/${profile} -o ./out/${profile} ${contract} storagelayout --pretty >> $output_file
+ FORGE_DISPLAY=plain FOUNDRY_PROFILE=${profile} forge inspect -C ./contracts/${profile} -o ./out/${profile} ${contract} storagelayout --pretty >> $output_file
echo "" >> $output_file
done
@@ -103,3 +103,11 @@ if [[ "$(uname -s)" == "Darwin" ]]; then
else
sed -i "$sed_pattern" "$output_file"
fi
+
+# Use awk to remove the last column and write to a temporary file
+temp_file="${output_file}_temp"
+while IFS= read -r line; do
+ # Remove everything behind the second-to-last "|"
+ echo "$line" | sed -E 's/\|[^|]*\|[^|]*$/|/'
+done < "$output_file" > "$temp_file"
+mv "$temp_file" "$output_file"
\ No newline at end of file
diff --git a/packages/relayer/docs/docs.go b/packages/relayer/docs/docs.go
index 622106df9d1..dde35e98426 100644
--- a/packages/relayer/docs/docs.go
+++ b/packages/relayer/docs/docs.go
@@ -17,7 +17,7 @@ const docTemplate = `{
},
"license": {
"name": "MIT",
- "url": "https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE.md"
+ "url": "https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE"
},
"version": "{{.Version}}"
},
diff --git a/packages/relayer/docs/swagger.json b/packages/relayer/docs/swagger.json
index 028b3a5e083..42ff334167b 100644
--- a/packages/relayer/docs/swagger.json
+++ b/packages/relayer/docs/swagger.json
@@ -10,7 +10,7 @@
},
"license": {
"name": "MIT",
- "url": "https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE.md"
+ "url": "https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE"
},
"version": "1.0"
},
diff --git a/packages/relayer/docs/swagger.yaml b/packages/relayer/docs/swagger.yaml
index 8e35602519f..1760c3aab6f 100644
--- a/packages/relayer/docs/swagger.yaml
+++ b/packages/relayer/docs/swagger.yaml
@@ -47,7 +47,7 @@ info:
url: https://community.taiko.xyz/
license:
name: MIT
- url: https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE.md
+ url: https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE
termsOfService: http://swagger.io/terms/
title: Taiko Bridge Relayer API
version: "1.0"
diff --git a/packages/relayer/pkg/http/server.go b/packages/relayer/pkg/http/server.go
index c3739197f9f..b64dc6e74d3 100644
--- a/packages/relayer/pkg/http/server.go
+++ b/packages/relayer/pkg/http/server.go
@@ -38,7 +38,7 @@ type ethClient interface {
// @contact.email info@taiko.xyz
// @license.name MIT
-// @license.url https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE.md
+// @license.url https://github.com/taikoxyz/taiko-mono/blob/main/LICENSE
// @host relayer.hekla.taiko.xyz
// Server represents an relayer http server instance.
diff --git a/packages/taiko-client/CHANGELOG.md b/packages/taiko-client/CHANGELOG.md
index 99eceb0e43e..bf15b7faff9 100644
--- a/packages/taiko-client/CHANGELOG.md
+++ b/packages/taiko-client/CHANGELOG.md
@@ -1,5 +1,60 @@
# Changelog
+## [0.40.0](https://github.com/taikoxyz/taiko-mono/compare/taiko-client-v0.39.2...taiko-client-v0.40.0) (2024-12-23)
+
+
+### Features
+
+* **protocol:** propose a batch blocks conditionally ([#18570](https://github.com/taikoxyz/taiko-mono/issues/18570)) ([e846f62](https://github.com/taikoxyz/taiko-mono/commit/e846f6289fea0b046ddcfcdfaf46f3727efbdf11))
+* **taiko-client:** add chain ID to `TryDecompress()` ([#18444](https://github.com/taikoxyz/taiko-mono/issues/18444)) ([10d99d5](https://github.com/taikoxyz/taiko-mono/commit/10d99d50d3866a6e233d9e3749ea5eb753335815))
+* **taiko-client:** client changes based on [#18150](https://github.com/taikoxyz/taiko-mono/issues/18150) ([#18350](https://github.com/taikoxyz/taiko-mono/issues/18350)) ([ddc6473](https://github.com/taikoxyz/taiko-mono/commit/ddc647327e8d58f5a2def5b902ad06800982544b))
+* **taiko-client:** compatible changes for `lastProposedIn` ([#18442](https://github.com/taikoxyz/taiko-mono/issues/18442)) ([28f32a7](https://github.com/taikoxyz/taiko-mono/commit/28f32a790cc680ecb3e6345221e4183af4f34b2e))
+* **taiko-client:** enable proof aggregation (batch proofs) ([#18163](https://github.com/taikoxyz/taiko-mono/issues/18163)) ([7642961](https://github.com/taikoxyz/taiko-mono/commit/7642961a9031840183f4d00d0a4c19fdb8a68058))
+* **taiko-client:** improve `ProofBuffer` ([#18627](https://github.com/taikoxyz/taiko-mono/issues/18627)) ([c386589](https://github.com/taikoxyz/taiko-mono/commit/c3865896523712afa108be810e75b511e7ecc0c4))
+* **taiko-client:** make p2p-sync required ([#18571](https://github.com/taikoxyz/taiko-mono/issues/18571)) ([de92b28](https://github.com/taikoxyz/taiko-mono/commit/de92b28c03b747845a8a1aa26991307d1ed47fd0))
+* **taiko-client:** revert pr 18442 ([#18450](https://github.com/taikoxyz/taiko-mono/issues/18450)) ([0706f0a](https://github.com/taikoxyz/taiko-mono/commit/0706f0aee9c318d8de298f98480a46de6337937c))
+* **taiko-client:** update Go contract bindings ([#18381](https://github.com/taikoxyz/taiko-mono/issues/18381)) ([71cfc5c](https://github.com/taikoxyz/taiko-mono/commit/71cfc5ce1ef06dcf099a4ce9b22bea6100406148))
+* **taiko-client:** update Go contract bindings ([#18384](https://github.com/taikoxyz/taiko-mono/issues/18384)) ([8dd14a1](https://github.com/taikoxyz/taiko-mono/commit/8dd14a1b4b21ce77ed3aac935b1d2c950e11e729))
+* **taiko-client:** update Go contract bindings ([#18462](https://github.com/taikoxyz/taiko-mono/issues/18462)) ([bc0ee99](https://github.com/taikoxyz/taiko-mono/commit/bc0ee9952234cc6722d3a0e9d9ebd92bca706999))
+
+
+### Bug Fixes
+
+* **taiko-client:** valid status check in `BatchGetBlocksProofStatus` ([#18595](https://github.com/taikoxyz/taiko-mono/issues/18595)) ([ec5f599](https://github.com/taikoxyz/taiko-mono/commit/ec5f5999750f70efe58cc061c5856250dcef5ce2))
+
+
+### Chores
+
+* **taiko-client:** add `BaseFeeConfig.SharingPctg` to mainnet protocol config ([#18341](https://github.com/taikoxyz/taiko-mono/issues/18341)) ([75d14a7](https://github.com/taikoxyz/taiko-mono/commit/75d14a7afac83b4578a3c32456a28ae70373d5cb))
+* **taiko-client:** update CI badge and path ([#18441](https://github.com/taikoxyz/taiko-mono/issues/18441)) ([6aef03e](https://github.com/taikoxyz/taiko-mono/commit/6aef03e87eaf3cdbfb7637bd6122525f75c611f0))
+* **taiko-client:** update docker-compose config ([#18330](https://github.com/taikoxyz/taiko-mono/issues/18330)) ([74e4ca4](https://github.com/taikoxyz/taiko-mono/commit/74e4ca4aaef07af4958a7b61c95e385022b1cf3c))
+* **taiko-client:** update Go contract bindings generation script ([#18324](https://github.com/taikoxyz/taiko-mono/issues/18324)) ([4f698a0](https://github.com/taikoxyz/taiko-mono/commit/4f698a02bb1714caf527629a637323a9964cdb11))
+
+
+### Code Refactoring
+
+* **taiko-client:** move `utils` package from `internal/` to `pkg/` ([#18516](https://github.com/taikoxyz/taiko-mono/issues/18516)) ([b674857](https://github.com/taikoxyz/taiko-mono/commit/b67485732832fb90849179a7a8c8093f2228eb5a))
+
+
+### Tests
+
+* **taiko-client:** fix some lint issues for `taiko-client` ([#18517](https://github.com/taikoxyz/taiko-mono/issues/18517)) ([ac7eba6](https://github.com/taikoxyz/taiko-mono/commit/ac7eba69bfe13f026bc6e08074ebaec5dcb067eb))
+* **taiko-client:** introduce TestTxPoolContentWithMinTip test case ([#18285](https://github.com/taikoxyz/taiko-mono/issues/18285)) ([d572f4c](https://github.com/taikoxyz/taiko-mono/commit/d572f4c412e59094ea9a4c5ff0b0667c9c04bd66))
+* **taiko-client:** skip `TestCheckL1ReorgToSameHeightFork` temporarily ([#18522](https://github.com/taikoxyz/taiko-mono/issues/18522)) ([385fed2](https://github.com/taikoxyz/taiko-mono/commit/385fed2ce273d131635c54e99a11704a4ed385b8))
+
+
+### Workflow
+
+* **protocol:** trigger patch release (1.10.1) ([#18358](https://github.com/taikoxyz/taiko-mono/issues/18358)) ([f4f4796](https://github.com/taikoxyz/taiko-mono/commit/f4f4796488059b02c79d6fb15170df58dd31dc4e))
+* **repo:** change to trigger hive test manually ([#18514](https://github.com/taikoxyz/taiko-mono/issues/18514)) ([63dec66](https://github.com/taikoxyz/taiko-mono/commit/63dec6695b3e330ba7bd69857743741d7608e2a4))
+* **repo:** update go mod and use random port ([#18515](https://github.com/taikoxyz/taiko-mono/issues/18515)) ([3c2e943](https://github.com/taikoxyz/taiko-mono/commit/3c2e943ab2d6ff636ad69dc7e93df34d8f549c4d))
+
+
+### Build
+
+* **deps:** bump github.com/stretchr/testify from 1.9.0 to 1.10.0 ([#18539](https://github.com/taikoxyz/taiko-mono/issues/18539)) ([79f3fab](https://github.com/taikoxyz/taiko-mono/commit/79f3fab5f1d1ec1bb4ee18afb9268b622e894780))
+* **deps:** bump golang.org/x/sync from 0.9.0 to 0.10.0 ([#18560](https://github.com/taikoxyz/taiko-mono/issues/18560)) ([3d51970](https://github.com/taikoxyz/taiko-mono/commit/3d51970aa0953bbfecaeebf76ea7e664c875c0e4))
+
## [0.39.2](https://github.com/taikoxyz/taiko-mono/compare/taiko-client-v0.39.1...taiko-client-v0.39.2) (2024-10-24)
diff --git a/packages/taiko-client/README.md b/packages/taiko-client/README.md
index 2f2bdd812f0..70ff96eadbe 100644
--- a/packages/taiko-client/README.md
+++ b/packages/taiko-client/README.md
@@ -5,7 +5,7 @@
-Taiko protocol's client software implementation in Go. Learn more about Taiko nodes with [the docs](https://docs.taiko.xyz/core-concepts/taiko-nodes/).
+Taiko protocol's client software implementation in Go. Learn more about Taiko nodes with [the docs](https://docs.taiko.xyz/taiko-protocol/taiko-nodes).
## Project structure
diff --git a/packages/taiko-client/cmd/flags/driver.go b/packages/taiko-client/cmd/flags/driver.go
index 8d4152719ba..8f8dad3dbf1 100644
--- a/packages/taiko-client/cmd/flags/driver.go
+++ b/packages/taiko-client/cmd/flags/driver.go
@@ -8,6 +8,14 @@ import (
// Optional flags used by driver.
var (
+ P2PSync = &cli.BoolFlag{
+ Name: "p2p.sync",
+ Usage: "Try P2P syncing blocks between L2 execution engines, " +
+ "will be helpful to bring a new node online quickly",
+ Value: false,
+ Category: driverCategory,
+ EnvVars: []string{"P2P_SYNC"},
+ }
P2PSyncTimeout = &cli.DurationFlag{
Name: "p2p.syncTimeout",
Usage: "P2P syncing timeout, if no sync progress is made within this time span, " +
@@ -19,7 +27,6 @@ var (
CheckPointSyncURL = &cli.StringFlag{
Name: "p2p.checkPointSyncUrl",
Usage: "HTTP RPC endpoint of another synced L2 execution engine node",
- Required: true,
Category: driverCategory,
EnvVars: []string{"P2P_CHECK_POINT_SYNC_URL"},
}
@@ -80,6 +87,7 @@ var DriverFlags = MergeFlags(CommonFlags, []cli.Flag{
L2WSEndpoint,
L2AuthEndpoint,
JWTSecret,
+ P2PSync,
P2PSyncTimeout,
CheckPointSyncURL,
MaxExponent,
diff --git a/packages/taiko-client/cmd/flags/prover.go b/packages/taiko-client/cmd/flags/prover.go
index d9c13f1ce1d..2de5bbc1422 100644
--- a/packages/taiko-client/cmd/flags/prover.go
+++ b/packages/taiko-client/cmd/flags/prover.go
@@ -212,7 +212,7 @@ var (
Category: proverCategory,
EnvVars: []string{"PROVER_ZKVM_BATCH_SIZE"},
}
- ForceProveInterval = &cli.DurationFlag{
+ ForceBatchProvingInterval = &cli.DurationFlag{
Name: "prover.forceBatchProvingInterval",
Usage: "Time interval to prove blocks even the number of pending proof do not exceed prover.batchSize, " +
"this flag only works post Ontake fork",
@@ -254,5 +254,5 @@ var ProverFlags = MergeFlags(CommonFlags, []cli.Flag{
RaikoZKVMHostEndpoint,
SGXBatchSize,
ZKVMBatchSize,
- ForceProveInterval,
+ ForceBatchProvingInterval,
}, TxmgrFlags)
diff --git a/packages/taiko-client/driver/chain_syncer/blob/syncer_test.go b/packages/taiko-client/driver/chain_syncer/blob/syncer_test.go
index 55492b03e19..5ac39a757ec 100644
--- a/packages/taiko-client/driver/chain_syncer/blob/syncer_test.go
+++ b/packages/taiko-client/driver/chain_syncer/blob/syncer_test.go
@@ -65,12 +65,12 @@ func (s *BlobSyncerTestSuite) TestProcessL1BlocksReorg() {
func (s *BlobSyncerTestSuite) TestOnBlockProposed() {
s.Nil(s.s.onBlockProposed(
context.Background(),
- &metadata.TaikoDataBlockMetadataLegacy{TaikoDataBlockMetadata: bindings.TaikoDataBlockMetadata{Id: 0}},
+ &metadata.TaikoDataBlockMetadataOntake{TaikoDataBlockMetadataV2: bindings.TaikoDataBlockMetadataV2{Id: 0}},
func() {},
))
s.NotNil(s.s.onBlockProposed(
context.Background(),
- &metadata.TaikoDataBlockMetadataLegacy{TaikoDataBlockMetadata: bindings.TaikoDataBlockMetadata{Id: 1}},
+ &metadata.TaikoDataBlockMetadataOntake{TaikoDataBlockMetadataV2: bindings.TaikoDataBlockMetadataV2{Id: 1}},
func() {},
))
}
@@ -80,18 +80,21 @@ func (s *BlobSyncerTestSuite) TestInsertNewHead() {
s.Nil(err)
l1Head, err := s.s.rpc.L1.BlockByNumber(context.Background(), nil)
s.Nil(err)
+ protocolConfigs, err := s.s.rpc.TaikoL1.GetConfig(nil)
+ s.Nil(err)
_, err = s.s.insertNewHead(
context.Background(),
- &metadata.TaikoDataBlockMetadataLegacy{
- TaikoDataBlockMetadata: bindings.TaikoDataBlockMetadata{
- Id: 1,
- L1Height: l1Head.NumberU64(),
- L1Hash: l1Head.Hash(),
- Coinbase: common.BytesToAddress(testutils.RandomBytes(1024)),
- BlobHash: testutils.RandomHash(),
- Difficulty: testutils.RandomHash(),
- GasLimit: utils.RandUint32(nil),
- Timestamp: uint64(time.Now().Unix()),
+ &metadata.TaikoDataBlockMetadataOntake{
+ TaikoDataBlockMetadataV2: bindings.TaikoDataBlockMetadataV2{
+ Id: 1,
+ AnchorBlockId: l1Head.NumberU64(),
+ AnchorBlockHash: l1Head.Hash(),
+ Coinbase: common.BytesToAddress(testutils.RandomBytes(1024)),
+ BlobHash: testutils.RandomHash(),
+ Difficulty: testutils.RandomHash(),
+ GasLimit: utils.RandUint32(nil),
+ Timestamp: uint64(time.Now().Unix()),
+ BaseFeeConfig: protocolConfigs.BaseFeeConfig,
},
Log: types.Log{
BlockNumber: l1Head.Number().Uint64(),
diff --git a/packages/taiko-client/driver/chain_syncer/chain_syncer.go b/packages/taiko-client/driver/chain_syncer/chain_syncer.go
index 9f9d07bf8d4..5402b5766f6 100644
--- a/packages/taiko-client/driver/chain_syncer/chain_syncer.go
+++ b/packages/taiko-client/driver/chain_syncer/chain_syncer.go
@@ -32,6 +32,10 @@ type L2ChainSyncer struct {
// Sync mode
syncMode string
+
+ // If this flag is activated, will try P2P beacon sync if current node is behind of the protocol's
+ // the latest verified block head
+ p2pSync bool
}
// New creates a new chain syncer instance.
@@ -39,6 +43,7 @@ func New(
ctx context.Context,
rpc *rpc.Client,
state *state.State,
+ p2pSync bool,
p2pSyncTimeout time.Duration,
maxRetrieveExponent uint64,
blobServerEndpoint *url.URL,
@@ -73,6 +78,7 @@ func New(
blobSyncer: blobSyncer,
progressTracker: tracker,
syncMode: syncMode,
+ p2pSync: p2pSync,
}, nil
}
@@ -98,6 +104,7 @@ func (s *L2ChainSyncer) Sync() error {
if s.progressTracker.Triggered() {
log.Info(
"Switch to insert pending blocks one by one",
+ "p2pEnabled", s.p2pSync,
"p2pOutOfSync", s.progressTracker.OutOfSync(),
)
@@ -163,12 +170,13 @@ func (s *L2ChainSyncer) AheadOfHeadToSync(heightToSync uint64) bool {
// needNewBeaconSyncTriggered checks whether the current L2 execution engine needs to trigger
// another new beacon sync, the following conditions should be met:
-// 1. The protocol's latest verified block head is not zero.
-// 2. The L2 execution engine's chain is behind of the protocol's latest verified block head.
-// 3. The L2 execution engine's chain has met a sync timeout issue.
+// 1. The `P2PSync` flag is set.
+// 2. The protocol's latest verified block head is not zero.
+// 3. The L2 execution engine's chain is behind of the protocol's latest verified block head.
+// 4. The L2 execution engine's chain has met a sync timeout issue.
func (s *L2ChainSyncer) needNewBeaconSyncTriggered() (uint64, bool, error) {
// If the flag is not set or there was a finished beacon sync, we simply return false.
- if s.progressTracker.Finished() {
+ if !s.p2pSync || s.progressTracker.Finished() {
return 0, false, nil
}
diff --git a/packages/taiko-client/driver/chain_syncer/chain_syncer_test.go b/packages/taiko-client/driver/chain_syncer/chain_syncer_test.go
index f18e10b7b23..5327317f02e 100644
--- a/packages/taiko-client/driver/chain_syncer/chain_syncer_test.go
+++ b/packages/taiko-client/driver/chain_syncer/chain_syncer_test.go
@@ -39,6 +39,7 @@ func (s *ChainSyncerTestSuite) SetupTest() {
context.Background(),
s.RPCClient,
state,
+ false,
1*time.Hour,
0,
nil,
diff --git a/packages/taiko-client/driver/config.go b/packages/taiko-client/driver/config.go
index b78b2f7daf4..2a184a48e80 100644
--- a/packages/taiko-client/driver/config.go
+++ b/packages/taiko-client/driver/config.go
@@ -17,11 +17,12 @@ import (
// Config contains the configurations to initialize a Taiko driver.
type Config struct {
*rpc.ClientConfig
- P2PSyncTimeout time.Duration
- RetryInterval time.Duration
- MaxExponent uint64
- BlobServerEndpoint *url.URL
- SocialScanEndpoint *url.URL
+ P2PSync bool
+ P2PSyncTimeout time.Duration
+ RetryInterval time.Duration
+ MaxExponent uint64
+ BlobServerEndpoint *url.URL
+ SocialScanEndpoint *url.URL
SoftBlockServerPort uint64
SoftBlockServerJWTSecret []byte
SoftBlockServerCORSOrigins string
@@ -37,10 +38,11 @@ func NewConfigFromCliContext(c *cli.Context) (*Config, error) {
}
var (
+ p2pSync = c.Bool(flags.P2PSync.Name)
l2CheckPoint = c.String(flags.CheckPointSyncURL.Name)
)
- if len(l2CheckPoint) == 0 {
+ if p2pSync && len(l2CheckPoint) == 0 {
return nil, errors.New("empty L2 check point URL")
}
@@ -67,8 +69,8 @@ func NewConfigFromCliContext(c *cli.Context) (*Config, error) {
}
}
- if beaconEndpoint == "" {
- return nil, errors.New("empty L1 beacon endpoint")
+ if beaconEndpoint == "" && blobServerEndpoint == nil && socialScanEndpoint == nil {
+ return nil, errors.New("empty L1 beacon endpoint, blob server and Social Scan endpoint")
}
var softBlockServerJWTSecret []byte
@@ -93,11 +95,12 @@ func NewConfigFromCliContext(c *cli.Context) (*Config, error) {
JwtSecret: string(jwtSecret),
Timeout: timeout,
},
- RetryInterval: c.Duration(flags.BackOffRetryInterval.Name),
- P2PSyncTimeout: c.Duration(flags.P2PSyncTimeout.Name),
- MaxExponent: c.Uint64(flags.MaxExponent.Name),
- BlobServerEndpoint: blobServerEndpoint,
- SocialScanEndpoint: socialScanEndpoint,
+ RetryInterval: c.Duration(flags.BackOffRetryInterval.Name),
+ P2PSync: p2pSync,
+ P2PSyncTimeout: c.Duration(flags.P2PSyncTimeout.Name),
+ MaxExponent: c.Uint64(flags.MaxExponent.Name),
+ BlobServerEndpoint: blobServerEndpoint,
+ SocialScanEndpoint: socialScanEndpoint,
SoftBlockServerPort: c.Uint64(flags.SoftBlockServerPort.Name),
SoftBlockServerJWTSecret: softBlockServerJWTSecret,
SoftBlockServerCORSOrigins: c.String(flags.SoftBlockServerCORSOrigins.Name),
diff --git a/packages/taiko-client/driver/config_test.go b/packages/taiko-client/driver/config_test.go
index 829501f038c..f65359467dd 100644
--- a/packages/taiko-client/driver/config_test.go
+++ b/packages/taiko-client/driver/config_test.go
@@ -34,6 +34,7 @@ func (s *DriverTestSuite) TestNewConfigFromCliContext() {
s.Equal(taikoL2, c.TaikoL2Address.String())
s.Equal(120*time.Second, c.P2PSyncTimeout)
s.NotEmpty(c.JwtSecret)
+ s.True(c.P2PSync)
s.Equal(l2CheckPoint, c.L2CheckPoint)
s.Nil(new(Driver).InitFromCli(context.Background(), ctx))
@@ -51,6 +52,7 @@ func (s *DriverTestSuite) TestNewConfigFromCliContext() {
"--" + flags.JWTSecret.Name, os.Getenv("JWT_SECRET"),
"--" + flags.P2PSyncTimeout.Name, "120s",
"--" + flags.RPCTimeout.Name, "5s",
+ "--" + flags.P2PSync.Name,
"--" + flags.CheckPointSyncURL.Name, l2CheckPoint,
}))
}
@@ -68,6 +70,7 @@ func (s *DriverTestSuite) TestNewConfigFromCliContextEmptyL2CheckPoint() {
s.ErrorContains(app.Run([]string{
"TestNewConfigFromCliContext",
"--" + flags.JWTSecret.Name, os.Getenv("JWT_SECRET"),
+ "--" + flags.P2PSync.Name,
"--" + flags.L2WSEndpoint.Name, "",
}), "empty L2 check point URL")
}
@@ -82,6 +85,7 @@ func (s *DriverTestSuite) SetupApp() *cli.App {
&cli.StringFlag{Name: flags.TaikoL1Address.Name},
&cli.StringFlag{Name: flags.TaikoL2Address.Name},
&cli.StringFlag{Name: flags.JWTSecret.Name},
+ &cli.BoolFlag{Name: flags.P2PSync.Name},
&cli.DurationFlag{Name: flags.P2PSyncTimeout.Name},
&cli.DurationFlag{Name: flags.RPCTimeout.Name},
&cli.StringFlag{Name: flags.CheckPointSyncURL.Name},
diff --git a/packages/taiko-client/driver/driver.go b/packages/taiko-client/driver/driver.go
index df50ac1f633..64993c77602 100644
--- a/packages/taiko-client/driver/driver.go
+++ b/packages/taiko-client/driver/driver.go
@@ -71,7 +71,7 @@ func (d *Driver) InitFromConfig(ctx context.Context, cfg *Config) (err error) {
return err
}
- if peers == 0 {
+ if cfg.P2PSync && peers == 0 {
log.Warn("P2P syncing verified blocks enabled, but no connected peer found in L2 execution engine")
}
@@ -79,6 +79,7 @@ func (d *Driver) InitFromConfig(ctx context.Context, cfg *Config) (err error) {
d.ctx,
d.rpc,
d.state,
+ cfg.P2PSync,
cfg.P2PSyncTimeout,
cfg.MaxExponent,
cfg.BlobServerEndpoint,
diff --git a/packages/taiko-client/driver/txlist_decompressor/txlist_decompressor_test.go b/packages/taiko-client/driver/txlist_decompressor/txlist_decompressor_test.go
index e93ccdd8d30..4888dd48bce 100644
--- a/packages/taiko-client/driver/txlist_decompressor/txlist_decompressor_test.go
+++ b/packages/taiko-client/driver/txlist_decompressor/txlist_decompressor_test.go
@@ -80,7 +80,6 @@ func rlpEncodedTransactionBytes(l int, signed bool) []byte {
var tx *types.Transaction
if signed {
txData := &types.LegacyTx{Nonce: 1, To: &testAddr, GasPrice: common.Big256, Value: common.Big1, Gas: 10}
-
tx = types.MustSignNewTx(testKey, types.LatestSigner(¶ms.ChainConfig{ChainID: chainID}), txData)
} else {
tx = types.NewTransaction(1, testAddr, common.Big1, 10, new(big.Int).SetUint64(10*params.GWei), nil)
diff --git a/packages/taiko-client/internal/testutils/helper.go b/packages/taiko-client/internal/testutils/helper.go
index 873f5ad74ab..b7d94b8b8c5 100644
--- a/packages/taiko-client/internal/testutils/helper.go
+++ b/packages/taiko-client/internal/testutils/helper.go
@@ -34,22 +34,14 @@ func (s *ClientTestSuite) ProposeAndInsertEmptyBlocks(
l1Head, err := s.RPCClient.L1.HeaderByNumber(context.Background(), nil)
s.Nil(err)
- sink := make(chan *bindings.TaikoL1ClientBlockProposed)
- sub, err := s.RPCClient.TaikoL1.WatchBlockProposed(nil, sink, nil, nil)
+ sink := make(chan *bindings.TaikoL1ClientBlockProposedV2)
+ sub, err := s.RPCClient.TaikoL1.WatchBlockProposedV2(nil, sink, nil)
s.Nil(err)
defer func() {
sub.Unsubscribe()
close(sink)
}()
- sink2 := make(chan *bindings.TaikoL1ClientBlockProposedV2)
- sub2, err := s.RPCClient.TaikoL1.WatchBlockProposedV2(nil, sink2, nil)
- s.Nil(err)
- defer func() {
- sub2.Unsubscribe()
- close(sink2)
- }()
-
// RLP encoded empty list
s.Nil(proposer.ProposeTxLists(context.Background(), []types.Transactions{{}}))
s.Nil(blobSyncer.ProcessL1Blocks(context.Background()))
@@ -64,14 +56,9 @@ func (s *ClientTestSuite) ProposeAndInsertEmptyBlocks(
var txHash common.Hash
for i := 0; i < 3; i++ {
- select {
- case event := <-sink:
- metadataList = append(metadataList, metadata.NewTaikoDataBlockMetadataLegacy(event))
- txHash = event.Raw.TxHash
- case event := <-sink2:
- metadataList = append(metadataList, metadata.NewTaikoDataBlockMetadataOntake(event))
- txHash = event.Raw.TxHash
- }
+ event := <-sink
+ metadataList = append(metadataList, metadata.NewTaikoDataBlockMetadataOntake(event))
+ txHash = event.Raw.TxHash
}
_, isPending, err := s.RPCClient.L1.TransactionByHash(context.Background(), txHash)
@@ -97,19 +84,13 @@ func (s *ClientTestSuite) ProposeAndInsertValidBlock(
s.Nil(err)
// Propose txs in L2 execution engine's mempool
- sink := make(chan *bindings.TaikoL1ClientBlockProposed)
- sub, err := s.RPCClient.TaikoL1.WatchBlockProposed(nil, sink, nil, nil)
- s.Nil(err)
-
- sink2 := make(chan *bindings.TaikoL1ClientBlockProposedV2)
- sub2, err := s.RPCClient.TaikoL1.WatchBlockProposedV2(nil, sink2, nil)
+ sink := make(chan *bindings.TaikoL1ClientBlockProposedV2)
+ sub, err := s.RPCClient.TaikoL1.WatchBlockProposedV2(nil, sink, nil)
s.Nil(err)
defer func() {
sub.Unsubscribe()
- sub2.Unsubscribe()
close(sink)
- close(sink2)
}()
nonce, err := s.RPCClient.L2.PendingNonceAt(context.Background(), s.TestAddr)
@@ -130,18 +111,10 @@ func (s *ClientTestSuite) ProposeAndInsertValidBlock(
s.Nil(proposer.ProposeOp(context.Background()))
var (
- txHash common.Hash
- meta metadata.TaikoBlockMetaData
- )
- select {
- case event := <-sink:
- txHash = event.Raw.TxHash
- meta = metadata.NewTaikoDataBlockMetadataLegacy(event)
- case event := <-sink2:
+ event = <-sink
txHash = event.Raw.TxHash
- meta = metadata.NewTaikoDataBlockMetadataOntake(event)
- }
-
+ meta = metadata.NewTaikoDataBlockMetadataOntake(event)
+ )
_, isPending, err := s.RPCClient.L1.TransactionByHash(context.Background(), txHash)
s.Nil(err)
s.False(isPending)
@@ -157,9 +130,7 @@ func (s *ClientTestSuite) ProposeAndInsertValidBlock(
ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
defer cancel()
- s.Nil(backoff.Retry(func() error {
- return blobSyncer.ProcessL1Blocks(ctx)
- }, backoff.NewExponentialBackOff()))
+ s.Nil(backoff.Retry(func() error { return blobSyncer.ProcessL1Blocks(ctx) }, backoff.NewExponentialBackOff()))
s.Nil(s.RPCClient.WaitTillL2ExecutionEngineSynced(context.Background()))
@@ -182,20 +153,12 @@ func (s *ClientTestSuite) ProposeValidBlock(
s.Nil(err)
// Propose txs in L2 execution engine's mempool
- sink := make(chan *bindings.TaikoL1ClientBlockProposed)
- sink2 := make(chan *bindings.TaikoL1ClientBlockProposedV2)
-
- sub, err := s.RPCClient.TaikoL1.WatchBlockProposed(nil, sink, nil, nil)
- s.Nil(err)
-
- sub2, err := s.RPCClient.TaikoL1.WatchBlockProposedV2(nil, sink2, nil)
+ sink := make(chan *bindings.TaikoL1ClientBlockProposedV2)
+ sub, err := s.RPCClient.TaikoL1.WatchBlockProposedV2(nil, sink, nil)
s.Nil(err)
-
defer func() {
sub.Unsubscribe()
- sub2.Unsubscribe()
close(sink)
- close(sink2)
}()
ontakeForkHeight, err := s.RPCClient.TaikoL2.OntakeForkHeight(nil)
@@ -231,14 +194,10 @@ func (s *ClientTestSuite) ProposeValidBlock(
s.Nil(proposer.ProposeOp(context.Background()))
- var txHash common.Hash
- select {
- case event := <-sink:
- txHash = event.Raw.TxHash
- case event := <-sink2:
+ var (
+ event = <-sink
txHash = event.Raw.TxHash
- }
-
+ )
_, isPending, err := s.RPCClient.L1.TransactionByHash(context.Background(), txHash)
s.Nil(err)
s.False(isPending)
diff --git a/packages/taiko-client/package.json b/packages/taiko-client/package.json
index 53409674e4f..210f57be4da 100644
--- a/packages/taiko-client/package.json
+++ b/packages/taiko-client/package.json
@@ -1,5 +1,5 @@
{
"name": "taiko-client",
- "version": "0.39.2",
+ "version": "0.40.0",
"private": true
}
diff --git a/packages/taiko-client/proposer/proposer_test.go b/packages/taiko-client/proposer/proposer_test.go
index afe34def3c3..c81bfa2415a 100644
--- a/packages/taiko-client/proposer/proposer_test.go
+++ b/packages/taiko-client/proposer/proposer_test.go
@@ -16,23 +16,17 @@ import (
"github.com/ethereum/go-ethereum/common/math"
"github.com/ethereum/go-ethereum/core/types"
"github.com/ethereum/go-ethereum/crypto"
- "github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/miner"
- "github.com/ethereum/go-ethereum/rlp"
"github.com/stretchr/testify/suite"
"github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings"
- "github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/encoding"
"github.com/taikoxyz/taiko-mono/packages/taiko-client/bindings/metadata"
"github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/chain_syncer/beaconsync"
"github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/chain_syncer/blob"
"github.com/taikoxyz/taiko-mono/packages/taiko-client/driver/state"
"github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/testutils"
- "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/config"
"github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/jwt"
"github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/rpc"
- "github.com/taikoxyz/taiko-mono/packages/taiko-client/pkg/utils"
- builder "github.com/taikoxyz/taiko-mono/packages/taiko-client/proposer/transaction_builder"
)
type ProposerTestSuite struct {
@@ -244,58 +238,6 @@ func (s *ProposerTestSuite) TestTxPoolContentWithMinTip() {
s.Nil(s.s.ProcessL1Blocks(context.Background()))
}
-func (s *ProposerTestSuite) TestProposeTxLists() {
- p := s.p
- ctx := p.ctx
- cfg := s.p.Config
-
- txBuilder := builder.NewBlobTransactionBuilder(
- p.rpc,
- p.L1ProposerPrivKey,
- cfg.TaikoL1Address,
- cfg.ProverSetAddress,
- cfg.L2SuggestedFeeRecipient,
- cfg.ProposeBlockTxGasLimit,
- cfg.ExtraData,
- config.NewChainConfig(s.p.protocolConfigs),
- false,
- )
-
- emptyTxListBytes, err := rlp.EncodeToBytes(types.Transactions{})
- s.Nil(err)
- txListsBytes := [][]byte{emptyTxListBytes}
- txCandidates := make([]txmgr.TxCandidate, len(txListsBytes))
- for i, txListBytes := range txListsBytes {
- compressedTxListBytes, err := utils.Compress(txListBytes)
- if err != nil {
- log.Warn("Failed to compress transactions list", "index", i, "error", err)
- break
- }
-
- candidate, err := txBuilder.BuildLegacy(
- p.ctx,
- p.IncludeParentMetaHash,
- compressedTxListBytes,
- )
- if err != nil {
- log.Warn("Failed to build TaikoL1.proposeBlock transaction", "error", err)
- break
- }
-
- // trigger the error
- candidate.GasLimit = 10_000_000
-
- txCandidates[i] = *candidate
- }
-
- for _, txCandidate := range txCandidates {
- txMgr, _ := p.txmgrSelector.Select()
- receipt, err := txMgr.Send(ctx, txCandidate)
- s.Nil(err)
- s.Nil(encoding.TryParsingCustomErrorFromReceipt(ctx, p.rpc.L1, p.proposerAddress, receipt))
- }
-}
-
func (s *ProposerTestSuite) TestProposeOpNoEmptyBlock() {
// TODO: Temporarily skip this test case when using l2_reth node.
if os.Getenv("L2_NODE") == "l2_reth" {
@@ -363,24 +305,14 @@ func (s *ProposerTestSuite) TestName() {
func (s *ProposerTestSuite) TestProposeOp() {
// Propose txs in L2 execution engine's mempool
- sink := make(chan *bindings.TaikoL1ClientBlockProposed)
-
- sub, err := s.p.rpc.TaikoL1.WatchBlockProposed(nil, sink, nil, nil)
+ sink := make(chan *bindings.TaikoL1ClientBlockProposedV2)
+ sub, err := s.p.rpc.TaikoL1.WatchBlockProposedV2(nil, sink, nil)
s.Nil(err)
defer func() {
sub.Unsubscribe()
close(sink)
}()
- sink2 := make(chan *bindings.TaikoL1ClientBlockProposedV2)
-
- sub2, err := s.p.rpc.TaikoL1.WatchBlockProposedV2(nil, sink2, nil)
- s.Nil(err)
- defer func() {
- sub2.Unsubscribe()
- close(sink2)
- }()
-
to := common.BytesToAddress(testutils.RandomBytes(32))
_, err = testutils.SendDynamicFeeTx(s.p.rpc.L2, s.TestAddrPrivKey, &to, common.Big1, nil)
s.Nil(err)
@@ -388,15 +320,9 @@ func (s *ProposerTestSuite) TestProposeOp() {
s.Nil(s.p.ProposeOp(context.Background()))
var (
- meta metadata.TaikoBlockMetaData
+ event = <-sink
+ meta = metadata.NewTaikoDataBlockMetadataOntake(event)
)
- select {
- case event := <-sink:
- meta = metadata.NewTaikoDataBlockMetadataLegacy(event)
- case event := <-sink2:
- meta = metadata.NewTaikoDataBlockMetadataOntake(event)
- }
-
s.Equal(meta.GetCoinbase(), s.p.L2SuggestedFeeRecipient)
_, isPending, err := s.p.rpc.L1.TransactionByHash(context.Background(), meta.GetTxHash())
diff --git a/packages/taiko-client/prover/config.go b/packages/taiko-client/prover/config.go
index 552ecfac231..cab66a38db6 100644
--- a/packages/taiko-client/prover/config.go
+++ b/packages/taiko-client/prover/config.go
@@ -62,7 +62,7 @@ type Config struct {
PrivateTxmgrConfigs *txmgr.CLIConfig
SGXProofBufferSize uint64
ZKVMProofBufferSize uint64
- ForceProveInterval time.Duration
+ ForceBatchProvingInterval time.Duration
}
// NewConfigFromCliContext creates a new config instance from command line flags.
@@ -186,8 +186,8 @@ func NewConfigFromCliContext(c *cli.Context) (*Config, error) {
l1ProverPrivKey,
c,
),
- SGXProofBufferSize: c.Uint64(flags.SGXBatchSize.Name),
- ZKVMProofBufferSize: c.Uint64(flags.ZKVMBatchSize.Name),
- ForceProveInterval: c.Duration(flags.ForceProveInterval.Name),
+ SGXProofBufferSize: c.Uint64(flags.SGXBatchSize.Name),
+ ZKVMProofBufferSize: c.Uint64(flags.ZKVMBatchSize.Name),
+ ForceBatchProvingInterval: c.Duration(flags.ForceBatchProvingInterval.Name),
}, nil
}
diff --git a/packages/taiko-client/prover/init.go b/packages/taiko-client/prover/init.go
index dc2e4cb40eb..61faf0f66fc 100644
--- a/packages/taiko-client/prover/init.go
+++ b/packages/taiko-client/prover/init.go
@@ -159,6 +159,7 @@ func (p *Prover) initProofSubmitters(
p.IsGuardianProver(),
p.cfg.GuardianProofSubmissionDelay,
bufferSize,
+ p.cfg.ForceBatchProvingInterval,
); err != nil {
return err
}
diff --git a/packages/taiko-client/prover/proof_producer/dummy_producer_test.go b/packages/taiko-client/prover/proof_producer/dummy_producer_test.go
index e2361ae9cc8..4977e2c6c75 100644
--- a/packages/taiko-client/prover/proof_producer/dummy_producer_test.go
+++ b/packages/taiko-client/prover/proof_producer/dummy_producer_test.go
@@ -37,7 +37,7 @@ func TestDummyProducerRequestProof(t *testing.T) {
res, err := producer.RequestProof(
&ProofRequestOptions{},
blockID,
- &metadata.TaikoDataBlockMetadataLegacy{},
+ &metadata.TaikoDataBlockMetadataOntake{},
header,
tier,
time.Now(),
diff --git a/packages/taiko-client/prover/proof_producer/guardian_producer_test.go b/packages/taiko-client/prover/proof_producer/guardian_producer_test.go
index 85d0663e000..1697e763ad7 100644
--- a/packages/taiko-client/prover/proof_producer/guardian_producer_test.go
+++ b/packages/taiko-client/prover/proof_producer/guardian_producer_test.go
@@ -40,7 +40,7 @@ func TestGuardianProducerRequestProof(t *testing.T) {
context.Background(),
&ProofRequestOptions{},
blockID,
- &metadata.TaikoDataBlockMetadataLegacy{},
+ &metadata.TaikoDataBlockMetadataOntake{},
header,
time.Now(),
)
@@ -79,7 +79,7 @@ func TestGuardianProducerRequestProofReturnLivenessBond(t *testing.T) {
context.Background(),
&ProofRequestOptions{},
blockID,
- &metadata.TaikoDataBlockMetadataLegacy{},
+ &metadata.TaikoDataBlockMetadataOntake{},
header,
time.Now(),
)
@@ -118,7 +118,7 @@ func TestMinorityRequestProof(t *testing.T) {
context.Background(),
&ProofRequestOptions{},
blockID,
- &metadata.TaikoDataBlockMetadataLegacy{},
+ &metadata.TaikoDataBlockMetadataOntake{},
header,
time.Now(),
)
@@ -156,7 +156,7 @@ func TestRequestMinorityProofReturnLivenessBond(t *testing.T) {
context.Background(),
&ProofRequestOptions{},
blockID,
- &metadata.TaikoDataBlockMetadataLegacy{},
+ &metadata.TaikoDataBlockMetadataOntake{},
header,
time.Now(),
)
diff --git a/packages/taiko-client/prover/proof_producer/optimistic_producer_test.go b/packages/taiko-client/prover/proof_producer/optimistic_producer_test.go
index f5d756fff6d..372de77a2b4 100644
--- a/packages/taiko-client/prover/proof_producer/optimistic_producer_test.go
+++ b/packages/taiko-client/prover/proof_producer/optimistic_producer_test.go
@@ -41,7 +41,7 @@ func TestOptimisticRequestProof(t *testing.T) {
context.Background(),
&ProofRequestOptions{},
blockID,
- &metadata.TaikoDataBlockMetadataLegacy{},
+ &metadata.TaikoDataBlockMetadataOntake{},
header,
time.Now(),
)
@@ -79,7 +79,7 @@ func TestProofCancel(t *testing.T) {
context.Background(),
&ProofRequestOptions{},
blockID,
- &metadata.TaikoDataBlockMetadataLegacy{},
+ &metadata.TaikoDataBlockMetadataOntake{},
header,
time.Now(),
)
diff --git a/packages/taiko-client/prover/proof_producer/sgx_producer.go b/packages/taiko-client/prover/proof_producer/sgx_producer.go
index 3f4861fd933..91ca16064f3 100644
--- a/packages/taiko-client/prover/proof_producer/sgx_producer.go
+++ b/packages/taiko-client/prover/proof_producer/sgx_producer.go
@@ -308,6 +308,9 @@ func (s *SGXProofProducer) requestBatchProof(
return nil, fmt.Errorf("failed to get batch proof, msg: %s", output.ErrorMessage)
}
+ if output.Data == nil {
+ return nil, fmt.Errorf("unexpected structure error, response: %s", string(resBytes))
+ }
if output.Data.Status == ErrProofInProgress.Error() {
return nil, ErrProofInProgress
}
@@ -315,7 +318,8 @@ func (s *SGXProofProducer) requestBatchProof(
return nil, ErrRetry
}
- if len(output.Data.Proof.Proof) == 0 {
+ if output.Data.Proof == nil ||
+ len(output.Data.Proof.Proof) == 0 {
return nil, errEmptyProof
}
proof = common.Hex2Bytes(output.Data.Proof.Proof[2:])
diff --git a/packages/taiko-client/prover/proof_producer/sgx_producer_test.go b/packages/taiko-client/prover/proof_producer/sgx_producer_test.go
index 6b68cd57e09..19114cb4eec 100644
--- a/packages/taiko-client/prover/proof_producer/sgx_producer_test.go
+++ b/packages/taiko-client/prover/proof_producer/sgx_producer_test.go
@@ -39,7 +39,7 @@ func TestSGXProducerRequestProof(t *testing.T) {
context.Background(),
&ProofRequestOptions{},
blockID,
- &metadata.TaikoDataBlockMetadataLegacy{},
+ &metadata.TaikoDataBlockMetadataOntake{},
header,
time.Now(),
)
diff --git a/packages/taiko-client/prover/proof_producer/zkvm_producer.go b/packages/taiko-client/prover/proof_producer/zkvm_producer.go
index 3e2711a1962..98f8529acc5 100644
--- a/packages/taiko-client/prover/proof_producer/zkvm_producer.go
+++ b/packages/taiko-client/prover/proof_producer/zkvm_producer.go
@@ -479,6 +479,10 @@ func (s *ZKvmProofProducer) requestBatchProof(
if len(output.ErrorMessage) > 0 || len(output.Error) > 0 {
return nil, fmt.Errorf("failed to get batch proof, msg: %s", output.ErrorMessage)
}
+ if output.Data == nil {
+ return nil, fmt.Errorf("unexpected structure error, response: %s", string(resBytes))
+ }
+
if output.Data.Status == ErrProofInProgress.Error() {
return nil, ErrProofInProgress
}
@@ -486,7 +490,7 @@ func (s *ZKvmProofProducer) requestBatchProof(
return nil, ErrRetry
}
- if len(output.Data.Proof.Proof) == 0 {
+ if output.Data.Proof == nil || len(output.Data.Proof.Proof) == 0 {
return nil, errEmptyProof
}
proof = common.Hex2Bytes(output.Data.Proof.Proof[2:])
diff --git a/packages/taiko-client/prover/proof_submitter/interface.go b/packages/taiko-client/prover/proof_submitter/interface.go
index 26971fc8587..b60ec9c3919 100644
--- a/packages/taiko-client/prover/proof_submitter/interface.go
+++ b/packages/taiko-client/prover/proof_submitter/interface.go
@@ -19,6 +19,7 @@ type Submitter interface {
Producer() proofProducer.ProofProducer
Tier() uint16
BufferSize() uint64
+ AggregationEnabled() bool
}
// Contester is the interface for contesting proofs of the L2 blocks.
diff --git a/packages/taiko-client/prover/proof_submitter/proof_buffer.go b/packages/taiko-client/prover/proof_submitter/proof_buffer.go
index b21e992aa37..8f2d6d0cb72 100644
--- a/packages/taiko-client/prover/proof_submitter/proof_buffer.go
+++ b/packages/taiko-client/prover/proof_submitter/proof_buffer.go
@@ -3,6 +3,7 @@ package submitter
import (
"errors"
"sync"
+ "time"
producer "github.com/taikoxyz/taiko-mono/packages/taiko-client/prover/proof_producer"
)
@@ -14,16 +15,19 @@ var (
// ProofBuffer caches all single proof with a fixed size.
type ProofBuffer struct {
- MaxLength uint64
- buffer []*producer.ProofWithHeader
- mutex sync.RWMutex
+ MaxLength uint64
+ buffer []*producer.ProofWithHeader
+ lastUpdatedAt time.Time
+ isAggregating bool
+ mutex sync.RWMutex
}
// NewProofBuffer creates a new ProofBuffer instance.
func NewProofBuffer(maxLength uint64) *ProofBuffer {
return &ProofBuffer{
- buffer: make([]*producer.ProofWithHeader, 0, maxLength),
- MaxLength: maxLength,
+ buffer: make([]*producer.ProofWithHeader, 0, maxLength),
+ lastUpdatedAt: time.Now(),
+ MaxLength: maxLength,
}
}
@@ -37,6 +41,7 @@ func (pb *ProofBuffer) Write(item *producer.ProofWithHeader) (int, error) {
}
pb.buffer = append(pb.buffer, item)
+ pb.lastUpdatedAt = time.Now()
return len(pb.buffer), nil
}
@@ -65,11 +70,14 @@ func (pb *ProofBuffer) Len() int {
return len(pb.buffer)
}
-// Clear clears all buffer.
-func (pb *ProofBuffer) Clear() {
- pb.mutex.Lock()
- defer pb.mutex.Unlock()
- pb.buffer = pb.buffer[:0]
+// LastUpdatedAt returns the last updated time of the buffer.
+func (pb *ProofBuffer) LastUpdatedAt() time.Time {
+ return pb.lastUpdatedAt
+}
+
+// LastUpdatedAt returns the last updated time of the buffer.
+func (pb *ProofBuffer) UpdateLastUpdatedAt() {
+ pb.lastUpdatedAt = time.Now()
}
// ClearItems clears items that has given block ids in the buffer.
@@ -94,5 +102,21 @@ func (pb *ProofBuffer) ClearItems(blockIDs ...uint64) int {
}
pb.buffer = newBuffer
+ pb.isAggregating = false
return clearedCount
}
+
+// MarkAggregating marks the proofs in this buffer are aggregating.
+func (pb *ProofBuffer) MarkAggregating() {
+ pb.isAggregating = true
+}
+
+// IsAggregating returns if the proofs in this buffer are aggregating.
+func (pb *ProofBuffer) IsAggregating() bool {
+ return pb.isAggregating
+}
+
+// Enabled returns if the buffer is enabled.
+func (pb *ProofBuffer) Enabled() bool {
+ return pb.MaxLength > 1
+}
diff --git a/packages/taiko-client/prover/proof_submitter/proof_contester_test.go b/packages/taiko-client/prover/proof_submitter/proof_contester_test.go
index feaee51a60c..6c836a2b5f3 100644
--- a/packages/taiko-client/prover/proof_submitter/proof_contester_test.go
+++ b/packages/taiko-client/prover/proof_submitter/proof_contester_test.go
@@ -17,7 +17,7 @@ func (s *ProofSubmitterTestSuite) TestSubmitContestNoTransition() {
common.Big256,
common.Big1,
testutils.RandomHash(),
- &metadata.TaikoDataBlockMetadataLegacy{},
+ &metadata.TaikoDataBlockMetadataOntake{},
encoding.TierOptimisticID,
),
)
diff --git a/packages/taiko-client/prover/proof_submitter/proof_submitter.go b/packages/taiko-client/prover/proof_submitter/proof_submitter.go
index ba1cb8bad0d..b87f992772c 100644
--- a/packages/taiko-client/prover/proof_submitter/proof_submitter.go
+++ b/packages/taiko-client/prover/proof_submitter/proof_submitter.go
@@ -53,7 +53,8 @@ type ProofSubmitter struct {
isGuardian bool
submissionDelay time.Duration
// Batch proof related
- proofBuffer *ProofBuffer
+ proofBuffer *ProofBuffer
+ forceBatchProvingInterval time.Duration
}
// NewProofSubmitter creates a new ProofSubmitter instance.
@@ -74,6 +75,7 @@ func NewProofSubmitter(
isGuardian bool,
submissionDelay time.Duration,
proofBufferSize uint64,
+ forceBatchProvingInterval time.Duration,
) (*ProofSubmitter, error) {
anchorValidator, err := validator.New(taikoL2Address, rpcClient.L2.ChainID, rpcClient)
if err != nil {
@@ -81,22 +83,23 @@ func NewProofSubmitter(
}
return &ProofSubmitter{
- rpc: rpcClient,
- proofProducer: proofProducer,
- resultCh: resultCh,
- batchResultCh: batchResultCh,
- aggregationNotify: aggregationNotify,
- anchorValidator: anchorValidator,
- txBuilder: builder,
- sender: transaction.NewSender(rpcClient, txmgr, privateTxmgr, proverSetAddress, gasLimit),
- proverAddress: txmgr.From(),
- proverSetAddress: proverSetAddress,
- taikoL2Address: taikoL2Address,
- graffiti: rpc.StringToBytes32(graffiti),
- tiers: tiers,
- isGuardian: isGuardian,
- submissionDelay: submissionDelay,
- proofBuffer: NewProofBuffer(proofBufferSize),
+ rpc: rpcClient,
+ proofProducer: proofProducer,
+ resultCh: resultCh,
+ batchResultCh: batchResultCh,
+ aggregationNotify: aggregationNotify,
+ anchorValidator: anchorValidator,
+ txBuilder: builder,
+ sender: transaction.NewSender(rpcClient, txmgr, privateTxmgr, proverSetAddress, gasLimit),
+ proverAddress: txmgr.From(),
+ proverSetAddress: proverSetAddress,
+ taikoL2Address: taikoL2Address,
+ graffiti: rpc.StringToBytes32(graffiti),
+ tiers: tiers,
+ isGuardian: isGuardian,
+ submissionDelay: submissionDelay,
+ proofBuffer: NewProofBuffer(proofBufferSize),
+ forceBatchProvingInterval: forceBatchProvingInterval,
}, nil
}
@@ -143,7 +146,7 @@ func (s *ProofSubmitter) RequestProof(ctx context.Context, meta metadata.TaikoBl
Graffiti: common.Bytes2Hex(s.graffiti[:]),
GasUsed: header.GasUsed,
ParentGasUsed: parent.GasUsed(),
- Compressed: s.proofBuffer.MaxLength > 1,
+ Compressed: s.proofBuffer.Enabled(),
}
// If the prover set address is provided, we use that address as the prover on chain.
@@ -159,9 +162,9 @@ func (s *ProofSubmitter) RequestProof(ctx context.Context, meta metadata.TaikoBl
log.Error("Failed to request proof, context is canceled", "blockID", opts.BlockID, "error", ctx.Err())
return nil
}
- // Check if the proof buffer is full
- if s.proofBuffer.MaxLength > 1 && s.proofBuffer.MaxLength == uint64(s.proofBuffer.Len()) {
- log.Debug("Buffer is full now", "blockID", meta.GetBlockID())
+ // Check if the proof buffer is full.
+ if s.proofBuffer.Enabled() && uint64(s.proofBuffer.Len()) >= s.proofBuffer.MaxLength {
+ log.Warn("Proof buffer is full now", "blockID", meta.GetBlockID())
return errBufferOverflow
}
// Check if there is a need to generate proof
@@ -198,21 +201,30 @@ func (s *ProofSubmitter) RequestProof(ctx context.Context, meta metadata.TaikoBl
}
return fmt.Errorf("failed to request proof (id: %d): %w", meta.GetBlockID(), err)
}
- if meta.IsOntakeBlock() && s.proofBuffer.MaxLength > 1 {
+ if meta.IsOntakeBlock() && s.proofBuffer.Enabled() {
bufferSize, err := s.proofBuffer.Write(result)
if err != nil {
- return fmt.Errorf("failed to add proof into buffer (id: %d)(current buffer size: %d): %w",
+ return fmt.Errorf(
+ "failed to add proof into buffer (id: %d) (current buffer size: %d): %w",
meta.GetBlockID(),
bufferSize,
err,
)
}
- log.Debug("Succeed to generate proof",
+ log.Info(
+ "Proof generated",
"blockID", meta.GetBlockID(),
"bufferSize", bufferSize,
+ "maxBufferSize", s.proofBuffer.MaxLength,
+ "bufferIsAggregating", s.proofBuffer.IsAggregating(),
+ "bufferLastUpdatedAt", s.proofBuffer.lastUpdatedAt,
)
- if s.proofBuffer.MaxLength == uint64(bufferSize) {
+ // Check if we need to aggregate proofs.
+ if !s.proofBuffer.IsAggregating() &&
+ (uint64(bufferSize) >= s.proofBuffer.MaxLength ||
+ time.Since(s.proofBuffer.lastUpdatedAt) > s.forceBatchProvingInterval) {
s.aggregationNotify <- s.Tier()
+ s.proofBuffer.MarkAggregating()
}
} else {
s.resultCh <- result
@@ -344,7 +356,8 @@ func (s *ProofSubmitter) BatchSubmitProofs(ctx context.Context, batchProof *proo
)
var (
invalidBlockIDs []uint64
- latestProvenBlockID = big.NewInt(0)
+ latestProvenBlockID = common.Big0
+ uint64BlockIDs []uint64
)
if len(batchProof.Proofs) == 0 {
return proofProducer.ErrInvalidLength
@@ -369,19 +382,20 @@ func (s *ProofSubmitter) BatchSubmitProofs(ctx context.Context, batchProof *proo
return err
}
for i, proof := range batchProof.Proofs {
+ uint64BlockIDs = append(uint64BlockIDs, proof.BlockID.Uint64())
// Check if this proof is still needed to be submitted.
ok, err := s.sender.ValidateProof(ctx, proof, new(big.Int).SetUint64(stateVars.B.LastVerifiedBlockId))
if err != nil {
return err
}
if !ok {
- log.Error("a valid proof for block is already submitted", "blockId", proof.BlockID)
+ log.Error("A valid proof for block is already submitted", "blockId", proof.BlockID)
invalidBlockIDs = append(invalidBlockIDs, proof.BlockID.Uint64())
continue
}
if proofStatus[i].IsSubmitted && !proofStatus[i].Invalid {
- log.Error("a valid proof for block is already submitted", "blockId", proof.BlockID)
+ log.Error("A valid proof for block is already submitted", "blockId", proof.BlockID)
invalidBlockIDs = append(invalidBlockIDs, proof.BlockID.Uint64())
continue
}
@@ -389,7 +403,8 @@ func (s *ProofSubmitter) BatchSubmitProofs(ctx context.Context, batchProof *proo
// Get the corresponding L2 block.
block, err := s.rpc.L2.BlockByHash(ctx, proof.Header.Hash())
if err != nil {
- log.Error("failed to get L2 block with given hash",
+ log.Error(
+ "Failed to get L2 block with given hash",
"hash", proof.Header.Hash(),
"error", err,
)
@@ -415,7 +430,7 @@ func (s *ProofSubmitter) BatchSubmitProofs(ctx context.Context, batchProof *proo
}
if len(invalidBlockIDs) > 0 {
- log.Warn("Detected invalid proofs", "blockIds", invalidBlockIDs)
+ log.Warn("Invalid proofs in batch", "blockIds", invalidBlockIDs)
s.proofBuffer.ClearItems(invalidBlockIDs...)
return ErrInvalidProof
}
@@ -435,7 +450,9 @@ func (s *ProofSubmitter) BatchSubmitProofs(ctx context.Context, batchProof *proo
metrics.ProverSentProofCounter.Add(float64(len(batchProof.BlockIDs)))
metrics.ProverLatestProvenBlockIDGauge.Set(float64(latestProvenBlockID.Uint64()))
- s.proofBuffer.Clear()
+ s.proofBuffer.ClearItems(uint64BlockIDs...)
+ // Each time we submit a batch proof, we should update the LastUpdatedAt() of the buffer.
+ s.proofBuffer.UpdateLastUpdatedAt()
return nil
}
@@ -460,7 +477,16 @@ func (s *ProofSubmitter) AggregateProofs(ctx context.Context) error {
startTime,
)
if err != nil {
- log.Error("Failed to request proof aggregation", "err", err)
+ if errors.Is(err, proofProducer.ErrProofInProgress) ||
+ errors.Is(err, proofProducer.ErrRetry) {
+ log.Info("Aggregating proofs",
+ "status", err,
+ "length", len(buffer),
+ "tier", s.Tier(),
+ )
+ } else {
+ log.Error("Failed to request proof aggregation", "err", err)
+ }
return err
}
s.batchResultCh <- result
@@ -511,3 +537,8 @@ func (s *ProofSubmitter) Tier() uint16 {
func (s *ProofSubmitter) BufferSize() uint64 {
return s.proofBuffer.MaxLength
}
+
+// AggregationEnabled returns whether the proof submitter's aggregation feature is enabled.
+func (s *ProofSubmitter) AggregationEnabled() bool {
+ return s.proofBuffer.Enabled()
+}
diff --git a/packages/taiko-client/prover/proof_submitter/proof_submitter_test.go b/packages/taiko-client/prover/proof_submitter/proof_submitter_test.go
index 3a7cbde8a12..bbf390dc088 100644
--- a/packages/taiko-client/prover/proof_submitter/proof_submitter_test.go
+++ b/packages/taiko-client/prover/proof_submitter/proof_submitter_test.go
@@ -100,6 +100,7 @@ func (s *ProofSubmitterTestSuite) SetupTest() {
false,
0*time.Second,
0,
+ 30*time.Minute,
)
s.Nil(err)
s.contester = NewProofContester(
@@ -199,6 +200,7 @@ func (s *ProofSubmitterTestSuite) TestGetRandomBumpedSubmissionDelay() {
false,
time.Duration(0),
0,
+ 30*time.Minute,
)
s.Nil(err)
@@ -223,6 +225,7 @@ func (s *ProofSubmitterTestSuite) TestGetRandomBumpedSubmissionDelay() {
false,
1*time.Hour,
0,
+ 30*time.Minute,
)
s.Nil(err)
delay, err = submitter2.getRandomBumpedSubmissionDelay(time.Now())
@@ -242,7 +245,7 @@ func (s *ProofSubmitterTestSuite) TestProofSubmitterRequestProofDeadlineExceeded
s.ErrorContains(
s.submitter.RequestProof(
ctx,
- &metadata.TaikoDataBlockMetadataLegacy{TaikoDataBlockMetadata: bindings.TaikoDataBlockMetadata{Id: 256}},
+ &metadata.TaikoDataBlockMetadataOntake{TaikoDataBlockMetadataV2: bindings.TaikoDataBlockMetadataV2{Id: 256}},
),
"context deadline exceeded",
)
@@ -253,7 +256,7 @@ func (s *ProofSubmitterTestSuite) TestProofSubmitterSubmitProofMetadataNotFound(
s.submitter.SubmitProof(
context.Background(), &producer.ProofWithHeader{
BlockID: common.Big256,
- Meta: &metadata.TaikoDataBlockMetadataLegacy{},
+ Meta: &metadata.TaikoDataBlockMetadataOntake{},
Header: &types.Header{},
Opts: &producer.ProofRequestOptions{},
Proof: bytes.Repeat([]byte{0xff}, 100),
@@ -286,7 +289,7 @@ func (s *ProofSubmitterTestSuite) TestProofSubmitterRequestProofCancelled() {
s.ErrorContains(
s.submitter.RequestProof(
ctx,
- &metadata.TaikoDataBlockMetadataLegacy{TaikoDataBlockMetadata: bindings.TaikoDataBlockMetadata{Id: 256}},
+ &metadata.TaikoDataBlockMetadataOntake{TaikoDataBlockMetadataV2: bindings.TaikoDataBlockMetadataV2{Id: 256}},
),
"context canceled",
)
diff --git a/packages/taiko-client/prover/prover.go b/packages/taiko-client/prover/prover.go
index 237a7f44937..a157a59bc6e 100644
--- a/packages/taiko-client/prover/prover.go
+++ b/packages/taiko-client/prover/prover.go
@@ -279,15 +279,7 @@ func (p *Prover) eventLoop() {
default:
}
}
- // reqAggregation requests performing a aggregate operation, won't block
- // if we are already aggregating.
- reqAggregation := func() {
- select {
- // 0 means aggregating all tier proofs
- case p.aggregationNotify <- 0:
- default:
- }
- }
+
// Call reqProving() right away to catch up with the latest state.
reqProving()
@@ -297,9 +289,6 @@ func (p *Prover) eventLoop() {
forceProvingTicker := time.NewTicker(15 * time.Second)
defer forceProvingTicker.Stop()
- forceAggregatingTicker := time.NewTicker(p.cfg.ForceProveInterval)
- defer forceAggregatingTicker.Stop()
-
// Channels
chBufferSize := p.protocolConfigs.BlockMaxProposals
blockProposedCh := make(chan *bindings.TaikoL1ClientBlockProposed, chBufferSize)
@@ -347,9 +336,7 @@ func (p *Prover) eventLoop() {
log.Error("Prove new blocks error", "error", err)
}
case tier := <-p.aggregationNotify:
- p.withRetry(func() error {
- return p.aggregateOp(tier)
- })
+ p.withRetry(func() error { return p.aggregateOp(tier) })
case e := <-blockVerifiedCh:
p.blockVerifiedHandler.Handle(encoding.BlockVerifiedEventToV2(e))
case e := <-transitionProvedCh:
@@ -389,8 +376,6 @@ func (p *Prover) eventLoop() {
reqProving()
case <-forceProvingTicker.C:
reqProving()
- case <-forceAggregatingTicker.C:
- reqAggregation()
}
}
}
@@ -422,10 +407,10 @@ func (p *Prover) aggregateOp(tier uint16) error {
g, gCtx := errgroup.WithContext(p.ctx)
for _, submitter := range p.proofSubmitters {
g.Go(func() error {
- if submitter.BufferSize() > 1 &&
- (tier == 0 || submitter.Tier() == tier) {
+ if submitter.AggregationEnabled() && submitter.Tier() == tier {
if err := submitter.AggregateProofs(gCtx); err != nil {
- log.Error("Failed to aggregate proofs",
+ log.Error(
+ "Failed to aggregate proofs",
"error", err,
"tier", submitter.Tier(),
)
diff --git a/packages/taiko-client/prover/prover_test.go b/packages/taiko-client/prover/prover_test.go
index 638dc9b7aec..377e9816c92 100644
--- a/packages/taiko-client/prover/prover_test.go
+++ b/packages/taiko-client/prover/prover_test.go
@@ -182,7 +182,7 @@ func (s *ProverTestSuite) TestSubmitProofOp() {
s.p.withRetry(func() error {
return s.p.submitProofOp(&producer.ProofWithHeader{
BlockID: common.Big1,
- Meta: &metadata.TaikoDataBlockMetadataLegacy{},
+ Meta: &metadata.TaikoDataBlockMetadataOntake{},
Header: &types.Header{},
Proof: []byte{},
Tier: encoding.TierOptimisticID,
@@ -194,7 +194,7 @@ func (s *ProverTestSuite) TestSubmitProofOp() {
s.p.withRetry(func() error {
return s.p.submitProofOp(&producer.ProofWithHeader{
BlockID: common.Big1,
- Meta: &metadata.TaikoDataBlockMetadataLegacy{},
+ Meta: &metadata.TaikoDataBlockMetadataOntake{},
Header: &types.Header{},
Proof: []byte{},
Tier: encoding.TierOptimisticID,
@@ -229,24 +229,15 @@ func (s *ProverTestSuite) TestContestWrongBlocks() {
s.Nil(s.p.initEventHandlers())
// Submit a wrong proof at first.
- sink := make(chan *bindings.TaikoL1ClientTransitionProved)
header, err := s.p.rpc.L2.HeaderByNumber(context.Background(), m.GetBlockID())
s.Nil(err)
-
- sub, err := s.p.rpc.TaikoL1.WatchTransitionProved(nil, sink, nil)
+ sink := make(chan *bindings.TaikoL1ClientTransitionProvedV2)
+ sub, err := s.p.rpc.TaikoL1.WatchTransitionProvedV2(nil, sink, nil)
s.Nil(err)
defer func() {
sub.Unsubscribe()
close(sink)
}()
-
- sink2 := make(chan *bindings.TaikoL1ClientTransitionProvedV2)
- sub2, err := s.p.rpc.TaikoL1.WatchTransitionProvedV2(nil, sink2, nil)
- s.Nil(err)
- defer func() {
- sub2.Unsubscribe()
- close(sink2)
- }()
s.Nil(s.p.proveOp())
req := <-s.p.proofSubmissionCh
s.Nil(s.p.requestProofOp(req.Meta, req.Tier))
@@ -254,34 +245,20 @@ func (s *ProverTestSuite) TestContestWrongBlocks() {
proofWithHeader.Opts.BlockHash = testutils.RandomHash()
s.Nil(s.p.selectSubmitter(m.GetMinTier()).SubmitProof(context.Background(), proofWithHeader))
- var event *bindings.TaikoL1ClientTransitionProvedV2
- select {
- case e := <-sink:
- blockInfo, err := s.p.rpc.TaikoL1.GetBlock(nil, e.BlockId.Uint64())
- s.Nil(err)
- event = encoding.TransitionProvedEventToV2(e, blockInfo.ProposedIn)
- case e := <-sink2:
- event = e
- }
+ event := <-sink
s.Equal(header.Number.Uint64(), event.BlockId.Uint64())
s.Equal(common.BytesToHash(proofWithHeader.Opts.BlockHash[:]), common.BytesToHash(event.Tran.BlockHash[:]))
s.NotEqual(header.Hash(), common.BytesToHash(event.Tran.BlockHash[:]))
s.Equal(header.ParentHash, common.BytesToHash(event.Tran.ParentHash[:]))
// Contest the transition.
- contestedSink := make(chan *bindings.TaikoL1ClientTransitionContested)
- contestedSink2 := make(chan *bindings.TaikoL1ClientTransitionContestedV2)
-
- contestedSub, err := s.p.rpc.TaikoL1.WatchTransitionContested(nil, contestedSink, nil)
- s.Nil(err)
- contestedSub2, err := s.p.rpc.TaikoL1.WatchTransitionContestedV2(nil, contestedSink2, nil)
+ contestedSink := make(chan *bindings.TaikoL1ClientTransitionContestedV2)
+ contestedSub, err := s.p.rpc.TaikoL1.WatchTransitionContestedV2(nil, contestedSink, nil)
s.Nil(err)
defer func() {
contestedSub.Unsubscribe()
close(contestedSink)
- contestedSub2.Unsubscribe()
- close(contestedSink2)
}()
contesterKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_CONTRACT_OWNER_PRIVATE_KEY")))
@@ -295,15 +272,7 @@ func (s *ProverTestSuite) TestContestWrongBlocks() {
contestReq := <-s.p.proofContestCh
s.Nil(s.p.contestProofOp(contestReq))
- var contestedEvent *bindings.TaikoL1ClientTransitionContestedV2
- select {
- case e := <-contestedSink:
- blockInfo, err := s.p.rpc.TaikoL1.GetBlock(nil, e.BlockId.Uint64())
- s.Nil(err)
- contestedEvent = encoding.TransitionContestedEventToV2(e, blockInfo.ProposedIn)
- case e := <-contestedSink2:
- contestedEvent = e
- }
+ contestedEvent := <-contestedSink
s.Equal(header.Number.Uint64(), contestedEvent.BlockId.Uint64())
s.Equal(header.Hash(), common.BytesToHash(contestedEvent.Tran.BlockHash[:]))
s.Equal(header.ParentHash, common.BytesToHash(contestedEvent.Tran.ParentHash[:]))
@@ -376,18 +345,12 @@ func (s *ProverTestSuite) TestProveOp() {
header, err := s.p.rpc.L2.HeaderByNumber(context.Background(), m.GetBlockID())
s.Nil(err)
- sink := make(chan *bindings.TaikoL1ClientTransitionProved)
- sink2 := make(chan *bindings.TaikoL1ClientTransitionProvedV2)
-
- sub, err := s.p.rpc.TaikoL1.WatchTransitionProved(nil, sink, nil)
- s.Nil(err)
- sub2, err := s.p.rpc.TaikoL1.WatchTransitionProvedV2(nil, sink2, nil)
+ sink := make(chan *bindings.TaikoL1ClientTransitionProvedV2)
+ sub, err := s.p.rpc.TaikoL1.WatchTransitionProvedV2(nil, sink, nil)
s.Nil(err)
defer func() {
sub.Unsubscribe()
- sub2.Unsubscribe()
close(sink)
- close(sink2)
}()
s.Nil(s.p.proveOp())
@@ -395,13 +358,8 @@ func (s *ProverTestSuite) TestProveOp() {
s.Nil(s.p.requestProofOp(req.Meta, req.Tier))
s.Nil(s.p.selectSubmitter(m.GetMinTier()).SubmitProof(context.Background(), <-s.p.proofGenerationCh))
- var tran bindings.TaikoDataTransition
- select {
- case event := <-sink:
- tran = event.Tran
- case event := <-sink2:
- tran = event.Tran
- }
+ event := <-sink
+ tran := event.Tran
s.Equal(header.Hash(), common.BytesToHash(tran.BlockHash[:]))
s.Equal(header.ParentHash, common.BytesToHash(tran.ParentHash[:]))
}
@@ -521,12 +479,12 @@ func (s *ProverTestSuite) TestAggregateProofsAlreadyProved() {
_ = s.ProposeAndInsertValidBlock(s.proposer, s.d.ChainSyncer().BlobSyncer())
}
- sink2 := make(chan *bindings.TaikoL1ClientTransitionProvedV2, batchSize)
- sub2, err := s.p.rpc.TaikoL1.WatchTransitionProvedV2(nil, sink2, nil)
+ sink := make(chan *bindings.TaikoL1ClientTransitionProvedV2, batchSize)
+ sub, err := s.p.rpc.TaikoL1.WatchTransitionProvedV2(nil, sink, nil)
s.Nil(err)
defer func() {
- sub2.Unsubscribe()
- close(sink2)
+ sub.Unsubscribe()
+ close(sink)
}()
s.Nil(s.p.proveOp())
@@ -545,7 +503,7 @@ func (s *ProverTestSuite) TestAggregateProofsAlreadyProved() {
proofSubmitter.ErrInvalidProof,
)
for i := 0; i < batchSize; i++ {
- <-sink2
+ <-sink
}
}
@@ -581,12 +539,12 @@ func (s *ProverTestSuite) TestAggregateProofs() {
_ = s.ProposeAndInsertValidBlock(s.proposer, s.d.ChainSyncer().BlobSyncer())
}
- sink2 := make(chan *bindings.TaikoL1ClientTransitionProvedV2, batchSize)
- sub2, err := s.p.rpc.TaikoL1.WatchTransitionProvedV2(nil, sink2, nil)
+ sink := make(chan *bindings.TaikoL1ClientTransitionProvedV2, batchSize)
+ sub, err := s.p.rpc.TaikoL1.WatchTransitionProvedV2(nil, sink, nil)
s.Nil(err)
defer func() {
- sub2.Unsubscribe()
- close(sink2)
+ sub.Unsubscribe()
+ close(sink)
}()
s.Nil(batchProver.proveOp())
@@ -598,7 +556,7 @@ func (s *ProverTestSuite) TestAggregateProofs() {
s.Nil(batchProver.aggregateOp(tier))
s.Nil(batchProver.selectSubmitter(tier).BatchSubmitProofs(context.Background(), <-batchProver.batchProofGenerationCh))
for i := 0; i < batchSize; i++ {
- <-sink2
+ <-sink
}
}
diff --git a/release-please-config.json b/release-please-config.json
index 2d69ef058de..fff43beb15e 100644
--- a/release-please-config.json
+++ b/release-please-config.json
@@ -22,9 +22,13 @@
"packages/fork-diff": {},
"packages/guardian-prover-health-check": {},
"packages/guardian-prover-health-check-ui": {},
- "packages/protocol": {},
+ "packages/protocol": {
+ "package-name": "taiko-alethia-protocol"
+ },
"packages/relayer": {},
- "packages/taiko-client": {},
+ "packages/taiko-client": {
+ "package-name": "taiko-alethia-client"
+ },
"packages/ui-lib": {}
}
}