[Bitcoin] Bài toán của các thợ mỏ
Có một câu hỏi khá hay được đặt ra về cách mà thợ mỏ có được bitcoin trên groups của Science2vn. Và vì trả lời nó khá dài dòng nên...

Có một câu hỏi khá hay được đặt ra về cách mà thợ mỏ có được bitcoin trên groups của Science2vn. Và vì trả lời nó khá dài dòng nên mình sẽ viết một bài nói về cái này.
Link của câu hỏi:
"Các thợ đào còn được trả công cho việc mã hoá các khối (block) nhật ký giao dịch. Cứ mỗi 10 phút, một khối mới được tạo ra kèm theo một lượng Bitcoin được cấp phát. Số bitcoin được cấp cho mỗi khối phụ thuộc vào thời gian hoạt động của mạng lưới"
Vậy theo các bác thì bicoin trả cho thợ đào được lấy từ đâu và từ đâu mà coin mới sinh ra. Theo coinmarketcap thì hiện đang có 16,529,462 BTC và còn lại 4470538 BTC chưa được khai thác. Vậy họ khai thác coin mới từ đâu ra khi không có bất kì một nhà cung cấp bitcoin nào(dạng như tiền tệ VN thì có kho bạc cung cấp nhưng BTC thì làm gì có một bên nào như thế)?
===========
Ở bài này mình sẽ bỏ qua các khái niệm cơ bản của Bitcoin. Chỉ tập trung đào sâu vào bài toán của các thợ mỏ. Cho nên để hiểu được phần này các bạn cần phải nắm một số thứ cơ bản về bitcoin trước đó. Khi đọc qua các lời giới thiệu về bitcoin, mọi người thường gặp đoạn nói về các thợ mỏ sẽ giải bài toán gì gì đó. Ai giải ra nhanh hơn thì sẽ nhận được phần thưởng. Nhưng cụ thể bài toán đó như thế nào thì ít có bài nào nói sâu vào. Để hiểu và bắt đầu thì chúng ta sẽ cần tìm hiểu một chút về hàm băm và mã hóa bảo mật dữ liệu.
Hàm băm là hàm mà đầu vào là dữ liệu gốc X, có độ dài bất kỳ. Đầu ra là một chuỗi chữ số Y có độ dài cố định. Ví dụ Y của hàm băm SHA256 có độ dài là 64 ký tự, Y = SHA256(X).
SHA256("spiderum.com") = bd2e014a2b681a8b8ec9dff14ffd9fadbdfee9530b74c3d629480774d61950a2
SHA256("") = e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
Và chỉ cần thay đổi một chút xíu ở dữ liệu đầu vào các bạn sẽ có được một kết quả khác hoàn toàn. [s]-->[S]
SHA256("Spiderum.com") = 83e1c1f5c6a3fc62f4c1bf4e6f1bfb3dcd8218e3f5d84610576861dfb7b4fc53
Và người ta đã nghĩ ra cách để mã hóa dữ liệu như thế này: Ở đầu vào, ngoài dữ liệu gốc X ra thì người ta sẽ thêm vào đó một đoạn dữ liệu nữa. Đoạn này được gọi là nonce (key/salt/). Và áp dụng vào hàm băm SHA256(X+nonce) = Z. Z sẽ khác hoàn toàn so với Y ban đầu.
Đây chính là ứng dụng cho việc mã hóa dữ liệu và truyền đi trong mạng internet. Giá trị của nonce sẽ đóng vai trò như một chìa khóa (key) bí mật để bảo vệ phần dữ liệu X được truyền đi. Ở phía người nhận chỉ khi có được key nonce thì người ta mới có thể xác nhận được X họ đang có là đúng.
Ứng dụng rõ nhất của SHA256 thường thấy là dùng cho việc đăng nhập vào các tài khoản online. Máy chủ sẽ lưu trữ Y của các bạn, và khi đăng nhập, bạn gõ email+ mật khẩu vào ô nhưng thứ truyền đi tới máy chủ sẽ là Y' = SHA256("email+mật khẩu") và máy chủ sẽ so sánh Y và Y' có khớp với nhau hay không, nếu khớp thì bạn sẽ được cấp token sử dụng chức năng của trang vừa đăng nhập. Do đó, dù hacker có lấy được database của máy chủ thì họ cũng không thể biết được mật khẩu và email của bạn. Y của hàm băm SHA256 là không thể dịch ngược.
Quay lại bài toán của thợ mỏ. Công việc của họ là gì?
Sổ cái của bitcoin là dạng blockchain. Là một chuỗi dài của các khối SHA256 nối đuôi vào nhau. Khối sau sẽ chứa thông tin|sự thay đổi|thời gian thay đổi của khối trước nó. Cho nên muốn tạo giả một thông tin ở khối hiện tại cho nó sai đi, bạn cần thay đổi dữ liệu khối trước đó và kéo theo bạn cần sửa dữ liệu khối trước đó nữa... Và nghĩa là bạn phải tạo ra một sổ cái mới hoàn toàn. Khi đó những người đang giữ bản sao của sổ cái cũ sẽ đối chiếu và bỏ phiếu loại bạn ra khỏi "vòng thi đấu". Và ở đây sẽ có phần công việc cho các thợ mỏ. Ngoài việc tham gia hệ thống để xác minh tính chính xác của sổ cái. Một phần việc khác của các thợ mỏ, đó là tạo ra khối SHA256 mới. Họ sẽ quyết định cái khối SHA256 nào sẽ được ghi tiếp vào sổ cái.
Khối mới được ghi vào sổ cái sẽ là [SHA256(các giao dịch|thời gian|dữ liệu sổ cũ)]. Nhưng với dữ liệu có sẵn thế thì hàm băm này chả có gì khó cả, nó sẽ được giải quyết trong vòng một phần tỷ của một nốt nhạc. Và đây chính là chỗ để sinh ra bài toán cho các thợ mỏ.
Các thợ mỏ sẽ được yêu cầu tìm ra một chuỗi SHA256 khác sao cho chuỗi này có giá trị nhỏ hơn một số D cho trước. Chuỗi này vẫn sẽ chứa các thông tin về giao dịch|thời gian|dữ liệu sổ cũ. Nhưng sẽ được gắn thêm một đoạn nonce vào nữa.
Công thức như sau SHA256(X + nonce) < D.
Với X là dữ liệu của hệ thống đã biết, D là giá trị yêu cầu. Việc làm của thợ mỏ là tìm xem cái nonce nào hợp lệ cho công thức trên. Ai tìm được nonce trước thì người đó sẽ thắng và khối mới sẽ sử dụng nonce của người đó để tạo ra và đồng thời hệ thống cũng sẽ ghi nhận luôn rằng chính người thợ mỏ đó sở hữu lượng bitcoin mới được sinh ra.
Số D này sẽ có liên hệ với giá trị độ khó difficulty của hệ thống. Nếu hệ thống có tổng hash rate (tốc độ tính toán) càng cao thì difficulty sẽ càng lớn, số D này sẽ càng nhỏ và việc tìm ra nonce sẽ càng khó. Số D này sẽ được hệ thống tính toán lại sau mỗi 2016 blocks được sinh ra, nhằm đảm bảo khoản thời gian 10 phút cho mỗi lượt sinh coin mới.
Lấy một ví dụ cho dễ hiểu. Giả sử bài toán yêu cầu hàm SHA256(X + nonce) < 0x64 nghĩa là D = x64 ( = 100 ở hệ thập phân). Dữ liệu X có rồi. Thì ta sẽ có 99 kết quả của nonce thỏa mãn yêu cầu sao cho SHA256(X+nonce) < 100. SHA256(X+nonce) có thể là bất kỳ giá trị nào từ [1-99]. Giả sử độ khó difficulty tăng lên gấp đôi, thì giá trị D này sẽ giảm đi một nửa và sẽ bằng 50. Khi đó bài toán sẽ khó hơn với yêu cầu là SHA256(X+nonce) < 50, chúng ta chỉ có 49 khả năng cho nonce đúng. Các giá trị thõa mãn D cũ như 78, 65, 69 sẽ không được chấp nhận với D mới này. Tương tự như vậy, nếu độ khó difficulty giảm đi 3 lần, thì số đáp án có thể đạt được cũng tăng lên 3 lần. Điều này sẽ giúp đảm bảo thời gian tính toán sinh coin mới luôn nằm trong khoản 10 phút. Điều này cũng là nguyên nhân dẫn đến việc càng nhiều thợ mỏ tham gia thì việc đào ra coin càng có tỉ lệ thấp.
Đây là một ví dụ thực tế của D = 0x00000000000404CB000000000000000000000000000000000000000000000000
Như vậy ta có thể trả lời được câu hỏi thợ mỏ làm gì và bitcoint từ đâu ra.
Số 21 triệu bitcoin là giới hạn. Không phải là cái mốc. Vì cứ 4 năm một lần thì số coin sinh ra giảm đi một nửa sau mỗi 10 phút. Đến năm 2140 thì số coin sẽ đạt gần đến mức 21 triệu chứ không phải đúng 21 triệu. Số lượng sinh ra coin lúc đó sẽ rất nhỏ. Vì mỗi 4 năm chia đôi một lần mà. Chia đôi mãi một số thì nó không bao giờ về 0 cả. Nó chỉ về con số rất nhỏ thôi :v
Đến đây là hy vọng các bạn có thể nắm được phần nói về bài toán của các thợ mỏ trong hệ thống bitcoin. Và hiểu được cơ chế sinh ra coin mới của hệ thống này.
-ThanhCj-

