Categories
Blockchain

Khai thác Bitcoin 1: Nhiệm vụ của thợ đào Bitcoin

Chương này là tất cả về khai thác. Như đã thảo luận, Bitcoin dựa vào các thợ đào—họ xác thực mọi giao dịch, xây dựng và lưu trữ tất cả các khối, đồng thời đạt được sự đồng thuận về những khối nào cần đưa vào chuỗi khối. Chúng ta cũng đã thấy rằng những người khai thác kiếm được phần thưởng khi làm điều này. Nhưng nhiều câu hỏi thú vị vẫn chưa được giải đáp. Ai là thợ đào? Làm thế nào họ bắt đầu công việc này? Họ hoạt động như thế nào? Mô hình kinh doanh cho thợ đào là gì? Chúng có tác động gì đến môi trường? Trong chương này, chúng ta trả lời tất cả những câu hỏi này.

5.1. Nhiệm vụ của thợ đào Bitcoin

Bạn có muốn tham gia khai thác Bitcoin không? Nếu bạn làm vậy, chúng tôi sẽ không hoàn toàn làm bạn nản lòng, nhưng hãy cẩn thận rằng việc khai thác Bitcoin có nhiều điểm tương đồng với việc đào vàng. Những cuộc đổ xô đi tìm vàng trong lịch sử đầy rẫy những câu chuyện của những người trẻ đổ xô đi tìm vận may, và không tránh khỏi nhiều người trong số họ đánh mất tất cả những gì mình có. Một số ít làm giàu, nhưng ngay cả những người đó nói chung vẫn phải chịu đựng khó khăn trên đường đi. Trong phần này, chúng ta sẽ thấy lý do tại sao khai thác Bitcoin có nhiều thách thức và rủi ro giống như những cuộc đổ xô đi tìm vàng truyền thống và các kế hoạch làm giàu nhanh chóng khác.

Nhưng trước tiên, chúng ta hãy xem xét các chi tiết kỹ thuật. Để trở thành một thợ đào Bitcoin, bạn phải tham gia mạng Bitcoin và kết nối với các nút khác. Khi bạn đã kết nối, có sáu nhiệm vụ cần thực hiện:

  1. Lắng nghe các giao dịch. Bạn lắng nghe các giao dịch trên mạng và xác thực chúng bằng cách kiểm tra xem các chữ ký có chính xác hay không và các kết quả đầu ra đang được sử dụng chưa được chi tiêu.
  2. Duy trì chuỗi khối và lắng nghe các khối mới. Bạn phải duy trì chuỗi khối. Bạn bắt đầu bằng cách yêu cầu các nút khác cung cấp cho bạn tất cả các khối lịch sử đã là một phần của chuỗi khối trước khi bạn tham gia mạng. Sau đó, bạn lắng nghe các khối mới đang được phát tới mạng. Bạn phải xác thực từng khối mà bạn nhận được—bằng cách xác thực từng giao dịch trong khối và kiểm tra xem khối có chứa nonce hợp lệ hay không. Chúng ta trở lại chi tiết của kiểm tra nonce sau trong phần này.
  3. Tập hợp một khối ứng cử viên. Khi bạn có bản sao cập nhật của chuỗi khối, bạn có thể bắt đầu xây dựng các khối của riêng mình. Để làm điều này, bạn nhóm các giao dịch mà bạn đã nghe nói về thành một khối mới mở rộng khối mới nhất mà bạn biết. Bạn phải đảm bảo rằng mỗi giao dịch được bao gồm trong khối của bạn là hợp lệ.
  4. Tìm một nonce làm cho khối của bạn hợp lệ. Bước này đòi hỏi nhiều công việc nhất và nó gây ra tất cả những khó khăn thực sự cho các thợ đào. Chúng ta sẽ thảo luận chi tiết về bước này ngay sau đây.
  5. Hy vọng khối của bạn được chấp nhận. Ngay cả khi bạn tìm thấy một khối, không có gì đảm bảo rằng khối của bạn sẽ trở thành một phần của chuỗi đồng thuận. Có một chút may mắn ở đây; bạn phải hy vọng rằng những người khai thác khác chấp nhận khối của bạn và bắt đầu khai thác trên khối đó thay vì khối của đối thủ cạnh tranh nào đó.
  6. Lợi nhuận. Nếu tất cả các thợ đào khác chấp nhận khối của bạn, thì bạn có lợi nhuận! Vào năm 2015, phần thưởng khối là 25 bitcoin, hiện trị giá khoảng 10.000 đô la. Ngoài ra, nếu bất kỳ giao dịch nào trong khối chứa phí giao dịch, người khai thác cũng sẽ thu các giao dịch đó. Cho đến nay phí giao dịch là một nguồn thu nhập bổ sung khiêm tốn, chỉ chiếm khoảng 1% phần thưởng khối.

