Hard fork và soft fork là gì?

Trả lời nhanh: Cả hai đều là thay đổi luật của một blockchain. Soft fork siết chặt luật nên node chưa nâng cấp vẫn chấp nhận khối mới và mạng thường không tách đôi. Hard fork đổi luật theo cách node cũ từ chối khối mới, nên mọi node phải nâng cấp, nếu không chuỗi có thể tách thành hai mạng.

Điểm chính

  • Điểm phân biệt cốt lõi là tương thích ngược: khối do node mới tạo ra có được node cũ chấp nhận hay không.
  • Soft fork thu hẹp tập khối hợp lệ. Hard fork mở rộng hoặc thay đổi tập đó.
  • Soft fork cần đa số thợ đào (miner) hoặc validator áp dụng luật mới. Hard fork cần gần như toàn bộ cộng đồng nâng cấp.
  • Fork gây tranh cãi có thể sinh ra hai đồng coin. Fork có kế hoạch và đồng thuận cao thì chỉ là một bản nâng cấp.
  • Người giữ coin thường không phải làm gì với soft fork, nhưng cần theo dõi thông báo của sàn và ví khi có hard fork.
Mục lục
  1. Fork trong blockchain nghĩa là gì và có mấy loại?
  2. Node kiểm tra khối thế nào, và vì sao đó là gốc của sự khác biệt?
  3. Soft fork hoạt động thế nào và vì sao không tách chuỗi?
  4. Hard fork hoạt động thế nào và khi nào chuỗi tách đôi?
  5. Bảng so sánh hard fork và soft fork theo 10 tiêu chí
  6. Ví dụ thực tế nào cho thấy sự khác biệt rõ nhất?
  7. Ai quyết định một fork, và kích hoạt bằng cách nào?
  8. Fork có thể ảnh hưởng gì đến người giữ coin và doanh nghiệp?
  9. Blockchain doanh nghiệp (riêng tư, liên minh) có fork không?
  10. Hard fork và soft fork khác gì với các khái niệm dễ nhầm?
  11. Khi nào nhà phát triển chọn soft fork, khi nào buộc phải hard fork?
  12. Ưu và nhược điểm của từng loại
  13. Cách nhận biết một đợt fork đang diễn ra và nguồn thông tin đáng tin
  14. Câu hỏi thường gặp

Khi tìm “hard fork và soft fork là gì”, phần lớn người đọc muốn hai thứ: phân biệt được hai khái niệm, và biết một đợt fork ảnh hưởng gì đến tài sản hoặc hệ thống của mình. Bài này đi từ cơ chế kiểm tra khối của node, đến các vụ fork có thật trên Bitcoin và Ethereum, rồi tới tình huống thực tế của người dùng và đội kỹ thuật. Nếu bạn chưa nắm nền tảng, hãy đọc trước bài blockchain là gì và cấu trúc của nó.

Fork trong blockchain nghĩa là gì và có mấy loại?

Fork (phân nhánh) là hiện tượng chuỗi khối có hơn một nhánh hợp lệ tại cùng một thời điểm hoặc có hai bộ luật cùng tồn tại. Có ba tình huống thường bị gộp chung nên dễ gây nhầm:

  • Fork tạm thời: xảy ra khi hai người khai thác cùng tìm được một khối mới tại cùng một thời điểm. Mạng tự giải quyết bằng quy tắc chọn chuỗi dài hơn (hoặc nhiều công việc tích luỹ hơn). Đây không phải thay đổi luật.
  • Soft fork: thay đổi luật nhưng vẫn tương thích ngược với node cũ.
  • Hard fork: thay đổi luật mà node cũ không thể chấp nhận khối mới.

Theo một số bài tiếng Việt, hard fork và soft fork dẫn đến thay đổi vĩnh viễn trong quy tắc cơ bản của giao thức, khác với fork tạm thời. Một số nguồn còn nói ngược rằng soft fork là nhánh tạm thời. Cách nói đó không đúng: soft fork là thay đổi luật có chủ đích, không phải việc hai khối cạnh tranh nhau. Cơ chế chọn chuỗi nằm trong cơ chế đồng thuận của mạng.

