
Rủi ro về đa chữ ký và niềm tin vào hội đồng đằng sau các bản nâng cấp Rollup: L2 không "tốt đẹp" như nhiều người nghĩ
Tuyển chọn TechFlowTuyển chọn TechFlow

Rủi ro về đa chữ ký và niềm tin vào hội đồng đằng sau các bản nâng cấp Rollup: L2 không "tốt đẹp" như nhiều người nghĩ
Làm thế nào để giảm thiểu rủi ro tin cậy do đa chữ ký và hội đồng an toàn gây ra?
Tác giả: Lâm Khắc, Geeker Web3
Lời mở đầu
Kể từ khi Solana dần suy yếu và OP phát hành Token, Layer2 và Rollup dường như đã trở thành bến đỗ mới cho vô số người làm việc trong lĩnh vực Web3. Khi thị trường gấu kéo dài và FTX sụp đổ, Multicoin chịu tổn thất nặng nề, các đối thủ cạnh tranh của Ethereum lần lượt rút lui khỏi sân khấu lớn Web3, mất dần can đảm để so kè với ETH. Ngày càng nhiều người bắt đầu xem Rollup là cốt lõi của câu chuyện mới, ngày càng nhiều dự án mọc lên như nấm sau mưa trên nền L2.
Nhưng liệu tất cả điều này có phải là “sự phồn vinh giả tạo”, có phải là “bong bóng随时 có thể bị vỡ” không? Liệu Rollup và L2 có thực sự tuyệt vời như phần đông ca ngợi? Nó có thực sự an toàn như mọi người tưởng tượng? Chưa kể nhiều OP Rollup còn thiếu bằng chứng gian lận (fraud proof), rủi ro an ninh nào khác tồn tại trong Rollup?
Bài viết này được lấy cảm hứng từ báo cáo gần đây của L2BEAT mang tên “Upgradeability of Ethereum L2s”, tập trung vào rủi ro tin cậy liên quan đến đa ký (multi-sig) và hội đồng quản trị trong quá trình nâng cấp Rollup, kết hợp cùng những vấn đề cũ kỹ từng bàn về Rollup, liên hệ tới vụ việc Multichain gần đây, tổng hợp lại lý do vì sao L2 không hề “tuyệt vời” như nhiều người vẫn nghĩ.

Khái quát nguyên lý hoạt động của Rollup
(Nếu bạn đã hiểu rõ nguyên lý Rollup, có thể bỏ qua các đoạn dưới đây và cuộn xuống)
Tóm tắt cách thức hoạt động của Rollup:
Rollup trên Ethereum = Một bộ hợp đồng trên Layer1 + Mạng nút riêng của Layer2.
Nhóm nút mạng Layer2 có thể chia thành vài vai trò, trong đó quan trọng nhất là trình sắp thứ tự (Sequencer). Nó nhận các yêu cầu giao dịch xảy ra trên Layer2, quyết định thứ tự thực thi, sau đó đóng gói chuỗi giao dịch thành lô (Batch), gửi đến hợp đồng Rollup trên Layer1 (trong bài viết sẽ gọi chung là hợp đồng Rollup).

Sơ đồ minh họa logic tương tác của Starknet
Các nút đầy đủ (full node) của Layer2 có thể trực tiếp lấy chuỗi giao dịch từ Sequencer, hoặc đọc lô giao dịch mà Sequencer gửi lên Layer1, nhưng phương án thứ hai có tính xác nhận cuối cùng (finality) (không thay đổi) cao hơn. Thông thường, khi một lô giao dịch được Sequencer chuyển lên Layer1, thứ tự giao dịch này không thể thay đổi (miễn là Ethereum không rollback khối, chuỗi giao dịch Rollup cũng không thay đổi).
Vì việc thực thi giao dịch sẽ thay đổi trạng thái sổ cái blockchain, ngoài thứ tự giao dịch, các nút đầy đủ Layer2 còn cần đồng bộ trạng thái sổ cái với Sequencer để đảm bảo tính nhất quán.
Do đó, Sequencer không chỉ gửi lô giao dịch lên hợp đồng Rollup trên Layer1, mà còn phải truyền kết quả cập nhật trạng thái sau khi thực thi giao dịch (Stateroot/State diff) lên Layer1.
Dễ thấy rằng, L1 (Ethereum) thực chất đóng vai trò bảng thông báo cho các nút L2, nó phi tập trung hơn, đáng tin cậy hơn (trustless), và an toàn hơn rất nhiều so với mạng riêng của L2. Với các nút đầy đủ L2, chỉ cần có được chuỗi giao dịch Rollup + Stateroot ban đầu trên L1, là có thể tái tạo lại sổ cái blockchain L2, tính toán ra Stateroot mới nhất. Nếu Stateroot do nút đầy đủ L2 tự tính ra không khớp với Stateroot mà Sequencer công bố trên L1, thì chứng tỏ Sequencer đang gian lận.