Chúng ta có thể phân loại các bước mà người khai thác phải thực hiện thành hai loại. Một số nhiệm vụ—xác thực các giao dịch và khối—giúp ích cho mạng Bitcoin và là nền tảng cho sự tồn tại của nó. Những tác vụ này là lý do mà giao thức Bitcoin yêu cầu thợ đào ngay từ đầu. Các nhiệm vụ khác—cuộc chạy đua tìm khối và lợi nhuận—không cần thiết cho chính mạng Bitcoin nhưng nhằm khuyến khích các thợ đào thực hiện các bước thiết yếu. Tất nhiên, cả hai điều này đều cần thiết để Bitcoin hoạt động như một loại tiền tệ, vì các thợ đào cần có động lực để thực hiện các bước quan trọng.

Tìm một khối hợp lệ

Hãy quay lại câu hỏi về việc tìm một nonce làm cho khối của bạn hợp lệ. Trong Chương 3, chúng ta đã thấy rằng có hai cấu trúc dựa trên băm chính: chuỗi khối (trong đó mỗi tiêu đề khối trỏ đến tiêu đề khối trước đó trong chuỗi) và một cây Merkle trong mỗi khối của tất cả các giao dịch có trong khối đó.

Điều đầu tiên bạn làm với tư cách là một người khai thác là biên dịch một tập hợp các giao dịch hợp lệ mà bạn có từ hàng đợi giao dịch đang chờ xử lý của mình thành một cây Merkle. Tất nhiên, bạn có thể chọn số lượng giao dịch để bao gồm tối đa giới hạn trên tổng kích thước của khối. Sau đó, bạn tạo một khối với tiêu đề trỏ đến khối trước đó. Tiêu đề khối bao gồm một trường nonce 32 bit và bạn tiếp tục thử các nonce khác nhau, tìm kiếm một nonce khiến băm của khối nằm dưới mục tiêu—nói một cách đại khái, bắt đầu bằng số lượng số không cần thiết. Là một người khai thác, bạn có thể bắt đầu với một nonce 0 và liên tiếp tăng nó lên một để tìm kiếm một nonce làm cho khối hợp lệ (Hình 5.1).

Trong hầu hết các trường hợp, bạn sẽ thử mọi giá trị 32-bit có thể có cho nonce và không có giá trị nào trong số chúng sẽ tạo ra một hàm băm hợp lệ. Tại thời điểm này, bạn sẽ phải thực hiện các thay đổi tiếp theo. Lưu ý trong Hình 5.1 rằng có một trường bổ sung trong giao dịch coinbase mà bạn cũng có thể sử dụng một nonce bổ sung. Sau khi bạn đã sử dụng hết tất cả các nonces có thể có cho tiêu đề khối, bạn sẽ thay đổi số nonce bổ sung trong giao dịch coinbase—giả sử, bằng cách tăng nó lên một—và sau đó bạn sẽ bắt đầu tìm kiếm các nonces trong tiêu đề khối một lần nữa.

HÌNH 5.1. Tìm một khối hợp lệ.

HÌNH 5.1. Tìm một khối hợp lệ. Trong ví dụ này, người khai thác thử một nonce của tất cả các số 0. Nó không tạo ra một đầu ra băm hợp lệ, vì vậy người khai thác sau đó sẽ tiến hành thử một nonce khác.

Khi bạn thay đổi nonce trong giao dịch coinbase, toàn bộ cây giao dịch Merkle phải thay đổi (Hình 5.2). Vì sự thay đổi của nonce coinbase sẽ lan truyền đến tận gốc cây, nên việc thay đổi nonce bổ sung trong giao dịch coinbase là một hoạt động tốn kém hơn nhiều so với việc thay đổi nonce trong tiêu đề khối. Vì lý do này, các thợ đào dành phần lớn thời gian của họ để thay đổi nonce trong tiêu đề khối và chỉ thay đổi nonce của coinbase khi họ đã sử dụng hết 232 số nonces có thể có trong tiêu đề khối mà không tìm thấy khối hợp lệ.

Gần như tất cả các nonces mà bạn thử sẽ không hoạt động, nhưng nếu bạn ở đó đủ lâu, cuối cùng bạn sẽ tìm thấy sự kết hợp phù hợp giữa số nonce bổ sung trong giao dịch coinbase và số nonce trong tiêu đề khối tạo ra khối một hàm băm dưới mục tiêu. Khi bạn tìm thấy nó, bạn muốn thông báo nó càng nhanh càng tốt và hy vọng rằng bạn có thể thu được lợi nhuận từ nó.

