Đặc biệt cảm ơn Dankrad Feist và Aditya Asgaonkar đã đánh giá Sharding là tương lai của khả năng mở rộng Ethereum và nó sẽ là chìa khóa để giúp hệ sinh thái hỗ trợ hàng nghìn giao dịch mỗi giây và cho phép phần lớn thế giới sử dụng nền tảng này thường xuyên với chi phí hợp lý. Tuy nhiên, nó cũng là một trong những khái niệm bị hiểu nhầm nhiều hơn trong hệ sinh thái Ethereum và rộng hơn là trong hệ sinh thái blockchain. Nó đề cập đến một tập hợp các ý tưởng rất cụ thể với các thuộc tính rất cụ thể, nhưng nó thường được kết hợp với các kỹ thuật có các đặc tính bảo mật rất khác nhau và thường yếu hơn nhiều. Mục đích của bài đăng này là giải thích chính xác những thuộc tính cụ thể mà sharding cung cấp, nó khác với các công nghệ khác có tính năng sharding như thế nào và hệ thống sharded phải hy sinh những gì để đạt được những đặc tính này. không Bộ ba vấn đề về khả năng mở rộng Cách tốt nhất để mô tả sharding bắt đầu từ tuyên bố vấn đề đã định hình và truyền cảm hứng cho giải pháp: giải về khả năng mở rộng. Bộ ba nan Bộ ba về khả năng mở rộng nói rằng có ba thuộc tính mà một blockchain cố gắng có, và . Ba thuộc tính là: nếu bạn tuân theo các kỹ thuật "đơn giản", bạn chỉ có thể nhận được hai trong ba đặc tính đó : chuỗi có thể xử lý nhiều giao dịch hơn so với một nút thông thường duy nhất (hãy nghĩ: một máy tính xách tay tiêu dùng) có thể xác minh. Khả năng mở rộng : chuỗi có thể chạy mà không có bất kỳ sự phụ thuộc tin cậy nào vào một nhóm nhỏ các tác nhân tập trung lớn. Điều này thường được hiểu là không nên có bất kỳ sự tin tưởng nào (hoặc thậm chí là giả định đa số trung thực) đối với một tập hợp các nút mà bạn không thể tham gia chỉ với một máy tính xách tay tiêu dùng. Phi tập trung : chuỗi có thể chống lại một tỷ lệ phần trăm lớn các nút tham gia đang cố gắng tấn công nó (lý tưởng là 50%; bất cứ điều gì trên 25% là ổn, 5% chắc chắn là ổn). Bảo mật không Bây giờ chúng ta có thể xem xét ba loại "giải pháp dễ dàng" chỉ nhận được hai trong ba: - bao gồm Bitcoin, tiền PoS / sharding Ethereum, Litecoin và các chuỗi tương tự khác. Chúng dựa vào việc mọi người tham gia chạy một nút đầy đủ xác minh mọi giao dịch và do đó chúng có khả năng phân quyền và bảo mật, nhưng không có khả năng mở rộng. Các blockchain truyền thống - bao gồm họ DPoS và nhiều chuỗi khác. Chúng dựa vào một số lượng nhỏ các nút (thường là 10-100) duy trì sự đồng thuận giữa chúng với nhau, với người dùng phải tin tưởng phần lớn các nút này. Điều này có thể mở rộng và an toàn (sử dụng các định nghĩa ở trên), nhưng nó không được phân cấp. Các chuỗi TPS cao - điều này đề cập đến khái niệm chung về "mở rộng quy mô" bằng cách để các ứng dụng khác nhau hoạt động trên các chuỗi khác nhau và sử dụng các giao thức liên lạc xuyên chuỗi để trao đổi giữa chúng. Điều này là phi tập trung và có thể mở rộng, nhưng nó không an toàn, bởi vì kẻ tấn công chỉ cần có được đa số nút đồng thuận trong một trong nhiều chuỗi (thường là <1% toàn bộ hệ sinh thái) để phá vỡ chuỗi đó và có thể gây ra các hiệu ứng gợn sóng gây ra thiệt hại lớn cho các ứng dụng trong chuỗi khác. Hệ sinh thái đa chuỗi Một chuỗi khối phân mảnh là: Sharding là một kỹ thuật giúp bạn có được cả ba. : nó có thể xử lý nhiều giao dịch hơn nhiều so với một nút duy nhất Có thể mở rộng : nó có thể tồn tại hoàn toàn trên máy tính xách tay của người tiêu dùng, không phụ thuộc vào bất kỳ "supernodes" nào Phi tập trung : kẻ tấn công không thể nhắm mục tiêu vào một phần nhỏ của hệ thống với số lượng tài nguyên nhỏ; họ chỉ có thể cố gắng thống trị và tấn công toàn bộ An toàn Phần còn lại của bài đăng sẽ mô tả cách các blockchain phân đoạn quản lý để thực hiện điều này. Làm sắc nét thông qua lấy mẫu ngẫu nhiên Phiên bản dễ hiểu nhất của sharding là sharding thông qua lấy mẫu ngẫu nhiên. Sharding thông qua lấy mẫu ngẫu nhiên có đặc tính tin cậy yếu hơn các hình thức sharding mà chúng tôi đang xây dựng trong hệ sinh thái Ethereum, nhưng nó sử dụng công nghệ đơn giản hơn. Ý tưởng cốt lõi như sau. Giả sử rằng bạn có bằng chứng về chuỗi cổ phần với số lượng lớn (ví dụ: 10000) trình xác thực và bạn có một số lượng lớn (ví dụ: 100) khối cần được xác minh. Không có máy tính nào đủ mạnh để xác thực các khối này trước khi tập hợp khối tiếp theo xuất hiện. tất cả Do đó, những gì chúng tôi làm là chúng tôi . Chúng tôi xáo trộn ngẫu nhiên danh sách trình xác thực và chúng tôi chỉ định 100 trình xác thực đầu tiên trong danh sách được xáo trộn để xác minh khối đầu tiên, 100 trình xác thực thứ hai trong danh sách được xáo trộn để xác minh khối thứ hai, v.v. Một nhóm trình xác thực được chọn ngẫu nhiên được chỉ định cho xác minh một khối (hoặc thực hiện một số nhiệm vụ khác) được gọi là một . chia nhỏ công việc xác minh một cách ngẫu nhiên ủy ban Khi trình xác thực xác minh một khối, họ sẽ xuất bản một chữ ký chứng thực rằng họ đã làm như vậy. Những người khác, thay vì xác minh toàn bộ 100 khối, giờ chỉ xác minh 10000 chữ ký - một khối lượng công việc nhỏ hơn nhiều, đặc biệt là với . Thay vì mọi khối được phát thông qua cùng một mạng P2P, mỗi khối được phát trên một mạng con khác nhau và các nút chỉ cần tham gia các mạng con tương ứng với các khối mà chúng chịu trách nhiệm (hoặc quan tâm đến các lý do khác). tập hợp chữ ký BLS Hãy xem xét điều gì sẽ xảy ra nếu sức mạnh tính toán của mỗi nút tăng gấp 2 lần. Bởi vì mỗi nút hiện có thể xác thực an toàn thêm 2 lần chữ ký, bạn có thể cắt giảm kích thước tiền gửi đặt cược tối thiểu để hỗ trợ thêm 2 lần người xác thực và do đó bạn có thể tạo 200 ủy ban thay vì 100. Do đó, bạn có thể xác minh 200 khối trên mỗi vị trí thay vì 100. Hơn nữa, có thể lớn hơn gấp đôi. Do đó, bạn có thêm 2 lần khối có kích thước gấp 2 lần hoặc gấp 4 lần tổng công suất chuỗi. mỗi khối riêng lẻ Chúng ta có thể giới thiệu một số biệt ngữ toán học để nói về những gì đang xảy ra. Sử dụng , chúng tôi sử dụng " " để chỉ khả năng tính toán của một nút duy nhất. Một blockchain truyền thống có thể xử lý các khối có kích thước . Một chuỗi phân đoạn như được mô tả ở trên có thể xử lý song song các khối (hãy nhớ rằng chi phí cho mỗi nút để xác minh gián tiếp từng khối là vì mỗi nút chỉ cần xác minh một số lượng chữ ký cố định), và mỗi khối có công suất , và do đó tổng công suất của chuỗi phân đoạn là . Đây là lý do tại sao chúng tôi gọi đây là loại hình sharding , và hiệu ứng này là lý do chính khiến chúng tôi nghĩ rằng về lâu dài, sharding là cách tốt nhất để mở rộng quy mô blockchain. ký hiệu Big O O (C) O (C) O (C) O (1) O (C) O (C2) bậc hai Câu hỏi thường gặp: Chia thành 100 Ủy ban Khác với Chia thành 100 Chuỗi riêng biệt như thế nào? Có hai điểm khác biệt chính: . Trong một hệ sinh thái đa chuỗi 100 chuỗi, kẻ tấn công chỉ cần ~ 0,5% tổng số cổ phần để tàn phá: chúng có thể tập trung vào 51% tấn công một chuỗi duy nhất. Trong một chuỗi khối phân mảnh, kẻ tấn công phải có gần ~ 30 - 40% cổ phần để làm điều tương tự (nói cách khác, chuỗi có ). Chắc chắn, họ có thể đợi cho đến khi gặp may mắn và nhận được 51% trong một mảnh một cách ngẫu nhiên mặc dù có ít hơn 50% tổng số tiền đặt cược, nhưng điều này trở nên khó khăn hơn theo cấp số nhân đối với những kẻ tấn công có ít hơn 51%. Nếu kẻ tấn công có ít hơn ~ 30% thì hầu như không thể. Việc lấy mẫu ngẫu nhiên ngăn kẻ tấn công tập trung sức mạnh của chúng vào một mảnh toàn bộ bảo mật chia sẻ Có một hợp đồng xã hội (và trong các phần sau của tài liệu này, chúng tôi mô tả một số cách để thực thi điều này về mặt công nghệ) rằng một chuỗi có thậm chí một khối xấu trong thậm chí một phân đoạn là không thể chấp nhận được và sẽ bị loại bỏ ngay khi nó được phát hiện. Điều này đảm bảo rằng từ quan điểm của một ứng dụng chuỗi, có sự bảo mật hoàn hảo: hợp đồng A có thể dựa vào hợp đồng B, bởi vì nếu hợp đồng B hoạt động sai do một cuộc tấn công vào chuỗi, toàn bộ lịch sử đó sẽ hoàn nguyên, bao gồm cả các giao dịch trong hợp đồng A hoạt động sai do trục trặc trong hợp đồng B. Khớp nối chặt chẽ: nếu ngay cả một phân đoạn bị một khối xấu, toàn bộ chuỗi sẽ khôi phục lại để tránh nó. trong Cả hai sự khác biệt này đảm bảo rằng sharding tạo ra một môi trường cho các ứng dụng duy trì các thuộc tính an toàn chính của môi trường chuỗi đơn, theo cách mà các hệ sinh thái đa nhóm về cơ bản không làm được. Cải thiện độ sắc nét với các mô hình bảo mật tốt hơn Một biện pháp phổ biến trong giới Bitcoin, và tôi hoàn toàn đồng ý, đó là các . Nếu có một cuộc tấn công 51% vào một blockchain như vậy, thì kẻ tấn công có thể làm việc khó chịu, như hoàn nguyên hoặc kiểm duyệt các giao dịch, nhưng chúng không thể chèn các giao dịch không hợp lệ. Và ngay cả khi họ thực hiện hoàn nguyên hoặc kiểm duyệt các giao dịch, người dùng chạy các nút thông thường có thể dễ dàng phát hiện ra hành vi đó, vì vậy nếu cộng đồng muốn phối hợp để giải quyết cuộc tấn công bằng một ngã ba làm mất đi sức mạnh của kẻ tấn công, họ có thể thực hiện một cách nhanh chóng. blockchain như Bitcoin (hoặc Ethereum) KHÔNG hoàn toàn dựa vào giả định đa số trung thực một số . Các chuỗi như vậy không và không thể có văn hóa người dùng thường xuyên chạy các nút, và do đó các nút chính và những người chơi trong hệ sinh thái có thể dễ dàng kết hợp với nhau hơn và áp đặt một sự thay đổi giao thức mà cộng đồng rất không thích. Thậm chí tệ hơn, các nút của người dùng theo mặc định sẽ chấp nhận nó. Sau một thời gian, người dùng sẽ nhận thấy, nhưng khi đó sự thay đổi giao thức bắt buộc sẽ là một lỗi lầm: để từ chối thay đổi và họ sẽ phải đưa ra quyết định đau đớn là hoàn nguyên giá trị của một ngày hoặc hơn hoạt động mà mọi người nghĩ đã được hoàn thành. Việc thiếu bảo mật bổ sung này là điểm yếu chính của các chuỗi TPS tập trung hơn gánh nặng điều phối sẽ thuộc về người dùng Lý tưởng nhất là chúng tôi muốn có một hình thức sharding tránh các giả định về tính hợp lệ của 51% tin cậy và duy trì sức mạnh bảo mật mà các blockchain truyền thống có được từ quá trình xác minh đầy đủ. Và đây chính xác là phần lớn nghiên cứu của chúng tôi trong vài năm qua. Xác minh tính toán có thể mở rộng Chúng ta có thể chia vấn đề xác thực khả năng mở rộng chống được 51% -attack thành hai trường hợp: : kiểm tra xem một số tính toán đã được thực hiện chính xác hay chưa, giả sử bạn có tất cả các đầu vào cho tính toán. Xác thực tính toán : kiểm tra xem bản thân các đầu vào cho phép tính có được lưu trữ ở dạng nào đó mà bạn có thể tải xuống nếu bạn thực sự cần; việc kiểm tra này nên được thực hiện thực sự tải xuống toàn bộ dữ liệu đầu vào (vì dữ liệu có thể quá lớn để tải xuống cho mọi khối). Xác thực tính khả dụng của dữ liệu mà không Xác thực một khối trong chuỗi khối liên quan đến cả tính toán và kiểm tra tính khả dụng của dữ liệu: bạn cần phải tin rằng các giao dịch trong khối là hợp lệ và băm gốc trạng thái mới được xác nhận trong khối là kết quả chính xác của việc thực hiện các giao dịch đó, nhưng bạn cũng cần được thuyết phục rằng đủ dữ liệu từ khối đã thực sự được xuất bản để người dùng tải xuống dữ liệu đó có thể tính toán trạng thái và tiếp tục xử lý chuỗi khối. Phần thứ hai này là một khái niệm rất tinh tế nhưng quan trọng được gọi là ; thêm về điều này sau. vấn đề về tính khả dụng của dữ liệu Tính toán xác thực theo quy mô tương đối dễ dàng; có hai nhóm kỹ thuật: và . bằng chứng gian lận ZK-SNARK Hai công nghệ có thể được mô tả đơn giản như sau: là một hệ thống chấp nhận kết quả tính toán, bạn yêu cầu ai đó có tiền đặt ký vào một thông báo có dạng "Tôi xác nhận rằng nếu bạn thực hiện tính toán với đầu vào , bạn sẽ nhận được đầu ra ". Bạn tin tưởng những tin nhắn này theo mặc định, nhưng bạn lại để ngỏ cơ hội cho người khác có tiền đặt cọc thực hiện một (tin nhắn có chữ ký nói rằng "Tôi không đồng ý, đầu ra là Z"). Chỉ khi có một thử thách, tất cả các nút mới chạy tính toán. Bất kỳ bên nào sai trong hai bên sẽ mất tiền đặt cọc và tất cả các phép tính phụ thuộc vào kết quả của phép tính đó sẽ được tính lại. Bằng chứng gian lận cọc C X Y thách thức là một dạng bằng chứng trực tiếp chứng minh tuyên bố "thực hiện tính toán trên đầu vào cho đầu ra ". Bằng chứng là "âm thanh" về mặt mật mã: nếu bằng , thì về mặt tính toán không thể tạo ra một bằng chứng hợp lệ. Bằng chứng cũng nhanh chóng được xác minh, ngay cả khi bản thân việc chạy mất rất nhiều thời gian. Xem để biết thêm chi tiết toán học về ZK-SNARKs. ZK-SNARK mật mã C X Y C(x) không Y C bài đăng này Tính toán dựa trên bằng chứng gian lận có thể mở rộng vì "trong trường hợp thông thường" bạn thay thế việc chạy một phép tính phức tạp bằng việc xác minh một chữ ký. Có một trường hợp ngoại lệ, trong đó bạn phải xác minh tính toán trên chuỗi vì có một thử thách, nhưng trường hợp đặc biệt là rất hiếm vì việc kích hoạt nó rất tốn kém (người yêu cầu ban đầu hoặc người thách thức mất một khoản tiền gửi lớn). ZK-SNARK đơn giản hơn về mặt khái niệm - chúng chỉ thay thế một phép tính bằng một xác minh bằng chứng rẻ hơn nhiều - nhưng toán học đằng sau cách chúng hoạt động phức tạp hơn đáng kể. Có một lớp hệ thống bán mở rộng xác minh tính toán theo quy mô, trong khi vẫn yêu cầu mọi nút xác minh tất cả dữ liệu. Điều này có thể được thực hiện khá hiệu quả bằng cách sử dụng một tập hợp các thủ thuật nén để thay thế hầu hết dữ liệu bằng tính toán. Đây là lĩnh vực của . chỉ cuộn lên Việc xác minh tính khả dụng của dữ liệu có thể mở rộng khó hơn Không thể sử dụng biện pháp chống gian lận để xác minh tính khả dụng của dữ liệu. Các bằng chứng gian lận để dựa trên thực tế là các đầu vào cho phép tính được xuất bản trực tuyến tại thời điểm yêu cầu ban đầu được gửi và vì vậy nếu ai đó thách thức, việc thực thi thử thách sẽ diễn ra trong cùng một "môi trường" mà lần thực thi ban đầu là đang xảy ra. Trong trường hợp kiểm tra tính khả dụng của dữ liệu, bạn không thể làm điều này, vì vấn đề chính xác là có quá nhiều dữ liệu cần kiểm tra để xuất bản nó trên chuỗi. Do đó, một kế hoạch chống gian lận để cung cấp dữ liệu gặp phải một vấn đề chính: ai đó có thể tuyên bố "dữ liệu X khả dụng" mà không xuất bản nó, đợi để được thử thách và chỉ xuất bản dữ liệu X và làm cho người thách thức xuất hiện với phần còn lại của mạng không chính xác. tính toán sau đó Điều này được mở rộng trong : tình thế tiến thoái lưỡng nan của ngư dân Ý tưởng cốt lõi là hai "thế giới", một trong đó V1 là một nhà xuất bản xấu xa và V2 là một kẻ thách thức trung thực và một nơi mà V1 là một nhà xuất bản trung thực và V2 là một kẻ thách thức ác, không thể phân biệt được với bất kỳ ai không cố gắng tải xuống phần dữ liệu cụ thể đó vào thời điểm đó. Và tất nhiên, trong một blockchain phi tập trung có thể mở rộng, mỗi nút riêng lẻ chỉ có thể hy vọng tải xuống một phần nhỏ dữ liệu, vì vậy chỉ một phần nhỏ các nút sẽ thấy bất kỳ điều gì về những gì đã xảy ra ngoại trừ thực tế là có bất đồng. Thực tế là không thể phân biệt được ai đúng ai sai khiến không thể có một kế hoạch chống gian lận hoạt động để cung cấp dữ liệu. Câu hỏi thường gặp: vậy nếu một số dữ liệu không có sẵn thì sao? Với ZK-SNARK, bạn có thể chắc chắn rằng mọi thứ đều , và như vậy vẫn chưa đủ? hợp lệ Thật không may, tính hợp lệ đơn thuần là không đủ để đảm bảo một blockchain chạy chính xác. Điều này là do nếu blockchain nhưng tất cả dữ liệu không , thì người dùng không có cách nào cập nhật dữ liệu mà họ cần để tạo bằng chứng rằng bất kỳ khối nào là hợp lệ. Kẻ tấn công tạo ra một khối hợp lệ nhưng không khả dụng nhưng sau đó biến mất có thể làm ngưng trệ chuỗi một cách hiệu quả. Ai đó cũng có thể giữ lại dữ liệu tài khoản của một người dùng cụ thể cho đến khi người dùng trả tiền chuộc, do đó, vấn đề không hoàn toàn là vấn đề tồn tại. hợp lệ có sẵn trong tương lai Có một số lập luận lý thuyết-thông tin mạnh mẽ cho rằng vấn đề này là cơ bản và không có thủ thuật thông minh nào (ví dụ: liên quan đến ) có thể giải quyết được vấn đề này. Xem để biết chi tiết. bộ tích lũy mật mã bài báo này Vì vậy, làm thế nào để bạn kiểm tra xem 1 MB dữ liệu có sẵn mà không thực sự cố gắng tải xuống? Điều đó nghe có vẻ không thể! Chìa khóa là một công nghệ được gọi là của dữ liệu. Lấy mẫu tính khả dụng của dữ liệu hoạt động như sau: lấy mẫu tính khả dụng Sử dụng một công cụ được gọi là để mở rộng một phần dữ liệu có N phần thành một phần dữ liệu có 2N phần sao cho phần nào trong số đó có thể khôi phục toàn bộ dữ liệu. mã hóa xóa N bất kỳ Để kiểm tra tính khả dụng, thay vì cố gắng tải xuống dữ liệu, người dùng chỉ cần (ví dụ: 30 vị trí) và chỉ chấp nhận khối khi họ đã tìm thấy thành công phần trong khối. vị trí đã chọn của họ. toàn bộ chọn ngẫu nhiên một số vị trí không đổi trong khối các Mã xóa chuyển đổi vấn đề "kiểm tra 100% tính khả dụng" (mọi phần dữ liệu đều có sẵn) thành vấn đề "kiểm tra 50% tính khả dụng" (ít nhất một nửa số dữ liệu có sẵn). Lấy mẫu ngẫu nhiên giải quyết vấn đề 50% tính khả dụng. Nếu ít hơn 50% dữ liệu có sẵn, thì ít nhất một trong các lần kiểm tra gần như chắc chắn sẽ không thành công và nếu ít nhất 50% dữ liệu có sẵn sau đó, trong khi một số nút có thể không nhận ra một khối là có sẵn, thì phải chỉ một nút trung thực để chạy quy trình xây dựng lại mã xóa để mang lại 50% khối còn lại. Và do đó, thay vì cần tải xuống 1 MB để kiểm tra tính khả dụng của khối 1 MB, bạn chỉ cần tải xuống một vài kilobyte. Điều này làm cho việc chạy kiểm tra tính khả dụng của dữ liệu trên khối trở nên khả thi. Xem để biết cách kiểm tra này có thể được triển khai hiệu quả với các mạng con ngang hàng. mọi bài đăng này Một ZK-SNARK có thể được sử dụng để xác minh rằng quá trình mã hóa xóa trên một phần dữ liệu đã được thực hiện và sau đó các nhánh Merkle có thể được sử dụng để xác minh các phần riêng lẻ. Ngoài ra, bạn có thể sử dụng các (ví dụ: cam kết ), về cơ bản thực hiện xóa mã hóa chứng minh các yếu tố riêng lẻ xác minh tính đúng đắn tất cả trong một thành phần đơn giản - và đó là những gì Ethereum sharding đang sử dụng. chính xác cam kết đa thức Kate (hay còn gọi là KZG) và và Tóm tắt lại: Làm thế nào chúng ta đảm bảo mọi thứ đều chính xác một lần nữa? Giả sử rằng bạn có 100 khối và bạn muốn xác minh tính đúng đắn một cách hiệu quả cho tất cả chúng mà không cần dựa vào các ủy ban. Chúng ta cần thực hiện những việc sau: Mỗi máy khách thực hiện của dữ liệu trên mỗi khối, xác minh rằng dữ liệu trong mỗi khối có sẵn, trong khi chỉ tải xuống một vài kilobyte mỗi khối ngay cả khi toàn bộ khối có kích thước là megabyte hoặc lớn hơn. Khách hàng chỉ chấp nhận một khối khi tất cả dữ liệu về các thách thức về tính khả dụng của họ đã được phản hồi chính xác. lấy mẫu tính khả dụng Bây giờ chúng tôi đã xác minh tính khả dụng của dữ liệu, việc xác minh tính đúng đắn trở nên dễ dàng hơn. Có hai kỹ thuật: Chúng tôi có thể sử dụng : một số người tham gia có tiền đặt cọc có thể đăng ký về tính đúng đắn của mỗi khối. Các nút khác, được gọi là (hoặc ) kiểm tra ngẫu nhiên và cố gắng xử lý đầy đủ các khối. Vì chúng tôi đã kiểm tra tính khả dụng của dữ liệu, nên sẽ luôn có thể tải xuống dữ liệu và xử lý đầy đủ bất kỳ khối cụ thể nào. Nếu họ tìm thấy một khối không hợp lệ, họ sẽ đăng một mà mọi người xác minh. Nếu khối bị lỗi, thì khối đó và tất cả các khối trong tương lai phụ thuộc vào khối đó cần được tính toán lại. bằng chứng gian lận người thách thức người đánh cá thử thách Chúng ta có thể sử dụng . Mỗi khối sẽ đi kèm với một ZK-SNARK chứng minh tính đúng đắn. ZK-SNARK Trong một trong hai trường hợp trên, mỗi khách hàng chỉ cần thực hiện một lượng nhỏ công việc xác minh cho mỗi khối, bất kể khối đó lớn đến mức nào. Trong trường hợp bằng chứng gian lận, đôi khi các khối sẽ cần được xác minh đầy đủ trên chuỗi, nhưng điều này cực kỳ hiếm vì việc kích hoạt dù chỉ một thử thách cũng rất tốn kém. Và đó là tất cả những gì cần làm! Trong trường hợp của Ethereum sharding, kế hoạch ngắn hạn là chỉ làm mảnh; nghĩa là, các phân đoạn một "công cụ cung cấp dữ liệu" và nhiệm vụ của các cuộn dữ liệu là sử dụng không gian dữ liệu an toàn đó, cộng với bằng chứng gian lận hoặc ZK-SNARK, để triển khai các khả năng xử lý giao dịch an toàn thông lượng cao. Tuy nhiên, bạn hoàn toàn có thể tạo một hệ thống tích hợp như vậy để thêm thực thi thông lượng cao "nguyên bản". dữ liệu các khối phân hoàn toàn là lớp 2 Các thuộc tính chính của hệ thống chia nhỏ là gì và sự cân bằng là gì? Mục tiêu chính của sharding là tiến gần nhất có thể để tái tạo các thuộc tính bảo mật quan trọng nhất của các blockchain truyền thống (không phân đoạn) nhưng không cần mỗi nút phải xác minh cá nhân từng giao dịch. Sharding đến khá gần. Trong một blockchain truyền thống: bởi vì các nút xác thực nhận thấy rằng chúng không hợp lệ và bỏ qua chúng. Các khối không hợp lệ không thể vượt qua vì các nút xác thực không tải xuống được và bỏ qua chúng. Các khối không khả dụng không thể vượt qua Trong một chuỗi khối phân mảnh với các tính năng bảo mật nâng cao: bởi vì: Các khối không hợp lệ không thể vượt qua Bằng chứng gian lận nhanh chóng bắt được chúng và thông báo cho toàn bộ mạng về sự không chính xác của khối, đồng thời phạt nặng người tạo, hoặc ZK-SNARK chứng minh tính đúng đắn và bạn không thể tạo ZK-SNARK hợp lệ cho một khối không hợp lệ. vì: Các khối không khả dụng không thể vượt qua được Nếu ít hơn 50% dữ liệu của khối có sẵn, ít nhất một mẫu kiểm tra tính khả dụng của dữ liệu gần như chắc chắn sẽ không thành công đối với mỗi máy khách, khiến máy khách từ chối khối, Nếu ít nhất 50% dữ liệu của một khối có sẵn, thì trên thực tế toàn bộ khối có sẵn, bởi vì chỉ cần một nút trung thực duy nhất để tạo lại phần còn lại của khối. Các chuỗi TPS cao truyền thống không có sharding không có cách cung cấp những đảm bảo này. Hệ sinh thái Multichain không có cách nào để tránh vấn đề kẻ tấn công chọn một chuỗi để tấn công và dễ dàng chiếm đoạt nó (các chuỗi chia sẻ bảo mật, nhưng nếu điều này được thực hiện kém, nó sẽ biến thành một chuỗi TPS truyền thống trên thực tế với tất cả các nhược điểm của nó, và nếu nó được thực hiện tốt, nó sẽ chỉ là một quá trình thực hiện phức tạp hơn của các kỹ thuật sharding ở trên). có thể phụ thuộc nhiều vào việc triển khai, nhưng chúng thường dễ bị ảnh hưởng bởi những điểm yếu của chuỗi TPS cao truyền thống (điều này xảy ra nếu chúng chia sẻ trình khai thác / trình xác thực) hoặc điểm yếu của hệ sinh thái đa phương thức (điều này xảy ra nếu chúng không chia sẻ trình khai thác / trình xác thực ). Chuỗi phân mảnh tránh những vấn đề này. Sidechains . Đáng chú ý: Tuy nhiên, có một số vết nứt trong áo giáp của hệ thống mảnh vỡ . Có nghĩa là, nếu đối thủ có khả năng xâm nhập (hoặc chỉ đóng cửa) bất kỳ tập hợp nút nào họ chọn trong thời gian thực, thì họ chỉ cần tấn công một số lượng nhỏ các nút để phá vỡ một ủy ban duy nhất. Hơn nữa, nếu một đối thủ (cho dù là một đối thủ thích ứng hay chỉ là một kẻ tấn công với 50% tổng số cổ phần) phá vỡ một ủy ban duy nhất, thì chỉ một số nút của họ (những người trong ủy ban đó) có thể được xác nhận công khai là đang tham gia vào đó. tấn công, và do đó chỉ có thể bị phạt một số tiền cược nhỏ. Đây là một lý do quan trọng khác tại sao lấy mẫu dữ liệu sẵn có cùng với bằng chứng gian lận hoặc ZK-SNARK là một bổ sung quan trọng cho kỹ thuật lấy mẫu ngẫu nhiên. Các chuỗi rời rạc dựa vào các ủy ban sẽ dễ bị tổn thương trước các đối thủ thích ứng và có trách nhiệm giải trình yếu hơn chỉ mà họ cùng thực hiện đủ yêu cầu lấy mẫu về tính sẵn có của dữ liệu mà các phản hồi hầu như luôn trùng lặp để chiếm ít nhất 50% khối. Trong thực tế, điều này có nghĩa là (và con số này làm tăng tỷ lệ giữa dung lượng của hệ thống với dung lượng của một nút càng cao). Đây là một - nhìn chung là khá đáng tin cậy, nhưng chắc chắn không mạnh mẽ như độ tin cậy 0 trong N mà các nút trong chuỗi không phân đoạn có sẵn. Việc lấy mẫu tính khả dụng của dữ liệu chỉ an toàn nếu có đủ số lượng khách hàng trực tuyến phải có vài trăm khách hàng trực tuyến mô hình tin cậy vài trong số N ; nếu mạng quá chậm, các nút có thể chấp nhận một khối như đã hoàn tất trước khi có bằng chứng gian lận cho thấy rằng nó sai. May mắn thay, nếu bạn tuân theo một quy tắc nghiêm ngặt về việc hoàn nguyên tất cả các khối không hợp lệ sau khi phát hiện ra tính không hợp lệ, thì ngưỡng này là thông số do người dùng đặt: mỗi người dùng riêng lẻ chọn khoảng thời gian họ đợi cho đến khi hoàn nguyên và nếu họ không muốn đủ lâu thì phải chịu, nhưng người dùng cẩn thận hơn vẫn an toàn. Thậm chí, đây là một điểm yếu của trải nghiệm người dùng. Nếu chuỗi phân đoạn dựa trên bằng chứng gian lận, thì nó dựa trên các giả định về thời gian Sử dụng ZK-SNARK để xác minh tính hợp lệ sẽ giải quyết được vấn đề này. , làm tăng nguy cơ lỗi trong điều kiện mạng khắc nghiệt. Lượng dữ liệu nhỏ sẽ dễ gửi hơn (và dễ dàng hơn nếu một chính phủ quyền lực cố gắng kiểm duyệt chuỗi) hơn lượng dữ liệu lớn hơn. Trình khám phá khối cần lưu trữ nhiều dữ liệu hơn nếu họ muốn nắm giữ toàn bộ chuỗi. Có một lượng lớn dữ liệu thô cần được chuyển đi xung quanh che giấu an toàn Các blockchains được chia nhỏ phụ thuộc vào các mạng ngang hàng được phân đoạn và . giảm thiểu điều này vì có một số dư thừa giữa các mạng con, nhưng thậm chí vẫn có rủi ro. mỗi "mạng con" p2p riêng lẻ sẽ dễ bị tấn công hơn vì nó có ít nút hơn Mô hình mạng con được sử dụng để lấy mẫu tính khả dụng của dữ liệu Đây là những lo ngại hợp lệ, mặc dù theo quan điểm của chúng tôi, chúng còn bị vượt xa bởi việc được kích hoạt bằng cách cho phép nhiều ứng dụng hơn chạy trên chuỗi thay vì thông qua các dịch vụ tập trung lớp 2. Điều đó nói rằng, những mối quan tâm này, đặc biệt là hai mối quan tâm cuối cùng, trên thực tế là hạn chế thực sự đối với việc tăng thông lượng của một chuỗi phân đoạn vượt quá một điểm nhất định. Có một giới hạn đối với tính bậc hai của phép phân chia bậc hai. giảm tập trung cấp độ người dùng Ngẫu nhiên, rủi ro an toàn ngày càng tăng của các blockchain phân đoạn nếu thông lượng của chúng trở nên quá cao cũng là lý do chính khiến nỗ lực mở rộng sang phân đã bị bỏ rơi phần lớn; có vẻ như việc giữ nét bậc hai bậc hai thực sự là phương tiện tốt. đoạn siêu bậc hai chỉ Tại sao không sản xuất tập trung và xác minh chia nhỏ? Một giải pháp thay thế cho sharding thường được đề xuất là có một chuỗi có cấu trúc giống như một chuỗi TPS cao tập trung, ngoại trừ nó sử dụng lấy mẫu dữ liệu và tính sẵn sàng trên cùng để cho phép xác minh tính hợp lệ và tính khả dụng. Điều này cải thiện trên các chuỗi TPS tập trung cao như chúng tồn tại ngày nay, nhưng nó vẫn yếu hơn đáng kể so với hệ thống phân đoạn. Điều này là vì một vài lý do: . Việc phát hiện kiểm duyệt yêu cầu (i) có thể xem giao dịch và xác minh rằng không có giao dịch nào rõ ràng xứng đáng bị thực hiện mà không thể giải thích được, hoặc (ii) có mô hình tin cậy 1-of-N trong và xác minh rằng không có khối nào không vào được. Trong một chuỗi TPS cao tập trung, (i) là không thể và (ii) khó hơn vì số lượng nút nhỏ khiến ngay cả mô hình tin cậy 1 trong số N có nhiều khả năng bị phá vỡ hơn và nếu chuỗi có thời gian khối quá nhanh đối với DAS (như hầu hết các chuỗi TPS tập trung cao thường làm), thì rất khó để chứng minh rằng các khối của nút không bị từ chối đơn giản vì tất cả chúng đều được xuất bản quá chậm. Khó hơn nhiều để phát hiện sự kiểm duyệt của các nhà sản xuất khối trong một chuỗi TPS cao mọi các nhà sản xuất khối Nếu phần lớn các nhà sản xuất khối và các thành viên trong hệ sinh thái cố gắng buộc thông qua một sự thay đổi giao thức không phổ biến, khách hàng của người dùng chắc chắn sẽ điều đó, nhưng vì họ sẽ cần thiết lập một bộ các nút thông lượng cao đắt tiền để duy trì một chuỗi giữ các quy tắc cũ. phát hiện ra cộng đồng sẽ khó hơn nhiều để nổi loạn và tách rời . Thông lượng cao của các nút tạo khối làm cho chúng rất dễ phát hiện và dễ tắt hơn. Về mặt chính trị và hậu cần, việc kiểm duyệt máy tính hiệu suất cao chuyên dụng cũng dễ dàng hơn so với việc kiểm duyệt máy tính xách tay của người dùng cá nhân. Cơ sở hạ tầng tập trung dễ bị tác động bởi sự kiểm duyệt của các tác nhân bên ngoài , làm tăng nguy cơ toàn bộ chuỗi sẽ được chạy trong các dịch vụ đám mây của 1-3 công ty và do đó nguy cơ chuỗi sẽ đi xuống do nhiều nhà sản xuất khối thất bại đồng thời . Một chuỗi phân mảnh với văn hóa chạy trình xác nhận trên phần cứng của chính mình một lần nữa ít bị tổn thương hơn nhiều đối với điều này. Có một áp lực lớn hơn để tính toán hiệu suất cao chuyển sang các dịch vụ đám mây tập trung Các hệ thống được phân đoạn đúng cách sẽ tốt hơn như một lớp cơ sở. Với một lớp cơ sở được phân đoạn, bạn luôn có thể tạo một hệ thống sản xuất tập trung (ví dụ: vì bạn muốn một miền thông lượng cao với khả năng ) được xếp lớp trên cùng bằng cách xây dựng nó dưới dạng một bản tổng hợp. Nhưng nếu bạn có lớp cơ sở phụ thuộc vào sản xuất khối tập trung, bạn không thể xây dựng lớp 2 phi tập trung hơn ở trên cùng. tổng hợp đồng bộ cho defi Cũng được xuất bản ở . đây