Thuật toán đồng thuận — Consensus

Hieu Tran
8 min readJun 13, 2018

--

Nguồn: Internet

— — Tại sao phải cần cơ chế đồng thuận?

Trong hệ thống phi tập trung (decentralized system), điểm mấu chốt là làm thế nào thống nhất được nội dung dữ liệu lưu trữ trên blockchain. Vì có rất nhiều nút trên hệ thông, không thể nào đảm bảo rằng tất cả các nút sẽ cập nhật, lưu trữ dữ liệu chính xác. Cơ chế đồng thuận ra đời để đảm bảo điều này.

Có thể hiểu cơ chế đồng thuận là “luật chơi” của hệ thống. Bất kì ai tham gia đều phải tuân theo và không thể cố tình chơi sai luật.

— — Cơ chế đồng thuận có quan trọng không?

PROGRAM = DATA STRUCTURE + ALGORITHM.

Hệ thống tập trung được tạo thành từ một cấu trúc dữ liệu phi tập trung (data structure) và một cơ chế đồng thuận (algorithm). Hệ thống đó có tốc độ xử lý nhanh hay chậm, khả năng mở rộng đều phụ thuộc vào 2 yếu tố này. Các dự án gần đây tập trung vào việc cải tiến cấu trúc blockchain và cơ chế đồng thuận nhằm nâng cao hiệu năng của hệ thống.

Do đó, cơ chế đồng thuận đóng vai trò rất quan trọng!

— — Cơ chế đồng thuận đầu tiên là gì?

Proof-of-Work hay PoW (tạm dịch: chứng minh nỗ lực), được đề xuất bởi Satoshi. Ông đã giải quyết được vấn đề của các nhà mật mã học tồn tại từ vài chục năm trước. Cách giải quyết vấn đề đồng thuận ko phải bằng phương pháp mật mã, mà là sự kệt hợp với sức mạnh phần cứng.

— — Mục đích của PoW là gì?

Trong hệ thống Bitcoin cũng như Ethereum, PoW dùng để quyết định nút nào “giành” được quyền thêm một block mới vào blockchain hiện tại (xác minh giao dịch).

— — PoW hoạt động như thế nào?

PoW là sự ghi nhận công sức bỏ ra để hoàn thành công việc. Nút nào hoàn thành công việc trước thì được quyền thêm block mới vào blockchain. Công việc ở đây là tìm một giá trị nonce bất kì thoả mãn điều kiện nào đó. Ví dụ:

hash(nonce) < 000000000000000000285a375f9d33e17…

Ở đây, hash là một hàm băm mật mã, nonce là một giá trị ngẫu nhiên được tìm ra sao cho hash(nonce) nhỏ hơn một ngưỡng nào đó. Giá trị 000000000000000000285a375f9d33e17… là ví dụ cho một ngưỡng nào đó.

Quá trình tìm ra giá trị nonce là một quá trình thử sai nhàm chán. Các nút thường sẽ bắt đầu với nonce = 0, 1, …, đến khi nào giá trị hash của nonce thoả điều kiện ngưỡng. Ví dụ bắt đầu với 18 số 0.

Vì là quá trình thử sai nhàm chán, nên năng lực tính toán của các nút rất quan trọng. Tốc độ của vi xử lý càng nhanh, thì tốc độ thử sai sẽ nhanh, và khả năng tìm ra nonce sẽ cao hơn.

— — Sự đồng thuận diễn ra như thế nào?

Khi một block mới được tìm thấy, nó sẽ được công bố trên toàn mạng để các nút khác kiểm tra. Nếu mọi tính toán, giao dịch trong block đó chính xác, các nút sẽ cập nhật vào blockchain đang lưu trữ cục bộ tại nút đó.

Nguồn: Mastering of Bitcoin

