5.5. Ưu đãi và chiến lược khai thác
Chúng ta đã dành phần lớn chương này để mô tả những thách thức chính của việc trở thành một thợ đào là có được phần cứng tốt, tìm kiếm điện giá rẻ, khởi động và chạy nhanh nhất có thể và hy vọng một số điều may mắn. Ngoài ra còn có một số cân nhắc chiến lược thú vị mà mọi người khai thác phải thực hiện trước khi họ chọn khối nào để hoạt động.
- Những giao dịch nào cần bao gồm. Người khai thác chọn giao dịch mà họ bao gồm trong một khối. Chiến lược mặc định là bao gồm bất kỳ giao dịch nào có phí giao dịch cao hơn mức tối thiểu nào đó.
- Khối nào để khai thác. Các thợ đào cũng quyết định khối nào họ muốn khai thác trên đó. Hành vi mặc định cho quyết định này là mở rộng chuỗi hợp lệ dài nhất đã biết.
- Lựa chọn giữa các khối có cùng chiều cao. Nếu hai khối khác nhau được khai thác và công bố cùng một lúc, điều đó dẫn đến một đợt phân tách 1 khối, với một trong hai khối có thể được chấp nhận theo chính sách chuỗi hợp lệ dài nhất. Các thợ đào sau đó phải quyết định mở rộng khối nào. Hành vi mặc định là xây dựng trên đầu khối mà họ đã nghe về đầu tiên.
- Khi nào thông báo khối mới. Khi họ tìm thấy một khối, các thợ đào phải quyết định thời điểm thông báo điều này với mạng Bitcoin. Hành vi mặc định là thông báo ngay lập tức, nhưng họ có thể chọn đợi một thời gian trước khi thông báo.
Do đó, các thợ đào phải đối mặt với nhiều quyết định. Đối với mỗi quyết định, có một chiến lược mặc định được sử dụng bởi ứng dụng khách tham chiếu Bitcoin, được điều hành bởi gần như tất cả các thợ đào tại thời điểm viết bài này. Nhưng có thể chiến lược không mặc định có lợi hơn. Tìm kiếm các kịch bản và chiến lược như vậy là một lĩnh vực nghiên cứu tích cực. Hãy xem xét một số sai lệch có khả năng sinh lợi như vậy so với hành vi mặc định (thường được gọi là “tấn công”). Trong cuộc thảo luận sau đây, chúng ta giả định rằng một công cụ khai thác không mặc định kiểm soát một phần sức mạnh khai thác, mà chúng ta ký hiệu là α.
Forking Attack
Cuộc tấn công đơn giản nhất là một cuộc tấn công fork và cách rõ ràng để thu lợi là thực hiện chi tiêu gấp đôi. Người khai thác gửi một số tiền cho nạn nhân, Bob, để thanh toán cho một số hàng hóa hoặc dịch vụ. Bob đợi và thấy rằng giao dịch trả tiền cho anh ta thực sự đã được đưa vào chuỗi khối. Có lẽ anh ta tuân theo phương pháp khám phá thông thường và thậm chí đợi sáu xác nhận để chắc chắn. Tin chắc rằng mình đã được trả tiền, Bob giao hàng hoặc thực hiện dịch vụ.
Người khai thác bây giờ bắt đầu làm việc trên một khối trước đó—trước khối chứa giao dịch với Bob. Trong chuỗi phân nhánh này, người khai thác chèn một giao dịch thay thế—hoặc một khoản chi tiêu gấp đôi—sẽ gửi số tiền được trả cho Bob trên chuỗi chính trở lại một trong các địa chỉ của chính người khai thác (Hình 5.15).
Để cuộc tấn công thành công, chuỗi đã phân nhánh phải vượt qua chuỗi dài nhất hiện tại. Khi điều này xảy ra, giao dịch trả tiền cho Bob không còn tồn tại trên chuỗi khối đồng thuận. Điều này chắc chắn sẽ xảy ra cuối cùng nếu người khai thác tấn công có phần lớn sức mạnh băm—nghĩa là, nếu α > 0,5. Có nghĩa là, mặc dù có rất nhiều biến thể ngẫu nhiên về thời điểm tìm thấy các khối, nhưng chuỗi đang phát triển nhanh hơn trung bình cuối cùng sẽ trở nên dài hơn. Hơn nữa, vì tiền của người khai thác đã được sử dụng (trên chuỗi đồng thuận mới), giao dịch trả tiền cho Bob không còn có thể thực hiện được trên chuỗi khối.
HÌNH 5.15. Đòn tấn công Forking. Một kẻ khai thác độc hại gửi một giao dịch cho Bob và nhận được một số hàng hóa hoặc dịch vụ để đổi lấy nó. Sau đó, người khai thác sẽ phân tách chuỗi khối để tạo ra một nhánh dài hơn có chứa một giao dịch xung đột. Khoản thanh toán cho Bob sẽ không hợp lệ trong chuỗi đồng thuận mới này.
51 phần trăm có cần thiết không? Chắc chắn có thể tung ra một cuộc tấn công fork nếu α > 0.5. Trong thực tế, có thể thực hiện cuộc tấn công này với ít hơn một chút do các yếu tố khác, chẳng hạn như chi phí mạng. Những người khai thác mặc định làm việc trên chuỗi chính sẽ tạo ra một số khối cũ vì lý do thông thường: có độ trễ để người khai thác nghe về các khối của nhau. Nhưng kẻ tấn công tập trung có thể giao tiếp nhanh hơn nhiều và tạo ra ít khối cũ hơn, có thể tiết kiệm được 1% hoặc hơn.
Tuy nhiên, ở mức gần 50%, cuộc tấn công có thể mất nhiều thời gian để thành công vì cơ hội ngẫu nhiên. Cuộc tấn công trở nên dễ dàng và hiệu quả hơn nhiều khi bạn tiến xa hơn 50 phần trăm. Mọi người thường nói về kẻ tấn công 51 phần trăm như thể 51 phần trăm là một ngưỡng phép thuật bất ngờ kích hoạt một cuộc tấn công fork. Trong thực tế, nó giống như một độ dốc (gradient).
Các biện pháp đối phó thực tế. Không rõ liệu một cuộc tấn công fork có thực sự thành công trong thực tế hay không. Cuộc tấn công có thể phát hiện được và có thể cộng đồng sẽ quyết định chặn cuộc tấn công bằng cách từ chối chấp nhận chuỗi thay thế, mặc dù nó dài hơn.
Các cuộc tấn công và tỷ giá hối đoái. Quan trọng hơn, có khả năng một cuộc tấn công như vậy sẽ làm sụp đổ hoàn toàn tỷ giá hối đoái Bitcoin. Nếu một thợ đào thực hiện một cuộc tấn công như vậy, niềm tin vào hệ thống sẽ giảm và tỷ giá hối đoái sẽ giảm khi những người tham gia cố gắng chuyển tài sản của họ ra khỏi hệ thống. Do đó, mặc dù kẻ tấn công có 51% sức mạnh băm có thể kiếm lợi trong ngắn hạn từ việc chi tiêu gấp đôi, nhưng chúng có thể làm suy yếu nghiêm trọng tiềm năng kiếm tiền dài hạn của chúng để khai thác trung thực và kiếm tiền từ phần thưởng khai thác của chúng.
Vì những lý do này, có lẽ động cơ hợp lý hơn cho một cuộc tấn công fork là nhằm phá hủy cụ thể tiền tệ do mất niềm tin nghiêm trọng. Điều này đã được giới thiệu như một cuộc tấn công của Goldfinger sau khi nhân vật phản diện James Bond cố gắng chiếu xạ tất cả vàng trong Fort Knox để biến nó thành vô giá trị. Mục tiêu của kẻ tấn công Goldfinger có thể là phá hủy tiền tệ, có thể thu lợi nhuận bằng cách bán khống Bitcoin hoặc bằng cách nắm giữ đáng kể một số loại tiền tệ cạnh tranh.
Tấn công bằng tiền hối lộ
Mua đủ phần cứng để kiểm soát phần lớn sức mạnh băm dường như là một nhiệm vụ tốn kém và khó khăn. Nhưng có thể có một cách dễ dàng hơn để khởi động một cuộc tấn công fork. Trong khi sẽ thực sự tốn kém nếu trực tiếp mua đủ công suất khai thác để có nhiều hơn những người khác trên thế giới, nhưng có thể hối lộ những người kiểm soát tất cả năng lực đó để làm việc thay cho bạn.
Bạn có thể hối lộ những người khai thác bằng nhiều cách. Một cách là thực hiện điều này “ngoài tầm” —có thể xác định vị trí của một số thợ đào quy mô lớn và giao cho họ một phong bì tiền mặt để làm việc trong đợt fork của bạn. Một kỹ thuật thông minh hơn là tạo một nhóm khai thác mới và chạy nó khi bị thua lỗ, cung cấp các ưu đãi lớn hơn so với các nhóm khai thác khác. Mặc dù các ưu đãi có thể không bền vững, nhưng kẻ tấn công có thể giữ chúng ở lại đủ lâu để thực hiện thành công một cuộc tấn công fork và có thể thu lợi từ nó. Kỹ thuật thứ ba là để lại các “tiền tips” lớn trong các khối trên chuỗi forking—đủ lớn để khiến các thợ đào rời khỏi chuỗi dài nhất và làm việc trên chuỗi fork với hy vọng rằng nó sẽ trở thành chuỗi dài nhất và họ có thể thu thập các tiền tips.
Dù cơ chế hối lộ là gì, ý tưởng vẫn giống nhau: thay vì thực sự có được tất cả công suất khai thác trực tiếp, kẻ tấn công chỉ trả tiền cho những người đã có nó để giúp fork của kẻ tấn công vượt qua chuỗi dài nhất.
Có lẽ các thợ đào sẽ không muốn giúp đỡ, bởi vì làm như vậy sẽ làm tổn hại đến đồng tiền mà họ đã đầu tư rất nhiều tiền và thiết bị khai thác. Nhưng mặc dù những người khai thác với tư cách là một nhóm có thể muốn giữ tiền tệ có khả năng thanh toán (solvent), họ không hành động tập thể. Các người khai thác cá nhân có thể đào tẩu và nhận hối lộ nếu họ nghĩ rằng họ có thể kiếm được nhiều tiền hơn trong ngắn hạn. Đây sẽ là một bi kịch kinh điển của tài nguyên công cộng (tragedy of the commons) từ góc độ kinh tế.
Không có điều gì trong số này thực sự xảy ra, và đó là một câu hỏi bỏ ngỏ liệu một cuộc tấn công hối lộ như thế này có thực sự khả thi hay không.
Các cuộc tấn công giữ lại khối tạm thời
Giả sử bạn vừa tìm thấy một khối. Hành vi mặc định là thông báo nó ngay lập tức với mạng, nhưng nếu bạn đang thực hiện một cuộc tấn công tạm thời giữ lại khối, bạn sẽ không thông báo nó ngay lập tức. Thay vào đó, bạn cố gắng vượt lên bằng cách thực hiện thêm một số hoạt động khai thác trên đầu khối này với hy vọng tìm thấy hai khối liên tiếp trước khi phần còn lại của mạng tìm thấy ngay cả một khối, giữ bí mật các khối của bạn trong suốt thời gian.
Nếu bạn đi trước chuỗi khối công khai bởi hai khối bí mật, tất cả nỗ lực khai thác của phần còn lại của mạng sẽ bị lãng phí. Những người khai thác khác sẽ khai thác trên những gì họ cho là chuỗi dài nhất, nhưng ngay sau khi họ tìm thấy một khối hợp lệ, bạn có thể thông báo hai khối mà bạn đã giữ lại. Đó ngay lập tức sẽ là chuỗi hợp lệ dài nhất mới và khối mà phần còn lại của mạng đã làm việc rất chăm chỉ để tìm kiếm sẽ ngay lập tức bị bỏ rơi (Hình 5.16). Đây được gọi là khai thác ích kỷ (selfish mining). Bằng cách khiến phần còn lại của mạng lãng phí sức mạnh băm khi cố gắng tìm một khối mà bạn có thể ngay lập tức gây ra lỗi cũ, bạn hy vọng sẽ tăng tỷ lệ phần thưởng khai thác hiệu quả của mình.
Điểm bắt buộc là bạn cần phải có được may mắn để tìm thấy hai khối liên tiếp. Rất có thể ai đó trong mạng thông báo một khối hợp lệ khi bạn chỉ ở phía trước một khối. Nếu điều này xảy ra, bạn sẽ muốn tự mình thông báo ngay khối bí mật của mình. Điều này tạo ra một fork một khối và mọi người khai thác sẽ cần phải đưa ra quyết định về việc khai thác khối nào trong số những khối đó. Hy vọng của bạn là một phần lớn những người khai thác khác sẽ nghe về khối của bạn trước tiên và quyết định làm việc với nó. Khả năng tồn tại của cuộc tấn công này phụ thuộc nhiều vào khả năng của bạn để giành chiến thắng trong các cuộc đua này, vì vậy vị trí mạng là rất quan trọng. Bạn có thể cố gắng ngang hàng với mọi nút, để khối của bạn sẽ tiếp cận hầu hết các nút trước tiên.
Hóa ra, nếu bạn giả định rằng bạn chỉ có 50% cơ hội chiến thắng các cuộc đua này, thì việc khai thác ích kỷ là một cải tiến so với chiến lược mặc định nếu phần sức mạnh khai thác của bạn là α > 0,25. Ngay cả khi bạn thua mọi cuộc đua, khai thác ích kỷ vẫn có lợi hơn nếu α > .333. Sự tồn tại của cuộc tấn công này là khá đáng ngạc nhiên và nó trái với niềm tin ban đầu được phổ biến rộng rãi rằng không có phần lớn mạng (nghĩa là với α ≤ 0,5), không có chiến lược khai thác nào tốt hơn so với mặc định. Vì vậy, sẽ không an toàn khi cho rằng một người khai thác không kiểm soát 50% mạng lưới sẽ không thu được gì bằng cách chuyển sang một chiến lược thay thế.
Kể từ năm 2015, giữ lại khối tạm thời chỉ là một cuộc tấn công trên lý thuyết và chưa được quan sát thấy trong thực tế. Khai thác ích kỷ sẽ khá dễ bị phát hiện, vì nó sẽ làm tăng tỷ lệ thông báo khối gần như đồng thời.
HÌNH 5.16. Khai thác ích kỷ. Một trong những cách khả dĩ mà cuộc tấn công có thể diễn ra được chỉ ra. (1) Chuỗi khối trước khi tấn công. (2) Kẻ tấn công khai thác một khối, giữ lại khối đó, bắt đầu khai thác trên khối đó. (3) Kẻ tấn công gặp may, tìm thấy khối thứ hai trước phần còn lại của mạng, tiếp tục giữ lại khối. (4) Nonattacker tìm thấy một khối và phát nó. Để đáp lại, kẻ tấn công phát cả hai khối của mình, làm mất đi khối của kẻ không tấn công và lãng phí sức mạnh khai thác để tìm kiếm nó.
Danh sách đen và Forking trừng phạt
Giả sử bạn muốn đưa vào danh sách đen các giao dịch từ địa chỉ X. Nói cách khác, bạn muốn đóng băng số tiền mà địa chỉ đó nắm giữ, khiến nó không thể sử dụng được. Có lẽ bạn có ý định thu lợi từ việc này bằng một số loại tiền chuộc hoặc kế hoạch tống tiền, yêu cầu người mà bạn đang trong danh sách đen trả tiền cho bạn để được đưa ra khỏi danh sách đen của bạn. Danh sách đen cũng có thể là điều gì đó mà bạn buộc phải làm vì lý do pháp lý. Có thể một số địa chỉ được chính phủ chỉ định là địa điểm xấu. Các quan chức thực thi pháp luật có thể yêu cầu tất cả các thợ đào hoạt động trong phạm vi quyền hạn của họ cố gắng đưa vào danh sách đen các địa chỉ đó.
Sự khôn ngoan thông thường là không có cách nào hiệu quả để đưa các địa chỉ vào danh sách đen trong Bitcoin. Ngay cả khi một số thợ đào từ chối bao gồm một số giao dịch trong các khối, các thợ đào khác sẽ làm. Tuy nhiên, nếu bạn là một thợ đào đang cố gắng đưa vào danh sách đen, bạn có thể thử một thứ gì đó mạnh mẽ hơn, cụ thể là rèn luyện tính trừng phạt. Bạn có thể thông báo rằng bạn sẽ từ chối làm việc trên một chuỗi có chứa giao dịch bắt nguồn từ địa chỉ này. Nếu bạn có phần lớn sức mạnh băm, thì mối đe dọa này phải đủ để đảm bảo rằng các giao dịch trong danh sách đen sẽ không bao giờ được công bố. Thật vậy, những người khai thác khác có thể sẽ ngừng cố gắng, vì làm như vậy chỉ đơn giản là khiến các khối của họ bị tách ra trong các nhánh.
Feather Forking
Việc phân tách trừng phạt dường như không hoạt động trừ khi kẻ tấn công nắm giữ phần lớn sức mạnh băm của mạng. Bằng cách thông báo rằng bạn từ chối khai thác trên bất kỳ chuỗi nào có các giao dịch nhất định, nếu một chuỗi như vậy tồn tại và được phần còn lại của mạng chấp nhận là chuỗi dài nhất, bạn sẽ tự cắt mình khỏi chuỗi đồng thuận mãi mãi (hiệu quả giới thiệu một hard fork) và tất cả hoạt động khai thác hiện tại của bạn sẽ trở nên lãng phí. Tệ hơn nữa, các giao dịch nằm trong danh sách đen vẫn sẽ trở thành chuỗi dài nhất.
Nói cách khác, mối đe dọa đưa vào danh sách đen các giao dịch nhất định thông qua việc phân nhánh trừng phạt theo cách trên là không đáng tin cậy chừng nào mà những người khai thác khác có liên quan. Nhưng có một cách thông minh hơn nhiều để làm điều đó, được gọi là chẻ lông (feather forking). Thay vì thông báo rằng bạn sẽ fork mãi mãi ngay khi bạn thấy một giao dịch bắt nguồn từ địa chỉ X, bạn thông báo rằng bạn sẽ cố gắng fork nếu bạn thấy một khối có giao dịch từ địa chỉ X, nhưng bạn sẽ từ bỏ sau một lúc. Ví dụ: bạn có thể thông báo rằng sau khi k khối xác nhận giao dịch từ địa chỉ X, bạn sẽ quay lại chuỗi dài nhất.
Nếu bạn bỏ cuộc sau một lần xác nhận, khả năng bạn bỏ sót khối có giao dịch từ X là α2. Lý do là bạn sẽ phải tìm hai khối liên tiếp để loại bỏ khối với giao dịch từ địa chỉ X trước khi phần còn lại của mạng tìm thấy khối và α2 là cơ hội để bạn may mắn hai lần.
Cơ hội của α2 có vẻ không tốt lắm. Nếu bạn kiểm soát 20% sức mạnh băm (tức là, α = 0,20), chỉ có 4% cơ hội thực sự loại bỏ giao dịch mà bạn không muốn thấy trong chuỗi khối. Nhưng điều đó tốt hơn tưởng tượng vì bạn có thể thúc đẩy những người khai thác khác tham gia cùng bạn. Miễn là bạn đã công khai về kế hoạch của mình, những người khai thác khác biết rằng nếu họ bao gồm một giao dịch từ địa chỉ X, họ có khả năng là α2 rằng khối mà họ tìm thấy cuối cùng sẽ bị loại bỏ vì cuộc tấn công cắt lông của bạn. Nếu họ không có bất kỳ động lực mạnh mẽ nào để bao gồm giao dịch đó từ địa chỉ X và địa chỉ đó không có phí giao dịch cao, thì khả năng mất phần thưởng khai thác của họ là α2 có thể là một động lực lớn hơn nhiều so với việc thu phí giao dịch.
Khi đó, những người khai thác khác có thể quyết định hợp lý để cùng bạn thực thi danh sách đen và do đó bạn có thể thực thi danh sách đen ngay cả khi α < .5. Sự thành công của cuộc tấn công này hoàn toàn phụ thuộc vào mức độ thuyết phục của bạn đối với những người khai thác khác rằng bạn sắp fork.
Chuyển đổi sang Phần thưởng khai thác được chi phối bởi Phí giao dịch
Kể từ năm 2015, phí giao dịch không có nhiều quan trọng, vì phần thưởng khối cung cấp hơn 99% tổng doanh thu mà các thợ đào tạo ra. Nhưng cứ sau 4 năm, phần thưởng khối dự kiến sẽ giảm đi một nửa, và cuối cùng nó sẽ đủ thấp để phí giao dịch sẽ trở thành nguồn thu chính của các thợ đào. Đó là một câu hỏi mở chính xác cách các thợ đào sẽ hoạt động như thế nào khi phí giao dịch chi phối thu nhập của họ. Liệu các thợ đào có trở nên tích cực hơn trong việc thực thi phí giao dịch tối thiểu không? Họ sẽ hợp tác để thực thi mức tối thiểu?
Vấn đề mở
Tóm lại, các thợ đào có thể tự do thực hiện bất kỳ chiến lược nào mà họ muốn, mặc dù trong thực tế, chúng ta đã thấy rất ít điều gì khác ngoài chiến lược mặc định. Không có mô hình hoàn chỉnh nào cho hành vi của người khai thác xác nhận rằng chiến lược mặc định là tối ưu. Trong chương này, chúng ta đã thảo luận về các ví dụ cụ thể về độ lệch có thể mang lại lợi nhuận cho những người khai thác có đủ sức mạnh băm. Chiến lược khai thác có thể là một lĩnh vực mà thực hành đi trước lý thuyết. Theo kinh nghiệm, trong một thế giới mà hầu hết các thợ đào chọn chiến lược mặc định, Bitcoin dường như hoạt động tốt. Nhưng vẫn chưa rõ liệu chúng ta có thể phân tích Bitcoin về mặt lý thuyết và cho thấy rằng nó ổn định hay không.
Chúng ta cũng không thể chắc chắn rằng nó sẽ luôn hoạt động tốt trong thực tế. Sự thật sẽ thay đổi đối với Bitcoin. Các thợ đào đang trở nên tập trung hơn và chuyên nghiệp hơn, đồng thời dung lượng mạng ngày càng tăng. Bên cạnh đó, về lâu dài, Bitcoin phải đối mặt với việc chuyển đổi từ phần thưởng khai thác cố định sang phí giao dịch. Chúng ta không biết điều này sẽ diễn ra như thế nào, và việc sử dụng các mô hình lý thuyết trò chơi để cố gắng dự đoán nó là một lĩnh vực nghiên cứu rất thú vị hiện nay.