Như đã đề cập ở các kỳ trước, từng giao dịch Bitcoin đều được phát lên mạng lưới. Các thợ đào (miner) sẽ xử lý các giao dịch này khi chúng đi vào trong một nhóm, gọi là khối (block).
Đến một thời điểm nào đó, một phiên bản của block sẽ được chấp nhận là “chuẩn” và trở thành một phần của bản ghi chép Bitcoin chính thức. Hay nói cách khác, khối đó đã được đào (mined).
Để một khối thực sự đạt “chuẩn”, nó phải có 5 xác nhận: khi nó đã được đào, và sau đó một khối khác được đào và chỉ ngược lại nó, và sau đó một khối khác khác được đào và chỉ ngược lại khối khác đó, cứ thế 5 lần.
Sau đó những thợ đào bắt đầu biên soạn một khối mới. Đây là chỗ mà hàm băm đóng vai trò quan trọng.
Khối mới (A) sẽ chỉ về khối trước nó (B) bằng cách chứa một số băm của khối B đó – việc này xác nhận rằng khối B:
(1) đúng và được chấp nhận bởi mạng lưới
(2) và xuất hiện trước khối A .
Mỗi khối sẽ chỉ về khối trước nó trong một chuỗi, gọi là chuỗi khối hay blockchain.
Chuỗi khối tạo ra một bản ghi chính thức về những giao dịch nào mà mạng lưới đã đồng ý theo thứ tự nào. Các số băm là các dấu chỉ mốc thời gian; chúng tạo ra một thứ tự các giao dịch đã được tất cả mọi người nhất trí.
Bạn có thể hình dung một hệ thống đơn giản để làm việc này. Mỗi 10 phút một thợ đào đưa ra một danh sách các giao dịch, và tất cả các máy tính trong mạng Bitcoin sẽ bỏ phiếu (vote) cho danh sách đó. Nếu nó đạt đa số, nó sẽ trở thành chính thức và được đưa vào chuỗi khối.
Không có quy định nào về việc ai có thể tham gia vào mạng Bitcoin: Bất kỳ ai kết nối một máy tính và chạy phần mềm Bitcoin mã nguồn mở đều có thể tham gia. Bạn không phải chứng minh bạn là một người tốt, hay thậm chí là một người. Bạn có thể kết nối cả nghìn chiếc máy tính nếu bạn muốn.
Việc này tạo ra một rủi ro mà đôi khi được gọi là “tấn công mạo nhận” (Sybil attack). Ý tưởng về một vụ tấn công mạo nhận là, trong một hệ thống nơi sổ cái được duy trì chung bởi một nhóm và bất kỳ ai cũng có thể tham gia nhóm mà không cần sự cho phép, bạn có thể khởi chạy một loạt các nút mạng máy tính và đóng vai cả nghìn người.
Sau đó, bạn tự xác minh các giao dịch xấu cho bản thân, và mọi người kiểu, “Ồ, mấy người này đang xác minh giao dịch đây mà,” và họ chấp nhận các giao dịch của bạn. Điều này dẫn đến một sự đồng thuận đa số, và hoặc là bạn sẽ xoay sở khoắng được chút tiền hoặc là ít nhất cũng sẽ khiến toàn bộ hệ thống chìm vào hỗn loạn.
Giải pháp là khiến việc xác nhận các giao dịch thật đắt đỏ.
Đào coin tốn kém thế nào?
Để đào một khối, các thợ đào Bitcoin phải làm một điều nhọc nhằn và tốn kém.
Mỗi thợ đào lấy một bản tóm tắt của danh sách các giao dịch trong khối, cùng với một số băm của khối trước đó. Sau đó, họ đính thêm một số khác bất kỳ – được gọi là “số dùng một lần (nonce)” – vào phía cuối của danh sách.
Thợ đào chạy toàn bộ chỗ đó (danh sách + số dùng một lần) qua một thuật toán băm SHA-256. Thuật toán này sẽ tạo ra một số hệ thập lục phân 64-chữ-số. Nếu số đó đủ nhỏ thì thợ đào đã đào được khối. Nếu không, thợ đào thử lại lần nữa với một số dùng một lần khác.
Như thế nào là “đủ nhỏ” được quy định bởi phần mềm Bitcoin và có thể được điều chỉnh để việc đào khối trở nên dễ hoặc khó hơn. (Mục tiêu là trung bình một khối mỗi 10 phút; càng có nhiều thợ đào và máy tính của họ càng nhanh thì việc đào càng khó). Ngay lúc này, “đủ nhỏ” nghĩa là số băm phải bắt đầu với 19 số 0.
Kết quả dưới đây là một ví dụ:
00000000000000000006c9f1194ce7ff75c5f265d5520878e9e9392c3c8ff203
Nó giống như một trò chơi gồm 20 câu hỏi mà trong đó bạn liên tục đoán từng số xem số nào sẽ đúng. Ngoài trừ việc bạn không có manh mối gì cả, và cần hơn rất rất rất nhiều lần đoán so với con số 20. Gần như là không tồn tại một dữ liệu đầu vào cụ thể nào – danh sách các giao dịch + một số dùng một lần (nonce) bất kỳ – có thể được dùng để băm ra thành một số bắt đầu với 19 số 0. Tỉ lệ là khoảng 1/75 tỷ tỷ.
Vậy nên các thợ đào chạy thuật toán băm lặp đi lặp lại liên tục, hàng nghìn tỷ lần, mỗi lần đoán với một số dùng một lần khác nhau, cho đến khi họ có một số băm với đúng số lượng số 0.
Tổng tỉ lệ băm (hash rate) của mạng Bitcoin là ở mức đâu đó hơn 200 triệu terahashes/giây – tức 200 triệu tỷ phép tính băm mỗi giây, con số này 1) rất lớn nhưng 2) ít hơn rất rất nhiều so với 75 tỷ tỷ.
Cần rất nhiều giây – trung bình là 600 – với tốc độ 200 triệu tỷ phép tính băm để đoán ra số nonce đúng và đào được một khối.
“Bởi vì SHA256 được thiết kế để trở thành một hàm giả-ngẫu nhiên hoàn toàn không thể đoán trước, nên cách duy nhất để tạo ra một khối hợp lệ chỉ đơn giản là thử-sai, liên tục tăng số nonce và xem liệu số băm mới có khớp hay không”, cha đẻ Ethereum Vitalik Buterin từng tiết lộ.
Proof of work
Khi các thợ đào tìm được đúng số lượng số 0, họ công bố khối và số băm của nó lên mạng Bitcoin.Tất cả những người khác duyệt lại khối đó và quyết định xem nó có hợp lệ không. (“Hợp lệ” nghĩa là tất cả các giao dịch trong danh sách là hợp lệ, số băm đúng, số lượng số 0 đúng, v.v.)
Nếu đạt, họ tiếp tục làm việc với khối tiếp theo. Họ lấy số băm của khối trước đó, cộng thêm các giao dịch vừa xong, cộng thêm một số nonce mới, và thử tìm ra số băm mới. Mỗi khối được tạo lên dựa vào khối trước đó.
Tất cả những việc trên đều rất tốn kém: Các thợ đào cần những phần cứng đặc biệt để thực hiện những phép tính băm đó lặp đi lặp lại liên tục, và ngày nay vận hành những xưởng khổng lồ gồm những chiếc máy tính luôn-luôn-bật. Việc đào Bitcoin ngốn số lượng điện tương đương với mức tiêu thụ của các nước cỡ vừa. Điều này không tốt cho môi trường.
Và theo một nghĩa nào đó, nó thật sự lãng phí. Người ta đôi khi nói các thợ đào Bitcoin kiểu như là, giải các bài toán khó để thực hiện việc đào, nhưng thực tế không phải vậy.
Họ đang đoán bừa hàng triệu tỷ con số mỗi giây để cố gắng tìm được số băm đúng. Chẳng có bài toán nào nào được giải, và chẳng có gì được thêm vào kho tri thức nhân loại.
Nhưng các thợ đào đang giải quyết một vấn đề quan trọng cho Bitcoin, đó là việc giữ mạng lưới và sổ cái các giao dịch của nó được bảo đảm.
Việc xác nhận các giao dịch Bitcoin cho thấy rõ ràng là rất tốn kém, vì vậy rất khó để làm giả, khó để thực hiện một cuộc tấn công mạo nhận.
Đó là lý do tại sao Satoshi, và tất cả những người khác, gọi phương pháp xác nhận giao dịch này là “proof of work” (tạm dịch: bằng chứng công việc). Nếu bạn cho ra đúng số băm cho một khối, việc đó chứng minh bạn đã làm rất nhiều công việc máy tính tốn kém. Đó không phải là điều bạn làm qua loa.
Thực tế, tất cả Bitcoin đều được tạo ra bởi việc đào; không hề có một lượng Bitcoin khởi đầu nào dành cho Satoshi hay những nhà đầu sớm hay bất kỳ ai khác. Đây là câu trả lời cho câu hỏi Bitcoin đến từ đâu: Tất cả đều được đào đấy nhé ?!./.
Crypto thú vị hơn bạn tưởng (kỳ 1): Crypto là gì? Sự ra đời của Bitcoin