Fork nói chung và Soft Fork, Hard Fork nói riêng là những khái niệm chuyên môn trong Blockchain. Để hiểu các khái niệm này mình cũng đã tốn kha khá thời gian.
Xin được tổng hợp lại vào bài viết này.

Fork trong Blockchain

Fork được hiểu là trạng thái mà blockchain được phân tách thành 2 chain mới (tưởng tượng như hình chiếc dĩa từ 1 nhánh được chia làm 2). Fork thường diễn ra khi mà luật quản lý bị thay đổi, luật mới xung đột với luật cũ.

Cần tránh nhầm lẫn với khái niệm fork trong software development (sao chép toàn bộ source code thành 1 project mới, sau đó phát triển theo hướng khác project cũ) tuy cách hình dung cũng có phần na ná.

Tuỳ theo mức độ xung đột Fork được chia thành 2 loại:

Soft Fork

Soft fork sẽ diễn ra khi mà luật mới ban hành chặt hơn luật cũ.
Điều đó có nghĩa là các block được tạo ra theo luật mới sẽ vẫn tuân thủ luật cũ, và hợp lệ. Những block được tạo ra theo luật cũ nếu vi phạm luật mới sẽ trở thành những block không hợp lệ.

Ví dụ:
Luật cũ: giới hạn kích cỡ block trong 1MB.
Luật mới: giới hạn kích cỡ block trong 500kB.
Khi đó các block có kích cỡ lớn hơn 500kB sẽ không hợp lệ với luật mới.

Các tình huống xảy ra sau khi Soft Fork được triển khai

  • Không có Full Node và Miner nào upgrade
    Trường hợp Soft Fork bị tẩy chay, luật cũ vẫn được áp dụng.

  • Chỉ một phần nhỏ Full Node và Miner upgrade
    Đại đa số Full Node không upgrade sẽ chấp nhận các block theo luật cũ tạo bởi các Miner không upgrade.
    Chỉ một phần nhỏ Full Node đã upgrade chấp nhận block theo luật mới. Chain này được tạo ra nhưng sẽ rất chậm vì số lượng Miner thấp.
    Chiến thắng gần như thuộc về luật cũ.
    Chain Soft Fork sẽ được duy trì nếu được cung cấp đủ hash power để an toàn trước tấn công 51%.

  • Đại đa số Full Node upgrade, chỉ một phần nhỏ Miner upgrade
    Các block được tạo bởi các Miner chưa upgrade nếu không tuân theo luật mới sẽ bị reject bởi các Full Node đã upgrade.
    Nhưng các block này vẫn được accept bởi các Full Node chưa upgrade, dẫn tới tạo ra 2 chain.
    2 chain này đều hoạt động rất chậm vì 1 bên ít Miner, 1 bên ít Full Node.
    Việc các block tạo ra bị reject sẽ gây áp lực cho Miner phải upgrade.

  • Đại đa số Full Node và Miner đều upgrade
    Do đại đa số Miner (hash power mạnh hơn) đều upgrade nên các block tạo ra sẽ tuân theo luật mới.
    Các Full Node dù chưa upgrade nhưng vẫn chấp nhận các block này.

  • Tất cả Full Node và Miner đều upgrade
    Đây là trạng thái lý tưởng khi kết thúc Fork.
    Các block mới tạo ra bởi Miner sẽ tuân theo luật mới, và hợp lệ.
    Sự phân tách chain (chain split) không xảy ra. Soft fork thành công.

Tóm lại với Soft Fork

  • Để quá trình Soft Fork diễn ra thành công, việc đa số Full Node đồng ý upgrade là rất quan trọng.
  • Miners không upgrade sẽ bị bỏ rơi, dẫn tới gây áp lực cho Miner phải upgrade.
  • Các Full Node dù không upgrade vẫn hoạt động bình thường dẫn đến việc có thể họ không biết đã diễn ra Soft Fork.

Hard Fork

Hard Fork sẽ diễn ra khi mà luật mới ban hành lỏng hơn luật cũ.
Điều đó có nghĩa là các block được tạo ra theo luật mới sẽ có khả năng không tuân thủ luật cũ, và bị coi là không hợp lệ với các full node vẫn áp dụng luật cũ.

Ví dụ:
Luật cũ: giới hạn kích cỡ block trong 1MB.
Luật mới: giới hạn kích cỡ block trong 2MB.
Khi đó các block theo luật mới có kích cỡ lớn hơn 1MB sẽ không hợp lệ với luật cũ.

Các tình huống xảy ra sau khi Hard Fork được triển khai:

  • Không có Full Node và Miner nào upgrade
    Hard Fork bị tẩy chay. Luật cũ vẫn được áp dụng.

  • Chỉ một phần nhỏ Full Node và Miner upgrade
    Block tạo ra bởi Miner sẽ vẫn tuân theo luật cũ.
    Do luật mới lỏng hơn luật cũ nên các Full Node đã upgrade vẫn chấp nhận block tạo theo luật cũ.
    Sẽ không có chain split.

  • Đại đa số Full Node upgrade, chỉ một phần nhỏ Miner upgrade
    Giống như trường hợp ở trên, sẽ không có chain split. Luật cũ vẫn sẽ được áp dụng.

  • Đại đa số Full Node và Miner đều upgrade
    Block theo luật mới hard fork sẽ không được chấp nhận bởi Full Node chưa upgrade. Full Node và Miner chưa upgrade sẽ tạo thành 1 chain riêng và bị tách ra khỏi network.
    Phần thằng nghiêng về chain Hard Fork.
    Chain còn lại muốn duy trì cần được cung cấp đủ Hash Power để an toàn trước tấn công 51%.

  • Tất cả Full Node và Miner đều upgrade
    Giống như Soft Fork, đây là trạng thái lý tưởng.
    Mọi block mới tạo tuân theo luật mới và hợp lệ. Hark Fork thành công.

Tóm lại với Hard Fork

  • Để quá trình Hard Fork diễn ra thành công, việc đa số Miner đồng ý upgrade là rất quan trọng. Miner từ chối upgrade sẽ dẫn tới việc luật cũ vẫn được áp dụng, Hard Fork thất bại.
  • Full Node không upgrade sẽ có khả năng không hoạt động (không validate được các block mới), dẫn tới việc tạo áp lực phải upgrade.

Kết luận

Để Fork diễn ra thành công, mục tiêu cuối cùng vẫn là Miner (cũng chính là cộng đồng) đồng ý upgrade.
Với Soft Fork, điều này có thể đạt được dễ dàng hơn thông qua việc yêu cầu các Full Node (thường là các công ty) upgrade trước, tạo áp lực lên Miner.
Với Hard Fork, Miner được toàn quyền quyết định upgrade hay không. Dẫn tới việc dễ bị chia ra làm 2 chain khác nhau chạy song song.