Bitcoin dựa trên blockchain, mọi người đều biết điều đó. Nhưng blockchain là gì? Chính xác hơn, làm thế nào để một người có thể hình dung ra các thành phần riêng lẻ của blockchain, các khối (block)?
Blockchain là một chuỗi các khối dữ liệu. Mỗi khối có thể được coi là một trang trong một cuốn sổ cái. Các khối riêng biệt bao gồm một số thành phần. Những thứ này có thể được phân biệt thành phần đầu của khối (block header) và phần thân (block body).
Phần đầu khối (block header)
Phần đầu của khối được chia thành sáu thành phần:
- Phiên bản số của phần mềm
2. Hàm băm của khối trước đó
3. Hàm băm gốc (root hash) của Merkle tree
4. Thời gian tính bằng giây kể từ 1970–01–01 T00: 00 UTC
5. Mục tiêu của độ khó hiện tại
6. Nonce
1. Phiên bản số của phần mềm
phiên bản số của phần mềm không quan trọng trong hầu hết các trường hợp. Tuy nhiên, một công cụ khai thác với phiên bản số cụ thể có thể báo hiệu quyết định giao thức nào mà người đó hỗ trợ.
2. Hàm băm của khối trước đó
Có thể nói, hàm băm của khối trước là chuỗi của blockchain. Vì hàm băm của khối trước đó được chứa trong hàm băm của khối mới, nên các khối của blockchain đều xây dựng lẫn nhau. Không có thành phần này, sẽ không có sự kết nối và tính liên tiếp giữa các khối.
3. Hàm băm gốc của Merkle tree (cây Merkle)
Tất cả các giao dịch có trong một khối có thể được tổng hợp trong một hàm băm. Đây là hàm băm gốc (root hash) của cây Merkle (Merkle tree).
4. Thời gian tính bằng giây kể từ 1970–01–01 T00: 00 UTC
Một dấu thời gian (timestamp) trong khối. Thời gian được tính bằng giây kể từ 1/1/1970.
5. Mục tiêu của độ khó hiện tại
Mục tiêu cho biết mức băm mới phải nhỏ đến mức nào để xác nhận tính hợp lệ. Nói cách khác, mỗi hàm băm có kích thước tính theo bit. Mục tiêu tính bằng bit càng thấp thì càng khó tìm ra hàm băm phù hợp. Hàm băm có nhiều số 0 ở đầu nhỏ hơn hàm băm không có số không.
6. Nonce
Nonce là biến gia tăng theo bằng chứng công việc. Theo cách này, người khai thác đoán một hàm băm hợp lệ, một hàm băm nhỏ hơn mục tiêu.
Sáu thành phần này cấu tạo nên phần đầu của khối. Phần đầu khối đóng vai trò cơ bản trong Bitcoin vì nó kết nối tất cả các khối lại với nhau. Bạn có thể tưởng tượng nó giống như buồng lái của một chiếc xe tải. Dưới đây là các giấy tờ quan trọng mà xe tải đi qua các điều khiển của mạng lưới.
Thân khối
Phần thân của khối có thể hiểu được là khoang chứa hàng của một chiếc xe tải. Nó chứa tất cả các giao dịch được xác nhận với khối.
Khi một thợ đào xây dựng một khối, nó sẽ xác nhận các giao dịch. Người đó sẽ kiểm tra rằng người gửi có thực sự đủ tiền để chi tiêu không. Anh ta có thể dễ dàng đọc thông tin này từ blockchain. Người khai thác nhìn vào các khối phía trước để xem liệu người gửi thậm chí có nhận được 10 Bitcoin hay không nếu anh ta muốn gửi 10 Bitcoin.
Các giao dịch trong một khối không chỉ trong một danh sách, mà trong một thứ gọi là Cây Merkle (Merkle Tree).
Cây Merkle là gì?
Cây Merkle được đặt tên theo nhà toán học Ralph Merkle. Sự giải thích ở đây đó là nhiều thông tin có thể được biểu diễn trong một hàm băm duy nhất. Đối với điều này, dữ liệu được băm đầu tiên. Sau đó, các mã băm được sẽ được băm một lần nữa và hợp nhất lại. Cuối cùng, Cây Merkle được hợp nhất thành một hàm băm duy nhất. Hàm băm cuối cùng này cũng được gọi là hàm băm gốc – gốc của cây. Nó đại diện cho tất cả các thông tin của nó trên “những chiếc lá” (giao dịch cá nhân) và “các cành cây” (các mã băm của lá) trong một chuỗi tương đối ngắn.
Do đó, một hàm băm gốc là không đủ và phần còn lại của khối phải được lưu lại. Vì vậy người khai thác có thể xác nhận hàm băm gốc bất cứ lúc nào bằng cách băm lại thông tin có trong khối. Miễn là hàm băm giống nhau, các công cụ khai thác luôn nhận được cùng một hàm băm cho một đầu vào dữ liệu nhất định. Điều này rất tiện lợi vì họ chỉ có thể kiểm tra nếu chúng ở cùng cấp độ với hàm băm.
Mining: Quá trình tìm kiếm một hàm băm đặc biệt
Trong trưởng hợp này, việc hiểu được quá trình khai thác bằng chứng công việc sẽ dễ dàng hơn. Khi khai thác, Phần đầu của khối được thay đổi tăng dần để có được hàm băm đặc biệt. Phần đầu khối bao gồm năm hằng số và một biến. Các hằng số là phiên bản số của phần mềm, hàm băm của khối trước đó, hàm băm gốc của cây Merkle, dấu thời gian và kích thước mục tiêu của hàm băm được tìm kiếm theo byte.
Biến ở đây là nonce. Một nonce là một con số được tăng lên bởi số khác. Sau đó, người khai thác băm dữ liệu và kiểm tra xem dữ liệu có dẫn đến hàm băm thấp hơn giá trị mục tiêu được tìm kiếm hay không. Nếu giá trị băm lớn hơn mục tiêu, người khai thác sẽ lặp lại quy trình; Vì vậy, nó tăng nonce lên một, băm và kiểm tra lại. Nó lặp lại điều này cho đến khi tìm thấy một hàm băm thấp hơn mục tiêu hoặc nó nhận được một khối khác từ một nhà mạng khác có hàm băm thấp hơn mục tiêu. Sau đó lấy khối mới này và sử dụng nó làm cơ sở cho khối tiếp theo (sử dụng hàm băm mới làm “hàm băm của khối trước đó”).
Khai thác là một quá trình lặp đi lặp lại rất nhiều lần với mục tiêu là tìm ra một hàm băm đặc biệt. Khi hàm băm được tìm thấy, trò chơi bắt đầu lại từ đầu. Xác suất tìm thấy một hàm băm đặc biệt phụ thuộc vào độ khó. Trung bình Bitcoin tìm thấy một khối mới cứ sau mười phút. Độ khó tiếp tục thích ứng, vì vậy mức trung bình này vẫn giữ nguyên.
Điểm đặc biệt của quy trình này là hàm băm đặc biệt chỉ có thể được tìm thấy bằng cách phỏng đoán. Việc này đòi hòi sức mạnh tính toán và năng lượng. Nhìn vào hàm băm đặc biệt là đủ để thấy rằng nó đặc biệt bởi vì nó bắt đầu bằng số “những số 0”.
Dưới đây là một ví dụ về hàm băm như vậy từ blockchain Bitcoin:
000000000000000000094bfa4edb1245c347e42452e4418e9fe5a1d24e335b16
Hàm băm: “Búp bê Matryoshka” của blockchain
Một khối có thể được đơn giản hóa như một “con búp bê matryoshka” (búp bê Nga – búp bê mở ra có chứa con búp bê nhỏ ở trong và cứ thế đến con bé nhất). Con búp bê nhỏ nhất là giao dịch chưa thanh toán. Phong bì tiếp theo là hình thức băm của giao dịch này. Sau đó, hai giao dịch băm được băm cùng nhau. Vì vậy, các hàm băm được hợp nhất ngày càng nhiều. Cuối cùng, chỉ còn lại một hàm băm, hàm băm gốc hoặc “con búp bê matryoshka lớn nhất”.
[Video] Làm Thế Nào Để Một Blockchain Hoạt Động?