Nguồn: Tạp chí Bitcoin; Biên dịch: Ngũ Châu, Kinh tế 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, với sự chú ý rộng rãi hơn. Rollups nhằm trở thành một tầng hai off-chain không bị ràng buộc hoặc hạn chế bởi thanh khoản cốt lõi của Mạng Ánh sáng, tức là người dùng cuối cần có người cấp phát trước (hoặc 'cho vay') tiền để nhận được tiền, hoặc nút trung gian cần có số dư kênh để thúc đẩy quá trình thanh toán từ người gửi đến người nhận.
Những hệ thống này ban đầu được chạy trên Ethereum và các hệ thống hoàn thành Turing khác, nhưng gần đây đã chuyển trọng tâm sang việc di chuyển chúng sang các chuỗi khối dựa trên UTXO (ví dụ BTC). Bài viết này không có ý định thảo luận về tình trạng hiện tại của BTC, mà là thảo luận về tính năng của Rollup được lý tưởng hóa mà mọi người đã theo đuổi trong thời gian dài, đòi hỏi khả năng xác minh chứng cứ không kiến thức (ZKP) trực tiếp trên BTC, tính năng mà BTC hiện tại không hỗ trợ.
Cấu trúc cơ bản của Roll như sau: Mỗi tài khoản đơn lẻ (trong BTC được gọi là UTXO) 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 tồn tại dưới dạng Merkle root của cây Merkle, cam kết số dư hiện tại của tất cả 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 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 khỏi bất kỳ lúc nào mà không cần phép lệnh, 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ời khỏi Rollup một cách đơn phương mà không cần sự phép lệnh từ 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 tài khoản on-chain trong quá trình hoàn thành giao dịch off-chain. Nếu không có ZKP này, giao dịch sẽ không hợp lệ và không thể được bao gồm trong khố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 tài khoản off-chain có được ủy quyền đúng đắn từ chủ sở hữu tài khoản và người vận hành có không cố ý 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 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 trên chuỗi, người dùng có thể xem và truy cập nó, nhưng làm sao họ đặt nhánh của mình vào cây để có thể rút tiền mà không cần phép khi 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, 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 việc triển khai cao cấp hơn, sử dụng sự chênh lệch 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 khiến cho mỗi cập nhật Rollup chỉ chứa các thay đổi về số dư tài khoản đã xảy ra. Sau đó, người dùng có thể dễ dàng quét chuỗi và từ “tính toán” từ đầu Rollup để xác định 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 lại cây Merkle cho số dư hiện tại.
Như vậy có thể tiết kiệm chi phí và Khối không gian (do đó tiết kiệm tiền), đồng thời vẫn cho phép người dùng bảo đảm thông tin cần thiết để rời khỏi một cách đơn phương. Quy tắc rollup yêu cầu bao gồm 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, tức 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 vô hiệu.
Thời hạn hiệu lực
Một cách khác để xử lý vấn đề sẵn có dữ liệu người dùng là đặt dữ liệu ở một nơi ngoài Khối. Điều này đưa vào 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 để hoạt động như một lớp sẵn có dữ liệu cho hệ thống như rollup.
Điều này đã gây ra tình trạng khó khăn về bảo mật tương đương. Khi dữ liệu được xuất bản trực tiếp trên chuỗi Khối Bitcoin, các quy tắc 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 xuất bản trê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, nghĩa là dữ liệu đã được xuất bản trên một hệ thống khác.
Điều này yêu cầu 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 cứ điều gì ngoại trừ những điều xảy ra trên chuỗi Khối của nó, điều tốt nhất nó có thể làm 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 phát sóng công khai thực sự sau khi được tạo. Nó không thể xác minh liệu thông tin bên ngoài đã được công khai cho tất cả mọi người hay không thực sự.
Đ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 việc phát hành dữ liệu và sử dụng nó để thúc đẩy rollup, nhưng dữ liệu thực tế không sẵn có. Điều này dẫn đến người dùng không thể rút tiền. Duy nhất giải pháp thực sự là hoàn toàn phụ thuộc vào giá trị và cơ cấu động viên của hệ thống ngoài BTC.
Tiến hoặc rút lui
Điều này đặt ra một tình thế khó khăn cho rollup. Khi liên quan đến vấn đề tính sẵn có của dữ liệu, tồn tại một lựa chọn nhị phân giữa việc xuất bản dữ liệu lên chuỗi khối BTC hoặc nơi khác. Lựa chọn này có tác động lớn đến tính an toàn và chủ quyền cũng như khả năng mở rộng của rollup.
Một mặt, sử dụng Blockchain Bitcoin (BTCKhối) như một lớp khả năng sử dụng 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à có giới hạn, điều này đặt ra một giới hạn cho số lượt rollup tồn tại và tổng số giao dịch có thể được xử lý trên off-chain. Mỗi lần cập nhật rollup đều cần có Khối tương ứng với số lượng tài khoản có số dư thay đổi kể từ lần cập nhật trước đó. Lý thuyết thông tin chỉ cho phép dữ liệu được nén một cách nhất định, tại điểm này, không còn tiềm năng mở rộng nữa.
另一方面,sử dụng các lớp khác nhau để đạt được tính sẵn sàng dữ liệu sẽ loại bỏ giới hạn cứng của lợi ích mở rộng, nhưng nó cũng đưa đến vấn đề an ninh và chủ quyền mới. Trong Rollup sử dụng BTC để đạt được tính sẵn sàng dữ liệu, nếu dữ liệu mà người dùng cần rút ra không được tự động xuất bản lên blockchain, 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 mà người dùng sử dụng để chống lại sự 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 sẵn sàng 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ự đạt được triển khai Rollup lý tưởng trên BTC, thực sự thực hiện việc rút tiền một chiều từ người dùng, điều đó sẽ như thế nào?
Bitcoin Magazine: Rollup đối mặt với những khó khăn gì?
Nguồn: Tạp chí Bitcoin; Biên dịch: Ngũ Châu, Kinh tế 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, với sự chú ý rộng rãi hơn. Rollups nhằm trở thành một tầng hai off-chain không bị ràng buộc hoặc hạn chế bởi thanh khoản cốt lõi của Mạng Ánh sáng, tức là người dùng cuối cần có người cấp phát trước (hoặc 'cho vay') tiền để nhận được tiền, hoặc nút trung gian cần có số dư kênh để thúc đẩy quá trình thanh toán từ người gửi đến người nhận.
Những hệ thống này ban đầu được chạy trên Ethereum và các hệ thống hoàn thành Turing khác, nhưng gần đây đã chuyển trọng tâm sang việc di chuyển chúng sang các chuỗi khối dựa trên UTXO (ví dụ BTC). Bài viết này không có ý định thảo luận về tình trạng hiện tại của BTC, mà là thảo luận về tính năng của Rollup được lý tưởng hóa mà mọi người đã theo đuổi trong thời gian dài, đòi hỏi khả năng xác minh chứng cứ không kiến thức (ZKP) trực tiếp trên BTC, tính năng mà BTC hiện tại không hỗ trợ.
Cấu trúc cơ bản của Roll như sau: Mỗi tài khoản đơn lẻ (trong BTC được gọi là UTXO) 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 tồn tại dưới dạng Merkle root của cây Merkle, cam kết số dư hiện tại của tất cả 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 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 khỏi bất kỳ lúc nào mà không cần phép lệnh, 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ời khỏi Rollup một cách đơn phương mà không cần sự phép lệnh từ 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 tài khoản on-chain trong quá trình hoàn thành giao dịch off-chain. Nếu không có ZKP này, giao dịch sẽ không hợp lệ và không thể được bao gồm trong khố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 tài khoản off-chain có được ủy quyền đúng đắn từ chủ sở hữu tài khoản và người vận hành có không cố ý 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 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 trên chuỗi, người dùng có thể xem và truy cập nó, nhưng làm sao họ đặt nhánh của mình vào cây để có thể rút tiền mà không cần phép khi 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, 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 việc triển khai cao cấp hơn, sử dụng sự chênh lệch 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 khiến cho mỗi cập nhật Rollup chỉ chứa các thay đổi về số dư tài khoản đã xảy ra. Sau đó, người dùng có thể dễ dàng quét chuỗi và từ “tính toán” từ đầu Rollup để xác định 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 lại cây Merkle cho số dư hiện tại.
Như vậy có thể tiết kiệm chi phí và Khối không gian (do đó tiết kiệm tiền), đồng thời vẫn cho phép người dùng bảo đảm thông tin cần thiết để rời khỏi một cách đơn phương. Quy tắc rollup yêu cầu bao gồm 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, tức 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 vô hiệu.
Thời hạn hiệu lực
Một cách khác để xử lý vấn đề sẵn có dữ liệu người dùng là đặt dữ liệu ở một nơi ngoài Khối. Điều này đưa vào 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 để hoạt động như một lớp sẵn có dữ liệu cho hệ thống như rollup.
Điều này đã gây ra tình trạng khó khăn về bảo mật tương đương. Khi dữ liệu được xuất bản trực tiếp trên chuỗi Khối Bitcoin, các quy tắc 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 xuất bản trê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, nghĩa là dữ liệu đã được xuất bản trên một hệ thống khác.
Điều này yêu cầu 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 cứ điều gì ngoại trừ những điều xảy ra trên chuỗi Khối của nó, điều tốt nhất nó có thể làm 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 phát sóng công khai thực sự sau khi được tạo. Nó không thể xác minh liệu thông tin bên ngoài đã được công khai cho tất cả mọi người hay không thực sự.
Đ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 việc phát hành dữ liệu và sử dụng nó để thúc đẩy rollup, nhưng dữ liệu thực tế không sẵn có. Điều này dẫn đến người dùng không thể rút tiền. Duy nhất giải pháp thực sự là hoàn toàn phụ thuộc vào giá trị và cơ cấu động viên của hệ thống ngoài BTC.
Tiến hoặc rút lui
Điều này đặt ra một tình thế khó khăn cho rollup. Khi liên quan đến vấn đề tính sẵn có của dữ liệu, tồn tại một lựa chọn nhị phân giữa việc xuất bản dữ liệu lên chuỗi khối BTC hoặc nơi khác. Lựa chọn này có tác động lớn đến tính an toàn và chủ quyền cũng như khả năng mở rộng của rollup.
Một mặt, sử dụng Blockchain Bitcoin (BTCKhối) như một lớp khả năng sử dụng 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à có giới hạn, điều này đặt ra một giới hạn cho số lượt rollup tồn tại và tổng số giao dịch có thể được xử lý trên off-chain. Mỗi lần cập nhật rollup đều cần có Khối tương ứng với số lượng tài khoản có số dư thay đổi kể từ lần cập nhật trước đó. Lý thuyết thông tin chỉ cho phép dữ liệu được nén một cách nhất định, tại điểm này, không còn tiềm năng mở rộng nữa.
另一方面,sử dụng các lớp khác nhau để đạt được tính sẵn sàng dữ liệu sẽ loại bỏ giới hạn cứng của lợi ích mở rộng, nhưng nó cũng đưa đến vấn đề an ninh và chủ quyền mới. Trong Rollup sử dụng BTC để đạt được tính sẵn sàng dữ liệu, nếu dữ liệu mà người dùng cần rút ra không được tự động xuất bản lên blockchain, 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 mà người dùng sử dụng để chống lại sự 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 sẵn sàng 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ự đạt được triển khai Rollup lý tưởng trên BTC, thực sự thực hiện việc rút tiền một chiều từ người dùng, điều đó sẽ như thế nào?