Nhảy đến nội dung chính
Change page

Khối

Lần cập nhật trang lần cuối: 23 tháng 2, 2026

Các khối là tập hợp các giao dịch kèm theo một hàm băm (Hash) của khối trước đó trong chuỗi. Điều này liên kết các khối lại với nhau (thành một chuỗi) vì các hàm băm được tạo ra bằng phương pháp mật mã học (Cryptography) từ dữ liệu của khối. Điều này ngăn chặn gian lận, bởi vì chỉ một thay đổi trong bất kỳ khối nào trong lịch sử cũng sẽ làm vô hiệu tất cả các khối tiếp theo, do toàn bộ các hàm băm sau đó sẽ thay đổi và mọi người đang vận hành chuỗi khối sẽ phát hiện ra.

Điều kiện tiên quyết

Khối là một chủ đề rất dễ với người mới. Để giúp bạn hiểu rõ hơn về trang này, chúng tôi khuyên bạn nên đọc Tài khoản, Giao dịchgiới thiệu về Ethereum của chúng tôi.

Tại sao lại là khối?

Để đảm bảo tất cả những người tham gia mạng Ethereum duy trì trạng thái đồng bộ và thống nhất về lịch sử giao dịch chính xác, chúng ta gom các giao dịch lại thành các khối. Điều này có nghĩa là hàng chục (hoặc hàng trăm) giao dịch được ghi nhận, thống nhất và đồng bộ cùng một lúc.

Sơ đồ hiển thị giao dịch trong một khối gây ra các thay đổi trạng thái Sơ đồ được điều chỉnh từ minh họa Ethereum EVM (opens in a new tab)

Bằng cách giãn cách thời gian ghi nhận, chúng ta cho tất cả những người tham gia mạng đủ thời gian để đạt được đồng thuận: mặc dù các yêu cầu giao dịch xảy ra hàng chục lần mỗi giây, nhưng các khối trên Ethereum chỉ được tạo và ghi nhận sau mỗi mười hai giây.

Cách các khối hoạt động

Để lưu giữ lịch sử giao dịch, các khối được sắp xếp theo một thứ tự nghiêm ngặt (mỗi khối mới đều chứa một thông tin liên quan đến khối cha của nó), và giao dịch trong khối cũng được sắp xếp nghiêm ngặt theo cách tương tự. Trừ những trường hợp đặt biệt, bất kì lúc nào, tất cả những người tham gia mạng lưới thống nhất con số, lịch sử chính xác của khối và đang xử lí để gom các yêu cầu giao dịch đang diễn ra vào khối tiếp theo.

Khi một khối được nối với nhau bằng cách chọn ra nút xác thực ngẫu nhiên trên mạng lưới, nó sẽ được phân tán đến tất cả mạng lưới; tất cả nút thêm nó vào khối cuối của chuỗi khối và nút xác thực mới sẽ được chọn để tạo khối tiếp theo. Quy trình lắp khối chính xác và quy trình ghi nhận/ đồng thuận hiện được quy định bởi giao thức bằng chứng cổ phần (PoS) của Ethereum.

Giao thức bằng chứng cổ phần

Bằng chứng cổ phần (Proof-of-Stake) có ý nghĩa như sau:

  • Nút xác thực phải Stake (đặt cược) 32 ETH vào một hợp đồng ký quỹ như khoảng thế chấp phòng hành vi độc hại. Điều này giúp bảo vệ mạng lưới vì các hoạt động không trung thực dẫn đến một hoặc tất cả Stake bị hủy đi.
  • Ở mỗi Slot (mỗi 12 giây) một nút xác thực ngẫu nhiên được chọn để làm người để xuất khối. Họ sẽ gộp các giao dịch lại, xử lí chúng và xác định 'trạng thái'. Họ gói các thông tin này vào một khối và phân tán nó với những nút xác thực khác.
  • Những nút xác thực khác khi biết về khối mới sẽ xác thực lại những giao dịch để đảm bảo rằng họ đồng tình với đề xuất thay đổi trên trạng thái toàn mạng. Giả sử rằng khối hợp lệ, họ sẽ thêm nó vào dữ liệu của họ.
  • Nếu một nút xác thực biết về hai khối trong cùng Slot họ sẽ sử dụng thuật toán chọn nhánh (Fork Choise Algorithm) để chọn ra một nhánh được ủng hộ bởi phần lớn ETH được Stake.

