Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
---
title: "Các chứng thực"
description: "Mô tả về các chứng thực trên Ethereum bằng chứng cổ phần."
lang: vi
---

Một trình xác thực dự kiến sẽ tạo, ký và phát một chứng thực trong mỗi tham số epoch. Trang này phác thảo các chứng thực này trông như thế nào và cách chúng được xử lý và truyền đạt giữa các máy khách đồng thuận.

## Chứng thực là gì? {#what-is-an-attestation}

Mỗi [tham số epoch](/glossary/#epoch) (6,4 phút), một trình xác thực sẽ đề xuất một chứng thực cho mạng. Chứng thực dành cho một slot cụ thể trong tham số epoch. Mục đích của chứng thực là bỏ phiếu ủng hộ quan điểm của trình xác thực về chuỗi, cụ thể là khối được chứng minh hợp lệ gần đây nhất và khối đầu tiên trong tham số epoch hiện tại (được gọi là các điểm kiểm tra `nguồn` và `đích`). Thông tin này được kết hợp cho tất cả các trình xác thực tham gia, cho phép mạng đạt được sự đồng thuận về trạng thái của chuỗi khối.

Chứng thực chứa các thành phần sau:

- `aggregation_bits`: danh sách bit của các trình xác thực trong đó vị trí ánh xạ tới chỉ mục của trình xác thực trong ủy ban của họ; giá trị (0/1) cho biết liệu trình xác thực đã ký `dữ liệu` hay chưa (tức là liệu họ có đang hoạt động và đồng ý với người đề xuất khối hay không)
- `data`: các chi tiết liên quan đến chứng thực, như được định nghĩa bên dưới
- `signature`: một chữ ký BLS tổng hợp các chữ ký của các trình xác thực riêng lẻ

Nhiệm vụ đầu tiên của một trình xác thực chứng thực là xây dựng `dữ liệu`. `Dữ liệu` chứa các thông tin sau:

- `slot`: Số slot mà chứng thực đề cập đến
- `index`: Một số xác định ủy ban mà trình xác thực thuộc về trong một slot nhất định
- `beacon_block_root`: Hàm băm gốc của khối mà trình xác thực nhìn thấy ở đầu chuỗi (kết quả của việc áp dụng thuật toán lựa chọn phân nhánh)
- `source`: Một phần của phiếu bầu về tính kết luận cuối cùng cho biết những gì các trình xác thực xem là khối được chứng minh hợp lệ gần đây nhất
- `target`: Một phần của phiếu bầu về tính kết luận cuối cùng cho biết những gì các trình xác thực xem là khối đầu tiên trong tham số epoch hiện tại

Khi `dữ liệu` được xây dựng, trình xác thực có thể lật bit trong `aggregation_bits` tương ứng với chỉ mục trình xác thực của chính họ từ 0 thành 1 để cho thấy rằng họ đã tham gia.

Cuối cùng, trình xác thực ký chứng thực và phát nó lên mạng.

### Chứng thực tổng hợp {#aggregated-attestation}

Có một chi phí đáng kể liên quan đến việc chuyển dữ liệu này xung quanh mạng cho mỗi trình xác thực. Do đó, các chứng thực từ các trình xác thực riêng lẻ được tổng hợp trong các mạng con trước khi được phát đi rộng rãi hơn. Điều này bao gồm việc tổng hợp các chữ ký lại với nhau để một chứng thực được phát đi bao gồm `dữ liệu` đồng thuận và một chữ ký duy nhất được hình thành bằng cách kết hợp chữ ký của tất cả các trình xác thực đồng ý với `dữ liệu` đó. Điều này có thể được kiểm tra bằng cách sử dụng `aggregation_bits` vì điều này cung cấp chỉ mục của mỗi trình xác thực trong ủy ban của họ (có ID được cung cấp trong `dữ liệu`) có thể được sử dụng để truy vấn các chữ ký riêng lẻ.

Trong mỗi tham số epoch, 16 trình xác thực trong mỗi mạng con được chọn làm `bộ tổng hợp`. Các bộ tổng hợp thu thập tất cả các chứng thực mà họ nghe được qua mạng gossip có `dữ liệu` tương đương với dữ liệu của chính họ. Người gửi của mỗi chứng thực phù hợp được ghi lại trong `aggregation_bits`. Sau đó, các bộ tổng hợp phát tổng hợp chứng thực tới mạng rộng hơn.

Khi một trình xác thực được chọn làm người đề xuất khối, họ sẽ đóng gói các chứng thực tổng hợp từ các mạng con cho đến slot mới nhất trong khối mới.

### Vòng đời đưa vào của chứng thực {#attestation-inclusion-lifecycle}

1. Tạo
2. Truyền bá
3. Tổng hợp
4. Truyền bá
5. Đưa vào

Vòng đời chứng thực được phác thảo trong sơ đồ dưới đây:

![vòng đời chứng thực](./attestation_schematic.png)

## Phần thưởng {#rewards}

Các trình xác thực được thưởng khi gửi chứng thực. Phần thưởng chứng thực phụ thuộc vào các cờ tham gia (nguồn, đích và đầu), phần thưởng cơ bản và tỷ lệ tham gia.

Mỗi cờ tham gia có thể là đúng hoặc sai, tùy thuộc vào chứng thực đã gửi và độ trễ đưa vào của nó.

Tình huống tốt nhất xảy ra khi cả ba cờ đều đúng, trong trường hợp đó, một trình xác thực sẽ kiếm được (cho mỗi cờ đúng):

`phần thưởng += phần thưởng cơ bản * trọng số cờ * tỷ lệ chứng thực cờ / 64`

Tỷ lệ chứng thực cờ được đo bằng cách sử dụng tổng số dư hiệu dụng của tất cả các trình xác thực chứng thực cho cờ đã cho so với tổng số dư hiệu dụng đang hoạt động.

### Phần thưởng cơ bản {#base-reward}

Phần thưởng cơ bản được tính theo số lượng trình xác thực chứng thực và số dư ether đã đặt cọc hiệu dụng của họ:

`phần thưởng cơ bản = số dư hiệu dụng của trình xác thực x 2^6 / SQRT(Số dư hiệu dụng của tất cả các trình xác thực đang hoạt động)`

#### Độ trễ đưa vào {#inclusion-delay}

Tại thời điểm các trình xác thực bỏ phiếu cho đầu chuỗi (`khối n`), `khối n+1` vẫn chưa được đề xuất. Do đó, các chứng thực tự nhiên được đưa vào **sau một khối**, vì vậy tất cả các chứng thực đã bỏ phiếu cho `khối n` là đầu chuỗi đều được đưa vào `khối n+1`, và **độ trễ đưa vào** là 1. Nếu độ trễ đưa vào tăng gấp đôi thành hai slot, phần thưởng chứng thực sẽ giảm một nửa, vì để tính phần thưởng chứng thực, phần thưởng cơ bản được nhân với nghịch đảo của độ trễ đưa vào.

### Các kịch bản chứng thực {#attestation-scenarios}

#### Thiếu Trình xác thực bỏ phiếu {#missing-voting-validator}

Các trình xác thực có tối đa 1 tham số epoch để gửi chứng thực của họ. Nếu chứng thực bị bỏ lỡ trong tham số epoch 0, họ có thể gửi nó với độ trễ đưa vào trong tham số epoch 1.

#### Thiếu Bộ tổng hợp {#missing-aggregator}

Tổng cộng có 16 Bộ tổng hợp cho mỗi tham số epoch. Ngoài ra, các trình xác thực ngẫu nhiên đăng ký **hai mạng con trong 256 tham số epoch** và đóng vai trò dự phòng trong trường hợp thiếu các bộ tổng hợp.

#### Thiếu người đề xuất khối {#missing-block-proposer}

Lưu ý rằng trong một số trường hợp, một bộ tổng hợp may mắn cũng có thể trở thành người đề xuất khối. Nếu chứng thực không được đưa vào vì người đề xuất khối đã mất tích, người đề xuất khối tiếp theo sẽ lấy chứng thực tổng hợp và đưa nó vào khối tiếp theo. Tuy nhiên, **độ trễ đưa vào** sẽ tăng thêm một.

## Đọc thêm {#further-reading}

- [Các chứng thực trong đặc tả đồng thuận có chú thích của Vitalik](https://github.com/ethereum/annotated-spec/blob/master/phase0/beacon-chain.md#attestationdata)
- [Các chứng thực trong eth2book.info](https://eth2book.info/capella/part3/containers/dependencies/#attestationdata)

_Biết về nguồn lực cộng đồng đã giúp đỡ bạn? Chỉnh sửa trang này và bổ sung!_
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
---
title: "Khối đề xuất"
description: "Giải thích cách các khối được đề xuất trong Ethereum bằng chứng cổ phần."
lang: vi
---

Các khối là những đơn vị cơ bản của chuỗi khối. Các khối là những đơn vị thông tin riêng biệt được chuyển qua lại giữa các nút, được đồng thuận và được 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 {#prerequisites}

Việc đề xuất khối là một phần của giao thức bằng chứng cổ phần. Để giúp bạn hiểu trang này, chúng tôi khuyên bạn nên đọc về [bằng chứng cổ phần](/developers/docs/consensus-mechanisms/pos/) và [kiến trúc khối](/developers/docs/blocks/).

## Ai tạo ra các khối? {#who-produces-blocks}

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ọ và đã ký gửi ít nhất 32 ETH vào hợp đồng ký gửi. Tuy nhiên, mỗi trình xác thực chỉ thỉnh thoảng chịu trách nhiệm đề xuất một khối. Ethereum đo lường thời gian bằng slot và epoch. Mỗi slot dài mười hai giây, và 32 slot (6,4 phút) tạo thành một epoch. Mỗi slot 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 {#random-selection}

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 slot. Không có cái gọi là sự ngẫu nhiên thực sự trong một chuỗi khối bở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 sự đồng thuận. Thay vào đó, mục đích là làm cho quy trình lựa chọn trình xác thực không thể đoán trước được. Sự ngẫu nhiên được thực hiện 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 hàm băm từ người đề xuất khối với một hạt giống được cập nhật mỗi khối. Giá trị này được sử dụng để chọn một người xác thực cụ thể từ tổng bộ người xác thực. Việc lựa chọn trình xác thực được ấn định trước hai epoch như một cách để bảo vệ chống lại một số loại thao túng hạt giống nhất định.

Mặc dù các trình xác thực thêm vào RANDAO trong mỗi slot, giá trị RANDAO toàn cục chỉ được cập nhật một lần mỗi epoch. Để 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ố slot để tạo ra một giá trị duy nhất trong mỗi slot. 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` (với `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 quả của mỗi trình xác thực. Số dư hiệu quả tối đa là 32 ETH (điều này có nghĩa là `số dư < 32 ETH` dẫn đến trọng số thấp hơn so với `số dư == 32 ETH`, nhưng `số dư > 32 ETH` không dẫn đến trọng số cao hơn so với `số dư == 32 ETH`).

Chỉ một người đề xuất khối được chọn trong mỗi slot. 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 slot dành riêng cho họ. Việc tạo hai khối cho cùng một slot là một hành vi có thể bị cắt giảm, thường được gọi là "nhập nhằng".

## Khối được tạo ra như thế nào? {#how-is-a-block-created}

Người đề xuất khối dự kiến sẽ phát một khối beacon đã ký, khối này xây dựng trên đỉnh đầu gần đây nhất của chuỗi theo góc nhìn của thuật toán lựa chọn phân nhánh do họ tự chạy cục bộ. Thuật toán lựa chọn phân nhánh áp dụng bất kỳ sự chứng thực nào đang chờ trong hàng đợi còn sót lại từ slot trước, sau đó tìm khối có trọng lượng 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ộ và góc nhìn về chuỗi của riêng nó. Nội dung của khối được hiển thị trong đoạn mã dưới đây:

```rust
class BeaconBlockBody(Container):
randao_reveal: BLSSignature
eth1_data: Eth1Data
graffiti: Bytes32
proposer_slashings: List[ProposerSlashing, MAX_PROPOSER_SLASHINGS]
attester_slashings: List[AttesterSlashing, MAX_ATTESTER_SLASHINGS]
attestations: List[Attestation, MAX_ATTESTATIONS]
deposits: List[Deposit, MAX_DEPOSITS]
voluntary_exits: List[SignedVoluntaryExit, MAX_VOLUNTARY_EXITS]
sync_aggregate: SyncAggregate
execution_payload: ExecutionPayload
```

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 cách ký vào số epoch 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 ký gửi, bao gồm gốc của cây Merkle ký gửi và tổng số lượng ký gửi cho phép các khoản ký gửi mới được xác minh. `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_slashings` và `attester_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 đã thực hiện các hành vi có thể bị cắt giảm theo góc nhìn của người đề xuất về chuỗi. `deposits` là một danh sách các khoản ký gửi của trình xác thực mới mà người đề xuất khối biết, và `voluntary_exits` là một danh sách các trình xác thực muốn thoát mà người đề xuất khối đã nghe nói đến trên mạng gossip 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 chuyển qua lại 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 vào 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 nêu trong Sách vàng Ethereum, ngoại trừ việc không 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 gossip của riêng mình. Các giao dịch này được thực thi cục bộ để tạo ra một cây trie trạng thái được cập nhật, được gọi là trạng thái sau. Các giao dịch được bao gồm trong `execution_payload` dưới dạng một danh sách được gọi là `transactions` và trạng thái sau được cung cấp trong trường `state-root`.

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

Đọc thêm về [cấu trúc của các khối](/developers/docs/blocks).

## Điều gì xảy ra với khối? {#what-happens-to-blocks}

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 đến các máy ngang hàng qua mạng gossip 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 rằng khối đó có khối cha chính xác, tương ứng với slot chính xác, chỉ số người đề xuất là chỉ số được mong đợi, việc tiết lộ RANDAO là hợp lệ và người đề xuất không bị cắt giảm. `execution_payload` được tách ra, 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 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 mình. Quy trình sau đó bắt đầu lại trong slot tiếp theo.

## Phần thưởng khối {#block-rewards}

Người đề xuất khối nhận được thanh toán cho công việc của họ. Có một `base_reward` được tính 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 quả của chúng. Người đề xuất khối sau đó nhận được một phần của `base_reward` cho mỗi sự chứng thực hợp lệ có 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. Cũng có một phần thưởng cho việc báo cáo các trình xác thực nên bị cắt giảm, bằng `1/512 * số dư hiệu quả` cho mỗi trình xác thực bị cắt giảm.

[Thông tin thêm về phần thưởng và hình phạt](/developers/docs/consensus-mechanisms/pos/rewards-and-penalties)

## Đọc thêm {#further-reading}

- [Giới thiệu về các khối](/developers/docs/blocks/)
- [Giới thiệu về Cơ chế bảo chứng cổ phần](/developers/docs/consensus-mechanisms/pos/)
- [Thông số kỹ thuật đồng thuận của Ethereum](https://github.com/ethereum/consensus-specs)
- [Giới thiệu về Gasper](/developers/docs/consensus-mechanisms/pos/gasper/)
- [Nâng cấp Ethereum](https://eth2book.info/)
Loading