Tổng quan về nâng cấp Etrog

Quá trình nâng cấp Etrog lên Polygon zkEVM sẽ hoàn thành vào tháng 2 năm 2024. Bản nâng cấp này là bản nâng cấp quan trọng nhất kể từ khi ra mắt mạng chính của Polygon zkEVM. Nó không chỉ hoàn thiện việc hỗ trợ cho một số hợp đồng được biên dịch trước trong mạch cơ bản mà còn tối ưu hóa cơ chế đóng gói và tạo khối của chính chuỗi, đồng thời xây dựng lại cơ chế tạo khối. toàn bộ kiến ​​trúc hợp đồng. Nó cung cấp nền tảng cho hệ sinh thái CDK Polygon tiếp theo và các tính năng mới như AggLayer và Unified Bridge. Nhìn chung, bản cập nhật này cải thiện khả năng tương thích giữa Polygon zkEVM và Ethereum, mang lại sự tối ưu hóa lớn cho việc thực thi nút và hiệu quả truy vấn, đồng thời mở rộng khả năng của hệ sinh thái Polygon CDK.

Bài viết này sẽ phân tích sâu các chi tiết kỹ thuật của bản nâng cấp này từ góc độ hợp đồng Polygon zkEVM và mã nút, đồng thời, dựa trên sơ đồ nâng cấp Rollup nguồn mở, nó sẽ sắp xếp và hoàn thiện lộ trình nâng cấp ngay từ đầu một cách toàn diện. phiên bản CDK Validium sang phiên bản Etrog.

Xây dựng lại hợp đồng

Trước khi nâng cấp Etrog, hợp đồng Polygon zkEVM chủ yếu bao gồm hai phần: hợp đồng đồng thuận và hợp đồng cầu nối.

Hợp đồng đồng thuận

Hợp đồng đồng thuận sẽ ghi lại hầu hết thông tin của chuỗi lớp thứ hai, bao gồm một số thông tin cơ bản như ID và phiên bản chuỗi, cũng như thông tin trạng thái thời gian thực của chuỗi lớp thứ hai như hồ sơ nộp lô và bằng chứng. Ngoài ra, đối với Validium, dữ liệu giao dịch gốc trong lô sẽ không được ghi lại trong hợp đồng đồng thuận mà sẽ được lưu trong nhóm nút DA ngoài chuỗi thông qua hợp đồng ủy ban bổ sung. Bằng cách kết hợp thông tin cơ bản này với thông tin trạng thái thời gian thực, bất kỳ ai cũng có thể khôi phục hoàn toàn trạng thái của chuỗi lớp thứ hai.

hợp đồng cầu

Mặt khác, hợp đồng cầu nối sử dụng một bộ quản lý trạng thái gốc thoát, ghi lại tất cả các trạng thái chuỗi chéo giữa lớp thứ nhất và lớp thứ hai, đồng thời hoàn thành luồng tài sản giữa lớp thứ nhất và lớp thứ hai thông qua mô hình Lock/Mint. Các nút con thoát khỏi gốc được cập nhật đồng thời bằng hợp đồng bắc cầu và hợp đồng đồng thuận, nút trước duy trì trạng thái giao dịch gửi tiền từ lớp một đến lớp hai, và nút sau duy trì trạng thái từ lớp hai đến lớp một để rút tiền thông qua việc gửi. bằng chứng ZK.

Thay đổi lớn nhất do nâng cấp Etrog ở cấp độ hợp đồng mang lại là việc giới thiệu giải pháp đa mạng, sử dụng một bộ hợp đồng để hỗ trợ quản lý và bảo trì nhiều mạng 2 lớp thay vì mạng 2 lớp đơn ban đầu và dựa vào trên Cầu Thống nhất mới được giới thiệu để kết nối các Tài sản này. Khả năng tương tác giữa các mạng lớp 2 mang lại nền tảng tốt hơn cho sự phát triển trong tương lai của hệ sinh thái tổng thể.