Thông tin thêm về bằng chứng cổ phần

Khối có gì trong đó?

Có rất nhiều thông tin nằm trong một khối. Ở cấp độ tổng quát nhất, một khối chứa các trường dữ liệu sau:

Trường dữ liệuMô tả
slotSlot mà khối đó thuộc về
proposer_indexiD của trình xác thực đề xuất khối
parent_rootkết quả hàm băm của khối trước
state_roothàm băm gốc của đối tượng trạng thái
phần bodymột đối tượng chứa nhiều trường dữ liệu, như được định nghĩa dưới đây

Phần body của khối chứa một số trường riêng:

Trường dữ liệuMô tả
randao_revealmột giá trị được dùng để chọn người đề xuất khối tiếp theo
eth1_datathông tin về hợp đồng ký quỹ (deposit contract)
graffitidữ liệu tùy ý được dùng để gắn nhãn cho các khối
proposer_slashingsdanh sách các nút xác thực sẽ bị phạt cắt quỹ (Slashing)
attester_slashingsdanh sách các nút xác thực chứng thực sẽ bị cắt quỹ (Slashing)
attestationsdanh sách các chứng thực được thực hiện đối với các slot trước đó
gửi tiềndanh sách các khoản ký quỹ mới vào hợp đồng ký quỹ
voluntary_exitsdanh sách các nút xác thực tự nguyện rời khỏi mạng
sync_aggregatetập con các nút xác thực được dùng để phục vụ Light Client (Client có dữ liệu thấp hơn so với Client đầy đủ)
execution_payloadcác giao dịch được chuyển từ Client thực thi

Trường attestations chứa danh sách tất cả các chứng thực trong khối. Sự chứng thực (Attestations) có những loại dữ liệu riêng chứa những mảnh dữ liệu. Mỗi sự chứng thực chứa:

Trường dữ liệuMô tả
aggregation_bitsmột tập hợp những nút xác thực tham gia quá trình chứng nhận này
dữ liệumột hộp chưa những trường dữ liệu con
signaturechữ ký tổng hợp của một tập hợp những người xác thực đối với phần data

Trường data trong attestation chứa những nội dung sau:

Trường dữ liệuMô tả
slotnhững Slot liên quann đến sự chứng thực
indexcác chỉ số nút xác thực
beacon_block_roothàm băm gốc của khối Beacon được xem là phần đầu của chuỗi
nguồncột mốc cuối cùng được xác nhận (Jusstified)
targetkhối ranh giới chu kỳ mới nhất

Việc thực thi các giao dịch trong execution_payload sẽ cập nhật trạng thái toàn cục. Tất cả các máy khách thực thi lại các giao dịch trong execution_payload để đảm bảo trạng thái mới khớp với trạng thái trong trường state_root của khối mới. Đây là cách một Client có thể biết được khối mới hợp lệ và an toàn để thêm vào chuỗi khối hay không. Bản thân execution payload là một đối tượng có một số trường. Ngoài ra còn có một execution_payload_header chứa thông tin tóm tắt quan trọng về dữ liệu thực thi. Những cấu trúc được sắp sếp như sau:

execution_payload_header chứa các trường sau:

Trường dữ liệuMô tả
parent_hashkết quả băm của khối bố
fee_recipientđịa chỉ tài khoản trả phí giao dịch đến
state_roothàm băm gốc của trạng thái toàn mạng lưới sau khi áp dụng các thay đổi trong khối này
receipts_roothàm băm của tất cả biên lai giao dịch (dữ liệu dạng cây)
logs_bloomcấu trúc trúc dữ liệu chứa các nhật kí sự kiện
prev_randaodữ liệu dùng trong lựa chọn nút xác thực ngẫu nhiên
block_numbersố của khối hiện tại
gas_limitlượng Gas tối đa cho phép ở khối này
gas_usedlượng Gas thực tế sử dụng trong khối
timestampthời gian của khối
extra_datadữ liệu bổ sung tùy ý dưới dạng Byte thô
base_fee_per_gasphí giao dịch cơ bản
block_hashHàm băm của khối thực thi
transactions_roothàm băm gốc của các giao dịch trong dữ liệu thực thi
withdrawal_roothàm băm gốc của các lệnh rút trong dữ liệu thực thi

