Lí giải về Proof-of-work

1. Proof-of-work là gì?

Proof-of-work, viết tắt là PoW, là thuật toán đồng thuận ban đầu của mạng lưới Blockchain.

Trên Blockchain, thuật toán này được dùng để xác nhận giao dịch và tạo ra block mới. Với PoW, các thợ đào cạnh tranh với nhau để hoàn tất giao dịch trên mạng lưới và nhận thưởng.

Như các bạn đã biết người dùng tiền điện tử chắc chắn sẽ muốn gửi token cho nhau. Hệ thống sẽ sử dụng một chiếc sổ cái phân quyền để chuyển một lượng giao dịch nhất định vào 1 block. Tuy nhiên, phải cần đến bàn tay con người tham gia vào công đoạn xác nhận các giao dịch và sắp xếp block.

Trọng trách đặc biệt trên thường được chúng ta biết đến với tên gọi mining (đào khối/block), còn những người đảm nhiệm công việc ấy chính là các miner (thợ đào).

Nguyên lí chính của quá trình ấy là một phương trình toán học phức tạp và nhiệm vụ là tìm ra phương thức để giải quyết nó càng nhanh gọn càng tốt.

Proof-of-work Confirmation

2. Thế nào là “phương trình toán học phức tạp”?

Nó là một câu đố cần rất nhiều năng lực tính toán của máy tính mới có thể giải được.

Một số bài toán đào block điển hình là:

  • hash function (hàm băm): tìm ẩn số đầu vào khi đã biết kết quả đầu ra.
  • integer factorization (thừa số nguyên): tìm một số biết nó là tích của hai số khác.
  • guided tour puzzle protocol (giao thức hướng dẫn giải quyết bài toán): nếu server cảm thấy mình đang bị tấn công DoS, nó sẽ cần phải tính toán lại hàm băm của một số node theo thứ tự nhất định – trong trường hợp ấy, bài toán của chúng ta sẽ là để “tìm một chuỗi các giá trị băm”.

Câu trả lời dành cho phương trình toán học PoW được gọi là “hash”.

Khi mạng lưới ngày càng lớn mạnh thì nó sẽ phải đối mặt với nhiều bài toán với cấp độ khó hơn. Do vậy, thuật toán để đủ sức tìm ra đáp số và đào block thì sẽ càng cần nhiều và nhiều năng lực băm (hash power) hơn nữa. Vì thế, độ khó thuật toán đào tiền là một trong những vấn đề nhạy cảm nhất trên Blockchain hiện nay.

3. Vì sao cần phải rắm rối đến như vậy?

Sự chính xác trong xử lí và tốc độ của Blockchain phụ thuộc rất nhiều vào Proof-of-work.

Tuy nhiên, độ khó bài toán không nên quá phức tạp vì nếu thế thì thời gian tạo block mới thì sẽ tốn rất lâu. Các giao dịch sẽ bị dồn ứ cho đến khi nào được xác nhận chuyển vào block và dòng chảy công việc sẽ bị ngưng trệ. Nếu bài toán không thể được giải quyết trong khoản thời gian vô hạn định, mạng lưới xem như là đi tong.

Nhưng nếu bài toán quá dễ thì mạng lưới lại tự đặt mình vào vị trí thuận lợi để bị spam, tấn công DoS và những trục trặc khác.

Bên cạnh đó, đáp án trả về cũng nên đơn giản cho công tác kiểm tra và chấp thuận. Không phải node nào cũng có thể đủ khả năng để xác định liệu tất cả công đoạn tính toán đã làm đúng theo quy trình. Lúc ấy thì bạn sẽ phải tin tưởng vào quyết định từ các node khác và vi phạm một trong những khía cạnh quan trọng nhất của Blockchain – tính minh bạch.

4. Làm sao để tích hợp thuật toán PoW vào Blockchain?

Thợ đào giải quyết bài toán, tạo ra block mới rồi sau đó xác nhận giao dịch.

Độ khó của bài toán đào block sẽ phụ thuộc vào số lượng người dùng, năng lực khai thác hiện tại và tải trọng của mạng lưới. Hash của mỗi block chứa trong nó hash của các block trước đó, giúp gia tăng mức độ an ninh và tranh vi phạm block.

