Phân tích các đặc tính kỹ thuật của Sharding

Sharding là tương lai giúp tăng khả năng mở rộng của Ethereum và nó sẽ là chìa khóa để hệ sinh thái này có thể xử lý 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 thường xuyên nền tảng này với chi phí phải chăng. Tuy nhiên, nó cũng là một trong những khái niệm thường bị hiểu sai 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 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 viết này sẽ 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 như thế nào và hệ thống sharding phải hy sinh những gì để đạt được những đặc tính này.

Một trong nhiều mô tả về phiên bản phân mảnh của Ethereum. Sơ đồ gốc của Hsiao-wei Wang, thiết kế bởi Quantstamp.

1. Bộ ba vấn đề về khả năng mở rộng

Cách tốt nhất để mô tả sharding bắt đầu từ: Bộ ba vấn về khả năng mở rộng.

Hình trên nói rằng có ba thuộc tính mà một blockchain cố gắng đạt được, 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 đó. Ba thuộc tính đó là:

  • Khả năng mở rộng: blockchain có thể xử lý nhiều giao dịch hơn mức thông thường.
  • Phi tập trung: blockchain có thể chạy mà không cần sự 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 đối với một tập hợp các node mà bạn không thể tham gia chỉ với một chiếc laptop giá rẻ.
  • Bảo mật: blockchain có thể chống lại một tỷ lệ phần trăm lớn các nút tham gia cố gắng tấn công nó (lý tưởng là 50%; bất kỳ điều gì trên 25% là ổn, 5% chắc chắn là không ổn).

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 thuộc tính trên:

  • Các blockchain truyền thống - bao gồm Bitcoin, hệ thống PoS / sharding Ethereum cũ, Litecoin và các blockchain tương tự khác. Chúng dựa vào việc mọi người tham gia chạy một node đầ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 chuỗi TPS cao - bao gồm DPoS và nhiều loại blockchain khác. Chúng dựa vào một số lượng nhỏ các node (thường là 10-100) để duy trì sự đồng thuận giữa chúng với nhau, và người dùng phải tin tưởng phần lớn các node này. Điều này khiến các blockchain 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 phi tập trung.
  • Hệ sinh thái đa chuỗi - đ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 khiến blockchain trở nên 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ố node đồng thuận của một trong nhiều blockchain (thường là <1% toàn bộ hệ sinh thái) để tấn công blockchain đó.

Sharding là một kỹ thuật giúp bạn có được cả ba. Một sharded blockchain sẽ có:

  • Khả năng mở rộng: nó có thể xử lý nhiều giao dịch hơn nhiều so với một node duy nhất
  • Phi tập trung: nó có thể tồn tại hoàn toàn trên một chiếc laptop giá rẻ, không phụ thuộc vào bất kỳ "supernodes" nào
  • An toàn: 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 một 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ộ

Phần còn lại của bài viết sẽ mô tả cách các sharded blockchain làm được điều này.

2. Sharding 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 so với các hình thức sharding cũ đ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 là như sau. Giả sử rằng bạn có một blockchain PoS với số lượng lớn validator (ví dụ: 10000) và bạn có một số lượng lớn block (ví dụ: 100) cần được xác minh. Không có máy tính nào đủ mạnh để xác thực tất cả các block này trước khi tập hợp block tiếp theo xuất hiện.

Do đó, những gì cần làm là chia nhỏ công việc xác minh một cách ngẫu nhiên. Bạn cần xáo trộn ngẫu nhiên danh sách validator và chỉ định 100 validator đầu tiên trong danh sách được xáo trộn để xác minh block đầu tiên, 100 validator thứ hai trong danh sách được xáo trộn để xác minh block thứ hai, v.v. Một nhóm validator được chọn ngẫu nhiên được chỉ định cho xác minh một block (hoặc thực hiện một số nhiệm vụ khác) được gọi là một ủy ban (committee).