Node kiểm tra khối thế nào, và vì sao đó là gốc của sự khác biệt?

Mỗi full node tự kiểm tra từng khối theo bộ luật nó đang chạy: kích thước, chữ ký, định dạng giao dịch, phần thưởng khối. Khối nào vi phạm sẽ bị từ chối, dù thợ đào đã tốn điện để tạo ra. Vì vậy, “luật” thực chất nằm ở phần mềm các node đang chạy, không nằm ở một tổ chức nào. Chi tiết về các loại node xem tại bài node trong blockchain.

Hãy xem tập hợp các khối hợp lệ theo luật cũ là tập A, theo luật mới là tập B:

  • Soft fork: B nằm gọn trong A. Mọi khối hợp lệ theo luật mới thì cũng hợp lệ theo luật cũ. Node cũ không nhận ra có gì thay đổi và vẫn chấp nhận các khối mới. Soft fork thắt chặt luật, khiến một số khối hoặc giao dịch trước đây chấp nhận được trở thành không hợp lệ.
  • Hard fork: B có phần nằm ngoài A. Ít nhất một số khối hợp lệ theo luật mới sẽ bị node cũ từ chối.
Hai sơ đồ tập khối hợp lệ. Soft fork: tập luật mới nằm trọn bên trong tập luật cũ. Hard fork: tập luật mới có phần nằm ngoài tập luật cũ.
Sơ đồ khái niệm về tương thích ngược giữa luật cũ và luật mới.

Soft fork hoạt động thế nào và vì sao không tách chuỗi?

Vì luật mới chỉ là phiên bản chặt hơn của luật cũ, khối do node mới tạo ra luôn qua được kiểm tra của node cũ. Một ví dụ dễ hình dung: nếu giao thức đang cho khối tối đa 3 MB và bản mới giảm xuống 2 MB, khối 2 MB vẫn hợp lệ với cả hai phía. Cách làm này được nêu làm ví dụ về soft fork là giảm kích thước khối từ 3MB xuống 2MB.

Điều kiện để soft fork không gây tách chuỗi là phần lớn sức đào (hoặc phần lớn validator) thực thi luật mới. Khi đó, nếu một thợ đào còn chạy luật cũ tạo khối vi phạm luật mới, khối đó bị đa số bỏ qua và chuỗi của họ bị bỏ lại phía sau. Đa số thực thi luật mới nên chuỗi chung vẫn chỉ có một.

Điểm yếu cần biết: node chưa nâng cấp vẫn chạy được nhưng không hiểu tính năng mới. Họ chấp nhận khối mà không tự kiểm tra các điều kiện mới, nên mức độ bảo đảm của họ thấp hơn. Họ phải tin vào đa số đã nâng cấp. Đây cũng là lý do soft fork vẫn có tranh cãi dù không chia mạng.

Hard fork hoạt động thế nào và khi nào chuỗi tách đôi?

Hard fork thay đổi luật theo hướng node cũ coi khối mới là không hợp lệ. Như một bài giải thích, node chạy giao thức cũ sẽ không chấp nhận khối tạo theo giao thức mới, và ngược lại. Có hai kịch bản:

  • Hard fork có kế hoạch, đồng thuận cao: nhà phát triển công bố trước một mốc kích hoạt (thường là một độ cao khối hoặc một thời điểm). Mọi node, ví, sàn đều nâng cấp trước mốc đó. Sau mốc, chỉ còn một chuỗi, vì không còn ai chạy luật cũ.
  • Hard fork gây tranh cãi: một nhóm không đồng ý với thay đổi và tiếp tục chạy luật cũ, có thợ đào hoặc validator đi theo. Khi đó có hai chuỗi cùng chia sẻ lịch sử đến mốc fork, rồi đi hai hướng riêng. Về hậu quả, hard fork thường dẫn đến việc chia blockchain thành hai chuỗi riêng: cũ và mới.
