Một bài viết để hiểu "chuỗi bên"
Lưu ý của biên tập viên: Bài viết này đến từNhững người đam mê Ethereum (ID: ethfans)Lưu ý của biên tập viên: Bài viết này đến từ
Những người đam mê Ethereum (ID: ethfans)
, Tác giả: barryWhiteHat, bản dịch: A Jian, được ủy quyền in lại bởi Odaily.
giới thiệu
Tuyên bố miễn trừ trách nhiệm: Các ý kiến bày tỏ ở đây là của riêng tôi và không nhất thiết đại diện cho quan điểm của chủ lao động của tôi hoặc bất kỳ ai khác.
Cảm ơn Albert Ni đã đọc và bình luận.
giới thiệu
Tầm quan trọng của Lớp 2 đối với Ethereum đang tăng lên từng ngày và có sự đồng thuận.
Tuy nhiên, "Layer-2" là một nhãn không chính xác. Khi một số người nói về "Lớp 2", họ chỉ có nghĩa là "những thứ không có trên Ethereum Layer-1". Nhưng trên thực tế, cách giải pháp tương tác với Ethereum Layer-1 là rất quan trọng. Các đặc điểm của các giải pháp khác nhau dưới cùng một tên "Lớp-2" có thể rất khác nhau. Có thể lập luận rằng "Lớp-2" nên đề cập đến thứ gì đó có thuộc tính cụ thể (ví dụ: tất cả chúng ta có thể đồng ý rằng thứ gì đó được triển khai trên AWS không phải là Lớp 2, nhưng có một số dự án, với các đảm bảo bảo mật tương tự, cũng là được coi là Lớp-2). Tuy nhiên, đây không phải là chủ đề thảo luận của tôi ở đây.
Những gì tôi sẽ thảo luận ở đây là các thuộc tính của sidechains.
Ý nghĩa cơ bản của chuỗi bên là: một nhóm người xác minh gửi trạng thái mới nhất của chuỗi tới một hợp đồng thông minh (trên chuỗi chính) và do đó thúc đẩy một loại hệ thống. Các điểm kiểm tra (cập nhật) này có thể được sử dụng bởi hợp đồng bắc cầu để hỗ trợ tiền gửi và rút tiền của người dùng. Nói chung, cũng sẽ có một quy trình bầu chọn người lãnh đạo giữa nhóm người xác minh này để xác định ai sẽ tạo khối chuỗi bên tại một thời điểm nhất định; chẳng hạn như thuật toán chứng minh thẩm quyền PoA và thuật toán PoS. (Ghi chú của người dịch: Từ định nghĩa này, có thể thấy rằng những gì tác giả đang thảo luận là chuỗi bên không có cơ chế đảm bảo tính hợp lệ được thiết kế trên chuỗi chính; theo định nghĩa rộng rãi hiện tại về "chuỗi bên", tác giả đang thảo luận về chuỗi bên tổng quát. Tuy nhiên, "chuỗi bên" ban đầu, tức là khái niệm hẹp về chuỗi bên, hoàn toàn giống với những gì tác giả đưa ra ở đây. Nó phụ thuộc vào việc bạn có sẵn sàng sử dụng "chuỗi bên" hay không " như một danh từ riêng, hoặc bạn sẵn sàng sử dụng nghĩa bắt nguồn của nó.)
Sidechains cũng đóng một vai trò quan trọng trong hệ sinh thái Ethereum. Chúng là giải pháp khắc phục tạm thời cho khả năng mở rộng và khả năng sử dụng cho đến khi các nhà nghiên cứu phát triển thứ gì đó tốt hơn. Các sản phẩm như xDai cũng chỉ ra sự cần thiết của trải nghiệm người dùng tốt hơn và lan truyền nó.
Tuy nhiên, sidechains không có tính bảo mật mà cộng đồng Ethereum rộng lớn hơn mong đợi. Điều này không có nghĩa là không bao giờ được sử dụng sidechains. Nếu mọi người được cung cấp thông tin đầy đủ, nhưng sẵn sàng sử dụng nó, thì đó là lựa chọn của họ và điều đó có thể đáng giá. Nhưng nếu người dân không hiểu biết thì rất nguy hiểm. Bài viết này nhằm cung cấp một số thông tin. Nếu mọi người đã biết đầy đủ về các tính năng này, tôi sẽ không hại gì khi viết một bài báo khác. Nhưng nếu bài viết này có thể giúp mọi người nhận ra những quan niệm sai lầm của họ, thì đó sẽ là một điều tốt.
Vậy những tính năng bảo mật nào bị thiếu trong sidechains? Hầu như tất cả các sidechains không thể cung cấp:
kháng kiểm duyệt
Tính chất dứt khoátĐảm bảo quyền sở hữu quỹ
Nếu bạn muốn tất cả các tính năng này, thì bạn có thể phải tìm một giải pháp khác để thay thế chuỗi bên. Tất nhiên, cũng có thể cải thiện hiệu suất của các giải pháp cụ thể trong các khía cạnh này trong khi vẫn duy trì kiến trúc cốt lõi của sidechain.
Tôi nghĩ rằng một cuộc thảo luận cởi mở là tốt cho tất cả mọi người.
kháng kiểm duyệt
Rõ ràng, sidechains ít bị kiểm duyệt hơn so với blockchains (được thiết kế tốt). Mặt khác, không cần một chuỗi khối nào cả. Nhưng ở đây chúng ta đào sâu hơn một chút.
Nếu có N người xác minh trong một chuỗi bên nhất định và bất kỳ giao dịch nào cũng có thể được xem xét miễn là M người xác minh đồng ý nhất trí, thì chỉ (NM) người xác minh cần hợp nhất để xem xét một khối. Điều này dẫn đến một vấn đề nan giải thú vị: làm cho việc kiểm duyệt các giao dịch trở nên khó khăn hơn sẽ khiến việc kiểm duyệt các khối trở nên dễ dàng hơn. Bởi vì kiểm duyệt giao dịch và kiểm duyệt khối là những điều xấu, nên về cơ bản, sidechains không có khả năng đạt được khả năng chống kiểm duyệt mạnh mẽ. , hệ thống không thể tạo khối, do đó, một cách tự nhiên, chỉ người xác minh M mới được yêu cầu xem xét giao dịch bằng cách từ chối tạo khối; tuy nhiên, điều này cũng có nghĩa là miễn là người xác minh NM đồng ý, họ có thể tạo các khối tùy ý, đó là một khối chứa nội dung khác chứ không phải một khối nhất định hoặc thậm chí chơi nhóm biến mất).
Mối quan tâm này vẫn tồn tại khi sử dụng PoS và thậm chí việc tính toán trọng số khối theo cổ phần còn khiến vấn đề trở nên tồi tệ hơn vì số lượng thực thể độc lập đạt đến ngưỡng có thể thấp hơn (ngay cả trong trường hợp tốt nhất với toàn bộ cổ phần được phân bổ đồng đều, cũng giống như khi không có PoS , nó sẽ không tốt hơn).
Đảm bảo tính sẵn sàng của dữ liệu
Giả sử rằng chỉ những người xác thực (NM) mới có thể tạo một khối. Giả sử thêm rằng tất cả các trình xác thực khác cần phải có toàn bộ dữ liệu trạng thái để có thể xác thực trạng thái mới. Sau đó, miễn là trình xác thực (NM) độc hại, chúng có thể:
tạo một khối mới
Từ chối chia sẻ dữ liệu khối với người xác thực trung thực
Về cơ bản loại bỏ N-(NM) = M trình xác thực trung thực khỏi quy trình đồng thuận, do đó kiểm soát hoàn toàn hệ thống
Khả năng điều này xảy ra như thế nào? Rõ ràng là cần nhiều chi tiết cụ thể hơn để đưa ra kết luận, nhưng chúng ta có thể bắt đầu suy nghĩ như sau: Đâu là động cơ để người xác nhận hợp lý chia sẻ dữ liệu với người khác? Trong các cơ chế chứng minh thẩm quyền truyền thống, việc không làm như vậy có thể gây tổn hại về mặt uy tín. Tuy nhiên, cơ chế danh tiếng cũng khó hoạt động, bởi vì thực tế không có cách nào để chứng minh rằng dữ liệu được giữ lại trừ khi có người khác đưa tất cả dữ liệu vào chuỗi. Nghĩ rằng giải pháp này nghe có vẻ lạc quan? Đúng vậy, chính là nó. Điều này cũng có nghĩa là các chuỗi phụ có bảo mật tốt hơn về cơ bản sẽ "suy thoái" thành các bản tổng hợp lạc quan.
Trong hầu hết các chương trình sidechain, người xác thực nhận được một số hình thức thanh toán cho công việc của họ. Đối với những người xác nhận trung thực, phần thưởng được chia sẻ giữa N người xác thực. Đối với những người xác thực không trung thực, cùng một lượng phần thưởng sẽ chỉ được chia sẻ giữa những người xác nhận N-(NM)=M, vì vậy những người xác nhận có mọi động cơ để không chia sẻ trạng thái cập nhật của họ với những người khác (Ghi chú của người dịch: Tính toán ở đây bị nghi ngờ là sai).
state1 => state2 => state3
Ở đây, có một khó khăn cơ bản: khó phân biệt các cuộc tấn công dữ liệu sẵn có. Rất khó để một người xác thực trung thực biết liệu ai đó đã tiến hành một cuộc tấn công hay liệu họ có vấn đề về đồng bộ hóa hay không.
Tính chất dứt khoát
Giả sử luồng chuyển đổi trạng thái như sau:
state1 => state2 => state1
Và mỗi chuyển đổi yêu cầu một số giao dịch có hiệu lực trên trạng thái hiện có để thay đổi trạng thái. Cuối cùng có nghĩa là một khi giao dịch có hiệu lực, nó không thể bị thu hồi.
Điểm kiểm tra của chuỗi bên được gửi đến chuỗi khối Ethereum sau khi có sự đồng thuận của những người xác minh chuỗi bên và được củng cố theo cơ chế đồng thuận của Ethereum. Do đó, một số người có thể nghĩ rằng tính hữu hạn của chuỗi bên tương đương với tính hữu hạn của Ethereum; để khôi phục khối của chuỗi bên, bạn cũng cần khôi phục khối Ethereum. Nhưng điều này là sai.
Bởi vì tính hữu hạn có nghĩa là giao dịch không thể được khôi phục, điều đó không có nghĩa là trạng thái cũ không thể được thay thế bằng trạng thái mới. Miễn là người xác thực (NM) đồng ý, họ có thể thực hiện các chuyển đổi trạng thái sau:
(Sử dụng trạng thái 1 để thay thế trạng thái 3 tương đương với việc khôi phục trạng thái 2, trạng thái này đã được hoàn thiện theo mặc định, nhưng điều này không yêu cầu chuỗi chính Ethereum phải khôi phục.)
Đảm bảo quyền sở hữu quỹ Sidechain
Giả sử trạng thái hiện tại1={Alice:1000, Bob:0}. Tức là Alice có 1000 nhân dân tệ, nhưng Bob không có gì. Vậy Bob có thể làm gì nếu anh ta độc hại và kiểm soát (hoặc có thể làm hỏng một cách hiệu quả) phần lớn các trình xác thực POA?
Anh ta có thể thực hiện chuyển trạng thái, trạng thái1 => trạng thái2 và trạng thái2={Alice:0,Bob:1000}. Tức là ăn cắp tất cả số tiền của Alice và đưa cho Bob.
Do đó, việc bảo vệ sidechain bị giảm xuống do không có trình xác thực (NM) nào đồng ý thực hiện quá trình chuyển đổi trạng thái bất hợp pháp như vậy.
Điều này thì ai cũng biết rồi (ít nhất là tôi tin như vậy), nhưng tôi nghĩ cần phải nhắc nhở mọi người. Bạn chỉ có thể tin tưởng vào một sidechain nếu bạn tin rằng phần lớn những người xác thực sẽ không làm điều như vậy. Hầu hết các phân tích bảo mật của sidechains nên tập trung vào điều này.
Vẫn có thể có một số người mà bạn có thể tin tưởng ở một mức độ nào đó. Cũng giống như nhiều người trong chúng ta tin tưởng (vì nhiều lý do) các nhà cung cấp dịch vụ tập trung. Đôi khi sự hy sinh là xứng đáng. Điều quan trọng là bạn hiểu rằng đây là một sự đánh đổi.
Các vấn đề với việc sử dụng các quy trình quản trị như một biện pháp phòng vệ
Có câu nói rằng: “Chúng ta có thể sử dụng các thủ tục quản trị để giải quyết tất cả các vấn đề nêu trên”. Cách tiếp cận này là thiếu sót vì toàn bộ hệ thống thoái hóa thành một quy trình quản trị. Một lý do khiến tuyên bố này khiến tôi đặc biệt lo lắng là nó ngụ ý rằng các thuộc tính khác của sidechains là rạp hát (khi nào và tại sao chúng ta cần các thuộc tính đó?). Ví dụ: nếu quy trình quản trị là phương tiện cuối cùng để ngăn chặn các vấn đề trên, điều đó có nghĩa là cả PoS và PoA đều không quan trọng. Quá trình quản trị của hệ thống là PoA thực sự. Hơn nữa, rõ ràng là cuộc tấn công tương tự có thể được thực hiện trên quy trình quản trị của hệ thống.
Ngoài một số thuộc tính bổ sung của chuỗi bên, chẳng hạn như thời gian tạo khối nhanh hơn (và do đó mang lại trải nghiệm người dùng tốt hơn), thực sự có những trường hợp các tính năng chuỗi bên có thể tỏa sáng. Ví dụ:
phần kết
Bạn chỉ muốn trình xác thực NM có thể thực hiện các chuyển đổi trạng thái tùy ý. Một ví dụ sẽ là một ứng dụng doanh nghiệp muốn có mức độ kiểm soát cao.
Trường hợp M=0 và N trình xác minh có thể thực hiện bất kỳ chuyển đổi trạng thái nào. Ví dụ, một trò chơi có bốn bên tham gia. Nhưng vấn đề là 1 trình xác thực có thể tắt chuỗi.
phần kết
Tại một thời điểm, sidechains là giải pháp duy nhất có sẵn trong khi vẫn duy trì một mức độ nhất định về khả năng kết hợp và khả năng tương tác với Ethereum. Giờ đây, khi một số giải pháp mở rộng Lớp 2 khác đã trưởng thành, đã đến lúc xem xét cách các chuỗi bên có thể tích hợp tốt hơn với các giải pháp khác.
Có một số thuộc tính rất phù hợp để tích hợp sidechains:
Thực hiện di chuyển quy mô lớn mà không mất phí và đảm bảo rằng người dùng sẽ không bị mắc kẹt vì phí và không thể thoát.
Thay thế cuộc bầu cử lãnh đạo bằng một thứ khác có khả năng chống kiểm duyệt cao hơn (PoS có thể là hướng sai. Xem bài đăng này)


