Phân mảnh kỹ thuật: Một khả năng khác cho tính mở rộng của Blockchain
Vào ngày 15 tháng 9 năm 2022, Ethereum đã hoàn thành hợp nhất (Merge). Đây là một thời khắc lịch sử, Ethereum đã chuẩn bị cho điều này trong 5 năm, đã hoãn lại 6 lần. Do phát triển lâu dài và sự chú ý rộng rãi, nhiều người đã hiểu nhầm rằng 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 như vậy. Sự chuyển đổi từ bằng chứng công việc (PoW) sang bằng chứng cổ phần (PoS) chỉ đơn giả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, hay phí thấp hơn. Những mục tiêu thực sự có thể đạt được là 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 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 trong khả năng mở rộng. Bằng cách chia 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à đạt được xử lý song song. Điều này giống như khi thanh toán tại Walmart, việc mở thêm nhiều kênh thu ngân có thể rõ ràng giảm thời gian xếp hàng và nâng cao hiệu quả thanh toán.
Đây chính là logic của phân mảnh, trực tiếp và đơn giản, tuy nhiên quỷ dữ 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à khó khăn trên con đường "phân mảnh", vẽ nên một bản đồ cho những nhà khám phá phân mảnh nhìn lên bầu trời và bước chân vững vàng. Đồ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á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, xem xét các ràng buộc của tam giác không thể, xuất phát từ Ethereum với hệ tọa độ gốc (, 0), theo hai hướng "dọc" và "ngang", chúng ta 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): đạt được bằng cách cải thiện hiệu suất của 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 sự cải thiện ban đầu về thông lượng, đặc biệt là phù hợp với giao dịch tần suất cao, trò chơi và các tình huống ứ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 các nút xác thực hoặc nút đầy đủ đã tăng lên. Duy trì mức độ phi tập trung bị giới hạn bởi tốc độ tăng trưởng ước tính 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, và chi phí tính toán sẽ giảm một nửa ).
Mở rộng theo chiều ngang (Mở rộng theo chiều ngang ): Mở rộng theo chiều ngang thường có một vài ý tưởng. Một ý tưởng là trong ngữ cảnh của blockchain, phân tán khối lượng 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 bảo mật, chi phí gas, máy ảo và các thiết lập 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ơ sở hạ tầng của blockchain thành lớp thực thi, lớp khả năng dữ liệu (DA) và lớp đồng thuận. Cơ chế mô-đun blockchain phổ biến nhất hiện nay chính 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ể được coi là một blockchain, có 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, 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 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ấ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.
Vẫn giả định một tình huống như vậy, khi thanh toán tại Walmart, để nâng cao hiệu quả thanh toán và giảm thời gian chờ đợi của khách hàng, chúng ta đã 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ì chúng ta nên phân bổ họ làm việc ở cửa sổ nào?
Thứ hai, nếu chúng ta có 1000 khách hàng xếp hàng chờ đợi, làm thế nào để quyết định mỗi khách hàng sẽ đến cửa sổ 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ổ sách, làm thế nào để ngăn chặn nhân viên thu ngân mắc lỗi?
Những câu hỏi này thực chất tương ứng với một vài 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 thực trong toàn mạng thuộc 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);
Dữ liệu blockchain được lưu trữ như thế nào trong các phân mảnh khác nhau? Cụ thể: 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, trên tất cả những điều này, 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ì cơ chế đồng thuận PoS hay PoW đều nhằm mục đích để các nút theo một số quy tắc đã định để giành quyền ghi chép, trong quá trình này đảm bảo tính chính xác của sổ cái. Trong khi đó, 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 giảm thiểu khả năng giao tiếp lẫn nhau, từng phân mảnh sẽ xử lý các giao dịch trên chuỗi, 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 Khối khác nhau, độ khó và chi phí của kẻ tấn công sẽ giảm mạnh. Chúng ta có thể suy luận rằng, giả định rằng các 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 Khối trong toàn bộ mạng lưới Blockchain, và mua chuộc một số nút bên trong Khối đó là đủ.
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 người xác thực quyết định phân tách thành một chuỗi phân mảnh và chia X người xác thực thành 10 phân mảnh, mỗi phân mảnh bây giờ chỉ có X/10 người xác thực, thì việc phá hoại một phân mảnh chỉ cần phá hoại 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 nằm 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 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ì việc kiểm soát 5.1% người xác thực sẽ rất khó để tất cả người xác thực đều ở trong cùng một phân mảnh, do đó giảm đáng kể khả năng phá hoại 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ó 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 đó, 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 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 ( một độ dài epoch ) sẽ thay đổi người xác thực.
Nói một cách đơn giả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 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 sinh 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 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. 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", điều này vừa có thể đạt được mục đích xử lý song song vừa có thể tránh được vấn đề chi tiêu gấp đôi. Sự khác biệt trong mô hình sổ cái của Blockchain 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 Blockchain có hai loại cách ghi sổ, lần lượt là 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ỉ đầu ra của 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 đầu ra giao dịch đã chi tiêu không thể được chi tiêu nữa, tương tự như trường hợp thanh toán và tiền thối trong giao dịch tiền giấy, khách hàng sẽ thanh toán một hoặc nhiều tờ tiền cho cửa hàng, cửa hàng sẽ thối lại một hoặc nhiều tờ tiền cho khách hàng. Dưới mô hình UTXO, phân mảnh giao dịch cần liên lạc 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 khả thi là: theo giá trị đầu và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. Như sau:
Để đảm bảo rằng các mục được đặt một cách nhất quán vào các phân mảnh đúng, giá trị được nhập vào hàm băm phải đế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 tạo ra giá trị 1 sẽ được phân vào phân mảnh 1, trong khi các giao dịch tạo ra 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 đô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 thì phải cân nhắc chi phí giao tiếp giữa các 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ể được thực hiện. Trong mô hình tài khoản/số dư, do mỗi 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 tình trạng 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ỉ ra cách mà dữ liệu blockchain được phân phối để 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 của chúng ta ở Walmart, 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ổ đó, chẳng hạn như 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, trong khi cửa B không có thông tin tài khoản trước đó của khách hàng đó (, ví dụ 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ừ 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 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ổ theo địa chỉ để xử lý trong các khối khác nhau, có nghĩa là trạng thái chỉ được lưu trữ trong khối mà địa chỉ của nó thuộc về, vấn đề mà phải đối mặt lúc này là giao dịch không chỉ diễn ra trong một khối, thường xuyên 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ổ trong khối 1, ghi chép giao dịch cũng sẽ được lưu trữ trong khối 1. Địa chỉ của B được phân bổ trong khối 2, ghi chép giao dịch sẽ được lưu trữ trong khối 2.
Một khi A muốn chuyển tiền cho B, sẽ hình thành giao dịch xuyên khối, khối 2 sẽ gọi lại lịch sử giao dịch của khối 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, khối 2 sẽ phải liên tục tương tác với khối 1, hiệu suất xử lý giao dịch sẽ giảm do đó. Tuy nhiên, nếu không tải xuống và xác minh toàn bộ lịch sử của khối cụ thể, người tham gia không nhất thiết phải.
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.
12 thích
Phần thưởng
12
6
Đăng lại
Chia sẻ
Bình luận
0/400
CodeZeroBasis
· 7giờ trước
merge lại sao rồi, nhìn mệt quá
Xem bản gốcTrả lời0
GasFeeBeggar
· 7giờ trước
Năm năm chờ đợi một khoảng trống
Xem bản gốcTrả lời0
rugpull_survivor
· 7giờ trước
Lại là POS lại là phân mảnh, Gas của tôi sao lại đắt như vậy?
Xem bản gốcTrả lời0
RugPullSurvivor
· 7giờ trước
Cứ như vậy còn 5 năm, trước đây được chơi cho Suckers thì nói thật hay.
Xem bản gốcTrả lời0
TopEscapeArtist
· 7giờ trước
Lại thổi phân mảnh, không bằng xem chỉ báo macd thôi.
Xem bản gốcTrả lời0
LiquidationWatcher
· 7giờ trước
L2 mới là con đường đúng đắn, mở rộng chỉ chơi những điều đáng tin cậy.
Khám phá công nghệ phân mảnh: Những thách thức và giải pháp trong việc mở rộng Ethereum
Phân mảnh kỹ thuật: Một khả năng khác cho tính mở rộng của Blockchain
Vào ngày 15 tháng 9 năm 2022, Ethereum đã hoàn thành hợp nhất (Merge). Đây là một thời khắc lịch sử, Ethereum đã chuẩn bị cho điều này trong 5 năm, đã hoãn lại 6 lần. Do phát triển lâu dài và sự chú ý rộng rãi, nhiều người đã hiểu nhầm rằng 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 như vậy. Sự chuyển đổi từ bằng chứng công việc (PoW) sang bằng chứng cổ phần (PoS) chỉ đơn giả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, hay phí thấp hơn. Những mục tiêu thực sự có thể đạt được là 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 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 trong khả năng mở rộng. Bằng cách chia 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à đạt được xử lý song song. Điều này giống như khi thanh toán tại Walmart, việc mở thêm nhiều kênh thu ngân có thể rõ ràng giảm thời gian xếp hàng và nâng cao hiệu quả thanh toán.
Đây chính là logic của phân mảnh, trực tiếp và đơn giản, tuy nhiên quỷ dữ 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à khó khăn trên con đường "phân mảnh", vẽ nên một bản đồ cho những nhà khám phá phân mảnh nhìn lên bầu trời và bước chân vững vàng. Đồ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á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, xem xét các ràng buộc của tam giác không thể, xuất phát từ Ethereum với hệ tọa độ gốc (, 0), theo hai hướng "dọc" và "ngang", chúng ta 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): đạt được bằng cách cải thiện hiệu suất của 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 sự cải thiện ban đầu về thông lượng, đặc biệt là phù hợp với giao dịch tần suất cao, trò chơi và các tình huống ứ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 các nút xác thực hoặc nút đầy đủ đã tăng lên. Duy trì mức độ phi tập trung bị giới hạn bởi tốc độ tăng trưởng ước tính 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, và chi phí tính toán sẽ giảm một nửa ).
Mở rộng theo chiều ngang (Mở rộng theo chiều ngang ): Mở rộng theo chiều ngang thường có một vài ý tưởng. Một ý tưởng là trong ngữ cảnh của blockchain, phân tán khối lượng 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 bảo mật, chi phí gas, máy ảo và các thiết lập 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ơ sở hạ tầng của blockchain thành lớp thực thi, lớp khả năng dữ liệu (DA) và lớp đồng thuận. Cơ chế mô-đun blockchain phổ biến nhất hiện nay chính 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ể được coi là một blockchain, có 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, 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 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ấ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.
Vẫn giả định một tình huống như vậy, khi thanh toán tại Walmart, để nâng cao hiệu quả thanh toán và giảm thời gian chờ đợi của khách hàng, chúng ta đã 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ì chúng ta nên phân bổ họ làm việc ở cửa sổ nào?
Thứ hai, nếu chúng ta có 1000 khách hàng xếp hàng chờ đợi, làm thế nào để quyết định mỗi khách hàng sẽ đến cửa sổ 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ổ sách, làm thế nào để ngăn chặn nhân viên thu ngân mắc lỗi?
Những câu hỏi này thực chất tương ứng với một vài 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 thực trong toàn mạng thuộc 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);
Dữ liệu blockchain được lưu trữ như thế nào trong các phân mảnh khác nhau? Cụ thể: 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, trên tất cả những điều này, 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ì cơ chế đồng thuận PoS hay PoW đều nhằm mục đích để các nút theo một số quy tắc đã định để giành quyền ghi chép, trong quá trình này đảm bảo tính chính xác của sổ cái. Trong khi đó, 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 giảm thiểu khả năng giao tiếp lẫn nhau, từng phân mảnh sẽ xử lý các giao dịch trên chuỗi, 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 Khối khác nhau, độ khó và chi phí của kẻ tấn công sẽ giảm mạnh. Chúng ta có thể suy luận rằng, giả định rằng các 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 Khối trong toàn bộ mạng lưới Blockchain, và mua chuộc một số nút bên trong Khối đó là đủ.
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 người xác thực quyết định phân tách thành một chuỗi phân mảnh và chia X người xác thực thành 10 phân mảnh, mỗi phân mảnh bây giờ chỉ có X/10 người xác thực, thì việc phá hoại một phân mảnh chỉ cần phá hoại 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 nằm 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 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ì việc kiểm soát 5.1% người xác thực sẽ rất khó để tất cả người xác thực đều ở trong cùng một phân mảnh, do đó giảm đáng kể khả năng phá hoại 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ó 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 đó, 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 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 ( một độ dài epoch ) sẽ thay đổi người xác thực.
Nói một cách đơn giả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 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 sinh 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 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. 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", điều này vừa có thể đạt được mục đích xử lý song song vừa có thể tránh được vấn đề chi tiêu gấp đôi. Sự khác biệt trong mô hình sổ cái của Blockchain 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 Blockchain có hai loại cách ghi sổ, lần lượt là 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ỉ đầu ra của 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 đầu ra giao dịch đã chi tiêu không thể được chi tiêu nữa, tương tự như trường hợp thanh toán và tiền thối trong giao dịch tiền giấy, khách hàng sẽ thanh toán một hoặc nhiều tờ tiền cho cửa hàng, cửa hàng sẽ thối lại một hoặc nhiều tờ tiền cho khách hàng. Dưới mô hình UTXO, phân mảnh giao dịch cần liên lạc 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 khả thi là: theo giá trị đầu và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. Như sau:
Để đảm bảo rằng các mục được đặt một cách nhất quán vào các phân mảnh đúng, giá trị được nhập vào hàm băm phải đế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 tạo ra giá trị 1 sẽ được phân vào phân mảnh 1, trong khi các giao dịch tạo ra 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 đô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 thì phải cân nhắc chi phí giao tiếp giữa các 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ể được thực hiện. Trong mô hình tài khoản/số dư, do mỗi 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 tình trạng 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ỉ ra cách mà dữ liệu blockchain được phân phối để 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 của chúng ta ở Walmart, 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ổ đó, chẳng hạn như 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, trong khi cửa B không có thông tin tài khoản trước đó của khách hàng đó (, ví dụ 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ừ 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 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ổ theo địa chỉ để xử lý trong các khối khác nhau, có nghĩa là trạng thái chỉ được lưu trữ trong khối mà địa chỉ của nó thuộc về, vấn đề mà phải đối mặt lúc này là giao dịch không chỉ diễn ra trong một khối, thường xuyên 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ổ trong khối 1, ghi chép giao dịch cũng sẽ được lưu trữ trong khối 1. Địa chỉ của B được phân bổ trong khối 2, ghi chép giao dịch sẽ được lưu trữ trong khối 2.
Một khi A muốn chuyển tiền cho B, sẽ hình thành giao dịch xuyên khối, khối 2 sẽ gọi lại lịch sử giao dịch của khối 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, khối 2 sẽ phải liên tục tương tác với khối 1, hiệu suất xử lý giao dịch sẽ giảm do đó. Tuy nhiên, nếu không tải xuống và xác minh toàn bộ lịch sử của khối cụ thể, người tham gia không nhất thiết phải.