Được viết bởi: Miranda Christ, Joseph Bonneau
Biên soạn bởi: Shenchao TechFlow
Khi blockchain hỗ trợ nhiều người dùng hơn và giao dịch thường xuyên hơn, lượng thông tin (tức là "trạng thái") mà người xác thực lưu trữ để xác minh giao dịch sẽ tăng lên. Ví dụ: trong Bitcoin, trạng thái bao gồm một tập hợp các đầu ra giao dịch chưa được chi tiêu (UTXO). Trong Ethereum, trạng thái bao gồm số dư tài khoản của từng tài khoản cũng như mã và lưu trữ của từng hợp đồng thông minh.
Khi một blockchain phát triển với đủ tài khoản hoặc UTXO để hỗ trợ các giao dịch thực tế hàng ngày cho một bộ phận đáng kể dân số, gánh nặng lưu trữ này sẽ trở nên không thể quản lý được, gây khó khăn cho việc trở thành người xác thực và gây ra mối đe dọa cho quá trình phân cấp. Giải pháp hấp dẫn là chuyển sang mật mã, trong đó các công cụ như cây Merkle và bằng chứng không có kiến thức giúp chúng ta đạt được những điều mà trước đây không thể tưởng tượng được.
Đây chính xác là mục tiêu của “blockchain không quốc tịch”. Nhưng bất chấp những nghiên cứu sâu rộng về chúng, chúng vẫn chưa thực tế. Nhưng hóa ra độ trễ trong tiến trình này là cố hữu - khoảng cách giữa những bản dựng này và tính thực tế sẽ không bao giờ được thu hẹp. Công việc gần đây của chúng tôi cho thấy rằng bất kỳ kế hoạch blockchain không trạng thái nào, dù thông minh đến đâu, đều không khả thi nếu không có các biện pháp bổ sung để quản lý trạng thái. Tuy nhiên, như chúng tôi trình bày ở cuối bài viết này, khả năng xảy ra kết quả này không nên làm bạn nản lòng.
không có trạng thái
Ngày nay, nhà nước tuy lớn nhưng có thể quản lý được. Ví dụ: các nút Bitcoin lưu trữ khoảng 7 GB dữ liệu và các nút Ethereum lưu trữ khoảng 650 GB dữ liệu. Tuy nhiên, gánh nặng lưu trữ của một nút đầy đủ tăng lên gần như tuyến tính với thông lượng của chuỗi (giao dịch mỗi giây hoặc TPS), điều này vẫn không được chấp nhận cho đến ngày nay. Với các thiết kế hiện tại, trạng thái cần thiết để thực sự hỗ trợ các giao dịch hàng ngày (hàng chục đến hàng trăm nghìn giao dịch mỗi giây) sẽ trở nên khó quản lý, đòi hỏi phải sử dụng hàng gigabyte hoặc thậm chí hàng petabyte dung lượng lưu trữ.
Điều này đã thôi thúc mọi người tìm kiếm các giải pháp kỹ thuật để giảm đáng kể số lượng trạng thái mà người xác thực yêu cầu. Điều quan trọng là phải triển khai một chuỗi khối không trạng thái, điều này sẽ yêu cầu người xác thực chỉ lưu trữ một kích thước trạng thái không đổi, bất kể thông lượng giao dịch (thực ra, thuật ngữ này là một cách viết sai: vẫn còn trạng thái, chỉ đủ nhỏ, để có thể thực tế tại bất kỳ thông lượng nào trong tương lai - thường là kích thước không đổi). Yêu cầu lưu trữ nhẹ này sẽ giúp việc chạy nút xác thực dễ dàng hơn nhiều; lạc quan là mọi người sẽ có thể chạy nút trên điện thoại của họ. Vì việc tăng số lượng trình xác nhận sẽ tăng tính bảo mật của chuỗi nên điều quan trọng là phải hạ thấp rào cản gia nhập đối với trình xác thực.
Mặc dù đã có nghiên cứu đáng kể về các blockchain không quốc tịch (ví dụ: của Todd, Buterin, Boneh và cộng sự, và Srinivasan và cộng sự), nhưng chúng vẫn còn xa mới thực tế và theo hiểu biết của chúng tôi, chưa có nghiên cứu nào được triển khai. Vấn đề cơ bản với tất cả các blockchain không trạng thái đã biết là chúng yêu cầu người dùng lưu trữ dữ liệu bổ sung được gọi là nhân chứng để giúp người xác thực xác minh các giao dịch liên quan đến tài khoản của họ. Ví dụ: nhân chứng này có thể là bằng chứng bao gồm Merkle cho thấy tài khoản và số dư của người dùng được đưa vào cam kết cấp nhà nước toàn cầu. Khi người dùng thực hiện giao dịch, họ gửi bằng chứng này cho người xác thực để chứng minh rằng tài khoản của họ có đủ số dư.
Không giống như việc lưu trữ khóa riêng không bao giờ cần thay đổi, những nhân chứng này thay đổi thường xuyên, ngay cả đối với những người dùng không tích cực giao dịch, gây gánh nặng phi thực tế cho người dùng. Tương tự, hãy tưởng tượng nếu bạn liên tục theo dõi tất cả các giao dịch thẻ tín dụng khác trên khắp thế giới và cập nhật một số dữ liệu địa phương phù hợp cho thẻ tín dụng của riêng bạn. Để blockchain trở nên thiết thực, người dùng phải có khả năng ngoại tuyến và chỉ tương tác với blockchain khi gửi giao dịch. Trong nhiều trường hợp, chẳng hạn như ví phần cứng, việc cập nhật nhân chứng không chỉ bất tiện mà còn không thể thực hiện được.
Điều này khiến chúng tôi đặt ra một câu hỏi nghiên cứu tự nhiên: Chúng ta có thể xây dựng một chuỗi khối không trạng thái không yêu cầu cập nhật nhân chứng thường xuyên (hoặc một chuỗi khối chỉ yêu cầu các nhân chứng hiếm khi được cập nhật) không? Để trả lời câu hỏi này, chúng tôi phát triển một khung lý thuyết mới (hệ thống bằng chứng có thể hủy bỏ) để khái quát hóa các chuỗi khối không trạng thái. Sử dụng khuôn khổ này, chúng tôi chứng minh một điều không thể xảy ra: sự cân bằng giữa trạng thái toàn cầu ngắn gọn và cập nhật nhân chứng thường xuyên vốn rất khó dung hòa. Công nghệ chứng minh của chúng tôi là lý thuyết thông tin, có nghĩa là các máy tính trong tương lai sẽ không đủ mạnh để giải quyết vấn đề này: khoảng cách giữa việc xây dựng chuỗi khối phi trạng thái và tính thực tiễn sẽ không bao giờ được thu hẹp.
Bối cảnh nghiên cứu của chúng tôi
Để giúp hiểu được những kết quả bất khả thi của chúng tôi, trước tiên chúng tôi mô tả một cách tự nhiên nhưng không hiệu quả để xây dựng một chuỗi khối không trạng thái bằng cách sử dụng cây Merkle. Mục tiêu của chúng tôi là cho phép trình xác thực xác định xem giao dịch do người dùng gửi có hợp lệ hay không - ví dụ: liệu người dùng có đủ số dư tài khoản để thực hiện giao dịch hay không. Trong sơ đồ blockchain không trạng thái, trình xác nhận lưu trữ trạng thái kích thước không đổi. Khi người dùng thực hiện giao dịch, họ phải có người chứng kiến giao dịch đó. Người xác thực có thể sử dụng cặp trạng thái hiện tại và cặp do người dùng gửi (giao dịch, nhân chứng) để xác minh rằng người dùng có đủ số dư tài khoản để thực hiện giao dịch.
Trước tiên, chúng tôi xây dựng cây Merkle trong đó mỗi cặp (ID tài khoản, số dư) (a, b) được đưa vào dưới dạng nút lá. Trạng thái có kích thước không đổi V được trình xác thực lưu trữ là gốc của cây này, đóng vai trò như một cam kết đối với một tập hợp các cặp số dư tài khoản. Mỗi người dùng duy trì nhân chứng của họ như một bằng chứng bao gồm Merkle. Bằng chứng bao gồm Merkle của một lá (a,b) bao gồm các nút đối tác (v1,…,vk) dọc theo đường dẫn từ lá đó đến gốc của cây. Với một giao dịch của tài khoản a và số dư yêu cầu b, người xác minh có thể xác minh rằng b thực sự là số dư của tài khoản a bằng cách kiểm tra bằng chứng (v1,…,vk) của (a, b) với trạng thái hiện tại V. Nếu vậy, người xác thực sẽ thực hiện giao dịch và phải cập nhật số dư tài khoản tương ứng. Một đặc tính thuận tiện của cây Merkle là, với bằng chứng ngăn chặn Merkle của một chiếc lá, có thể dễ dàng tính ra nghiệm của kết quả khi chiếc lá đó thay đổi. Nói cách khác, người xác thực có thể dễ dàng tính toán trạng thái cập nhật V' để nắm bắt số dư mới của tài khoản a sau khi giao dịch được thực hiện.
Sơ đồ cây Merkle này có hai nhược điểm chính. Đầu tiên, lời chứng thực của người dùng tương đối lớn, tăng theo hàm logarit với tổng số tài khoản trong hệ thống. Lý tưởng nhất là chúng phải có kích thước không đổi và chúng ta có thể đạt được điều này bằng cách sử dụng các sơ đồ như bộ tích lũy RSA.
Hạn chế thứ hai khó tránh hơn: mỗi khi người dùng khác thực hiện giao dịch, bằng chứng về cặp số dư tài khoản sẽ thay đổi. Hãy nhớ lại rằng bằng chứng của một nút lá bao gồm các nút đối tác trên đường đi từ nút lá đó đến gốc của cây. Nếu các nút lá khác thay đổi thì một trong các nút đó cũng sẽ thay đổi, gây ra các vấn đề thực sự. Hầu hết người dùng blockchain muốn giữ tiền của họ trong ví một cách thụ động và chỉ lên mạng khi họ muốn thực hiện giao dịch. Tuy nhiên, trong một blockchain không trạng thái như vậy, người dùng phải liên tục theo dõi các giao dịch của người khác để cập nhật thông tin nhân chứng của họ. Mặc dù các bên thứ ba có thể thực hiện việc giám sát này thay mặt cho người dùng, nhưng điều này khác với mô hình blockchain không trạng thái tiêu chuẩn. Trên thực tế, đây là một thách thức không thể vượt qua đối với các blockchain không trạng thái, đặt gánh nặng lớn lên người dùng.
Kết luận của chúng tôi: tình trạng không quốc tịch là không thể
Hiện tượng này không chỉ áp dụng cho cấu trúc cây Merkle này - tất cả các sơ đồ blockchain không trạng thái đã biết đều yêu cầu người dùng thường xuyên cập nhật thông tin nhân chứng của họ, như chúng tôi trình bày ở đây. Chính xác hơn, chúng tôi cho thấy số lượng người dùng phải cập nhật thông tin nhân chứng của họ tăng gần như tuyến tính với tổng số giao dịch được thực hiện bởi tất cả người dùng.
Điều này có nghĩa là ngay cả khi người dùng Alice không thực hiện bất kỳ giao dịch nào, thông tin nhân chứng của cô ấy có thể cần thay đổi khi những người dùng khác thực hiện giao dịch. Miễn là trạng thái thu gọn được trình xác nhận lưu trữ quá nhỏ để nắm bắt được trạng thái hoàn chỉnh (tức là tập hợp tất cả số dư tài khoản), thì việc tăng kích thước của trạng thái thu gọn sẽ không giúp ích được gì nhiều. Chúng tôi đã vẽ biểu đồ mối quan hệ này được hiển thị bên dưới dựa trên định lý của chúng tôi và số lượng thay đổi thông tin chứng thực cần thiết mỗi ngày đối với các chuỗi khối có thông lượng khác nhau. Các biểu đồ này hiển thị số lần một blockchain không trạng thái tối ưu cần thay đổi thông tin nhân chứng. Ở đây, vũ trụ dữ liệu đề cập đến tổng số tài khoản trong mô hình tài khoản hoặc tổng số UTXO trong mô hình UTXO.


