Block building in the presence of epoch change

Đang mở
#515 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
35/100
Loại issue
Lỗi
Độ rõ ràng
Cần làm rõ
Mức độ hoạt động
Ít trao đổi
Công nghệ
go
Lĩnh vực
distributed-systems

Hướng nghiên cứu

Bắt đầu bằng cách theo dõi hành vi vận động cho block rỗng của block builder và việc thu thập phê duyệt thay đổi epoch được mô tả trong issue. Kiểm tra cách các node không khả dụng của epoch tiếp theo ảnh hưởng đến tiến trình phê duyệt, sau đó xác định và kiểm chứng hành vi tránh việc tạo block vô thời hạn mà không ngăn cản một thay đổi epoch có thể khôi phục.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

In our version of Simplex, a node only builds a block in one of two cases:

  1. Transactions exist in the mempool of the VM and a block should be built to contain them
  2. The block builder detects that an epoch change should occur, or is ongoing, so it builds a block to initiate or drive forward the epoch change.

This means that a block is not built if there is nothing in the mempool or there is no need to initiate an epoch change.

For (1), if a node that is not designated as the leader of the current round detects that transactions exist in the mempool for too long without a block being built and disseminated, it starts lobbying to notarize an empty block, which should make the nodes move to the next round and this will designate a new leader.

For (2), https://github.com/ava-labs/Simplex/pull/514 introduces a mechanism in which a node that is not the leader of the round also starts lobbying to notarize an empty block if a block isn't being built and disseminated for too long and the previous block indicates that there is an ongoing epoch change, or that the previous block doesn't indicate that, but an epoch change should be initiated.

Completing the epoch change requires gathering approvals from at least a quorum of nodes of the next epoch.

However, if there are not enough approvals to collect because the nodes of the next epoch are not available yet (e.g they are still syncing the P-chain) it would mean that blocks will be built indefinitely until then.

We could make the epoch change and the mechanism introduced in (2) smarter and only build a block or expect one to be build in case we know that we can drive forward the approval collection, but that's a problem for the future.

Ngôn ngữ chính
Go
Star
22
Fork
4
Merge trung bình
2 ngày 4 giờ
Pull request đã merge (30 ngày)
43

Chuẩn bị môi trường

Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của ava-labs/Simplex

Tất cả issue của ava-labs/Simplex

Issue tương tự

Thêm issue về Go

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.