Chuyển đến nội dung chính
Change page

Đề xuất khối

Các khối là đơn vị cơ bản của Chuỗi khối. Các khối là những đơn vị thông tin rời rạc được truyền giữa các nút, được đồng thuận và thêm vào cơ sở dữ liệu của mỗi nút. Trang này giải thích cách chúng được tạo ra.

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

Đề xuất khối là một phần của Giao thức Bằng chứng cổ phần (PoS). Để giúp hiểu trang này, chúng tôi khuyên bạn nên đọc về bằng chứng cổ phầnkiến trúc khối.

Ai tạo ra các khối?

Các tài khoản trình xác thực đề xuất các khối. Các tài khoản trình xác thực được quản lý bởi các nhà điều hành nút, những người chạy phần mềm trình xác thực như một phần của máy khách thực thi và máy khách đồng thuận của họ, đồng thời đã gửi ít nhất 32 ETH vào hợp đồng tiền gửi. Tuy nhiên, mỗi trình xác thực chỉ thỉnh thoảng mới chịu trách nhiệm đề xuất một khối. Ethereum đo lường thời gian bằng các khe và Kỷ nguyên. Mỗi khe kéo dài mười hai giây và 32 khe (6,4 phút) tạo thành một Kỷ nguyên. Mỗi khe là một cơ hội để thêm một khối mới trên Ethereum.

Lựa chọn ngẫu nhiên

Một trình xác thực duy nhất được chọn một cách giả ngẫu nhiên để đề xuất một khối trong mỗi khe. Không có tính ngẫu nhiên thực sự trong một Chuỗi khối vì nếu mỗi nút tạo ra các số ngẫu nhiên thực sự, chúng sẽ không thể đạt được đồng thuận. Thay vào đó, mục tiêu là làm cho quá trình chọn trình xác thực trở nên không thể đoán trước. Tính ngẫu nhiên đạt được trên Ethereum bằng cách sử dụng một thuật toán gọi là RANDAO, thuật toán này trộn một Mã băm từ người đề xuất khối với một hạt giống (seed) được cập nhật ở mỗi khối. Giá trị này được sử dụng để chọn một trình xác thực cụ thể từ tổng số tập hợp trình xác thực. Việc chọn trình xác thực được cố định trước hai Kỷ nguyên như một cách để bảo vệ chống lại một số loại thao túng hạt giống.

Mặc dù các trình xác thực thêm vào RANDAO trong mỗi khe, giá trị RANDAO toàn cục chỉ được cập nhật một lần mỗi Kỷ nguyên. Để tính toán chỉ số của người đề xuất khối tiếp theo, giá trị RANDAO được trộn với số khe để tạo ra một giá trị duy nhất trong mỗi khe. Xác suất một trình xác thực cá nhân được chọn không đơn giản là 1/N (trong đó N = tổng số trình xác thực đang hoạt động). Thay vào đó, nó được tính trọng số theo số dư ETH hiệu dụng của mỗi trình xác thực. Số dư hiệu dụng tối đa là 32 ETH (điều này có nghĩa là balance < 32 ETH dẫn đến trọng số thấp hơn so với balance == 32 ETH, nhưng balance > 32 ETH không dẫn đến trọng số cao hơn so với balance == 32 ETH).

Chỉ có một người đề xuất khối được chọn trong mỗi khe. Trong điều kiện bình thường, một người tạo khối duy nhất sẽ tạo và phát hành một khối duy nhất trong khe dành riêng cho họ. Việc tạo hai khối cho cùng một khe là một vi phạm có thể bị phạt cắt giảm, thường được gọi là "xác nhận nước đôi".

Khối được tạo ra như thế nào?

Người đề xuất khối được kỳ vọng sẽ phát sóng một khối beacon đã ký, được xây dựng trên đỉnh của phần đầu gần nhất của Chuỗi theo góc nhìn từ thuật toán chọn nhánh chạy cục bộ của riêng họ. Thuật toán chọn nhánh áp dụng bất kỳ chứng thực nào đang xếp hàng chờ còn sót lại từ khe trước đó, sau đó tìm khối có trọng số chứng thực tích lũy lớn nhất trong lịch sử của nó. Khối đó là khối cha của khối mới do người đề xuất tạo ra.

Người đề xuất khối tạo ra một khối bằng cách thu thập dữ liệu từ cơ sở dữ liệu cục bộ của chính nó và góc nhìn về Chuỗi. Nội dung của khối được hiển thị trong đoạn mã dưới đây:

