Hôm nay sẽ là một bài viết về Rollups để các bạn hiểu hơn về concept này. Sắp tới có thể Rollups cũng có thể sẽ là một trong những đột phá mới ở infrastructure layer.
Như đã biết, Ethereum nói riêng và các Layer 1 khác nói chung đều có vấn đề về mở rộng. Việc trả phí quá cao cho một giao dịch, thêm nữa là phải đợi quá lâu để giao dịch được xác nhận thật sự là rào cản lớn đối với adoption của blockchain. Do đó mới sinh ra các dự án giúp giải quyết vấn đề này.
Để mở rộng được Layer 1 thì ngoài việc phải cải thiện performance từ lõi, tức là tối ưu cơ chế đồng thuận, tốc độ luân chuyển và xác nhận giao dịch thì việc tính toán ra khỏi chain rồi đưa kết quả tính toán vào lại chain cũng là một giải pháp đã được thảo luận rất nhiều. Từ các cuộc thảo luận đó, ta có được các giải pháp Layer 2 như State Channel, Sidechain, Rollups…
Ở bài này, chúng ta sẽ đào sâu về giải pháp Layer 2, đó chính là Rollups. Vì đây là giải pháp đang được thảo luận và quan tâm khá nhiều.
Các loại Rollups
Rollups có thể hiểu là các hệ thống tính toán ngoài chuỗi, thực hiện chức năng tính toán giao dịch, thực thi Smart Contracts sau đó gom lại, nén và gửi kết quả vào chain để xác nhận. Hiện nay trên thị trường có 2 loại Rollups chính đó là Optimistic Rollups vs Zk-Rollups.
Optimistic Rollups (ORs)
Optimistic Rollups là hệ thống tính toán ngoài chuỗi hỗ trợ tính toán giao dịch và gom chúng lại (roll) rồi gửi kết quả về Layer 1. Optimistic Rollups dùng Fraud Proofs để ngăn chặn giao dịch gian lận được đưa về Layer 1. Để dễ hiểu hơn, chúng ta có workflow bên dưới
Một số khái niệm mới :
- Sequencers: Là các nodes với nhiệm vụ liên tục cập nhật trạng thái của Layer 1 và ORs.
- Verifiers: Là các nodes sẽ kiểm tra những giao dịch từ Layer 2 mà Sequencers gửi về rồi so sánh với State Root của chính mình để phát hiện giao dịch gian lận. Trong trường hợp Verifiers phát hiện giao dịch gian lận thì sẽ nhận được phần $ETH mà Sequencers Staked.
- State Root: Trạng thái gốc của chain được mã hóa theo Merkle Tree.
- Fraud Proof: Bằng chứng để kết luận trong State mà Sequencers gửi về Layer 1 là có giao dịch gian lận.
Thứ tự của flow sẽ như sau :
- Users sẽ gửi các giao dịch của mình tới Smart Contracts của OR và Sequencers sẽ xử lý và tạo bản copy trên Layer 2.
- Xử lý xong, Sequencers sẽ gửi Transaction data và trạng thái mới của OR về Layer 1.
- Các nodes của OR sẽ xử lý Transactions trên Layer của mình và liên tục cập nhật trạng thái mới về Layer 1, sử dụng call data. Cái này có thể hiểu là Smart Contract của OR trên Layer 1 sẽ mặc định chấp nhận tất cả các transactions gửi về là hợp lệ (lý do gọi là Optimistic), Smart Contracts sẽ liên tục cập nhật dữ liệu của OR State.
- Để đảm bảo trạng thái giao dịch mới từ OR gửi về là chính xác thì lúc này Verifier nodes sẽ vào cuộc và so sánh State mới này với bản mà chính nó lưu trữ.
- Nếu phát hiện giao dịch gian lận thì Verifiers sẽ gửi Fraud Proof vào network buộc Sequencers tạo lại State mới bắt đầu lại từ chỗ giao dịch gian lận được phát hiện.
- Lúc này Sequencer nào gửi giao dịch không chính xác về sẽ bị mất phần tiền mình stake và phần đó sẽ được thưởng cho Verifiers.
- Sau này khi Sequencer trở nên phi tập trung hơn, thì phần stake của Sequencers không chỉ bị mất đi khi gian lận mà Sequencer nào gian lận sẽ bị mạng lưới thay thế bằng Sequencers khác.
Ưu điểm :
- Điểm mạnh của OR chính là việc cho phép xây dựng OVM một cách dễ dàng, ngoài việc cho phép làm các business logic chuyên biệt thì với OVM, dev có thể viết gần như tất cả business logic mà Ethereum có.
- Ngoài ra thì thì OVM còn tương thích với cả EWASM, EVM hoặc các VM khác. Code có thể viết bằng Solidity cho nên sẽ dễ dàng hơn cho dev của ETH tạo ra những project trên OR.
Nhược điểm:
- Fraud Proof đôi khi sẽ tốn khá nhiều chi phí do batch gửi về có thể qua nhiều giao dịch gian lận. Điều này làm chi phí xác minh sẽ tăng lên.
- Nếu không dùng bridge thì thời gian rút từ OR về Layer 1 là khoảng 7-14 ngày, đây là khoảng thời gian chờ xem có giao dịch gian lận hay không, sau khoảng thời gian này thì tiền sẽ được Smart Contract của OR gửi về trả cho user.
- Khả năng bị tấn công trên Layer 2, Security của OR sẽ phụ thuộc vào Sequencers và Verifiers. Đối với network có quá ít Sequencers thì việc các Sequencers thông đồng với nhau để tạo proof gian lận là điều có thể xảy ra. Phần thưởng dành cho verifiers phải thật sự hấp dẫn để có thể ngăn chặn điều này.
ZK Rollups (ZKRs)
Cũng giống với OR, ZK Rollups cũng có một Smart Contracts chính ở trên mainchain và các Operators hoạt động tương tự như Sequencer đối với OR. Điểm khác biệt ở đây là các Operators này sẽ phải gửi proofs về Layer 1 cùng với bản copy state trên ZKR. Proofs này có thể là SNARK hay là STARK, từ đó sinh ra 2 khái niệm zk-SNARK vs zk-STARK.
Một số khái niệm mới :
- Operators/Relayers: Là các nodes với nhiệm vụ liên tục cập nhật trạng thái của Layer 1 và ZKRs. Ngoài ra Operators sẽ phải tạo ra cả ZK-proofs.
- State Root: Trạng thái gốc của chain được mã hóa theo Merkle Tree.
- ZK Proofs: : Là các bằng chứng cho các giao dịch trên ZKR đã được mã hóa để gửi về Layer 1 xác nhận State mới. Sử dụng công nghệ Zero Knowledge, Proof này sẽ giúp cho việc Smart Contract trên mainchain xác nhận giao dịch có hợp lệ hay không mà không cần phải show trực tiếp các giao dịch này ra. ZKP làm được như vậy là nhờ vào toán học.
Thứ tự của Work-flow này như sau :
- Users sẽ gửi các giao dịch của mình tới Smart Contracts của ZKR. Operators sẽ xử lý và tạo bản copy trên Layer 2.
- Khi xử lý xong, Operators sẽ gửi Transaction Data, trạng thái mới và ZK Proofs của ZKR về Layer 1.
- Các nodes của ZKR sẽ xử lý transactions trên Layer của mình và liên tục cập nhật trạng thái mới về Layer 1 bằng cách gửi ZK-Proofs về Layer 1. Khác với OR, Transactions sẽ không được xem là hợp lệ cho tới khi Proofs của ZKR được Smart Contract của ZKR trên Layer 1 xác nhận là hợp lệ.
- Nhờ có công nghệ mã hóa Zero-Knowledge cho nên, ZKR sẽ loại bỏ Verifiers và dùng Smart Contract để xác minh giao dịch gửi về từ ZKR.
ZK-Snark vs ZK-Stark
- Zk-SNARK Rollups: ZK-SNARK là viết tắt của Zero-Knowledge Succinct Non-interactive Argument of Knowledge. Có thể hiểu ở đây, ZKR sử dụng SNARK Proof thì Proof này sẽ phải ngắn ngọn (Succint) và sẽ không cần tương tác với Smart Contract nên sẽ giảm phí và tăng tốc độ xác minh Proof. SNARK Proof được mã hóa bằng Elliptic Curves.
Ưu điểm:
- Nhanh, chi phí thấp, tính bảo mật mặc định và đã được nghiên cứu kĩ càng.
Nhược điểm:
- SNARK Proofs đòi hỏi phải có Trusted set up từ trước. Tức là để tạo ra những Proofs này thì Operators và Smart Contract owners đã nắm giữ key có thể dùng để giải mã Proofs.
- Ngoài ra thì SNARK Proofs còn có thể bị giải mã bằng máy tính lượng tử.
- Zk-STARK rollups : ZK-STARK là viết tắt của Zero-Knowledge Scalable Transparent Argument of Knowledge. Có thể hiểu ở đây, ZKR sử dụng STARK Proof thì Proof này sẽ được mã hóa dưới dạng Hash Function. Điều này giúp tăng mở rộng của Proof và loại bỏ Trusted Setup.
Ưu điểm:
- Không đòi hỏi Trusted Setup ban đầu và Quantum Resistant (chống máy tính lượng tử).
Nhược điểm:
- Dù giải quyết các vấn đề scale của SNARKs ở khía canh mở rộng khi mà chi phí xác minh là không đổi dù tăng số lượng lần xác minh (khi có sự cố về proofs đòi hỏi giao tiếp giữa smart contract và operators). Tuy nhiên do kích cỡ của proof lớn hơn SNARK Proof cho nên chi phí cho 1 proof bình thường sẽ cao hơn SNARK và tốc độ xác minh proof (verification time) sẽ chậm hơn. Ngoài ra vì STARK là công nghệ còn khá mới nên những tài liệu hỗ trợ developers sẽ khan hiếm hơn SNARKs.
Ưu điểm/ Nhược điểm của ZK Rollups:
Ưu điểm :
- Không sợ ZKR bị tấn công do proofs được gửi về liên tục.
- Rút tiền về Layer 1 nhanh do không cần phải đợi Verifiers kiểm tra xem có Fraud Proof không.
- Các giao dịch trên ZKR được mặc định bảo mật.
Nhược điểm:
- Chưa có nhiều cơ sở hạ tầng trợ giúp, do công nghệ còn khá mới.
- Chưa có giải pháp để phát triển General Purpose Smart Contracts. Với ZKR, việc tạo ra VM sẽ khó hơn nhiều so với OVM của Optimistic Rollups do bản chất của ZK Proofs nên phát triển business logic sẽ khó hơn.
Một số biến thể của Zk-Rollups
Validiums
Validium, dạng ZK-Rollups mà Starkware sáng chế ra. Validium cho phép những dữ liệu về việc tính toán cho các giao dịch sẽ được lưu trữ off-chain để giảm chi phí.
Cụ thể hơn, ZK Rollups bình thường sẽ chỉ gửi kết quả tính toán các giao dịch và proofs về main chain để xác nhận. Với rollups bình thường thì data để tạo ra ZK Proof sẽ cũng được lưu trữ on-chain. Điều này làm tăng chi phí giao dịch.
Với Validium, các dữ liệu này sẽ được lưu trữ off-chain bởi Data Availability Commitee (DAC) - một network có chứa các nodes dùng để lưu trữ các dữ liệu này một cách phi tập trung.
Volitions
Volition, một dạng ZK Rollups mà Starkware sáng chế ra, cho phép người dùng tự do lựa chọn lưu trữ data giao dịch của mình on-chain hay off-chain. Trong trường hợp, được lưu off-chain thì data sẽ được lưu bởi DAC tương tự như Validium.
Trên đây là những khái niệm và cách hoạt động cơ bản cho mọi người có thể hiểu qua về Rollups. Công nghệ này sẽ còn rất nhiều cơ hội để phát triển trong tương lai.
Macrochain sẽ tiếp tục cập nhật những research và thông tin mới nhất về Rollups trong những bài viết tiếp theo.