Hash of blocks

Sau khi thợ đào giải quyết được bài toán thì hệ thống sẽ cho phép tạo thêm một block mới. Các giao dịch sẽ được chuyển vào block này và xem như là đã được hoàn tất.

Quy trình Proof-of-work: Mạng lưới (Network Server) tạo ra bài toàn cho các thợ đào, các thợ đào dùng năng lực tính toán của mình để giải nó rồi chuyển kết quả lên lại cho mạng lưới; sau đó, đáp án sẽ được các node xác nhận, thợ đào nào có đáp án đúng thì sẽ được nhận thưởng.
Quy trình Proof-of-work: Mạng lưới (Network Server) tạo ra bài toàn cho các thợ đào, các thợ đào dùng năng lực tính toán của mình để giải nó rồi chuyển kết quả lên lại cho mạng lưới; sau đó, đáp án sẽ được các node xác nhận, thợ đào nào có đáp án đúng thì sẽ được nhận thưởng.

5. Proof-of-work được áp dụng vào đâu?

Hiện thì giao thức Proof-of-work đang được rất nhiều đồng tiền điện tử sử dụng.

Một trong những ví dụ điển hình nhất cho tích hợp PoW chính là ở Bitcoin. Chính Bitcoin đã tạo ra nền tảng giới thiệu thuật toán đồng thuận này đến với thế giới. PoW của Bitcoin có tên gọi là Hashcash. Giao thức ấy cho phép thay đổi độ khó thuật toán đào dựa trên năng lực khai thác hiện tại của mạng lưới. Thời gian trung bình tạo block mới hiện tại là 10 phút. Những đồng tiền điện tử khác trên nền tảng Bitcoin như Litecoin cũng sử dụng hệ thống tương tự.

Một mạng lưới khác sử dụng PoW là Ethereum. Vì ngay lúc này cứ 4 thì đã có đến 3 dự án chạy trên nền tảng Ethereum, cho nên có thể nói phần lớn các ứng dụng Blockchain đều đang tích hợp mô hình đồng thuận Proof-of-work.

6. Tại sao phải sử dụng Proof-of-work ngay từ đầu?

Một trong những lợi ích chính là bảo vệ chống tấn công DoS và giảm thiểu rủi ro trong hoạt động đào tiền.

Bảo vệ chống tấn công DoS (Denial of Service): PoW đặt ra giới hạn cao lên mạng lưới. Muốn thực hiện hành động gì đó thì trước hết bạn phải đáp ứng được chúng. Do đó, để tấn công vào mạng lưới thì trước hết cần phải tập hợp lượng năng lực máy tính đủ lớn và cần nhiều thời gian để tính toán. Đợt tấn công vẫn có thể triển khai được nhưng với cái giá phải trả là chi phí cực kì lớn.

Khả năng đào block: Không quan trọng là bạn có bao nhiêu tiền trong ví. Thứ tồn tại duy nhất là liệu bạn có đủ năng lực máy tính để giải toán đào block hay không mà thôi. Do đó, trên mạng lưới Blockchain, người có tiền chưa chắc đã có quyền.

7. Vậy Proof-of-work có tồn tại trong mình khiếm khuyết nào không?

Những điểm trừ chính là chi phí đắt đỏ, “sự vô dụng” của năng lực tính toán và tấn công 51%.

Chi phí đắt đỏ: Đào tiền yêu cầu trang bị những máy tính cùng phần cứng chuyên dụng đủ sức chạy những thuật toán hết sức phức tạp. Số tiền phải bỏ ra là rất lớn đối với một cá nhân riêng lẻ. Chính vì vậy, hoạt động khai thác block hiện giờ chỉ được thực hiện chủ yếu bởi các hội thợ đào (mining pool). Những nhóm người dùng nảy sử dụng các thiết bị tiêu tốn rất nhiều năng lượng, càng làm gia tăng chi phí khai thác. Chưa hết, sự xuất hiện của các hội thợ đào được lo sợ là sẽ đe doạ đến bản chất phân quyền của tiền điện tử, đặc biệt là đối với trường hợp của Bitcoin.

