Dữ liệu bị giữ lại và chứng minh gian lận: Tại sao Plasma không hỗ trợ Hợp đồng thông minh

Trung cấp1/6/2024, 6:41:03 AM
Bài viết này bắt đầu với vấn đề về DA và việc giữ dữ liệu, và khám phá lý do tại sao Plasma đã bị chôn vùi trong thời gian dài như vậy.

Vì sao Plasma đã bị lãng quên trong một thời gian dài, và tại sao Vitalik sẽ mạnh mẽ ủng hộ Rollup, các dấu hiệu chủ yếu trỏ vào hai điểm: triển khai DA dưới chuỗi Ethereum không đáng tin cậy, và việc giữ dữ liệu dễ dàng xảy ra. Một khi việc giữ dữ liệu xảy ra, chứng minh gian lận trở nên khó khăn để thực hiện; Thiết kế cơ chế của Plasma chính nó rất không thân thiện với hợp đồng thông minh, và đặc biệt là khó khăn để hỗ trợ việc di cư trạng thái hợp đồng sang Layer 1. Hai điểm này khiến cho Plasma về cơ bản chỉ sử dụng mô hình UTXO hoặc tương tự.

Để hiểu rõ hai điểm cốt lõi trên, hãy bắt đầu với vấn đề của DA và việc giữ dữ liệu. Tên đầy đủ của DA là Data Availability, có nghĩa đen là sẵn có dữ liệu. Hiện nay, nhiều người đang lạm dụng nó, đến mức nó bị nhầm lẫn nghiêm trọng với việc “dữ liệu lịch sử có thể được kiểm tra”. Nhưng thực tế, “dữ liệu lịch sử có thể được kiểm tra” và “chứng minh lưu trữ” là vấn đề mà Filecoin và Arweave đã giải quyết. Theo Quỹ Ethereum và Celestia, vấn đề DA hoàn toàn khám phá các kịch bản giữ dữ liệu.

Cây Merkle và Gốc Merkle và Chứng minh Merkle

Để giải thích ý nghĩa thực sự của các cuộc tấn công giữ dữ liệu và các vấn đề DA, chúng ta cần nói ngắn gọn về Gốc Merkle và Cây Merkle trước tiên. Trong Ethereum hoặc hầu hết các chuỗi công cộng, một cấu trúc dữ liệu giống như cây được gọi là Cây Merkle được sử dụng để phục vụ như một bản tóm tắt/thư mục của trạng thái của tất cả các tài khoản, hoặc để ghi lại các giao dịch được đóng gói trong mỗi khối.

Nút lá ở đáy của Cây Merkle được tạo thành từ các băm của dữ liệu gốc như giao dịch hoặc trạng thái tài khoản. Các băm này được cộng lại từng cặp và lặp đi lặp lại, và cuối cùng một Gốc Merkle có thể được tính toán.

(Bản ghi ở dưới cùng của hình là tập dữ liệu gốc tương ứng với nút lá)Merkle Root có một thuộc tính:Nếu một nút lá ở dưới cùng của Merkle Tree thay đổi, Merkle Root được tính toán cũng sẽ thay đổi. Do đó, Merkle Trees tương ứng với các bộ dữ liệu gốc khác nhau sẽ có Merkle Roots khác nhau, giống như những người khác nhau có dấu vân tay khác nhau. Công nghệ xác minh bằng chứng được gọi là Merkle Proof tận dụng tài sản này của Merkle Tree. Lấy hình trên làm ví dụ, nếu Lý Cương chỉ biết giá trị của Merkle Root trong hình thì không biết Merkle Tree hoàn chỉnh chứa dữ liệu gì. Chúng tôi muốn chứng minh với Li Gang rằng Bản ghi 3 thực sự có liên quan đến Gốc trong hình, hay nói cách khác, chứng minh rằng hàm băm của Bản ghi 3 tồn tại trên Cây Merkle tương ứng với Gốc. Chúng tôi chỉ cần gửi Record3 và ba khối dữ liệu tiêu hóa được đánh dấu màu xám cho Li Gang, mà không cần phải gửi toàn bộ Merkle Tree hoặc tất cả các nút lá của nó. Khi các bản ghi cơ bản của Merkle Tree chứa rất nhiều lá, ví dụ, nó chứa 2 đến sức mạnh thứ 20 của các khối dữ liệu (khoảng 1 triệu), Merkle Proof chỉ cần chứa ít nhất 21 khối dữ liệu.

(Khối dữ liệu 30 và H2 trong hình có thể tạo thành Merkle Proof, chứng minh rằng khối dữ liệu 30 tồn tại trên Merkle Tree tương ứng với H0)Sự "đơn giản" này của Merkle Proof thường được sử dụng trong Bitcoin, Ethereum hoặc các cầu nối chuỗi chéo. Nút ánh sáng mà chúng ta biết thực sự là Li Gang đã đề cập ở trên. Anh ta chỉ nhận được tiêu đề khối từ nút đầy đủ, không phải khối hoàn chỉnh. Cần nhấn mạnh ở đây rằng Ethereum sử dụng cây Merkle được gọi là State Trie để phục vụ như một bản tóm tắt của tất cả các tài khoản. Miễn là trạng thái của một tài khoản được liên kết với State Trie thay đổi, Merkle Root của State Trie, được gọi là StateRoot, sẽ thay đổi. Trong tiêu đề khối của Ethereum, StateRoot sẽ được ghi lại và Merkle Root của cây giao dịch (được gọi là Txn Root) cũng sẽ được ghi lại., Một điểm khác biệt giữa cây giao dịch và cây trạng thái là dữ liệu được biểu thị bởi các lá bên dưới là khác nhau. Nếu khối số 100 chứa 300 giao dịch, lá của cây giao dịch đại diện cho 300 Txn này. Một điểm khác biệt nữa là khối lượng dữ liệu tổng thể của State Trie cực kỳ lớn. Các lá dưới cùng của nó tương ứng với tất cả các địa chỉ trên chuỗi Ethereum (trên thực tế, có nhiều hàm băm trạng thái lỗi thời), vì vậy bộ dữ liệu gốc tương ứng với State Trie sẽ không được phát hành. Trong khối, chỉ có StateRoot được ghi lại trong tiêu đề khối. Tập dữ liệu ban đầu của cây giao dịch là dữ liệu Txn trong mỗi khối và TxnRoot của cây này sẽ được ghi lại trong tiêu đề khối.

Vì nút nhẹ chỉ nhận tiêu đề khối và chỉ biết StateRoot và TxnRoot, nó không thể suy luận ra toàn bộ Merkle Tree dựa trên Gốc (điều này được xác định bởi các thuộc tính của Merkle Tree và hàm băm), vì vậy các nút nhẹ không thể biết dữ liệu giao dịch chứa trong khối, cũng như họ không biết những thay đổi đã xảy ra trong tài khoản tương ứng với State Trie. Nếu Wang Qiang muốn chứng minh cho một nút nhẹ (như Li Gang đã đề cập trước đó) rằng khối số 100 chứa một giao dịch cụ thể, và biết rằng nút nhẹ biết tiêu đề khối số 100 và biết TxnRoot, thì vấn đề trên được chuyển đổi thành: Chứng minh rằng Txn này tồn tại trên Merkle Tree tương ứng với TxnRoot. Lúc này, Wang Qiang chỉ cần nộp chứng minh Merkle tương ứng.