Vấn đề mâu thuẩn xảy ra là vì khoảng cách địa lý, cùng một thời điềm các nút sẽ lưu trữ 2 phiên bản blockchain khác nhau. Ví dụ như hình trên, các nước ở châu Mỹ đang có chuỗi blockchain là …P →A, còn các nước châu Á có chuỗi blockchain là …P →B. Việc mining lúc này vẫn diễn ra bình thường.

Nguồn: Mastering of Bitcoin

Sau đó, một block X mới được tìm thấy từ một nút ở khu vực châu Á đang lưu trữ chuỗi hiện tại là …P →B, và chuối blockchain sẽ được cập nhật lại là … P →B →X. Khi blockchain mới này được thông báo đến các nút ở khu vực châu Mỹ, lúc này có sự mâu thuẫn. Chuỗi …P →A và chuỗi … P →B →X. Theo luật của PoW, chuỗi blockchain nào dài hơn thì sẽ thành chuỗi chính. Do đó, các nút ở châu Mỹ phải cập nhật lại chuỗi blockchain mới là … P →B →X. Khi đó sự thống nhất của chuỗi blockchain trên hệ thống được đảm bảo.

Nguồn: Mastering of Bitcoin

— — Sử dụng thuật toán POW có công bằng?

Có người nói rằng sẽ không công bằng khi giả sử 1 nút có năng lực tính toán rất cao và 1 nút có năng lực tính toán rất thấp. Ví dụ A có 100 máy S9 và B có 1 máy S9. Vậy lúc nào A cũng sẽ tìm được nonce trước B là đúng hay sai? Điều này không đúng. Vì bài toán tìm nonce ở mỗi nút là khác nhau nên giá trị nonce tìm được cũng khác nhau. Cùng xem ví dụ sau.

A và B mỗi người được giao một bể đầy bong bóng khác nhau; trong mỗi bể đều có 1 bong bóng có chứa chìa khoá bên trong; ai tìm được chìa khoá trong bể của mình trước là người thắng cuộc. Mặc dù A có tốc độ tìm bóng nhanh gấp 100 lần B, nhưng khả năng bốc được quả bóng chứa chìa khoá là ngẫu nhiên, nên có thể B sẽ may mắn hơn bốc được bóng có chìa khoá sớm, và tìm được chìa khoá trước A.

— — Vấn đề của PoW là gì?

PoW giải quyết tốt vấn đề đồng thuận. Tuy nhiên, PoW lại vướng vào 2 vấn đề khác:

  1. Tiêu tốn năng lượng điện và cuộc chạy đua phần cứng
  2. Tiềm ẩn nguy cơ tấn công 51%

— — Tấn công 51% là như thế nào?

Như ta đã biết, Pow là cuộc chạy đua giành quyền thêm một block mới vào blockchain, và các giao dịch được ghi trong block đó coi như là được xác nhận. Khi một nút có năng lực tính toán chiếm phần lớn hệ thống (>50%) thì có khả năng kiểm soát việc tạo ra các block mới. Có hai nguy cơ nguy hiểm đe doạ đến hệ thống như sau:

  1. Tân công từ chối dịch vụ
  2. Tấn công double spending.
Nguồn: Internet

— — Tấn công từ chối dịch vụ là gì?

Việc kiểm soát hơn 50% năng lực tính toán, kẻ tấn công có thể từ chối các giao dịch xuất phát từ một địa chỉ hay đến một địa chỉ nào đó. Điều này không quá nghiêm trọng, vì sau đó sẽ có các nút khác đưa giao dịch này vào trong một block nào đó.

— — Tấn công double spending là gì?

