Tìm hiểu Proof of Stake: Long Range Attack
Ta tiếp tục tìm hiểu thêm một vấn đề cần giải quyết của cơ chế đồng thuận Proof of Stake có tên gọi: Long Range Attack.
Chú ý: Đây là phần tiếp theo của trong series tìm hiểu về các cơ chế đồng thuận của Blockchain.
Phần 1: Proof of Work vs Proof of Stake
Phần 2: Tìm hiểu Proof of Stake: Nothing at Stake
Bài toán
Ờ phần 2, ta đã tìm hiểu về chain split, việc chain bị rẽ nhánh, và cách các node phân biệt đâu là chain chính. Có thể nói chain split chính là đầu mối cho mọi cách tấn công vào hệ thống Blockchain.
Nguyên tắc chung là:
- Attacker tạo ra một chain khác với nội dung giả mạo.
- Bằng một cách nào đó hacker làm các node khác tin đó là chain chính.
→ Attacker tấn công thành công.
Vitalik Buterin đã đưa ra tình huống giả thuyết về Long Range Attack trong bài viết của anh[1].
Attacker nắm 1% tổng số coin của hệ thống tại thời điểm tại ra block đầu tiên của chain (genesis block) hoặc một thời điểm ngắn sau đó.
Attacker cố tình tạo ra chain split, và tiến hành validate block để tạo ra chain riêng của anh ta.
Ở thời điểm này, số lượng người tham gia vào mạng lưới còn ít. Attacker có khả năng cao trở thành validator và thành công trong việc tạo chain riêng. Do việc validate block trong PoS không tốn kém, chain do attacker tạo ra nhanh và có khả năng bắt kịp và dài hơn chain chính.
Các node dễ bị tấn công nhất
Sau khi attacker tạo ra được chain của riêng anh ta, việc tiếp thao anh ta cần làm là làm cho các node khác tin rằng chain của anh ta mới là chain chính. Những node dễ bị mắc lừa nhất sẽ là:
- Node hoàn toàn mới tham gia mạng lưới (online lần đầu tiên)
Những node này chỉ có được thông tin về cơ chế đồng thuận nên không thế phân biệt được đâu là chain chính và sẽ chấp nhận chain chính là chain dài hơn. - Node offline trước thời điểm attacker tạo chain split, và online sau đó.
Giải pháp
Vitalik có viết 1 bài khá dài[2] về cơ chế gọi là Weak Subjectivity.
Chung quy mình thấy có 3 giải pháp được đưa ra.
1. Từ chối các block được tạo quá xa
Cơ chế này sẽ set 1 con số N
. Các block nào được tạo từ lâu xa hơn khoảng N
block tính từ block mới nhất sẽ bị coi là không hợp lệ.
Để vượt qua vấn đề này, attacker cần tạo chain split tại một thời điểm không quá xa (trong khoảng N
block trở lại), thời điểm mà đã có nhiều người tham gia mạng lưới, khiến cho việc tấn công trở lên khó khăn hơn nhiều lần.
2. Exponential Subjective Scoring
Mình không nghĩ ra phải dịch tên phương pháp này là gì.
Trong phương pháo này, anh ta đưa ra cách tính trọng số gravity
, và điểm score
, cho từng block, để phát hiện đâu là chain split được tạo ra sau.
Phương pháp được dùng kết hợp với 1 để tăng security, phát hiện tấn công khi chain split xảy ra sau N
block.
3. Tin tưởng Blockchain Explorer
2 phương pháp trên không áp dụng được với nhưng node hoàn toàn mới tham gia mạng lướisnhư đã nói ở phần trên.
Những node này cần lấy thông tin về block mới nhất từ một nguồn tin tưởng, được gọi là Blockchain Explorer.
Giải pháp này gây ra nhiều tranh cãi vì quay lại việc tin tưởng bên thứ 3.
Vitalik giải thích về việc có thể tin tưởng Blockchain Explorer rằng nếu họ không hoàn thành nhiệm vụ họ sẽ bị media explosion, lost market share, ad revenue, etc…