Science2vn
/science2vn
Bài viết nổi bật khác
- Hot nhất
- Mới nhất

Absolutely

Về cơ bản thì các coin khác cũng chung 1 cách thức như này hay mỗi coin mỗi khác vậy bạn?
- Báo cáo

ThanhCj

Đúng vậy, về cơ bản thì các loại coin khác cũng chung một cách thức này. Sử dụng blockchain, hàm băm. Chỉ khác nhau là chỗ công nghệ và những cải tiến như các giao thức khác nhau hay hàm băm khác nhau. Vd như Bitcoin dùng băm SHA còn Litecoin sử dụng Scrypt.
- Báo cáo

Absolutely

Mình quan sát thấy số coin mới lên sàn vẫn tăng giá đều , vậy thật sự giá trị của 1 coin được dựa vào giá trị niềm tin về độ bền vững của coin đó hay còn thông số nào khác không?
- Báo cáo

ThanhCj

Có nhiều nguyên nhân để tạo nên sự tăng giá. Có người mua để sử dụng trong các giao dịch ẩn danh hoặc các giao dịch vượt địa lý ra khỏi khuôn khổ một quốc gia. Hoặc nó giống như bất động sản vậy. Kẻ mua để sử dụng, kẻ mua để đầu cơ.
Một số loại coin mới được hỗ trợ công nghệ và vốn nghiên cứu phát triển của các ông lớn sẽ có khả năng trụ vững ở giai đoạn đầu và phát triển hơn về sau. Lịch sử đã có rất nhiều các loại coin sinh ra và chết yểu vì chúng không có gì nổi bật, không có ưu thế vượt trội về mặt công nghệ.
Cái giá trị của niềm tin nằm ở công nghệ mà loại coin đó sử dụng để phát triển. Tương lai của loại công nghệ đó có nhiều tính ứng dụng thì sẽ thu hút được nhiều nhà đầu tư ban đầu (kiểu như một startup công nghệ). Quan trọng vẫn là tính ứng dụng được.
Còn loại niềm tin rằng coin đó có giá trị vì mình nghĩ như thế cũng đúng một phần. Kiểu như đối với mình cục kim cương chả có ý nghĩa gì sất. Nhưng mà người khác có thể chấp nhận đổi một lượng tiền lớn để lấy nó thì nếu có cơ hội mình nhặt một cục bỏ túi để dành cũng không sao :v
- Báo cáo