Trong nhiều cầu nối giữa chuỗi dựa trên các giải pháp khách hàng nhẹ, việc sử dụng các nút nhẹ và Chứng minh Merkle nhẹ nhàng và đơn giản như đã đề cập ở trên thường được áp dụng. Ví dụ, cầu nối ZK như Giao thức Bản đồ sẽ thiết lập một hợp đồng trên chuỗi ETH để nhận cụ thể các tiêu đề khối từ các chuỗi khác (như Polygon). Khi Người chuyển gửi tiêu đề khối thứ 100 của Polygon đến hợp đồng trên chuỗi ETH, hợp đồng sẽ xác minh tính hợp lệ của tiêu đề (ví dụ, xem xét xem nó đã thu thập chữ ký của 2/3 nút POS trong mạng lưới Polygon). Nếu Tiêu đề hợp lệ và người dùng tuyên bố rằng anh ấy khởi tạo một Giao dịch qua chuỗi từ Polygon đến ETH, Giao dịch sẽ được đóng gói vào khối thứ 100 của Polygon. Anh ấy chỉ cần sử dụng Chứng minh Merkle để chứng minh rằng Giao dịch qua chuỗi do anh ấy khởi tạo có thể tương ứng với GốcGiao dịch trong tiêu đề khối số 100 (nói cách khác, Đó là chứng minh rằng Giao dịch qua chuỗi do bạn khởi tạo được ghi lại trong khối 100 của Polygon.). Tuy nhiên, Cầu nối ZK sẽ sử dụng chứng minh không thông báo để nén lượng tính toán cần thiết để xác minh Chứng minh Merkle, giảm chi phí xác minh của các hợp đồng cầu nối qua chuỗi.

Vấn đề tấn công DA và giữ dữ liệu

Sau khi nói về Merkle Tree, Merkle Root và Merkle Proof, hãy quay trở lại vấn đề DA và cuộc tấn công về việc giữ dữ liệu được đề cập ở đầu bài viết. Vấn đề này đã được thảo luận ngay từ năm 2017. Bài báo gốc của Celestia đề cập đến nguồn gốc của vấn đề DA. Vitalik bản thân đã đề cập trong một tài liệu từ năm 2017 đến 2018 rằng nhà sản xuất khối có thể cố ý che giấu một số đoạn dữ liệu của khối và phát hành các khối không hoàn chỉnh ra thế giới bên ngoài. Kết quả là, nút đầy đủ không thể xác nhận tính đúng đắn của việc thực hiện giao dịch/chuyển trạng thái.

Lúc này, nhà sản xuất khối có thể đánh cắp tài sản của người dùng, như chuyển toàn bộ đồng trong tài khoản của A sang các địa chỉ khác, nhưng nút đầy đủ không thể đánh giá xem A đã làm điều này hay không vì họ không biết giao dịch hoàn chỉnh nào được bao gồm trong khối dữ liệu mới nhất.

Trong các chuỗi công khai Layer 1 như Bitcoin hoặc Ethereum, các nút đầy đủ trung thực sẽ trực tiếp từ chối các khối không hợp lệ ở trên. Nhưng các nút nhẹ lại khác. Chúng chỉ nhận tiêu đề khối từ mạng. Chúng chỉ biết StateRoot và TxnRoot, nhưng chúng không biết liệu Tiêu đề và các khối gốc tương ứng với hai Root có hợp lệ hay không.

Trong bài báo trắng về Bitcoin, thực tế có một số suy nghĩ về tình huống này. Satoshi Nakamoto từng tin rằng hầu hết người dùng sẽ cố gắng chạy các nút nhẹ với yêu cầu cấu hình thấp hơn, và các nút nhẹ không thể đánh giá xem khối tương ứng với tiêu đề khối có hợp lệ hay không. Nếu một khối không hợp lệ, các nút đầy đủ trung thực sẽ gửi cảnh báo đến các nút nhẹ.

Tuy nhiên, Satoshi Nakamoto không tiến hành phân tích chi tiết hơn về giải pháp này. Sau đó, Vitalik và nhà sáng lập Celestia Mustafa kết hợp ý tưởng này với kết quả của những người tiền nhiệm khác và giới thiệu việc lấy mẫu dữ liệu DA để đảm bảo rằng các nút đầy đủ trung thực có thể khôi phục mỗi khu vực. dữ liệu hoàn chỉnh và tạo cảnh báo khi cần thiết.

Lưu ý: DA Data Sampling (DAS) và Celestia không phải là trọng tâm của bài viết này. Độc giả quan tâm có thể đọc các bài viết trước của “Geek Web3”:“Sai lầm về Sẵn có Dữ liệu: DA = Việc Phát hành Dữ liệu ≠ Truy xuất Dữ liệu Lịch sử”

Chứng minh gian lận của Plasma

Nói một cách đơn giản, Plasma là một giải pháp mở rộng chỉ xuất bản tiêu đề khối của Layer2 lên Layer1 và dữ liệu DA bên ngoài tiêu đề khối (hoàn thành bộ dữ liệu giao dịch / thay đổi trạng thái của mỗi tài khoản) Chỉ được phát hành ngoài chuỗi. Nói cách khác, Plasma giống như một cầu nối chuỗi chéo dựa trên các máy khách nhẹ. Nó sử dụng các hợp đồng để triển khai các máy khách nhẹ Lớp 2 trên chuỗi ETH. Khi người dùng tuyên bố rằng họ muốn chuyển tài sản từ L2 sang L1, họ phải nộp Bằng chứng Merkle để chứng minh bản thân. sở hữu những tài sản này. Logic xác minh của các tài sản đi từ L2 đến L1 tương tự như cầu ZK được đề cập ở trên, ngoại trừ mô hình bắc cầu của Plasma dựa trên bằng chứng gian lận, không phải bằng chứng ZK và gần với cái gọi là "cầu lạc quan". Yêu cầu rút tiền từ L2 đến L1 trong mạng Plasma sẽ không được phát hành ngay lập tức, nhưng sẽ có một "giai đoạn thử thách". Về mục đích của giai đoạn thử thách, chúng tôi sẽ giải thích bên dưới.


Plasma không có yêu cầu nghiêm ngặt đối với việc phát hành dữ liệu/DA. Trình tự/ Người vận hành chỉ phát sóng mỗi khối L2 ngoại chuỗi, và các nút muốn có thể tự mình lấy các khối L2. Sau đó, bộ sắp xếp sẽ công bố tiêu đề của khối L2 cho Layer1. Ví dụ, trình tự trước tiên phát sóng khối số 100 ngoại chuỗi, và sau đó công bố tiêu đề của khối vào chuỗi. Nếu khối 100 chứa các giao dịch không hợp lệ, bất kỳ nút Plasma nào cũng có thể nộp Chứng minh Merkle đến hợp đồng trên ETH trước khi kết thúc “thời kỳ thách thức”. Chứng minh rằng tiêu đề khối số 100 có thể liên kết với một giao dịch không hợp lệ, Đây là một tình huống được bảo hiểm bởi chứng minh gian lận.


