Trong bài viết trước (Proof of Work vs Proof of Stake), ta đã tìm hiểu về sự khác nhau của 2 cách thức đồng thuận trong Blockchain là Proof of Work (PoW) và Proof of Stake (PoS).

PoS trên lý thuyết đem đến nhiều điểm nổi trội so với PoW truyền thống, nhưng cũng tiềm ẩn nhiều bài toán cần được giải quyết khi áp dụng vào thực tế.
Trong bài viết này ta sẽ tìm hiểu về một trong các vấn đề đó là Nothing at Stake.

Chain split và Main Chain

Như đã biết, trong Blockchain sử dụng PoW, khi 2 miner khác nhau cùng thực hiện validate 1 block và broadcast kết quả của họ lên mạng lưới cùng một lúc, sẽ xuất hiện 2 chain khác nhau chạy song song.
Bitcoin xử lý vấn đề này bằng cách chọn chain nào dài hơn là chain chính (Main chain) và từ chối chain còn lại.
Block được gắn vào chain bị từ chối coi như bị loại bỏ.

Nếu 2 chain này liên tục được thêm block mới sẽ khó phân biệt được chain nào dài hơn, dẫn tới việc 2 chain sẽ tồn tại song song trong một thời gian dài mà không ai biết được chain nào mới là chính để tham gia.

Trong PoW, việc đóng gói 1 block tốn kém thời gian và công sức, vì thế dù muốn duy trì 1 chain khác có độ dài tương đương với chain chính là điều rất khó khăn. Để thực hiện được điều này cần phải có lượng hash power đủ lớn.
Đây là tấn công 51%.

Nothing at Stake là gì

Khác với PoW cần phải tiêu tốn năng lượng để tham gia vào quá trình đồng thuận đóng gói các block, trong PoS, validator dễ dàng validate các transaction mà hầu như không tốn chút thời gian, hay năng lượng.
Điều duy nhất validator cần là có đủ số tiền yêu cầu trong stake.

Khi chain split xảy ra, có 2 giả thuyết có thể xảy ra gây ảnh hưởng đến mạng lưới Blockchain:

1 node tham gia sẽ trở thành validator của cả 2 chain

Do ở cả 2 chain, tài sản của bạn là như nhau.
Với cùng 1 khoản tiền, một node tham gia có thể đặt vào stake của cả 2 chain và trở thành validator cho cả 2, từ đó kiếm được tiền từ cả 2 chain.
Điều này còn dẫn tới việc 2 chain sẽ được kéo dài liên tục với độ dài tương đương, dẫn đến không phân biệt được đâu là chain chính trong một khoảng thời gian dài.
Đây là cơ hội để hacker tấn công và thực hiện Double Spend.

Tấn công và thực hiện Double Spend

Khi tình huống như trên xảy ra, hacker có thể dễ dàng thực hiện Double Spend mà không cần phải nắm đến 51% tổng giá trị mạng lưới (để thực hiện 51% attack).

Hãy cùng tham khảo một tình huống như bên dưới:

Vero là 1 hacker, cô nắm stake tương đương 1% tổng giá trị mạng lưới và tìm cách thực hiện Double Spend.
Ở chain A, Vero thực hiện gửi tiền cho 1 sàn giao dịch. Đồng thời ở chain B, Vero thực hiện gửi cùng số tiền đó cho chính cô ta.
Hai chain có độ dài bằng nhau dẫn tới không phân biệt được đâu là chain chính.

Sau một khoảng thời gian, sàn giao dịch xác nhận đã nhận tiền từ Vero, cô dùng tiền này để mua Bitcoin (hoặc một cryptocurrency nào khác) và rút tiền đó ra khỏi sàn.

Vero đặt toàn bộ stake của mình vào chain B và tiến hành validate block (nếu cô được chọn là validator), điều này khả năng cao đẩy chain B tiến nhanh và xa hơn chain A.
Chain B trở thành chain chính, chain A bị từ chối.

Vero đã thực hiện Double Spend thành công.

Giải pháp của Casper

Casper (PoS của Ethereum) đưa ra cơ chế phạt nếu phát hiện validator đặt stake cho nhiều chain, fork khác nhau.
Node sẽ mất quyền validator và mất toàn bộ số tiền trong stake.

Casper cũng phát triển thêm cơ chế phát hiện gian lận qua việc các node khác có thể submit bằng chứng cho hệ thống.

Phần tiếp theo:


Tham khảo:
Understanding Proof of Stake through it’s Flaws. Part 2 — ‘Nothing’s at Stake’
Understanding Proof of Stake: The Nothing at Stake Theory