Đa chiều - phân tích thực nghiệm về đo gas trong Máy ảo Ethereum (EVM)

Bài viết này được dịch máy
Xem bản gốc

Bài đăng này tóm tắt những điểm chính từ một phân tích thực nghiệm tập trung vào việc hiểu cách các chương trình đo gas Máy ảo Ethereum (EVM) khác nhau tác động đến Xuất lượng mạng và việc sử dụng Block . Cụ thể, chúng tôi tập trung vào các chương trình đa chiều, trong đó việc sử dụng các tài nguyên khác nhau được đo riêng.

Để ngắn gọn, tôi sẽ bỏ qua nhiều chi tiết kỹ thuật. Vui lòng tham khảo tài liệu dự án để biết thêm chi tiết.

Tôi muốn cảm ơn @dcrapis vì bài đánh giá, bình luận và thảo luận có giá trị, Shouqiao Wang vì những cuộc thảo luận ban đầu và chia sẻ phân tích ban đầu của anh ấy, và nhóm ethPandaOps vì đã truy cập vào dữ liệu tuyệt vời của họ. Dự án này được hỗ trợ bởi khoản tài trợ ROP-15: Máy ảo Ethereum (EVM) Gas Metering do Robust Incentives Group cung cấp.

Gas và sử dụng Block

Gas là đơn vị định lượng công việc tính toán cần thiết để thực hiện các hoạt động trên mạng Ethereum. Mỗi giao dịch trên Ethereum đều tiêu tốn tài nguyên và để ngăn chặn thư rác và vòng lặp vô tận, người dùng phải trả tiền cho các tài nguyên này.

Một thành phần thiết yếu của quá trình này là sơ đồ đo gas , tức là chức năng chịu trách nhiệm đo mức độ đầy của một Block và số lượng tài nguyên còn lại. Tất cả các mạng phi tập trung đều có tài nguyên hạn chế và do đó, các giao thức phải có cách để đo mức sử dụng và quyết định khi nào một Block đạt đến giới hạn đó.

Trong Ethereum, chương trình đo lường hiện tại gán một chi phí cho mỗi hoạt động (được đo bằng đơn vị gas) và cộng thêm gas của mỗi giao dịch. Sau đó, nó so sánh tổng này với giới hạn cố định là 36 triệu đơn vị gas . Khi một Block đạt đến 36 triệu đơn vị gas , nó được coi là hoàn toàn đầy đủ. Ngoài giới hạn này, giao thức cũng so sánh gas được Block sử dụng với mục tiêu là 18 triệu, được sử dụng để đặt mức phí cơ sở mà tất cả các giao dịch phải trả.

Sơ đồ này có ưu điểm là đơn giản và do đó dễ giao tiếp. Tuy nhiên, nó có nhược điểm là ước tính quá cao mức độ gần của một Block với giới hạn của tài nguyên mạng.

Để minh họa cho điểm này, chúng ta hãy bắt đầu với một ví dụ đơn giản. Trong ví dụ này, chúng ta có hai khối, B_1 B 1B_2 B 2 , và một mạng chỉ quan tâm đến hai tài nguyên, x xy y , có giới hạn là 1. B_1 B 1 có mức sử dụng theo tài nguyên là (x=1, y=0) ( x = 1 , y = 0 )B_2 B 2 có mức sử dụng theo tài nguyên là (x=0.5, y=0.5) ( x = 0.5 , y = 0.5 ) . Theo sơ đồ hiện tại, cả hai khối đều có cùng mức sử dụng là 1 đơn vị. Tuy nhiên, chúng ta có thể thấy rằng không Block nào đạt đến giới hạn của các tài nguyên khả dụng. B_1 B 1 đang ở giới hạn của tài nguyên x x , nhưng nó không sử dụng tài nguyên y y . Mặt khác, B_2 B 2 chỉ sử dụng một nửa cả hai tài nguyên.

Sự thiếu khả năng biểu đạt này trong sơ đồ hiện tại đã dẫn đến ý tưởng thay thế nó bằng một sơ đồ trong đó việc sử dụng và giới hạn của các nguồn lực khác nhau được xem xét riêng biệt. Những sơ đồ này thường được gọi là "sơ đồ đa chiều".