Các kịch bản ứng dụng chống gian lận của Plasma cũng bao gồm: 1. Giả sử rằng tiến trình của mạng Plasma đạt đến khối số 200. Tại thời điểm này, người dùng A bắt đầu một tuyên bố rút tiền, nói rằng khi anh ta ở trong khối số 100, anh ta có 10 ETH. Nhưng trên thực tế, người dùng A đã chi tiêu ETH vào tài khoản của mình sau khối 100. Do đó, hành vi của A thực sự là: sau khi chi tiêu 10 ETH, anh ta tuyên bố rằng anh ta đã có 10 ETH trong quá khứ và cố gắng rút các ETH này. Đây là một điển hình "rút tiền kép" và chi tiêu gấp đôi. tại thời điểm này,Bất kỳ ai cũng có thể gửi Bằng chứng Merkle để chứng minh rằng trạng thái tài sản mới nhất của người dùng A không thỏa mãn tuyên bố rút tiền của anh ta, nghĩa là để chứng minh rằng A chưa rút tiền đã nêu sau khối 100. (Các lược đồ Plasma khác nhau có các phương pháp chứng minh không nhất quán cho tình huống này và mô hình địa chỉ tài khoản rắc rối hơn nhiều so với bằng chứng chi tiêu gấp đôi của UTXO). 2. Nếu đó là giải pháp Plasma dựa trên mô hình UTXO (điều này chủ yếu xảy ra trong quá khứ), tiêu đề khối không chứa StateRoot, chỉ có TxnRoot (UTXO không hỗ trợ mô hình địa chỉ tài khoản kiểu Ethereum và không có thiết kế trạng thái toàn cầu như State Trie). Nói cách khác, một chuỗi sử dụng mô hình UTXO chỉ có hồ sơ giao dịch và không có bản ghi trạng thái. Tại thời điểm này, bản thân trình sắp xếp trình tự có thể khởi động một cuộc tấn công chi tiêu kép, chẳng hạn như chi tiêu một UTXO đã được chi tiêu lại hoặc phát hành UTXO bổ sung cho người dùng ngoài không khí. Bất kỳ người dùng nào cũng có thể gửi Bằng chứng Merkle để chứng minh rằng bản ghi sử dụng của UTXO đã xuất hiện (đã được chi tiêu) trong các khối trước đây hoặc để chứng minh rằng có vấn đề với nguồn lịch sử của một UTXO nhất định.

  1. Đối với các giải pháp Plasma tương thích với EVM/Hỗ trợ State Trie, người sắp xếp có thể gửi một StateRoot không hợp lệ. Ví dụ, sau khi thực thi giao dịch chứa trong khối thứ 100, StateRoot sẽ được chuyển đổi thành ST+, nhưng người sắp xếp đi đến Layer1 và gửi đi ST-. Bằng chứng gian lận trong trường hợp này phức tạp hơn và đòi hỏi phải chơi lại giao dịch trong khối số 100 trên chuỗi Ethereum. Số lượng tính toán và thông số đầu vào cần thiết sẽ tiêu tốn rất nhiều gas. Các nhóm sớm áp dụng Plasma gặp khó khăn trong việc chứng minh gian lận phức tạp như vậy, nên hầu hết họ áp dụng mô hình UTXO. Cuối cùng, chứng minh gian lận dựa trên UTXO đơn giản và dễ triển khai. (Fuel, giải pháp rollup đầu tiên cung cấp chứng minh gian lận, dựa trên UTXO)


Lưu trữ dữ liệu và trò chơi thoát ra Tất nhiên, các tình huống trên nơi chứng minh gian lận có thể hiệu quả chỉ được xác định khi DA/ việc phát hành dữ liệu là hiệu quả. Nếu máy phát xảy ra việc giữ lại dữ liệu và không công bố các khối hoàn chỉnh ngoại chuỗi, nút Plasma sẽ không thể xác nhận xem tiêu đề khối trên Lớp 1 có hợp lệ hay không, và tất nhiên là nó cũng sẽ không thể phát hành chứng minh gian lận một cách trơn tru.

Tại thời điểm này, trình sắp xếp chuỗi có thể đánh cắp tài sản của người dùng, Ví dụ: chuyển riêng tất cả các đồng tiền trong tài khoản A sang tài khoản B, sau đó chuyển tiền từ tài khoản B sang tài khoản C và cuối cùng bắt đầu rút tiền dưới tên C. Tài khoản B và C thuộc sở hữu của chính bộ sắp xếp. Ngay cả khi việc chuyển giao B->C được công khai, nó sẽ không gây ra bất kỳ thiệt hại nào; Nhưng người sắp xếp có thể giữ lại dữ liệu của việc chuyển nhượng không hợp lệ A->B và mọi người không thể chứng minh rằng có vấn đề với nguồn tài sản của B và C. (Để chứng minh rằng nguồn tài sản của B là cá, cần phải chỉ ra rằng chữ ký số của "một Txn nào đó được chuyển sang B" là không chính xác). Giải pháp Plasma dựa trên UTXO có các biện pháp nhắm mục tiêu. Ví dụ: khi bất kỳ ai bắt đầu rút tiền, họ phải gửi tất cả các nguồn lịch sử của tài sản. Tất nhiên, sẽ có nhiều biện pháp cải thiện hơn sau này. Nhưng nếu đó là dung dịch Plasma tương thích EVM, nó sẽ xuất hiện yếu ở khu vực này. Bởi vì nếu Txn liên quan đến hợp đồng có liên quan, việc xác minh quá trình chuyển đổi trạng thái trên chuỗi sẽ phải chịu chi phí rất lớn,Do đó, Plasma, hỗ trợ các mô hình địa chỉ tài khoản và hợp đồng thông minh, không thể dễ dàng thực hiện sơ đồ xác minh tính hợp lệ của việc rút tiền. Hơn nữa, ngoài chủ đề trên, Cho dù đó là Plasma dựa trên UTXO hay mô hình địa chỉ tài khoản, một khi việc giữ lại dữ liệu xảy ra, về cơ bản nó sẽ khiến mọi người hoảng sợ vì bạn không biết trình tự đã thực hiện những giao dịch nào. Các nút plasma sẽ tìm thấy điều gì đó không ổn, nhưng họ sẽ không thể đưa ra bằng chứng gian lận vì bộ giải trình tự Plasma chưa phát hành dữ liệu cần thiết cho bằng chứng gian lận. Tại thời điểm này, mọi người chỉ có thể nhìn thấy tiêu đề khối tương ứng, nhưng họ không biết những gì trong khối hoặc những gì đã trở thành tài sản tài khoản của họ. Mọi người sẽ cùng nhau bắt đầu một tuyên bố rút tiền và sử dụng tiêu đề khối tương ứng. Merkle Proof cố gắng rút tiền,Kích hoạt một kịch bản cực đoan gọi là "Trò chơi thoát", tình huống này sẽ dẫn đến một vụ "giẫm đạp", gây tắc nghẽn nghiêm trọng ở Lớp 1, và vẫn sẽ khiến tài sản của một số người bị hư hỏng. (Những người chưa nhận được thông báo nút trung thực hoặc không kiểm tra Twitter sẽ không biết rằng trình sắp xếp thứ tự đang ăn cắp tiền xu).


vì vậy, Plasma là một giải pháp mở rộng Lớp 2 không đáng tin cậy. Khi một cuộc tấn công giữ lại dữ liệu xảy ra, "Trò chơi thoát" sẽ được kích hoạt, điều này có thể dễ dàng khiến người dùng bị tổn thất. Đây là một lý do chính cho sự từ bỏ của nó. Tại sao Plasma gặp khó khăn trong việc hỗ trợ các hợp đồng thông minhSau khi nói về Trò chơi thoát và các vấn đề lưu giữ dữ liệu, hãy xem tại sao Plasma gặp khó khăn trong việc hỗ trợ các hợp đồng thông minh. Có hai lý do chính: Thứ nhất, nếu đó là tài sản của hợp đồng Defi, ai nên rút nó về Lớp 1? Bởi vì điều này về cơ bản là di chuyển trạng thái hợp đồng từ Layer2 sang Layer1.Giả sử ai đó gửi 100 ETH vào nhóm DEX LP, và sau đó trình sắp xếp Plasma làm điều gì đó xấu xa và mọi người muốn rút tiền khẩn cấp. Tại thời điểm này, 100 ETH của người dùng vẫn được kiểm soát bởi hợp đồng DEX. Ai nên sở hữu những tài sản này tại thời điểm này? Được đề cập trên Layer1? Cách tốt nhất dường như là cho phép người dùng mua lại tài sản từ DEX trước, sau đó cho phép người dùng tự chuyển tiền sang L1. Nhưng vấn đề là trình phân loại Plasma đã làm điều xấu xa và có thể từ chối yêu cầu của người dùng bất cứ lúc nào. Vì vậy, điều gì sẽ xảy ra nếu chúng tôi thiết lập Chủ sở hữu cho hợp đồng DEX trước và cho phép anh ta nâng tài sản hợp đồng lên L1 trong trường hợp khẩn cấp? Rõ ràng điều này sẽ mang lại cho chủ sở hữu hợp đồng quyền sở hữu tài sản công. Anh ta có thể nâng những tài sản này lên L1 và bỏ trốn bất cứ lúc nào. Điều này không phải là khủng khiếp sao? Rõ ràng,Làm thế nào để đối phó với những "tài sản công cộng" này được kiểm soát bởi các hợp đồng Defi là một bất ngờ lớn. Điều này thực sự liên quan đến vấn đề phân phối quyền lực công cộng. Những tên trộm trước đó đã nói trong một cuộc phỏng vấn“Việc tạo ra những thứ mới trên các chuỗi công cộng có hiệu suất cao là khó khăn, hợp đồng thông minh liên quan đến phân phối quyền lực”Điều này đã được đề cập trong bài viết.