Một ví dụ giả định đơn giản nhất: Liệu Sequencer L2 có thể đánh cắp tài sản người dùng hay không? Ví dụ, nó có thể giả mạo các giao dịch không nên xảy ra (chuyển token của một số người dùng L2 sang địa chỉ vận hành Sequencer, rồi chuyển token đó lên L1). Vấn đề này có thể khái quát thành: Sau khi Sequencer công bố dữ liệu giao dịch sai hoặc Stateroot sai, thì xử lý thế nào?
Đối với rủi ro gian lận của Sequencer, các loại Rollup khác nhau có biện pháp xử lý khác nhau. Optimistic Rollup (Rollup lạc quan) cho phép các nút đầy đủ L2 cung cấp bằng chứng gian lận (Fraud Proof) để chứng minh dữ liệu mà Sequencer đăng trên L1 là sai. Ví dụ Arbitrum thiết lập danh sách trắng nút, cho phép các nút L2 trong danh sách này đăng bằng chứng gian lận.
Hơn nữa, xét thấy đa số sàn giao dịch và các dự án cầu nối chéo tư nhân đều vận hành nút đầy đủ L2, có thể phát hiện ngay lập tức lỗi sai, tỷ lệ thành công khi Sequencer đánh cắp coin gần như bằng 0 (vì cuối cùng nó vẫn phải rút tiền trên sàn, hoặc chuyển coin ăn cắp lên L1 để tìm đường khác).

Aggregator trong hình thực chất chính là Sequencer
Tuy nhiên với Optimism chưa có bằng chứng gian lận, Sequencer có thể ăn cắp coin thông qua hợp đồng cầu nối (bridge) riêng của Rollup. Ví dụ, người vận hành Sequencer có thể giả lệnh giao dịch, chuyển tài sản người khác trên L2 sang địa chỉ của mình, rồi dùng hợp đồng bridge tích hợp sẵn của Rollup để chuyển coin ăn cắp lên L1. Vì không có bằng chứng gian lận, các nút đầy đủ OP không thể thách thức giao dịch sai, do đó về lý thuyết, Sequencer OP có thể đánh cắp tài sản người dùng trên L2 (chỉ cần thật sự muốn làm).

Tính đến ngày 24/7/2023, OP sau nâng cấp Bedrock vẫn chưa triển khai hệ thống bằng chứng gian lận
Cách giải quyết vấn đề này là "thỏa thuận xã hội" (giám sát dư luận qua cộng đồng và mạng xã hội), hoặc dựa vào uy tín bảo chứng từ đội ngũ OP.
Thú vị là, gần đây một sàn giao dịch đã giảm thời gian chờ nạp coin từ người dùng Arbitrum và Optimism (từ 100 khối L2 xuống còn 1 khối L2), thực chất là đặt niềm tin rằng Sequencer ARB và OP sẽ không làm điều xấu (mặc định chúng là máy chủ tập trung có bảo chứng chính thức).