Một cách tiếp cận khả thi là một lược đồ tương tự như cách mà Vitalik mô tả . Trong cách tiếp cận này, chúng ta tách các tài nguyên thành các nhóm (trong ví dụ trước của chúng ta, tài nguyên x x sẽ là một nhóm và tài nguyên y y sẽ là nhóm còn lại). Sau đó, đối với mỗi Block, chúng ta thêm các đơn vị gas cho mỗi nhóm ( g_x g xg_y g y ) và xác định mức sử dụng tài nguyên Block là mức tối đa của các nhóm ( \text{utilization}=\max(c_x*r_x+c_y*r_y, c'_x*r_x, g_y) usage = max ( c x r x + c y r y , c x r x , g y ) ). Tuy nhiên, lưu ý rằng cách tiếp cận của Vitalik là ở cấp độ giao dịch, thay vì ở cấp độ khối. Chúng ta có thể thấy rằng trong ví dụ trước, lược đồ đo lường này sẽ cho phép chúng ta lấp đầy cả hai khối bằng nhiều giao dịch hơn: B_1 B 1 có thể bao gồm thêm 0,5 đơn vị của mỗi tài nguyên, trong khi Block B_2 B 2 có thể bao gồm 1 đơn vị tài nguyên y y mà không đạt đến giới hạn Block .

Ví dụ này làm nổi bật một lợi thế tiềm năng của việc đo lường đa chiều. Bằng cách cho phép tính toán hiệu quả hơn về việc sử dụng tài nguyên, chúng ta có thể tăng Xuất lượng mạng (tức là xử lý nhiều giao dịch hơn trong một Block) mà không ảnh hưởng đáng kể đến rủi ro sử dụng quá mức tài nguyên. Tuy nhiên, có hai câu hỏi chính cần xem xét ở đây:

  1. Chúng ta có thể mong đợi mức tăng Xuất lượng thực tế nào khi áp dụng đa chiều?
  2. Không gian thiết kế cho các sơ đồ đa chiều là gì? Và các bước tiếp theo để quyết định thiết kế tốt nhất là gì?

Chúng tôi sẽ cố gắng trả lời từng câu hỏi này trong các phần sau.

Đi theo hướng đa chiều. Tại sao?

Lịch sử sử dụng gas theo nguồn tài nguyên

Để hiểu được mức tăng Xuất lượng năng của phép đo đa chiều, trước tiên chúng ta cần xem xét lượng gas đang được sử dụng bởi từng tài nguyên. Để đạt được mục đích này, chúng tôi đã thiết kế một đường ống dữ liệu thu thập dữ liệu giao dịch thô từ tập dữ liệu của Xatu và các dấu vết gỡ lỗi từ một nút Erigon, xử lý và tổng hợp dữ liệu này để tính toán các thành phần chi phí gas riêng lẻ (chi phí nội tại, dữ liệu đầu vào, mã lệnh và hoàn tiền) theo giao dịch và ánh xạ các chi phí này vào các tài nguyên Máy ảo Ethereum (EVM) cụ thể (chủ đề tính toán, bộ nhớ, trạng thái, lịch sử, truy cập và bloom).

Việc lập bản đồ giữa các hoạt động và tài nguyên là một giả định chính làm cơ sở cho phân tích này; các bản đồ khác nhau sẽ có tác động đáng kể đến sự phân chia tài nguyên cuối cùng. Việc lập bản đồ của chúng tôi dựa trên kiến ​​thức về các hoạt động cơ bản (ví dụ, chúng tôi biết rằng một số mã lệnh chỉ sử dụng tài nguyên tính toán) và sự phân chia một phần chi phí của một số mã lệnh theo tài nguyên được thực hiện khi mô hình gas được thiết kế lần đầu tiên.

Chúng ta nên lưu ý thêm rằng phân tích này bỏ qua chi phí và việc sử dụng tài nguyên liên quan đến blob. Mặc dù đây là một thị trường tự do song song tại thời điểm này, tuy nhiên nó sẽ áp đặt các hạn chế về giới hạn băng thông và do đó, cần được xem xét khi thiết kế một mô hình đo gas mới.

Biểu đồ bên dưới cho thấy sự đóng góp của từng nguồn tài nguyên vào tổng lượng gas tiêu thụ được quan sát giữa các khối 22000000 và 22005000 (được xử lý vào ngày 8 tháng 3). Để cải thiện khả năng hiển thị, chúng tôi tổng hợp chi phí trên các nhóm gồm 10 khối liên tiếp. Vì mỗi thanh là tổng của 10 khối, nên gas tối đa có thể sử dụng cho mỗi thanh là 360 triệu đơn vị, trong khi lượng gas mục tiêu là 180 triệu đơn vị. Chúng tôi vẽ đường mục tiêu là 180 triệu đơn vị.

hình ảnh
hình ảnh 4920×1920 428 KB

Trong dữ liệu của chúng tôi, trạng thái chiếm một phần đáng kể lượng gas được sử dụng trong các khối Ethereum, chiếm 30,2% tổng gas tiêu thụ giữa các khối 22000000 và 22005000. Tài nguyên thứ hai sử dụng nhiều gas nhất là compute (26,8%), tiếp theo là access (21,9%). Các chủ đề history, bandwidth và bloom có ​​những đóng góp ít liên quan hơn, lần lượt chiếm 9,9%, 6,9% và 1,6% tổng gas được sử dụng.

Điều này có nghĩa là trạng thái, tính toán và truy cập là các tài nguyên nút thắt cổ chai vì chúng bao phủ một phần đáng kể Block Space khả dụng. Do đó, chúng tôi hy vọng rằng các mô hình đo lường tách biệt các tài nguyên này sẽ cho thấy mức tăng lớn nhất.

Khi xem xét các hạn chế về tài nguyên và tác động của một chương trình đo lường đa chiều lên khả năng mở rộng mạng, việc xem xét thời gian tắc nghẽn hoặc "tải cao" cũng có liên quan. Sử dụng cùng dữ liệu như trước, chúng tôi đã lọc các khối có tỷ lệ sử dụng cao (hơn 95%) và vẽ biểu đồ phân phối tỷ lệ sử dụng Block theo tài nguyên và số lượng Block theo tài nguyên hàng đầu. Các khối này chiếm 9,7% tập dữ liệu khối liên tiếp.

hình ảnh
hình ảnh 4920×1919 384 KB
hình ảnh
hình ảnh 1920×1920 156 KB

Điều thú vị là trạng thái chiếm ưu thế trong các khối này (với một số đóng góp từ tính toán và truy cập), đây là một thay đổi đáng kể khi so sánh với Block trung bình. Điều này chỉ ra rằng, trong các giai đoạn nhu cầu cao, các loại hoạt động thường được sử dụng khác với các loại được sử dụng trong Block trung bình. Do đó, đối với cách sử dụng Máy ảo Ethereum (EVM) hiện tại, trạng thái có thể là tài nguyên quan trọng nhất cần xem xét khi thiết kế các lược đồ đa chiều.

Mô phỏng xây dựng Block và các chương trình đo lường

Đến nay, chúng ta biết rằng trạng thái, tính toán và truy cập là những tài nguyên có khả năng đạt được mức tăng Xuất lượng nhất. Tuy nhiên, chúng ta vẫn chưa trả lời được mức tăng thực tế có thể là bao nhiêu. Để thực hiện điều này, chúng tôi đã xây dựng một mô phỏng dựa trên phương pháp Monte-Carlo sử dụng lấy mẫu ngẫu nhiên lặp lại để ước tính Xuất lượng được quan sát theo các chương trình đo lường khác nhau và mức nhu cầu giao dịch.

Chúng tôi mô hình hóa nhu cầu giao dịch thông qua các kịch bản. Chúng kiểm soát số lượng giao dịch và giao dịch nào đến mempool tại mỗi khe 12 giây. Đối với mỗi khe, chúng tôi làm mới mempool với các giao dịch được tạo ra bởi kịch bản nhu cầu. Sau đó, chúng tôi xây dựng một Block cho khe. Đầu tiên, chúng tôi sắp xếp các giao dịch mempool theo phí giao dịch của chúng (giao dịch cao nhất được xếp đầu tiên). Thứ hai, chúng tôi lặp lại việc thêm các giao dịch vào Block cho đến khi khối đầy theo sơ đồ đo lường đang được thử nghiệm. Tất nhiên, sau khi chúng tôi thêm một giao dịch vào Block, chúng tôi sẽ xóa giao dịch đó khỏi mempool để không thể chọn lại giao dịch đó. Chu kỳ làm mới mempool và xây dựng khối này được lặp lại cho một số khối được xác định trước.

Kịch bản đầu tiên mà chúng tôi muốn thảo luận nhằm mục đích mô phỏng nhu cầu vô hạn đối với các giao dịch trong quá khứ. Nói cách khác, nó cố gắng ước tính mức tăng tối đa mà chúng ta có thể đạt được theo các chương trình đo lường khác nhau, giả định rằng luôn có nhiều giao dịch hơn để lấp đầy một Block lên đến giới hạn 36 triệu đơn vị gas . Kịch bản này lấy mẫu các giao dịch từ cùng một khối lịch sử được xử lý vào ngày 8 tháng 3 cho đến khi Block đầy.

Bảng sau đây hiển thị mức tăng trung bình trong Xuất lượng giao dịch (tức là số lượng giao dịch được đưa vào một Block) và tổng gas được sử dụng (tức là tổng số đơn vị gas được đưa vào một Block) cho nhiều chương trình đo lường khác nhau. Các mức trung bình được tính toán qua 100.000 lần lặp Monte Carlo của một Block duy nhất được xây dựng theo kịch bản này.

Sơ đồ đo lường Tăng trung bình về Xuất lượng Mức tăng trung bình của gas được sử dụng
Tính toán so với những cái khác 60,1% 44,0%
Nhà nước so với những người khác 58,9% 52,5%
Truy cập so với những người khác 49,6% 34,1%
Băng thông so với những cái khác 26,2% 11,7%
Nhà nước so với tính toán so với những người khác 145,2% 133,8%
Trạng thái so với Tính toán so với Truy cập so với Những người khác 241,3% 219,1%

Trong số các lược đồ hai chiều, Compute vs. Others và State vs. Others cho thấy mức tăng lớn nhất về Xuất lượng so với lược đồ một chiều hiện tại. Access vs. Others cũng cho thấy mức tăng đáng kể, mặc dù thấp hơn một chút so với hai lược đồ kia. Ngoài ra, cả lược đồ ba chiều và bốn chiều đều mang lại mức tăng thậm chí còn lớn hơn so với lược đồ hiện tại, điều này làm nổi bật rằng compute, state và access có mức sử dụng gas liên quan trong các giao dịch lịch sử và do đó, việc đo lường các tài nguyên này riêng biệt có thể có tác động đáng kể đến Xuất lượng trong trường hợp có nhu cầu vô hạn đối với các giao dịch này.

Xu hướng này cũng được quan sát thấy trong tổng số đơn vị gas được bao gồm trong Block. Mặc dù, mức tăng cho gas được sử dụng thấp hơn một chút so với mức tăng được quan sát thấy trong Xuất lượng giao dịch.

Bây giờ chúng tôi đã ước tính mức tăng tối đa mà người ta có thể quan sát được trong các chương trình đo lường khác nhau, thì việc đặt câu hỏi về nhu cầu bổ sung cần thiết trong mỗi chương trình đo lường để lấp đầy các khối Ethereum và đạt được Xuất lượng đã quan sát trước đó là điều tự nhiên. Để đạt được mục đích này, chúng tôi đã thiết kế một tập hợp các kịch bản trong đó chúng tôi lấy mẫu các giao dịch lịch sử từ ngày 8 tháng 3 với các mức nhu cầu khác nhau.

Nhu cầu được mô hình hóa theo phân phối thực nghiệm quan sát được vào ngày 8 tháng 3, với hệ số nhân để tăng nhu cầu trung bình. Ví dụ, hệ số nhân 2x sẽ tạo ra nhu cầu trung bình gấp đôi nhu cầu quan sát được vào ngày 8 tháng 3. Biểu đồ bên dưới hiển thị phân phối số lần giao dịch đến cho bốn hệ số nhân nhu cầu được thử nghiệm.

hình ảnh
hình ảnh 4920×1920 301 KB

Biểu đồ tiếp theo cho thấy mức sử dụng Block trung bình và phạm vi liên tứ phân vị (IQR) theo sơ đồ đo lường và mức nhu cầu. Hãy nhớ rằng mức sử dụng Block biểu thị mức độ đầy của một Block và được định nghĩa là gas được đo lường của một Block chia cho giới hạn 36 triệu đơn vị gas .

hình ảnh
hình ảnh 4928×1920 431 KB

Phù hợp với các kết quả trước đó, nhu cầu cơ sở (hệ số nhân = 1x) không đủ để đạt được tỷ lệ sử dụng cao trên tất cả các sơ đồ đo lường. Khi mức nhu cầu tăng lên, tỷ lệ sử dụng trung bình cũng tăng. Trong các sơ đồ hai chiều, cần có mức nhu cầu là 3x để đạt được các khối đầy đủ cho trường hợp trung bình. Sơ đồ ba chiều yêu cầu nhu cầu là 5x. Đối với mô hình bốn chiều, tất cả các mức nhu cầu được thử nghiệm đều dẫn đến các khối được lấp đầy một phần trong trường hợp trung bình.

Đi theo hướng đa chiều. Làm gì?

Dựa trên phân tích thực nghiệm của chúng tôi, có sự gia tăng đáng kể về khả năng mở rộng L1 khi chuyển sang sơ đồ đo lường đa chiều. Tuy nhiên, có bất kỳ nhược điểm nào không? Sự đánh đổi chính là tính phức tạp.

Có hai cấp độ mà phép đo đa chiều làm tăng tính phức tạp. Cấp độ đầu tiên là tính phức tạp của việc triển khai. Chúng ta cần có khả năng theo dõi lượng gas mỗi hoạt động Máy ảo Ethereum (EVM) tiêu thụ trên mỗi tài nguyên và điều này đòi hỏi phải có một Hard fork trên các máy khách thực hiện để thêm các chiều tài nguyên mới. Ngoài ra, chúng ta cần mã hóa ánh xạ giữa mỗi hoạt động và mỗi tài nguyên. Ánh xạ này rất quan trọng để đảm bảo mạng tiếp tục hoạt động bình thường; do đó, điều cần thiết là phải tiến hành các chuẩn mực chuyên sâu về mức sử dụng tài nguyên của mỗi hoạt động. Đây có thể là một phân tích tương tự như gas-cost-estimator nhưng dành cho tất cả các tài nguyên Máy ảo Ethereum (EVM) có liên quan. Cuối cùng, chúng tôi đang giới thiệu một biến mới chỉ được sử dụng để theo dõi mức sử dụng Block . Đồng thời, chúng tôi tiếp tục sử dụng tổng lượng gas để tính phí giao dịch, điều này có thể gây nhầm lẫn.

Mức độ phức tạp thứ hai liên quan đến việc xây dựng Block . Mặc dù trải nghiệm của người dùng vẫn như vậy - chi phí giao dịch vẫn như vậy và người dùng tiếp tục gửi một Gas Limit và phí tối đa duy nhất - nhưng những người xây dựng Block hiện có một vấn đề tối ưu hóa phức tạp hơn. Họ không chỉ cần xem xét MEV và phí giao dịch mà còn phải xem xét cách đóng gói khối hiệu quả vào các tài nguyên khác nhau.


Nguồn
Tuyên bố từ chối trách nhiệm: Nội dung trên chỉ là ý kiến của tác giả, không đại diện cho bất kỳ lập trường nào của Followin, không nhằm mục đích và sẽ không được hiểu hay hiểu là lời khuyên đầu tư từ Followin.
Thích
Thêm vào Yêu thích
Bình luận