Sơ đồ dòng thời gian một hard fork gây tranh cãi: chuỗi chung đến mốc fork, sau đó tách thành chuỗi luật cũ và chuỗi luật mới, mỗi chuỗi có
Sơ đồ khái niệm về hard fork dẫn tới tách chuỗi.

Khi chuỗi tách, ai nắm khoá riêng trước mốc fork thường có số dư trên cả hai chuỗi, vì lịch sử trước mốc là chung. Nhưng việc dùng được số dư đó phụ thuộc vào ví, sàn và thanh khoản của chuỗi mới. Hãy nhớ khoá riêng là thứ duy nhất chứng minh quyền kiểm soát; xem thêm bài private key và public key.

Bảng so sánh hard fork và soft fork theo 10 tiêu chí

Tiêu chí Soft fork Hard fork
Tương thích ngược Có: node cũ vẫn chấp nhận khối mới Không: node cũ từ chối khối mới
Tác động lên luật Siết chặt, thu hẹp tập khối hợp lệ Mở rộng hoặc đổi luật
Node phải nâng cấp Không bắt buộc ngay, nhưng nên nâng cấp để tự kiểm tra luật mới Bắt buộc nếu muốn ở lại chuỗi mới
Điều kiện kích hoạt Đa số sức đào hoặc validator thực thi luật mới Gần như toàn mạng cùng nâng cấp tại một mốc
Nguy cơ tách chuỗi Thấp nếu đa số đi theo; có thể xảy ra khi tranh chấp kéo dài Cao nếu còn nhóm chạy luật cũ có sức đào hoặc stake
Khả năng quay lui Dễ hơn vì khối cũ vẫn hợp lệ theo luật cũ Khó: sau mốc fork hai bên đã đi riêng
Loại thay đổi phù hợp Thêm tính năng không phá luật cũ, vá lỗi nhỏ Đổi cấu trúc khối, đổi cơ chế đồng thuận, đảo ngược giao dịch
Rủi ro với người dùng Thấp; node cũ có mức bảo đảm yếu hơn Tấn công phát lại (replay), nhầm chuỗi, lừa đảo airdrop
Ví dụ trên Bitcoin SegWit (2017), Taproot (2021) Bitcoin Cash tách ra (2017)
Ví dụ trên Ethereum Ít gặp; nâng cấp lớn thường là hard fork phối hợp Hard fork năm 2016 sau sự cố The DAO

Ví dụ thực tế nào cho thấy sự khác biệt rõ nhất?

SegWit và Bitcoin Cash năm 2017: soft fork đi kèm hard fork

Đây là trường hợp học thuật rõ nhất vì hai loại fork xảy ra gần nhau. Theo bảng lịch sử soft fork của Bitcoin, SegWit khoá vào ngày 9/8 ở khối 479.808 và kích hoạt ngày 24/8 ở khối 481.824. Trước đó, Bitcoin Cash đã tách khỏi Bitcoin từ ngày 1/8. Nhóm ủng hộ tăng kích thước khối chọn hard fork. Nhóm ủng hộ SegWit chọn soft fork. Các node Bitcoin Cash dùng luật chấp nhận khối lớn hơn nên node Bitcoin cũ từ chối khối của họ, đúng cơ chế đã mô tả ở trên. Một bài giải thích cũng nêu rằng nếu bạn tạo khối 2MB hợp lệ theo luật mới, các node khác vẫn từ chối. Ngoài ra, hard fork SegWit2x bị huỷ ngày 8/11/2017 vì thiếu đồng thuận cộng đồng. Bài học: hard fork cần đồng thuận xã hội, không chỉ đủ sức đào.

Taproot 2021: soft fork được kích hoạt theo ngưỡng 90%