Khác với Optimistic Rollup, ngoài việc dựa vào các nút đầy đủ L2, ZK Rollup giải quyết vấn đề gian lận của Sequencer bằng bằng chứng hiệu lực (Validity Proof - thường bị nhầm lẫn với ZK Proof). Trong mạng ZK Rollup có một loại nút gọi là Prover, chuyên tạo bằng chứng hiệu lực cho lô giao dịch Batch mà Sequencer công bố. Đồng thời, trên L1 có hợp đồng chuyên kiểm tra bằng chứng hiệu lực (thường gọi là Verifier), chỉ khi bằng chứng tương ứng với lô giao dịch và Stateroot/State diff vượt qua kiểm tra của hợp đồng Verifier, giao dịch mới được xác nhận cuối cùng (Finalized). Cầu nối chính thức của ZK Rollup chỉ cho phép rút tiền nếu giao dịch vượt qua kiểm tra bằng chứng hiệu lực, rõ ràng đáng tin cậy hơn nhiều so với Optimism.

Scroll định nghĩa 3 giai đoạn dữ liệu giao dịch
Về lý thuyết, độ an toàn của OP Rollup phụ thuộc vào các nút đầy đủ L2 để đảm bảo (ít nhất cần 1 nút trung thực có thể đăng bằng chứng gian lận). Độ an toàn của ZK Rollup do hợp đồng Verifier trên L1 đảm bảo (các nút L1 hoàn tất xác nhận cuối cùng giao dịch). Nhìn bề ngoài, cả hai đều có thể "kế thừa độ an toàn của L1" (dùng L1 để hoàn tất xác nhận/giao dịch), thậm chí các cực đoan ủng hộ Ethereum còn gọi đây là "tương đương độ an toàn của L1" (nhất quán với tính bất biến kết quả giao dịch L1), nhưng thực tế lại không phải vậy, thậm chí còn xa mới đạt được.
Những điểm "nhắc đi nhắc lại" quen thuộc
Thứ nhất, tốc độ tạo bằng chứng hiệu lực của ZK Rollup cực kỳ chậm, Sequencer có thể thực thi hàng nghìn giao dịch trong 1 giây, nhưng để tạo bằng chứng cho hàng nghìn giao dịch này có thể mất tới vài giờ. Tuy nhiên vấn đề này dễ giải quyết, các ZKR phổ biến cơ bản đều phân chia nhiệm vụ tạo bằng chứng, giao cho các nút Prover xử lý song song, từ đó tăng mạnh tốc độ tạo bằng chứng.
Thứ hai, cần cân nhắc độ trễ khi nút L2 đăng dữ liệu lên L1. Mỗi lần Sequencer hoặc Prover gửi dữ liệu lên L1 đều có chi phí cố định (giống như mỗi lần vận chuyển đều tiêu tốn một container). Việc thường xuyên đăng dữ liệu lên L1 là không kinh tế, thậm chí lỗ vốn, do đó Sequencer và Prover sẽ cố gắng giảm tần suất đăng, đợi khi tích đủ lượng lớn dữ liệu mới đóng gói và đăng cùng lúc.
Nói cách khác, khi số lượng người dùng ít, số lượng giao dịch khởi tạo không đủ nhiều, Sequencer sẽ trì hoãn việc đăng dữ liệu lên L1. Ví dụ năm ngoái khi người dùng ít, Optimism chỉ gửi lô giao dịch lên L1 mỗi nửa giờ. Hiện nay, do người dùng tăng, vấn đề này đã được giải quyết hiệu quả. Khác với OP, Starknet chọn cách giảm tần suất đăng State diff để hạ chi phí dữ liệu, khiến thời gian xác nhận cuối cùng giao dịch Starknet bị kéo dài tới 7-8 giờ.
Thêm nữa, để giảm thêm chi phí, đa số ZK Rollup thường "tập hợp nhiều bằng chứng rồi mới gửi một lần lên L1". Tức là Prover không gửi bằng chứng lên L1 ngay sau khi tạo xong, mà đợi khi nhiều bằng chứng được tạo xong, tập hợp lại, mới gửi đến hợp đồng Verifier trên L1. (Thực ra quá trình tập hợp bằng chứng là dùng một bằng chứng để bao hàm các bước tính toán kiểm tra nhiều bằng chứng khác)

