Giới thiệu

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

Trong tiền điện tử nguồn mở, mọi thứ rất khác. Bạn không cần phải đọc từng dòng mã củng cố Bitcoin để sử dụng nó, nhưng việc lựa chọn làm như vậy là rất quan trọng. Bạn thấy đấy, ở đây không có hệ thống phân cấp và không có ngân hàng nào có thể đưa ra 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 các mạng tiền điện tử có thể được nâng cấp, mặc dù thiếu cơ quan trung ương. Để làm như vậy, họ sử dụng hai cơ chế khác nhau: nĩa cứng và nĩa mềm. 


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

Để hiểu cách hoạt động của fork, điều quan trọng trước tiên là phải hiểu những người tham gia vào quá trình ra quyết định (hoặc quản trị) mạng.

Trong Bitcoin, bạn có thể phân biệt một cách rộng rãi giữa ba nhóm nhỏ người tham gia – nhà phát triển, người khai thác và người dùng nút đầy đủ. Đây là những bên thực sự đóng góp cho mạng lưới. Các nút ánh sáng (tức là 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à “người tham gia” xét về mặt mạng.


Nhà phát triển

Các nhà phát triển chịu trách nhiệm tạo và cập nhật mã. Đối với đồng tiền thông thường của bạn, bất kỳ ai cũng có thể đóng góp vào quá trình này. Mã này được cung cấp công khai nên họ có thể gửi các thay đổi để các nhà phát triển khác xem xét. 


Thợ mỏ

Thợ mỏ là những người bảo mật mạng. Họ chạy mã của tiền điện tử và dành tài nguyên để thêm các khối mới vào chuỗi khối. Ví dụ: trong mạng Bitcoin, họ thực hiện điều đó thông qua Proof of Work. Họ được khen thưởng cho những nỗ lực của mình dưới dạng phần thưởng khối.


Người dùng nút đầy đủ

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


Bạn sẽ thường thấy sự trùng lặp trong các danh mục này. Ví dụ: bạn có thể là nhà phát triển và người dùng nút đầy đủ hoặc người dùng khai thác và nút đầy đủ. Bạn có thể là cả ba hoặc không ai cả. Trên thực tế, nhiều người trong số những người mà chúng tôi coi là người dùng tiền điện tử 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 nút nhẹ hoặc dịch vụ tập trung.

Nhìn vào các mô tả ở trên, bạn có thể đưa ra những trường hợp thuyết phục để các nhà phát triển và thợ đào đưa ra quyết định cho mạng. Các nhà phát triển tạo mã - nếu không có họ, bạn sẽ không có phần mềm để chạy và không có ai sửa lỗi hoặc thêm tính năng mới. Máy khai thác bảo mật mạng – nếu không có sự cạnh tranh khai thác lành mạnh, chuỗi có thể bị tấn công hoặc có thể bị đình trệ.

Tuy nhiên, nếu hai danh mục này cố gắng buộc phần còn lại của mạng tuân theo ý muốn của họ thì mọi chuyện sẽ không có 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 nút đầy đủ. Đây phần lớn là chức năng của mạng được chọn tham gia, 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 sẽ không đột nhập vào nhà bạn và ép buộc bạn tải xuống các tệp nhị phân Bitcoin Core bằng súng. Nếu những người khai thác áp dụng thái độ “theo cách của tôi hoặc đường cao tốc” để buộc người dùng phải thay đổi không mong muốn, thì người dùng sẽ chỉ đi theo đường cao tốc. 

Các bên này không phải là chúa tể toàn năng - họ là 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 xu sẽ mất giá trị. Việc mất giá trị ảnh hưởng trực tiếp đến người khai thác (phần thưởng của họ có giá trị thấp hơn khi tính bằng đô la). Đố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 độ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 người khác chạy phần mềm đã sửa đổi của bạn thì tất cả các bạn đều có thể giao tiếp. Trong trường hợp đó, bạn phân nhánh phần mềm và tạo một mạng mới trong quá trình này.


Một cái nĩa là gì?

Phân nhánh phần mềm xảy ra tại thời điểm phần mềm được sao chép và sửa đổi. Dự án ban đầu vẫn tiếp tục tồn tại nhưng giờ đây nó đã tách biệt khỏi dự án mới và có một hướng đi khác. Giả sử nhóm của trang web nội dung tiền điện tử yêu thích của bạn có sự bất đồng lớn về cách tiến hành. Một phần của nhóm có thể sao chép trang web trên một tên miền khác. Nhưng trong tương lai, họ sẽ đăng các loại nội dung khác với nội dung ban đầu.

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

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


➠ Bạn đang muốn bắt đầu với tiền điện tử? Mua Bitcoin trên Binance!


Nĩa cứng và nĩa mềm

Mặc dù có tên giống nhau và phục vụ cùng một mục đích, nhưng hard fork và soft fork khác nhau đáng kể. Chúng ta hãy nhìn vào từng cái.


Hard fork là gì?

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

Nodes turn blue when they update. The older yellow nodes reject them, while blue ones connect to each other.

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


Như vậy hiện nay có 2 mạng chạy song song. Cả hai đều sẽ tiếp tục truyền bá 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 nút đều có một blockchain giống hệt nhau cho đến thời điểm phân nhánh (và lịch sử đó vẫn còn), nhưng sau đó chúng sẽ có các khối và giao dịch khác nhau.

blockchain forking at block 600,000.


Bởi vì có lịch sử được chia sẻ đó nên bạn sẽ có xu trên cả hai mạng nếu bạn giữ chúng trước đợt fork. Giả sử bạn có 5 BTC khi fork xảy ra ở Khối 600.000. Bạn có thể chi 5 BTC đó cho chuỗi cũ ở Khối 600.001, nhưng chúng chưa được chi tiêu trong Khối 600.001 của chuỗi khối mới. Giả sử mật mã không thay đổi, khóa riêng của bạn vẫn giữ 5 đồng tiền trên mạng phân nhánh. 

Một ví dụ về hard fork là đợt fork năm 2017 chứng kiến ​​Bitcoin bị phân mảnh thành hai chuỗi riêng biệt – chuỗi ban đầu là Bitcoin (BTC) và chuỗi mới là Bitcoin Cash (BCH). 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 ủng hộ 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 này.

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

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


Fork mềm là gì?

Soft fork là một bản nâng cấp tương thích ngược, nghĩa là các nút được nâng cấp vẫn có thể giao tiếp với các nút không được nâng cấp. Những gì bạn thường thấy ở một soft fork là việc bổ sung một quy tắc mới không xung đột với các quy tắc cũ hơn.

Ví dụ: việc giảm kích thước khối có thể được thực hiện bằng cách phân nhánh mềm. Hãy một lần nữa lấy Bitcoin để minh họa điểm này: mặc dù có giới hạn về độ 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 các khối lớn hơn.

Tuy nhiên, làm như vậy không tự động ngắt kết nối bạn khỏi mạng. Bạn vẫn liên lạc với các nút 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ế điển hình về soft fork là fork Segregated Witness (SegWit) đã nói ở trên, xảy ra ngay sau khi phân chia 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 chế tạo một cách khéo léo. Các nút cũ vẫn có thể xác thực các khối và giao dịch (định dạng không vi phạm 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 nút chuyển sang phần mềm mới hơn, cho phép chúng phân tích dữ liệu bổ sung.

Even two years after SegWit activation, not all nodes have upgraded. There are advantages to doing so, but there’s no real urgency since there’s no network-breaking change.


Thậm chí hai năm sau khi kích hoạt SegWit, không phải tất cả các nút đều được nâng cấp. Làm như vậy có những lợi ích nhưng không thực sự cấp bách vì không có thay đổi đột phá nào trong mạng lưới.


Nĩa cứng và nĩa mềm – cái nào tốt hơn?

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

Dĩa mềm là một lựa chọn nhẹ nhàng hơn. Nói chung, bạn bị hạn chế hơn về những gì bạn có thể làm vì những thay đổi mới của bạn không thể xung đột với các quy tắc cũ. Điều đó có nghĩa là, 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 thì bạn không cần phải lo lắng về việc mạng bị phân mảnh.


Bớt tư tưởng

Hard fork và soft fork rất quan trọng đối với sự thành công lâu dài của mạng blockchain. Chúng cho phép chúng tôi 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 cơ quan trung ương.

Fork giúp các chuỗi khối và tiền điện tử có thể tích hợp các tính năng mới khi chúng được 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 khả năng kiểm soát từ trên xuống. Nếu không, chúng ta sẽ mắc kẹt với các quy tắc giống hệt nhau trong suốt thời gian tồn tại của giao thức.