Thứ hai, nếu hợp đồng không được phép di chuyển sẽ bị thiệt hại rất lớn; Nếu hợp đồng được phép di chuyển trạng thái của nó sang Lớp 1, sẽ có một lần rút tiền kép rất khó giải quyết trong bằng chứng gian lận Plasma:Ví dụ: chúng tôiGiả sử rằng Plasma áp dụng mô hình địa chỉ tài khoản của Ethereum và hỗ trợ các hợp đồng thông minh., có một máy trộn, hiện được gửi bằng 100 ETH và chủ sở hữu của máy trộn do Bob kiểm soát; giả sử rằng Bob rút 50 ETH từ máy trộn trong khối thứ 100. Sau đó, Bob bắt đầu một tuyên bố rút tiền và chuyển 50 ETH sang Lớp 1; sau đó, Bob sử dụng ảnh chụp nhanh trạng thái hợp đồng trong quá khứ (chẳng hạn như khối thứ 70) để di chuyển trạng thái trong quá khứ của máy trộn sang Lớp 1, sẽ 100 ETH mà máy trộn "từng sở hữu" cũng được chuyển sang Lớp 1; Rõ ràng, đây là một "rút tiền kép" điển hình, nghĩa là chi tiêu gấp đôi.150 ETH đã được Bob đề cập đến Lớp 1, nhưng người dùng mạng Lớp 2 chỉ trả 100 ETH cho máy trộn / Bob và 50 ETH đã bị rút ra khỏi không khí. Điều này có thể dễ dàng làm cạn kiệt trữ lượng dự trữ của Plasma。 Về lý thuyết, người ta có thể bắt đầu một bằng chứng gian lận để chứng minh rằng trạng thái của hợp đồng máy trộn đã thay đổi sau khối thứ 70. Nhưng nếu sau khối số 70, tất cả Txn tương tác với hợp đồng trộn không thay đổi trạng thái hợp đồng, ngoại trừ giao dịch mà Bob đã lấy đi 50 ETH; nếu bạn muốn đưa ra bằng chứng, hãy chỉ ra rằng hợp đồng máy trộn nằm trong Nếu có sự thay đổi sau khối số 70, tất cả Txn được đề cập ở trên phải được chạy trên chuỗi Ethereum và cuối cùng hợp đồng Plasma có thể được xác nhận. Tình trạng của hợp đồng máy trộn đã thực sự thay đổi (lý do tại sao nó phức tạp như vậy là vì được xác định bởi cấu trúc của chính Plasma). Nếu số lượng Txn trong lô này cực kỳ lớn, bằng chứng gian lận hoàn toàn không thể được công bố trên Layer1. (Nó sẽ vượt quá giới hạn gas của một khối Ethereum).


https://ethresear.ch/t/why-smart-contracts-are-not-feasible-on-plasma/2598Theoretically, trong kịch bản chi tiêu gấp đôi ở trên, có vẻ như chỉ có ảnh chụp nhanh trạng thái hiện tại của máy trộn được gửi (thực chất là bằng chứng Merkle tương ứng với StateRoot), nhưng trên thực tế, do Plasma không công bố dữ liệu giao dịch trên chuỗi, hợp đồng không thể xác định xem bạn có hợp lệ hay không. Điều này là do bản thân trình sắp xếp chuỗi có thể bắt đầu giữ lại dữ liệu, gửi ảnh chụp nhanh trạng thái không hợp lệ và buộc tội ác ý bất kỳ người rút tiền nào. Ví dụ: khi bạn tuyên bố rằng bạn có 50 ETH trong tài khoản của mình và bắt đầu rút tiền, trình sắp xếp chuỗi có thể xóa riêng tài khoản của bạn về 0, sau đó bắt đầu giữ lại dữ liệu, gửi StateRoot không hợp lệ đến chuỗi và gửi ảnh chụp nhanh trạng thái tương ứng, buộc tội sai bạn hết tiền trong tài khoản của bạn. Tại thời điểm này, chúng tôi không thể chứng minh rằng StateRoot và ảnh chụp nhanh trạng thái do trình sắp xếp gửi là không hợp lệ, vì nó đã bắt đầu giữ lại dữ liệu và bạn không thể có đủ dữ liệu cần thiết để chống gian lận. Để ngăn chặn điều này, khi một nút Plasma trình bày ảnh chụp nhanh trạng thái để chứng minh rằng ai đó đã chi tiêu gấp đôi, nó cũng sẽ phát lại các bản ghi giao dịch trong khoảng thời gian này. Điều này có thể ngăn trình sắp xếp chuỗi sử dụng khấu lưu dữ liệu để ngăn người khác rút tiền. Trong Rollup, nếu bạn gặp phải việc rút tiền kép nêu trên, về mặt lý thuyết không cần phải phát lại các giao dịch lịch sử, bởi vì Rollup không có vấn đề giữ lại dữ liệu và sẽ "buộc" trình sắp xếp chuỗi xuất bản dữ liệu DA trên chuỗi. Nếu trình sắp xếp chuỗi Rollup gửi ảnh chụp nhanh trạng thái StateRoot không hợp lệ, nó sẽ không xác minh được hợp đồng (ZK Rollup) hoặc sẽ sớm bị thách thức (OP Rollup). Trên thực tế, ngoài ví dụ về máy trộn tiền xu được đề cập ở trên, các kịch bản như hợp đồng đa ký cũng có thể dẫn đến việc rút tiền hai lần trên mạng Plasma. Bằng chứng gian lận rất kém hiệu quả trong việc xử lý tình huống này. Tình trạng này được phân tích trong ETH Research. Tóm lại, Vì giải pháp Plasma không có lợi cho các hợp đồng thông minh và về cơ bản không hỗ trợ di chuyển trạng thái hợp đồng sang Lớp 1, Plasma chính thống phải sử dụng UTXO hoặc các cơ chế tương tự. Bởi vì UTXO không có vấn đề xung đột quyền sở hữu tài sản và có thể hỗ trợ chống gian lận rất tốt (nó có kích thước nhỏ hơn nhiều), giá là nó có một kịch bản ứng dụng duy nhất và về cơ bản chỉ có thể hỗ trợ chuyển khoản hoặc trao đổi sổ lệnh. Ngoài ra, vì bản thân bằng chứng gian lận phụ thuộc rất nhiều vào dữ liệu DA, nếu lớp DA không đáng tin cậy, sẽ khó triển khai một hệ thống chống gian lận hiệu quả. Tuy nhiên, cách xử lý vấn đề DA của Plasma quá thô thiển và không thể giải quyết vấn đề tấn công giữ lại dữ liệu. Với sự trỗi dậy của Rollup, Plasma dần mờ nhạt khỏi giai đoạn lịch sử.

Tuyên bố từ chối trách nhiệm:

  1. Bài viết này được sao chép từ [ 微信公众号:极客 Web3]. Tất cả bản quyền thuộc về tác giả gốc [Faust]. Nếu có ý kiến ​​phản đối về việc tái bản này, vui lòng liên hệ với Học cửađội ngũ, và họ sẽ xử lý nhanh chóng.
  2. Không chịu trách nhiệm: Các quan điểm và ý kiến được thể hiện trong bài viết này chỉ thuộc về tác giả và không cấu thành bất kỳ lời khuyên đầu tư nào.
  3. Các bản dịch của bài viết sang các ngôn ngữ khác được thực hiện bởi đội ngũ Gate Learn. Trừ khi được nêu, việc sao chép, phân phối hoặc sao chép bài viết đã dịch là không được phép.

