Giải Thích Về Hard Fork Và Soft Fork
Trang chủ
Bài viết
Giải Thích Về Hard Fork Và Soft Fork

Giải Thích Về Hard Fork Và Soft Fork

Trung cấp
Đã đăng Nov 29, 2018Đã cập nhật Feb 9, 2023
8m

Giới thiệu

Khi ứng dụng ngân hàng yêu cầu bạn cập nhật trên điện thoại, bạn thường không cần phải suy nghĩ gì để thực hiện điều này. Thậm chí, điện thoại của bạn có thể tự động cập nhật và bạn không hề nhận ra. Xét cho cùng, đó là một quá trình cần thiết - nếu bạn không cài đặt phiên bản mới nhất của phần mềm, bạn có nguy cơ bị từ chối truy cập vào các dịch vụ của phần mềm đó.

Nhưng với tiền mã hóa - được xây dựng trên mã nguồn mở, mọi thứ rất khác. Bạn không cần phải đọc mọi dòng code của Bitcoin, nhưng ít nhất bạn cũng có thể thực hiện điều này. Bạn thấy đấy, không có hệ thống tập trung nào ở đây và không có ngân hàng nào có thể thúc đẩy các bản cập nhật và thay đổi mọi thứ theo ý muốn. Do đó, việc triển khai các tính năng mới trong mạng blockchain có thể là một thách thức.
Trong bài viết này, chúng ta sẽ khám phá cách mạng lưới tiền mã hóa được nâng cấp, mặc dù nó không có một cơ quan tập trung. Để làm như vậy, các blockchain sử dụng một trong hai cơ chế: hark fork hoặc soft fork


Ai là người đưa ra quyết định trong mạng blockchain?

Để hiểu cơ chế fork (chia nhánh), trước mắt chúng ta phải tìm hiểu những bên tham gia liên quan vào quá trình ra quyết định (hoặc quản trị) mạng lưới.
Trong Bitcoin, bạn có thể phân biệt những người tham gia thành 3 nhóm – nhà phát triển, thợ đào và các người dùng node đầy đủ (full node). Đây là những bên thực sự đóng góp vào mạng. Các node nhẹ (light node) (ví dụ: ví trên điện thoại, máy tính xách tay, v.v.) được sử dụng rộng rãi, nhưng chúng không thực sự là " những người tham gia" vào mạng lưới.


Nhà phát triển

Các nhà phát triển (lập trình viên) chịu trách nhiệm tạo và cập nhật code. Đối với hầu hết các đồng tiền mã hóa, bất kỳ ai cũng có thể đóng góp vào quá trình này. Code có sẵn và công khai, vì vậy họ có thể gửi các thay đổi để các nhà phát triển khác xem xét. 


Thợ đào

Thợ đào là những người bảo mật mạng. Họ khởi chạy code tiền mã hóa và dành nguồn lực để thêm các khối mới vào blockchain. Ví dụ, trong mạng Bitcoin, họ làm như vậy thông qua Proof of Work. Những nỗ lực của họ được khen thưởng dưới dạng phần thưởng khối.


Những người dùng node đầy đủ

Các node đầy đủ là xương sống của mạng lưới tiền mã hóa. Họ xác thực, gửi và nhận các block cũng như giao dịch và duy trì một bản sao của blockchain.


Thông thường, người dùng có thể đảm nhận các vai trò chồng chéo. Ví dụ: bạn có thể vừa là một nhà phát triển và vừa là một người dùng node đầy đủ, hoặc vừa là một thợ đào và vừa là người dùng node đầy đủ. Bạn còn có thể thuộc cả ba nhóm trên. Nhưng trên thực tế, có nhiều người dùng tiền mã hóa không đảm nhận bất kỳ vai trò nào trong số này. Thay vào đó, họ chọn sử dụng các node nhẹ hoặc các dịch vụ tập trung.

Nhìn vào các mô tả ở trên, bạn có thể đưa ra các vấn đề lớn để các nhà phát triển và thợ đào đưa ra các quyết định cho mạng. Những nhà phát triển viết code – không có chúng, bạn sẽ không có phần mềm để sử dụng, không ai sửa lỗi hoặc thêm các tính năng mới. Những thợ đào đảm bảo an toàn cho mạng – nếu không có tính cạnh tranh lành mạnh của hoạt động đào tiền mã hóa, chuỗi có thể bị tấn công hoặc có thể bị tạm dừng.
Tuy nhiên, nếu hai trong ba nhóm cố gắng hỗ trợ phần còn lại của mạng để làm theo ý muốn của họ, việc này sẽ không kết thúc tốt đẹp. Đối với nhiều người, sức mạnh thực sự tập trung ở các node đầy đủ. Chức năng tham gia mạng là được chọn, có nghĩa là người dùng có thể chọn phần mềm họ đang chạy. 