Taproot kích hoạt ngày 14/11/2021 ở khối 709.632, theo cùng nguồn lịch sử soft fork. Cách kích hoạt là Speedy Trial: trong một chu kỳ 2016 khối, cần 90%, tức 1815 khối, báo hiệu sẵn sàng. Ngưỡng này đạt ở khối 687.284 ngày 12/6/2021, rồi mạng chờ đến khối kích hoạt. Chu kỳ 2016 khối tương ứng khoảng hai tuần với block time trung bình 10 phút của Bitcoin. Soft fork này tương thích hoàn toàn với địa chỉ và ví hiện có, người dùng không cần làm gì. Nội dung kỹ thuật gồm chữ ký Schnorr và đầu ra Taproot; chi tiết nền tảng nằm ở bài Bitcoin là gì.

Ethereum 2016: hard fork để đảo ngược hậu quả một vụ tấn công hợp đồng

Tháng 7/2016, Ethereum thực hiện hard fork để chuyển số ether bị rút khỏi quỹ The DAO về một hợp đồng thu hồi. Một phần cộng đồng không chấp nhận việc can thiệp vào lịch sử giao dịch và tiếp tục chạy chuỗi cũ, từ đó thành Ethereum Classic. Đây là ví dụ về hard fork mà lý do là chính trị và nguyên tắc “bất biến”, không phải kỹ thuật. Câu chuyện đầy đủ có trong bài DAO là gì và vụ The DAO. Sau này, các nâng cấp lớn của Ethereum được lên lịch trước và phối hợp giữa nhà phát triển, client và validator; xem thêm Ethereum và các nâng cấp.

Ai quyết định một fork, và kích hoạt bằng cách nào?

Không ai có quyền ra lệnh trên blockchain công khai. Quy trình thông thường như sau:

  1. Đề xuất cải tiến được viết thành tài liệu công khai. Trên Bitcoin, đó là BIP (Bitcoin Improvement Proposal); Taproot gồm BIP 340, 341 và 342.
  2. Các nhóm phát triển client thảo luận và viết mã. Mã thường được thử trước trên testnet.
  3. Bản phần mềm có cơ chế kích hoạt: theo độ cao khối, theo thời điểm, hoặc theo tín hiệu của thợ đào.
  4. Operator của node, sàn, ví, nhà cung cấp lưu ký quyết định có nâng cấp hay không. Đây là bước quyết định thực sự, vì họ chọn chạy luật nào.

Cơ chế kích hoạt soft fork trên Bitcoin từng gây tranh cãi riêng. Với SegWit, thợ đào từng từ chối báo hiệu, nên các node độc lập đã tự áp dụng bản sửa, dẫn đến phong trào UASF. Với Taproot, bản nâng cấp được cộng đồng ủng hộ gần như tuyệt đối, tranh luận chỉ xoay quanh cách kích hoạt. Điều này cho thấy một soft fork vẫn có thể là cuộc đấu quyền lực giữa thợ đào và người vận hành node.

Fork có thể ảnh hưởng gì đến người giữ coin và doanh nghiệp?

Phần này chỉ mô tả rủi ro vận hành. Bài viết không khuyến nghị mua, bán hay giữ coin để “chờ fork”. Một số nguồn gọi hard fork là cơ hội đầu tư; đây là quan điểm không có bảo chứng và có thể gây thua lỗ, kể cả mất toàn bộ vốn.

Với cá nhân giữ coin

  • Soft fork: thường không cần thao tác, như trường hợp Taproot. Hãy cập nhật ví khi nhà phát hành ví thông báo.
  • Hard fork có tranh cãi: sàn hoặc nhà lưu ký thường tạm dừng nạp rút quanh mốc fork. Nếu bạn tự giữ khoá, coin trên chuỗi mới chỉ dùng được khi ví hỗ trợ chuỗi đó. Quy trình chi tiết tuỳ từng đợt fork nên cần đọc thông báo chính thức.
  • Lừa đảo: các đợt fork hay đi kèm trang giả mạo “nhận coin miễn phí” yêu cầu nhập cụm từ khôi phục. Cụm này không bao giờ cần nhập vào website lạ; xem bài seed phrase là gì.
  • Tấn công phát lại (replay): nếu hai chuỗi không có cơ chế bảo vệ riêng, một giao dịch hợp lệ trên chuỗi này có thể bị phát lại trên chuỗi kia. Chuỗi mới thường được thiết kế để chống việc này, nhưng bạn nên kiểm tra thông báo của đội phát triển.

