Danh sách truy cập cấp Block (BALs)
[Phần còn lại của văn bản được dịch tương tự, giữ nguyên các thẻ HTML và các từ chuyên ngành như đã được hướng dẫn ở trên]Xin chân thành cảm ơn Francesco, Jochem, Vitalik, Ignacio, Gary, Dankrad, Carl, Ansgar, và Tim về phản hồi và đánh giá.
# Bí danh kiểuĐịa chỉ = ByteVector(20)ChỉMục Tx = uint64Thay đổi Số dư = ByteVector(12) # được ký, mã hóa bù hai# Hằng sốSỐ_TX_TỐI_ĐA = 30_000SỐ_TÀI_KHOẢN_TỐI_ĐA = 70_000 # 630m / 9300 (chi phí gọi đến tài khoản không trống có giá trị)# Các containerclass ThayĐổiSốDư(Container):chỉ_mục_tx: ChỉMục Txthay_đổi: Thay đổi Số dư # số nguyên được ký, được mã hóa dưới dạng vector 12 byteclass ChênhLệchSốDưTàiKhoản(Container):địa_chỉ: Địa chỉthay_đổi: List[ThayĐổiSốDư, SỐ_TX_TỐI_ĐA]ChênhLệchSốDư = List[ChênhLệchSốDưTàiKhoản, SỐ_TÀI_KHOẢN_TỐI_ĐA]- Loại bỏ trùng lặp theo địa chỉ.
- Mỗi tuple liệt kê thay đổi số dư chính xác cho mỗi giao dịch có liên quan.
Ví dụ:
[('0xdead...beef',[(0, -1000000000000000000), # tx 0: gửi 1 ETH(2, +500000000000000000) # tx 2: nhận 0.5 ETH]),# ... các mục bổ sung]Trạng thái BALs
Cấu trúc này tách hoàn toàn việc thực thi khỏi trạng thái, cho phép các validator bỏ qua bất kỳ tra cứu đĩa hoặc trie nào trong quá trình thực thi, chỉ dựa vào dữ liệu được cung cấp trong block. Danh sách pre_accesses cung cấp các giá trị ban đầu của tất cả các ô được truy cập trước khi block bắt đầu, trong khi tx_accesses theo dõi các mẫu truy cập từng giao dịch và các giá trị sau khi truy cập, cho phép thực thi và xác minh song song chi tiết.
- Lớn hơn về kích thước
- Thời gian thực thi là
max(parallel IO, parallel EVM).
Một đối tượng SSZ hiệu quả có thể trông như sau:
[Phần còn lại của văn bản được dịch tương tự, giữ nguyên các thẻ HTML và code block]