Phân bổ năng lực khai thác block trên mạng lưới Bitcoin giữa các hội thợ đào
Phân bổ năng lực khai thác block trên mạng lưới Bitcoin giữa các hội thợ đào

“Sự vô dụng” của năng lực máy tính: Thợ đào đúng thật là phải làm việc cật lực mới có thể tạo ra block mới, quá trình ấy tiêu thụ rất nhiều điện năng. Tuy nhiên, công việc tính toán của họ cũng không thể mang đi áp dụng ở những nơi khác. Họ chỉ có thể bảo đảm mạng lưới vận hành trơn tru nhưng lại không thể ứng dụng kĩ năng của mình vào kinh doanh, làm khoa học hay tham gia bất cứ lĩnh vực nào nữa cả.

8. Tấn công 51% là cái gì nữa đây?

Một cuộc tấn công 51%, hay tấn công đa số, xảy ra khi một nhóm người dùng kiểm soát đa số năng lực khai thác.

Khi ấy thì những kẻ tấn công sẽ có đủ quyền lực để kiểm soát và tác động lên đa số các sự kiện xảy ra trên mạng lưới.

Chúng có thể độc quyền quá trình tạo block mới và giành lấy toàn bộ phần thưởng vì chúng hoàn toàn dễ dàng ngăn những thợ đào khác giải xong bài toàn trước.

Chúng thậm chí còn có thể đảo ngược giao dịch.

Ví dụ, hãy giả dụ Alice gửi Bob một số tiền thông qua Blockchain. Alice bị dính tấn công 51%, Bob thì không. Giao dịch tuy đã được chuyển vào trong block thế nhưng những kẻ tấn công lại chặn không cho chuyển tiền. Và thế là sẽ có một đợt fork xảy ra trên Blockchain.

Một nhóm người kiểm soát đa số năng lực khai thác của mạng lưới, kích hoạt một hard fork tấn công 51%, chia Blockchain làm hai
Một nhóm người kiểm soát đa số năng lực khai thác của mạng lưới, kích hoạt một hard fork tấn công 51%, chia Blockchain làm hai

Lúc đó thì thợ đào sẽ phân nhánh thành hai chain nhỏ hơn. Một bên chắc chắn sẽ có 51% số thợ đào, chính vì thế chain đó sẽ đào được nhiều block hơn.

Chain có nhiều thợ đào tham gia hơn (chain 51%) đương nhiên có nhiều năng lực khai thác hơn, từ đó đào được nhiều block hơn chain còn lại
Chain có nhiều thợ đào tham gia hơn (chain 51%) đương nhiên có nhiều năng lực khai thác hơn, từ đó đào được nhiều block hơn chain còn lại

Đến cuối cùng, chain dài hơn sẽ tồn tại, chain ngắn hơn sẽ bị đào thải. Giao dịch giữa Bob và Alice xem như chưa từng xảy ra. Bob sẽ không nhận được tiền của mình.

Cuối cùng, hệ thống sẽ công nhận chain dài hơn, loại bỏ chain ngắn hơn, những block nào trên chain ngắn hơn sẽ không được ghi nhận
Cuối cùng, hệ thống sẽ công nhận chain dài hơn, loại bỏ chain ngắn hơn, những block nào trên chain ngắn hơn sẽ không được ghi nhận

Từ những bước trên, kẻ tấn công có thể đảo ngược lại giao dịch.

Mặc dù vậy, tấn công 51% vẫn không phải là một lựa chọn có lợi về kinh tế. Nó yêu cầu phải tập hợp một lượng năng lực đào áp đảo. Và khi tin tức về việc này lan truyền, người dùng sẽ cân nhắc từ bỏ mạng lưới vì họ xem như nó không còn duy trì được tính phân quyền nữa. Giá của đồng tiền điện tử gắn liền với Blockchain ấy sẽ rớt thê thảm. Tất yếu, người dùng sẽ mất toàn bộ tài sản của mình.

Theo CoinTelegraph

Leave a Reply

Your email address will not be published. Required fields are marked *