Với doanh nghiệp vận hành node, ví hoặc ứng dụng

  • Theo dõi kênh phát hành của client bạn dùng; xác định mốc kích hoạt (độ cao khối hoặc thời gian) và hạn chót nâng cấp.
  • Thử bản mới trên môi trường kiểm thử và kiểm tra các điểm hợp đồng thông minh, API, chỉ mục dữ liệu có bị ảnh hưởng không. Hard fork có thể đổi định dạng giao dịch hoặc chi phí gas, ảnh hưởng ứng dụng dựa trên smart contract.
  • Với dịch vụ nhận thanh toán bằng coin: chốt số lần xác nhận khối cần chờ quanh mốc fork, vì ngay sau hard fork gây tranh cãi, một chuỗi có thể bị tổ chức lại.
  • Về mặt kế toán, pháp lý của coin nhận được từ fork, hãy xem bài tài sản mã hoá và hỏi ý kiến chuyên gia thuế; bài này không tư vấn cá nhân.

Blockchain doanh nghiệp (riêng tư, liên minh) có fork không?

Có, nhưng khác bản chất. Trên blockchain có phân quyền thành viên, các tổ chức tham gia đã biết nhau và cùng thống nhất nâng cấp theo lộ trình. Việc “tách chuỗi vì bất đồng” gần như không xảy ra, vì ai không nâng cấp thì mất quyền xác thực. Nâng cấp phiên bản giao thức ở đây là quy trình quản trị của liên minh: lên lịch, thử, rồi chuyển đồng loạt. Cách phân loại mạng xem tại bài các loại blockchain.

Điểm doanh nghiệp cần để ý là khả năng tương thích dữ liệu: nếu có node không nâng cấp kịp, nó sẽ ngừng đồng bộ với chuỗi chung thay vì tạo ra một chuỗi song song có giá trị.

Hard fork và soft fork khác gì với các khái niệm dễ nhầm?

Khái niệm Khác gì với hard fork và soft fork
Fork phần mềm mã nguồn mở (copy code) Tạo dự án mới từ mã cũ, không kế thừa lịch sử và số dư của chuỗi gốc. Hard fork chuỗi thì kế thừa lịch sử đến mốc fork.
Fork tạm thời Là hai khối cạnh tranh, tự biến mất khi một nhánh dài hơn. Không đổi luật.
Nâng cấp ứng dụng ở tầng trên Thay đổi ở tầng hợp đồng thông minh hoặc giải pháp Layer 2 không đổi luật đồng thuận của Layer 1, nên không phải fork.
Airdrop Phân phát token. Chỉ liên quan đến fork khi chuỗi mới tặng coin cho người giữ coin cũ.

Khi nào nhà phát triển chọn soft fork, khi nào buộc phải hard fork?

Sơ đồ quyết định chọn loại fork: nếu thay đổi chỉ siết chặt luật thì dùng soft fork; nếu cần cho phép điều node cũ cấm thì phải hard fork
Sơ đồ khái niệm hỗ trợ chọn loại fork.

Soft fork phù hợp khi thay đổi chỉ cấm thêm một số trường hợp hoặc dùng lại các trường chưa dùng của giao dịch, như cách SegWit và Taproot gói tính năng mới vào định dạng mà node cũ vẫn xem là hợp lệ. Hard fork là lựa chọn khi phải cho phép điều luật cũ cấm, ví dụ nới giới hạn kích thước khối, đổi cơ chế đồng thuận, hoặc sửa trạng thái chuỗi sau sự cố. Nhà phát triển thường né hard fork nếu có thể, vì chi phí phối hợp cao và nguy cơ chia cộng đồng. Với các mạng như Ethereum, nơi mọi validator và client được phối hợp qua lịch nâng cấp công khai, hard fork có kế hoạch là cách nâng cấp thông thường chứ không phải tình huống bất thường.