Trường randao_reveal nhận một giá trị ngẫu nhiên có thể xác minh mà người đề xuất khối tạo ra bằng việc ký số Kỷ nguyên hiện tại. eth1_data là một phiếu bầu cho góc nhìn của người đề xuất khối về hợp đồng tiền gửi, bao gồm gốc của trie Merkle tiền gửi và tổng số tiền gửi cho phép xác minh các khoản tiền gửi mới. graffiti là một trường tùy chọn có thể được sử dụng để thêm một thông điệp vào khối. proposer_slashingsattester_slashings là các trường chứa bằng chứng cho thấy một số trình xác thực nhất định đã phạm phải các vi phạm có thể bị phạt cắt giảm theo góc nhìn của người đề xuất về Chuỗi. deposits là danh sách các khoản tiền gửi mới của trình xác thực mà người đề xuất khối biết đến, và voluntary_exits là danh sách các trình xác thực muốn thoát mà người đề xuất khối đã nghe được trên mạng lưới tin đồn của lớp đồng thuận. sync_aggregate là một vector cho thấy những trình xác thực nào trước đây đã được chỉ định vào một ủy ban đồng bộ (một tập hợp con các trình xác thực phục vụ dữ liệu máy khách nhẹ) và đã tham gia vào việc ký dữ liệu.

execution_payload cho phép thông tin về các giao dịch được truyền giữa máy khách thực thi và máy khách đồng thuận. execution_payload là một khối dữ liệu thực thi được lồng bên trong một khối beacon. Các trường bên trong execution_payload phản ánh cấu trúc khối được phác thảo trong sách vàng Ethereum, ngoại trừ việc không có các ommer và prev_randao tồn tại thay cho difficulty. Máy khách thực thi có quyền truy cập vào một nhóm giao dịch cục bộ mà nó đã nghe được trên mạng lưới tin đồn của riêng nó. Các giao dịch này được thực thi cục bộ để tạo ra một trie trạng thái được cập nhật, được gọi là trạng thái sau (post-state). Các giao dịch được bao gồm trong execution_payload dưới dạng một danh sách gọi là transactions và trạng thái sau được cung cấp trong trường state-root.

Tất cả những dữ liệu này được thu thập trong một khối beacon, được ký và phát sóng tới các nút ngang hàng của người đề xuất khối, những người này sau đó sẽ truyền bá nó tới các nút ngang hàng của họ, v.v.

Đọc thêm về cấu trúc của các khối.

Điều gì xảy ra với khối?

Khối được thêm vào cơ sở dữ liệu cục bộ của người đề xuất khối và được phát sóng tới các nút ngang hàng qua mạng lưới tin đồn của lớp đồng thuận. Khi một trình xác thực nhận được khối, nó sẽ xác minh dữ liệu bên trong đó, bao gồm việc kiểm tra xem khối có đúng khối cha hay không, có tương ứng với đúng khe hay không, chỉ số người đề xuất có đúng như mong đợi hay không, tiết lộ RANDAO có hợp lệ hay không và người đề xuất không bị phạt cắt giảm. execution_payload được gỡ gói và máy khách thực thi của trình xác thực sẽ thực thi lại các giao dịch trong danh sách để kiểm tra sự thay đổi trạng thái được đề xuất. Giả sử khối vượt qua tất cả các bước kiểm tra này, mỗi trình xác thực sẽ thêm khối vào Chuỗi chính tắc của riêng nó. Quá trình này sau đó bắt đầu lại ở khe tiếp theo.

Phần thưởng khối

Người đề xuất khối nhận được khoản thanh toán cho công việc của họ. Có một base_reward được tính toán như một hàm của số lượng trình xác thực đang hoạt động và số dư hiệu dụng của họ. Người đề xuất khối sau đó nhận được một phần của base_reward cho mỗi chứng thực hợp lệ được bao gồm trong khối; càng nhiều trình xác thực chứng thực cho khối, phần thưởng của người đề xuất khối càng lớn. Ngoài ra còn có phần thưởng cho việc báo cáo các trình xác thực đáng bị phạt cắt giảm, bằng 1/512 * effective balance cho mỗi trình xác thực bị phạt cắt giảm.

Tìm hiểu thêm về phần thưởng và hình phạt

Đọc thêm