Cốt lõi của bằng chứng của chúng tôi là một lập luận lý thuyết thông tin. Nguyên tắc cốt lõi của lý thuyết thông tin, được Claude Shannon chính thức hóa, là nếu Alice chọn ngẫu nhiên một đối tượng từ một tập hợp có kích thước 2n và muốn cho Bob biết cô ấy đã chọn đối tượng nào thì cô ấy phải gửi cho anh ấy ít nhất n bit. Nếu có một sơ đồ blockchain không trạng thái trong đó người dùng hiếm khi cập nhật thông tin nhân chứng của họ, Alice có thể cho Bob biết đối tượng nào cô ấy đã chọn trong ít hơn n bit, điều này là không thể, như Shannon đã chứng minh. Do đó, một blockchain không trạng thái như vậy không tồn tại.
Để đơn giản, chúng tôi mô tả ở đây bằng chứng cho một tuyên bố yếu hơn một chút: Không tồn tại một chuỗi khối không trạng thái mà người dùng không bao giờ cần cập nhật thông tin chứng thực của họ. Điều quan trọng là Alice sử dụng sơ đồ chuỗi khối không trạng thái để mã hóa tin nhắn của mình để gửi cho Bob. Ban đầu, cả Alice và Bob đều biết đầy đủ các cặp số dư tài khoản của tất cả n người dùng. Giả định rằng mỗi tài khoản có ít nhất một đồng xu. Cả Alice và Bob đều biết trạng thái ngắn gọn V của blockchain không trạng thái và các nhân chứng wi cho tất cả các cặp số dư tài khoản (ai, bi). Alice và Bob cũng đồng ý về việc ánh xạ giữa các tin nhắn và bộ sưu tập tài khoản. Alice sẽ chọn một nhóm tài khoản A tương ứng với thông điệp của cô ấy và sau đó cô ấy sẽ tiêu tiền từ những tài khoản này. Cô ấy sẽ sử dụng chuỗi khối không quốc tịch để liên lạc với Bob về tập hợp mà cô ấy đã chọn, từ đó anh ấy có thể tìm hiểu về cô ấy.
Mã hóa: Alice tiêu một xu từ mỗi tài khoản trong A. Sử dụng sơ đồ chuỗi khối không trạng thái, Alice tính toán trạng thái cập nhật V' và gửi nó cho Bob.
Giải mã: Với mỗi i, Bob kiểm tra xem Verify(wi, (ai, bi)) có đúng hay không. Bob xuất tập tài khoản B sao cho Verify(wi, (ai, bi)) = false.
Bob xuất thành công tập hợp mà Alice đã chọn: B = A. Đầu tiên, hãy quan sát rằng nếu Alice tiêu một đồng xu từ tài khoản ai, những người chứng kiến số dư cũ của cô ấy sẽ không còn được chấp nhận nữa - nếu không, Alice sẽ có thể chi tiêu gấp đôi. Do đó, với mỗi tài khoản ai trong A, Verify(wi, (ai, bi)) = false, Bob sẽ đưa tài khoản này vào B. Mặt khác, Bob sẽ không bao giờ đưa vào các tài khoản B mà Alice không tiêu tiền từ đó, vì số dư của các tài khoản này vẫn giữ nguyên và (nhớ lại tuyên bố thoải mái mà chúng tôi muốn chứng minh) nhân chứng của họ không bao giờ thay đổi. Do đó, B đúng bằng A.
Cuối cùng, chúng ta giải quyết mâu thuẫn bằng cách tính số chữ số Alice sẽ gửi cho Bob. Có 2 n tập con cô ấy có thể chọn, nên theo định luật Shannon, cô ấy phải gửi ít nhất n bit cho Bob. Tuy nhiên, cô ấy chỉ gửi trạng thái có kích thước không đổi V', ngắn hơn nhiều so với n bit.
Mặc dù chúng tôi sử dụng chuỗi khối không trạng thái khi mô tả bằng chứng của mình, Alice và Bob có thể thực hiện giao tiếp hiệu quả tương tự bằng cách sử dụng nhiều cấu trúc dữ liệu được xác thực khác, bao gồm bộ tích lũy, cam kết vectơ và từ điển được xác thực. Chúng tôi chính thức hóa loại cấu trúc dữ liệu này bằng cách sử dụng một cách trừu tượng mới mà chúng tôi gọi là hệ thống chứng minh có thể hủy ngang.
tác động của kết quả
Kết quả của chúng tôi cho thấy rằng bạn không thể "loại bỏ trạng thái bằng mật mã" và không có viên đạn ma thuật nào cho kế hoạch cam kết cho phép chúng tôi xây dựng một chuỗi khối không trạng thái nơi người dùng không bao giờ phải cập nhật nhân chứng của họ. Trạng thái không biến mất mà được chuyển khỏi trình xác thực và được đẩy tới người dùng dưới dạng cập nhật nhân chứng thường xuyên.
Có những giải pháp đầy hứa hẹn khác đi chệch khỏi mô hình blockchain không trạng thái nghiêm ngặt. Sự thoải mái tự nhiên của mô hình này là cho phép bên thứ ba (không phải người dùng hay người xác nhận) chịu trách nhiệm lưu trữ trạng thái hoàn chỉnh. Bên thứ ba này, được gọi là nút dịch vụ chứng thực, sử dụng trạng thái hoàn chỉnh để tạo thông tin chứng thực mới nhất cho người dùng. Sau đó, người dùng có thể thực hiện các giao dịch bằng cách sử dụng thông tin nhân chứng này như trong một chuỗi khối không trạng thái thông thường, nơi người xác thực vẫn chỉ lưu trữ trạng thái ngắn gọn. Cơ chế khuyến khích của hệ thống này, đặc biệt là cách người dùng đền bù cho các nút dịch vụ bằng chứng, là một hướng nghiên cứu mở thú vị.
Mặc dù cuộc thảo luận của chúng tôi cho đến nay chỉ tập trung vào chuỗi khối L1, nhưng kết quả của chúng tôi cũng có ý nghĩa đối với các hệ thống L2 như máy chủ Rollup. Các bản tổng hợp (dù là Optimistic hay ZK) thường lưu trữ một lời hứa trạng thái lớn trên L1 với một giá trị nhỏ. Trạng thái này bao gồm tài khoản của mỗi người dùng trên L2. Chúng tôi muốn những người dùng này có thể rút tiền trực tiếp trên L1 (không cần sự hợp tác của máy chủ L2) bằng cách công bố bằng chứng về số dư tài khoản hiện tại của họ. Thiết lập này cũng là một ví dụ về hệ thống bằng chứng có thể hủy ngang trong mô hình của chúng tôi. Trên thực tế, có thể nói rằng các blockchain không quốc tịch đã được triển khai trên thực tế, dưới dạng L2 Rollup.
Tuy nhiên, thật không may, điều này có nghĩa là những kết quả không thể xảy ra của chúng tôi lại được áp dụng trực tiếp. Nhân chứng tìm nạp Rollup của người dùng phải thay đổi thường xuyên, nếu không thì gần như toàn bộ trạng thái L2 phải được ghi vào L1. Do đó, các bản tổng hợp ngày nay thường giả định sự tồn tại của một ủy ban về tính khả dụng của dữ liệu (đôi khi được gọi là "validium"), tương tự như "nút dịch vụ bằng chứng", giúp người dùng tính toán thông tin chứng thực mới để chuẩn bị trích xuất. Kết quả của chúng tôi chỉ ra rằng cảnh báo cho người dùng trong tài liệu Ethereum: “Nếu không có dữ liệu giao dịch, người dùng sẽ không thể tính toán bằng chứng Merkle để chứng minh quyền sở hữu tiền và thực hiện rút tiền”.