Sơ đồ minh họa tập hợp bằng chứng của Scroll
Hậu quả là tần suất đăng bằng chứng càng thấp hơn, độ trễ từ khi giao dịch khởi tạo đến khi xác nhận cuối cùng càng dài thêm.
Theo hiển thị của trình duyệt khối, độ trễ xác nhận giao dịch của Polygon ZKEVM khoảng 30-50 phút, Starknet và Zksync Era trên 7 tiếng. Rõ ràng đây chỉ là “một phần kế thừa độ an toàn của L1”, còn cách rất xa so với “tương đương độ an toàn của L1” mà những người ủng hộ Ethereum nói đến.

Tất nhiên, tất cả các vấn đề trên đều có thể giải quyết bằng tiến bộ công nghệ, trong tương lai không xa. Ví dụ nhiều đội dự án đang nghiên cứu phần cứng hiệu năng cao để giảm thời gian tạo bằng chứng hiệu lực; Optimism cũng cam kết sớm ra mắt hệ thống bằng chứng gian lận; giải pháp Danksharding của Ethereum sẽ giảm chi phí dữ liệu Rollup hàng chục lần hoặc hơn, từ đó giải quyết hiệu quả các vấn đề liệt kê ở trên.
Vấn đề "quản trị con người" khó giải quyết
Giống như các dự án ứng dụng DeFi, mạng Rollup cần các hợp đồng liên quan trên L1 để vận hành, và những hợp đồng này là “có thể nâng cấp”, tức là một phần mã có thể thay đổi (đa số Rollup dùng hợp đồng proxy), và có thể thực hiện ngay lập tức dưới sự ủy quyền của đa ký hoặc hội đồng an toàn. Trước hết đưa ra kết luận: Rollup có thể thông qua đa ký hoặc hội đồng an toàn do một nhóm nhỏ kiểm soát, nhanh chóng thay đổi mã hợp đồng trên L1, sau đó đánh cắp tài sản người dùng.

Nguồn ảnh: Báo cáo L2BEAT
Trước tiên, tại sao hợp đồng Rollup cần nâng cấp và cách thức nâng cấp như thế nào. Mã hợp đồng trên Ethereum sau khi triển khai là không thể thay đổi, nhưng trong quá trình phát triển Rollup khó tránh khỏi các lỗi khác nhau, dẫn đến kết quả sai; đồng thời Rollup cũng thường xuyên cải tiến sản phẩm, cần thêm chức năng mới; trong trường hợp cực đoan hơn, có thể bị hacker tấn công hợp đồng Rollup, do đó hợp đồng Rollup cần có khả năng nâng cấp, điều này thường thực hiện qua hợp đồng proxy.

Nguồn ảnh: wtf academy
Hợp đồng proxy thực chất là một phương pháp phổ biến trong phát triển hợp đồng Ethereum, là tách biệt dữ liệu và logic nghiệp vụ, lưu trữ ở các hợp đồng khác nhau. Dữ liệu (biến trạng thái) được lưu trong hợp đồng proxy, logic nghiệp vụ (hàm) được lưu trong hợp đồng logic. Hợp đồng proxy dùng delegatecall để ủy quyền toàn bộ quá trình thực thi hàm cho hợp đồng logic (Implementation), sau đó trả kết quả cuối cùng về cho người gọi (Caller).
Việc nâng cấp hợp đồng theo mô hình proxy chỉ cần thay đổi địa chỉ hợp đồng logic mà proxy trỏ tới (ghi đè địa chỉ hợp đồng logic trong proxy). Đa số dự án Rollup đều dùng phương pháp này để nâng cấp hợp đồng, có thể nói là đơn giản và thô bạo.