Chính xác thì khó đến mức nào để tìm một khối hợp lệ? Tính đến cuối năm 2015, mục tiêu về độ khó khai thác (theo hệ thập lục phân) là:

00000000000000000a9550000000000000000000000000000000000000000000

vì vậy băm của bất kỳ khối hợp lệ nào phải thấp hơn giá trị này. Nói cách khác, ít hơn 1 trong khoảng 268 nonces mà bạn cố gắng sẽ hoạt động, đó là một con số thực sự khổng lồ. Một ước tính gần đúng là nó lớn hơn bình phương dân số Trái đất. Vì vậy, nếu mỗi người trên Trái đất là hành tinh của riêng họ, Trái đất với 7 tỷ người trên đó, thì tổng số người sẽ là khoảng 265 người.

HÌNH 5.2. Thay đổi một nonce.

HÌNH 5.2. Thay đổi một nonce. Việc thay đổi một nonce trong giao dịch coinbase sẽ lan truyền đến tận gốc cây Merkle.

Mọi người có giải được cùng một câu đố không?

Bạn có thể tự hỏi: Nếu mọi thợ đào chỉ tăng số nonces như được mô tả, thì không phải tất cả thợ đào đều giải được cùng một câu đố? Chẳng phải người khai thác nhanh nhất luôn giành chiến thắng? Câu trả lời là không! Đầu tiên, không có khả năng những người khai thác sẽ làm việc trên các khối giống hệt nhau, vì mỗi người khai thác có thể sẽ bao gồm một tập hợp các giao dịch hơi khác nhau và theo một thứ tự khác nhau. Nhưng quan trọng hơn, ngay cả khi hai thợ đào khác nhau đang làm việc trên một khối với các giao dịch giống hệt nhau, các khối vẫn sẽ khác nhau. Nhớ lại rằng trong giao dịch coinbase, các thợ đào chỉ định địa chỉ của chính họ là chủ sở hữu của các đồng tiền mới được đào. Bản thân địa chỉ này sẽ gây ra các thay đổi lan truyền đến gốc của cây Merkle, đảm bảo rằng không có hai người khai thác nào đang làm việc trên cùng một câu đố trừ khi họ chia sẻ khóa công khai. Điều này sẽ chỉ xảy ra nếu hai người khai thác là một phần của cùng một nhóm khai thác (mà chúng ta sẽ thảo luận ngay sau đây), trong trường hợp đó, họ sẽ liên lạc với nhau để đảm bảo rằng họ bao gồm một nonce riêng biệt trong giao dịch coinbase để tránh trùng lặp công việc.

Xác định độ khó

Độ khó khai thác thay đổi sau mỗi 2.016 khối, được tìm thấy khoảng 2 tuần một lần. Nó được điều chỉnh dựa trên mức độ hiệu quả của các công cụ khai thác trong khoảng thời gian của 2.016 khối trước đó theo công thức này:

khó khăn tiếp theo = (độ khó trước · 2016 · 10 phút)/
(thời gian để khai thác 2016 khối cuối cùng)

Lưu ý rằng 2.016 · 10 phút là chính xác 2 tuần, vì vậy 2.016 khối sẽ mất 2 tuần để khai thác nếu một khối được tạo chính xác cứ sau 10 phút. Vì vậy, tác dụng của công thức này là mở rộng quy mô khó khăn để duy trì thuộc tính mà mạng phải tìm thấy các khối trung bình khoảng 10 phút một lần. Không có gì đặc biệt trong 2 tuần, nhưng đó là một sự đánh đổi tốt. Nếu khoảng thời gian ngắn hơn nhiều, độ khó có thể dao động do sự thay đổi ngẫu nhiên về số lượng khối được tìm thấy trong mỗi khoảng thời gian. Nếu khoảng thời gian dài hơn nhiều, sức mạnh băm của mạng có thể mất cân bằng quá mức với độ khó.

Mỗi thợ đào Bitcoin tính toán độ khó một cách độc lập và sẽ chỉ chấp nhận các khối đáp ứng độ khó mà họ đã tính toán. Những người khai thác ở các chi nhánh khác nhau có thể không tính toán cùng một giá trị độ khó, nhưng bất kỳ hai người khai thác nào đang khai thác trên cùng một khối sẽ đồng ý về độ khó. Điều này cho phép đạt được sự đồng thuận.

