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