Cafe blockchain số 20. Hard Fork và Soft Fork

 Như mình đã nói trong các bài trước, thì giao thức đồng thuận (consensus protocol) cũng giống như luật pháp của 1 quốc gia, giống như kinh thánh của 1 tôn giáo, hay các quy định, nội quy của 1 tập thể, 1 cộng đồng nào đó.

Và kinh thánh có thể được sửa đổi, luật pháp, thông tư,... cũng được cập nhật mới liên tục,... thì trong thế giới blockchain cũng vậy. Mỗi lần như thế, sẽ có thể gây ra sự chia rẽ trong cộng đồng (các node, miner,..), họ gọi mỗi lần như vậy là fork.
----
Nếu đợt nâng cấp có sự chuẩn bị kỹ, đồng thuận 100%, thì lúc này đợt fork chỉ đơn giản là thay đổi(nâng cấp) bình thường (nhưng vẫn gọi là fork).
Nhưng nếu không có sự đồng thuận tuyệt đối, hoặc 1 bộ phận trong cộng đồng không cập nhật kịp thời(chậm trễ), thì có thể có sự chia rẽ, nghĩa là tồn tại 2 hay nhiều nhánh khác nhau, mỗi nhánh có dữ liệu về các block khác nhau.
Thông thường, 1 nhánh sẽ yếu dần và chết khi không có các block mới được cắm thêm vào hoặc khi không còn node nào sử dụng nó nữa.
Một số trường hợp đặc biệt, sự chia rẽ của cộng đồng quá lớn, mỗi nhánh đều có 1 lực lượng ủng hộ đủ lớn, thì khi đó 1 chain mới ra đời⇒ 1 đồng coin mới ra đời.
----
Vậy soft fork khác hard fork như thế nào?
Khi giao thức đồng thuận bị thay đổi, thì có 2 trường hợp xảy ra: Có tương thích ngược và không có tương thích ngược.
Tương thích ngược nghĩa là nếu node M đồng ý về consensus mới, node C thì không, vẫn giữ consensus cũ. Thì khi node M gửi dữ liệu (block) đến C thì C đồng ý, nhưng khi C gửi đến M thì M không đồng ý. Nghĩa là mới gửi đến cũ thì được (tương thích ngược lại với cái cũ), nhưng cũ gửi đến mới thì không được chấp nhận.
Khi 1 soft fork xảy ra, thì việc chia tách thành 2 nhánh chỉ là tạm thời
Hard Fork thì ngược lại, không tương thích ngược.
Nếu không có sự đồng thuận tuyệt đối, hoặc 1 nhóm không cập nhật nhập kịp thời, lúc này sẽ chia tách thành 2 cộng đồng, 1 bên theo luật cũ, 1 bên theo luật mới. Nếu lực lượng 1 bên quá yếu, không đủ lợi ích để duy trì, thì nhánh đó sẽ tự biến mất dần dần (khi không còn node nào theo consensus đó nữa).

Nếu sự chia rẽ của cộng đồng quá lớn, mỗi nhánh đều có 1 lực lượng ủng hộ đủ lớn, thì khi đó 1 chain mới ra đời⇒ 1 đồng coin mới ra đời.
---
Temporary Fork
Ngoài các đợt hard fork và soft fork, thì các chain cũng thường xuyên bị chia tách(fork) tạm thời.
Ví dụ như khi bị tấn công 51%, hay khi có 1 thợ mỏ đào được 1 block, chưa kịp phát ra toàn mạng lưới thì ở đâu đó, cũng có 1 thợ mỏ tìm ra được 1 block khác. Lúc này mạng lưới sẽ bị fork tạm thời. Mỗi nhóm sẽ đồng ý với 1 nhánh riêng (độ dài bằng nhau).
Sau đó khi 1 nhánh có độ dài vượt trội, thì các node sẽ chấp nhận nhánh dài hơn đó. Các transaction trong các khối ở nhánh ngắn hơn sẽ vô hiệu (nếu xung đột hoặc trùng lặp với các transaction ở nhánh chính) hoặc được đưa trở lại danh sách chờ để được xác nhận sau.
Trong Bitcoin gọi các khối trong nhánh ngắn hơn đó là khối cũ (Stale Blocks), các thợ mỏ đào được các khối cũ sẽ mất phần thưởng. (1 số người gọi là khối mồ côi - orphan block, thuật ngữ này còn gây tranh cãi, orphan block có thể được hiểu là khối không có cha mẹ, không biết cha mẹ là ai )
Còn ở Ethereum, các khối đó gọi là khối chú (Uncle block), và thợ mỏ đào ra các khối chú sẽ vẫn được thưởng (mặc dù ít hơn khối trong nhánh chính).
Trên Ethereum mỗi ngày có vài trăm Uncle block, nghĩa là Ethereum bị fork tạm thời vài trăm lần mỗi ngày.(https://etherscan.io/uncles)

Nhận xét

Bài đăng phổ biến từ blog này

Tấn công thao túng giá trong DeFi - đơn giản, hay gặp nhưng khó nhận diện

Ai bảo bitcoin là hữu hạn

Cafe sáng blockchain - tập 1. PHI TẬP TRUNG (decentralized)

Tổng số lượt xem trang