Phân mảnh kỹ thuật: Blockchain mở rộng khám phá tiên tiến
Ngày 15 tháng 9 năm 2022, Ethereum đã hoàn thành việc hợp nhất (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à đã hoãn lại 6 lần. Do việc điều chỉnh lặp đi lặp lại và phát triển lâu dài, cùng với hiệu ứng được nhiều người chú ý, nhiều người đã nhầm tưởng 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 hơn, nhưng thực tế không phải vậy. Sự chuyển đổi từ PoW( bằng chứng công việc) sang PoS( bằng chứng cổ phần) chỉ là thay đổi "đường ray và bánh xe", sẽ không trực tiếp mang lại tốc độ nhanh hơn, dung lượng lớn hơn, hoặc phí thấp hơn. Những mục tiêu này thực sự có thể đạt được bởi một bộ giải pháp toàn diện: mạng chính có khả năng phân mảnh kết hợp với 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 cho vấn đề khó khăn về khả năng mở rộng. Bằng cách chia các nút trong mạng thành những nhóm nhỏ hơn, xử lý các tập giao dịch khác nhau và đạt được xử lý song song. Điều này giống như khi bạn thanh toán tại siêu thị, bằng cách mở nhiều làn thu ngân, 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ỷ ở 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 nhiều vấn đề. Bài viết này nhằm sắp xếp hướng đi và 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ước nhìn bầu trời đầy sao và bước đi 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 khám phá khả thi: Shardeum và phân mảnh động.
Một, về "Phân mảnh"
Nói một cách đơn giản, xét các hạn chế của tam giác không thể, bắt đầu từ Ethereum như gốc tọa độ (0,0), theo hai hướng "dọc" và "ngang", chúng tôi chia 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 phần cứng hiện có của hệ thống. Thiết lập một mạng phi tập trung, trong đó mỗi nút trong mạng đều có khả năng tính toán siêu, 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 tiến ban đầu về thông lượng, đặc biệt thích hợp cho giao dịch tần suất cao, trò chơi và các kịch bản ứng dụng nhạy cảm với độ trễ khác. 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 nút xác thực hoặc nút toàn phần 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 chung của hiệu suất phần cứng tính toán ( đây được gọi là "Định luật Moore": Số lượng transistor trên chip sẽ gấp đôi sau mỗi hai năm, chi phí tính toán sẽ giảm phân nửa ).
Mở rộng ngang (Horizontal Scaling): Mở rộng ngang thường có một vài cách tiếp cận. 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 đến 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, cách này có thể tùy chỉnh hoàn toàn lớp thực thi của mỗi chuỗi, như yêu cầu phần cứng của nút, chức năng 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 cơ sở hạ tầng blockchain thành lớp thực thi, lớp khả dụng của dữ liệu (DA) và lớp đồng thuận. Cơ chế mô-đun blockchain phổ biến nhất là rollup. Một cách khác là chia một blockchain thành nhiều phân mảnh, thực thi song song. Mỗi phân mảnh có thể xem như một blockchain, nghĩa 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, các ý 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 thỏa hiệp trong tam giác không thể, kết hợp với thiết kế cơ chế khuyến khích do sức mạnh 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, thanh toán mua sắm siêu thị, để nâng cao hiệu suất 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 thành 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 quy tắc thống nhất:
Đầu tiên, nếu chúng ta có 10 thu ngân, làm thế nào để phân bổ họ đến các quầy làm việc?
Thứ hai, nếu chúng ta có 1000 khách hàng xếp hàng chờ, chúng ta nên quyết định như thế nào để mỗi khách hàng đi đến cửa sổ thanh toán nào?
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 tài khoản, làm thế nào để ngăn chặn nhân viên thu ngân mắc lỗi?
Các 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, lần lượt là:
Làm thế nào để xác định các nút/xác minh 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 khối nào? Tức là: làm thế nào để thực hiện phân mảnh giao dịch (Transaction 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 của 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ả cơ chế đồng thuận PoS hay PoW đều nhằm để các nút tranh giành quyền ghi chép theo một 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 phân mảnh mạng lưới là việc cần một quy tắc nhất định khác, để phân mảnh mạng Blockchain, trong khi 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 theo cấp số nhân. 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 muốn kiểm soát toàn bộ mạng blockchain chỉ cần định hướng kiểm soát một phân mảnh, mua chuộc một số nút trong phân mảnh đó.
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. Cho đến nay, câu trả lời tốt nhất có thể là đảm bảo rằng số lượng người xác thực trong một phân mảnh cao hơn một ngưỡng tối thiểu nào đó, như vậy xác suất của những người xác thực không trung thực chiếm ưu thế trong 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 nào đó, 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à ngẫu nhiên chọn một người xác thực của 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 ( một độ dài 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 thực độ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 cụ thể nào. Đối với tính toán này, nhiều ý tưởng 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à Beacon chain trong Ethereum và Near, Relay chain trong PolkaDot, và 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", nhằm đạt được mục đích xử lý song song và 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 sự phát triển của phân mảnh giao dịch.
Hiện tại trong mạng blockchain có hai loại phương thức ghi sổ, lần lượt là mô hình UTXO( (Unspent Transaction Outputs) 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ể đượ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 nữa, tương tự như trong trường hợp giao dịch tiền giấy với việc thanh toán và trả lại tiền thừa, 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 cho khách hàng. Dưới mô hình UTXO, giao dịch phân mảnh cần giao tiếp qua 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 về số dư, một cách khả thi là: theo một giá trị đầu vào nào đó của giao dịch, đư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 theo một cách 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 Shard. Sau đó, các giao dịch tạo ra giá trị là 1 sẽ được phân vào phân mảnh 1, trong khi các giao dịch tạo ra giá trị là 2 sẽ được phân vào phân mảnh 2. Tuy nhiên, nhược điểm của phương pháp này là các phân mảnh phải giao tiếp với nhau để tránh các cuộc tấn công chi tiêu gấp đôi. Nếu hạn chế giao dịch xuyên phân mảnh sẽ hạn chế khả năng sử dụng của nền tảng, trong khi cho phép giao dịch xuyên phân mảnh thì phải cân nhắc giữa chi phí giao tiếp xuyên phân mảnh và lợi ích từ 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 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 chuyển khoản cần thiết thì giao dịch mới có thể diễn ra. Trong mô hình tài khoản/số dư, do một giao dịch chỉ có một đầu vào, do đó 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 tình trạng chi tiêu gấp đôi. Do đó, hầu hết các blockchain áp dụng công nghệ phân mảnh đều giống như hệ thống sổ cái tài khoản của Ethereum.
![Giải thích chi tiết về chuỗi công cộng mới Shardeum: Một khả năng khác của phân mảnh])https://img-cdn.gateio.im/webp-social/moments-4227a2e49f76cd01b23d7b5398e51a3c.webp(
) 03 Trạng thái Phân mảnh ### State Sharding (
Trạng thái phân mảnh chỉ ra cách thức dữ liệu trong blockchain được phân bổ để lưu trữ trong các phân mảnh khác nhau.
Vẫn tiếp tục với ví dụ xếp hàng ở siêu thị của chúng ta, mỗi quầy đề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 xếp hàng ở quầy nào, thì ghi sổ ở quầy đó, chẳng hạn khách hàng A đến quầy A, thì ngày hôm sau khách hàng đó đến quầy thanh toán khác chẳng hạn như quầy B, mà quầy B không có thông tin tài khoản quá khứ của khách hàng đó ), chẳng hạn như liên quan đến thẻ giá trị lưu trữ 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ừ quầy 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 cả 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ỉ đó nằm trong đó, vấn đề mà chúng ta phải đối mặt lúc này 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, và địa chỉ của A được phân bổ trong 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ổ trong 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 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 chuyển 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 sẽ do đó giảm xuống. Tuy nhiên, nếu không tải xuống và xác minh toàn bộ lịch sử của phân mảnh cụ thể, thì người tham gia sẽ không chắc chắn về trạng thái tương tác giữa họ là kết quả của một số chuỗi khối hợp lệ, và chuỗi khối như vậy thực sự là chuỗi quy chuẩn trong phân mảnh.
Do đó, so với chuỗi đơn không phân mảnh, hệ thống phân mảnh phải đối mặt với thách thức mới là người dùng không thể trực tiếp xác minh hoàn toàn tính hợp lệ và tính khả dụng của bất kỳ chuỗi nào, vì dữ liệu quá nhiều. Cần cung cấp cho người dùng phương pháp gián tiếp tối đa để không cần tin tưởng và thực dụng để xác minh chuỗi nào hoàn toàn khả dụng và hợp lệ, giúp họ xác định chuỗi nào là chuỗi tiêu chuẩn. Trong thực tế, các nhà phát triển blockchain có thể sử dụng các công nghệ sau để giải quyết một số vấn đề trong việc xác minh: như ủy ban, SNARKs/STARKs, cơ chế ngư dân, cũng như chứng minh gian lận và tính khả dụng của dữ liệu.
Có hai cách tiếp cận để giải quyết vấn đề này, một là đồng bộ qua các khối phân mảnh.
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.
11 thích
Phần thưởng
11
7
Chia sẻ
Bình luận
0/400
ExpectationFarmer
· 9giờ trước
Phân mảnh? Lại không thể ăn được.
Xem bản gốcTrả lời0
BuyHighSellLow
· 16giờ trước
Rug Pull 5 năm cuối cùng cũng đã xong.
Xem bản gốcTrả lời0
ShitcoinConnoisseur
· 16giờ trước
Vitalik Buterin nói gì cũng đúng~
Xem bản gốcTrả lời0
SellTheBounce
· 16giờ trước
Lại thấy một đợt đồ ngốc chơi đùa với mọi người xong lại đổi dao cắt.
Xem bản gốcTrả lời0
BrokenYield
· 16giờ trước
thở dài... lại một lần nữa là một bản hợp nhất được thổi phồng mà không giải quyết được gì. thật sự là tiền điện tử cổ điển.
Xem bản gốcTrả lời0
SchroedingerGas
· 16giờ trước
Lại chơi đùa với mọi người một đợt nữa?
Xem bản gốcTrả lời0
Blockblind
· 16giờ trước
Làm 5 năm chỉ để đổi vỏ? Chúng ta cần gas thấp nha.
Khám phá công nghệ phân mảnh: Phân tích nguyên lý và thách thức của việc mở rộng Blockchain
Phân mảnh kỹ thuật: Blockchain mở rộng khám phá tiên tiến
Ngày 15 tháng 9 năm 2022, Ethereum đã hoàn thành việc hợp nhất (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à đã hoãn lại 6 lần. Do việc điều chỉnh lặp đi lặp lại và phát triển lâu dài, cùng với hiệu ứng được nhiều người chú ý, nhiều người đã nhầm tưởng 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 hơn, nhưng thực tế không phải vậy. Sự chuyển đổi từ PoW( bằng chứng công việc) sang PoS( bằng chứng cổ phần) chỉ là thay đổi "đường ray và bánh xe", sẽ không trực tiếp mang lại tốc độ nhanh hơn, dung lượng lớn hơn, hoặc phí thấp hơn. Những mục tiêu này thực sự có thể đạt được bởi một bộ giải pháp toàn diện: mạng chính có khả năng phân mảnh kết hợp với 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 cho vấn đề khó khăn về khả năng mở rộng. Bằng cách chia các nút trong mạng thành những nhóm nhỏ hơn, xử lý các tập giao dịch khác nhau và đạt được xử lý song song. Điều này giống như khi bạn thanh toán tại siêu thị, bằng cách mở nhiều làn thu ngân, 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ỷ ở 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 nhiều vấn đề. Bài viết này nhằm sắp xếp hướng đi và 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ước nhìn bầu trời đầy sao và bước đi 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 khám phá khả thi: Shardeum và phân mảnh động.
Một, về "Phân mảnh"
Nói một cách đơn giản, xét các hạn chế của tam giác không thể, bắt đầu từ Ethereum như gốc tọa độ (0,0), theo hai hướng "dọc" và "ngang", chúng tôi chia 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 phần cứng hiện có của hệ thống. Thiết lập một mạng phi tập trung, trong đó mỗi nút trong mạng đều có khả năng tính toán siêu, 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 tiến ban đầu về thông lượng, đặc biệt thích hợp cho giao dịch tần suất cao, trò chơi và các kịch bản ứng dụng nhạy cảm với độ trễ khác. 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 nút xác thực hoặc nút toàn phần 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 chung của hiệu suất phần cứng tính toán ( đây được gọi là "Định luật Moore": Số lượng transistor trên chip sẽ gấp đôi sau mỗi hai năm, chi phí tính toán sẽ giảm phân nửa ).
Mở rộng ngang (Horizontal Scaling): Mở rộng ngang thường có một vài cách tiếp cận. 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 đến 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, cách này có thể tùy chỉnh hoàn toàn lớp thực thi của mỗi chuỗi, như yêu cầu phần cứng của nút, chức năng 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 cơ sở hạ tầng blockchain thành lớp thực thi, lớp khả dụng của dữ liệu (DA) và lớp đồng thuận. Cơ chế mô-đun blockchain phổ biến nhất là rollup. Một cách khác là chia một blockchain thành nhiều phân mảnh, thực thi song song. Mỗi phân mảnh có thể xem như một blockchain, nghĩa 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, các ý 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 thỏa hiệp trong tam giác không thể, kết hợp với thiết kế cơ chế khuyến khích do sức mạnh 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, thanh toán mua sắm siêu thị, để nâng cao hiệu suất 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 thành 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 quy tắc thống nhất:
Đầu tiên, nếu chúng ta có 10 thu ngân, làm thế nào để phân bổ họ đến các quầy làm việc?
Thứ hai, nếu chúng ta có 1000 khách hàng xếp hàng chờ, chúng ta nên quyết định như thế nào để mỗi khách hàng đi đến cửa sổ thanh toán nào?
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 tài khoản, làm thế nào để ngăn chặn nhân viên thu ngân mắc lỗi?
Các 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, lần lượt là:
Làm thế nào để xác định các nút/xác minh 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 khối nào? Tức là: làm thế nào để thực hiện phân mảnh giao dịch (Transaction Sharding);
Blockchain资料如何在不同Phân mảnh中储存?即:如何进行状态Phân mảnh(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 của 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ả cơ chế đồng thuận PoS hay PoW đều nhằm để các nút tranh giành quyền ghi chép theo một 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 phân mảnh mạng lưới là việc cần một quy tắc nhất định khác, để phân mảnh mạng Blockchain, trong khi 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 theo cấp số nhân. 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 muốn kiểm soát toàn bộ mạng blockchain chỉ cần định hướng kiểm soát một phân mảnh, mua chuộc một số nút trong phân mảnh đó.
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. Cho đến nay, câu trả lời tốt nhất có thể là đảm bảo rằng số lượng người xác thực trong một phân mảnh cao hơn một ngưỡng tối thiểu nào đó, như vậy xác suất của những người xác thực không trung thực chiếm ưu thế trong 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 nào đó, 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à ngẫu nhiên chọn một người xác thực của 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 ( một độ dài 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 thực độ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 cụ thể nào. Đối với tính toán này, nhiều ý tưởng 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à Beacon chain trong Ethereum và Near, Relay chain trong PolkaDot, và 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", nhằm đạt được mục đích xử lý song song và 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 sự phát triển của phân mảnh giao dịch.
Hiện tại trong mạng blockchain có hai loại phương thức ghi sổ, lần lượt là mô hình UTXO( (Unspent Transaction Outputs) 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ể đượ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 nữa, tương tự như trong trường hợp giao dịch tiền giấy với việc thanh toán và trả lại tiền thừa, 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 cho khách hàng. Dưới mô hình UTXO, giao dịch phân mảnh cần giao tiếp qua 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 về số dư, một cách khả thi là: theo một giá trị đầu vào nào đó của giao dịch, đư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 theo một cách 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 Shard. Sau đó, các giao dịch tạo ra giá trị là 1 sẽ được phân vào phân mảnh 1, trong khi các giao dịch tạo ra giá trị là 2 sẽ được phân vào phân mảnh 2. Tuy nhiên, nhược điểm của phương pháp này là các phân mảnh phải giao tiếp với nhau để tránh các cuộc tấn công chi tiêu gấp đôi. Nếu hạn chế giao dịch xuyên phân mảnh sẽ hạn chế khả năng sử dụng của nền tảng, trong khi cho phép giao dịch xuyên phân mảnh thì phải cân nhắc giữa chi phí giao tiếp xuyên phân mảnh và lợi ích từ 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 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 chuyển khoản cần thiết thì giao dịch mới có thể diễn ra. Trong mô hình tài khoản/số dư, do một giao dịch chỉ có một đầu vào, do đó 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 tình trạng chi tiêu gấp đôi. Do đó, hầu hết các blockchain áp dụng công nghệ phân mảnh đều giống như hệ thống sổ cái tài khoản của Ethereum.
![Giải thích chi tiết về chuỗi công cộng mới Shardeum: Một khả năng khác của phân mảnh])https://img-cdn.gateio.im/webp-social/moments-4227a2e49f76cd01b23d7b5398e51a3c.webp(
) 03 Trạng thái Phân mảnh ### State Sharding (
Trạng thái phân mảnh chỉ ra cách thức dữ liệu trong blockchain được phân bổ để lưu trữ trong các phân mảnh khác nhau.
Vẫn tiếp tục với ví dụ xếp hàng ở siêu thị của chúng ta, mỗi quầy đề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 xếp hàng ở quầy nào, thì ghi sổ ở quầy đó, chẳng hạn khách hàng A đến quầy A, thì ngày hôm sau khách hàng đó đến quầy thanh toán khác chẳng hạn như quầy B, mà quầy B không có thông tin tài khoản quá khứ của khách hàng đó ), chẳng hạn như liên quan đến thẻ giá trị lưu trữ 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ừ quầy 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 cả 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ỉ đó nằm trong đó, vấn đề mà chúng ta phải đối mặt lúc này 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, và địa chỉ của A được phân bổ trong 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ổ trong 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 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 chuyển 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 sẽ do đó giảm xuống. Tuy nhiên, nếu không tải xuống và xác minh toàn bộ lịch sử của phân mảnh cụ thể, thì người tham gia sẽ không chắc chắn về trạng thái tương tác giữa họ là kết quả của một số chuỗi khối hợp lệ, và chuỗi khối như vậy thực sự là chuỗi quy chuẩn trong phân mảnh.
Do đó, so với chuỗi đơn không phân mảnh, hệ thống phân mảnh phải đối mặt với thách thức mới là người dùng không thể trực tiếp xác minh hoàn toàn tính hợp lệ và tính khả dụng của bất kỳ chuỗi nào, vì dữ liệu quá nhiều. Cần cung cấp cho người dùng phương pháp gián tiếp tối đa để không cần tin tưởng và thực dụng để xác minh chuỗi nào hoàn toàn khả dụng và hợp lệ, giúp họ xác định chuỗi nào là chuỗi tiêu chuẩn. Trong thực tế, các nhà phát triển blockchain có thể sử dụng các công nghệ sau để giải quyết một số vấn đề trong việc xác minh: như ủy ban, SNARKs/STARKs, cơ chế ngư dân, cũng như chứng minh gian lận và tính khả dụng của dữ liệu.
Có hai cách tiếp cận để giải quyết vấn đề này, một là đồng bộ qua các khối phân mảnh.