Các máy đào Bitcoin hoạt động như thế nào?

Abraham 26/02/2018

Trong hệ thống tiền tệ pháp định truyền thống, chính phủ chỉ việc in thêm tiền khi họ cần thôi. Nhưng với Bitcoin, tiền không phải được in – mà là được đào (mining). Các máy tính trên khắp thế giới “đào” coin bằng cách cạnh tranh với nhau.

Việc đào diễn ra như thế nào?

Chúng ta chuyển Bitcoin cho nhau trên network Bitcoin mọi lúc mọi nơi, nhưng nếu không có ai đó lưu trữ bản ghi của tất cả các giao dịch, thì không ai có thể theo dõi được ai đã trả cho ai bao nhiêu. Network Bitcoin giải quyết việc này bằng cách gom hết các giao dịch xảy ra trong một khoảng thời gian thành một danh sách, gọi là block. Việc của nhà đào là xác nhận giao dịch, và ghi nó vào sổ cái chung.

Giải hàm Hash

Sổ cái chung này là một danh sách thật dài những block, được biết đến dưới cái tên blockchain. Nó có thể được dùng để khám phá bất cứ giao dịch nào được diễn ra giữa các địa chỉ ví Bitcoin, và tại điểm nào trong network. Bất kỳ khi nào một block các giao dịch mới được tạo ra, nó sẽ được thêm vào blockchain, làm danh sách các giao dịch đã từng xảy ra trên network lại dài thêm nữa. Ngay lập tức, một bản sao của block sẽ được gửi đến tất cả những ai đang tham gia vào network, để họ có thể biết được điều gì đang diễn ra.

Nhưng một sổ cái chung phải được tin tưởng, và tất cả những điều này lại chỉ tồn tại số hóa. Nên làm thế nào chúng ta chắc chắc rằng blockchain vẫn nguyên vẹn, và chưa bao giờ bị xáo trộn?

Đây là lúc những nhà đào xuất hiện.

Khi một block các giao dịch được tạo ra, đó là cả một quá trình đối với nhà đào. Họ lấy thông tin từ block, áp dụng một công thức toán học vào nó, chuyển nó sang một thứ khác. Một thứ khác này ngắn hơn, là một chuỗi ký tự và số ngẫu nhiên được gọi là Hash. Hash được lưu trữ cùng với block, ở điểm cuối cùng của blockchain tại thời điểm đó.

Các hash này có vài tính chất thú vị. Dễ tạo ra một Hash từ một tập hợp dữ liệu như block Bitcoin, nhưng gần như không thể để tìm ra đâu là dữ liệu đầu vào khi chỉ nhìn vào Hash. Và trong khi dễ tạo ra Hash từ một lượng lớn dữ liệu, thì mỗi Hash lại độc nhất. Nếu bạn đổi một đặc điểm nào đó trong block, thì Hash của nó sẽ hoàn toàn đổi khác.

Nhà đào không chỉ sử dụng giao dịch trong block để tạo ra Hash. Một số những dữ liệu khác cũng được sử dụng. Một trong số đó là Hash của block cuối cùng được lưu trữ trong blockchain.

Bởi vì Hash của từng block được tạo ra bằng cách dùng Hash của block trước đó, Hash trở thành phiên bản số hóa của con dấu niêm phong bằng sáp thời trước. Nó xác nhận rằng block này – và block tiếp theo nó – là chính xác, bởi vì nếu bạn giả mạo nó, tất cả mọi người đều biết được.

Nếu bạn cố gắng giả mạo giao dịch bằng cách đổi một block đã được lưu trữ trong blockchain rồi, thì Hash của block đó cũng sẽ thay đổi. Nếu ai đó kiểm tra tính xác thực của block bằng cách chạy hàm Hash lên nó, thì họ sẽ tìm được Hash khác hoàn toàn với Hash đã lưu trữ cùng với block trước đó trong blockchain. Và block này sẽ ngay lập tức bị phát hiện là giả mạo.

Bởi vì từng Hash của block được dùng để tạo ra Hash của block tiếp theo trong chain, làm giả một block sẽ làm cho block kế tiếp bị sai theo. Tiếp diễn xuống toàn bộ chain sẽ sai hết.

Cạnh tranh vì coin

Vì thế, đó là cách nhà đào “niêm phong” một block. Họ tranh đua với nhau để làm điều này, sử dụng phần mềm dùng riêng cho việc đào. Mỗi khi nhà đào thành công giải được một Hash, họ sẽ được nhận thưởng là 12,5 Bitcoin (đến thời điểm viết bài này), block mới sẽ được blockchain cập nhật, và tất cả mọi người trên network đều biết đến. Đây là điều khuyến khích nhà đào tiếp tục đào, và giữ cho các giao dịch hoạt động.

Vấn đề là quá dễ để tạo ra một Hash từ một tập hợp dữ liệu. Máy tính rất giỏi những việc như thế này. Network Bitcoin phải làm cho nó khó khăn hơn, nếu không tất cả mọi người sẽ Hash được hàng trăm block giao dịch mỗi giây mất, và tất cả coin sẽ được đào ra chỉ trong vài phút. Thế là giao thức Bitcoin làm mọi thứ khó khăn hơn, bằng cách giới thiệu với chúng ta một thứ gọi là “proof of work”.

Giao thức Bitcoin sẽ không chấp nhận bất kỳ Hash cũ đã có nào. Nó yêu cầu Hash của block phải theo một định dạng nhất định, nó phải có một số lượng số 0 nhất định ở đầu. Không có cách nào bắt Hash phải trông như thế nào trước khi bạn tạo ra nó, và ngay khi bạn đưa vào tập hợp một tý dữ liệu mới thôi, Hash sẽ hoàn toàn khác biệt rồi.

Nhà đào không có nghĩa vụ phải can thiệp vào dữ liệu giao dịch của block, nhưng họ cần thay đổi dữ liệu họ sử dụng để tạo ra một Hash khác. Họ thực hiện cách này bằng việc sử dụng một mảnh thông tin ngẫu nhiên gọi là “nonce”. Nonce này được dùng với dữ liệu giao dịch để tạo ra Hash. Nếu Hash không phù hợp với định dạng được yêu cầu, thì đổi nonce, và tất cả mọi thứ lại được Hash lại từ đầu. Nên cần nỗ lực rất nhiều đến khi tìm được nonce chính xác, và tất cả nhà đào trên network đều đang cố gắng làm điều này ngay tại thời điểm hiện tại. Đó là cách mà nhà đào kiếm được coin.

Đánh giá