Các nhà phát triển không đột nhập vào nhà của bạn và ép buộc bạn tải xuống các dòng code nhị phân Bitcoin Core ngay từ đầu. Nếu những thợ đào áp dụng thái độ “phải làm theo tôi hoặc không được dùng nữa” để buộc người dùng thay đổi những thứ không mong muốn, thì người dùng sẽ không sử dụng dịch vụ. 

Những bên này không phải là lãnh chúa toàn năng – họ là những nhà cung cấp dịch vụ. Nếu mọi người quyết định không sử dụng mạng, thì đồng tiền sẽ mất giá. Việc mất giá trị ảnh hưởng trực tiếp đến những thợ đào (phần thưởng của họ có giá trị thấp hơn khi tính bằng USD). Đối với các nhà phát triển, họ có thể bị người dùng bỏ qua.
Bạn thấy đấy, nó không giống như phần mềm là độc quyền. Bạn có thể thực hiện bất kỳ chỉnh sửa nào bạn muốn và nếu những người khác chạy phần mềm đã sửa đổi giống bạn, tất cả các bạn đều có thể giao tiếp với nhau. Trong trường hợp này, bạn đã fork phần mềm và tạo một mạng mới.


Fork là gì?

Việc fork diễn ra tại một điểm mà phần mềm được sao chép và sửa đổi. Dự án ban đầu vẫn tiếp tục, nhưng bây giờ nó tách biệt với dự án mới, theo một hướng khác. Giả sử rằng một nhóm dự án web chia sẻ nội dung về tiền mã hóa có bất đồng lớn về cách hoạt động. Một thành viên của nhóm có thể sao chép trang web lên một tên miền khác. Nhưng về sau, họ sẽ đăng các loại nội dung khác với nội dung gốc.

Các dự án mới và cũ được xây dựng trên một nền tảng chung và có chung một lịch sử. Giống như một con đường sau này chia làm hai, bây giờ họ có một sự khác biệt vĩnh viễn trên con đường đi của mình.

Lưu ý rằng hoạt động này cũng khá phổ biến trong các dự án mã nguồn mở và đã xảy ra trong một thời gian dài trước khi có sự xuất hiện của Bitcoin hoặc Ethereum. Tuy nhiên, sự phân biệt giữa hard fork và soft fork gần như là khái niệm độc quyền của lĩnh vực blockchain. Hãy thảo luận về những điều đó nhiều hơn một chút.



So sánh hard fork với soft fork

Mặc dù hai khái niệm này nghe khá giống nhau và cuối cùng phục vụ cùng một mục đích, nhưng có sự khác biệt đáng kể giữa hard fork và soft fork. Chúng ta hãy cùng tìm hiểu.


Hard fork là gì?

Hard fork là các bản cập nhật phần mềm "không tương thích ngược" (backward-incompatible). Thông thường, những điều này xảy ra khi các node thêm các quy tắc mới theo cách xung đột với các quy tắc của các node cũ. Các node mới chỉ có thể giao tiếp với những node khác cùng vận hành phiên bản mới. Kết quả là blockchain được tách ra, tạo thành hai mạng riêng biệt: một với các quy tắc cũ và một với các quy tắc mới.

Các node chuyển sang màu xanh lam khi chúng được cập nhật. Các node màu vàng cũ hơn từ chối chúng, trong khi các node màu xanh lam kết nối với nhau.


Vì vậy, lúc này chúng ta có hai mạng chạy song song. Cả hai sẽ tiếp tục tạo ra các khối và giao dịch, nhưng chúng không còn hoạt động trên cùng một blockchain nữa. Tất cả các node đều có một blockchain giống hệt nhau cho đến thời điểm fork (và lịch sử đó vẫn còn), nhưng chúng sẽ có các khối và giao dịch khác nhau sau đó.


Bởi vì có lịch sử được chia sẻ, bạn sẽ nhận được tiền trên cả hai mạng nếu bạn đang nắm giữ chúng trước đợt fork. Giả sử rằng bạn có 5 BTC khi một đợt fork xảy ra ở Khối 600.000. Bạn có thể đã chi tiêu 5 BTC trên blockchain cũ trong Khối 600.001, nhưng chúng chưa được chi tiêu trong Khối 600.001 của blockchain mới. Giả sử mật mã không thay đổi, các khóa riêng tư của bạn vẫn giữ năm đồng BTC trên mạng đã fork. 
Một ví dụ về một đợt hard fork là đợt fork năm 2017 khi Bitcoin được phân mảnh thành hai chuỗi riêng biệt – chuỗi ban đầu với Bitcoin (BTC) và chuỗi mới với Bitcoin Cash (BCH). Đợt fork xảy ra sau rất nhiều tranh cãi về cách tiếp cận tốt nhất để mở rộng quy mô. Những người đề xuất Bitcoin Cash muốn tăng kích thước khối, trong khi những người ủng hộ Bitcoin phản đối sự thay đổi.