Dữ liệu bị giữ lại và chứng minh gian lận: Tại sao Plasma không hỗ trợ Hợp đồng thông minh

Trung cấp1/6/2024, 6:41:03 AM
Bài viết này bắt đầu với vấn đề về DA và việc giữ dữ liệu, và khám phá lý do tại sao Plasma đã bị chôn vùi trong thời gian dài như vậy.

Vì sao Plasma đã bị lãng quên trong một thời gian dài, và tại sao Vitalik sẽ mạnh mẽ ủng hộ Rollup, các dấu hiệu chủ yếu trỏ vào hai điểm: triển khai DA dưới chuỗi Ethereum không đáng tin cậy, và việc giữ dữ liệu dễ dàng xảy ra. Một khi việc giữ dữ liệu xảy ra, chứng minh gian lận trở nên khó khăn để thực hiện; Thiết kế cơ chế của Plasma chính nó rất không thân thiện với hợp đồng thông minh, và đặc biệt là khó khăn để hỗ trợ việc di cư trạng thái hợp đồng sang Layer 1. Hai điểm này khiến cho Plasma về cơ bản chỉ sử dụng mô hình UTXO hoặc tương tự.

Để hiểu rõ hai điểm cốt lõi trên, hãy bắt đầu với vấn đề của DA và việc giữ dữ liệu. Tên đầy đủ của DA là Data Availability, có nghĩa đen là sẵn có dữ liệu. Hiện nay, nhiều người đang lạm dụng nó, đến mức nó bị nhầm lẫn nghiêm trọng với việc “dữ liệu lịch sử có thể được kiểm tra”. Nhưng thực tế, “dữ liệu lịch sử có thể được kiểm tra” và “chứng minh lưu trữ” là vấn đề mà Filecoin và Arweave đã giải quyết. Theo Quỹ Ethereum và Celestia, vấn đề DA hoàn toàn khám phá các kịch bản giữ dữ liệu.

Cây Merkle và Gốc Merkle và Chứng minh Merkle

Để giải thích ý nghĩa thực sự của các cuộc tấn công giữ dữ liệu và các vấn đề DA, chúng ta cần nói ngắn gọn về Gốc Merkle và Cây Merkle trước tiên. Trong Ethereum hoặc hầu hết các chuỗi công cộng, một cấu trúc dữ liệu giống như cây được gọi là Cây Merkle được sử dụng để phục vụ như một bản tóm tắt/thư mục của trạng thái của tất cả các tài khoản, hoặc để ghi lại các giao dịch được đóng gói trong mỗi khối.

Nút lá ở đáy của Cây Merkle được tạo thành từ các băm của dữ liệu gốc như giao dịch hoặc trạng thái tài khoản. Các băm này được cộng lại từng cặp và lặp đi lặp lại, và cuối cùng một Gốc Merkle có thể được tính toán.

(Bản ghi ở dưới cùng của hình là tập dữ liệu gốc tương ứng với nút lá)Merkle Root có một thuộc tính:Nếu một nút lá ở dưới cùng của Merkle Tree thay đổi, Merkle Root được tính toán cũng sẽ thay đổi. Do đó, Merkle Trees tương ứng với các bộ dữ liệu gốc khác nhau sẽ có Merkle Roots khác nhau, giống như những người khác nhau có dấu vân tay khác nhau. Công nghệ xác minh bằng chứng được gọi là Merkle Proof tận dụng tài sản này của Merkle Tree. Lấy hình trên làm ví dụ, nếu Lý Cương chỉ biết giá trị của Merkle Root trong hình thì không biết Merkle Tree hoàn chỉnh chứa dữ liệu gì. Chúng tôi muốn chứng minh với Li Gang rằng Bản ghi 3 thực sự có liên quan đến Gốc trong hình, hay nói cách khác, chứng minh rằng hàm băm của Bản ghi 3 tồn tại trên Cây Merkle tương ứng với Gốc. Chúng tôi chỉ cần gửi Record3 và ba khối dữ liệu tiêu hóa được đánh dấu màu xám cho Li Gang, mà không cần phải gửi toàn bộ Merkle Tree hoặc tất cả các nút lá của nó. Khi các bản ghi cơ bản của Merkle Tree chứa rất nhiều lá, ví dụ, nó chứa 2 đến sức mạnh thứ 20 của các khối dữ liệu (khoảng 1 triệu), Merkle Proof chỉ cần chứa ít nhất 21 khối dữ liệu.

(Khối dữ liệu 30 và H2 trong hình có thể tạo thành Merkle Proof, chứng minh rằng khối dữ liệu 30 tồn tại trên Merkle Tree tương ứng với H0)Sự "đơn giản" này của Merkle Proof thường được sử dụng trong Bitcoin, Ethereum hoặc các cầu nối chuỗi chéo. Nút ánh sáng mà chúng ta biết thực sự là Li Gang đã đề cập ở trên. Anh ta chỉ nhận được tiêu đề khối từ nút đầy đủ, không phải khối hoàn chỉnh. Cần nhấn mạnh ở đây rằng Ethereum sử dụng cây Merkle được gọi là State Trie để phục vụ như một bản tóm tắt của tất cả các tài khoản. Miễn là trạng thái của một tài khoản được liên kết với State Trie thay đổi, Merkle Root của State Trie, được gọi là StateRoot, sẽ thay đổi. Trong tiêu đề khối của Ethereum, StateRoot sẽ được ghi lại và Merkle Root của cây giao dịch (được gọi là Txn Root) cũng sẽ được ghi lại., Một điểm khác biệt giữa cây giao dịch và cây trạng thái là dữ liệu được biểu thị bởi các lá bên dưới là khác nhau. Nếu khối số 100 chứa 300 giao dịch, lá của cây giao dịch đại diện cho 300 Txn này. Một điểm khác biệt nữa là khối lượng dữ liệu tổng thể của State Trie cực kỳ lớn. Các lá dưới cùng của nó tương ứng với tất cả các địa chỉ trên chuỗi Ethereum (trên thực tế, có nhiều hàm băm trạng thái lỗi thời), vì vậy bộ dữ liệu gốc tương ứng với State Trie sẽ không được phát hành. Trong khối, chỉ có StateRoot được ghi lại trong tiêu đề khối. Tập dữ liệu ban đầu của cây giao dịch là dữ liệu Txn trong mỗi khối và TxnRoot của cây này sẽ được ghi lại trong tiêu đề khối.

Vì nút nhẹ chỉ nhận tiêu đề khối và chỉ biết StateRoot và TxnRoot, nó không thể suy luận ra toàn bộ Merkle Tree dựa trên Gốc (điều này được xác định bởi các thuộc tính của Merkle Tree và hàm băm), vì vậy các nút nhẹ không thể biết dữ liệu giao dịch chứa trong khối, cũng như họ không biết những thay đổi đã xảy ra trong tài khoản tương ứng với State Trie. Nếu Wang Qiang muốn chứng minh cho một nút nhẹ (như Li Gang đã đề cập trước đó) rằng khối số 100 chứa một giao dịch cụ thể, và biết rằng nút nhẹ biết tiêu đề khối số 100 và biết TxnRoot, thì vấn đề trên được chuyển đổi thành: Chứng minh rằng Txn này tồn tại trên Merkle Tree tương ứng với TxnRoot. Lúc này, Wang Qiang chỉ cần nộp chứng minh Merkle tương ứng.


