Nguồn: Bitcoin Magazine; Dịch: Ngũ Châu, Kinh Tế Vàng
Rollups đã trở thành trung tâm của việc mở rộng BTC gần đây, trở thành điều đầu tiên thực sự ‘đánh cắp ánh sáng’ từ Lighting Network, và nhận được sự quan tâm rộng rãi hơn. Rollups nhằm mục đích trở thành một tầng hai off-chain không bị ràng buộc bởi hạn chế vốn thanh khoản của Lighting Network, nghĩa là người dùng cuối cùng cần có ai đó đã phân bổ trước (hoặc ‘mượn’) tiền để nhận tiền, hoặc nút trung gian cần có số dư kênh để tạo điều kiện cho số tiền thanh toán di chuyển từ người gửi đến người nhận trong quá trình.
Những hệ thống này ban đầu được triển khai trên Ethereum và các hệ thống Turing hoàn thành khác, nhưng gần đây đã chuyển trọng tâm sang việc di dời chúng sang các blockchain dựa trên UTXO (ví dụ: BTC). Bài viết này không bàn về tình hình triển khai hiện tại trên BTC, mà là về các tính năng của Rollup lý tưởng mà mọi người đã theo đuổi từ lâu, điều này phụ thuộc vào khả năng mà BTC hiện tại không hỗ trợ, tức là khả năng xác minh ZKP trực tiếp trên BTC.
Cấu trúc cơ bản của Roll được mô tả như sau: Một tài khoản đơn lẻ (UTXO trong BTC) lưu trữ số dư của tất cả người dùng trong Rollup. UTXO này bao gồm một cam kết, cam kết này tồn tại dưới dạng gốc Merkle của cây Merkle và cam kết tất cả số dư hiện tại của các tài khoản có sẵn trong Rollup. Tất cả các tài khoản này được ủy quyền bằng cách sử dụng Khóa công khai/Khóa riêng, vì vậy để thực hiện các chi tiêu ngoài chuỗi, người dùng vẫn phải ký một số nội dung bằng Chìa khoá bảo mật. Phần này của cấu trúc cho phép người dùng rời khỏi bất cứ lúc nào mà không cần phải có sự cho phép, chỉ cần chứng minh giao dịch của họ là một phần của cây Merkle, họ có thể rút lui khỏi Rollup một mình mà không cần sự cho phép của nhà điều hành.
Người vận hành Rollup phải bao gồm một ZKP trong giao dịch để cập nhật gốc merkle của số dư tài khoản trên chuỗi on-chain trong quá trình hoàn tất giao dịch off-chain. Nếu thiếu ZKP này, giao dịch sẽ bị vô hiệu và không thể được bao gồm trong Khối. Bằng chứng này cho phép người dùng xác minh xem tất cả các thay đổi đối với số dư tài khoản off-chain đã được ủy quyền đúng đắn từ người sở hữu tài khoản và rằng người vận hành không cập nhật số dư bằng ý đồ xấu để đánh cắp tiền của người dùng hoặc phân phối lại không trung thực cho người dùng khác.
Vấn đề là nếu chỉ có gốc cây merkle được xuất bản on-chain, người dùng có thể xem và truy cập được nó, vậy họ sẽ làm thế nào để đưa nhánh của họ vào cây để có thể rút tiền mà không cần phép lệnh khi họ muốn?
Trong một Rollup thích hợp, mỗi khi xác nhận giao dịch off-chain mới và trạng thái của tài khoản Rollup thay đổi, thông tin sẽ được đưa trực tiếp vào blockchain. Không phải toàn bộ cây, vì điều đó quá ngớ ngẩn, mà chỉ là thông tin cần thiết để xây dựng lại cây. Trong một hiện thực đơn giản, tóm tắt của tất cả các tài khoản hiện có trong Rollup sẽ bao gồm số dư và tài khoản chỉ được thêm vào trong giao dịch cập nhật Rollup.
Trong triển khai cao cấp hơn, sử dụng sự khác biệt trong số dư tài khoản. Điều này về cơ bản là tóm tắt về việc tài khoản nào đã tăng hoặc giảm vốn trong quá trình cập nhật. Điều này khiến cho mỗi cập nhật Rollup chỉ chứa sự thay đổi trong số dư tài khoản xảy ra. Sau đó, người dùng có thể đơn giản quét chuỗi và “tính toán” từ đầu của Rollup để đưa ra trạng thái số dư tài khoản hiện tại, điều này cho phép họ tái tạo cây Merkle của số dư hiện tại.
Như vậy có thể tiết kiệm một lượng lớn chi phí và Khối không gian (do đó tiết kiệm vốn), đồng thời vẫn cho phép người dùng đảm bảo truy cập thông tin cần thiết để thoát khỏi một cách đơn phương. Quy tắc rollup yêu cầu dữ liệu này được bao gồm trong rollup chính thức mà Khối chuỗi cung cấp cho người dùng, nghĩa là giao dịch không bao gồm tóm tắt tài khoản hoặc sự khác biệt tài khoản được coi là giao dịch không hợp lệ.
Một phương pháp khác để xử lý vấn đề sẵn sàng dữ liệu rút gọn của người dùng là đặt dữ liệu ở nơi khác ngoài Khối. Điều này đặt ra một vấn đề tinh tế, rollup vẫn cần đảm bảo rằng dữ liệu có sẵn ở nơi khác. Truyền thống, các Khối khác được sử dụng cho mục đích này, được thiết kế đặc biệt như một lớp sẵn sàng dữ liệu cho hệ thống rollup và các hệ thống tương tự.
Điều này dẫn đến một tình huống khó khăn về bảo mật. Khi dữ liệu được đăng trực tiếp trên Khối Bitcoin, thì Nhận thức chung có thể đảm bảo rằng nó hoàn toàn chính xác. Tuy nhiên, khi nó được đăng trên hệ thống bên ngoài, điều tốt nhất mà nó có thể làm là xác minh chứng chỉ SPV, tức là dữ liệu đã được đăng trên một hệ thống khác.
Điều này đòi hỏi việc xác minh dữ liệu tồn tại trên các chứng minh on-chain khác, điều này cuối cùng là một vấn đề Máy Oracle. Chuỗi Khối của BTC không thể xác minh hoàn toàn bất kỳ điều gì xảy ra ngoại trừ những gì diễn ra trên chuỗi Khối của chính nó, điều tốt nhất mà nó có thể làm là xác minh ZKP. Tuy nhiên, ZKP không thể xác minh xem dữ liệu rollup trên chuỗi Khối đã được phát sóng mở rộng thực sự sau khi được tạo ra. Nó không thể xác minh xem thông tin bên ngoài đã được công khai cho tất cả mọi người hay không.
Điều này mở ra cánh cửa cho cuộc tấn công kẹt dữ liệu, tức là tạo cam kết đối với dữ liệu được xuất bản và sử dụng nó để thúc đẩy rollup, nhưng thực tế dữ liệu không sẵn có. Điều này dẫn đến người dùng không thể rút tiền. Giải pháp duy nhất thực sự là hoàn toàn phụ thuộc vào giá trị và cấu trúc động lực của hệ thống ngoài BTC.
Điều này đặt ra một tình huống khó khăn cho rollup. Khi đối mặt với vấn đề khả năng truy cập dữ liệu, thực tế là có hai lựa chọn nhị phân để đưa dữ liệu lên chuỗi BTC hoặc nơi khác. Lựa chọn này có ảnh hưởng lớn đến tính bảo mật và chủ quyền của rollup cũng như khả năng mở rộng của nó.
Một mặt, việc sử dụng BitcoinBlockchain làm lớp sẵn có dữ liệu sẽ đặt một giới hạn cứng cho tính mở rộng của rollup. Không gian Khối là hữu hạn, điều này đặt ra giới hạn cho số lượng rollup có thể tồn tại trong một lần cũng như tổng số giao dịch có thể được xử lý off-chain trên tất cả các rollup. Mỗi lần cập nhật rollup đều cần không gian Khối tỷ lệ với số lượng tài khoản có số dư thay đổi từ lần cập nhật trước đến nay. Lý thuyết thông tin chỉ cho phép dữ liệu được nén đến một mức độ nhất định, ở điểm này, không còn tiềm năng mở rộng nữa.
Trong khi đó, việc sử dụng các lớp khác nhau để đảm bảo tính sẵn có của dữ liệu sẽ loại bỏ giới hạn cứng của lợi ích về khả năng mở rộng, nhưng cũng mang đến vấn đề mới về an ninh và chủ quyền. Trong Rollup sử dụng BTC để đảm bảo tính sẵn có của dữ liệu, nếu dữ liệu mà người dùng cần trích xuất không được tự động công bố trên chuỗi khối, trạng thái của Rollup sẽ không thể thay đổi. Sử dụng Validiums, sự đảm bảo này hoàn toàn phụ thuộc vào khả năng của hệ thống bên ngoài được sử dụng để chống lại sự lừa dối và ẩn giấu dữ liệu.
Hiện nay, bất kỳ nhà sản xuất Khối nào trên hệ thống khả dụng dữ liệu bên ngoài cũng có thể tấn công tiền của người dùng BTCRollup bằng cách sản xuất Khối mà không cần phát sóng thực tế của Khối đó, từ đó làm cho dữ liệu có thể sử dụng.
Vậy nếu chúng ta thực sự thực hiện được Rollup lý tưởng trên BTC và thực sự thực hiện rút tiền một chiều của người dùng, thì điều đó sẽ như thế nào?