a16z: Tại sao blockchain không quốc tịch không thể tồn tại

Tác giả: Miranda Christ (sinh viên tiến sĩ khoa học máy tính tại Đại học Columbia/thực tập sinh nghiên cứu mã hóa a16z), Joseph Bonneau (a16zcrypto) Nguồn: a16z crypto; Trình biên dịch: Yvonne, MarsBit

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 ("trạng thái") được lưu trữ bởi người xác thực để 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.

Gánh nặng lưu trữ này sẽ trở nên không thể quản lý được đối với một blockchain có đủ tài khoản hoặc UTXO để hỗ trợ các giao dịch thực tế hàng ngày của hầu hết mọi người, gây khó khăn cho việc trở thành người xác thực và là mối đe dọa đối với quá trình phân cấp. Thật hấp dẫn khi coi mật mã như một giải pháp và 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 tôi đạt được những mục tiêu khó tin trước đây.

Đây chính xác là mục tiêu của một "blockchain không trạng thái". Tuy nhiên, mặc dù có rất nhiều công việc trong lĩnh vực này, như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 các cấu trúc này và tính thực tế không bao giờ có thể thu hẹp được. 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, cũng không thể khả thi nếu không có các biện pháp bổ sung để quản lý trạng thái. Như chúng tôi đã chứng minh ở cuối bài viết này, kết quả không thể xảy ra này sẽ không làm bạn nản lòng.

trạng thái không quốc tịch

Ngày nay, quy mô tiểu bang lớn nhưng có thể quản lý được. Ví dụ: một nút Bitcoin lưu trữ khoảng 7GB dữ liệu và một nút Ethereum lưu trữ khoảng 650GB dữ liệu. Tuy nhiên, gánh nặng lưu trữ trên các nút đầy đủ có quy mô 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), hiện ở mức thấp không thể chấp nhận được. Theo 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 trăm nghìn đến hàng triệu TPS) sẽ trở nên khó quản lý, đòi hỏi phải sử dụng nhiều terabyte hoặc thậm chí petabyte dung lượng lưu trữ.

Điều này đã thúc đẩy mọi người tìm kiếm các cách 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 - một chuỗi khối không trạng thái sẽ yêu cầu người xác nhận chỉ lưu trữ trạng thái có kích thước không đổi bất kể thông lượng giao dịch. (Trên thực tế, thuật ngữ này là một cách viết sai: vẫn còn trạng thái, chỉ đủ nhỏ để đáp ứng bất kỳ thông lượng nào trong tương lai—kích thước thường không đổi.) Yêu cầu lưu trữ nhẹ này sẽ giúp chạy các nút xác thực dễ dàng hơn; điện thoại. Vì việc tăng số lượng người 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 giảm bớt các rào cản gia nhập đối với người xác thực.

Mặc dù có rất nhiều nghiên cứu về các blockchain không trạng thái (ví dụ: Todd, Buterin, Boneh và cộng sự, Srinivasan và cộng sự), chúng vẫn chưa thực tế và theo hiểu biết của chúng tôi, chưa có cái 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 rằng tài khoản của người dùng và số dư trong tài khoản đó được bao gồm trong 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, cho thấy 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 phải liên tục theo dõi tất cả các giao dịch thẻ tín dụng khác trên toàn cầu và cập nhật một số dữ liệu địa phương phù hợp để sử dụng 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, 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 dẫn đến một câu hỏi nghiên cứu tự nhiên: Liệu chúng ta có thể xây dựng một blockchain không trạng thái mà không cần cập nhật nhân chứng (hoặc hiếm khi cần cập nhật nhân chứng) không? tổng quát hóa các blockchain không trạng thái. Sử dụng khuôn khổ này, chúng tôi chứng minh một kết quả chắc chắn là không thể xảy ra: sự cân bằng giữa trạng thái toàn cầu nhỏ gọn và việc cập nhật nhân chứng thường xuyên là cơ bản. Kỹ thuật 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 cấu trúc blockchain không trạng thái và tính thực tế sẽ không bao giờ được thu hẹp.

Cơ sở nghiên cứu

Để giúp phát triển trực giác về những kết quả không thể xảy ra, trước tiên chúng tôi sẽ mô tả cách xây dựng tự nhiên nhưng không hiệu quả của 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à giúp người 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 đủ lớ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 có kích thước không đổi. Khi người dùng thực hiện giao dịch, họ phải có nhân chứng trong giao dịch. Người xác thực có thể sử dụng trạng thái hiện tại và cặp (giao dịch, nhân chứng) do người dùng gửi để 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 một chiếc lá. Trạng thái có kích thước không đổi V được lưu trữ bởi trình xác thực là gốc của cây này, đóng vai trò như một cam kết đối với tập hợp các cặp số dư tài khoản. Mỗi người dùng duy trì bằng chứng Merkle về việc bao gồm cặp (ID tài khoản, số dư) làm bằng chứng. Bằng chứng Merkle về sự bao gồm một lá ( a , b ) bao gồm các nút đối tác ( v 1 , …, vk ) dọc theo đường đi của nó tới gốc của cây. Đưa ra một giao dịch bởi người dùng sử dụng tài khoản a và yêu cầu số dư b, người xác thực có thể kiểm tra xem b có thực sự là số dư của tài khoản a hay không bằng cách kiểm tra xem (a, b) chứng minh (v 1 , …, vk ) 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 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.

