Bên trong khối: tiêu đề, chiều cao, kích thước, trợ cấp
Một khối gồm phần đầu nhỏ, cố định và phần thân chứa giao dịch. Sáu trường của phần đầu, việc đào băm cái gì, và chiều cao, kích thước khối nghĩa là gì.
Một khối được tạo nên từ những gì?
Một khối có hai phần: phần đầu (header) và phần thân. Việc đào chỉ băm phần đầu.
- Phần thân chứa các giao dịch. Nó có thể chỉ vài trăm byte hoặc vài megabyte, tùy chuỗi bận đến đâu.
- Phần đầu là bản tóm tắt cố định của khối. Trên hầu hết các chuỗi, nó dài đúng 80 byte.
- Việc đào băm phần đầu và không gì khác.
Ý cuối cùng là điều hữu ích nhất trong bài này. Một máy đào thử hàng tỷ biến thể mỗi giây. Nó không làm được vậy nếu mỗi lần thử phải băm lại cả một khối đầy giao dịch. Nó chỉ băm lại 80 byte.
Sáu trường trong phần đầu là gì?
Phần đầu có sáu trường. Mỗi trường có lý do để tồn tại, và hai trong số đó gánh phần lớn công việc.
- Phiên bản (version).
- Hash của khối trước.
- Merkle root, một hash duy nhất tóm gọn mọi giao dịch.
- Dấu thời gian (timestamp).
- Các bit độ khó.
- Nonce, một bộ đếm mà máy đào được phép thay đổi.
Hash của khối trước là thứ làm nên một chuỗi. Mỗi phần đầu nêu tên khối đứng trước nó. Viết lại một khối cũ sẽ làm hash của nó thay đổi. Điều đó làm hỏng phần đầu kế tiếp, rồi phần đầu sau nữa, cho đến tận đỉnh chuỗi. Riêng trường này là toàn bộ lập luận về an ninh của bằng chứng công việc.
Merkle root tóm tắt mọi giao dịch trong phần thân. Đổi một giao dịch dù chỉ một byte, merkle root sẽ đổi. Khi đó phần đầu đổi, và mọi hash đã thử đến lúc đó trở nên vô giá trị. Đây là cách 80 byte có thể đại diện trung thực cho một khối ở bất kỳ kích thước nào.
Các bit độ khó là mục tiêu mà hash phải nằm dưới, ở dạng rút gọn. Dấu thời gian là khoảng lúc khối được tạo, và có thể chỉ gần đúng. Nonce là trường mà máy đào được tự do thay đổi. Chính sự tự do đó khiến việc tìm kiếm có thể diễn ra.
Điều gì xảy ra khi nonce hết giá trị?
Nonce là một bộ đếm nhỏ. Một máy đào hiện đại dùng hết mọi giá trị nó chứa được gần như ngay lập tức. Đó không phải ngõ cụt. Nonce chỉ là thứ dễ thay đổi nhất, không bao giờ là thứ duy nhất.
Khi nonce hết, máy đào thay đổi một thứ khác góp vào phần đầu.
- Dấu thời gian có thể dịch đi.
- Giao dịch coinbase (giao dịch đầu tiên trong khối, giải thích bên dưới) có thể được sửa nhẹ. Việc đó làm đổi merkle root, cho ra một phần đầu hoàn toàn mới để tìm kiếm.
Trên một pool, đây là việc của extra nonce. Pool cho mỗi thợ đào một điểm xuất phát khác nhau. Vì vậy không có hai thợ đào nào nghiền cùng những con số.
Chiều cao khối là gì?
Chiều cao khối là số khối đã có trước một khối nhất định. Khối genesis, khối đầu tiên, có chiều cao bằng không. Khối tiếp theo là một, và cứ thế. Đó là con số bên cạnh mỗi mục trên trang khối của pool và trên mọi trình khám phá khối (explorer).
Chiều cao thật ra không được lưu trong phần đầu. Nó đến từ vị trí của khối trong chuỗi.
Trên hầu hết các chuỗi hiện đại, chiều cao cũng được ghi vào giao dịch coinbase. Quy tắc này được thêm vào sau, để hai khối ở hai chiều cao khác nhau không bao giờ giống hệt nhau từng byte. Dù vậy, câu trả lời chính thức cho chiều cao của một khối vẫn là vị trí của nó.
Chiều cao cũng là cách tự nhiên để đếm số xác nhận. Một giao dịch bị chôn sâu sáu khối nằm trong một khối thấp hơn đỉnh sáu bậc. Mỗi khối thêm vào làm việc viết lại nó tốn kém hơn.
Kích thước khối đo cái gì?
Kích thước khối về cơ bản là kích thước của phần thân. Phần đầu nhỏ đến mức không đáng kể bên cạnh nó. Giới hạn kích thước khối nói về số giao dịch vừa được, không phải về phần đầu.
Một khối đầy và một khối trống cần đúng cùng một lượng công việc đào. Độ khó quyết định khối khó tìm đến đâu. Kích thước quyết định khối chở được bao nhiêu. Hai thứ này không liên quan, và nhầm lẫn chúng tạo ra nhiều suy nghĩ sai về phí.
Kích thước có ảnh hưởng đến thị trường phí. Khi số giao dịch muốn vào nhiều hơn chỗ chứa, giao dịch trả phí cao hơn được vào trước. Tổng phí trong khối tăng lên, và phần đó chảy thẳng vào số tiền khối trả.
Giao dịch coinbase là gì?
Giao dịch đầu tiên trong mỗi khối là giao dịch đặc biệt. Nó không có người gửi. Nó tạo ra coin từ hư không và trả cho người tạo ra khối.
Nó được gọi là giao dịch coinbase. Nó không liên quan gì đến sàn giao dịch cùng tên.
Nó trả phần thưởng khối, gồm hai phần.
- Trợ cấp khối, tức coin mới phát hành. Lịch phát hành của chuỗi quyết định con số này, và trên hầu hết các coin nó giảm dần theo thời gian.
- Phí của mọi giao dịch khác trong khối. Người dùng gắn phí để giao dịch của họ được đưa vào khối.
Trên một pool, coinbase trả cho pool. Sau đó pool chia phần thưởng cho mọi người đã gửi share trong vòng đó. Đây không phải đường vòng. Đó là cách một pool trả cho nhiều người từ một phần thưởng đến dưới dạng một khoản không thể chia nhỏ.
Vì sao điều này quan trọng khi bạn đào?
Khi đã rõ hình dạng của một khối, ba điều trở nên hiển nhiên. Cả ba đều xuất hiện liên tục.
- Một khối mới làm công việc của bạn mất giá trị ngay lập tức. Hash khối trước đã đổi, nên phần đầu bạn đang tìm không còn tồn tại. Mọi thứ bạn gửi cho nó sau đó là share cũ (stale), và không tốc độ nào sửa được điều đó.
- Pool gửi công việc mới cho bạn thường xuyên. Mỗi giao dịch mới mà pool muốn đưa vào đều làm đổi merkle root. Công việc mới hơn mang nhiều phí hơn, nghĩa là nhiều phần thưởng hơn cho cùng công sức.
- Kích thước khối không bao giờ xuất hiện trong ước tính thu nhập. Thu nhập của bạn phụ thuộc vào độ khó, trợ cấp khối và phí. Nó không phụ thuộc vào số byte trong phần thân.
Trang khối của pool hiển thị chiều cao, phần thưởng và thời điểm tìm được của mỗi khối. Hàng đó là phần hữu ích của tất cả những điều trên. Trình khám phá khối hiển thị phần còn lại, kể cả giao dịch coinbase đã trả cho khối.