Do cấu trúc hợp đồng ban đầu không hỗ trợ triển khai nhiều mạng nên bản nâng cấp Etrog đã xây dựng lại toàn bộ cấu trúc hợp đồng.

  1. Hợp đồng RollupManger được giới thiệu để quản lý tất cả thông tin mạng lớp 2;

  2. Cấu trúc của hợp đồng cầu nối và GlobalExitRoot đã được sửa đổi để cho phép chúng duy trì trạng thái chuỗi chéo của tất cả các mạng nhằm đảm bảo khả năng tương tác tài sản giữa các mạng lớp 2 khác nhau.

Vui lòng tham khảo cấu trúc hợp đồng chi tiết

Đối với mạng Polygon zkEVM lớp 2 chạy bên dưới phiên bản Etrog, những sửa đổi này có tính hủy hoại cao đối với dữ liệu hợp đồng, vì vậy giải pháp nâng cấp tương ứng là một thách thức lớn. Ở đây chúng tôi vẫn giới thiệu chi tiết các chi tiết cụ thể đằng sau kế hoạch nâng cấp từ hợp đồng đồng thuận và hợp đồng cầu nối.

Hợp đồng đồng thuận

Thay đổi lớn nhất trong phần hợp đồng đồng thuận của bản nâng cấp Etrog là việc giới thiệu hợp đồng RollupManager mới. Do hầu hết các hoạt động hợp đồng như quản lý quyền trong phiên bản mới đều tập trung vào hợp đồng RollupManager mới được giới thiệu, nên trong kế hoạch nâng cấp chính thức của Polygon, việc triển khai tác nhân Polygon zkEVM ban đầu sẽ được cập nhật vào hợp đồng RollupManager và việc triển khai mới sẽ be Hợp đồng mạng con PolygonZkEVMExistentEtrog đóng vai trò là hợp đồng đồng thuận mới của mạng ban đầu và ghi thông tin toàn cầu của mạng Rollup khi hợp đồng RollupManger mới được khởi tạo. So với hợp đồng mạng lớp thứ hai thông thường PolygonZkEVMEtrog sau khi nâng cấp Etrog, PolygonZkEVMExistentEtrog triển khai phương thức khởi tạo bổ sung cho logic chuyển tiếp trong quá trình nâng cấp.

Để đảm bảo rằng các vị trí của các biến hợp đồng tác nhân nhất quán sau khi nâng cấp, RollupManager kế thừa hợp đồng LegacyZKEVMStateVariables được sử dụng riêng để lưu trữ các biến phiên bản cũ. Mặt khác, để đảm bảo tính nhất quán của trạng thái lô trước và sau khi nâng cấp, RollupManager cũng thực hiện một loạt thao tác trong quá trình khởi tạo, gán lại dữ liệu lịch sử cho hợp đồng mới và tạo một Batch bắt buộc trên lớp đầu tiên theo các quy tắc được nâng cấp dưới dạng lô chuyển tiếp nâng cấp Etrog để xử lý nút.

hợp đồng cầu

Bản nâng cấp Etrog cung cấp cho hợp đồng cầu nối chức năng tùy chỉnh mã thông báo gas, đồng thời sửa đổi sơ đồ tạo GlobalExitRoot để đảm bảo rằng dữ liệu gốc nhất quán và tương thích với bản cập nhật gốc thoát của nhiều chuỗi cấp hai để đạt được đa- khả năng tương tác của tài sản cấp hai.

Cập nhật nút

Về mặt nút, bản nâng cấp Etrog chủ yếu cập nhật các mô-đun trình tự và đồng bộ hóa, đồng thời cũng cập nhật abi hợp đồng, được sử dụng để tương tác với phiên bản mới của hợp đồng.

mô-đun trình tự

  1. Bản nâng cấp này sửa đổi logic đóng gói của các khối và lô. Trước Etrog, mỗi khối lớp thứ hai chỉ chứa một giao dịch và thời gian của khối nhất quán với thời gian của khối mà khối được đặt. Thiết kế này khá khác biệt so với mô hình Ethereum đối với các ứng dụng trên chuỗi, logic thường được sử dụng của các giao dịch truyền tải khối là rất không tương thích. Do đó, sau khi nâng cấp Etrog, logic đóng gói của toàn bộ khối lớp thứ hai đã được điều chỉnh để tạo ra các khối tại một thời điểm cố định và một khối có thể chứa nhiều giao dịch, giúp cải thiện các vấn đề không tương thích trong các phiên bản lịch sử.

  2. mô-đun đồng bộ hóa