Cách tiếp cận cây Merkle có hai nhược điểm lớn. Đầu tiên, số lượng nhân chứng người dùng tương đối lớn, tăng theo logarit trên 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, điều mà chúng ta có thể đạt được bằng cách sử dụng các sơ đồ như bộ tích lũy RSA (Boneh và cộng sự trong bối cảnh chuỗi khối không trạng thái).

Nhược điểm thứ hai khó tránh hơn: bất cứ khi nào 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 chiếc lá bao gồm các nút đối tác trên đường đi từ lá đó đến gốc của cây. Nếu bất kỳ lá nào khác thay đổi thì một trong các nút này sẽ thay đổi, gây ra sự cố trong thực tế. 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, chỉ đăng nhập khi họ muốn thực hiện giao dịch. Tuy nhiên, trong thực tế của blockchain không trạng thái nà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 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 lại khác với mô hình blockchain không trạng thái tiêu chuẩn. Chúng tôi sẽ thảo luận về vấn đề này ở cuối bài viết này.) Trên thực tế, đây là một vấn đề đối với các blockchain không trạng thái. đặt gánh nặng lớn lên người sử 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 phải chỉ xảy ra với cấu trúc cây Merkle - tất cả các sơ đồ blockchain không trạng thái đã biết đều yêu cầu người dùng cập nhật nhân chứng của họ thường xuyên. Chúng tôi minh họa điều này trong bài viết nà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 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 chưa thực hiện bất kỳ giao dịch nào, nhân chứng của cô ấy có thể cần thay đổi theo giao dịch của những người dùng khác. Miễn là trạng thái thu gọn được lưu trữ bởi trình xác nhận quá nhỏ để có thể nắm bắt được trạng thái đầy đủ (tức là tập hợp tất cả số dư tài khoản), việc tăng kích thước trạng thái thu gọn không giúp ích nhiều. Chúng tôi vẽ biểu đồ mối quan hệ này theo định lý bên dưới, cùng với số lượng thay đổi nhân chứng 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 cho thấy nhân chứng cần thay đổi bao nhiêu lần để có được một blockchain không trạng thái tối ưu. Ở đây, trường dữ liệu đề cập đến tổng số tài khoản (trong mô hình tài khoản) hoặc UTXO (trong mô hình UTXO).

Ethereum

Trọng tâm 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 lý trung tâm của lý thuyết thông tin do Claude Shannon đề xuất 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 nhân chứng của họ thì Alice có thể cho Bob biết đối tượng nào cô ấy đã chọn trong ít hơn n bit - Shannon chứng minh rằng điều này là không thể. Do đó, một blockchain không quốc tịch như vậy không thể tồn tại.

Để đơn giản, chúng tôi sẽ mô tả ở đây bằng chứng cho một tuyên bố yếu hơn một chút: không thể có một blockchain không trạng thái mà người dùng không bao giờ cần cập nhật nhân chứng của họ. Ý tưởng chính là Alice mã hóa tin nhắn của mình cho Bob bằng cách sử dụng sơ đồ chuỗi khối không trạng thái. Ban đầu, cả Alice và Bob đều biết cặp số dư tài khoản đầy đủ của tất cả n người dùng. Giả sử 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 của 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à nhóm tài khoản. Alice sẽ chọn một tập hợp tài khoản A tương ứng với tin nhắn của cô ấy và cô ấy sẽ sử dụng mã thông báo từ các tài khoản đó. Cô ấy sẽ sử dụng chuỗi khối không trạng thái để liên lạc với Bob về tập hợp cô ấy chọn và từ tập hợp đó anh ấy có thể biết được thông điệp của cô ấy là gì.

Mã hóa: Alice sử dụng một token từ mỗi tài khoản của 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 V' cho Bob.

Giải mã: Với mỗi i, Bob kiểm tra xem Verify( wi , ( ai , bi )) . Bob xuất ra 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. Trước tiên, hãy lưu ý rằng nếu Alice đã chi tiêu một mã thông báo từ tài khoản ai thì không có thêm nhân chứng nào cho số dư cũ của nó được chấp nhận - 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, và Bob sẽ đưa tài khoản đó vào B. Mặt khác, Bob sẽ không bao giờ đưa vào B tài khoản do Alice xác định. Không có _ để tiêu một xu, bởi vì số dư của các tài khoản này vẫn giữ nguyên và (hãy nhớ lại tuyên bố lỏng lẻo mà chúng tôi đang cố gắng chứng minh) các nhân chứng của họ không bao giờ thay đổi. Do đó, B đúng bằng A.