Lê Dũng
rõ ràng thời đại bây giờ vấn đề là niềm tin. Cứ có niềm tin thì sẽ có giá trị... và các loại coin cũng thế, người ta có niềm tin nó là loại tiền thay thế tiền giấy, có tương lai, sẽ phát triển mạnh thì người ta đầu tư. Và như vậy là coin có giá...
- Báo cáo

Viet Anh Tran

Bác có biết về Ethereum ko? Dạo này thấy rầm rộ mà chưa có dịp tìm hiểu
- Báo cáo

ThanhCj

ETH cũng là một loại tiền kỹ thuật số. Nó được cải tiến một số mặt so với Bitcoin. Cụ thể thế nào thì mình chưa tìm hiểu kỹ. Một điểm nổi của loại tiền này là dự định sắp tới sẽ cập nhật lại hệ thống và thay đổi cách thức nhận được coin mới của các thợ mỏ. Bài toán chạy đua tìm số nonce (proot of work) sẽ được loại bỏ. Thay vào đó sẽ là proof of stake.
- Báo cáo

Viet Anh Tran

Hôm nào rảnh rảnh thông não anh em về Ethereum đi, tôi hóng :3
- Báo cáo

ThanhCj

Để khi nào mình tìm hiểu thêm về ETH rồi tính tiếp 