Bản thân execution_payload chứa những nội dung sau (lưu ý rằng nó giống hệt với phần header ngoại trừ việc thay vì chứa hàm băm gốc của các giao dịch, nó bao gồm danh sách thực tế các giao dịch và thông tin rút tiền):

Trường dữ liệuMô tả
parent_hashkết quả băm của khối bố
fee_recipientđịa chỉ tài khoản trả phí giao dịch đến
state_roothàm băm gốc của trạng thái toàn mạng lưới sau khi áp dụng các thay đổi trong khối này
receipts_roothàm băm của tất cả biên lai giao dịch (dữ liệu dạng cây)
logs_bloomcấu trúc trúc dữ liệu chứa các nhật kí sự kiện
prev_randaodữ liệu dùng trong lựa chọn nút xác thực ngẫu nhiên
block_numbersố của khối hiện tại
gas_limitlượng Gas tối đa cho phép ở khối này
gas_usedlượng Gas thực tế sử dụng trong khối
timestampthời gian của khối
extra_datadữ liệu bổ sung tùy ý dưới dạng Byte thô
base_fee_per_gasphí giao dịch cơ bản
block_hashHàm băm của khối thực thi
các giao dịchdanh sách của những giao dịch sẽ được thực thi
rút tiềndanh sách đối tượng rút

Danh sách withdrawals chứa các đối tượng withdrawal được cấu trúc theo cách sau:

Trường dữ liệuMô tả
địa chỉđịa chỉ tài khoải rút tiền
amountkhối lượng tiền rút
indexsố thứ tự rút tiền
validatorIndexsố thứ tự nút xác thực

Thời gian khối

Thời gian khối dùng để mô tả thời gian tách khối. Trong Ethereum, thời gian chia thành mỗi đơn vị 12 giây gọi là 'Slot'. Với mỗi slot một nút xác thực đựa lựa chọn để đề xuất khối. Giả sử rằng tất cả nút xác thực đang trực tuyến và hoạt động bình thường thì mỗi Slot sẽ có một khối, nghĩa rằng thời gian khối là 12 giây. Tuy nhiên, đôi khi nút xác thực có thể ngoại tuyến khi được gọi đề xuất khối, nghĩa là Slot đôi khi bị trống.

Việc thực hiện sẽ khác nhau giữa hệ thống bằng chứng công việc nơi mà thời gian khối dựa theo xác suất và được điều chỉnh theo mục tiêu của giao thức độ khó đào. Thời gian khối trung bình (opens in a new tab) của Ethereum là một ví dụ hoàn hảo về điều này, qua đó quá trình chuyển đổi từ bằng chứng công việc sang bằng chứng cổ phần có thể được suy ra một cách rõ ràng dựa trên tính nhất quán của thời gian khối 12 giây mới.

Kích thước khối

Một lưu ý quan trọng đó là bản thân khối cũng bị giới hạn về kích thước. Mỗi khối có kích thước mục tiêu là 30 triệu gas nhưng kích thước của các khối sẽ tăng hoặc giảm theo nhu cầu của mạng lưới, cho đến khi đạt giới hạn khối là 60 triệu gas (gấp 2 lần kích thước khối mục tiêu). Giới hạn Gas của khối có thể điều chỉnh lên hoặc xuống phụ thuộc vào tỉ lệ khoảng 1/1024 từ giới hạn Gas của khối trước. Và kết quả, nút xác thực có thể thay đổi giới hạn Gas của khối qua đồng thuận. Tổng lượng Gas được tiêu thụ bởi tất cả giao dịch trong khối phải nhỏ hơn mức giới hạn Gas mục tiêu của khối. Điều này rất quan trọng để đảm bảo rằng khối không thể có kích thước tùy ý. Nếu khối có thể có kích thước tùy ý, thì các nút xác thực bản đầy đủ (Full Node) sẽ không thể theo kịp mạng lưới do yêu cầu về dữ liệu trống và tốc độ (phần cứng không đủ mạnh mẽ). Khối càng lớn, càng cần nhiều sức mạnh tính toán để có thể xử lí chúng xong thời gian của Slot kế. Điều này là rủi ro tập trung hóa, và giải pháp là giới hạn kích thước khối.

Đọc thêm

Biết về nguồn lực cộng đồng đã giúp đỡ bạn? Chỉnh sửa trang này và bổ sung!

Bài viết này hữu ích không?