Shardeum và trạng thái động phân mảnh: Một khả năng khác của phân mảnh
Vào ngày 15 tháng 9 năm 2022, Ethereum đã hoàn thành việc hợp nhất được mong đợi từ lâu (Merge). Đây là một khoảnh khắc lịch sử, Ethereum đã chuẩn bị cho điều này trong 5 năm và đã trì hoãn 6 lần. Do sự điều chỉnh liên tục và phát triển lâu dài, nhiều người đã hiểu nhầm rằng việc hợp nhất sẽ tự nhiên mang lại khả năng mở rộng, an toàn và bền vững cao hơn, nhưng thực tế không phải vậy. Sự chuyển đổi từ PoW sang PoS chỉ là việc thay đổi đường ray và bánh xe, nó sẽ không trực tiếp mang lại tốc độ nhanh hơn, dung lượng lớn hơn và chi phí thấp hơn. Những gì thực sự có thể đạt được điều này là một tập hợp giải pháp hoàn chỉnh: mạng chính có khả năng phân mảnh kết hợp với các giải pháp Layer2 tăng cường khả năng mở rộng.
Như người sáng lập Ethereum, Vitalik Buterin đã chỉ ra, phân mảnh là một giải pháp mở rộng trong bối cảnh ba khó khăn về khả năng mở rộng, thông qua việc chia nhỏ các nút trong mạng thành các nhóm nhỏ hơn, xử lý các tập giao dịch khác nhau và thực hiện xử lý song song. Bằng cách giảm bớt gánh nặng xử lý lượng dữ liệu lớn cần thiết để tổng hợp trên toàn mạng, giống như khi chúng ta đi mua sắm tại siêu thị và thanh toán, bằng cách mở thêm một vài kênh thanh toán, chúng ta có thể giảm thời gian xếp hàng và nâng cao hiệu quả thanh toán.
Đây là logic của phân mảnh, trực tiếp và đơn giản, tuy nhiên, quỷ nằm trong chi tiết. Nguyên lý và hướng đi không sai, nhưng trong quá trình thực hiện luôn gặp phải nhiều vấn đề. Bài viết này muốn thông qua việc làm rõ hướng đi và những khó khăn trên con đường "phân mảnh", vẽ nên một bản đồ cho những người khám phá phân mảnh, ngước nhìn bầu trời và vững bước trên mặt đất. Đồng thời, thông qua việc so sánh các giải pháp phân mảnh hiện có, tìm ra một số vấn đề chung, và đề xuất một hướng đi khả thi: Shardeum và phân mảnh động.
Một, về "Phân mảnh"
Nói đơn giản, xem xét các ràng buộc của tam giác không thể, bắt đầu từ Ethereum như gốc tọa độ (0,0), theo hai cách "dọc" và "ngang", chúng ta sẽ phân loại các phương pháp mở rộng của blockchain hiện tại thành hai loại lớn:
Mở rộng theo chiều dọc ( Vertical Scaling ): Được thực hiện bằng cách nâng cao hiệu suất của phần cứng hiện có của hệ thống. Xây dựng một mạng lưới phi tập trung, trong đó mỗi nút trong mạng đều có khả năng tính toán siêu mạnh, tức là mỗi nút cần có phần cứng "tốt hơn". Cách này đơn giản và hiệu quả, có thể đạt được cải thiện ban đầu về thông lượng, đặc biệt phù hợp với giao dịch tần suất cao, trò chơi cũng như các tình huống ứng dụng nhạy cảm với độ trễ. Tuy nhiên, cách mở rộng này sẽ hạn chế mức độ phi tập trung của mạng, vì chi phí để vận hành các nút xác thực hoặc nút đầy đủ cao hơn. Việc duy trì mức độ phi tập trung bị giới hạn bởi tốc độ tăng trưởng khoảng của hiệu suất phần cứng tính toán ( đó được gọi là "định luật Moore": Số lượng transistor trên chip sẽ tăng gấp đôi sau mỗi hai năm, chi phí tính toán sẽ giảm một nửa ).
Mở rộng theo chiều ngang (Horizontal Scaling): Mở rộng theo chiều ngang thường có vài cách tiếp cận. Một cách là trong ngữ cảnh blockchain, phân bổ khối lượng giao dịch của một hệ sinh thái vào nhiều blockchain độc lập, mỗi chuỗi đều có nhà sản xuất khối và khả năng thực thi riêng, phương pháp này cho phép tùy chỉnh hoàn toàn lớp thực thi của mỗi chuỗi, chẳng hạn như yêu cầu phần cứng nút, chức năng riêng tư, phí gas, máy ảo và cài đặt quyền truy cập. Một giải pháp mở rộng theo chiều ngang khác là blockchain mô-đun, chia cấu trúc cơ sở của blockchain thành lớp thực thi, lớp khả dụng dữ liệu (DA) và lớp đồng thuận. Cơ chế mô-đun blockchain phổ biến nhất hiện nay là rollup. Một cách khác là chia một blockchain thành nhiều phân mảnh và thực thi song song. Mỗi phân mảnh có thể coi như một blockchain, tức là nhiều blockchain có thể thực thi song song. Ngoài ra, thường sẽ có một chuỗi chính, nhiệm vụ duy nhất của nó là giữ cho tất cả các phân mảnh đồng bộ.
Cần lưu ý rằng, những ý tưởng mở rộng ở trên không tồn tại một cách cô lập, mỗi giải pháp đều tìm được một điểm cân bằng trong tam giác bất khả thi, kết hợp với thiết kế cơ chế khuyến khích do lực lượng kinh tế trong hệ thống tạo ra, đạt được sự cân bằng hiệu quả ở cả cấp vĩ mô và vi mô.
Để thảo luận về "Phân mảnh", chúng ta cần bắt đầu từ đầu để sắp xếp lại.
Vẫn giả thiết một tình huống như vậy, thanh toán mua sắm siêu thị, để nâng cao hiệu quả thanh toán, giảm thời gian chờ đợi của khách hàng, chúng ta từ một kênh thanh toán đơn lẻ, mở rộng ra 10 cửa sổ thanh toán, để tránh sai sót trong sổ sách, lúc này chúng ta cần xây dựng các quy tắc thống nhất:
Đầu tiên, nếu chúng ta có 10 thu ngân, thì làm thế nào để phân bổ họ đến làm việc ở cửa sổ nào?
Thứ hai, nếu chúng ta có 1000 khách hàng đang xếp hàng chờ đợi, làm thế nào để quyết định từng khách hàng đến quầy nào để thanh toán?
Thứ ba, 10 sổ cái riêng biệt tương ứng với 10 cửa sổ này, làm thế nào để tổng hợp chúng?
Thứ tư, để tránh xảy ra tình trạng không khớp số dư, làm thế nào để ngăn chặn sai sót của nhân viên thu ngân?
Những vấn đề này thực ra tương ứng với một số vấn đề then chốt trong Phân mảnh, cụ thể là:
Làm thế nào để xác định các nút/nhà xác thực trên toàn mạng thuộc về phân mảnh nào? Tức là: làm thế nào để thực hiện phân mảnh mạng (Network Sharding);
Làm thế nào để xác định mỗi giao dịch được phân bổ cho phân mảnh nào? Tức là: làm thế nào để thực hiện phân mảnh giao dịch (Transaction Sharding);
Dữ liệu blockchain được lưu trữ như thế nào trong các phân mảnh khác nhau? Tức là: làm thế nào để thực hiện phân mảnh trạng thái (State Sharding);
Sự phức tạp có nghĩa là rủi ro, dựa trên tất cả những điều trên, làm thế nào để tránh sự phân mảnh của tính an toàn toàn bộ hệ thống?
01 Phân mảnh mạng ( Network Sharding )
Nếu chúng ta hiểu đơn giản về blockchain như một loại sổ cái phi tập trung, thì cơ chế đồng thuận PoS hay PoW đều nhằm mục đích để các nút cạnh tranh quyền ghi chép theo một quy tắc đã định. Trong quá trình này, nó đảm bảo tính chính xác của sổ cái. Còn phân mảnh mạng là một quy tắc đã định khác, chia nhỏ mạng blockchain, với điều kiện là giảm thiểu việc giao tiếp lẫn nhau, để các phân mảnh xử lý giao dịch trên chuỗi, cạnh tranh quyền ghi chép - tức là, quy tắc phân nhóm các nút.
Trong quá trình này, vấn đề gặp phải là, khi các nút bên trong blockchain được chia thành các phân mảnh khác nhau, độ khó và chi phí của kẻ tấn công sẽ giảm đáng kể. Chúng ta có thể suy luận rằng, giả sử quy tắc và kết quả của quá trình phân nhóm này là cố định và có thể dự đoán được, thì kẻ tấn công chỉ cần kiểm soát một phân mảnh nào đó trong mạng blockchain để kiểm soát toàn bộ mạng, bằng cách mua chuộc một số nút trong phân mảnh đó.
Một nhà sáng lập của một chuỗi công khai đã mô tả vấn đề này như sau: nếu một chuỗi đơn có X người xác thực quyết định chia tách ra thành một chuỗi phân mảnh, và phân chia X người xác thực thành 10 phân mảnh, thì mỗi phân mảnh bây giờ chỉ có X/10 người xác thực, việc phá hủy một phân mảnh chỉ cần phá hủy 5.1%(51% / 10) tổng số người xác thực. Điều này dẫn đến điểm thứ hai: ai sẽ chọn người xác thực cho mỗi phân mảnh? Chỉ khi tất cả 5.1% người xác thực đều ở trong cùng một phân mảnh, thì việc kiểm soát 5.1% người xác thực mới trở nên có hại. Nếu người xác thực không thể chọn phân mảnh nào để xác thực, thì khả năng người tham gia kiểm soát 5.1% người xác thực đặt tất cả người xác thực vào cùng một phân mảnh là rất thấp, do đó giảm đáng kể khả năng của họ trong việc phá hủy hệ thống.
Hệ thống phân mảnh phải phát triển một cơ chế để tin tưởng rằng mạng không thể đảo ngược những giao dịch từ các phân mảnh bên ngoài. Đến nay, có thể câu trả lời tốt nhất là đảm bảo số lượng người xác thực trong phân mảnh cao hơn một ngưỡng tối thiểu nào đó, điều này làm giảm khả năng những người xác thực không trung thực có thể áp đảo một phân mảnh đơn lẻ. Cách phổ biến nhất là xây dựng một mức độ ngẫu nhiên không thiên lệch, dựa vào toán học để giảm thiểu xác suất thành công của kẻ tấn công. Ví dụ, Ethereum, giải pháp của Ethereum là chọn ngẫu nhiên một số người xác thực cho một phân mảnh từ tất cả các người xác thực, và cứ sau 6.4 phút ( độ dài của một epoch ) thì thay đổi người xác thực.
Nói đơn giản hơn là chia các nút thành các nhóm ngẫu nhiên, sau đó phân công công việc cho các nút trong từng nhóm để xác minh độc lập.
Tuy nhiên, cần lưu ý rằng tính ngẫu nhiên trong blockchain là một chủ đề rất thách thức, theo logic, quá trình tạo ra số ngẫu nhiên này không nên phụ thuộc vào việc tính toán của bất kỳ phân mảnh cụ thể nào. Đối với việc tính toán này, nhiều thiết kế hiện tại đều phát triển một blockchain riêng biệt, duy trì toàn bộ mạng lưới. Một chuỗi như vậy được gọi là chuỗi Beacon trong Ethereum và Near, chuỗi Relay trong PolkaDot, và Hub Cosmos trong Cosmos.
02 Giao dịch Phân mảnh (Transaction Sharding )
Phân mảnh giao dịch là quy tắc xác định "những giao dịch nào sẽ được phân bổ vào những phân mảnh nào", điều này vừa có thể đạt được mục tiêu xử lý song song vừa có thể tránh được sự xuất hiện của vấn đề chi tiêu gấp đôi. Mô hình sổ cái của blockchain khác nhau sẽ ảnh hưởng đến việc phát triển phân mảnh giao dịch.
Hiện tại trong mạng lưới blockchain có hai loại phương thức ghi sổ, lần lượt là mô hình UTXO( Unspent Transaction Outputs, mô hình giao dịch chưa được sử dụng ) và mô hình tài khoản/số dư, đại diện điển hình cho cái trước là BTC, còn cái sau như ETH.
Mô hình UTXO: Trong giao dịch BTC, mỗi giao dịch sẽ có một hoặc nhiều đầu ra, UTXO chỉ các đầu ra giao dịch trên blockchain chưa được chi tiêu, có thể được sử dụng làm đầu vào cho giao dịch mới, trong khi các đầu ra giao dịch đã chi tiêu không thể được chi tiêu lại, tương tự như trường hợp thanh toán và trả lại tiền thừa bằng tiền giấy, khách hàng đưa một hoặc nhiều tờ tiền cho cửa hàng, cửa hàng sẽ trả lại một hoặc nhiều tờ tiền cho khách hàng. Dưới mô hình UTXO, việc phân mảnh giao dịch cần có giao tiếp giữa các phân mảnh. Một giao dịch có thể bao gồm nhiều đầu vào và nhiều đầu ra, không có khái niệm tài khoản, cũng không có ghi chép số dư, một cách khả thi là: theo giá trị đầu vào của giao dịch, nó được đưa vào hàm băm để xử lý thành giá trị băm rời rạc nhằm xác định dữ liệu nên đi đến phân mảnh nào.
Để đảm bảo rằng các mục được đặt một cách nhất quán trong các phân mảnh đúng, các giá trị đầu vào cho hàm băm nên đến từ cùng một cột. Cột này được gọi là Khóa Phân Mảnh. Sau đó, các giao dịch phát sinh giá trị 1 sẽ được phân vào phân mảnh 1, trong khi các giao dịch phát sinh giá trị 2 sẽ được phân vào phân mảnh 2. Tuy nhiên, nhược điểm của cách này là các phân mảnh phải giao tiếp với nhau để tránh tấn công chi tiêu gấp đôi. Nếu hạn chế giao dịch giữa các phân mảnh, điều này sẽ hạn chế khả năng sử dụng của nền tảng, trong khi cho phép giao dịch giữa các phân mảnh thì phải cân nhắc giữa chi phí giao tiếp giữa các phân mảnh và lợi ích của việc cải thiện hiệu suất.
Mô hình tài khoản/số dư: Hệ thống ghi lại số dư của mỗi tài khoản, khi thực hiện giao dịch, hệ thống kiểm tra xem tài khoản có đủ số dư để thanh toán hay không, tương tự như khi chuyển khoản ngân hàng, ngân hàng sẽ ghi lại số dư của mỗi tài khoản, chỉ khi số dư tài khoản lớn hơn số tiền chuyển khoản cần thiết, giao dịch mới có thể thực hiện. Dưới mô hình tài khoản/số dư, do một giao dịch chỉ có một đầu vào, vì vậy chỉ cần phân mảnh giao dịch theo địa chỉ người gửi, có thể đảm bảo rằng nhiều giao dịch của cùng một tài khoản được xử lý trong cùng một phân mảnh, hiệu quả ngăn chặn việc chi tiêu gấp đôi. Do đó, hầu hết các blockchain sử dụng công nghệ phân mảnh đều là hệ thống sổ cái tài khoản giống như Ethereum.
03 Trạng thái Phân mảnh ( State Sharding )
Trạng thái phân mảnh chỉ về cách thức mà dữ liệu trên blockchain được phân bổ và lưu trữ trong các phân mảnh khác nhau.
Vẫn tiếp tục sử dụng ví dụ xếp hàng tại siêu thị của chúng tôi, mỗi cửa sổ đều có một sổ sách, sổ sách của họ được ghi chép như thế nào? Nếu: khách hàng đến xếp hàng ở cửa nào, thì ghi vào sổ của cửa đó, ví dụ khách hàng A đến cửa A, thì ngày hôm sau khách hàng đó đến cửa thanh toán khác chẳng hạn như cửa B, mà cửa B không có thông tin tài khoản trước đó của khách hàng đó ( chẳng hạn như liên quan đến thẻ tích lũy và các phương thức thanh toán khác ), thì phải làm sao? Gọi thông tin tài khoản của khách hàng đó từ cửa A?
Trạng thái phân mảnh là vấn đề lớn nhất của phân mảnh, khó hơn cả phân mảnh mạng và phân mảnh giao dịch nêu trên. Bởi vì trong cơ chế phân mảnh, giao dịch sẽ được phân phối vào các phân mảnh khác nhau dựa trên địa chỉ, nghĩa là trạng thái chỉ được lưu trữ trong phân mảnh mà địa chỉ của nó thuộc về, trong lúc này một vấn đề cần phải đối mặt là, giao dịch không chỉ diễn ra trong một phân mảnh, thường xuyên sẽ liên quan đến phân mảnh chéo (Cross-Sharding).
Xem xét một tình huống chuyển khoản, tài khoản A chuyển 10U cho tài khoản B, và địa chỉ của A được phân bổ tại Phân mảnh 1, hồ sơ giao dịch cũng sẽ được lưu trữ trong Phân mảnh 1. Địa chỉ của B được phân bổ tại Phân mảnh 2, hồ sơ giao dịch sẽ được lưu trữ trong Phân mảnh 2.
Một khi A muốn chuyển tiền cho B, sẽ hình thành giao dịch xuyên phân mảnh, phân mảnh 2 sẽ gọi lại hồ sơ giao dịch trong quá khứ từ phân mảnh 1 để xác nhận tính hợp lệ của giao dịch. Nếu A thường xuyên chuyển tiền cho B, phân mảnh 2 sẽ phải tương tác liên tục với phân mảnh 1, hiệu suất xử lý giao dịch sẽ vì vậy mà giảm. Tuy nhiên, nếu không tải xuống và xác minh
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
15 thích
Phần thưởng
15
6
Chia sẻ
Bình luận
0/400
ChartIgniter
· 1giờ trước
LFG
Trả lời0
JustAnotherWallet
· 5giờ trước
Nhìn xem náo nhiệt ing Phân mảnh thì cứ phân thôi.
Xem bản gốcTrả lời0
PoolJumper
· 5giờ trước
Haha thật sự chậm, chờ đợi nửa ngày chỉ để đổi một cái vỏ.
Shardeum khám phá động trạng thái phân mảnh giải quyết vấn đề mở rộng Blockchain
Shardeum và trạng thái động phân mảnh: Một khả năng khác của phân mảnh
Vào ngày 15 tháng 9 năm 2022, Ethereum đã hoàn thành việc hợp nhất được mong đợi từ lâu (Merge). Đây là một khoảnh khắc lịch sử, Ethereum đã chuẩn bị cho điều này trong 5 năm và đã trì hoãn 6 lần. Do sự điều chỉnh liên tục và phát triển lâu dài, nhiều người đã hiểu nhầm rằng việc hợp nhất sẽ tự nhiên mang lại khả năng mở rộng, an toàn và bền vững cao hơn, nhưng thực tế không phải vậy. Sự chuyển đổi từ PoW sang PoS chỉ là việc thay đổi đường ray và bánh xe, nó sẽ không trực tiếp mang lại tốc độ nhanh hơn, dung lượng lớn hơn và chi phí thấp hơn. Những gì thực sự có thể đạt được điều này là một tập hợp giải pháp hoàn chỉnh: mạng chính có khả năng phân mảnh kết hợp với các giải pháp Layer2 tăng cường khả năng mở rộng.
Như người sáng lập Ethereum, Vitalik Buterin đã chỉ ra, phân mảnh là một giải pháp mở rộng trong bối cảnh ba khó khăn về khả năng mở rộng, thông qua việc chia nhỏ các nút trong mạng thành các nhóm nhỏ hơn, xử lý các tập giao dịch khác nhau và thực hiện xử lý song song. Bằng cách giảm bớt gánh nặng xử lý lượng dữ liệu lớn cần thiết để tổng hợp trên toàn mạng, giống như khi chúng ta đi mua sắm tại siêu thị và thanh toán, bằng cách mở thêm một vài kênh thanh toán, chúng ta có thể giảm thời gian xếp hàng và nâng cao hiệu quả thanh toán.
Đây là logic của phân mảnh, trực tiếp và đơn giản, tuy nhiên, quỷ nằm trong chi tiết. Nguyên lý và hướng đi không sai, nhưng trong quá trình thực hiện luôn gặp phải nhiều vấn đề. Bài viết này muốn thông qua việc làm rõ hướng đi và những khó khăn trên con đường "phân mảnh", vẽ nên một bản đồ cho những người khám phá phân mảnh, ngước nhìn bầu trời và vững bước trên mặt đất. Đồng thời, thông qua việc so sánh các giải pháp phân mảnh hiện có, tìm ra một số vấn đề chung, và đề xuất một hướng đi khả thi: Shardeum và phân mảnh động.
Một, về "Phân mảnh"
Nói đơn giản, xem xét các ràng buộc của tam giác không thể, bắt đầu từ Ethereum như gốc tọa độ (0,0), theo hai cách "dọc" và "ngang", chúng ta sẽ phân loại các phương pháp mở rộng của blockchain hiện tại thành hai loại lớn:
Mở rộng theo chiều dọc ( Vertical Scaling ): Được thực hiện bằng cách nâng cao hiệu suất của phần cứng hiện có của hệ thống. Xây dựng một mạng lưới phi tập trung, trong đó mỗi nút trong mạng đều có khả năng tính toán siêu mạnh, tức là mỗi nút cần có phần cứng "tốt hơn". Cách này đơn giản và hiệu quả, có thể đạt được cải thiện ban đầu về thông lượng, đặc biệt phù hợp với giao dịch tần suất cao, trò chơi cũng như các tình huống ứng dụng nhạy cảm với độ trễ. Tuy nhiên, cách mở rộng này sẽ hạn chế mức độ phi tập trung của mạng, vì chi phí để vận hành các nút xác thực hoặc nút đầy đủ cao hơn. Việc duy trì mức độ phi tập trung bị giới hạn bởi tốc độ tăng trưởng khoảng của hiệu suất phần cứng tính toán ( đó được gọi là "định luật Moore": Số lượng transistor trên chip sẽ tăng gấp đôi sau mỗi hai năm, chi phí tính toán sẽ giảm một nửa ).
Mở rộng theo chiều ngang (Horizontal Scaling): Mở rộng theo chiều ngang thường có vài cách tiếp cận. Một cách là trong ngữ cảnh blockchain, phân bổ khối lượng giao dịch của một hệ sinh thái vào nhiều blockchain độc lập, mỗi chuỗi đều có nhà sản xuất khối và khả năng thực thi riêng, phương pháp này cho phép tùy chỉnh hoàn toàn lớp thực thi của mỗi chuỗi, chẳng hạn như yêu cầu phần cứng nút, chức năng riêng tư, phí gas, máy ảo và cài đặt quyền truy cập. Một giải pháp mở rộng theo chiều ngang khác là blockchain mô-đun, chia cấu trúc cơ sở của blockchain thành lớp thực thi, lớp khả dụng dữ liệu (DA) và lớp đồng thuận. Cơ chế mô-đun blockchain phổ biến nhất hiện nay là rollup. Một cách khác là chia một blockchain thành nhiều phân mảnh và thực thi song song. Mỗi phân mảnh có thể coi như một blockchain, tức là nhiều blockchain có thể thực thi song song. Ngoài ra, thường sẽ có một chuỗi chính, nhiệm vụ duy nhất của nó là giữ cho tất cả các phân mảnh đồng bộ.
Cần lưu ý rằng, những ý tưởng mở rộng ở trên không tồn tại một cách cô lập, mỗi giải pháp đều tìm được một điểm cân bằng trong tam giác bất khả thi, kết hợp với thiết kế cơ chế khuyến khích do lực lượng kinh tế trong hệ thống tạo ra, đạt được sự cân bằng hiệu quả ở cả cấp vĩ mô và vi mô.
Để thảo luận về "Phân mảnh", chúng ta cần bắt đầu từ đầu để sắp xếp lại.
Vẫn giả thiết một tình huống như vậy, thanh toán mua sắm siêu thị, để nâng cao hiệu quả thanh toán, giảm thời gian chờ đợi của khách hàng, chúng ta từ một kênh thanh toán đơn lẻ, mở rộng ra 10 cửa sổ thanh toán, để tránh sai sót trong sổ sách, lúc này chúng ta cần xây dựng các quy tắc thống nhất:
Đầu tiên, nếu chúng ta có 10 thu ngân, thì làm thế nào để phân bổ họ đến làm việc ở cửa sổ nào?
Thứ hai, nếu chúng ta có 1000 khách hàng đang xếp hàng chờ đợi, làm thế nào để quyết định từng khách hàng đến quầy nào để thanh toán?
Thứ ba, 10 sổ cái riêng biệt tương ứng với 10 cửa sổ này, làm thế nào để tổng hợp chúng?
Thứ tư, để tránh xảy ra tình trạng không khớp số dư, làm thế nào để ngăn chặn sai sót của nhân viên thu ngân?
Những vấn đề này thực ra tương ứng với một số vấn đề then chốt trong Phân mảnh, cụ thể là:
Làm thế nào để xác định các nút/nhà xác thực trên toàn mạng thuộc về phân mảnh nào? Tức là: làm thế nào để thực hiện phân mảnh mạng (Network Sharding);
Làm thế nào để xác định mỗi giao dịch được phân bổ cho phân mảnh nào? Tức là: làm thế nào để thực hiện phân mảnh giao dịch (Transaction Sharding);
Dữ liệu blockchain được lưu trữ như thế nào trong các phân mảnh khác nhau? Tức là: làm thế nào để thực hiện phân mảnh trạng thái (State Sharding);
Sự phức tạp có nghĩa là rủi ro, dựa trên tất cả những điều trên, làm thế nào để tránh sự phân mảnh của tính an toàn toàn bộ hệ thống?
01 Phân mảnh mạng ( Network Sharding )
Nếu chúng ta hiểu đơn giản về blockchain như một loại sổ cái phi tập trung, thì cơ chế đồng thuận PoS hay PoW đều nhằm mục đích để các nút cạnh tranh quyền ghi chép theo một quy tắc đã định. Trong quá trình này, nó đảm bảo tính chính xác của sổ cái. Còn phân mảnh mạng là một quy tắc đã định khác, chia nhỏ mạng blockchain, với điều kiện là giảm thiểu việc giao tiếp lẫn nhau, để các phân mảnh xử lý giao dịch trên chuỗi, cạnh tranh quyền ghi chép - tức là, quy tắc phân nhóm các nút.
Trong quá trình này, vấn đề gặp phải là, khi các nút bên trong blockchain được chia thành các phân mảnh khác nhau, độ khó và chi phí của kẻ tấn công sẽ giảm đáng kể. Chúng ta có thể suy luận rằng, giả sử quy tắc và kết quả của quá trình phân nhóm này là cố định và có thể dự đoán được, thì kẻ tấn công chỉ cần kiểm soát một phân mảnh nào đó trong mạng blockchain để kiểm soát toàn bộ mạng, bằng cách mua chuộc một số nút trong phân mảnh đó.
Một nhà sáng lập của một chuỗi công khai đã mô tả vấn đề này như sau: nếu một chuỗi đơn có X người xác thực quyết định chia tách ra thành một chuỗi phân mảnh, và phân chia X người xác thực thành 10 phân mảnh, thì mỗi phân mảnh bây giờ chỉ có X/10 người xác thực, việc phá hủy một phân mảnh chỉ cần phá hủy 5.1%(51% / 10) tổng số người xác thực. Điều này dẫn đến điểm thứ hai: ai sẽ chọn người xác thực cho mỗi phân mảnh? Chỉ khi tất cả 5.1% người xác thực đều ở trong cùng một phân mảnh, thì việc kiểm soát 5.1% người xác thực mới trở nên có hại. Nếu người xác thực không thể chọn phân mảnh nào để xác thực, thì khả năng người tham gia kiểm soát 5.1% người xác thực đặt tất cả người xác thực vào cùng một phân mảnh là rất thấp, do đó giảm đáng kể khả năng của họ trong việc phá hủy hệ thống.
Hệ thống phân mảnh phải phát triển một cơ chế để tin tưởng rằng mạng không thể đảo ngược những giao dịch từ các phân mảnh bên ngoài. Đến nay, có thể câu trả lời tốt nhất là đảm bảo số lượng người xác thực trong phân mảnh cao hơn một ngưỡng tối thiểu nào đó, điều này làm giảm khả năng những người xác thực không trung thực có thể áp đảo một phân mảnh đơn lẻ. Cách phổ biến nhất là xây dựng một mức độ ngẫu nhiên không thiên lệch, dựa vào toán học để giảm thiểu xác suất thành công của kẻ tấn công. Ví dụ, Ethereum, giải pháp của Ethereum là chọn ngẫu nhiên một số người xác thực cho một phân mảnh từ tất cả các người xác thực, và cứ sau 6.4 phút ( độ dài của một epoch ) thì thay đổi người xác thực.
Nói đơn giản hơn là chia các nút thành các nhóm ngẫu nhiên, sau đó phân công công việc cho các nút trong từng nhóm để xác minh độc lập.
Tuy nhiên, cần lưu ý rằng tính ngẫu nhiên trong blockchain là một chủ đề rất thách thức, theo logic, quá trình tạo ra số ngẫu nhiên này không nên phụ thuộc vào việc tính toán của bất kỳ phân mảnh cụ thể nào. Đối với việc tính toán này, nhiều thiết kế hiện tại đều phát triển một blockchain riêng biệt, duy trì toàn bộ mạng lưới. Một chuỗi như vậy được gọi là chuỗi Beacon trong Ethereum và Near, chuỗi Relay trong PolkaDot, và Hub Cosmos trong Cosmos.
02 Giao dịch Phân mảnh (Transaction Sharding )
Phân mảnh giao dịch là quy tắc xác định "những giao dịch nào sẽ được phân bổ vào những phân mảnh nào", điều này vừa có thể đạt được mục tiêu xử lý song song vừa có thể tránh được sự xuất hiện của vấn đề chi tiêu gấp đôi. Mô hình sổ cái của blockchain khác nhau sẽ ảnh hưởng đến việc phát triển phân mảnh giao dịch.
Hiện tại trong mạng lưới blockchain có hai loại phương thức ghi sổ, lần lượt là mô hình UTXO( Unspent Transaction Outputs, mô hình giao dịch chưa được sử dụng ) và mô hình tài khoản/số dư, đại diện điển hình cho cái trước là BTC, còn cái sau như ETH.
Mô hình UTXO: Trong giao dịch BTC, mỗi giao dịch sẽ có một hoặc nhiều đầu ra, UTXO chỉ các đầu ra giao dịch trên blockchain chưa được chi tiêu, có thể được sử dụng làm đầu vào cho giao dịch mới, trong khi các đầu ra giao dịch đã chi tiêu không thể được chi tiêu lại, tương tự như trường hợp thanh toán và trả lại tiền thừa bằng tiền giấy, khách hàng đưa một hoặc nhiều tờ tiền cho cửa hàng, cửa hàng sẽ trả lại một hoặc nhiều tờ tiền cho khách hàng. Dưới mô hình UTXO, việc phân mảnh giao dịch cần có giao tiếp giữa các phân mảnh. Một giao dịch có thể bao gồm nhiều đầu vào và nhiều đầu ra, không có khái niệm tài khoản, cũng không có ghi chép số dư, một cách khả thi là: theo giá trị đầu vào của giao dịch, nó được đưa vào hàm băm để xử lý thành giá trị băm rời rạc nhằm xác định dữ liệu nên đi đến phân mảnh nào.
Để đảm bảo rằng các mục được đặt một cách nhất quán trong các phân mảnh đúng, các giá trị đầu vào cho hàm băm nên đến từ cùng một cột. Cột này được gọi là Khóa Phân Mảnh. Sau đó, các giao dịch phát sinh giá trị 1 sẽ được phân vào phân mảnh 1, trong khi các giao dịch phát sinh giá trị 2 sẽ được phân vào phân mảnh 2. Tuy nhiên, nhược điểm của cách này là các phân mảnh phải giao tiếp với nhau để tránh tấn công chi tiêu gấp đôi. Nếu hạn chế giao dịch giữa các phân mảnh, điều này sẽ hạn chế khả năng sử dụng của nền tảng, trong khi cho phép giao dịch giữa các phân mảnh thì phải cân nhắc giữa chi phí giao tiếp giữa các phân mảnh và lợi ích của việc cải thiện hiệu suất.
Mô hình tài khoản/số dư: Hệ thống ghi lại số dư của mỗi tài khoản, khi thực hiện giao dịch, hệ thống kiểm tra xem tài khoản có đủ số dư để thanh toán hay không, tương tự như khi chuyển khoản ngân hàng, ngân hàng sẽ ghi lại số dư của mỗi tài khoản, chỉ khi số dư tài khoản lớn hơn số tiền chuyển khoản cần thiết, giao dịch mới có thể thực hiện. Dưới mô hình tài khoản/số dư, do một giao dịch chỉ có một đầu vào, vì vậy chỉ cần phân mảnh giao dịch theo địa chỉ người gửi, có thể đảm bảo rằng nhiều giao dịch của cùng một tài khoản được xử lý trong cùng một phân mảnh, hiệu quả ngăn chặn việc chi tiêu gấp đôi. Do đó, hầu hết các blockchain sử dụng công nghệ phân mảnh đều là hệ thống sổ cái tài khoản giống như Ethereum.
03 Trạng thái Phân mảnh ( State Sharding )
Trạng thái phân mảnh chỉ về cách thức mà dữ liệu trên blockchain được phân bổ và lưu trữ trong các phân mảnh khác nhau.
Vẫn tiếp tục sử dụng ví dụ xếp hàng tại siêu thị của chúng tôi, mỗi cửa sổ đều có một sổ sách, sổ sách của họ được ghi chép như thế nào? Nếu: khách hàng đến xếp hàng ở cửa nào, thì ghi vào sổ của cửa đó, ví dụ khách hàng A đến cửa A, thì ngày hôm sau khách hàng đó đến cửa thanh toán khác chẳng hạn như cửa B, mà cửa B không có thông tin tài khoản trước đó của khách hàng đó ( chẳng hạn như liên quan đến thẻ tích lũy và các phương thức thanh toán khác ), thì phải làm sao? Gọi thông tin tài khoản của khách hàng đó từ cửa A?
Trạng thái phân mảnh là vấn đề lớn nhất của phân mảnh, khó hơn cả phân mảnh mạng và phân mảnh giao dịch nêu trên. Bởi vì trong cơ chế phân mảnh, giao dịch sẽ được phân phối vào các phân mảnh khác nhau dựa trên địa chỉ, nghĩa là trạng thái chỉ được lưu trữ trong phân mảnh mà địa chỉ của nó thuộc về, trong lúc này một vấn đề cần phải đối mặt là, giao dịch không chỉ diễn ra trong một phân mảnh, thường xuyên sẽ liên quan đến phân mảnh chéo (Cross-Sharding).
Xem xét một tình huống chuyển khoản, tài khoản A chuyển 10U cho tài khoản B, và địa chỉ của A được phân bổ tại Phân mảnh 1, hồ sơ giao dịch cũng sẽ được lưu trữ trong Phân mảnh 1. Địa chỉ của B được phân bổ tại Phân mảnh 2, hồ sơ giao dịch sẽ được lưu trữ trong Phân mảnh 2.
Một khi A muốn chuyển tiền cho B, sẽ hình thành giao dịch xuyên phân mảnh, phân mảnh 2 sẽ gọi lại hồ sơ giao dịch trong quá khứ từ phân mảnh 1 để xác nhận tính hợp lệ của giao dịch. Nếu A thường xuyên chuyển tiền cho B, phân mảnh 2 sẽ phải tương tác liên tục với phân mảnh 1, hiệu suất xử lý giao dịch sẽ vì vậy mà giảm. Tuy nhiên, nếu không tải xuống và xác minh