- Báo cáo
NDKhoa01
Hàm băm được ứng dụng rộng rãi trong bảo mật, xác thực, chữ kí số nhưng không dùng để mã hoá thông tin được đâu bạn. Lí do là không thể khôi phục X từ Y được.
- Báo cáo
Teppi19
Với blockchain thì mình nghĩ hàm băm đâu có dùng để mã hoá thông tin?
- Báo cáo
NDKhoa01
Đúng, hàm băm có bao giờ được dùng để mã hóa thông tin đâu bạn. Hàm băm trong blockchain dùng để xác thực đấy chứ.
- Báo cáo
luisfonsi
Tác giả cho em hỏi với? Bitcoin liệu có sập không. Năm 2040 thì hết bitcoin để chia rồi thì liệu có hệ thống máy tính nào đứng lên để làm server chạy các giao dịch của nó không?
- Báo cáo

ThanhCj

Năm 2140, tức hơn 100 năm nữa.
Có thể sập, cũng có thể không, không biết được.
Từ năm 2140 trở đi thì thợ mỏ sẽ nhận được phí giao dịch. Tùy vào giá trị của phí giao dịch lúc đó mà thợ mỏ sẽ quyết định có tham gia tiếp vào hệ thống nữa hay không. Hiện tại, việc thực hiện 1 giao dịch bằng bitcoin vô cùng tốn kém năng lượng điện do các miner phải chạy bài toán ở trên. Có thể tương lai sẽ có loại tiền cryptocurrency khác thay thế bằng một phương pháp khác ít tốn kém hơn.
- Báo cáo
luisfonsi
Em nghĩ lí do mà bài toán khó là vì có nhiều miner mở hệ thống. Nên bài toán phải khó đúng không? Sau này giá giảm thì số lượng thợ mở tham gia sẽ ít hơn... bài toán đỡ khó hơn? Hoặc thằng chủ của Bitcoin đứng ra mở một server để vận hành Bitcoin.
- Báo cáo
NDKhoa01
Bài toán không khó đến nỗi cháy máy thế đâu bạn, sở dĩ tốn GPU là vì thực chất đào bitcoin là một cuộc đua xem ai nhanh hơn trong việc giải. Thi giải 1+1 bằng mấy có thể rất dễ, nhưng khi bạn cố gắng để đưa ra lời giải nhanh nhất trong 1 triệu người thì không dễ tí nào đâu.
- Báo cáo
Teppi19
Cho mình hỏi thêm mấy điều nhé:
1. Mỗi CPU/GPU là một miner hay có thể tập hợp nhiều CPU/GPU thành một miner?
2. Mỗi 10p thì một block được tạo ra và reward sẽ được trao cho duy nhất một miner đúng ko?
Cảm ơn bạn!
- Báo cáo

ThanhCj

1. Mỗi miner là một chương trình chạy để tìm nonce. Còn cpu/gpu là phần cứng mà miner có thể chạy trên đó. Có thể chạy nhiều miner trên 1 cpu/gpu. Nhưng tổng tốc độc xử lý cũng bằng nhau thôi bạn.
2. Reward sẽ trao cho 1 miner duy nhất tìm thấy nonce đúng đầu tiên.
- Báo cáo