Bạn có thể thấy trong Hình 5.3 rằng theo thời gian, độ khó khai thác không ngừng tăng lên. Nó không nhất thiết phải là tăng tuyến tính ổn định hoặc tăng theo cấp số nhân, nhưng nó phụ thuộc vào hoạt động trên thị trường. Độ khó khai thác bị ảnh hưởng bởi các yếu tố như số lượng thợ đào mới tham gia, do đó có thể bị ảnh hưởng bởi tỷ giá hối đoái hiện tại của Bitcoin. Nói chung, khi nhiều thợ đào trực tuyến hơn và phần cứng khai thác ngày càng hiệu quả hơn, các khối được tìm thấy nhanh hơn và độ khó tăng lên, do đó luôn mất khoảng mười phút để tìm một khối.

Trong Hình 5.3, khó khăn là một hàm bước, mặc dù tốc độ băm mạng tổng thể đang phát triển trơn tru. Bước rời rạc là kết quả của thực tế là độ khó chỉ được điều chỉnh sau mỗi 2.016 khối.

Một cách khác để xem tốc độ phát triển của mạng là xem xét trung bình mất bao lâu để tìm thấy một khối. Hình 5.4a cho thấy bao nhiêu giây trôi qua giữa các khối liên tiếp trong chuỗi khối. Bạn có thể thấy rằng điều này dần dần đi xuống, nhảy lên và sau đó lại dần đi xuống. Tất nhiên những gì đang xảy ra là cứ sau 2.016 khối, độ khó sẽ đặt lại và thời gian khối trung bình quay trở lại khoảng 10 phút. Trong khoảng thời gian tiếp theo, độ khó vẫn không thay đổi, nhưng ngày càng có nhiều thợ đào trực tuyến. Vì sức mạnh băm đã tăng lên nhưng độ khó thì không, các khối được tìm thấy nhanh hơn cho đến khi độ khó được điều chỉnh lại sau 2.016 khối, tức là khoảng 2 tuần.

Mặc dù mục tiêu là tìm thấy một khối trung bình 10 phút một lần, trong hầu hết năm 2013 và 2014, trung bình nó gần hơn khoảng 9 phút và sẽ đạt gần 8 phút vào cuối mỗi chu kỳ 2 tuần. Các tính toán nhanh cho thấy rằng điều này đòi hỏi tốc độ tăng trưởng đáng kinh ngạc 25 phần trăm sau mỗi 2 tuần, hoặc gấp vài trăm lần mỗi năm.

Không có gì ngạc nhiên khi tốc độ này không bền vững, và trong năm 2015 tốc độ tăng trưởng chậm hơn nhiều (và đôi khi là âm). Trong Hình 5.4b, chúng ta có thể thấy rằng khi công suất khai thác gần với trạng thái ổn định hơn, khoảng thời gian để tìm thấy mỗi khối sẽ gần hơn nhiều là 10 phút. Nó thậm chí có thể mất hơn 10 phút, trong trường hợp đó, độ khó sẽ giảm xuống. Từng được coi là điều không tưởng nhưng điều này đã diễn ra khá thường xuyên trong năm 2015.

HÌNH 5.3. Khó khăn khai thác theo thời gian (giữa năm 2014).

HÌNH 5.3. Khó khăn khai thác theo thời gian (giữa năm 2014). Lưu ý rằng trục y bắt đầu ở 80.000 terahashes / s. Tỷ lệ băm được tính trung bình trên 1.008 khối. Nguồn: bitcoinwisdom.com.

HÌNH 5.4 Thời gian để tìm một khối.

HÌNH 5.4 Thời gian để tìm một khối. (A) Đầu năm 2014. Lưu ý rằng trục y bắt đầu ở 460 giây. Thời gian tạo khối được tính trung bình trên 2.016 khối. Do sức mạnh khai thác tiếp tục tăng nhanh trong thời gian này, thời gian tìm thấy khối giảm đều đặn trong mỗi khoảng thời gian 2 tuần. (B) Đầu năm 2015. Lưu ý rằng trục y bắt đầu ở thời điểm 540 giây. Thời gian tạo khối được tính trung bình trên 2.016 khối. Khi tốc độ phát triển của mạng chậm lại, thời gian để tìm thấy mỗi khối là gần 10 phút và đôi khi còn hơn thời gian đó trong thời gian mà sức mạnh băm của mạng thực sự thu hẹp. Nguồn: bitcoinwisdom.com.

Mặc dù không có sự sụt giảm nghiêm trọng nào về sức mạnh khai thác của mạng lưới đã xảy ra cho đến nay, nhưng không có lý do cố hữu nào không thể xảy ra. Một kịch bản được đề xuất cho sự sụp đổ của Bitcoin là “vòng xoáy tử thần”, trong đó tỷ giá hối đoái giảm khiến việc khai thác không có lợi cho một số thợ đào, gây ra một cuộc di cư, do đó khiến giá giảm thêm.

Leave a Reply

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