Đề xuất cải tiến Ethereum (EIP)-8077: Báo cáo mô phỏng khoảng cách Nonce
Tóm tắt
Báo cáo này trình bày kết quả mô phỏng Monte Carlo phân tích tần suất xuất hiện các khoảng trống Nonce trong môi trường mempool blob phân mảnh. Khoảng trống Nonce xảy ra khi các giao dịch blob liên tiếp (loại 3) từ cùng một người gửi được gán cho các phân mảnh khác nhau trong cùng một slot, có khả năng gây ra các vấn đề về thứ tự giao dịch cho người đề xuất Block .
Kết luận chính: Với việc phân bổ Mảnh ngẫu nhiên, một tỷ lệ đáng kể các giao dịch blob (lên đến ~36% trong trường hợp xấu nhất) bị ảnh hưởng bởi khoảng trống Nonce . Tần suất này phụ thuộc vào cả số lượng phân vùng và độ lệch của phân phối giao dịch giữa các bên gửi. Điều này nhấn mạnh sự cần thiết phải cải thiện các cơ chế thông báo giao dịch như đã đề xuất trong Đề xuất cải tiến Ethereum (EIP)-8077.
1. Động lực: Hỗ trợ Đề xuất cải tiến Ethereum (EIP)-8077
1.1 Phạm vi: Giao dịch Blob và Phân mảnh Mempool
Phân tích này tập trung hoàn toàn vào các giao dịch loại 3 (giao dịch blob) được giới thiệu trong Đề xuất cải tiến Ethereum (EIP)-4844. Chúng tôi đặc biệt xem xét việc phân mảnh của mempool blob thay vì mempool giao dịch thông thường vì những lý do sau:
- Kích thước blob : Mỗi blob có kích thước 128KB, lớn hơn đáng kể so với các giao dịch thông thường (thường nhỏ hơn 1KB).
- Mức tiêu thụ băng thông : Sự lan truyền dữ liệu theo kiểu "blob" chiếm ưu thế trong việc sử dụng băng thông mạng.
- Áp lực về khả năng mở rộng : Khi việc sử dụng L2 ngày càng phổ biến, nhu cầu về blob cũng tăng lên, khiến việc phân mảnh mempool trở nên thiết yếu.
- Người gửi tập trung : Các giao dịch khối dữ liệu chủ yếu đến từ các bộ điều khiển L2 (Base, Optimism, Arbitrum, ETC), tạo ra sự phân bố người gửi rất lệch lạc.
Việc phân chia mempool blob cho phép các node đăng ký nhận một tập hợp con các blob, giảm yêu cầu băng thông trong khi vẫn duy trì kết nối mạng. Tuy nhiên, điều này lại gây ra vấn đề khoảng trống Nonce mà nghiên cứu này định lượng.
1.2 Vấn đề
Đề xuất cải tiến Ethereum (EIP)-8077 đề xuất mở rộng giao thức devp2p của Ethereum để bao gồm thông tin địa chỉ người gửi và Nonce trong các thông báo giao dịch. Nghiên cứu mô phỏng này cung cấp bằng chứng định lượng về lý do tại sao cải tiến này là cần thiết.
Trong một mempool blob phân mảnh, các giao dịch blob từ cùng một người gửi (ví dụ: bộ tuần tự L2) có thể được phân phối trên các phân mảnh khác nhau hoặc đến vào các thời điểm khác nhau. Khi một người đề xuất Block nhận được các giao dịch blob, họ cần phải:
- Sắp xếp các giao dịch chính xác theo Nonce cho mỗi người gửi.
- Xác định các khoảng trống Nonce có thể khiến các giao dịch tạm thời không được tính vào.
- Ưu tiên việc lấy các giao dịch lấp đầy khoảng trống hơn là các giao dịch tạo ra khoảng trống mới.
Nếu không có thông tin người gửi và Nonce trong thông báo, các nút phải:
- Thực hiện các giao dịch một cách mù quáng, tiềm ẩn rủi ro thiếu hụt Nonce.
- Sử dụng phương pháp thử và sai kém hiệu quả để lấp đầy khoảng trống.
- Duy trì bộ nhớ đệm Hash giao dịch lớn.
- Bỏ lỡ cơ hội tìm nạp có chọn lọc theo địa chỉ nguồn.
1.3 Tại sao nghiên cứu này lại quan trọng
Mô phỏng này định lượng quy mô của vấn đề khoảng cách Nonce trong điều kiện thực tế:
- Trong các kịch bản có độ lệch cao và phân mảnh lớn, có thể ảnh hưởng đến tối đa 36% giao dịch do sự chênh lệch Nonce.
- Độ lệch ảnh hưởng đáng kể đến tần suất khoảng trống - các mạng có người gửi chiếm ưu thế (các trình sắp xếp L2 chính như Base, Optimism, Arbitrum) có tỷ lệ khoảng trống cao hơn.
- Phân tích cùng một vị trí tập trung vào những gì quan trọng đối với người đề xuất - khoảng trống trong một giai đoạn xây dựng Block duy nhất.
Những phát hiện này chứng minh rằng khi Ethereum mở rộng quy mô (nhiều phân vùng hơn, Xuất lượng cao hơn), việc truy xuất giao dịch thông minh trở nên rất quan trọng. Siêu dữ liệu của Đề xuất cải tiến Ethereum (EIP)-8077 cho phép các nút đưa ra quyết định sáng suốt về việc truy xuất giao dịch nào, giảm thiểu lãng phí băng thông và cải thiện tính nhất quán của mempool.
1.4 Ý nghĩa quan trọng đối với Đề xuất cải tiến Ethereum (EIP)-8077
| Tìm kiếm | Ý nghĩa đối với Đề xuất cải tiến Ethereum (EIP)-8077 |
|---|---|
| Tỷ lệ chênh lệch lên đến 36% | Một phần đáng kể các giao dịch blob bị ảnh hưởng khi không có tính năng tìm nạp thông minh. |
| Độ lệch rất quan trọng | Các máy tạo trình tự L2 công suất lớn (Base, Optimism, Arbitrum) bị ảnh hưởng không cân xứng. |
| Các khe hở cùng rãnh là hiện tượng phổ biến. | Người đề xuất cần thông tin Nonce theo thời gian thực để xây dựng Block hiệu quả. |
| Càng nhiều mảnh vỡ = càng nhiều khoảng trống | Vấn đề trở nên nghiêm trọng hơn khi việc phân mảnh mempool blob gia tăng. |
2. Các thông số mô phỏng
2.1 Các tham số có thể cấu hình
| Tham số | Giá trị | Sự miêu tả |
|---|---|---|
| SỐ_KHE | 216.000 | Các khung giờ tương ứng với 30 ngày. |
| AVG_TX_PER_SLOT | 14 | Số giao dịch trung bình mục tiêu trên mỗi vị trí |
| MAX_TX_PER_SLOT | 21 | Số lượng giao dịch tối đa trên mỗi vị trí (dung lượng chuỗi ) |
| NUM_SENDERS | 100 | Số lượng người gửi duy nhất |
2.2 Giá trị dẫn xuất
| Số liệu | Giá trị |
|---|---|
| Thời gian mô phỏng | 30 ngày |
| Số lượng khung giờ | 300 |
| Số Số giao dịch mỗi giờ | 6.300 |
| Tổng số giao dịch (xấp xỉ) | ~3 triệu |
2.3 Cấu hình Mảnh
Sáu cấu hình Mảnh đã được thử nghiệm:
| Cấu hình | Số lượng mảnh vỡ |
|---|---|
| 1 | 1 (đường cơ sở) |
| 2 | 2 |
| 3 | 4 |
| 4 | 8 |
| 5 | 16 |
| 6 | 32 |
2.4 Cấu hình độ lệch
Sáu mô hình phân phối người gửi được mô phỏng bằng cách sử dụng các hàm suy giảm theo cấp số mũ P(i) = exp(-λ * i) :
| Mức độ lệch | Tốc độ phân rã (λ) | Sự miêu tả |
|---|---|---|
| Rất cao | 0,15 | Tập trung cao độ vào một vài người gửi (ví dụ: các L2 chính như Base, Optimism) |
| Cao | 0,10 | Nồng độ cao (ví dụ: nhiều bộ giải trình tự L2 đang hoạt động) |
| Trung bình cao | 0,07 | Nồng độ trung bình-cao |
| Trung bình thấp | 0,04 | Nồng độ trung bình thấp |
| Thấp | 0,02 | Nồng độ nhẹ |
| Đồng phục | 0,00 | Xác suất như nhau cho tất cả người gửi |
3. Phương pháp luận
3.1 Phân bổ giao dịch theo thời gian
Các giao dịch được phân bổ trong suốt thời gian mô phỏng theo các mô hình ngẫu nhiên, không tuần hoàn để mô phỏng hoạt động mạng thực tế:
- Nhiễu cơ bản ngẫu nhiên : Mỗi vị trí bắt đầu với tỷ lệ giao dịch ngẫu nhiên tập trung xung quanh mức trung bình mục tiêu.
- Các đợt hoạt động ngẫu nhiên : 200 đợt hoạt động ngẫu nhiên với thời lượng khác nhau (50-2000 vị trí) và cường độ khác nhau (1,2x-2,0x)
- Khoảng thời gian nghỉ ngẫu nhiên : 100 khoảng thời gian hoạt động thấp ngẫu nhiên với thời lượng khác nhau (100-1500 vị trí) và cường độ khác nhau (0,3x-0,7x)
- Giới hạn dung lượng : Tất cả các khe cắm đều bị giới hạn ở mức MAX_TX_PER_SLOT
Hình 1: Tỷ lệ giao dịch trong suốt thời gian mô phỏng 30 ngày, thể hiện các đợt tăng giảm ngẫu nhiên (không có tính chu kỳ nhân tạo).
3.2 Phân phối người gửi
Xác suất một giao dịch được gửi bởi người gửi i tuân theo phân phối mũ:
P (sender = i) = exp (-λ * i) / Σ exp (-λ * j) Trong đó λ là tốc độ suy giảm kiểm soát độ lệch.
Hình 2: Phân bố xác suất thể hiện sự biến đổi tần suất giao dịch giữa các người gửi khác nhau ở các mức độ lệch khác nhau.
Hình 3: Số lượng giao dịch tuyệt đối trên mỗi người gửi cho từng loại phân phối.
3.3 Khoảng cách giao dịch giữa cùng một người gửi
Một yếu tố quan trọng ảnh hưởng đến tần suất khoảng trống Nonce là tần suất cùng một người gửi thực hiện nhiều giao dịch trong cùng một khoảng thời gian. Điều này phụ thuộc vào độ lệch của phân phối.
Hình 4: Phân bố khoảng cách giữa các giao dịch liên tiếp từ cùng một người gửi. Phân bố càng lệch thì khoảng cách càng ngắn (càng nhiều cặp giao dịch có cùng vị trí).
3.4 Phân Mảnh
Mỗi giao dịch được gán cho một Mảnh một cách ngẫu nhiên đồng đều :
shard = random.randint( 0 , num_shards - 1 )Điều này mô phỏng một kịch bản trong đó việc phân bổ Mảnh không phụ thuộc vào danh tính người gửi.
3.5 Đo khoảng cách Nonce
Quyết định thiết kế quan trọng : Chúng tôi chỉ tính khoảng thời gian Nonce giữa các giao dịch liên tiếp của cùng một người gửi xảy ra trong cùng một slot . Điều này là vì:
- Các vị trí khác nhau được tạo bởi những người đề xuất khác nhau.
- Người đề xuất chỉ quan tâm đến khoảng trống Nonce trong Block của riêng họ.
- Khoảng cách giữa các rãnh ngang không liên quan đến việc xây dựng Block.
Chỉ số chúng tôi đo lường là:
Nonce Gap Frequency = (Shard Switches in Same-Slot Pairs) / (Total Transactions)Con số này thể hiện tỷ lệ phần trăm của tất cả các giao dịch liên quan đến khoảng trống Nonce cùng vị trí .
4. Kết quả
4.1 Bản đồ nhiệt tần số khoảng trống Nonce
Hình 5: Bản đồ nhiệt hiển thị tần suất khoảng cách Nonce (tính theo phần trăm tổng số giao dịch) trên tất cả các cấu hình Mảnh và độ lệch.
4.2 Kết quả số
| Mảnh vỡ | Rất cao | Cao | Trung bình cao | Trung bình thấp | Thấp | Đồng phục |
|---|---|---|---|---|---|---|
| 1 | 0,0% | 0,0% | 0,0% | 0,0% | 0,0% | 0,0% |
| 2 | 18,6% | 13,7% | 10,8% | 6,9% | 4,6% | 3,6% |
| 4 | 27,6% | 21,1% | 16,1% | 10,5% | 7,0% | 5,5% |
| 8 | 32,3% | 24,4% | 19,0% | 12,2% | 8,1% | 6,4% |
| 16 | 34,6% | 26,0% | 19,8% | 12,8% | 8,8% | 6,7% |
| 32 | 36,0% | 27,2% | 20,9% | 13,5% | 9,1% | 6,9% |
4.3 Các mô hình chính
- Mô hình dọc (Nhiều mảnh vỡ hơn) : Việc tăng số lượng mảnh vỡ sẽ làm tăng tần suất xuất hiện khe hở, nhưng hiệu quả sẽ giảm dần.
- Mẫu hình ngang (Độ lệch lớn hơn) : Độ lệch cao hơn làm tăng đáng kể tần suất khoảng trống.
- Trường hợp xấu nhất : Độ lệch rất cao + 32 phân mảnh = ~36% giao dịch bị ảnh hưởng
- Trường hợp tốt nhất : Phân bổ đồng đều + 2 phân mảnh = ~3,6% số giao dịch bị ảnh hưởng
5. Phân tích
5.1 Tại sao độ lệch lại quan trọng
Trái ngược với giả thuyết ban đầu của chúng tôi, độ lệch ảnh hưởng đáng kể đến tần suất khoảng trống Nonce . Điều này là do:
- Phân bố không đồng đều khiến các giao dịch tập trung vào ít người gửi hơn.
- Những người gửi tập trung có nhiều cặp liên tiếp cùng vị trí hơn.
- Càng nhiều cặp vị trí giống nhau = càng nhiều cơ hội tạo ra khoảng trống Nonce
Với phân bố đồng đều, các giao dịch blob được trải rộng trên 100 người gửi, khiến cho các cặp liên tiếp cùng vị trí từ cùng một người gửi trở nên hiếm gặp. Với độ lệch rất cao (phản ánh một mạng lưới bị chi phối bởi các trình tự L2 chính như Base), một vài người gửi chiếm ưu thế tạo ra nhiều cặp liên tiếp cùng vị trí, mỗi cặp có xác suất (N-1)/N là một khoảng trống.
5.2 Tại sao điều này hỗ trợ Đề xuất cải tiến Ethereum (EIP)-8077
| Quan sát | Lợi ích Đề xuất cải tiến Ethereum (EIP)-8077 |
|---|---|
| Các bộ tạo trình tự L2 công suất lớn tạo ra nhiều khoảng trống hơn. | Các nút có thể ưu tiên việc lấy các chuỗi Nonce hoàn chỉnh cho các L2 chính. |
| Khoảng trống giữa các khe ảnh hưởng đến việc xây dựng Block. | Người đề xuất cần thông tin Nonce ngay lập tức để xây dựng các khối hợp lệ. |
| Tần suất khoảng trống thay đổi tùy thuộc vào người gửi. | Việc tìm kiếm có chọn lọc theo địa chỉ người gửi trở nên hữu ích. |
| Có tới 36% giao dịch blob bị ảnh hưởng. | Việc sử dụng tính năng tìm nạp thông minh có thể mang lại hiệu quả đáng kể. |
5.3 Ý nghĩa đối với các điều kiện mạng khác nhau
| Kịch bản | Tỷ lệ chênh lệch | Giá trị Đề xuất cải tiến Ethereum (EIP)-8077 |
|---|---|---|
| L2 chiếm ưu thế (độ lệch cao, nhiều mảnh vỡ) | 27-36% | Rất quan trọng - các bộ điều khiển trình tự L2 chính cần được ưu tiên xử lý. |
| Hệ sinh thái L2 hỗn hợp (độ lệch cao, ít phân mảnh) | 14-19% | Cao - nhiều L2 cần đặt hàng nhất quán |
| Các nguồn gửi dữ liệu đa dạng (độ lệch thấp) | 4-9% | Mức độ vừa phải - vẫn có lợi cho hiệu quả làm việc |
| Mảnh đơn | 0% | Thấp - không phân mảnh có nghĩa là không có khoảng trống |
6. Kết luận
6.1 Những phát hiện chính
Khoảng trống Nonce là một vấn đề đáng kể : Có tới 36% giao dịch có thể bị ảnh hưởng trong các kịch bản có độ lệch cao và phân mảnh lớn.
Độ lệch là một yếu tố quan trọng : Các mạng có các bên gửi dữ liệu lớn chiếm ưu thế (các trình sắp xếp L2 chính như Base, Optimism, Arbitrum) phải đối mặt với tỷ lệ khoảng trống cao hơn đáng kể so với các mạng có phân bố giao dịch đồng đều.
Việc chia nhỏ dữ liệu làm trầm trọng thêm vấn đề : Càng nhiều phân mảnh = càng nhiều khoảng trống, theo xác suất (N-1)/N cho mỗi cặp vị trí giống nhau.
Phân tích cùng một khung thời gian là rất quan trọng : Tập trung vào những gì quan trọng đối với người đề xuất (khoảng trống trong khung thời gian xây dựng khối của họ) sẽ mang lại những hiểu biết có thể hành động được.
6.2 Hỗ trợ cho Đề xuất cải tiến Ethereum (EIP)-8077
Mô phỏng này cung cấp bằng chứng định lượng mạnh mẽ hỗ trợ cho Đề xuất cải tiến Ethereum (EIP)-8077:
- Vấn đề này là có thật : Một tỷ lệ đáng kể các giao dịch bị ảnh hưởng bởi sự thiếu hụt mã Nonce.
- Vấn đề này có tính chất mở rộng : Nó trở nên tồi tệ hơn khi Ethereum bổ sung thêm nhiều phân vùng/ Xuất lượng.
- Giải pháp này nhắm đến : Siêu dữ liệu người gửi/số Nonce cho phép tìm nạp thông minh.
- Lợi ích có thể đo lường được : Các nút có thể giảm thiểu lãng phí băng thông và cải thiện hiệu quả xây dựng Block.
6.3 Các khuyến nghị
- Áp dụng Đề xuất cải tiến Ethereum (EIP)-8077 để cung cấp cho các nút siêu dữ liệu cần thiết cho việc truy xuất giao dịch blob thông minh.
- Ưu tiên các trình tự L2 chính khi truy xuất để duy trì chuỗi Nonce hoàn chỉnh cho các trình gửi blob khối lượng lớn.
- Hãy xem xét việc phân bổ Mảnh dựa trên thông tin người gửi như một chiến lược bổ sung để giảm thiểu các lỗ hổng ở cấp độ giao thức.
7. Công việc trong tương lai
- Mô phỏng tác động của siêu dữ liệu Đề xuất cải tiến Ethereum (EIP)-8077 lên hiệu quả truy xuất.
- Mô hình hóa các chiến lược tìm nạp khác nhau được kích hoạt bởi thông tin người gửi/ Nonce.
- Phân tích các mẫu giao dịch thực tế trên mạng chính Ethereum để hiệu chỉnh độ lệch.
- Hãy xem xét các kịch bản cân bằng lại Mảnh vùng động
- Nghiên cứu sự tương tác với các giải pháp mở rộng quy mô khác (tổng hợp dữ liệu, lấy mẫu dữ liệu khả dụng).
Phụ lục: Cấu trúc mã
Quá trình mô phỏng được thực hiện trong EIP-8077/simu.py với các thành phần sau:
| Chức năng | Mục đích |
|---|---|
get_sender_distribution() | Tạo ra phân phối xác suất cho việc lựa chọn người gửi. |
generate_transaction_rate() | Tạo ra các mô hình giao dịch ngẫu nhiên, không theo chu kỳ. |
simulate_nonce_gaps() | Chức năng mô phỏng chính (phân tích cùng vị trí) |
plot_distributions() | Hiển thị trực quan phân bố xác suất người gửi. |
plot_transactions_per_sender() | Hiển thị số lượng giao dịch tuyệt đối |
plot_transactions_over_time() | Hiển thị mức độ bùng phát theo thời gian (biểu đồ cột, theo giờ) |
plot_sender_distance_boxplot() | Hiển thị sự phân bố khoảng cách giao dịch giữa các người gửi giống nhau. |
Các tham số có thể cấu hình (ở đầu tệp EIP-8077/simu.py ):
NUM_SLOTS = 216000 # 30 days worth of slots AVG_TX_PER_SLOT = 14 # Target average transactions per slot MAX_TX_PER_SLOT = 21 # Maximum transactions per slot NUM_SENDERS = 100 # Number of unique sendersCác thư viện phụ thuộc : numpy, matplotlib, random