Những thay đổi của Etrog được chia thành hai phần. Đầu tiên là thích ứng với các sự kiện của phiên bản mới của hợp đồng và logic xử lý tương ứng, bao gồm cách xử lý các lô chuyển đổi, cách xử lý các sự kiện gửi lô/bằng chứng mới và các sự kiện cập nhật info_tree, v.v. Phần còn lại là xây dựng lại logic đồng bộ hóa tổng thể. Trong các phiên bản tiền Etrog, toàn bộ logic đồng bộ hóa là nối tiếp. Đối với các nút không được phép, bạn cần đợi một lớp dữ liệu được đồng bộ hóa hoàn toàn theo thứ tự hàng loạt trước khi tiếp tục đồng bộ hóa dữ liệu được gửi từ nút chính. Điều này có nghĩa là sẽ luôn có độ trễ giữa dữ liệu từ các nút này và nút chính. Bản nâng cấp Etrog đã xây dựng lại hoàn toàn phần logic này, chia nhiệm vụ đồng bộ hóa của lớp thứ nhất và lớp thứ hai thành các luồng riêng để quản lý, điều này không chỉ giải quyết vấn đề độ trễ trên mà còn tăng tốc hiệu quả đồng bộ hóa của lớp thứ nhất dữ liệu.

Nâng cấp CDK Validium cho Lumoz

Mạng zkEVM thông thường hoàn toàn có thể sử dụng mã nguồn mở trong kho chính thức để hoàn tất quá trình nâng cấp, tuy nhiên gói nâng cấp của Validium không được hỗ trợ chính thức. Sau khi nghiên cứu và phát triển, nhóm Lumoz đã hoàn thành kế hoạch nâng cấp Validium và nâng cấp thành công một số mạng thử nghiệm và mạng chính Merlin dựa trên CDK Validium. Phần này chủ yếu sẽ giới thiệu đường dẫn nâng cấp cụ thể cho Validium.

Triển khai mã

Các khía cạnh hợp đồng

Kế hoạch nâng cấp của Validium về cơ bản có thể đề cập đến những thay đổi chính thức của Rollup để triển khai hợp đồng PolygonValidiumExistentEtrog cho hợp đồng đồng thuận Validium. Hợp đồng này sẽ dựa trên hợp đồng CDKValidium ban đầu. Giống như zkEVMExistentEtrog, nó cần triển khai phương thức khởi tạoUpgrade để kế thừa dữ liệu lịch sử trong quá trình thực hiện giao dịch nâng cấp và tạo một lô nâng cấp để nút xử lý. Điểm khác biệt so với zkEVM là địa chỉ DataCommittee của phiên bản CDK Validium mới sẽ được duy trì bởi hợp đồng PolygonValidiumExistentEtrog mới được triển khai, do đó, địa chỉ CDKDataCommittee ban đầu cần được đặt lại thành biến dataAvailabilityProtocol trong quá trình nâng cấp.

Khía cạnh nút

Phiên bản mới chính thức của mã nút Validium không triển khai logic xử lý cho sự kiện updateEtrogSequence nên không thể sử dụng trực tiếp. Tuy nhiên, nó vẫn có thể được triển khai bằng cách tham khảo luồng xử lý Tổng hợp. Mặt khác, cũng cần sửa đổi abi hợp đồng mà mã phụ thuộc để có thể thích ứng với giao diện hợp đồng của Valdium và thay thế giao diện hợp đồng Rollup ban đầu.

Lưu ý rằng nếu bạn chọn bỏ qua Etrog và nâng cấp trực tiếp lên phiên bản Eldberry trở lên, một số sửa đổi bổ sung sẽ được yêu cầu trên nút do các phương pháp xử lý dữ liệu hàng loạt khác nhau. Trong quá trình nâng cấp hợp đồng, chuyển đổi cưỡng bứcBatch do lớp đầu tiên tạo ra vẫn được tạo trong phiên bản Etrog. Khi xử lý lô, nút không thể sử dụng bộ xử lý Eldberry mặc định mà cần sử dụng lại bộ xử lý phiên bản Etrog, nếu không thì sẽ xảy ra sự cố Không tương thích. có thể xảy ra.