Khi một validator xác minh một block, 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 block, giờ đây 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 tập hợp chữ ký BLS. Thay vì mọi block được phát thông qua cùng một mạng P2P, mỗi block được phát trên một mạng con khác nhau và các node 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.

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 node tăng gấp 2 lần. Bởi vì mỗi node giờ đây có thể xác thực thêm 2 lần chữ ký một cách an toàn, bạn có thể cắt giảm kích thước tiền gửi vào staking tối thiểu để hỗ trợ thêm 2 lần validator và do đó bạn có thể tạo 200 ủy ban thay vì 100. Do đó, bạn có thể xác thực 200 block cho mỗi vị trí thay vì 100. Hơn nữa, mỗi block riêng lẻ có thể lớn hơn gấp đôi. Do đó, bạn có thêm gấp 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 blockchain.

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 ký hiệu Big O, chúng tôi sử dụng "O(C)" để chỉ khả năng tính toán của một node duy nhất. Một blockchain truyền thống có thể xử lý các khối có kích thước O(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 O(C) (hãy nhớ rằng chi phí cho mỗi node để xác minh gián tiếp từng khối là O(1) 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 O(C), và do đó tổng công suất của chuỗi phân đoạn là O(C2) . Đây là lý do tại sao chúng tôi gọi loại hình này là sharding bậc hai 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.

Câu hỏi thường gặp: tách 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:

  1. 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 shard. Trong hệ sinh thái đa chuỗi, kẻ tấn công chỉ cần ~ 0,5% tổng số stake để tấn công: chúng có thể tập trung vào tấn công 51% một chuỗi duy nhất. Trong một sharded blockchain, kẻ tấn công phải có gần ~ 30 - 40% toàn bộ stake để làm điều tương tự (nói cách khác, chuỗi có shared security). Chắc chắn, họ có thể đợi cho đến khi gặp may mắn và nhận được 51% trong một shard một cách ngẫu nhiên mặc dù có ít hơn 50% tổng số tiền stake, 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ể.
  2. Khớp nối chặt chẽ: nếu ngay cả một shard bị một bad block, toàn bộ chuỗi sẽ khôi phục lại để tránh nó. Có một khế ước 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 chỉ cần có một bad block trong một shard 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 các ứng dụng trong sharded blockchain 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.

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 single-chain, theo cách mà các hệ sinh thái multichain về cơ bản không làm được.

3. Cải thiện sharding với các mô hình bảo mật tốt hơn

Cải thiện sharding 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 blockchain như Bitcoin (hoặc Ethereum) KHÔNG hoàn toàn dựa vào giả định đa số trung thự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 một số 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 node 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 folk làm mất đi sức mạnh của kẻ tấn công thì họ có thể thực hiện một cách nhanh chóng.

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. 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 node, và do đó, các node 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 node 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 đó việc thay đổi giao thức bắt buộc sẽ là một lỗi lầm: gánh nặng điều phối sẽ thuộc về người dùng để từ chối thay đổi và họ sẽ phải đưa ra quyết định khó khăn là hoàn nguyên giá trị của một ngày hoặc một tuần hoạt động mà mọi người nghĩ đã được hoàn thành.

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 tin cậy 51% về tính hợp lệ và duy trì nền tảng bảo mật mạnh mẽ 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à những gì chúng tôi đã nghiên cứu trong vài năm qua.

4. 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 tấn công 51% thành hai trường hợp:

  • Xác thực tính toán: kiểm tra xem một số tính toán (computation) đã đượ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 khả dụng của dữ liệu: kiểm tra xem bản thân các đầu vào cho phép tính có được lưu trữ ở một số dạng 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 mà không cần 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 một khối trong blockchain 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à root hash ở trạng thái mới được yêu cầu 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 phải tin 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 khá khó hiểu nhưng quan trọng được gọi là vấn đề về tính khả dụng của dữ liệu; tôi sẽ nói thêm về điều này sau.

Tính toán xác thực theo quy mô tương đối dễ dàng; có hai nhóm kỹ thuật: fraud proofs (bằng chứng gian lận)ZK-SNARK .

Bằng chứng gian lận là một cách để xác minh tính toán một cách có thể mở rộng.

Hai công nghệ này có thể được mô tả đơn giản như sau:

  • Fraud proofs 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 cọc 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 Cvới đầu vào X, bạn sẽ nhận được đầu ra Y". Bạn tin tưởng những tin nhắn này theo mặc định, nhưng bạn để ngỏ cơ hội cho người khác có tiền đặt cọc thực hiện một thách thức (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 node 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.
  • ZK-SNARK là một dạng bằng chứng mật mã trực tiếp chứng minh tuyên bố "thực hiện tính toán C trên đầu vào X cho ra đầu ra Y". Bằng chứng là mã hóa "sound": nếu C(x)không bằng Y, đó là tính toán để làm 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 việc chạy C chính nó mất rất nhiều thời gian.

Tính toán dựa trên fraud proofs 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 phép toán đằ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 chỉ xác minh tính toán theo quy mô, trong khi vẫn yêu cầu mọi node 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 Roll Up.

Giới thiệu về Rollup cho newbie
Cách thức mà rollup thực sự hoạt động ra sao, chúng trông như thế nào và tại sao chúng lại khiến những người như tôi rất hào hứng thì chúng ta hãy cùng đào sâu.

5. Mở rộng xác thực tính khả dụng của dữ liệu trở nên khó hơn

Không thể sử dụng fraud proof để xác minh tính khả dụng của dữ liệu. Các fraud proof để tính toá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 hiện 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 fraud proof để 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ỉ sau đó xuất bản dữ liệu X và làm cho kẻ 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.

Đ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 thế giới trong đó V1 là một nhà phát hành gian ác 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 gian á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 node riêng lẻ chỉ có thể tải xuống một phần nhỏ dữ liệu, vì vậy chỉ một phần nhỏ các node sẽ thấy bất cứ đ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 fraud proof hoạt động để cung cấp dữ liệu.

5.1 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 hợp lệ, nhưng như vậy vẫn chưa đủ?

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 hợp lệ nhưng tất cả dữ liệu không có sẵn, 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 ra bằng chứng rằng bất kỳ khối nào trong tương lai 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ệ blockchain một cách dễ dàng. 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.

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à điều phải chấp nhận và không có phương pháp hiệu quả nào giải quyết được vấn đề này. Xem bài báo này để biết chi tiết.

5.2 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ự tải xuống đống dữ liệu đó? Điều đó nghe có vẻ không thể!

Bí quyết là một công nghệ được gọi là lấy mẫu tính khả dụng của dữ liệu (data availability sampling). Lấy mẫu tính khả dụng của dữ liệu hoạt động như sau:

  1. Sử dụng một công cụ được gọi là erasure coding để 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 N bất kỳ phần nào trong số đó có thể khôi phục toàn bộ dữ liệu.
  2. Để kiểm tra tính sẵn sàng, thay vì cố gắng để tải toàn bộ dữ liệu, người dùng chỉ đơn giản là chọn ngẫu nhiên một hằng số của các vị trí trong khối (ví dụ là vị trí thứ 30), và chấp nhận khối chỉ khi họ đã thành công tìm thấy các khối trong khối tại tất cả vị trí đã chọn của họ.

Erasure coding 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 tính khả dụng 50%" (í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ố node có thể không nhận ra một khối là có sẵn, thì phải chỉ có một node trung thực để chạy quy trình xây dựng lại erasure coding để khôi phục 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 kb. Đ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 mọi khối trở nên khả thi.

Một ZK-SNARK có thể được sử dụng để xác minh rằng erasure coding trên một phần dữ liệu được thực hiện chính xác 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 cam kết đa thức (ví dụ: cam kết Kate), về cơ bản thực hiện erasure coding chứng minh các yếu tố riêng lẻ và 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.

5.3 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 làm như sau:

  • Mỗi máy khách thực hiện lấy mẫu tính khả dụng 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 cho 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.
  • 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:
  1. Chúng ta có thể sử dụng fraud proofs: một số người tham gia với số tiền đặt cọc có thể đăng ký về tính đúng đắn của mỗi khối. Các node khác, được gọi là challenger (hoặc fishermen) kiểm tra ngẫu nhiên và cố gắng xử lý đầy đủ các khối. Vì chúng ta đã 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 thách thức 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.
  2. Chúng ta có thể sử dụng ZK-SNARK. Mỗi khối sẽ đi kèm với một ZK-SNARK chứng minh tính đúng đắn.
  • 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 của fraud proofs, đô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 dữ liệu các khối phân mảnh; nghĩa là, các phân đoạn hoàn toàn là một "công cụ cung cấp dữ liệu" và nhiệm vụ của các layer-2 rollups là sử dụng không gian dữ liệu an toàn đó, cộng với fraud proofs 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 "native".

6. Các thuộc tính chính của hệ thống phân đoạn là gì và sự cân bằng là gì?

Các thuộc tính chính của hệ thống Sharding

Mục tiêu chính của sharding là tiến gần nhất có thể để sao chép 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 node phải xác minh từng giao dịch đơn lẻ.

Trong một blockchain truyền thống:

  • Các khối không hợp lệ không thể vượt qua vì các node 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 khả dụng không thể vượt qua vì các node xác thực không tải xuống được và bỏ qua chúng.

Trong một sharded blockchain với các tính năng bảo mật nâng cao:

  • Các khối không hợp lệ không thể vượt qua bởi vì:
  • Bằng chứng gian lận (fraud proof) 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ệ.
  • Các khối không khả dụng không thể vượt qua được vì:
  • 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ì thực sự 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ái tạo lại phần còn lại của khối.

Các blockchain TPS cao truyền thống không có sharding thì sẽ 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 khỏi 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ó.

Sidechains phụ thuộc nhiều vào việc triển khai, nhưng chúng thường dễ bị tổn thươ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 Multichain (đ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 ). Sharded blockchain không gặp phải những vấn đề này.

Tuy nhiên, có một số vấn đề trong hệ thống sharding. Đáng chú ý là:

  • Các Sharded chain chỉ dựa vào các ủy ban (committee) dễ bị tấn công trước các đối thủ thích ứng và có trách nhiệm giải trình yếu hơn. Có nghĩa là, nếu đối thủ có khả năng xâm nhập (hoặc chỉ là shut down) bất kỳ tập hợp node 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 node để 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ố staking) phá vỡ một ủy ban, thì chỉ một số node của họ (những người trong ủy ban đó) có thể được xác nhận công khai là đang tham gia tấn công vào ủy ban đó, và do đó chỉ có thể bị phạt một số tiền cược nhỏ. Đây là một lý do chính khác tại sao việc lấy mẫu dữ liệu có sẵn cùng với fraud proofs hoặc ZK-SNARK là một bổ sung quan trọng cho kỹ thuật lấy mẫu ngẫu nhiên.
  • Việc lấy mẫu tính khả dụng dữ liệu chỉ an toàn nếu có đủ số lượng client online mà họ cùng nhau thực hiện đủ yêu cầu lấy mẫu tính khả dụng 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à phải có vài trăm client online (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 mô hình few-of-N trust - 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 node trong chuỗi không phân đoạn có sẵn.
  • Nếu sharded chain dựa trên các bằng chứng gian lận, thì nó dựa trên các giả định về thời gian; nếu mạng quá chậm, các nút có thể chấp nhận một khối như đã được hoàn thiện trước khi bằng chứng gian lận xuất hiện cho thấy 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. Sử dụng ZK-SNARK để xác minh tính hợp lệ sẽ giải quyết được vấn đề này.
  • Có một lượng lớn dữ liệu thô cần được chuyển đi xung quanh, 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 che giấu an toàn hơn, nếu một tổ chức 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ác blockchain được chia nhỏ phụ thuộc vào các mạng ngang hàng được phân đoạn và mỗi "subnet" p2p riêng lẻ sẽ dễ bị tấn công hơn vì nó có ít nút hơn. Các mô hình subnet sử dụng để lấy mẫu dữ liệu sẵn có giảm nhẹ điều này bởi vì có một số dư thừa giữa các subnet, nhưng thậm chí vẫn còn là một nguy cơ.

Đâ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 giảm tập trung ở cấp độ người dùng đượ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 layer 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 sharded blockchain vượt quá một điểm nhất định.

Thật tình cờ, rủi ro an toàn ngày càng tăng của các sharded blockchain 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 super-quadratic sharding đã bị bỏ lỡ; có vẻ như giữ nguyên bậc hai như nó vốn có lại là điều tốt.

7. Tại sao không sản xuất tập trung và xác minh phân đoạn?

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 có TPS cao tập trung, ngoại trừ nó sử dụng lấy mẫu tính khả dụng của dữ liệu và sharding ở layer 1 để 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 sharding. Điều này là vì một số lý do:

  1. 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. Việc phát hiện kiểm duyệt yêu cầu (i) có thể xem mọi giao dịch và xác minh rằng không có giao dịch nào được 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 các block producer và xác minh rằng không có khối nào không truy cập đượ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-of-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.
  2. Nếu phần lớn các block producer 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, client của người dùng chắc chắn sẽ phát hiện ra điều đó, nhưng cộng đồng sẽ khó hơn nhiều để rebel và folk vì họ sẽ cần tạo ra 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ũ.
  3. Cơ sở hạ tầng tập trung dễ bị tác động bởi các tác nhân bên ngoài hơn. 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ễ shut down hơn. Về mặt chính sách và logistic, 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.
  4. 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, 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 sharded blockchain 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ác hệ thống được phân đoạn đúng cách sẽ tốt hơn như một layer cơ sở. Với một layer 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 được xếp ở layer 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ó layer 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 layer 2 phi tập trung hơn ở trên cùng.


Đây là dự án cá nhân của người viết với mục đích tổng hợp lại suy nghĩ về công nghệ từ nhiều lập trình viên xuất sắc và biên soạn lại thành những bài viết của riêng mình về công nghệ blockchain. Mỗi một bài viết sẽ là một bài luận riêng về các chủ đề khác nhau trong công nghệ blockchain. Đây là cách học tốt nhất mà mình biết trong việc củng cố khả năng ghi nhớ cũng như độ hiểu biết về bất kì một chủ đề nào đó.

Tất cả credit của bài viết này xin gửi tới Vitalik Buterin - nhà sáng lập Ethereum.

Đừng quên đăng ký Otis Report - Nơi cung cấp và cập nhật nhanh nhất mọi thông tin vĩ mô và phương pháp đầu tư tăng trưởng với giá trị vượt thời gian.

Hãy đăng ký và tham gia các nhóm, channel của Otis Report dưới đây để được thảo luận cùng các chuyên gia và nhiều Otiser khác:

Bạn đã đăng ký thành công Otis Report
Xác minh thành công! Giờ đây, bạn đã có toàn quyền truy cập vào tất cả nội dung cao cấp của Otis Report.
Lỗi! Không thể đăng ký. Liên kết không hợp lệ.
Chào mừng trở lại! Bạn đã đăng nhập thành công.
Lỗi! Không thể đăng nhập. Vui lòng thử lại.
Thành công! Tài khoản của bạn đã được kích hoạt hoàn toàn, bây giờ bạn có quyền truy cập vào tất cả nội dung.
Lỗi! Kiểm tra Stripe thất bại.
Thành công! Thông tin thanh toán của bạn đã được cập nhật.
Lỗi! Cập nhật thông tin thanh toán không thành công.