Tổng quan
Trong thế giới Blockchain, Forks (phân nhánh) và Block Finalization (xác nhận khối) là hai khái niệm được quan tâm đặc biệt. Forks xảy ra khi một phần của mạng Blockchain tách ra khỏi mạng chính, tạo ra một đường dẫn khác cho các giao dịch. Còn Block Finalization là quá trình xác định rằng một khối đã được kết thúc và không thể bị thay đổi.
Trong bài trước chúng ta đã xem xét quá trình tạo một block mới trên Flow như thế nào. Trong bài đăng này, chúng ta sẽ tiếp tục xây dựng dựa trên những gì chúng ta đã học và mở rộng hiểu biết về vòng đời của block.
Blockchain Forks
Chúng ta cần hiểu tại sao và làm thế nào blockchain có thể phân nhánh, để hiểu tại sao việc hoàn thiện khối lại quan trọng.
Giao thức blockchain có thể phân nhánh trong 3 trường hợp.
![fork](http://gfiblockchain.com/wp-content/uploads/2023/02/Flow-fork.webp)
Sơ đồ thể hiện cho một node đồng thuật quyết định cần đưa ra khi có phân nhánh xảy ra trên blockchain, được gọi là quy tăng lựa chọn phân nhánh(fork-choice). Thuật toán HotStuff cung cấp một số mức tự do ở đây, trên Flow chúng ta chọn “Phân nhánh mới nhất” (Tức là phân nhánh có QC lượt view nhất).
Consensus leader không nhận được phiếu bầu có đủ trọng số để tạo Quorum Certificate (QC). Cũng như sơ đồ trên, nhưng thay vì không nhận block B2a, trưởng khối D thống nhất lại không nhận đủ số phiếu để lập QC cho khối B2a. Trong trường hợp này, consensus leader D sẽ đề xuất một block dựa trên block cuối cùng mà QC được cam kết với chuỗi.
Malicious consensus leader (Bên có ý định gây hại mạng lưới) xây dựng một block từ khối gốc không phải là khối mới nhất. Các node độc hại có thể làm điều này vì nhiều lý do, chẳng hạn như để loại trừ các giao dịch mà nó không muốn thực hiện.
Bây giờ chúng ta đã hiểu về blockchain forking, chúng ta có thể xem xét quá trình hoàn thiện block.
Block Finalization
Finalization là một khái niệm quan trọng trong việc xây dựng Flow Blockchain — điều đó có nghĩa là sự đồng thuận đã cam kết với block này và nó được đảm bảo duy trì trên chuỗi.
Trong mạng Blockchain, các giao dịch được đóng gói thành các khối và được đẩy vào mạng để được xác thực bởi các nút mạng (node). Các nút mạng sẽ thực hiện tính toán và xác nhận các giao dịch trong khối, sau đó đưa ra một quyết định xem khối đó có được chấp nhận hay không. Nếu khối được chấp nhận, nó sẽ được thêm vào chuỗi khối (blockchain) và trở thành một phần của lịch sử giao dịch của mạng.
Tuy nhiên, trong một số trường hợp, khối có thể bị thay đổi hoặc lừa đảo. Vì vậy, để đảm bảo tính toàn vẹn của hệ thống, quá trình Block Finalization sẽ được thực hiện để xác định rằng một khối đã được chấp nhận và không thể bị thay đổi.
Các mạng Blockchain khác nhau có các cơ chế Block Finalization khác nhau. Ví dụ, Ethereum sử dụng thuật toán Proof of Work (POW) để xác nhận các khối, trong khi Bitcoin sử dụng POW và Proof of Stake (POS). Trong khi đó, Flow Blockchain sử dụng POS-SN, một thuật toán xác nhận khối tiên tiến hơn, giúp đảm bảo tính nhất quán và bảo mật của hệ thống.
Đối với khách hàng đã gửi một giao dịch được bao gồm trong một khối hoàn thiện, đảm bảo rằng giao dịch được cam kết với chuỗi và sẽ được thực thi.
![flow Finalized](http://gfiblockchain.com/wp-content/uploads/2023/02/Block-1.webp)
Việc hoàn thiện một khối rất quan trọng đối với các node tham gia vào mạng, bởi vì khi một khối được hoàn thiện, điều đó có nghĩa là họ có thể loại bỏ bất kỳ nhánh nào không chứa khối đã hoàn thiện.
![Finalized](http://gfiblockchain.com/wp-content/uploads/2023/02/finalized-2-scaled.webp)