Shardeum và phân mảnh trạng thái động: Một khả năng khác trong việc khám phá phân mảnh
Vào ngày 15 tháng 9 năm 2022, Ethereum đã hoàn thành cuộc hợp nhất được mong đợi từ lâu (Merge). Khoảnh khắc lịch sử này đánh dấu sự chuyển đổi của Ethereum từ chứng minh công việc (PoW) sang chứng minh cổ phần (PoS), điều này đã được đội ngũ Ethereum chuẩn bị trong 5 năm và hoãn lại 6 lần. Tuy nhiên, nhiều người đã nhầm tưởng rằng cuộc hợp nhất sẽ tự nhiên mang lại khả năng mở rộng, an ninh và tính bền vững cao hơn, nhưng thực tế không phải vậy. Cuộc hợp nhất chỉ đơn thuần là thay đổi "đường ray và bánh xe", và 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 các mục tiêu này là một bộ 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 thách thức ba chiều về khả năng mở rộng. Nó 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 thanh toán tại siêu thị, việc mở nhiều kênh thu ngân có thể giảm thiểu thời gian xếp hàng và nâng cao hiệu quả thanh toán.
Đây là logic cơ bản của phân mảnh, đơn giản và trực tiếp. 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 nhằm làm rõ hướng đi và những khó khăn trên con đường "phân mảnh", vẽ ra một bản đồ cho những người khám phá phân mảnh. Đồ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 khám phá khả thi: Shardeum và phân mảnh động.
Một, về "Phân mảnh"
Đơn giản mà nói, xem xét những hạn chế của tam giác không thể, bắt đầu từ Ethereum như gốc toạ độ (0,0), theo hai hướng "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ó trong hệ thống. Xây dựng một mạng lưới phi tập trung, trong đó mỗi nút đều có khả năng tính toán siêu việt, tức là mỗi nút đều cần "phần cứng tốt hơn". Phương thức này đơn giản và hiệu quả, có thể đạt được cải tiế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 và các ứng dụng nhạy cảm với độ trễ khác. Tuy nhiên, phương thức mở rộng này sẽ hạn chế mức độ phi tập trung của mạng, bởi vì chi phí để vận hành các nút xác thực hoặc nút đầy đủ đã tăng lên. Việc duy trì mức độ phi tập trung bị giới hạn bởi tốc độ tăng trưởng tương đối của hiệu suất phần cứng tính toán ( đó chính là "Định luật Moore": số lượng transistor trên chip sẽ gấp đôi mỗi hai năm, chi phí tính toán sẽ giảm một nửa ).
Mở rộng ngang (Horizontal Scaling): Mở rộng ngang thường có vài ý tưởng. Một cách là trong bối cảnh blockchain, phân tán khối lượng tính toán giao dịch trong một hệ sinh thái tới 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 thức 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 quyền riêng tư, phí gas, máy ảo và cài đặt quyền hạn. Một giải pháp mở rộng ngang khác là blockchain mô-đun, phân chia hạ tầng 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. Còn một cách khác là phân chia một blockchain thành nhiều mảnh, thực thi song song. Mỗi phân mảnh có thể được coi là 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 chỉ ra 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 thấy 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.
Vẫn giả định một tình huống như vậy, khi thanh toán mua sắm tại siêu thị, để nâng cao hiệu suất thanh toán và giảm thời gian chờ đợi của khách hàng, chúng tôi đã mở rộng từ một kênh thanh toán đơn lẻ sang 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 thiết lập 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ọ vào các quầy làm việc?
Thứ hai, nếu chúng ta có 1000 khách hàng đang xếp hàng chờ đợi, chúng ta nên quyết định như thế nào để mỗi khách hàng đi đến cửa 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 giữa các tài khoản, làm thế nào để ngăn chặn việc nhân viên thu ngân mắc lỗi?
Các vấn đề này thực sự tương ứng với một số vấn đề chính trong phân mảnh, bao gồm:
Làm thế nào để xác định các nút/nhà xác thực 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);
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 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ì bất kể là cơ chế đồng thuận PoS hay PoW, đều nhằm mục đích để các nút tranh giành quyền ghi chép theo một số quy tắc nhất định, trong quá trình này đảm bảo tính chính xác của sổ cái. Còn mạng phân mảnh là chỉ, cần một quy tắc đã định khác, để phân mảnh mạng blockchain, trong khi cố gắng giảm thiểu việc giao tiếp lẫn nhau, các phân mảnh sẽ xử lý giao dịch trên chuỗi, tranh giành quyền ghi chép - tức là, quy tắc nhóm các nút.
Và 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 xuống một cách đáng kể. Chúng ta có thể suy luận, giả định rằng 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, thì kẻ tấn công muốn kiểm soát toàn bộ mạng blockchain, chỉ cần kiểm soát định hướng một phân mảnh nào đó, mua chuộc một số nút trong phân mảnh đó.
Người sáng lập Near, Alexander Skidanov, đã mô tả vấn đề này như sau: nếu một chuỗi đơn với X nhà xác thực quyết định phân tách thành một chuỗi phân mảnh và chia X nhà 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 nhà 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ố nhà xác thực. Điều này dẫn đến điểm thứ hai: ai sẽ chọn nhà xác thực cho mỗi phân mảnh? Chỉ khi tất cả 5.1% nhà xác thực đều ở trong cùng một phân mảnh, việc kiểm soát 5.1% nhà xác thực mới là có hại. Nếu các nhà xác thực không thể chọn phân mảnh nào để xác thực, thì các bên tham gia kiểm soát 5.1% nhà xác thực rất khó có thể đặt tất cả nhà xác thực vào cùng một phân mảnh, từ đó giảm đáng kể khả năng phá hủy hệ thống của họ.
Hệ thống phân mảnh phải phát triển một cơ chế để tin tưởng rằng mạng sẽ không đảo ngược các giao dịch từ các phân mảnh bên ngoài. Đến nay, có lẽ 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 đó, như vậy xác suất người xác thực không trung thực áp đảo một phân mảnh đơn lẻ sẽ rất thấp. 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 nhất định, 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. Chẳng hạn như Ethereum, giải pháp của Ethereum là chọn ngẫu nhiên một 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ứ mỗi 6.4 phút ( chiều dài một epoch ) lại thay đổi một lần 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 để các nhóm nút 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 bất kỳ tính toán phân mảnh nào cụ thể. Đối với tính toán này, nhiều thiết kế hiện có đều phát triển một blockchain riêng biệt để duy trì toàn bộ mạng lưới. Chuỗi như vậy được gọi là chuỗi Beacon trong Ethereum và Near, chuỗi Relay trong PolkaDot, và chuỗi Cosmos Hub 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 "các giao dịch nào sẽ được phân bổ vào các phân mảnh nào", vừa có thể đạt được mục tiêu xử lý song song vừa có thể tránh được 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 đầu ra giao dịch chưa 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 của giao dịch blockchain chưa được chi tiêu, có thể sử dụng làm đầu vào cho giao dịch mới, trong khi đầu ra giao dịch đã chi tiêu không thể sử dụng lại, tương tự như tình huống giao dịch tiền giấy với thanh toán và đổi tiền thối, khách hàng sẽ đư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 thối cho khách hàng. Dưới mô hình UTXO, giao dịch phân mảnh cần phải 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 sẽ không có ghi chép số dư, một cách có thể là: theo một giá trị đầu vào nào đó của giao dịch, nó sẽ đượ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 vào các phân mảnh đúng cách và nhất quán, các giá trị được nhập vào 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 có giá trị là 1 sẽ được phân vào phân mảnh 1, các giao dịch có giá trị là 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 sẽ hạn chế tính khả dụng của nền tảng, trong khi cho phép giao dịch giữa các phân mảnh lại 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 do việc nâng cao hiệu suất mang lại.
Mô hình tài khoản/số dư: Hệ thống ghi lại số dư của từng 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 từng tài khoản, chỉ khi số dư tài khoản lớn hơn số tiền cần chuyển khoản thì giao dịch mới có thể tiến hành. Trong 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 ngừa 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ỉ đến cách 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ụ về xếp hàng tại siêu thị, mỗi cửa sổ đều có một sổ sách, vậy sổ sách của họ được ghi chép như thế nào? Nếu: khách hàng xếp hàng ở cửa nào, thì ghi vào sổ của cửa đó, chẳng hạn như khách hàng A đi đến cửa A, thì hôm sau khách hàng đó đi đến cửa thanh toán khác chẳng hạn như cửa B, mà cửa B lại 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ẻ giá trị ), 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, phức tạp hơn so với phân mảnh mạng và phân mảnh giao dịch đã đề cập ở trên. Bởi vì trong cơ chế phân mảnh, giao dịch sẽ được phân bổ vào các phân mảnh khác nhau dựa trên địa chỉ, có nghĩa là trạng thái chỉ được lưu trữ trong phân mảnh mà địa chỉ của nó nằm. Lúc này, một vấn đề cần phải đối mặt là giao dịch sẽ không chỉ diễn ra trong một phân mảnh, thường xuyên sẽ liên quan đến việc vượt phân mảnh (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, trong đó địa chỉ của A được phân bổ ở Phân mảnh 1, và 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ổ ở Phân mảnh 2, và 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 các hồ sơ giao dịch trước đó 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 gửi tiền cho B, phân mảnh 2 sẽ phải liên tục tương tác với phân mảnh 1, hiệu suất xử lý giao dịch do đó sẽ giảm đi. Nhưng nếu không
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.
7 thích
Phần thưởng
7
4
Đăng lại
Chia sẻ
Bình luận
0/400
ThreeHornBlasts
· 4giờ trước
Lại bắt đầu thổi phồng lên rồi.
Xem bản gốcTrả lời0
CrossChainBreather
· 4giờ trước
Hợp nhất xong chỉ có vậy? Vẫn không chạy được hay vẫn không chạy được.
Xem bản gốcTrả lời0
DecentralizeMe
· 4giờ trước
Năm năm chuẩn bị cái gì vậy? Bùng nổ rồi đúng không?
Shardeum: Khám phá trạng thái động phân mảnh hướng mở rộng mới cho Blockchain
Shardeum và phân mảnh trạng thái động: Một khả năng khác trong việc khám phá phân mảnh
Vào ngày 15 tháng 9 năm 2022, Ethereum đã hoàn thành cuộc hợp nhất được mong đợi từ lâu (Merge). Khoảnh khắc lịch sử này đánh dấu sự chuyển đổi của Ethereum từ chứng minh công việc (PoW) sang chứng minh cổ phần (PoS), điều này đã được đội ngũ Ethereum chuẩn bị trong 5 năm và hoãn lại 6 lần. Tuy nhiên, nhiều người đã nhầm tưởng rằng cuộc hợp nhất sẽ tự nhiên mang lại khả năng mở rộng, an ninh và tính bền vững cao hơn, nhưng thực tế không phải vậy. Cuộc hợp nhất chỉ đơn thuần là thay đổi "đường ray và bánh xe", và 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 các mục tiêu này là một bộ 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 thách thức ba chiều về khả năng mở rộng. Nó 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 thanh toán tại siêu thị, việc mở nhiều kênh thu ngân có thể giảm thiểu thời gian xếp hàng và nâng cao hiệu quả thanh toán.
Đây là logic cơ bản của phân mảnh, đơn giản và trực tiếp. 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 nhằm làm rõ hướng đi và những khó khăn trên con đường "phân mảnh", vẽ ra một bản đồ cho những người khám phá phân mảnh. Đồ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 khám phá khả thi: Shardeum và phân mảnh động.
Một, về "Phân mảnh"
Đơn giản mà nói, xem xét những hạn chế của tam giác không thể, bắt đầu từ Ethereum như gốc toạ độ (0,0), theo hai hướng "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ó trong hệ thống. Xây dựng một mạng lưới phi tập trung, trong đó mỗi nút đều có khả năng tính toán siêu việt, tức là mỗi nút đều cần "phần cứng tốt hơn". Phương thức này đơn giản và hiệu quả, có thể đạt được cải tiế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 và các ứng dụng nhạy cảm với độ trễ khác. Tuy nhiên, phương thức mở rộng này sẽ hạn chế mức độ phi tập trung của mạng, bởi vì chi phí để vận hành các nút xác thực hoặc nút đầy đủ đã tăng lên. Việc duy trì mức độ phi tập trung bị giới hạn bởi tốc độ tăng trưởng tương đối của hiệu suất phần cứng tính toán ( đó chính là "Định luật Moore": số lượng transistor trên chip sẽ gấp đôi mỗi hai năm, chi phí tính toán sẽ giảm một nửa ).
Mở rộng ngang (Horizontal Scaling): Mở rộng ngang thường có vài ý tưởng. Một cách là trong bối cảnh blockchain, phân tán khối lượng tính toán giao dịch trong một hệ sinh thái tới 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 thức 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 quyền riêng tư, phí gas, máy ảo và cài đặt quyền hạn. Một giải pháp mở rộng ngang khác là blockchain mô-đun, phân chia hạ tầng 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. Còn một cách khác là phân chia một blockchain thành nhiều mảnh, thực thi song song. Mỗi phân mảnh có thể được coi là 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 chỉ ra 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 thấy 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.
Vẫn giả định một tình huống như vậy, khi thanh toán mua sắm tại siêu thị, để nâng cao hiệu suất thanh toán và giảm thời gian chờ đợi của khách hàng, chúng tôi đã mở rộng từ một kênh thanh toán đơn lẻ sang 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 thiết lập 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ọ vào các quầy làm việc?
Thứ hai, nếu chúng ta có 1000 khách hàng đang xếp hàng chờ đợi, chúng ta nên quyết định như thế nào để mỗi khách hàng đi đến cửa 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 giữa các tài khoản, làm thế nào để ngăn chặn việc nhân viên thu ngân mắc lỗi?
Các vấn đề này thực sự tương ứng với một số vấn đề chính trong phân mảnh, bao gồm:
Làm thế nào để xác định các nút/nhà xác thực 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);
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 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ì bất kể là cơ chế đồng thuận PoS hay PoW, đều nhằm mục đích để các nút tranh giành quyền ghi chép theo một số quy tắc nhất định, trong quá trình này đảm bảo tính chính xác của sổ cái. Còn mạng phân mảnh là chỉ, cần một quy tắc đã định khác, để phân mảnh mạng blockchain, trong khi cố gắng giảm thiểu việc giao tiếp lẫn nhau, các phân mảnh sẽ xử lý giao dịch trên chuỗi, tranh giành quyền ghi chép - tức là, quy tắc nhóm các nút.
Và 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 xuống một cách đáng kể. Chúng ta có thể suy luận, giả định rằng 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, thì kẻ tấn công muốn kiểm soát toàn bộ mạng blockchain, chỉ cần kiểm soát định hướng một phân mảnh nào đó, mua chuộc một số nút trong phân mảnh đó.
Người sáng lập Near, Alexander Skidanov, đã mô tả vấn đề này như sau: nếu một chuỗi đơn với X nhà xác thực quyết định phân tách thành một chuỗi phân mảnh và chia X nhà 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 nhà 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ố nhà xác thực. Điều này dẫn đến điểm thứ hai: ai sẽ chọn nhà xác thực cho mỗi phân mảnh? Chỉ khi tất cả 5.1% nhà xác thực đều ở trong cùng một phân mảnh, việc kiểm soát 5.1% nhà xác thực mới là có hại. Nếu các nhà xác thực không thể chọn phân mảnh nào để xác thực, thì các bên tham gia kiểm soát 5.1% nhà xác thực rất khó có thể đặt tất cả nhà xác thực vào cùng một phân mảnh, từ đó giảm đáng kể khả năng phá hủy hệ thống của họ.
Hệ thống phân mảnh phải phát triển một cơ chế để tin tưởng rằng mạng sẽ không đảo ngược các giao dịch từ các phân mảnh bên ngoài. Đến nay, có lẽ 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 đó, như vậy xác suất người xác thực không trung thực áp đảo một phân mảnh đơn lẻ sẽ rất thấp. 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 nhất định, 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. Chẳng hạn như Ethereum, giải pháp của Ethereum là chọn ngẫu nhiên một 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ứ mỗi 6.4 phút ( chiều dài một epoch ) lại thay đổi một lần 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 để các nhóm nút 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 bất kỳ tính toán phân mảnh nào cụ thể. Đối với tính toán này, nhiều thiết kế hiện có đều phát triển một blockchain riêng biệt để duy trì toàn bộ mạng lưới. Chuỗi như vậy được gọi là chuỗi Beacon trong Ethereum và Near, chuỗi Relay trong PolkaDot, và chuỗi Cosmos Hub 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 "các giao dịch nào sẽ được phân bổ vào các phân mảnh nào", vừa có thể đạt được mục tiêu xử lý song song vừa có thể tránh được 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 đầu ra giao dịch chưa 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 của giao dịch blockchain chưa được chi tiêu, có thể sử dụng làm đầu vào cho giao dịch mới, trong khi đầu ra giao dịch đã chi tiêu không thể sử dụng lại, tương tự như tình huống giao dịch tiền giấy với thanh toán và đổi tiền thối, khách hàng sẽ đư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 thối cho khách hàng. Dưới mô hình UTXO, giao dịch phân mảnh cần phải 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 sẽ không có ghi chép số dư, một cách có thể là: theo một giá trị đầu vào nào đó của giao dịch, nó sẽ đượ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 vào các phân mảnh đúng cách và nhất quán, các giá trị được nhập vào 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 có giá trị là 1 sẽ được phân vào phân mảnh 1, các giao dịch có giá trị là 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 sẽ hạn chế tính khả dụng của nền tảng, trong khi cho phép giao dịch giữa các phân mảnh lại 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 do việc nâng cao hiệu suất mang lại.
Mô hình tài khoản/số dư: Hệ thống ghi lại số dư của từng 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 từng tài khoản, chỉ khi số dư tài khoản lớn hơn số tiền cần chuyển khoản thì giao dịch mới có thể tiến hành. Trong 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 ngừa 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ỉ đến cách 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ụ về xếp hàng tại siêu thị, mỗi cửa sổ đều có một sổ sách, vậy sổ sách của họ được ghi chép như thế nào? Nếu: khách hàng xếp hàng ở cửa nào, thì ghi vào sổ của cửa đó, chẳng hạn như khách hàng A đi đến cửa A, thì hôm sau khách hàng đó đi đến cửa thanh toán khác chẳng hạn như cửa B, mà cửa B lại 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ẻ giá trị ), 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, phức tạp hơn so với phân mảnh mạng và phân mảnh giao dịch đã đề cập ở trên. Bởi vì trong cơ chế phân mảnh, giao dịch sẽ được phân bổ vào các phân mảnh khác nhau dựa trên địa chỉ, có nghĩa là trạng thái chỉ được lưu trữ trong phân mảnh mà địa chỉ của nó nằm. Lúc này, một vấn đề cần phải đối mặt là giao dịch sẽ không chỉ diễn ra trong một phân mảnh, thường xuyên sẽ liên quan đến việc vượt phân mảnh (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, trong đó địa chỉ của A được phân bổ ở Phân mảnh 1, và 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ổ ở Phân mảnh 2, và 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 các hồ sơ giao dịch trước đó 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 gửi tiền cho B, phân mảnh 2 sẽ phải liên tục tương tác với phân mảnh 1, hiệu suất xử lý giao dịch do đó sẽ giảm đi. Nhưng nếu không