Trong nhiều cầu nối giữa chuỗi dựa trên các giải pháp khách hàng nhẹ, việc sử dụng các nút nhẹ và Chứng minh Merkle nhẹ nhàng và đơn giản như đã đề cập ở trên thường được áp dụng. Ví dụ, cầu nối ZK như Giao thức Bản đồ sẽ thiết lập một hợp đồng trên chuỗi ETH để nhận cụ thể các tiêu đề khối từ các chuỗi khác (như Polygon). Khi Người chuyển gửi tiêu đề khối thứ 100 của Polygon đến hợp đồng trên chuỗi ETH, hợp đồng sẽ xác minh tính hợp lệ của tiêu đề (ví dụ, xem xét xem nó đã thu thập chữ ký của 2/3 nút POS trong mạng lưới Polygon). Nếu Tiêu đề hợp lệ và người dùng tuyên bố rằng anh ấy khởi tạo một Giao dịch qua chuỗi từ Polygon đến ETH, Giao dịch sẽ được đóng gói vào khối thứ 100 của Polygon. Anh ấy chỉ cần sử dụng Chứng minh Merkle để chứng minh rằng Giao dịch qua chuỗi do anh ấy khởi tạo có thể tương ứng với GốcGiao dịch trong tiêu đề khối số 100 (nói cách khác, Đó là chứng minh rằng Giao dịch qua chuỗi do bạn khởi tạo được ghi lại trong khối 100 của Polygon.). Tuy nhiên, Cầu nối ZK sẽ sử dụng chứng minh không thông báo để nén lượng tính toán cần thiết để xác minh Chứng minh Merkle, giảm chi phí xác minh của các hợp đồng cầu nối qua chuỗi.

Vấn đề tấn công DA và giữ dữ liệu

Sau khi nói về Merkle Tree, Merkle Root và Merkle Proof, hãy quay trở lại vấn đề DA và cuộc tấn công về việc giữ dữ liệu được đề cập ở đầu bài viết. Vấn đề này đã được thảo luận ngay từ năm 2017. Bài báo gốc của Celestia đề cập đến nguồn gốc của vấn đề DA. Vitalik bản thân đã đề cập trong một tài liệu từ năm 2017 đến 2018 rằng nhà sản xuất khối có thể cố ý che giấu một số đoạn dữ liệu của khối và phát hành các khối không hoàn chỉnh ra thế giới bên ngoài. Kết quả là, nút đầy đủ không thể xác nhận tính đúng đắn của việc thực hiện giao dịch/chuyển trạng thái.

Lúc này, nhà sản xuất khối có thể đánh cắp tài sản của người dùng, như chuyển toàn bộ đồng trong tài khoản của A sang các địa chỉ khác, nhưng nút đầy đủ không thể đánh giá xem A đã làm điều này hay không vì họ không biết giao dịch hoàn chỉnh nào được bao gồm trong khối dữ liệu mới nhất.

Trong các chuỗi công khai Layer 1 như Bitcoin hoặc Ethereum, các nút đầy đủ trung thực sẽ trực tiếp từ chối các khối không hợp lệ ở trên. Nhưng các nút nhẹ lại khác. Chúng chỉ nhận tiêu đề khối từ mạng. Chúng chỉ biết StateRoot và TxnRoot, nhưng chúng không biết liệu Tiêu đề và các khối gốc tương ứng với hai Root có hợp lệ hay không.

Trong bài báo trắng về Bitcoin, thực tế có một số suy nghĩ về tình huống này. Satoshi Nakamoto từng tin rằng hầu hết người dùng sẽ cố gắng chạy các nút nhẹ với yêu cầu cấu hình thấp hơn, và các nút nhẹ không thể đánh giá xem khối tương ứng với tiêu đề khối có hợp lệ hay không. Nếu một khối không hợp lệ, các nút đầy đủ trung thực sẽ gửi cảnh báo đến các nút nhẹ.

Tuy nhiên, Satoshi Nakamoto không tiến hành phân tích chi tiết hơn về giải pháp này. Sau đó, Vitalik và nhà sáng lập Celestia Mustafa kết hợp ý tưởng này với kết quả của những người tiền nhiệm khác và giới thiệu việc lấy mẫu dữ liệu DA để đảm bảo rằng các nút đầy đủ trung thực có thể khôi phục mỗi khu vực. dữ liệu hoàn chỉnh và tạo cảnh báo khi cần thiết.

Lưu ý: DA Data Sampling (DAS) và Celestia không phải là trọng tâm của bài viết này. Độc giả quan tâm có thể đọc các bài viết trước của “Geek Web3”:“Sai lầm về Sẵn có Dữ liệu: DA = Việc Phát hành Dữ liệu ≠ Truy xuất Dữ liệu Lịch sử”

Chứng minh gian lận của Plasma

Nói một cách đơn giản, Plasma là một giải pháp mở rộng chỉ xuất bản tiêu đề khối của Layer2 lên Layer1 và dữ liệu DA bên ngoài tiêu đề khối (hoàn thành bộ dữ liệu giao dịch / thay đổi trạng thái của mỗi tài khoản) Chỉ được phát hành ngoài chuỗi. Nói cách khác, Plasma giống như một cầu nối chuỗi chéo dựa trên các máy khách nhẹ. Nó sử dụng các hợp đồng để triển khai các máy khách nhẹ Lớp 2 trên chuỗi ETH. Khi người dùng tuyên bố rằng họ muốn chuyển tài sản từ L2 sang L1, họ phải nộp Bằng chứng Merkle để chứng minh bản thân. sở hữu những tài sản này. Logic xác minh của các tài sản đi từ L2 đến L1 tương tự như cầu ZK được đề cập ở trên, ngoại trừ mô hình bắc cầu của Plasma dựa trên bằng chứng gian lận, không phải bằng chứng ZK và gần với cái gọi là "cầu lạc quan". Yêu cầu rút tiền từ L2 đến L1 trong mạng Plasma sẽ không được phát hành ngay lập tức, nhưng sẽ có một "giai đoạn thử thách". Về mục đích của giai đoạn thử thách, chúng tôi sẽ giải thích bên dưới.


Plasma không có yêu cầu nghiêm ngặt đối với việc phát hành dữ liệu/DA. Trình tự/ Người vận hành chỉ phát sóng mỗi khối L2 ngoại chuỗi, và các nút muốn có thể tự mình lấy các khối L2. Sau đó, bộ sắp xếp sẽ công bố tiêu đề của khối L2 cho Layer1. Ví dụ, trình tự trước tiên phát sóng khối số 100 ngoại chuỗi, và sau đó công bố tiêu đề của khối vào chuỗi. Nếu khối 100 chứa các giao dịch không hợp lệ, bất kỳ nút Plasma nào cũng có thể nộp Chứng minh Merkle đến hợp đồng trên ETH trước khi kết thúc “thời kỳ thách thức”. Chứng minh rằng tiêu đề khối số 100 có thể liên kết với một giao dịch không hợp lệ, Đây là một tình huống được bảo hiểm bởi chứng minh gian lận.


