Ba thuộc tính cốt lõi của blockchain là phi tập trung, bảo mật và khả năng mở rộng. Theo lý thuyết blockchain tam giác, một kiến trúc blockchain chỉ có thể triển khai được hai trong số chúng. Ethereum được thiết kế với mục tiêu phi tập trung và bảo mật, do đó hiệu suất về khả năng mở rộng của nó kém. Hiện tại, Ethereum xử lý hơn 1 triệu giao dịch mỗi ngày, điều này có thể dẫn đến phí giao dịch cao và tăng nhu cầu về giải pháp mở rộng của Ethereum.
Có một số loại giải pháp mở rộng Ethereum khác nhau, mỗi loại có những ưu điểm và mô hình bảo mật riêng, bao gồm chia nhánh Layer 1, kênh trạng thái Layer 2, Plasma, các mạng phụ, Rollups và Validium. Vì công nghệ chia nhánh phát triển chậm và phức tạp để triển khai, cũng như mạng phụ và Validium không thể kế thừa bảo mật và khả năng sẵn có dữ liệu từ Ethereum. Tóm lại, hệ sinh thái Ethereum hiện nay chủ yếu sử dụng giải pháp mở rộng Rollups.
Cho đến nay, Beosin đã trở thành đối tác bảo mật của ETH Layer2 như Manta Netowork và StarkNet. Trong quá trình kiểm toán trước đó, một số chuỗi khối nổi tiếng đã vượt qua kiểm toán bảo mật chuỗi của Beosin, bao gồm Ronin Network, Manta Network, Merlin Chain, Clover, Self Chain, Crust Network, v.v. Beosin hiện đã phát hành một giải pháp kiểm toán cho ETH Layer2 để cung cấp dịch vụ kiểm toán bảo mật toàn diện cho hệ sinh thái ETH Layer2.
ETH Layer2 sử dụng Rollups để gói hàng trăm giao dịch thành một giao dịch gửi lên Ethereum mainnet, do đó phí giao dịch sẽ được chia cho tất cả người dùng Rollup, giảm phí cho mỗi người dùng. Dữ liệu giao dịch trong Rollups được gửi lên Layer1, nhưng thực hiện độc lập bởi Rollups. Bằng cách gửi dữ liệu giao dịch lên Layer1, Rollups có thể kế thừa bảo mật của Ethereum vì một khi dữ liệu được tải lên Layer1, việc quay lại giao dịch Rollups yêu cầu dữ liệu phải được quay lại trên Layer1.
Hiện tại, Rollups có thể được triển khai theo hai cách chính:
Optimistic Rollups: Sử dụng động lực kinh tế và lý thuyết trò chơi để xác minh giao dịch, như Arbitrum, Base, OP, Blast, vv.
Zero-Knowledge Rollups: Sử dụng chứng minh không có kiến thức cho bảo mật và riêng tư, như Scroll, Linea, zkSync, StarkNet, vv.
Optimistic Rollups là một cách để mở rộng Ethereum bằng cách di chuyển tính toán và lưu trữ trạng thái ra khỏi chuỗi. Nó thực hiện giao dịch ngoại chuỗi, nhưng xuất bản dữ liệu giao dịch lên mainnet dưới dạng calldata hoặc blob.
Optimistic Rollups triển khai một hợp đồng thông minh trên Ethereum, được gọi là hợp đồng Rollup, quản lý trạng thái Rollup, theo dõi số dư người dùng và xử lý tiền gửi, rút tiền và giải quyết tranh chấp. Các giao dịch được thu thập và tóm tắt ngoại tuyến bởi một sequencer và nhiều giao dịch được gói vào một khối Rollup chứa một tóm tắt và chứng minh mật mã về trạng thái tài khoản mới (Merkle root). Sau đó, sequencer cam kết khối Rollup vào chuỗi chính bằng cách cung cấp Merkle roots và calldata.
Optimistic Rollups được coi là "lạc quan" vì họ cho rằng các giao dịch ngoài chuỗi là hợp lệ và không công bố bằng chứng về tính hợp lệ của các lô giao dịch được đẩy trên chuỗi. Ngược lại, Optimistic Rollups dựa vào các chương trình chống gian lận để phát hiện các trường hợp giao dịch được tính toán không chính xác. Sau khi gửi lô Rollup trên Ethereum, có một khoảng thời gian (được gọi là giai đoạn thử thách) trong đó bất kỳ ai cũng có thể thách thức kết quả của giao dịch Rollup bằng cách tính toán bằng chứng gian lận. Bằng chứng gian lận chứa thông tin chi tiết về một giao dịch cụ thể mà người xác minh tin là gian lận.
Như đã hiển thị trong hình dưới đây, thời gian thử thách của hầu hết các Optimistic Rollups hiện tại là 7 ngày, và ngắn nhất là 1 ngày.
Trong thời gian thách thức, bất kỳ ai cũng có thể thách thức kết quả giao dịch bằng cách tính toán chứng cớ gian lận. Nếu giao dịch không hợp lệ, khối Rollup sẽ bị thu hồi, người thách thức sẽ được thưởng và người xếp hàng sẽ bị trừng phạt.
Nếu lô Rollup không bị thách thức sau thời gian thách thức (tức là tất cả giao dịch đã được thực hiện đúng), nó được coi là hợp lệ và được chấp nhận trên Ethereum. Người khác có thể tiếp tục mở rộng các khối Rollup chưa xác nhận, nhưng lưu ý rằng kết quả giao dịch sẽ bị đảo ngược nếu giao dịch được thực hiện dựa trên một lỗi đã được công bố trước đó.
Cuối cùng, người dùng phải gửi yêu cầu rút tiền đến hợp đồng Rollup để rút tiền từ Layer 2 sang Layer 1. Hợp đồng sẽ xác minh rằng người dùng có đủ tiền trên Rollup và cập nhật số dư của họ trên mainchain tương ứng.
Với cấu trúc sinh thái và airdrop, Arbitrum nhanh chóng trở thành mạng lưới hoạt động tích cực nhất trong ETH Layer2, với TVL vượt quá 2,7 tỷ đô la. Sau khi airdrop lớn, nhóm Arbitrum đã khởi chạy chương trình Arbitrum Orbit: khuyến khích các nhà phát triển xây dựng Layer3 bằng cách sử dụng các công nghệ liên quan đến Arbitrum. Beosin đã hoàn thành kiểm toán bảo mật của ArbSwap, Arbipad để giúp phát triển bảo mật của hệ sinh thái Arbitrum.
Mặc dù Optimism ít hoạt động sinh thái hơn Arbitrum, OP Stack, được ra mắt bởi Optimism vào năm 2023, đã nhận được sự công nhận rộng rãi từ ngành công nghiệp như một giải pháp hoàn chỉnh và khả thi cho việc xây dựng Layer2 module. Hơn 25 mạng Layer2 đã được xây dựng bằng OP Stack, bao gồm các dự án nổi bật như Base, Mantle, Manta, OP BNB và Celo. DIPX Finance và Starnet được xây dựng trên Optimism đã vượt qua kiểm định an ninh của Beosin.
Base là một mạng lưới Layer2 dựa trên OP Stack, chỉ xếp sau Arbitrum về hoạt động sinh thái và TVL. Trước đây, Beosin đã phân tích kiến trúc và rủi ro an ninh của Base một cách chi tiết, và đã kiểm toán Surf Protocol và EDA để giúp chủ dự án và người dùng tránh các rủi ro an ninh.
Blast, sau cuộc thi phát triển 'Big Bang' của mình, đã thấy TVL của mình tăng lên trên 2 tỷ đô la, đứng vị trí trên mạch Layer2. Beosin đã phân tích bảo mật mạng của Blast trước khi ra mắt mainnet. Do Blast không thực hiện chứng minh gian lận, tài sản được giữ trong một ví đa chữ ký, không phải là một cầu Rollup, có mức độ rủi ro tập trung cao. Beosin đã kiểm tra rất nhiều dự án sinh thái của Blast như Wand Protocol, Zest, Kalax.
OP Stack, một framework đã trưởng thành cho Optimistic Rollups, về cơ bản phân rã quá trình phức tạp của việc xây dựng chuỗi optimistic Rollups thành một quá trình đơn giản bằng cách cung cấp một bộ hoàn chỉnh các thành phần phần mềm, công cụ và framework. Ở đây, chúng ta lấy framework Op stack làm ví dụ để phân tích kiến trúc điển hình của Optimism Rollups.
● Node thực thi: Op-geth là một khách hàng thực thi mở rộng cho Ethereum xử lý các chức năng cụ thể của Layer2, như việc nhận tiền gửi token từ Layer1. Lớp này định nghĩa tất cả các chức năng chịu trách nhiệm thực hiện các biến thể trạng thái. Ở đây, các chuyển đổi trạng thái được kích hoạt dựa trên đầu vào nhận được từ các nút tóm tắt (chuỗi và người xác nhận) thông qua API của bộ máy.
● Nút Rollup: bao gồm sequencer và validator. Người thu thập dữ liệu (collator) chịu trách nhiệm gom nhóm các giao dịch đã xử lý từ lớp 2 và công bố chúng lên Layer1. Sequencer xác định cách các giao dịch trên chuỗi Layer2 được thu thập và công bố. Validator kiểm tra tính hợp lệ của giao dịch gom nhóm và nếu phát hiện gian lận, sẽ nộp bằng chứng.
● Chứng minh gian lận: Cannon là phiên bản nâng cấp của Geth và chịu trách nhiệm chạy EVM trong giai đoạn phát hiện gian lận và chứng minh. Thực chất, đó là một bộ máy xung đột trên chuỗi chuyển hướng với sequentiers và validators qua các api để chứng minh các giao dịch giả mạo.
● Batch commit: Sequencers xử lý hàng loạt tất cả các giao dịch được xử lý một lần, được xác minh bởi các máy xác minh, và Sequencers gửi các giao dịch được xử lý hàng loạt lên Layer1.
● Hợp đồng cầu: Được triển khai trên Ethereum và Layer2, cho phép người dùng truyền đi thông điệp và chuyển tài sản giữa Layer1 và Layer2.
Dưới kiến trúc kỹ thuật của Optimistic Rollup, việc đảm bảo an ninh cho tài sản của người dùng khi chuyển đổi giữa L1 và L2 là rất quan trọng. Dưới đây là các chi tiết về cách người dùng có thể truy cập tài sản giữa hai lớp và cách hệ thống duy trì tính toàn vẹn và an ninh của các giao dịch này.
● Cầu nối tài sản vào Rollup: Người dùng gửi tiền vào hợp đồng cầu nối chuỗi của Rollup trên Layer1. Hợp đồng cầu nối chuỗi chuyển tiếp giao dịch đến Layer2, nơi một số lượng tài sản tương đương được phát hành và gửi đến một địa chỉ do người dùng chọn trên Optimistic Rollup.
Các giao dịch do người dùng tạo ra, chẳng hạn như tiền gửi từ Layer1 đến Layer2, thường được xếp hàng cho đến khi bị cô lập và gửi lại đến hợp đồng Rollup. Tuy nhiên, để duy trì tính chống kiểm duyệt, Rollup Lạc quan cho phép người dùng gửi các giao dịch trực tiếp đến hợp đồng Rollup trên chuỗi nếu thời gian chờ giao dịch vượt quá thời gian tối đa được cho phép.
● Rút tài sản từ Rollup: Do cơ chế chứng cứ gian lận, việc rút tiền từ Optimistic Rollup sang Ethereum phức tạp hơn. Nếu người dùng khởi tạo giao dịch từ Layer2 sang Layer1 để rút tiền được quản lý trên Layer1, họ cần đợi kết thúc thời gian thách thức, thường kéo dài khoảng 7 ngày.
Khi người dùng khởi tạo yêu cầu rút tiền trên Rollup, giao dịch sẽ được bao gồm trong lô kế tiếp và tài sản của người dùng trên Rollup sẽ bị hủy. Sau khi lô được xuất bản trên Ethereum, người dùng có thể tính toán một chứng minh Merkle để xác minh rằng giao dịch rút tiền của họ đã được bao gồm trong khối. Bước tiếp theo là chờ kết thúc giai đoạn trễ để hoàn thành giao dịch trên Layer1 và rút tiền về mainnet.
Để tránh phải đợi một tuần trước khi rút tiền từ Ethereum, người dùng của Optimistic Rollup có thể yêu cầu tạm ứng từ nhà cung cấp thanh khoản (LP), nhà cung cấp này giả định quyền sở hữu các khoản rút tiền đang chờ xử lý và thanh toán tiền cho người dùng trên Layer1 để đổi lấy một khoản phí. Các nhà cung cấp thanh khoản có thể xác minh tính hợp lệ của các yêu cầu rút tiền của người dùng bằng cách tự kiểm tra dữ liệu trên chuỗi trước khi giải ngân tiền. Bằng cách này, họ có thể đảm bảo rằng giao dịch cuối cùng sẽ được xác nhận, đạt được sự chắc chắn về sự tin tưởng.
Layer2 là một hệ thống blockchain hoàn chỉnh, vì vậy việc kiểm toán chung của chuỗi công cộng cũng áp dụng cho Optimistic Rollup, như chi tiết ở phụ lục cuối cùng của bài viết này.
Ngoài ra, do tính đặc biệt của nó, Optimistic Rollup yêu cầu một số kiểm toán bổ sung:
● Chứng minh sẵn có dữ liệu: Đảm bảo rằng dữ liệu giao dịch Layer2 có sẵn trên Layer1 để ngăn chặn việc mất dữ liệu.
● Cơ chế đồng bộ dữ liệu: Kiểm tra xem cơ chế đồng bộ dữ liệu giữa Layer1 và Layer2 có vững chắc và có thể xử lý các tình huống bất thường như mạng bị phân tách không.
● Hợp đồng Chứng minh Gian lận: Xác minh rằng hợp đồng chứng minh gian lận được triển khai đúng cách.
● Cơ chế thời gian thách thức: Kiểm tra xem độ dài của thời gian thách thức có hợp lý và liệu chứng cớ gian lận có thể hoàn thành trong thời gian quy định hay không.
● Quy trình nộp bằng chứng gian lận: Kiểm tra xem quy trình nộp bằng chứng gian lận có đảm bảo an toàn không.
● Quy trình nạp tiền và rút tiền: Kiểm tra quy trình nạp tiền và rút tiền từ Layer1 đến Layer2 và từ Layer2 đến Layer1 để đảm bảo quy trình an toàn.
● Tạo và đốt tài sản: Kiểm tra logic tạo và phá hủy tài sản trên Layer2 để đảm bảo sự tương ứng chính xác với tài sản Layer1.
● Cơ chế cung cấp thanh khoản: Nếu có cơ chế cung cấp thanh khoản (LP), cần xem xét quy trình hoạt động của LP và bảo mật của nó.
Zero-Knowledge (ZK) Rollup là một Layer2 dựa trên chứng minh không cần biết. Nó chủ yếu thực hiện tính toán phức tạp và tạo ra bằng chứng ngoài chuỗi, xác minh bằng chứng trên chuỗi và lưu trữ một phần dữ liệu để đảm bảo tính sẵn có của dữ liệu.
ZK Rollup là một “giải pháp mở rộng lai” là một giao thức off-chain chạy độc lập nhưng được bảo mật từ Ethereum. Cụ thể, mạng Ethereum bảo đảm tính hợp lệ của các cập nhật trạng thái trên ZK Rollups và đảm bảo sẵn có dữ liệu nền mỗi khi trạng thái Rollup được cập nhật. Trạng thái của Rollup được duy trì bởi các hợp đồng thông minh triển khai trên mạng Ethereum. Để cập nhật trạng thái này, nút ZK Rollups phải gửi một chứng minh tính hợp lệ để xác minh. Một chứng minh tính hợp lệ là một đảm bảo mật mã học rằng một thay đổi đề xuất trong trạng thái thực sự là kết quả của việc thực thi một lô giao dịch cụ thể. Điều này có nghĩa là ZK Rollups chỉ cần cung cấp chứng minh tính hợp lệ để hoàn tất các giao dịch trên Ethereum, mà không cần phải xuất bản tất cả dữ liệu giao dịch.
Không có sự trì hoãn trong việc chuyển tiền từ ZK Rollups sang Ethereum, vì giao dịch rời đi được thực hiện sau khi hợp đồng ZK Rollups đã xác minh được chứng cứ về tính hợp lệ. Ngược lại, việc rút tiền từ Optimistic Rollups sẽ gây ra sự trì hoãn vì bất kỳ ai cũng có thể sử dụng chứng cứ về gian lận để thách thức một giao dịch rời đi.
zkSync, một giải pháp L2 ra mắt cách đây năm năm bởi nhóm Matter Labs, sử dụng công nghệ chứng minh không biết để cho phép xác minh giao dịch hiệu quả và đã huy động hơn 200 triệu đô la. zkSync là mạng Layer2 hoạt động sinh thái mạnh mẽ sử dụng ZK Rollups và zkSync cũng gây tranh cãi. Beosin trước đây đã tiến hành kiểm toán cho dự án DeFi hàng đầu của họ, SyncSwap, bao gồm chất lượng mã, logic hợp đồng và bảo mật, mô hình vận hành và nhiều hơn nữa.
StarkNet sử dụng ZK-STARK để xây dựng Layer2 nhằm tăng tốc độ giao dịch và giảm phí giao dịch. StarkNet có một máy ảo native (Cairo VM) và ngôn ngữ phát triển Cairo để giúp các nhà phát triển viết hợp đồng thông minh một cách an toàn và dễ dàng hơn. Beosin đã trở thành đối tác bảo mật chính thức của StarkNet, hoàn thành việc kiểm toán bảo mật cho Option Dance và Reddio. Vào ngày 13 tháng 8 năm 2024, Reddio đã hoàn thành vòng gọi vốn hạt giống do Paradigm dẫn đầu để xây dựng một mạng lưới Layer2 EVM song song hiệu suất cao.
Scroll được mở rộng bằng công nghệ zero-knowledge proof, và phần cứng tăng tốc quá trình tạo và xác minh zero-knowledge proofs, nhằm mục tiêu đạt được tính tương thích EVM ở mức bytecode. Điều này có nghĩa là các nhà phát triển có thể trực tiếp sử dụng Solidity và các công cụ phát triển liên quan đến Ethereum để xây dựng hợp đồng thông minh.
Các khung ZK Rollups phổ biến bao gồm các hợp đồng Rollup và Bridge, người thu thập, người tổng hợp, người lặp lại và mạng Roller tạo ra các chứng minh không cần biết. Kiến trúc cụ thể được thể hiện trong hình sau:
● Hợp đồng Rollup và hợp đồng cầu
Hợp đồng Rollup chịu trách nhiệm cung cấp dữ liệu sẵn có cho các giao dịch Rollup, xác minh bằng chứng hợp lệ zkEVM và cho phép người dùng chuyển tài sản giữa Ethereum và Rollup. Nó nhận được gốc và khối trạng thái Lớp 2 từ trình đối chiếu, gốc trạng thái được lưu trữ ở trạng thái Ethereum và dữ liệu khối lớp 2 được lưu dưới dạng dữ liệu gọi của Ethereum.
Các hợp đồng cầu nối được triển khai trên Ethereum và Layer2, cho phép người dùng truyền thông đi và chuyển tài sản giữa Layer1 và Layer2.
● Sequencer: Sequencer cung cấp giao diện JSON-RPC và chấp nhận các giao dịch Lớp 2, định kỳ lấy một lô giao dịch từ bộ nhớ tạm để thực thi, tạo ra các khối Lớp 2 và các rễ trạng thái mới. Thực hiện của nó thường dựa trên Go-Ethereum (Geth), đảm bảo tính tương thích tốt nhất và độ an toàn cao nhất.
● Điều phối viên: Điều phối viên được thông báo khi người đối chiếu tạo một khối mới và nhận được dấu vết thực thi của khối đó từ trình đối chiếu. Dấu vết thực thi sau đó được gửi đến một Con lăn được chọn ngẫu nhiên trong mạng Con lăn, tạo ra bằng chứng về tính hợp lệ.
● Relayer: Người truyền lại theo dõi các hợp đồng Rollup và các hợp đồng cầu nối triển khai trên Ethereum và Layer2. Các trách nhiệm chính bao gồm: 1) Theo dõi sự có sẵn dữ liệu và xác minh các khối Layer2 bằng cách theo dõi các hợp đồng Rollup; 2) Theo dõi sự kiện gửi và rút tiền của việc kết nối cầu nối Ethereum và Layer2, và truyền các tin nhắn tới phía đối diện.
● Mạng Roller: Roller trong mạng Roller đóng vai trò là người chứng minh và chịu trách nhiệm tạo ra chứng minh sự hợp lệ cho ZK Rollup. Một dấu vết thực thi khối được nhận từ người phối hợp, được chuyển đổi thành một chứng nhận mạch, sau đó một chứng minh được tạo ra cho mỗi zkevm bằng cách sử dụng tăng tốc phần cứng, và cuối cùng là sử dụng tổng hợp chứng minh để tổng hợp nhiều chứng minh thành một chứng minh duy nhất.
Dưới kiến trúc kỹ thuật của ZK Rollups, việc đảm bảo an ninh cho tài sản của người dùng trong quá trình chuyển đổi giữa L1 và L2 là rất quan trọng. Sau đây là chi tiết về cách người dùng có thể truy cập tài sản giữa hai tầng và cách hệ thống duy trì tính toàn vẹn và an ninh của các giao dịch này.
● Cầu nối tài sản vào Rollup: Người dùng nhập Rollup bằng cách gửi token vào một hợp đồng ZK Rollups được triển khai trên một lớp mạng. Giao dịch này cần được gửi đến hợp đồng Rollup bởi phía dự án.
Nếu hàng đợi gửi tiền đang bắt đầu đầy, người vận hành ZK Rollups sẽ chấp nhận các giao dịch gửi tiền này và gửi chúng đến hợp đồng Rollup. Khi tiền được gửi vào Rollup, người dùng có thể bắt đầu xử lý giao dịch.
Người dùng có thể xác minh số dư trên Rollup bằng cách băm tài khoản của họ, gửi giá trị băm đến hợp đồng Rollup và cung cấp một Merkle proof xác minh với trạng thái root hiện tại.
● Rút tiền từ Rollup: Người dùng khởi tạo giao dịch rút tiền, gửi tài sản trên Rollup của họ đến tài khoản cụ thể để phá hủy. Nếu người vận hành thêm giao dịch vào lô tiếp theo, người dùng có thể gửi yêu cầu rút tiền đến hợp đồng trên chuỗi. Yêu cầu rút tiền bao gồm:
Merkle proof, chứng minh rằng giao dịch của người dùng được thêm vào tài khoản bị hủy trong lô giao dịch
dữ liệu giao dịch
Gộp gốc
Địa chỉ mạng lớp 1 để nhận tiền gửi
Hợp đồng Rollup băm dữ liệu giao dịch, kiểm tra xem batch root có tồn tại hay không, và sử dụng Merkle proof để kiểm tra xem transaction hash có phải là một phần của batch root hay không. Hợp đồng thực hiện giao dịch exit và gửi tiền đến một địa chỉ trên mạng Layer1 do người dùng chọn.
Layer 2 là một hệ thống blockchain hoàn chỉnh, vì vậy các mục kiểm tra thông thường cho các blockchain cũng áp dụng cho ZK Rollup, như đã được mô tả trong phụ lục ở cuối bài viết này.
Ngoài ra, do tính đặc biệt của nó, ZK Rollup yêu cầu thực hiện một số cuộc kiểm tra bổ sung:
● Chứng minh an ninh hệ thống: Kiểm tra tính an toàn và đúng đắn của các hệ thống chứng minh không kiến thức được sử dụng (ví dụ: Groth16, Plonk, Halo2, zk-STARK, vv).
● An toàn mạch: Kiểm tra các lỗ hổng có thể có trong thiết kế mạch và triển khai, chủ yếu bao gồm các nội dung sau:
Mạch không đủ ràng buộc
Mạch quá ràng buộc
Mạch không xác định
Tràn số học Tràn số học
Độ dài bit không phù hợp
Đầu Vào Công Khai Không Sử Dụng Được Tối Ưu Hóa Ra
Frozen Heart: Chế tạo các Bằng chứng không có kiến thức cho không
Rò rỉ thiết lập đáng tin cậy
Được chỉ định nhưng không bị ràng buộc
Sử dụng thành phần không an toàn
Chính xác biến
● Tạo và xác minh chứng minh: Xem xét quá trình tạo và xác minh chứng minh để đảm bảo nó hiệu quả và an toàn.
● Chứng minh sự có sẵn dữ liệu: Đảm bảo rằng dữ liệu giao dịch Layer2 có sẵn trên Layer1 để ngăn chặn mất dữ liệu.
● Cơ chế đồng bộ dữ liệu: Kiểm tra xem cơ chế đồng bộ dữ liệu giữa Layer1 và Layer2 có hoạt động tốt và có thể xử lý các tình huống bất thường như phân vùng mạng hay không.
● Quy trình nạp và rút tiền: Kiểm tra quy trình nạp và rút tiền từ Layer1 đến Layer2 và từ Layer2 đến Layer1 để đảm bảo quy trình an toàn.
● Tạo và tiêu hủy tài sản: Kiểm tra logic tạo ra và tiêu hủy tài sản trên Layer2 để đảm bảo sự tương ứng chính xác với tài sản trên Layer1.
● Quét các phụ thuộc ngoại vi và lỗ hổng đã biết: ZK Rollup thường phụ thuộc nặng vào các kho lưu trữ và công cụ mật mã học và toán học của bên thứ ba và nên kiểm tra kỹ lưỡng tính bảo mật của phụ thuộc của họ để quét và xác nhận các lỗ hổng đã biết.
Mục kiểm tra chung về Blockchain & Layer2:
● Tràn số nguyên: Kiểm tra tràn số nguyên và tràn số nguyên âm
● Vòng lặp: Kiểm tra vòng lặp của chương trình để xem điều kiện có hợp lý không
● Cuộc gọi đệ quy vô tận: Kiểm tra xem điều kiện thoát của cuộc gọi đệ quy chương trình có hợp lý không
● Điều kiện đua: Kiểm tra quyền truy cập vào tài nguyên chia sẻ trong trạng thái đồng thời
● Lỗi ngoại lệ: Kiểm tra mã ném ngoại lệ gây ra việc chương trình tắt hoạt động
● Lỗ hổng chia cho 0: Kiểm tra xem có trường hợp chia cho 0 không
● Chuyển đổi kiểu: Kiểm tra xem việc chuyển đổi kiểu có đúng không và liệu có mất thông tin quan trọng trong quá trình chuyển đổi không
● Vượt quá giới hạn mảng: Kiểm tra việc truy cập vào các phần tử ngoài giới hạn mảng
● Lỗ hổng giải mã: Kiểm tra các vấn đề trong quá trình giải mã
● Bảo mật trong việc triển khai chức năng: Kiểm tra xem việc triển khai giao diện RPC có rủi ro bảo mật và có nhất quán với thiết kế chức năng của giao diện RPC hay không
● Xem xét xem cài đặt quyền truy cập của giao diện RPC nhạy cảm có hợp lý không: Kiểm tra cài đặt quyền truy cập của giao diện RPC nhạy cảm
● Cơ chế truyền tải được mã hóa: Kiểm tra xem liệu có sử dụng giao thức truyền tải được mã hóa, như TLS, hay không
● Phân tích định dạng dữ liệu yêu cầu: Kiểm tra quá trình phân tích định dạng cho dữ liệu yêu cầu
● Cuộc tấn công mở khóa ví: Khi một nút mở khóa ví của mình, nó được yêu cầu bởi RPC để đánh cắp tiền
● Bảo mật truyền thống của Web: Kiểm tra các lỗ hổng sau: Cross-site scripting (XSS)/template injection/lỗ hổng thành phần của bên thứ ba/HTTP parameter contamination/SQL injection/XXE entity injection/lỗ hổng deserialization/SSRF vulnerability/Code injection/local file inclusion/Remote file inclusion/command execution injection và các lỗ hổng truyền thống khác
● Cơ chế xác thực và nhận diện danh tính nút mạng: kiểm tra xem có cơ chế xác thực danh tính nút mạng hay không, cơ chế xác thực danh tính nút mạng có thể được né tránh
● Oan toàn bảng định tuyến: Kiểm tra xem bảng định tuyến có thể được chèn vào hoặc ghi đè một cách tùy ý không
● Thuật toán phát hiện nút: Kiểm tra xem thuật toán phát hiện nút có cân đối và không thể đoán trước, ví dụ như thuật toán khoảng cách không cân đối
● Kiểm toán sử dụng kết nối: Kiểm tra xem giới hạn và quản lý số lượng nút được kết nối với mạng p2p có hợp lý hay không
● Tấn công nhật thực: Đánh giá chi phí và nguy cơ của các cuộc tấn công nhật thực, cung cấp phân tích định lượng nếu cần thiết
● Tấn công Sybil: Đánh giá cơ chế đồng thuận bỏ phiếu và phân tích các chiến lược kiểm tra đủ điều kiện bỏ phiếu
● Tấn công nghe trộm: Kiểm tra xem giao thức truyền thông có tiết lộ quyền riêng tư không
● Tấn công người ngoài hành tinh: Đánh giá xem nút có thể nhận ra cùng một loại nút chuỗi hay không
● Time hijacking: Kiểm tra cơ chế tính toán thời gian mạng của một nút
● Tấn công kiệt quệ bộ nhớ: Kiểm tra tiêu thụ bộ nhớ lớn
● Tấn công kiệt quệ ổ cứng: Kiểm tra nơi lưu trữ các tệp lớn
● Tấn công áp lực ổ cắm: Kiểm tra chính sách giới hạn về số lượng liên kết
● Tấn công cạn kiệt bộ xử lý nhân: Kiểm tra giới hạn về việc tạo bộ xử lý nhân, chẳng hạn như bộ xử lý tệp
● Rò rỉ bộ nhớ liên tục: Kiểm tra rò rỉ bộ nhớ
● Bảo mật thuật toán băm: Kiểm tra khả năng chống va chạm của thuật toán băm
● Bảo mật thuật toán chữ ký số: Kiểm tra bảo mật của thuật toán chữ ký và hiện thực thuật toán
● Bảo mật thuật toán mã hóa: Kiểm tra bảo mật của thuật toán mã hóa và việc triển khai thuật toán
● Bảo mật trình tạo số ngẫu nhiên: Kiểm tra xem thuật toán tạo số ngẫu nhiên chính có hợp lý không
● An ninh triển khai BFT: Đánh giá an ninh triển khai của các thuật toán BFT
● Quy tắc chọn ngã ba: Kiểm tra quy tắc chọn ngã ba để đảm bảo an ninh
● Kiểm tra độ tập trung: Xác định xem liệu thiết kế hệ thống có thiên về tập trung quá mức hay không
● Kiểm toán ưu đãi: Đánh giá tác động của các ưu đãi đối với bảo mật
● Tấn công chi tiêu gấp đôi: Kiểm tra xem sự đồng thuận có thể bảo vệ chống lại các cuộc tấn công chi tiêu gấp đôi hay không
● Kiểm tra MEV Attack: Xem xét tác động của MEV của nút gói khối đến sự công bằng của chuỗi
● Kiểm tra quá trình đồng bộ hóa khối: Kiểm tra các vấn đề bảo mật trong quá trình đồng bộ hóa
● Quá trình kiểm tra phân tích định dạng khối: Kiểm tra các vấn đề liên quan đến bảo mật trong quá trình phân tích định dạng, chẳng hạn như lỗi phân tích dẫn đến sự cố
● Kiểm toán quy trình tạo khối: Kiểm tra các vấn đề bảo mật trong quy trình tạo khối, bao gồm xem liệu gốc cây Merkle được xây dựng một cách hợp lý hay không
● Kiểm tra quy trình xác minh khối: Kiểm tra xem các mục chữ ký khối và logic xác minh có đủ hay không
● Kiểm tra logic xác thực khối: Kiểm tra xem thuật toán xác thực khối và việc triển khai có hợp lý hay không
● Đụng độ hash khối: Kiểm tra cách xây dựng đụng độ hash khối và xem xét xử lý đụng độ có hợp lý hay không
● Giới hạn tài nguyên xử lý khối: Kiểm tra xem bể khối mồ côi, tính toán xác minh, địa chỉ đĩa cứng và các giới hạn tài nguyên khác có hợp lý không
● Kiểm tra quy trình đồng bộ hóa giao dịch: Kiểm tra các vấn đề bảo mật trong quá trình đồng bộ hóa
● Xem xét cách xây dựng va chạm hash giao dịch và cách xử lý chúng
● Phân tích định dạng giao dịch: Kiểm tra các vấn đề an ninh trong quá trình phân tích định dạng, chẳng hạn như lỗi phân tích dẫn đến sự cố
● Kiểm tra tính hợp lệ của giao dịch: Kiểm tra xem các mục chữ ký của từng loại giao dịch và logic xác minh có đủ hay không
● Giới hạn tài nguyên xử lý giao dịch: Kiểm tra xem các giới hạn tài nguyên như các giao dịch trong pool, tính toán xác minh và địa chỉ ổ cứng có hợp lý không
● Tấn công tính linh hoạt của giao dịch: Liệu một giao dịch có thể thay đổi các trường nội bộ (chẳng hạn như ScriptSig) để thay đổi hàm băm giao dịch mà không ảnh hưởng đến tính hợp lệ của giao dịch hay không
● Kiểm tra sự phát hiện lại giao dịch của hệ thống: Kiểm tra sự phát hiện lại giao dịch của hệ thống
● Kiểm tra mã bytecode hợp đồng: Kiểm tra tính bảo mật của quá trình xác minh hợp đồng của máy ảo, chẳng hạn như tràn số nguyên và vòng lặp vô hạn
● Thực thi bytecode hợp đồng: Kiểm tra tính bảo mật của quá trình thực thi bytecode của máy ảo, như tràn số nguyên, vòng lặp vô hạn, và cetera
● Mô hình khí: Kiểm tra xem phí cho mỗi hoạt động nguyên tử của quá trình xử lý giao dịch / thực hiện hợp đồng tỷ lệ thuận với mức tiêu thụ tài nguyên
● Tính toàn vẹn của nhật ký: Kiểm tra xem thông tin chính có được ghi lại hay không
● Bảo mật nhật ký: Kiểm tra xem việc xử lý nhật ký không đúng cách có gây ra sự cố bảo mật hay không, chẳng hạn như tràn số nguyên
● Nhật ký chứa thông tin riêng tư: Kiểm tra xem nhật ký có chứa thông tin riêng tư như các khóa không
● Lưu trữ nhật ký: Kiểm tra xem nội dung quá mức có được ghi lại trong nhật ký hay không, điều này tiêu tốn tài nguyên nút
● Mã nút Bảo mật chuỗi cung ứng: Kiểm tra tất cả các thư viện, thành phần và phiên bản của bên thứ ba của khung chuỗi công cộng để tìm các vấn đề đã biết
Ba thuộc tính cốt lõi của blockchain là phi tập trung, bảo mật và khả năng mở rộng. Theo lý thuyết blockchain tam giác, một kiến trúc blockchain chỉ có thể triển khai được hai trong số chúng. Ethereum được thiết kế với mục tiêu phi tập trung và bảo mật, do đó hiệu suất về khả năng mở rộng của nó kém. Hiện tại, Ethereum xử lý hơn 1 triệu giao dịch mỗi ngày, điều này có thể dẫn đến phí giao dịch cao và tăng nhu cầu về giải pháp mở rộng của Ethereum.
Có một số loại giải pháp mở rộng Ethereum khác nhau, mỗi loại có những ưu điểm và mô hình bảo mật riêng, bao gồm chia nhánh Layer 1, kênh trạng thái Layer 2, Plasma, các mạng phụ, Rollups và Validium. Vì công nghệ chia nhánh phát triển chậm và phức tạp để triển khai, cũng như mạng phụ và Validium không thể kế thừa bảo mật và khả năng sẵn có dữ liệu từ Ethereum. Tóm lại, hệ sinh thái Ethereum hiện nay chủ yếu sử dụng giải pháp mở rộng Rollups.
Cho đến nay, Beosin đã trở thành đối tác bảo mật của ETH Layer2 như Manta Netowork và StarkNet. Trong quá trình kiểm toán trước đó, một số chuỗi khối nổi tiếng đã vượt qua kiểm toán bảo mật chuỗi của Beosin, bao gồm Ronin Network, Manta Network, Merlin Chain, Clover, Self Chain, Crust Network, v.v. Beosin hiện đã phát hành một giải pháp kiểm toán cho ETH Layer2 để cung cấp dịch vụ kiểm toán bảo mật toàn diện cho hệ sinh thái ETH Layer2.
ETH Layer2 sử dụng Rollups để gói hàng trăm giao dịch thành một giao dịch gửi lên Ethereum mainnet, do đó phí giao dịch sẽ được chia cho tất cả người dùng Rollup, giảm phí cho mỗi người dùng. Dữ liệu giao dịch trong Rollups được gửi lên Layer1, nhưng thực hiện độc lập bởi Rollups. Bằng cách gửi dữ liệu giao dịch lên Layer1, Rollups có thể kế thừa bảo mật của Ethereum vì một khi dữ liệu được tải lên Layer1, việc quay lại giao dịch Rollups yêu cầu dữ liệu phải được quay lại trên Layer1.
Hiện tại, Rollups có thể được triển khai theo hai cách chính:
Optimistic Rollups: Sử dụng động lực kinh tế và lý thuyết trò chơi để xác minh giao dịch, như Arbitrum, Base, OP, Blast, vv.
Zero-Knowledge Rollups: Sử dụng chứng minh không có kiến thức cho bảo mật và riêng tư, như Scroll, Linea, zkSync, StarkNet, vv.
Optimistic Rollups là một cách để mở rộng Ethereum bằng cách di chuyển tính toán và lưu trữ trạng thái ra khỏi chuỗi. Nó thực hiện giao dịch ngoại chuỗi, nhưng xuất bản dữ liệu giao dịch lên mainnet dưới dạng calldata hoặc blob.
Optimistic Rollups triển khai một hợp đồng thông minh trên Ethereum, được gọi là hợp đồng Rollup, quản lý trạng thái Rollup, theo dõi số dư người dùng và xử lý tiền gửi, rút tiền và giải quyết tranh chấp. Các giao dịch được thu thập và tóm tắt ngoại tuyến bởi một sequencer và nhiều giao dịch được gói vào một khối Rollup chứa một tóm tắt và chứng minh mật mã về trạng thái tài khoản mới (Merkle root). Sau đó, sequencer cam kết khối Rollup vào chuỗi chính bằng cách cung cấp Merkle roots và calldata.
Optimistic Rollups được coi là "lạc quan" vì họ cho rằng các giao dịch ngoài chuỗi là hợp lệ và không công bố bằng chứng về tính hợp lệ của các lô giao dịch được đẩy trên chuỗi. Ngược lại, Optimistic Rollups dựa vào các chương trình chống gian lận để phát hiện các trường hợp giao dịch được tính toán không chính xác. Sau khi gửi lô Rollup trên Ethereum, có một khoảng thời gian (được gọi là giai đoạn thử thách) trong đó bất kỳ ai cũng có thể thách thức kết quả của giao dịch Rollup bằng cách tính toán bằng chứng gian lận. Bằng chứng gian lận chứa thông tin chi tiết về một giao dịch cụ thể mà người xác minh tin là gian lận.
Như đã hiển thị trong hình dưới đây, thời gian thử thách của hầu hết các Optimistic Rollups hiện tại là 7 ngày, và ngắn nhất là 1 ngày.
Trong thời gian thách thức, bất kỳ ai cũng có thể thách thức kết quả giao dịch bằng cách tính toán chứng cớ gian lận. Nếu giao dịch không hợp lệ, khối Rollup sẽ bị thu hồi, người thách thức sẽ được thưởng và người xếp hàng sẽ bị trừng phạt.
Nếu lô Rollup không bị thách thức sau thời gian thách thức (tức là tất cả giao dịch đã được thực hiện đúng), nó được coi là hợp lệ và được chấp nhận trên Ethereum. Người khác có thể tiếp tục mở rộng các khối Rollup chưa xác nhận, nhưng lưu ý rằng kết quả giao dịch sẽ bị đảo ngược nếu giao dịch được thực hiện dựa trên một lỗi đã được công bố trước đó.
Cuối cùng, người dùng phải gửi yêu cầu rút tiền đến hợp đồng Rollup để rút tiền từ Layer 2 sang Layer 1. Hợp đồng sẽ xác minh rằng người dùng có đủ tiền trên Rollup và cập nhật số dư của họ trên mainchain tương ứng.
Với cấu trúc sinh thái và airdrop, Arbitrum nhanh chóng trở thành mạng lưới hoạt động tích cực nhất trong ETH Layer2, với TVL vượt quá 2,7 tỷ đô la. Sau khi airdrop lớn, nhóm Arbitrum đã khởi chạy chương trình Arbitrum Orbit: khuyến khích các nhà phát triển xây dựng Layer3 bằng cách sử dụng các công nghệ liên quan đến Arbitrum. Beosin đã hoàn thành kiểm toán bảo mật của ArbSwap, Arbipad để giúp phát triển bảo mật của hệ sinh thái Arbitrum.
Mặc dù Optimism ít hoạt động sinh thái hơn Arbitrum, OP Stack, được ra mắt bởi Optimism vào năm 2023, đã nhận được sự công nhận rộng rãi từ ngành công nghiệp như một giải pháp hoàn chỉnh và khả thi cho việc xây dựng Layer2 module. Hơn 25 mạng Layer2 đã được xây dựng bằng OP Stack, bao gồm các dự án nổi bật như Base, Mantle, Manta, OP BNB và Celo. DIPX Finance và Starnet được xây dựng trên Optimism đã vượt qua kiểm định an ninh của Beosin.
Base là một mạng lưới Layer2 dựa trên OP Stack, chỉ xếp sau Arbitrum về hoạt động sinh thái và TVL. Trước đây, Beosin đã phân tích kiến trúc và rủi ro an ninh của Base một cách chi tiết, và đã kiểm toán Surf Protocol và EDA để giúp chủ dự án và người dùng tránh các rủi ro an ninh.
Blast, sau cuộc thi phát triển 'Big Bang' của mình, đã thấy TVL của mình tăng lên trên 2 tỷ đô la, đứng vị trí trên mạch Layer2. Beosin đã phân tích bảo mật mạng của Blast trước khi ra mắt mainnet. Do Blast không thực hiện chứng minh gian lận, tài sản được giữ trong một ví đa chữ ký, không phải là một cầu Rollup, có mức độ rủi ro tập trung cao. Beosin đã kiểm tra rất nhiều dự án sinh thái của Blast như Wand Protocol, Zest, Kalax.
OP Stack, một framework đã trưởng thành cho Optimistic Rollups, về cơ bản phân rã quá trình phức tạp của việc xây dựng chuỗi optimistic Rollups thành một quá trình đơn giản bằng cách cung cấp một bộ hoàn chỉnh các thành phần phần mềm, công cụ và framework. Ở đây, chúng ta lấy framework Op stack làm ví dụ để phân tích kiến trúc điển hình của Optimism Rollups.
● Node thực thi: Op-geth là một khách hàng thực thi mở rộng cho Ethereum xử lý các chức năng cụ thể của Layer2, như việc nhận tiền gửi token từ Layer1. Lớp này định nghĩa tất cả các chức năng chịu trách nhiệm thực hiện các biến thể trạng thái. Ở đây, các chuyển đổi trạng thái được kích hoạt dựa trên đầu vào nhận được từ các nút tóm tắt (chuỗi và người xác nhận) thông qua API của bộ máy.
● Nút Rollup: bao gồm sequencer và validator. Người thu thập dữ liệu (collator) chịu trách nhiệm gom nhóm các giao dịch đã xử lý từ lớp 2 và công bố chúng lên Layer1. Sequencer xác định cách các giao dịch trên chuỗi Layer2 được thu thập và công bố. Validator kiểm tra tính hợp lệ của giao dịch gom nhóm và nếu phát hiện gian lận, sẽ nộp bằng chứng.
● Chứng minh gian lận: Cannon là phiên bản nâng cấp của Geth và chịu trách nhiệm chạy EVM trong giai đoạn phát hiện gian lận và chứng minh. Thực chất, đó là một bộ máy xung đột trên chuỗi chuyển hướng với sequentiers và validators qua các api để chứng minh các giao dịch giả mạo.
● Batch commit: Sequencers xử lý hàng loạt tất cả các giao dịch được xử lý một lần, được xác minh bởi các máy xác minh, và Sequencers gửi các giao dịch được xử lý hàng loạt lên Layer1.
● Hợp đồng cầu: Được triển khai trên Ethereum và Layer2, cho phép người dùng truyền đi thông điệp và chuyển tài sản giữa Layer1 và Layer2.
Dưới kiến trúc kỹ thuật của Optimistic Rollup, việc đảm bảo an ninh cho tài sản của người dùng khi chuyển đổi giữa L1 và L2 là rất quan trọng. Dưới đây là các chi tiết về cách người dùng có thể truy cập tài sản giữa hai lớp và cách hệ thống duy trì tính toàn vẹn và an ninh của các giao dịch này.
● Cầu nối tài sản vào Rollup: Người dùng gửi tiền vào hợp đồng cầu nối chuỗi của Rollup trên Layer1. Hợp đồng cầu nối chuỗi chuyển tiếp giao dịch đến Layer2, nơi một số lượng tài sản tương đương được phát hành và gửi đến một địa chỉ do người dùng chọn trên Optimistic Rollup.
Các giao dịch do người dùng tạo ra, chẳng hạn như tiền gửi từ Layer1 đến Layer2, thường được xếp hàng cho đến khi bị cô lập và gửi lại đến hợp đồng Rollup. Tuy nhiên, để duy trì tính chống kiểm duyệt, Rollup Lạc quan cho phép người dùng gửi các giao dịch trực tiếp đến hợp đồng Rollup trên chuỗi nếu thời gian chờ giao dịch vượt quá thời gian tối đa được cho phép.
● Rút tài sản từ Rollup: Do cơ chế chứng cứ gian lận, việc rút tiền từ Optimistic Rollup sang Ethereum phức tạp hơn. Nếu người dùng khởi tạo giao dịch từ Layer2 sang Layer1 để rút tiền được quản lý trên Layer1, họ cần đợi kết thúc thời gian thách thức, thường kéo dài khoảng 7 ngày.
Khi người dùng khởi tạo yêu cầu rút tiền trên Rollup, giao dịch sẽ được bao gồm trong lô kế tiếp và tài sản của người dùng trên Rollup sẽ bị hủy. Sau khi lô được xuất bản trên Ethereum, người dùng có thể tính toán một chứng minh Merkle để xác minh rằng giao dịch rút tiền của họ đã được bao gồm trong khối. Bước tiếp theo là chờ kết thúc giai đoạn trễ để hoàn thành giao dịch trên Layer1 và rút tiền về mainnet.
Để tránh phải đợi một tuần trước khi rút tiền từ Ethereum, người dùng của Optimistic Rollup có thể yêu cầu tạm ứng từ nhà cung cấp thanh khoản (LP), nhà cung cấp này giả định quyền sở hữu các khoản rút tiền đang chờ xử lý và thanh toán tiền cho người dùng trên Layer1 để đổi lấy một khoản phí. Các nhà cung cấp thanh khoản có thể xác minh tính hợp lệ của các yêu cầu rút tiền của người dùng bằng cách tự kiểm tra dữ liệu trên chuỗi trước khi giải ngân tiền. Bằng cách này, họ có thể đảm bảo rằng giao dịch cuối cùng sẽ được xác nhận, đạt được sự chắc chắn về sự tin tưởng.
Layer2 là một hệ thống blockchain hoàn chỉnh, vì vậy việc kiểm toán chung của chuỗi công cộng cũng áp dụng cho Optimistic Rollup, như chi tiết ở phụ lục cuối cùng của bài viết này.
Ngoài ra, do tính đặc biệt của nó, Optimistic Rollup yêu cầu một số kiểm toán bổ sung:
● Chứng minh sẵn có dữ liệu: Đảm bảo rằng dữ liệu giao dịch Layer2 có sẵn trên Layer1 để ngăn chặn việc mất dữ liệu.
● Cơ chế đồng bộ dữ liệu: Kiểm tra xem cơ chế đồng bộ dữ liệu giữa Layer1 và Layer2 có vững chắc và có thể xử lý các tình huống bất thường như mạng bị phân tách không.
● Hợp đồng Chứng minh Gian lận: Xác minh rằng hợp đồng chứng minh gian lận được triển khai đúng cách.
● Cơ chế thời gian thách thức: Kiểm tra xem độ dài của thời gian thách thức có hợp lý và liệu chứng cớ gian lận có thể hoàn thành trong thời gian quy định hay không.
● Quy trình nộp bằng chứng gian lận: Kiểm tra xem quy trình nộp bằng chứng gian lận có đảm bảo an toàn không.
● Quy trình nạp tiền và rút tiền: Kiểm tra quy trình nạp tiền và rút tiền từ Layer1 đến Layer2 và từ Layer2 đến Layer1 để đảm bảo quy trình an toàn.
● Tạo và đốt tài sản: Kiểm tra logic tạo và phá hủy tài sản trên Layer2 để đảm bảo sự tương ứng chính xác với tài sản Layer1.
● Cơ chế cung cấp thanh khoản: Nếu có cơ chế cung cấp thanh khoản (LP), cần xem xét quy trình hoạt động của LP và bảo mật của nó.
Zero-Knowledge (ZK) Rollup là một Layer2 dựa trên chứng minh không cần biết. Nó chủ yếu thực hiện tính toán phức tạp và tạo ra bằng chứng ngoài chuỗi, xác minh bằng chứng trên chuỗi và lưu trữ một phần dữ liệu để đảm bảo tính sẵn có của dữ liệu.
ZK Rollup là một “giải pháp mở rộng lai” là một giao thức off-chain chạy độc lập nhưng được bảo mật từ Ethereum. Cụ thể, mạng Ethereum bảo đảm tính hợp lệ của các cập nhật trạng thái trên ZK Rollups và đảm bảo sẵn có dữ liệu nền mỗi khi trạng thái Rollup được cập nhật. Trạng thái của Rollup được duy trì bởi các hợp đồng thông minh triển khai trên mạng Ethereum. Để cập nhật trạng thái này, nút ZK Rollups phải gửi một chứng minh tính hợp lệ để xác minh. Một chứng minh tính hợp lệ là một đảm bảo mật mã học rằng một thay đổi đề xuất trong trạng thái thực sự là kết quả của việc thực thi một lô giao dịch cụ thể. Điều này có nghĩa là ZK Rollups chỉ cần cung cấp chứng minh tính hợp lệ để hoàn tất các giao dịch trên Ethereum, mà không cần phải xuất bản tất cả dữ liệu giao dịch.
Không có sự trì hoãn trong việc chuyển tiền từ ZK Rollups sang Ethereum, vì giao dịch rời đi được thực hiện sau khi hợp đồng ZK Rollups đã xác minh được chứng cứ về tính hợp lệ. Ngược lại, việc rút tiền từ Optimistic Rollups sẽ gây ra sự trì hoãn vì bất kỳ ai cũng có thể sử dụng chứng cứ về gian lận để thách thức một giao dịch rời đi.
zkSync, một giải pháp L2 ra mắt cách đây năm năm bởi nhóm Matter Labs, sử dụng công nghệ chứng minh không biết để cho phép xác minh giao dịch hiệu quả và đã huy động hơn 200 triệu đô la. zkSync là mạng Layer2 hoạt động sinh thái mạnh mẽ sử dụng ZK Rollups và zkSync cũng gây tranh cãi. Beosin trước đây đã tiến hành kiểm toán cho dự án DeFi hàng đầu của họ, SyncSwap, bao gồm chất lượng mã, logic hợp đồng và bảo mật, mô hình vận hành và nhiều hơn nữa.
StarkNet sử dụng ZK-STARK để xây dựng Layer2 nhằm tăng tốc độ giao dịch và giảm phí giao dịch. StarkNet có một máy ảo native (Cairo VM) và ngôn ngữ phát triển Cairo để giúp các nhà phát triển viết hợp đồng thông minh một cách an toàn và dễ dàng hơn. Beosin đã trở thành đối tác bảo mật chính thức của StarkNet, hoàn thành việc kiểm toán bảo mật cho Option Dance và Reddio. Vào ngày 13 tháng 8 năm 2024, Reddio đã hoàn thành vòng gọi vốn hạt giống do Paradigm dẫn đầu để xây dựng một mạng lưới Layer2 EVM song song hiệu suất cao.
Scroll được mở rộng bằng công nghệ zero-knowledge proof, và phần cứng tăng tốc quá trình tạo và xác minh zero-knowledge proofs, nhằm mục tiêu đạt được tính tương thích EVM ở mức bytecode. Điều này có nghĩa là các nhà phát triển có thể trực tiếp sử dụng Solidity và các công cụ phát triển liên quan đến Ethereum để xây dựng hợp đồng thông minh.
Các khung ZK Rollups phổ biến bao gồm các hợp đồng Rollup và Bridge, người thu thập, người tổng hợp, người lặp lại và mạng Roller tạo ra các chứng minh không cần biết. Kiến trúc cụ thể được thể hiện trong hình sau:
● Hợp đồng Rollup và hợp đồng cầu
Hợp đồng Rollup chịu trách nhiệm cung cấp dữ liệu sẵn có cho các giao dịch Rollup, xác minh bằng chứng hợp lệ zkEVM và cho phép người dùng chuyển tài sản giữa Ethereum và Rollup. Nó nhận được gốc và khối trạng thái Lớp 2 từ trình đối chiếu, gốc trạng thái được lưu trữ ở trạng thái Ethereum và dữ liệu khối lớp 2 được lưu dưới dạng dữ liệu gọi của Ethereum.
Các hợp đồng cầu nối được triển khai trên Ethereum và Layer2, cho phép người dùng truyền thông đi và chuyển tài sản giữa Layer1 và Layer2.
● Sequencer: Sequencer cung cấp giao diện JSON-RPC và chấp nhận các giao dịch Lớp 2, định kỳ lấy một lô giao dịch từ bộ nhớ tạm để thực thi, tạo ra các khối Lớp 2 và các rễ trạng thái mới. Thực hiện của nó thường dựa trên Go-Ethereum (Geth), đảm bảo tính tương thích tốt nhất và độ an toàn cao nhất.
● Điều phối viên: Điều phối viên được thông báo khi người đối chiếu tạo một khối mới và nhận được dấu vết thực thi của khối đó từ trình đối chiếu. Dấu vết thực thi sau đó được gửi đến một Con lăn được chọn ngẫu nhiên trong mạng Con lăn, tạo ra bằng chứng về tính hợp lệ.
● Relayer: Người truyền lại theo dõi các hợp đồng Rollup và các hợp đồng cầu nối triển khai trên Ethereum và Layer2. Các trách nhiệm chính bao gồm: 1) Theo dõi sự có sẵn dữ liệu và xác minh các khối Layer2 bằng cách theo dõi các hợp đồng Rollup; 2) Theo dõi sự kiện gửi và rút tiền của việc kết nối cầu nối Ethereum và Layer2, và truyền các tin nhắn tới phía đối diện.
● Mạng Roller: Roller trong mạng Roller đóng vai trò là người chứng minh và chịu trách nhiệm tạo ra chứng minh sự hợp lệ cho ZK Rollup. Một dấu vết thực thi khối được nhận từ người phối hợp, được chuyển đổi thành một chứng nhận mạch, sau đó một chứng minh được tạo ra cho mỗi zkevm bằng cách sử dụng tăng tốc phần cứng, và cuối cùng là sử dụng tổng hợp chứng minh để tổng hợp nhiều chứng minh thành một chứng minh duy nhất.
Dưới kiến trúc kỹ thuật của ZK Rollups, việc đảm bảo an ninh cho tài sản của người dùng trong quá trình chuyển đổi giữa L1 và L2 là rất quan trọng. Sau đây là chi tiết về cách người dùng có thể truy cập tài sản giữa hai tầng và cách hệ thống duy trì tính toàn vẹn và an ninh của các giao dịch này.
● Cầu nối tài sản vào Rollup: Người dùng nhập Rollup bằng cách gửi token vào một hợp đồng ZK Rollups được triển khai trên một lớp mạng. Giao dịch này cần được gửi đến hợp đồng Rollup bởi phía dự án.
Nếu hàng đợi gửi tiền đang bắt đầu đầy, người vận hành ZK Rollups sẽ chấp nhận các giao dịch gửi tiền này và gửi chúng đến hợp đồng Rollup. Khi tiền được gửi vào Rollup, người dùng có thể bắt đầu xử lý giao dịch.
Người dùng có thể xác minh số dư trên Rollup bằng cách băm tài khoản của họ, gửi giá trị băm đến hợp đồng Rollup và cung cấp một Merkle proof xác minh với trạng thái root hiện tại.
● Rút tiền từ Rollup: Người dùng khởi tạo giao dịch rút tiền, gửi tài sản trên Rollup của họ đến tài khoản cụ thể để phá hủy. Nếu người vận hành thêm giao dịch vào lô tiếp theo, người dùng có thể gửi yêu cầu rút tiền đến hợp đồng trên chuỗi. Yêu cầu rút tiền bao gồm:
Merkle proof, chứng minh rằng giao dịch của người dùng được thêm vào tài khoản bị hủy trong lô giao dịch
dữ liệu giao dịch
Gộp gốc
Địa chỉ mạng lớp 1 để nhận tiền gửi
Hợp đồng Rollup băm dữ liệu giao dịch, kiểm tra xem batch root có tồn tại hay không, và sử dụng Merkle proof để kiểm tra xem transaction hash có phải là một phần của batch root hay không. Hợp đồng thực hiện giao dịch exit và gửi tiền đến một địa chỉ trên mạng Layer1 do người dùng chọn.
Layer 2 là một hệ thống blockchain hoàn chỉnh, vì vậy các mục kiểm tra thông thường cho các blockchain cũng áp dụng cho ZK Rollup, như đã được mô tả trong phụ lục ở cuối bài viết này.
Ngoài ra, do tính đặc biệt của nó, ZK Rollup yêu cầu thực hiện một số cuộc kiểm tra bổ sung:
● Chứng minh an ninh hệ thống: Kiểm tra tính an toàn và đúng đắn của các hệ thống chứng minh không kiến thức được sử dụng (ví dụ: Groth16, Plonk, Halo2, zk-STARK, vv).
● An toàn mạch: Kiểm tra các lỗ hổng có thể có trong thiết kế mạch và triển khai, chủ yếu bao gồm các nội dung sau:
Mạch không đủ ràng buộc
Mạch quá ràng buộc
Mạch không xác định
Tràn số học Tràn số học
Độ dài bit không phù hợp
Đầu Vào Công Khai Không Sử Dụng Được Tối Ưu Hóa Ra
Frozen Heart: Chế tạo các Bằng chứng không có kiến thức cho không
Rò rỉ thiết lập đáng tin cậy
Được chỉ định nhưng không bị ràng buộc
Sử dụng thành phần không an toàn
Chính xác biến
● Tạo và xác minh chứng minh: Xem xét quá trình tạo và xác minh chứng minh để đảm bảo nó hiệu quả và an toàn.
● Chứng minh sự có sẵn dữ liệu: Đảm bảo rằng dữ liệu giao dịch Layer2 có sẵn trên Layer1 để ngăn chặn mất dữ liệu.
● Cơ chế đồng bộ dữ liệu: Kiểm tra xem cơ chế đồng bộ dữ liệu giữa Layer1 và Layer2 có hoạt động tốt và có thể xử lý các tình huống bất thường như phân vùng mạng hay không.
● Quy trình nạp và rút tiền: Kiểm tra quy trình nạp và rút tiền từ Layer1 đến Layer2 và từ Layer2 đến Layer1 để đảm bảo quy trình an toàn.
● Tạo và tiêu hủy tài sản: Kiểm tra logic tạo ra và tiêu hủy tài sản trên Layer2 để đảm bảo sự tương ứng chính xác với tài sản trên Layer1.
● Quét các phụ thuộc ngoại vi và lỗ hổng đã biết: ZK Rollup thường phụ thuộc nặng vào các kho lưu trữ và công cụ mật mã học và toán học của bên thứ ba và nên kiểm tra kỹ lưỡng tính bảo mật của phụ thuộc của họ để quét và xác nhận các lỗ hổng đã biết.
Mục kiểm tra chung về Blockchain & Layer2:
● Tràn số nguyên: Kiểm tra tràn số nguyên và tràn số nguyên âm
● Vòng lặp: Kiểm tra vòng lặp của chương trình để xem điều kiện có hợp lý không
● Cuộc gọi đệ quy vô tận: Kiểm tra xem điều kiện thoát của cuộc gọi đệ quy chương trình có hợp lý không
● Điều kiện đua: Kiểm tra quyền truy cập vào tài nguyên chia sẻ trong trạng thái đồng thời
● Lỗi ngoại lệ: Kiểm tra mã ném ngoại lệ gây ra việc chương trình tắt hoạt động
● Lỗ hổng chia cho 0: Kiểm tra xem có trường hợp chia cho 0 không
● Chuyển đổi kiểu: Kiểm tra xem việc chuyển đổi kiểu có đúng không và liệu có mất thông tin quan trọng trong quá trình chuyển đổi không
● Vượt quá giới hạn mảng: Kiểm tra việc truy cập vào các phần tử ngoài giới hạn mảng
● Lỗ hổng giải mã: Kiểm tra các vấn đề trong quá trình giải mã
● Bảo mật trong việc triển khai chức năng: Kiểm tra xem việc triển khai giao diện RPC có rủi ro bảo mật và có nhất quán với thiết kế chức năng của giao diện RPC hay không
● Xem xét xem cài đặt quyền truy cập của giao diện RPC nhạy cảm có hợp lý không: Kiểm tra cài đặt quyền truy cập của giao diện RPC nhạy cảm
● Cơ chế truyền tải được mã hóa: Kiểm tra xem liệu có sử dụng giao thức truyền tải được mã hóa, như TLS, hay không
● Phân tích định dạng dữ liệu yêu cầu: Kiểm tra quá trình phân tích định dạng cho dữ liệu yêu cầu
● Cuộc tấn công mở khóa ví: Khi một nút mở khóa ví của mình, nó được yêu cầu bởi RPC để đánh cắp tiền
● Bảo mật truyền thống của Web: Kiểm tra các lỗ hổng sau: Cross-site scripting (XSS)/template injection/lỗ hổng thành phần của bên thứ ba/HTTP parameter contamination/SQL injection/XXE entity injection/lỗ hổng deserialization/SSRF vulnerability/Code injection/local file inclusion/Remote file inclusion/command execution injection và các lỗ hổng truyền thống khác
● Cơ chế xác thực và nhận diện danh tính nút mạng: kiểm tra xem có cơ chế xác thực danh tính nút mạng hay không, cơ chế xác thực danh tính nút mạng có thể được né tránh
● Oan toàn bảng định tuyến: Kiểm tra xem bảng định tuyến có thể được chèn vào hoặc ghi đè một cách tùy ý không
● Thuật toán phát hiện nút: Kiểm tra xem thuật toán phát hiện nút có cân đối và không thể đoán trước, ví dụ như thuật toán khoảng cách không cân đối
● Kiểm toán sử dụng kết nối: Kiểm tra xem giới hạn và quản lý số lượng nút được kết nối với mạng p2p có hợp lý hay không
● Tấn công nhật thực: Đánh giá chi phí và nguy cơ của các cuộc tấn công nhật thực, cung cấp phân tích định lượng nếu cần thiết
● Tấn công Sybil: Đánh giá cơ chế đồng thuận bỏ phiếu và phân tích các chiến lược kiểm tra đủ điều kiện bỏ phiếu
● Tấn công nghe trộm: Kiểm tra xem giao thức truyền thông có tiết lộ quyền riêng tư không
● Tấn công người ngoài hành tinh: Đánh giá xem nút có thể nhận ra cùng một loại nút chuỗi hay không
● Time hijacking: Kiểm tra cơ chế tính toán thời gian mạng của một nút
● Tấn công kiệt quệ bộ nhớ: Kiểm tra tiêu thụ bộ nhớ lớn
● Tấn công kiệt quệ ổ cứng: Kiểm tra nơi lưu trữ các tệp lớn
● Tấn công áp lực ổ cắm: Kiểm tra chính sách giới hạn về số lượng liên kết
● Tấn công cạn kiệt bộ xử lý nhân: Kiểm tra giới hạn về việc tạo bộ xử lý nhân, chẳng hạn như bộ xử lý tệp
● Rò rỉ bộ nhớ liên tục: Kiểm tra rò rỉ bộ nhớ
● Bảo mật thuật toán băm: Kiểm tra khả năng chống va chạm của thuật toán băm
● Bảo mật thuật toán chữ ký số: Kiểm tra bảo mật của thuật toán chữ ký và hiện thực thuật toán
● Bảo mật thuật toán mã hóa: Kiểm tra bảo mật của thuật toán mã hóa và việc triển khai thuật toán
● Bảo mật trình tạo số ngẫu nhiên: Kiểm tra xem thuật toán tạo số ngẫu nhiên chính có hợp lý không
● An ninh triển khai BFT: Đánh giá an ninh triển khai của các thuật toán BFT
● Quy tắc chọn ngã ba: Kiểm tra quy tắc chọn ngã ba để đảm bảo an ninh
● Kiểm tra độ tập trung: Xác định xem liệu thiết kế hệ thống có thiên về tập trung quá mức hay không
● Kiểm toán ưu đãi: Đánh giá tác động của các ưu đãi đối với bảo mật
● Tấn công chi tiêu gấp đôi: Kiểm tra xem sự đồng thuận có thể bảo vệ chống lại các cuộc tấn công chi tiêu gấp đôi hay không
● Kiểm tra MEV Attack: Xem xét tác động của MEV của nút gói khối đến sự công bằng của chuỗi
● Kiểm tra quá trình đồng bộ hóa khối: Kiểm tra các vấn đề bảo mật trong quá trình đồng bộ hóa
● Quá trình kiểm tra phân tích định dạng khối: Kiểm tra các vấn đề liên quan đến bảo mật trong quá trình phân tích định dạng, chẳng hạn như lỗi phân tích dẫn đến sự cố
● Kiểm toán quy trình tạo khối: Kiểm tra các vấn đề bảo mật trong quy trình tạo khối, bao gồm xem liệu gốc cây Merkle được xây dựng một cách hợp lý hay không
● Kiểm tra quy trình xác minh khối: Kiểm tra xem các mục chữ ký khối và logic xác minh có đủ hay không
● Kiểm tra logic xác thực khối: Kiểm tra xem thuật toán xác thực khối và việc triển khai có hợp lý hay không
● Đụng độ hash khối: Kiểm tra cách xây dựng đụng độ hash khối và xem xét xử lý đụng độ có hợp lý hay không
● Giới hạn tài nguyên xử lý khối: Kiểm tra xem bể khối mồ côi, tính toán xác minh, địa chỉ đĩa cứng và các giới hạn tài nguyên khác có hợp lý không
● Kiểm tra quy trình đồng bộ hóa giao dịch: Kiểm tra các vấn đề bảo mật trong quá trình đồng bộ hóa
● Xem xét cách xây dựng va chạm hash giao dịch và cách xử lý chúng
● Phân tích định dạng giao dịch: Kiểm tra các vấn đề an ninh trong quá trình phân tích định dạng, chẳng hạn như lỗi phân tích dẫn đến sự cố
● Kiểm tra tính hợp lệ của giao dịch: Kiểm tra xem các mục chữ ký của từng loại giao dịch và logic xác minh có đủ hay không
● Giới hạn tài nguyên xử lý giao dịch: Kiểm tra xem các giới hạn tài nguyên như các giao dịch trong pool, tính toán xác minh và địa chỉ ổ cứng có hợp lý không
● Tấn công tính linh hoạt của giao dịch: Liệu một giao dịch có thể thay đổi các trường nội bộ (chẳng hạn như ScriptSig) để thay đổi hàm băm giao dịch mà không ảnh hưởng đến tính hợp lệ của giao dịch hay không
● Kiểm tra sự phát hiện lại giao dịch của hệ thống: Kiểm tra sự phát hiện lại giao dịch của hệ thống
● Kiểm tra mã bytecode hợp đồng: Kiểm tra tính bảo mật của quá trình xác minh hợp đồng của máy ảo, chẳng hạn như tràn số nguyên và vòng lặp vô hạn
● Thực thi bytecode hợp đồng: Kiểm tra tính bảo mật của quá trình thực thi bytecode của máy ảo, như tràn số nguyên, vòng lặp vô hạn, và cetera
● Mô hình khí: Kiểm tra xem phí cho mỗi hoạt động nguyên tử của quá trình xử lý giao dịch / thực hiện hợp đồng tỷ lệ thuận với mức tiêu thụ tài nguyên
● Tính toàn vẹn của nhật ký: Kiểm tra xem thông tin chính có được ghi lại hay không
● Bảo mật nhật ký: Kiểm tra xem việc xử lý nhật ký không đúng cách có gây ra sự cố bảo mật hay không, chẳng hạn như tràn số nguyên
● Nhật ký chứa thông tin riêng tư: Kiểm tra xem nhật ký có chứa thông tin riêng tư như các khóa không
● Lưu trữ nhật ký: Kiểm tra xem nội dung quá mức có được ghi lại trong nhật ký hay không, điều này tiêu tốn tài nguyên nút
● Mã nút Bảo mật chuỗi cung ứng: Kiểm tra tất cả các thư viện, thành phần và phiên bản của bên thứ ba của khung chuỗi công cộng để tìm các vấn đề đã biết