Nguồn ảnh: wtf academy
Không khó để nhận ra, việc nâng cấp được cho hợp đồng Rollup thực chất là một quả bom lớn: Nếu hợp đồng sau nâng cấp chứa mã độc hại, ví dụ sửa đổi điều kiện cho phép rút tiền của hợp đồng cầu nối (bridge) tích hợp sẵn Rollup, hoặc thay đổi điều kiện xác định tính đúng đắn của bằng chứng hiệu lực trong hợp đồng Verifier, thì Sequencer có thể ăn cắp coin (nguyên lý đã nói ở phần trước).
Nhưng vấn đề là, lại không thể cấm việc nâng cấp hợp đồng Rollup, lý do đã nói rõ ở trên. Cân nhắc giữa các bên, đa số Rollup sẽ dùng DAO quản trị, hội đồng an toàn hoặc ủy quyền đa ký để dùng phương pháp "quản trị con người" quyết định có nâng cấp hợp đồng Rollup hay không. Ngoài ra, còn dùng khóa thời gian (Timelock) để thiết lập cửa sổ trễ cho việc nâng cấp hợp đồng.

Nguồn ảnh: Báo cáo L2BEAT
Xét thấy hầu hết đề xuất DAO đều có quy trình thực thi tự động (thông qua hợp đồng trên chuỗi), dù muốn nâng cấp hợp đồng, cũng phải có đủ phiếu bầu, sau đó chịu trễ theo quy định của khóa thời gian Timelock (thường mất nhiều ngày), thao tác nâng cấp mới được thực hiện. Nếu ai đó muốn thực hiện nâng cấp hợp đồng độc hại, cần vượt qua vòng quản trị DAO bằng cách tấn công quản trị (ví dụ như vụ tấn công quản trị xảy ra với Tornado Cash), nhưng chi phí rất cao, phải sở hữu đủ nhiều token, bình thường sẽ không thành công. Ngay cả khi tấn công quản trị thành công, do giới hạn của khóa thời gian, người dùng sẽ có đủ thời gian rút tài sản khỏi L2, đội ngũ chính thức Rollup cũng sẽ có đủ thời gian thực hiện các biện pháp khẩn cấp.

Khóa thời gian là sau một khoảng trễ, mới cho phép bạn thực hiện một số thao tác
Rõ ràng khóa thời gian dường như là "bảo bối" giải quyết nâng cấp hợp đồng độc hại. Nhưng vấn đề nằm ở chỗ, những "biện pháp khẩn cấp mà đội ngũ chính thức Rollup có thể thực hiện" thực chất chính là bỏ qua quản trị DAO và khóa thời gian, thông qua ủy quyền đa ký hoặc hội đồng an toàn, nâng cấp hợp đồng Rollup ngay lập tức. Xét thấy hiện tại các Rollup phổ biến đang nắm giữ hàng chục tỷ USD tài sản người dùng, việc "nâng cấp hợp đồng ngay lập tức" được ủy quyền bởi đa ký và hội đồng an toàn là biện pháp ứng phó khẩn cấp tối hậu, nhưng đồng thời cũng là thanh kiếm Damocles treo trên đầu mọi người dùng.
Rõ ràng đây là vấn đề tối đa hóa niềm tin: Bạn cần tin rằng đội ngũ chính thức Rollup sẽ không nảy sinh ý định ăn cắp tài sản của bạn. Nếu xét từ góc độ không cần tin cậy (Trustless) (theo quan điểm của Nick Szabo), tất cả các Rollup bị kiểm soát bởi đa ký và hội đồng an toàn đều không an toàn. Người sáng lập Avalanche Emin Gun Sirer, người sáng lập Solana Anatoly, và nhà phê bình nổi tiếng Justin Bons từng nhấn mạnh vấn đề này.


Những Rollup nào bị kiểm soát bởi đa ký/hội đồng?
Theo báo cáo “Upgradeability of Ethereum L2s” của tổ chức nghiên cứu L2 nổi tiếng L2 BEAT và trang web trực quan hóa dữ liệu L2BEAT, Arbitrum, Optimism, Loopring (Lộ Ấn), ZKSync Lite, ZkSync Era, Starknet, Polygon ZKEVM và các Rollup phổ biến khác đều có hợp đồng nâng cấp được ủy quyền bởi đa ký hoặc hội đồng, và có thể bỏ qua giới hạn khóa thời gian.