Kẻ tấn công có thể thực hiện việc chuyển coin đi, rồi tạo ra một chuỗi blockchain mới dài hơn và không chứa giao dịch trước đó, và tiếp tục chuyển coin lần thứ 2. Để dễ hiểu xét ví dụ sau:

  • Blockchain hiện tại trên hệ thống là …P → B.
  • Trong block B, kẻ tấn công thực hiện giao dịch chuyển 100 btc đến ví Coinbase và ngay lập tức bán 100 btc ra usd và rút toàn bộ usd ra khỏi ngân hàng. Như vậy, kẻ tấn công đã bán thành công 100 btc ra usd.
  • Chuỗi blockchain hiện tại là …P→ B → X, trong đó X là một block mới được tạo ra bởi các nút trên mạng.
  • Lúc này, kẻ tấn công dựa vào sức mạnh tính toán, cố gắng thay đổi chuỗi blockchain hiện tại, thay đổi từ block B trở đi để nhằm xoá bỏ giao dịch chuyển 100 btc đã được ghi nhận trong block B. Nhiệm vụ của kẻ tấn công là tạo được chuỗi blockchain dài hơn chuỗi hiện tại.
  • Đây là một cuộc chay đua thật sự giữa kẻ tấn công và các nút còn lại trong hệ thống (không ai biết cho đến khi nó xảy ra). Vì chiếm phần lớn năng lực tính toán, sau khoảng 2 block tiếp theo, kẻ tấn công đã bắt kịp. Chúng đã tạo ra một blockchain mới dài hơn, và ko có sự tồn tại của block B. Ví dụ …P → A → U → V → T trên nút của kẻ tấn công, so với chuỗi hiện tại là … P→ B → X → Y ở các nút còn lại.
  • Vì chuỗi mới dài hơn chuỗi hiện tại, nên các nút trên hệ thống phải cập nhật lại chuỗi blockchain mới của kẻ tấn công là … P → A → U → V → T và nó ko chứa giao dịch rút 100 btc.
  • Cuối cùng, kẻ tấn công thực hiện giao dịch chuyển 100 btc lần thừ 2.

Vậy là kẻ tấn công đã thực hiện double spending thành công.

— — Tấn công 51% có dễ xảy ra hay không?

Tấn công 51% hoàn toàn có thể xảy ra. Hiện nay, việc mining chủ yếu được thực hiện theo hình thức tập trung. Đó là các cá nhân sẽ tham gia chung một pool đào để tăng năng lực tính toán và tăng sức cạnh tranh.

Nguồn: Blockchain.info

Như hình trên, chỉ cần 3 pools lớn là BTC.com, AntPool, và SlushPool liên thủ với nhau thì hoàn toàn có thể tạo ra cuộc tấn công 51%. Tuy nhiên, đây là hệ thống phi tập trung có sự tham gia của cả cộng đồng, việc tấn công có thể dẫn đến hậu quả đáng tiếc. Ví dụ cộng đồng có thể biểu quyết để loại bỏ sự tham gia của các máy đào từ các pool này. Đây như là một cách trừng phạt vì hành vi tấn công hệ thống.

— — Tại sao gần đây có nhiều cuộc tấn công 51% vào Btg, Xvg, …?

Đứng trên góc nhìn kĩ thuật, có thể do khả năng sau: (có thể có các khả năng khác và có thể chính xác hoặc không — tham khảo từ Gau VT)

  1. Cố tình liên thủ giữa các pool lớn, đơn vị phát hành coin
  2. Tấn công vào các pool lớn (chiếm phần lớn hash rate) làm tê liệt tạm thời và tổng hash của hệ thống giảm đột ngột, khi đó việc chiếm 51% hash rate cũng không quá khó khăn

— — Vậy tương lai nào cho PoW?

PoW là thuật toán đồng thuận đầu tiên, nên tất nhiên có nhiều hạn chế. Những hệ thống với sự tham gia của rất nhiều nút như Bitcoin và Ethereum, thì ngoài vấn đề ảnh hưởng môi trường do tiêu thụ điện năng nhiều, PoW đáp ứng tốt với hệ thống hiện tại.

Đón xem bài tiếp theo giới thiệu hai cơ chế đồng thuận mới phổ biến hiện nay là PoS và DPoS.

KryptoLight

--

--