Ưu và nhược điểm của từng loại

Loại Ưu điểm Nhược điểm
Soft fork Ít gây gián đoạn; người dùng thường không phải làm gì; nâng cấp từng bước Không dùng được cho thay đổi nới luật; node chưa nâng cấp phụ thuộc đa số; tranh cãi về cách kích hoạt vẫn có thể xảy ra
Hard fork Cho phép thay đổi sâu, kể cả sửa sai sót nghiêm trọng Phải phối hợp rộng; nguy cơ tách chuỗi và chia cộng đồng; rủi ro phát lại giao dịch, nhầm chuỗi và lừa đảo

Cách nhận biết một đợt fork đang diễn ra và nguồn thông tin đáng tin

  • Đọc ghi chú phát hành của phần mềm node mà bạn dùng: ở đó nêu rõ bản nâng cấp là fork loại nào và mốc kích hoạt.
  • Xem thông báo của sàn hoặc nhà lưu ký về việc tạm dừng nạp rút và cách xử lý coin chuỗi mới.
  • Đối chiếu độ cao khối hiện tại với mốc kích hoạt để biết còn bao lâu; với Bitcoin, mỗi khối khoảng 10 phút, nên phép ước lượng chỉ mang tính tương đối.
  • Nếu một website yêu cầu nhập cụm từ khôi phục hoặc khoá riêng để “nhận coin fork”, hãy dừng ngay.
  • Nếu doanh nghiệp bạn chạy hệ thống tích hợp mempool và xác nhận giao dịch, hãy theo dõi bất thường ở mempool, vì giao dịch có thể được xử lý khác nhau giữa hai chuỗi.

Câu hỏi thường gặp

Hard fork có phải lúc nào cũng tạo ra coin mới không?

Không. Nếu toàn bộ cộng đồng nâng cấp theo mốc đã công bố thì chỉ còn một chuỗi, không có coin mới. Coin mới chỉ xuất hiện khi một nhóm tiếp tục chạy luật cũ hoặc dựng chuỗi riêng với đủ người ủng hộ, như Bitcoin Cash năm 2017.

Soft fork có an toàn hơn hard fork không?

Nhìn chung ít gây gián đoạn hơn vì tương thích ngược, nhưng “an toàn hơn” không có nghĩa là không rủi ro. Node chưa nâng cấp không tự kiểm tra luật mới, và cách kích hoạt từng gây tranh cãi lớn như trường hợp SegWit.

Nếu tôi giữ coin trên sàn thì có phải làm gì khi có fork?

Thông thường sàn xử lý kỹ thuật và công bố chính sách riêng về việc có hỗ trợ chuỗi mới hay không, cũng như thời gian tạm dừng nạp rút. Bạn nên đọc thông báo chính thức của sàn và không làm theo hướng dẫn từ nguồn không rõ.

Taproot là soft fork hay hard fork?

Là soft fork. Nó được kích hoạt ngày 14/11/2021 ở khối 709.632 và tương thích với địa chỉ, ví hiện có. Người dùng không bắt buộc đổi gì để tiếp tục nhận và gửi bitcoin.

Vì sao Ethereum Classic tồn tại?

Vì sau hard fork năm 2016 xử lý hậu quả vụ The DAO, một phần cộng đồng giữ nguyên tắc không sửa lịch sử giao dịch và tiếp tục chạy chuỗi cũ. Chuỗi đó về sau được gọi là Ethereum Classic.

Fork và cập nhật phần mềm thông thường khác nhau thế nào?

Cập nhật phần mềm thông thường chỉ ảnh hưởng máy của bạn. Fork thay đổi luật chung mà hàng nghìn node phải cùng chấp nhận. Nếu bạn nâng cấp mà đa số không làm vậy, node của bạn có thể bị tách khỏi mạng.

VBPO Tech Blog cập nhật tin tức và kiến thức công nghệ cho doanh nghiệp Việt Nam. Xem thêm các bài cùng chuyên mục Blockchain cơ bản.