Các kịch bản ứng dụng chống gian lận của Plasma cũng bao gồm: 1. Giả sử rằng tiến trình của mạng Plasma đạt đến khối số 200. Tại thời điểm này, người dùng A bắt đầu một tuyên bố rút tiền, nói rằng khi anh ta ở trong khối số 100, anh ta có 10 ETH. Nhưng trên thực tế, người dùng A đã chi tiêu ETH vào tài khoản của mình sau khối 100. Do đó, hành vi của A thực sự là: sau khi chi tiêu 10 ETH, anh ta tuyên bố rằng anh ta đã có 10 ETH trong quá khứ và cố gắng rút các ETH này. Đây là một điển hình "rút tiền kép" và chi tiêu gấp đôi. tại thời điểm này,Bất kỳ ai cũng có thể gửi Bằng chứng Merkle để chứng minh rằng trạng thái tài sản mới nhất của người dùng A không thỏa mãn tuyên bố rút tiền của anh ta, nghĩa là để chứng minh rằng A chưa rút tiền đã nêu sau khối 100. (Các lược đồ Plasma khác nhau có các phương pháp chứng minh không nhất quán cho tình huống này và mô hình địa chỉ tài khoản rắc rối hơn nhiều so với bằng chứng chi tiêu gấp đôi của UTXO). 2. Nếu đó là giải pháp Plasma dựa trên mô hình UTXO (điều này chủ yếu xảy ra trong quá khứ), tiêu đề khối không chứa StateRoot, chỉ có TxnRoot (UTXO không hỗ trợ mô hình địa chỉ tài khoản kiểu Ethereum và không có thiết kế trạng thái toàn cầu như State Trie). Nói cách khác, một chuỗi sử dụng mô hình UTXO chỉ có hồ sơ giao dịch và không có bản ghi trạng thái. Tại thời điểm này, bản thân trình sắp xếp trình tự có thể khởi động một cuộc tấn công chi tiêu kép, chẳng hạn như chi tiêu một UTXO đã được chi tiêu lại hoặc phát hành UTXO bổ sung cho người dùng ngoài không khí. Bất kỳ người dùng nào cũng có thể gửi Bằng chứng Merkle để chứng minh rằng bản ghi sử dụng của UTXO đã xuất hiện (đã được chi tiêu) trong các khối trước đây hoặc để chứng minh rằng có vấn đề với nguồn lịch sử của một UTXO nhất định.

  1. Đối với các giải pháp Plasma tương thích với EVM/Hỗ trợ State Trie, người sắp xếp có thể gửi một StateRoot không hợp lệ. Ví dụ, sau khi thực thi giao dịch chứa trong khối thứ 100, StateRoot sẽ được chuyển đổi thành ST+, nhưng người sắp xếp đi đến Layer1 và gửi đi ST-. Bằng chứng gian lận trong trường hợp này phức tạp hơn và đòi hỏi phải chơi lại giao dịch trong khối số 100 trên chuỗi Ethereum. Số lượng tính toán và thông số đầu vào cần thiết sẽ tiêu tốn rất nhiều gas. Các nhóm sớm áp dụng Plasma gặp khó khăn trong việc chứng minh gian lận phức tạp như vậy, nên hầu hết họ áp dụng mô hình UTXO. Cuối cùng, chứng minh gian lận dựa trên UTXO đơn giản và dễ triển khai. (Fuel, giải pháp rollup đầu tiên cung cấp chứng minh gian lận, dựa trên UTXO)


Lưu trữ dữ liệu và trò chơi thoát ra Tất nhiên, các tình huống trên nơi chứng minh gian lận có thể hiệu quả chỉ được xác định khi DA/ việc phát hành dữ liệu là hiệu quả. Nếu máy phát xảy ra việc giữ lại dữ liệu và không công bố các khối hoàn chỉnh ngoại chuỗi, nút Plasma sẽ không thể xác nhận xem tiêu đề khối trên Lớp 1 có hợp lệ hay không, và tất nhiên là nó cũng sẽ không thể phát hành chứng minh gian lận một cách trơn tru.

Tại thời điểm này, trình sắp xếp chuỗi có thể đánh cắp tài sản của người dùng, Ví dụ: chuyển riêng tất cả các đồng tiền trong tài khoản A sang tài khoản B, sau đó chuyển tiền từ tài khoản B sang tài khoản C và cuối cùng bắt đầu rút tiền dưới tên C. Tài khoản B và C thuộc sở hữu của chính bộ sắp xếp. Ngay cả khi việc chuyển giao B->C được công khai, nó sẽ không gây ra bất kỳ thiệt hại nào; Nhưng người sắp xếp có thể giữ lại dữ liệu của việc chuyển nhượng không hợp lệ A->B và mọi người không thể chứng minh rằng có vấn đề với nguồn tài sản của B và C. (Để chứng minh rằng nguồn tài sản của B là cá, cần phải chỉ ra rằng chữ ký số của "một Txn nào đó được chuyển sang B" là không chính xác). Giải pháp Plasma dựa trên UTXO có các biện pháp nhắm mục tiêu. Ví dụ: khi bất kỳ ai bắt đầu rút tiền, họ phải gửi tất cả các nguồn lịch sử của tài sản. Tất nhiên, sẽ có nhiều biện pháp cải thiện hơn sau này. Nhưng nếu đó là dung dịch Plasma tương thích EVM, nó sẽ xuất hiện yếu ở khu vực này. Bởi vì nếu Txn liên quan đến hợp đồng có liên quan, việc xác minh quá trình chuyển đổi trạng thái trên chuỗi sẽ phải chịu chi phí rất lớn,Do đó, Plasma, hỗ trợ các mô hình địa chỉ tài khoản và hợp đồng thông minh, không thể dễ dàng thực hiện sơ đồ xác minh tính hợp lệ của việc rút tiền. Hơn nữa, ngoài chủ đề trên, Cho dù đó là Plasma dựa trên UTXO hay mô hình địa chỉ tài khoản, một khi việc giữ lại dữ liệu xảy ra, về cơ bản nó sẽ khiến mọi người hoảng sợ vì bạn không biết trình tự đã thực hiện những giao dịch nào. Các nút plasma sẽ tìm thấy điều gì đó không ổn, nhưng họ sẽ không thể đưa ra bằng chứng gian lận vì bộ giải trình tự Plasma chưa phát hành dữ liệu cần thiết cho bằng chứng gian lận. Tại thời điểm này, mọi người chỉ có thể nhìn thấy tiêu đề khối tương ứng, nhưng họ không biết những gì trong khối hoặc những gì đã trở thành tài sản tài khoản của họ. Mọi người sẽ cùng nhau bắt đầu một tuyên bố rút tiền và sử dụng tiêu đề khối tương ứng. Merkle Proof cố gắng rút tiền,Kích hoạt một kịch bản cực đoan gọi là "Trò chơi thoát", tình huống này sẽ dẫn đến một vụ "giẫm đạp", gây tắc nghẽn nghiêm trọng ở Lớp 1, và vẫn sẽ khiến tài sản của một số người bị hư hỏng. (Những người chưa nhận được thông báo nút trung thực hoặc không kiểm tra Twitter sẽ không biết rằng trình sắp xếp thứ tự đang ăn cắp tiền xu).


vì vậy, Plasma là một giải pháp mở rộng Lớp 2 không đáng tin cậy. Khi một cuộc tấn công giữ lại dữ liệu xảy ra, "Trò chơi thoát" sẽ được kích hoạt, điều này có thể dễ dàng khiến người dùng bị tổn thất. Đây là một lý do chính cho sự từ bỏ của nó. Tại sao Plasma gặp khó khăn trong việc hỗ trợ các hợp đồng thông minhSau khi nói về Trò chơi thoát và các vấn đề lưu giữ dữ liệu, hãy xem tại sao Plasma gặp khó khăn trong việc hỗ trợ các hợp đồng thông minh. Có hai lý do chính: Thứ nhất, nếu đó là tài sản của hợp đồng Defi, ai nên rút nó về Lớp 1? Bởi vì điều này về cơ bản là di chuyển trạng thái hợp đồng từ Layer2 sang Layer1.Giả sử ai đó gửi 100 ETH vào nhóm DEX LP, và sau đó trình sắp xếp Plasma làm điều gì đó xấu xa và mọi người muốn rút tiền khẩn cấp. Tại thời điểm này, 100 ETH của người dùng vẫn được kiểm soát bởi hợp đồng DEX. Ai nên sở hữu những tài sản này tại thời điểm này? Được đề cập trên Layer1? Cách tốt nhất dường như là cho phép người dùng mua lại tài sản từ DEX trước, sau đó cho phép người dùng tự chuyển tiền sang L1. Nhưng vấn đề là trình phân loại Plasma đã làm điều xấu xa và có thể từ chối yêu cầu của người dùng bất cứ lúc nào. Vì vậy, điều gì sẽ xảy ra nếu chúng tôi thiết lập Chủ sở hữu cho hợp đồng DEX trước và cho phép anh ta nâng tài sản hợp đồng lên L1 trong trường hợp khẩn cấp? Rõ ràng điều này sẽ mang lại cho chủ sở hữu hợp đồng quyền sở hữu tài sản công. Anh ta có thể nâng những tài sản này lên L1 và bỏ trốn bất cứ lúc nào. Điều này không phải là khủng khiếp sao? Rõ ràng,Làm thế nào để đối phó với những "tài sản công cộng" này được kiểm soát bởi các hợp đồng Defi là một bất ngờ lớn. Điều này thực sự liên quan đến vấn đề phân phối quyền lực công cộng. Những tên trộm trước đó đã nói trong một cuộc phỏng vấn“Việc tạo ra những thứ mới trên các chuỗi công cộng có hiệu suất cao là khó khăn, hợp đồng thông minh liên quan đến phân phối quyền lực”Điều này đã được đề cập trong bài viết.


