
Lumoz hoàn thành nâng cấp lớn Etrog
Tuyển chọn TechFlowTuyển chọn TechFlow

Lumoz hoàn thành nâng cấp lớn Etrog
Bản cập nhật lần này đã nâng cao mức độ tương thích giữa Polygon zkEVM và Ethereum, mang lại tối ưu hóa lớn về hiệu suất thực thi và truy vấn cho các nút, đồng thời mở rộng thêm khả năng phát triển cho hệ sinh thái Polygon CDK.

Tổng quan nâng cấp Etrog
Là một thành phần quan trọng trong hệ sinh thái Polygon CDK, Lumoz luôn theo dõi sát sao từng lần nâng cấp của Polygon CDK, tiến hành nhiều cuộc 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 bằng cách thức dễ hiểu cho công chúng. Mục tiêu là làm rõ toàn diện lộ 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, qua đó hiệu quả mở rộng ranh giới phát triển của cả hệ sinh thái Polygon CDK và ngành công nghiệp blockchain nói chung.
Việc nâng cấp Etrog của Polygon zkEVM đã được hoàn tất vào tháng 2 năm 2024. Đây là bản nâng cấp lớn nhất kể từ khi Polygon zkEVM ra mắt mainnet, không chỉ hỗ trợ thêm nhiều hợp đồng tiền biên dịch (precompiled contract) ở tầng mạch điện toán (circuit), mà còn tối ưu hóa cơ chế đóng gói dữ liệu và tạo khối của chuỗi, đồng thời tái cấu trúc toàn bộ kiến trúc hợp đồng thông minh, tạo nền tảng cho các tính năng mới như Polygon CDK ecosystem, AggLayer và Unified Bridge. Nhìn chung, bản cập nhật này cải thiện đáng kể mức độ tương thích giữa Polygon zkEVM và Ethereum, mang lại những tối ưu lớn về hiệu suất thực thi và truy vấn cho các nút mạng, đồng thời mở rộng khả năng phát triển của hệ sinh thái Polygon CDK.
Bài viết này sẽ đi sâu vào phân tích chi tiết kỹ thuật của đợt nâng cấp này từ góc nhìn mã hợp đồng và mã nút của Polygon zkEVM, đồng thời dựa trên phương án nâng cấp Rollup mã nguồn mở để làm rõ và bổ sung đầy đủ lộ 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.
Tái cấu trúc hợp đồng
Trước đợt nâng cấp Etrog, các hợp đồng của Polygon zkEVM chủ yếu 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 ghi nhận phần lớn thông tin của chuỗi lớp 2, bao gồm các thông tin cơ bản như ID chuỗi, phiên bản, cũng như trạng thái thời gian thực như batch, lịch sử nộp bằng chứng. Ngoài ra, đối với Validium, dữ liệu giao dịch gốc bên trong batch sẽ không được lưu trong hợp đồng đồng thuận, mà thay vào đó được bảo quản bởi một nhóm nút DA bên ngoài thông qua một hợp đồng committee riêng. Bằng cách kết hợp các thông tin cơ bản và trạng thái thời gian thực này, bất kỳ ai cũng có thể khôi phục hoàn chỉnh trạng thái của chuỗi lớp 2.
Hợp đồng cầu nối
Mặt khác, hợp đồng cầu nối sử dụng một tập các trạng thái gốc rút tài sản (exit root) để quản lý và ghi nhận mọi trạng thái liên chuỗi giữa lớp 1 và lớp 2, đồng thời hoàn tất việc di chuyển tài sản giữa hai lớp thông qua mô hình Lock/Mint. Các nút con của exit root được cập nhật đồng thời bởi cả hợp đồng cầu nối và hợp đồng đồng thuận: hợp đồng cầu nối duy trì trạng thái giao dịch nạp tiền (deposit) từ lớp 1 lên lớp 2, trong khi hợp đồng đồng thuận duy trì trạng thái rút tiền (withdraw) từ lớp 2 về lớp 1 thông qua việc nộp bằng chứng ZK.
Thay đổi lớn nhất mà nâng cấp Etrog mang lại ở tầng hợp đồng là việc giới thiệu một giải pháp đa mạng lưới, dùng một bộ hợp đồng để hỗ trợ quản lý và vận hành nhiều mạng lớp 2 thay vì chỉ một như trước đây. Đồng thời, nhờ vào việc tích hợp Unified Bridge mới, các mạng lớp 2 này có thể trao đổi tài sản lẫn nhau, tạo nền tảng tốt hơn cho sự phát triển lâu dài của toàn bộ hệ sinh thái.
Do cấu trúc hợp đồng ban đầu không hỗ trợ triển khai đa mạng lưới, nâng cấp Etrog đã phải tái cấu trúc hoàn toàn kiến trúc hợp đồng:
-
Giới thiệu hợp đồng RollupManager để quản lý thông tin của tất cả các mạng lớp 2;
-
Thay đổi cấu trúc của hợp đồng cầu nối và GlobalExitRoot để nó có thể duy trì trạng thái liên chuỗi của tất cả các mạng, đả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.
Chi tiết cấu trúc hợp đồng có thể tham khảo tại đây
Đối với các mạng lớp 2 Polygon zkEVM đang chạy dưới phiên bản Etrog, những thay đổi này gây ảnh hưởng nghiêm trọng đến dữ liệu hợp đồng, do đó phương án nâng cấp tương ứng là một thách thức không nhỏ. Trong phần này, chúng tôi sẽ tiếp tục đi sâu vào chi tiết cụ thể của phương án nâng cấp từ hai khía cạnh: 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 ở phần hợp đồng đồng thuận trong nâng cấp Etrog là việc giới thiệu một hợp đồng RollupManager hoàn toàn mới. Vì trong phiên bản mới, phần lớn các thao tác quản lý quyền hạn đều tập trung vào hợp đồng RollupManager mới, nên trong phương án nâng cấp chính thức của Polygon, họ sẽ cập nhật triển khai proxy của Polygon zkEVM cũ thành hợp đồng RollupManager, đồng thời triển khai một hợp đồng mạng con mới có tên PolygonZkEVMExistentEtrog làm hợp đồng đồng thuận mới cho mạng cũ. Thông tin toàn cục của mạng Rollup sẽ được ghi vào khi khởi tạo RollupManager. So với hợp đồng lớp 2 thông thường sau nâng cấp Etrog (PolygonZkEVMEtrog), hợp đồng PolygonZkEVMExistentEtrog này có thêm một phương thức initializeUpgrade nhằm xử lý logic chuyển tiếp trong quá trình nâng cấp.
Để đảm bảo slot biến của proxy hợp đồng vẫn nhất quán sau khi nâng cấp, RollupManager kế thừa một hợp đồng chuyên biệt LegacyZKEVMStateVariables dùng để lưu trữ các biến từ phiên bản cũ. Mặt khác, để đảm bảo tính nhất quán trạng thái batch trước và sau nâng cấp, RollupManager cũng thực hiện một loạt thao tác khi khởi tạo, gán lại dữ liệu lịch sử vào các hợp đồng mới, đồng thời tạo ra một forcedBatch trên lớp 1 theo quy tắc mới làm batch chuyển tiếp cho nâng cấp Etrog, phục vụ cho việc xử lý của các nút.
Hợp đồng cầu nối
Nâng cấp Etrog cung cấp chức năng token gas tùy chỉnh cho hợp đồng cầu nối, đồng thời sửa đổi phương án tạo globalExitRoot nhằm đảm bảo tính tương thích dữ liệu cũ và hỗ trợ cập nhật exit root từ nhiều mạng lớp 2, qua đó đạt được khả năng tương tác tài sản giữa các mạng lớp 2.
Cập nhật nút mạng
Về phía nút mạng, nâng cấp Etrog chủ yếu cập nhật hai module sequencer và synchronizer, đồng thời cập nhật ABI hợp đồng để tương tác với các hợp đồng phiên bản mới.
Module sequencer
-
Lần nâng cấp này điều chỉnh logic đóng gói khối và batch. Trước Etrog, mỗi khối lớp 2 chỉ chứa một giao dịch, và thời gian khối trùng với thời gian batch chứa khối đó. Thiết kế này khác biệt đáng kể so với mô hình Ethereum, khiến logic duyệt giao dịch theo khối – vốn rất phổ biến với ứng dụng trên chuỗi – trở nên khó tương thích. Do đó, sau nâng cấp Etrog, logic đóng gói khối lớp 2 đã được điều chỉnh: giờ đây khối được tạo theo khoảng thời gian cố định và một khối có thể chứa nhiều giao dịch, khắc phục vấn đề không tương thích trong các phiên bản trước.
-
Module synchronizer
Những thay đổi ở Etrog được chia làm hai phần. Thứ nhất là thích nghi với các sự kiện của hợp đồng phiên bản mới cùng logic xử lý tương ứng, bao gồm cách xử lý batch chuyển tiếp, xử lý các sự kiện nộp batch/chứng minh và cập nhật info_tree. Phần thứ hai là tái cấu trúc toàn bộ logic đồng bộ. Ở các phiên bản trước Etrog, logic đồng bộ hoạt động tuần tự. Với các nút không cần cấp phép (permissionless), chúng phải chờ dữ liệu lớp 1 được đồng bộ hoàn toàn theo thứ tự batch trước khi tiếp tục đồng bộ dữ liệu chờ nộp từ nút chính. Điều này dẫn đến độ trễ nhất định giữa dữ liệu của các nút này và nút chính. Nâng cấp Etrog đã tái cấu trúc hoàn toàn phần logic này, tách nhiệm vụ đồng bộ lớp 1 và lớp 2 vào các luồng riêng biệt, vừa giải quyết vấn đề độ trễ vừa tăng tốc độ đồng bộ dữ liệu lớp 1.
Nâng cấp CDK Validium của Lumoz
Các mạng zkEVM thông thường có thể hoàn toàn dùng mã nguồn mở từ kho lưu trữ chính thức để thực hiện quy trình nâng cấp, tuy nhiên đội ngũ chính thức chưa hỗ trợ phương án nâng cấp cho Validium. Đội ngũ Lumoz sau khi nghiên cứu và phát triển đã hoàn thiện phương án nâng cấp cho Validium và thành công nâng cấp hàng loạt testnet cũng như mainnet Merlin dựa trên CDK Validium. Phần này sẽ tập trung giới thiệu lộ trình nâng cấp cụ thể cho Validium.
Triển khai mã nguồn
Về mặt hợp đồng
Phương án nâng cấp Validium về cơ bản có thể tham khảo các thay đổi từ Rollup chính thức, triển khai một hợp đồng PolygonValidiumExistentEtrog dành riêng cho hợp đồng đồng thuận của Validium. Hợp đồng này sẽ dựa trên hợp đồng CDKValidium gốc, giống như zkEVMExistentEtrog, cần triển khai phương thức initializeUpgrade để kế thừa dữ liệu lịch sử trong quá trình thực thi giao dịch nâng cấp, đồng thời tạo ra một batch nâng cấp để các nút xử lý. Điểm khác biệt so với zkEVM là địa chỉ DataCommittee của CDK Validium phiên bản mới sẽ do hợp đồng PolygonValidiumExistentEtrog vừa triển khai quản lý, do đó trong quy trình nâng cấp cần thiết lập lại địa chỉ CDKDataCommittee cũ vào biến dataAvailabilityProtocol.
Về mặt nút mạng
Mã nguồn nút Validium phiên bản mới từ đội ngũ chính thức chưa triển khai logic xử lý sự kiện updateEtrogSequence, do đó không thể sử dụng trực tiếp. Tuy nhiên, phần này vẫn có thể tham khảo quy trình xử lý từ Rollup để triển khai. Mặt khác, cũng cần sửa đổi ABI hợp đồng phụ thuộc trong mã nguồn để phù hợp với giao diện hợp đồng của Valdium, thay thế giao diện hợp đồng Rollup cũ.
Lưu ý rằng nếu chọn bỏ qua Etrog và nâng cấp trực tiếp lên phiên bản Eldberry trở lên, do cách xử lý dữ liệu batch khác nhau, nút mạng cần thực hiện một số sửa đổi bổ sung. Trong quá trình nâng cấp hợp đồng, forcedBatch được tạo trên lớp 1 vẫn được sinh theo cách của phiên bản Etrog, do đó khi xử lý batch này, nút không được dùng bộ xử lý mặc định của Eldberry mà phải dùng lại bộ xử lý của phiên bản Etrog, nếu không sẽ xảy ra lỗi không tương thích.
Quy trình nâng cấp
Trước khi nâng cấp, cần triển khai sẵn tất cả các hợp đồng phiên bản mới trên cả lớp 1 và mạng lớp 2, bao gồm RollupManager, ValidiumExistentEtrog, GlobalExitRootV2, BridgeV2, v.v. Có thể tham khảo kịch bản nâng cấp chính thức, thay thế các hợp đồng liên quan đến zkEVM bằng các hợp đồng tương ứng cho Validium. Sau khi triển khai xong các hợp đồng, có thể tạo trước dữ liệu giao dịch nâng cấp Proxy của CDKValidium trên lớp 1, gọi phương thức initialize mới để hoàn tất việc gán lại dữ liệu và tạo batch chuyển tiếp. Tiếp theo, địa chỉ có quyền liên quan từ hợp đồng Timelock sẽ gọi phương thức schedule để lên lịch giao dịch nâng cấp, chờ hết thời gian khóa của hợp đồng Timelock. Tương tự thao tác trên lớp 1, trên lớp 2 cũng cần tạo trước dữ liệu giao dịch nâng cấp cho hợp đồng cầu nối và lên lịch trong hợp đồng Timelock lớp 2.
Do logic initialize của RollupManager yêu cầu kiểm tra việc nộp Proof phải đến mức mới nhất nhằm đảm bảo việc thực thi batch và nộp bằng chứng trước-sau nâng cấp nằm cùng phiên bản, nên sau khi hết thời gian khóa, vẫn cần điều chỉnh thêm một số nút đáng tin cậy. Để giảm thiểu thời gian ngừng hoạt động trong quá trình nâng cấp, có thể thiết lập trước tham số StopSequencerOnBatchNum trong dịch vụ sequencer, khiến nó dừng đóng gói giao dịch sau batch này, tạo thời gian đủ để nộp batch và bằng chứng tương ứng. Mặt khác, do phiên bản mới và cũ của Validium có sự thay đổi trong file migration của pool_db, cần thủ công hoặc trong mã nút xử lý các bản ghi liên quan đến 'supernets-0001.sql' trong cơ sở dữ liệu để đồng bộ cấu trúc CSDL với phiên bản nút mới.
Sau khi Proof đã được nộp đến mức mới nhất và cơ sở dữ liệu đã được dọn dẹp xong, có thể dùng địa chỉ có quyền từ hợp đồng Timelock lớp 1 gọi phương thức execute để thực hiện giao dịch nâng cấp đã lên lịch, cập nhật tất cả tệp cấu hình, đồng thời cập nhật phiên bản tất cả dịch vụ trên các nút đáng tin cậy. Khi các nút đáng tin cậy khôi phục dịch vụ và bắt đầu đóng gói giao dịch trở lại, tất cả nút permissionless cũng cần cập nhật tệp cấu hình và khởi động lại dịch vụ với mã nguồn phiên bản mới. Việc nâng cấp trên lớp 2 cũng có thể thực hiện phương thức execute sau khi đến thời gian đã thiết lập trong Timelock để hoàn tất việc nâng cấp hợp đồng cầu nối lớp 2.
Chào mừng tham gia cộng đồng chính thức TechFlow
Nhóm Telegram:https://t.me/TechFlowDaily
Tài khoản Twitter chính thức:https://x.com/TechFlowPost
Tài khoản Twitter tiếng Anh:https://x.com/BlockFlow_News