Việc tăng kích thước khối yêu cầu sửa đổi các quy tắc. Điều này xảy ra trước khi có soft fork SegWit (bạn sẽ biết thêm về điều này sau), vì vậy các node sẽ chỉ chấp nhận các khối nhỏ hơn 1MB. Nếu bạn đã tạo một khối 2MB hợp lệ, các node khác vẫn sẽ từ chối nó.

Chỉ các node đã thay đổi phần mềm của họ để cho phép các khối có kích thước vượt quá 1MB mới có thể chấp nhận các khối đó. Tất nhiên, điều đó sẽ làm cho chúng không tương thích với phiên bản trước, vì vậy chỉ các node đã cùng sửa đổi giao thức mới có thể giao tiếp với nhau.


Soft fork là gì?

Một số bản cập nhật lại tương thích ngược, nghĩa là các node được cập nhật sẽ vẫn giao tiếp với các node cũ hơn. Soft fork thường là một đợt bổ sung một quy tắc mới không mâu thuẫn với các quy tắc cũ.
Ví dụ, việc giảm kích thước khối có thể được thực hiện bằng phương pháp soft-fork. Một lần nữa chúng ta hãy lấy Bitcoin để làm ví dụ: mặc dù có giới hạn về mức độ lớn của một khối, nhưng không có giới hạn về mức độ nhỏ của nó. Nếu bạn chỉ muốn chấp nhận các khối dưới một kích thước nhất định, bạn chỉ cần từ chối những khối lớn hơn.

Tuy nhiên, để làm như vậy bạn không cần ngắt kết nối khỏi mạng. Bạn vẫn giao tiếp với các node không triển khai các quy tắc đó, nhưng bạn lọc ra một số thông tin mà chúng chuyển cho bạn.

Một ví dụ thực tế tốt về một soft fork là fork Segregated Witness (SegWit) đã nói ở trên, xảy ra ngay sau khi phân tách Bitcoin/Bitcoin Cash. SegWit là một bản cập nhật đã thay đổi định dạng của các khối và giao dịch, nhưng nó đã được tạo ra một cách khéo léo. Các node cũ vẫn có thể xác thực các khối và giao dịch (định dạng không phá vỡ các quy tắc), nhưng chúng sẽ không hiểu chúng. Một số trường chỉ có thể đọc được khi các node chuyển sang phần mềm mới hơn, cho phép chúng phân tích cú pháp dữ liệu bổ sung.


Ngay cả hai năm sau khi kích hoạt SegWit, không phải tất cả các node mạng Bitcoin đều đã cập nhật nó. Có những lợi ích để làm như vậy, nhưng cũng không có gì khẩn cấp thực sự vì không có sự thay đổi đột phá về mạng.


Hard fork và soft fork – phương pháp nào tốt hơn?

Về cơ bản, cả hai loại fork đều phục vụ các mục đích khác nhau. Các hard fork diễn ra liên tục có thể chia rẽ một cộng đồng, nhưng các hard fork được lên kế hoạch trước cho phép sửa đổi phần mềm với sự đồng ý của mọi người.

Soft fork là một lựa chọn nhẹ nhàng hơn. Nhìn chung, với hình thức này bạn bị hạn chế hơn trong những gì bạn có thể làm vì những thay đổi mới của bạn không thể mâu thuẫn với các quy tắc cũ. Điều này cũng có thể hiểu rằng, nếu bản cập nhật của bạn có thể được tạo theo cách mà nó vẫn tương thích, bạn không cần phải lo lắng về việc phân mảnh mạng.


Tổng kết

Hard fork và soft fork là yếu tố quan trọng đối với sự thành công lâu dài của các mạng blockchain. Chúng cho phép chúng ta thực hiện các thay đổi và nâng cấp trong các hệ thống phi tập trung, mặc dù thiếu một cơ quan tập trung.

Các bản fork có thể giúp cho các blockchain và tiền mã hóa tích hợp các tính năng mới khi công nghệ dần phát triển. Nếu không có những cơ chế này, chúng ta sẽ cần một hệ thống tập trung với sự kiểm soát từ trên xuống. Nếu không, chúng ta sẽ bị mắc kẹt với các quy tắc giống nhau trong suốt thời gian tồn tại của giao thức.