Thứ hai, nếu hợp đồng không được phép di chuyển sẽ bị thiệt hại rất lớn; Nếu hợp đồng được phép di chuyển trạng thái của nó sang Lớp 1, sẽ có một lần rút tiền kép rất khó giải quyết trong bằng chứng gian lận Plasma:Ví dụ: chúng tôiGiả sử rằng Plasma áp dụng mô hình địa chỉ tài khoản của Ethereum và hỗ trợ các hợp đồng thông minh., có một máy trộn, hiện được gửi bằng 100 ETH và chủ sở hữu của máy trộn do Bob kiểm soát; giả sử rằng Bob rút 50 ETH từ máy trộn trong khối thứ 100. Sau đó, Bob bắt đầu một tuyên bố rút tiền và chuyển 50 ETH sang Lớp 1; sau đó, Bob sử dụng ảnh chụp nhanh trạng thái hợp đồng trong quá khứ (chẳng hạn như khối thứ 70) để di chuyển trạng thái trong quá khứ của máy trộn sang Lớp 1, sẽ 100 ETH mà máy trộn "từng sở hữu" cũng được chuyển sang Lớp 1; Rõ ràng, đây là một "rút tiền kép" điển hình, nghĩa là chi tiêu gấp đôi.150 ETH đã được Bob đề cập đến Lớp 1, nhưng người dùng mạng Lớp 2 chỉ trả 100 ETH cho máy trộn / Bob và 50 ETH đã bị rút ra khỏi không khí. Điều này có thể dễ dàng làm cạn kiệt trữ lượng dự trữ của Plasma。 Về lý thuyết, người ta có thể bắt đầu một bằng chứng gian lận để chứng minh rằng trạng thái của hợp đồng máy trộn đã thay đổi sau khối thứ 70. Nhưng nếu sau khối số 70, tất cả Txn tương tác với hợp đồng trộn không thay đổi trạng thái hợp đồng, ngoại trừ giao dịch mà Bob đã lấy đi 50 ETH; nếu bạn muốn đưa ra bằng chứng, hãy chỉ ra rằng hợp đồng máy trộn nằm trong Nếu có sự thay đổi sau khối số 70, tất cả Txn được đề cập ở trên phải được chạy trên chuỗi Ethereum và cuối cùng hợp đồng Plasma có thể được xác nhận. Tình trạng của hợp đồng máy trộn đã thực sự thay đổi (lý do tại sao nó phức tạp như vậy là vì được xác định bởi cấu trúc của chính Plasma). Nếu số lượng Txn trong lô này cực kỳ lớn, bằng chứng gian lận hoàn toàn không thể được công bố trên Layer1. (Nó sẽ vượt quá giới hạn gas của một khối Ethereum).


https://ethresear.ch/t/why-smart-contracts-are-not-feasible-on-plasma/2598Theoretically, trong kịch bản chi tiêu gấp đôi ở trên, có vẻ như chỉ có ảnh chụp nhanh trạng thái hiện tại của máy trộn được gửi (thực chất là bằng chứng Merkle tương ứng với StateRoot), nhưng trên thực tế, do Plasma không công bố dữ liệu giao dịch trên chuỗi, hợp đồng không thể xác định xem bạn có hợp lệ hay không. Điều này là do bản thân trình sắp xếp chuỗi có thể bắt đầu giữ lại dữ liệu, gửi ảnh chụp nhanh trạng thái không hợp lệ và buộc tội ác ý bất kỳ người rút tiền nào. Ví dụ: khi bạn tuyên bố rằng bạn có 50 ETH trong tài khoản của mình và bắt đầu rút tiền, trình sắp xếp chuỗi có thể xóa riêng tài khoản của bạn về 0, sau đó bắt đầu giữ lại dữ liệu, gửi StateRoot không hợp lệ đến chuỗi và gửi ảnh chụp nhanh trạng thái tương ứng, buộc tội sai bạn hết tiền trong tài khoản của bạn. Tại thời điểm này, chúng tôi không thể chứng minh rằng StateRoot và ảnh chụp nhanh trạng thái do trình sắp xếp gửi là không hợp lệ, vì nó đã bắt đầu giữ lại dữ liệu và bạn không thể có đủ dữ liệu cần thiết để chống gian lận. Để ngăn chặn điều này, khi một nút Plasma trình bày ảnh chụp nhanh trạng thái để chứng minh rằng ai đó đã chi tiêu gấp đôi, nó cũng sẽ phát lại các bản ghi giao dịch trong khoảng thời gian này. Điều này có thể ngăn trình sắp xếp chuỗi sử dụng khấu lưu dữ liệu để ngăn người khác rút tiền. Trong Rollup, nếu bạn gặp phải việc rút tiền kép nêu trên, về mặt lý thuyết không cần phải phát lại các giao dịch lịch sử, bởi vì Rollup không có vấn đề giữ lại dữ liệu và sẽ "buộc" trình sắp xếp chuỗi xuất bản dữ liệu DA trên chuỗi. Nếu trình sắp xếp chuỗi Rollup gửi ảnh chụp nhanh trạng thái StateRoot không hợp lệ, nó sẽ không xác minh được hợp đồng (ZK Rollup) hoặc sẽ sớm bị thách thức (OP Rollup). Trên thực tế, ngoài ví dụ về máy trộn tiền xu được đề cập ở trên, các kịch bản như hợp đồng đa ký cũng có thể dẫn đến việc rút tiền hai lần trên mạng Plasma. Bằng chứng gian lận rất kém hiệu quả trong việc xử lý tình huống này. Tình trạng này được phân tích trong ETH Research. Tóm lại, Vì giải pháp Plasma không có lợi cho các hợp đồng thông minh và về cơ bản không hỗ trợ di chuyển trạng thái hợp đồng sang Lớp 1, Plasma chính thống phải sử dụng UTXO hoặc các cơ chế tương tự. Bởi vì UTXO không có vấn đề xung đột quyền sở hữu tài sản và có thể hỗ trợ chống gian lận rất tốt (nó có kích thước nhỏ hơn nhiều), giá là nó có một kịch bản ứng dụng duy nhất và về cơ bản chỉ có thể hỗ trợ chuyển khoản hoặc trao đổi sổ lệnh. Ngoài ra, vì bản thân bằng chứng gian lận phụ thuộc rất nhiều vào dữ liệu DA, nếu lớp DA không đáng tin cậy, sẽ khó triển khai một hệ thống chống gian lận hiệu quả. Tuy nhiên, cách xử lý vấn đề DA của Plasma quá thô thiển và không thể giải quyết vấn đề tấn công giữ lại dữ liệu. Với sự trỗi dậy của Rollup, Plasma dần mờ nhạt khỏi giai đoạn lịch sử.

Tuyên bố từ chối trách nhiệm:

  1. Bài viết này được sao chép từ [ 微信公众号:极客 Web3]. Tất cả bản quyền thuộc về tác giả gốc [Faust]. Nếu có ý kiến ​​phản đối về việc tái bản này, vui lòng liên hệ với Học cửađội ngũ, và họ sẽ xử lý nhanh chóng.
  2. Không chịu trách nhiệm: Các quan điểm và ý kiến được thể hiện trong bài viết này chỉ thuộc về tác giả và không cấu thành bất kỳ lời khuyên đầu tư nào.
  3. Các bản dịch của bài viết sang các ngôn ngữ khác được thực hiện bởi đội ngũ Gate Learn. Trừ khi được nêu, việc sao chép, phân phối hoặc sao chép bài viết đã dịch là không được phép.
Empieza ahora
¡Registrarse y recibe un bono de
$100
!