Cuối cùng, mâu thuẫn được giải quyết bằng cách tính số bit Alice phải gửi cho Bob. Có 2n tập hợp con tài khoản mà cô ấy có thể chọn và 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.

(Người đọc quen thuộc với mật mã có thể nhận thấy rằng chúng tôi bỏ qua một số chi tiết ở đây; ví dụ: việc giải mã của Bob thất bại với xác suất không đáng kể. Bài viết của chúng tôi bao gồm một bằng chứng đầy đủ.)

Trong khi chúng tôi mô tả các bằng chứng của mình dưới dạng chuỗi khối không trạng thái, Alice và Bob có thể thực hiện giao tiếp cực kỳ 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 (ví dụ: bộ tích lũy, cam kết vectơ). Chúng tôi chính thức hóa các cấu trúc dữ liệu như vậ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ể đảo ngược.

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ể "mã hóa trạng thái" - không có giải pháp viên đạn bạc nào 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 từ trình xác thực sang người dùng và được đẩy đến người dùng dưới dạng nhân chứng được cập nhật thường xuyên.

Một số giải pháp tiềm năng vẫn tồn tại, nhưng những giải pháp này tách khỏi mô hình blockchain không trạng thái nghiêm ngặt. Mô hình này cho phép bên thứ ba (không phải người dùng hay người xác thực) chịu trách nhiệm lưu trữ trạng thái đầy đủ. Bên này được gọi là Nút dịch vụ bằng chứng (với các bước kiểm tra nghiêm ngặt nhất của Srinivasan và cộng sự) và nó sử dụng trạng thái đầy đủ để tạo ra các nhân chứng cập nhật thay mặt cho người dùng. Sau đó, người dùng có thể sử dụng những nhân chứng này để giao dịch, giống như trong một blockchain không trạng thái thông thường, nơi những người xác nhận vẫn chỉ lưu trữ trạng thái nhỏ gọn. Cơ chế khuyến khích của hệ thống, đặc biệt là cách người dùng đền bù cho các nút bằng chứng dịch vụ, 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ủ tổng hợp. Một bản tổng hợp (dù là lạc quan hay ZK) thường có trạng thái lớn và cam kết nó bằng cách sử dụng một giá trị nhỏ được lưu trữ trên L1. Trạng thái này bao gồm mọi tài khoản của 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ụ của hệ thống chứng minh có thể đảo ngược trong mô hình của chúng tôi. Trên thực tế, người ta có thể lập luận rằng các chuỗi khối không trạng thái đã được triển khai trong thực tế dưới dạng cuộn L2.

Thật không may, điều này có nghĩa là những kết quả bất khả thi của chúng tôi sẽ được áp dụng trực tiếp. Nhân chứng rút tiền tổng hợp của người dùng phải thay đổi thường xuyên, nếu không gần như toàn bộ trạng thái L2 sẽ phải được ghi vào L1. Do đó, các bộ sưu tập ngày nay thường giả định một ủy ban về tính khả dụng của dữ liệu (đôi khi được gọi là "ủy ban tính hợp lệ") có chức năng giống như một "nút dịch vụ bằng chứng" giúp người dùng tính toán các nhân chứng mới khi họ sẵn sàng thoát. Phát hiện của chúng tôi cho thấy rằng các cảnh báo dành cho người dùng trong tài liệu Ethereum — “Nếu không có quyền truy cập vào dữ liệu giao dịch, người dùng không thể tính toán bằng chứng Merkle cần thiết để chứng minh quyền sở hữu tiền và thực hiện rút tiền.” — sẽ luôn được áp dụng.

Khi các hệ thống blockchain phát triển, việc phát triển các cách hiệu quả hơn để quản lý trạng thái blockchain sẽ càng trở nên quan trọng hơn. Mặc dù kết quả của chúng tôi về việc loại trừ các chuỗi khối không trạng thái có vẻ tiêu cực, nhưng các kết quả không thể thực hiện được này rất hữu ích cho các nhà thiết kế chuỗi khối, vì chúng yêu cầu chúng tôi tập trung nghiên cứu vào nơi khác, lý tưởng nhất là giúp chúng tôi Tìm giải pháp khả thi nhanh hơn.

Xem bản gốc
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.
  • Phần thưởng
  • Bình luận
  • Chia sẻ
Bình luận
0/400
Không có bình luận
  • Ghim
Giao dịch tiền điện tử mọi lúc mọi nơi
qrCode
Quét để tải xuống ứng dụng Gate
Cộng đồng
Tiếng Việt
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)