Nguồn: Bitcoin Magazine; Dịch: Ngũ Chỉ, Kinh Tế Màu Vàng
Rollups gần đây đã trở thành trung tâm của việc mở rộng BTC, trở thành điều đầu tiên thực sự "đánh cắp ánh sáng" từ Mạng Ánh sáng, ở mức độ quan tâm rộng hơn. Rollups nhằm trở thành một lớp off-chain 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 Mạng Ánh sáng, 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 mượn") 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 từ người gửi đến người nhận.
Những hệ thống này ban đầu chạy trên nền tảng Ethereum và các hệ thống Turing hoàn thành khác, nhưng gần đây đã tập trung 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à để thảo luận về tính năng của Rollup lý tưởng mà mọi người đang theo đuổi trong thời gian dài, tính năng này phụ thuộc vào khả năng mà BTC hiện tại không hỗ trợ, đó là khả năng xác minh ZKP trên BTC.
Cấu trúc cơ bản của Roll 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 chứa một cam kết, cam kết này tồn tại dưới dạng Merkle root của cây Merkle, cam kết tất cả số dư hiện tại của tài khoản trong Rollup. Tất cả các tài khoản này đều được ủy quyền bằng cặp Khóa công khai/Khóa riêng, vì vậy để thực hiện các chi tiêu off-chain, 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 của ai, chỉ cần tạo ra chứng minh giao dịch rằng tài khoản của họ là một phần của cây Merkle, họ có thể rời Rollup một cách đơn phương mà không cần phép của nhà khai thác.
Người vận hành Rollup phải bao gồm một ZKP trong giao dịch để cập nhật root merkle của số dư tài khoản trê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. Chứng minh này cho phép người ta xác minh xem tất cả các thay đổi về số dư tài khoản off-chain đã được ủy quyền đầy đủ của chủ sở hữu tài khoản và người vận hành có không tính phí cập nhật số dư để đánh cắp tiền của người dùng hoặc phân phối lại nó 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 được nó, vậy họ làm thế nào để đặt nhánh của họ vào cây, để họ có thể rút tiền mà không cần phép thuật khi họ muốn?
Rollup phù hợp
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 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 cài đặt đơn giản, bả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 các triển khai nâng cao hơn, phương sai cân bằng được sử dụng. Đây thực chất là một bản tóm tắt về tài khoản tăng hoặc giảm tiền trong quá trình cập nhật. Điều này làm cho mỗi bản Cập Nhật rollup chỉ chứa các thay đổi số dư tài khoản xảy ra. Sau đó, người dùng có thể chỉ cần quét chuỗi và "thực hiện phép tính" từ đầu Rollup để đến trạng thái hiện tại của số dư tài khoản, cho phép họ xây dựng lại cây Merkle của số dư hiện tại.
Việc này có thể tiết kiệm được chi phí lớn và Khối không gian (và do đó tiết kiệm được tiền), đồng thời vẫn cho phép người dùng đảm bảo thông tin cần thiết để thoát khỏi một phía. Quy tắc rollup yêu cầu bao gồm các dữ liệu này trong rollup chính thức được cung cấp cho người dùng bằng cách sử dụng Khối chuỗi, nghĩa là các giao dịch không bao gồm tóm tắt tài khoản hoặc 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 ở một nơi khác ngoài Khối. Điều này mang đến các vấn đề tinh tế, rollup vẫn cần đảm bảo rằng dữ liệu có sẵn ở các 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 lớp sẵn sàng dữ liệu cho các hệ thống như rollup.
Điều này dẫn đến tình trạng bế tắc về an ninh mạnh mẽ tương tự. Khi dữ liệu được phát hành trực tiếp lên chuỗi Bitcoin, các quy tắc 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 phát hành vào 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, nghĩa là dữ liệu đã được phát hành vào một hệ thống khác.
Điều này đòi hỏi sự xác minh rằng 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ì ngoài việc xảy ra trên chính chuỗi Khối của 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 trong Khối sau khi được tạo có thực sự được phát sóng một cách công khai hay không. Nó không thể xác minh rằng thông tin bên ngoài có thực sự được công khai cho tất cả mọi người.
Điều này mở ra cánh cửa cho các cuộc tấn công giữ lại dữ liệu, trong đó cam kết xuất bản dữ liệu được tạo và sử dụng để thúc đẩy tổng hợp, nhưng dữ liệu không thực sự có sẵn. Điều này dẫn đến việc người dùng không thể rút tiền. Giải pháp thực sự duy nhất là dựa hoàn toàn vào giá trị và cấu trúc khuyến khích của hệ thống bên ngoài BTC.
Vào ra vững vàng
Điều này đưa ra một tình huống khó khăn cho rollup. Khi liên quan đến vấn đề sẵn có dữ liệu, thì có một sự lựa chọn nhị phân cơ bản là việc phát hành dữ liệu lên chuỗi khối BTC hoặc nơi khác. Sự lựa chọn này có tác động lớn đến tính 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 BTCKhối Blockchain làm lớp dữ liệu có sẵn sẽ đặt một giới hạn tối đa về khả năng mở rộng của rollup. Không gian Khối là hữu hạn, điều này đặt giới hạn cho số lượng rollup có thể tồn tại và tổng số giao dịch có thể xử lý off-chain. Mỗi lần cập nhật rollup đều cần một lượng Khối tương ứng 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, và tại điểm này, không còn khả 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 để đạt được tính khả dụng dữ liệu sẽ loại bỏ giới hạn tối đa về khả năng mở rộng, nhưng cũng mang lại các vấn đề mới về an ninh và chủ quyền. Trong Rollup sử dụng BTC để đạt được tính khả dụng dữ liệu, nếu dữ liệu mà người dùng cần trích xuất không được tự động đăng lên blockchain, trạng thái của Rollup sẽ không thể thay đổi. Việc đả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 gian lận và che giấu dữ liệu khi sử dụng Validiums.
Bây giờ, 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 đều 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ế Khối đó, từ đó làm cho dữ liệu khả dụng.
Vậy nếu chúng ta thực sự thực hiện được triển khai Rollup lý tưởng trên BTC, thực sự thực hiện được rút tiền một cách đơn phương, thì sẽ như thế nào?
Bitcoin Magazine: Rollup đối mặt với những khó khăn gì?
Nguồn: Bitcoin Magazine; Dịch: Ngũ Chỉ, Kinh Tế Màu Vàng
Rollups gần đây đã trở thành trung tâm của việc mở rộng BTC, trở thành điều đầu tiên thực sự "đánh cắp ánh sáng" từ Mạng Ánh sáng, ở mức độ quan tâm rộng hơn. Rollups nhằm trở thành một lớp off-chain 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 Mạng Ánh sáng, 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 mượn") 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 từ người gửi đến người nhận.
Những hệ thống này ban đầu chạy trên nền tảng Ethereum và các hệ thống Turing hoàn thành khác, nhưng gần đây đã tập trung 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à để thảo luận về tính năng của Rollup lý tưởng mà mọi người đang theo đuổi trong thời gian dài, tính năng này phụ thuộc vào khả năng mà BTC hiện tại không hỗ trợ, đó là khả năng xác minh ZKP trên BTC.
Cấu trúc cơ bản của Roll 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 chứa một cam kết, cam kết này tồn tại dưới dạng Merkle root của cây Merkle, cam kết tất cả số dư hiện tại của tài khoản trong Rollup. Tất cả các tài khoản này đều được ủy quyền bằng cặp Khóa công khai/Khóa riêng, vì vậy để thực hiện các chi tiêu off-chain, 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 của ai, chỉ cần tạo ra chứng minh giao dịch rằng tài khoản của họ là một phần của cây Merkle, họ có thể rời Rollup một cách đơn phương mà không cần phép của nhà khai thác.
Người vận hành Rollup phải bao gồm một ZKP trong giao dịch để cập nhật root merkle của số dư tài khoản trê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. Chứng minh này cho phép người ta xác minh xem tất cả các thay đổi về số dư tài khoản off-chain đã được ủy quyền đầy đủ của chủ sở hữu tài khoản và người vận hành có không tính phí cập nhật số dư để đánh cắp tiền của người dùng hoặc phân phối lại nó 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 được nó, vậy họ làm thế nào để đặt nhánh của họ vào cây, để họ có thể rút tiền mà không cần phép thuật khi họ muốn?
Rollup phù hợp
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 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 cài đặt đơn giản, bả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 các triển khai nâng cao hơn, phương sai cân bằng được sử dụng. Đây thực chất là một bản tóm tắt về tài khoản tăng hoặc giảm tiền trong quá trình cập nhật. Điều này làm cho mỗi bản Cập Nhật rollup chỉ chứa các thay đổi số dư tài khoản xảy ra. Sau đó, người dùng có thể chỉ cần quét chuỗi và "thực hiện phép tính" từ đầu Rollup để đến trạng thái hiện tại của số dư tài khoản, cho phép họ xây dựng lại cây Merkle của số dư hiện tại.
Việc này có thể tiết kiệm được chi phí lớn và Khối không gian (và do đó tiết kiệm được tiền), đồng thời vẫn cho phép người dùng đảm bảo thông tin cần thiết để thoát khỏi một phía. Quy tắc rollup yêu cầu bao gồm các dữ liệu này trong rollup chính thức được cung cấp cho người dùng bằng cách sử dụng Khối chuỗi, nghĩa là các giao dịch không bao gồm tóm tắt tài khoản hoặc 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 ở một nơi khác ngoài Khối. Điều này mang đến các vấn đề tinh tế, rollup vẫn cần đảm bảo rằng dữ liệu có sẵn ở các 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 lớp sẵn sàng dữ liệu cho các hệ thống như rollup.
Điều này dẫn đến tình trạng bế tắc về an ninh mạnh mẽ tương tự. Khi dữ liệu được phát hành trực tiếp lên chuỗi Bitcoin, các quy tắc 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 phát hành vào 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, nghĩa là dữ liệu đã được phát hành vào một hệ thống khác.
Điều này đòi hỏi sự xác minh rằng 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ì ngoài việc xảy ra trên chính chuỗi Khối của 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 trong Khối sau khi được tạo có thực sự được phát sóng một cách công khai hay không. Nó không thể xác minh rằng thông tin bên ngoài có thực sự được công khai cho tất cả mọi người.
Điều này mở ra cánh cửa cho các cuộc tấn công giữ lại dữ liệu, trong đó cam kết xuất bản dữ liệu được tạo và sử dụng để thúc đẩy tổng hợp, nhưng dữ liệu không thực sự có sẵn. Điều này dẫn đến việc người dùng không thể rút tiền. Giải pháp thực sự duy nhất là dựa hoàn toàn vào giá trị và cấu trúc khuyến khích của hệ thống bên ngoài BTC.
Vào ra vững vàng
Điều này đưa ra một tình huống khó khăn cho rollup. Khi liên quan đến vấn đề sẵn có dữ liệu, thì có một sự lựa chọn nhị phân cơ bản là việc phát hành dữ liệu lên chuỗi khối BTC hoặc nơi khác. Sự lựa chọn này có tác động lớn đến tính 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 BTCKhối Blockchain làm lớp dữ liệu có sẵn sẽ đặt một giới hạn tối đa về khả năng mở rộng của rollup. Không gian Khối là hữu hạn, điều này đặt giới hạn cho số lượng rollup có thể tồn tại và tổng số giao dịch có thể xử lý off-chain. Mỗi lần cập nhật rollup đều cần một lượng Khối tương ứng 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, và tại điểm này, không còn khả 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 để đạt được tính khả dụng dữ liệu sẽ loại bỏ giới hạn tối đa về khả năng mở rộng, nhưng cũng mang lại các vấn đề mới về an ninh và chủ quyền. Trong Rollup sử dụng BTC để đạt được tính khả dụng dữ liệu, nếu dữ liệu mà người dùng cần trích xuất không được tự động đăng lên blockchain, trạng thái của Rollup sẽ không thể thay đổi. Việc đả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 gian lận và che giấu dữ liệu khi sử dụng Validiums.
Bây giờ, 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 đều 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ế Khối đó, từ đó làm cho dữ liệu khả dụng.
Vậy nếu chúng ta thực sự thực hiện được triển khai Rollup lý tưởng trên BTC, thực sự thực hiện được rút tiền một cách đơn phương, thì sẽ như thế nào?