Cảm ơn Jochem Brouwer, Sina Mahmoodi, Thomas Thiery, Rahul Guha, Carlos Perez, Guillaume Ballet đã xem xét và phản hồi.
Tóm tắt:
- Bài viết này cung cấp một góc nhìn rộng về các giải pháp cho một kịch bản xấu nhất đã biết liên quan đến L1 snarkification: chia nhỏ bytecode.
- Các thay đổi về khả năng mở rộng L1 và các thay đổi giao thức khác làm trầm trọng thêm kịch bản xấu nhất này. Mặc dù những thay đổi này phải được tiếp tục, điều quan trọng là bắt đầu suy nghĩ về cách giải quyết các thách thức SNARKification trong tương lai.
- Theo thời gian và sự phát triển của Ethereum, có sự đa dạng ngày càng tăng về quan điểm giữa các nhà phát triển và nhà nghiên cứu cốt lõi liên quan đến các rủi ro của các thay đổi giao thức quan trọng, do đó việc khám phá sâu sắc các chi tiết của mọi giải pháp tiềm năng là rất quan trọng.
- Mục tiêu của tài liệu này là:
- Khảo sát các giải pháp tiềm năng cho vấn đề này, từ ít phức tạp nhất đến phức tạp nhất, nêu bật những sự đánh đổi riêng của mỗi giải pháp.
- Nâng cao nhận thức, khuyến khích nhiều người xem xét và đề xuất các giải pháp tốt hơn.
- Điều này không yêu cầu hành động ngay lập tức (ví dụ: "Glamsterdam") — ngay cả các giải pháp dường như đơn giản cũng cần phân tích kỹ để xác định con đường tốt nhất.
Tài liệu này khám phá các giải pháp cho kịch bản xấu nhất của việc chứng minh block: bytecode của hợp đồng được yêu cầu trong các dấu vết thực thi. Đây là một vấn đề lâu dài, với nhiều giải pháp được đề xuất. Theo thời gian, các thay đổi giao thức được đánh giá khác nhau về tác động UX và rủi ro, do đó việc hiểu chi tiết hơn về các sự đánh đổi là hữu ích.
(Phần còn lại của bản dịch tương tự, tuân theo các quy tắc dịch đã được đặt ra)- Hiệu quả sử dụng: các khối lớn hơn có nghĩa là ít khối hơn để cung cấp trong chứng nhận,ưng làm tăng số byte lãng phí vì không phải tất cả các byte từ các khối đều được sdsửng trong dấu vếtt thực thi.
- Cả hai bộ chia đều đề xuất các khối mã 32 byte, điều này có thể là do chúng được dự định có cùng kích thước với các ô lưu trữ.
- Hiệngệlưu trữ: mức độ chi phí lưu trữ được ttạo ra bởi việc chia khlà bao nhiêu?<>ộmãã 31 byte: 1//31= 3.2% chi phí phụ trội
Are chunks được Merkelized như th?h3>
Đã cho một mã bytecode được chia, chúng tac đch cácc khứcối được merkle hóa đa có thể tạo chứng cho bytecode một phần được truyc cấựchi p>Chúng ta cũng phải bao gồm codeHashHash hiện tại và một trường codeSize mới đ hỗ trợ hiệu quả các opcode EXTCODE*. Việc này khá đdàng,, vì vậy tôi sẽ tập trung duy nhất vào khó khăn chính: merkelizing các khối mã.
Strong>Nơi để merkelizing các khmã?
Sau đây là một số chiến lược về nơi chúng sẽ được merkelized
- Bên trongTện strong ul>ĐiĐxuất trong EIP-2926, đặc bilàêu mục
- Các khối mã tự nhiên được loại bỏ trùng lặp vì chúng dùng chung gốli li ul>
- Độ phức tạp thấ>
- >Nhược điểm:
- Nóữuyphhiện tại như RLP và keccak, có thể tốốt hơn là giới thiệu thêm độ phức tạp thông số kỹ thuật.
- Các đề xuất hiện tại không loại bỏ trùng lặp các khối, nhưng điều này có thể thay đổi. Được đóng gói với nhiều thay đổi khác có thể tăng nguy cơ lỗi đồng thuận.
- Một cây mới chỉdànhnh cho các khối mã được giới thiệu. Cây MPT hiện t�không bị ảnh hưởng.
- Ưu điểm:
- Tùy chọn, nó cho phép linh hoạt trong việc thiết kế cây (ví dụ: bậc khác hoặc hàm hash khác).
- Loại bỏ trùng lặp là tùy chọn, phụ thuộc vào việc xác định khóa. Một gốc cây bổsung block header.
Merkelization của của mã mới và hiện tại được xử lý như thế nào?
Quá trình merkelizing mhi tạợp mới là đơn giản, vì EIP-4762 đã nêu ra cấu trúc để tính phí gas cho mỗi khối mã được chèn.
Thách thức chính nằm merkelizing mã hiện,, ít nhất là 15GiB dữ liệu được loại bỏ trùng lặp. Điâyều thểỉằng việc thực hiện tệnại thời đi. Dưới đây là một số ý tưởng:
- Chuyển đổi theo yêu cầu
- Chỉ khi một giao dịch tương tvới hợp đchưa được chia ththì mớiới chia. Người gửi giao dịch trả tiền cho việc chia mã.
- Ưu điểm:
- Rất dễ dàng cho giao thức vì nó không phải chuyển đổi bytecode hiện tại cho đến khi nó được sử dụng.
- Cây đích không bị ô nhiễm bởi các hợp đồng có thể bao s�dụng>Ul>ượIán tiếực hiviệcạing một sốợp đồng.
Việc chia mã của một hđđược trả bởi giao dịch đầu tiên tương tácó thể là vấn đề UX vì việc ai trả là không thự thđoán.<Ại thm một số khối tiếp theo, chúng ta có thể thấy đỉnh gas ch�a�ên quan đến việc chia chia mã. - Phương pháp này có thể để lại mã bytecode mãi chưa chuyển đổi.
- <>tương nhưuyiâyớii chúng ta sẽ xác đnh một quy trình trìnhên mỗi khối, di chuyển mã đang chờ xử lý cho đến khi tất cả mã được chia. >u:<>Không có vvấn đề UX vì người dùng không phải trả tiền cho việc chia mã.
- Không có đỉnh gas hay sự gián đoạn phí cơ sở.
- Việc chuyển đổi từng khối sang khphépchúng ta phát hiện bất kỳ lỗi nào ở m>Nó thêm độ phức tạp vào thông số kỹ thuật cho một nhiệm vụ chỉ thực hiện một lần. uyOfflineChuyển đổi<><><>Đây là phương pháp chuyển đổi được đề xuất trong E>">EIP-2926
- Ưu điểm:
- Không có vấn đề UX vì người dùng không phải trả tiền cho việc chia mã.
- Không có đỉnh gas hay sự gián đoạn phí cơ sở.
- Tại thời fork hệ thống ngay lứcuysang trạng thái mong muốn.
Việcc chuyển diển xảy ra ngoài mạng, vì vậy cần ước tính chính xác thời gian fork.