dYdX tuy có một địa chỉ EOA có thể bỏ qua quản trị DAO để nâng cấp hợp đồng, nhưng chịu giới hạn khóa thời gian (ít nhất 2 ngày trễ). Immutable X có thời gian trễ nâng cấp hợp đồng 14 ngày, do đó theo đánh giá của L2BEAT, dYdX và Immutable X đáng tin cậy hơn (trustless hơn) so với các Rollup phổ biến khác đã lên mainnet.


Nguồn ảnh: Báo cáo L2BEAT
Vậy làm thế nào để giảm rủi ro tin cậy do đa ký và hội đồng an toàn gây ra? Câu trả lời thực ra giống với sự kiện Multichain: Có thể quy kết thành vấn đề chống Sybil. Phải đảm bảo rằng, đa ký/hội đồng do nhiều thực thể khác nhau kiểm soát, không có lợi ích trùng lặp cao, rủi ro cấu kết thấp. Hiện tại, ngoài việc tăng mức độ phi tập trung trong quản trị DAO, mời những cá nhân hoặc tổ chức có danh tiếng, uy tín tham gia đa ký/hội đồng, dường như không có cách nào tốt hơn. Những tình huống trên dường như đã quá quen thuộc trong chính trị dân chủ thế giới thực.
Tất nhiên, cũng có thể dùng khóa thời gian để hạn chế hành vi nâng cấp hợp đồng do đa ký/hội đồng quản lý, nhưng điều này cần cân nhắc nhiều yếu tố, vì mục đích tồn tại của đa ký/hội đồng chính là xử lý nhanh các tình huống khẩn cấp; đồng thời, nếu đội ngũ dự án Rollup không kiên định trong vấn đề phi tin cậy, vấn đề này cũng không thể giải quyết.
Do đó, mặc dù các dự án Rollup khác nhau thông qua thiết kế cơ chế tinh vi có thể đảm bảo an toàn tài sản người dùng trong phần lớn thời gian, nhưng do tồn tại đa ký và hội đồng, xác suất xảy ra sự kiện thiên nga đen (black swan) với Rollup không phải bằng 0. Ngay cả khi xác suất cấu kết giữa các thành viên đa ký và hội đồng chỉ một phần vạn, xét đến giá trị tài sản được quản lý bởi L2 (giả sử 100 tỷ USD), rủi ro tài sản người dùng L2 mỗi ngày vẫn lên tới 1 triệu USD. Liên tưởng đến sự kiện Multichain, thực sự khiến người ta rợn tóc gáy.
Vì vậy cá nhân tôi cho rằng, như Polynya từng nói, phần lớn vốn trong hệ sinh thái Ethereum vẫn sẽ có xu hướng lưu thông và khóa trên L1 thay vì L2, hệ sinh thái Rollup về lâu dài không thể thu hút phần lớn giá trị trong hệ sinh thái Ethereum. Đối với các đại gia và cá voi, mạng chính Ethereum rõ ràng là nơi phù hợp và đáng tin cậy hơn so với L2. Do đó, câu hỏi nhiều người từng đặt ra “liệu sự trỗi dậy của L2 có khiến L1 trở nên ảm đạm” thực ra đã có đáp án.
Như Đông Dã Quy Tây từng nói trong tác phẩm của mình, lòng người phức tạp hơn nhiều so với công thức toán học, khó nắm bắt, khó hiểu, và khó thay đổi hơn. Nhiều việc không thể giải quyết chỉ bằng kỹ thuật thuần túy, bất cứ điều gì liên quan đến “bản chất con người” luôn là vấn đề khó kiểm soát, khó dự đoán và cần được đối xử nghiêm túc nhất trên đời. Xin hãy ghi nhớ câu nói bất hủ khắc trên mộ bia Kant:
“Có hai điều luôn bao quanh tâm hồn tôi, tôi càng suy ngẫm sâu sắc, lòng kính sợ và kinh ngạc càng gia tăng: đó là luật đạo đức trong lòng và bầu trời rực rỡ phía trên đầu.”

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