Quá trình nâng cấp

Trước khi nâng cấp, tất cả các phiên bản hợp đồng mới, bao gồm RollupManager, ValidiumExistentEtrog, GlobalExitRootV2, BridgeV2, v.v., cần được triển khai tương ứng trên mạng lớp thứ nhất và lớp thứ hai. Để biết chi tiết, vui lòng tham khảo tập lệnh nâng cấp chính thức và thay thế hợp đồng liên quan đến zkEVM bằng hợp đồng liên quan đến Validium. Sau khi hoàn tất việc triển khai hợp đồng liên quan, dữ liệu giao dịch của Proxy để nâng cấp CDKValidium có thể được tạo trước và phương thức khởi tạo mới được triển khai có thể được gọi để hoàn thành việc gán lại dữ liệu nêu trên và tạo lô chuyển đổi. Sau đó, địa chỉ cơ quan có thẩm quyền liên quan của hợp đồng Timelock gọi phương thức schdule để bảo lưu giao dịch nâng cấp và chờ thời gian khóa của hợp đồng Timelock. Tương tự như các hoạt động trên lớp đầu tiên, cũng cần tạo trước dữ liệu giao dịch nâng cấp của hợp đồng bắc cầu trên lớp thứ hai và bảo lưu giao dịch nâng cấp trong hợp đồng Timelock trên lớp thứ hai.

Vì logic khởi tạo của RollupManager cần kiểm tra xem Bằng chứng có được gửi lên phiên bản mới nhất hay không để đảm bảo rằng việc thực thi hàng loạt và bằng chứng trước và sau khi nâng cấp đều ở cùng một phiên bản, nên một số điều chỉnh đối với các nút đáng tin cậy vẫn cần được thực hiện sau đã đến thời gian khóa. Để giảm thiểu thời gian ngừng hoạt động trong quá trình nâng cấp, bạn có thể đặt trước tham số StopSequencerOnBatchNum trong dịch vụ trình sắp xếp thứ tự để dừng việc đóng gói các giao dịch sau khi đạt đến lô, để lại đủ thời gian cho việc gửi lô và chứng chỉ tương ứng. Mặt khác, do phiên bản cũ và mới của Validium đã được sửa đổi trong tệp di chuyển của pool_db, nên các bản ghi liên quan của 'supernets-0001.sql' trong cơ sở dữ liệu cần phải được xử lý thủ công hoặc trong mã nút để căn chỉnh cấu trúc cơ sở dữ liệu của phiên bản mới của nút.

Sau khi Bằng chứng được gửi lên bản mới nhất và cơ sở dữ liệu được sắp xếp, bạn có thể sử dụng địa chỉ cấp phép liên quan của hợp đồng Timelock lớp đầu tiên để gọi phương thức thực thi nhằm thực hiện thao tác nâng cấp đã lên lịch trước đó, cập nhật tất cả các tệp cấu hình và cập nhật tất cả các phiên bản dịch vụ của các nút đáng tin cậy cùng một lúc. Sau khi nút đáng tin cậy tiếp tục dịch vụ và khởi động lại các giao dịch đóng gói, tất cả các nút không được phép cũng cần cập nhật tệp cấu hình và khởi động lại dịch vụ bằng mã phiên bản mới. Hoạt động nâng cấp lớp thứ hai cũng có thể thực hiện phương thức thực thi sau khi đạt đến thời gian do Timelock đặt để hoàn thành việc nâng cấp hợp đồng cầu nối lớp thứ hai.

Là một phần quan trọng của hệ sinh thái Polygon CDK, Lumoz đã chú ý đến mọi nâng cấp của Polygon CDK, thực hiện nhiều khảo sát, phát triển và tối ưu hóa, đồng thời giải thích chi tiết đằng sau các bản nâng cấp cho công chúng một cách dễ hiểu, hy vọng sắp xếp và bổ sung chúng một cách toàn diện Quá trình nâng cấp từ phiên bản đầu tiên của CDK Validium lên phiên bản Etrog sẽ mở rộng ranh giới phát triển của Polygon CDK và thậm chí toàn bộ ngành công nghiệp blockchain một cách hiệu quả.