Block, hay khối, là đơn vị tổ chức dữ liệu giao dịch trong blockchain. Với Bitcoin, cần phân biệt phần nội dung giao dịch và block header — phần đầu khối chứa các trường phục vụ liên kết, cam kết dữ liệu và kiểm tra Proof of Work.
Header không phải toàn bộ khối thu nhỏ theo nghĩa có thể đọc hết giao dịch từ đó. Nó chứa những giá trị liên quan tới nội dung và lịch sử, giúp các phần mềm thực hiện những phép kiểm tra cụ thể. Nguồn: Bitcoin Developer Reference, Block Headers.
Từ giao dịch tới khối liên kết
Luồng đơn giản gồm bốn bước: tập hợp giao dịch, tạo giá trị cam kết của tập đó, đưa các trường cần thiết vào header, rồi liên kết header với khối trước. Đây là sơ đồ cấu trúc; một khối ứng viên vẫn phải được xác minh theo toàn bộ quy tắc trước khi được nút chấp nhận.
Trong Bitcoin, header có các trường version, hash header trước, Merkle root, time, nBits và nonce. Có thể đọc chúng theo nhóm mục đích: diễn đạt thông tin phiên bản, liên kết lịch sử, cam kết tập giao dịch, ghi trường thời gian và phục vụ bài toán Proof of Work. Nguồn: Bitcoin Developer Reference, bảng Block Headers.
Để hiểu sâu Merkle root hoặc nonce, nên chuyển tới trang chuyên biệt. Liệt kê trường header không đủ giải thích cơ chế đồng thuận của toàn mạng, cũng không nói một bên có thể tự thay mọi trường theo ý muốn mà khối vẫn hợp lệ.
Timestamp nói được điều gì?
Timestamp là trường thời gian trong dữ liệu khối. Trong Bitcoin, thời gian này do bên tạo header đưa vào và chịu ràng buộc xác minh. Nó không phải biên nhận đồng hồ tuyệt đối của từng giao dịch và cũng không chứng minh một sự kiện ngoài đời xảy ra chính xác ở giây đó. Nguồn: Bitcoin Developer Reference, trường time.
Đây là giới hạn quan trọng khi đọc dữ liệu: thứ tự giao dịch trong lịch sử và thời gian ứng dụng hiển thị có thể phục vụ các mục đích khác nhau. Trước khi sử dụng timestamp cho phân tích, cần biết đang dùng trường nào và đơn vị nào.
Ví dụ đối chiếu từ tài liệu kỹ thuật
Trang reference cung cấp một header mẫu và chú thích trường time có Unix time 1415239972. Người đọc có thể đối chiếu trực tiếp vị trí trường này trong ví dụ, thay vì coi mọi chuỗi trong header là một mã không phân biệt. Đây là ví dụ có tại nguồn, không phải một header iCapital tự tạo.
Ví dụ chỉ phục vụ nhận diện cấu trúc. Nó không được dùng để mô tả trạng thái mạng tại ngày truy cập hoặc kiểm chứng một giao dịch thị trường cụ thể.
- Phiên bản
- Hash header trước
- Merkle root
- Timestamp
- nBits · mã hóa ngưỡng PoW
- Nonce · đầu vào thử PoW
Ngộ nhận cần tránh
Header có Proof of Work hợp lệ chưa thay thế việc kiểm tra toàn bộ nội dung. Tương tự, có timestamp không có nghĩa dữ liệu ngoài chuỗi đã được xác nhận là thật. Khi đọc một khối, nên hỏi từng trường đang chứng minh điều gì và phần nào còn cần kiểm tra.
Kết luận
Block là đơn vị gom giao dịch, còn block header là phần chứa các trường giúp liên kết với block trước, cam kết với tập giao dịch và kiểm tra Proof of Work. Mỗi trường chứng minh một điều cụ thể và có giới hạn riêng: header hợp lệ chưa có nghĩa cả block hợp lệ, timestamp cũng không xác nhận dữ liệu ngoài chuỗi là thật.
Đọc tiếp
Đọc Blockchain, Giao dịch Bitcoin, Hàm băm, Merkle tree, Proof of Work và Thư viện thuật ngữ.