Gas dư thừa cho thị trường phí đa chiều

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

Gas dư thừa cho thị trường phí đa chiều

Cảm ơn Vitalik Buterin vì những phản hồi và ý tưởng chính.

Tóm tắt: Bài viết này phân tích "Tràn dữ liệu phổ quát" cho Đề xuất cải tiến Ethereum (EIP) -7999 như một cách tối thiểu để duy trì mô hình gas giữ lại kiểu scalar truyền thống xung quanh CALL trong khi tránh được sự kém hiệu quả chính của việc định giá toàn bộ gas Máy ảo Ethereum (EVM) tổng hợp ở mức giá tài nguyên Máy ảo Ethereum (EVM) cao nhất.

Lý lịch

Cơ chế định giá tài nguyên cuối cùng được ưa chuộng là thị trường phí đa chiều, cho phép kiểm soát chính xác mức tiêu thụ tài nguyên. Mỗi tài nguyên khan hiếm, chẳng hạn như thực thi, tăng trưởng trạng thái, dữ liệu cuộc gọi hoặc dữ liệu blob, đều được ấn định một khoản phí cơ bản riêng, và một giao dịch sẽ thanh toán dựa trên mức tiêu thụ thực tế của nó trên các tài nguyên này. Điều này cho phép thị trường định giá tài nguyên một cách công bằng theo các mục tiêu và giới hạn được các nhà phát triển coi là an toàn, đồng thời cho phép tài nguyên được tiêu thụ ở công suất tối đa trong các giới hạn này. Việc triển khai được xem xét ở đây là Đề xuất cải tiến Ethereum (EIP)-7999 , được xây dựng dựa trên Đề xuất cải tiến Ethereum (EIP)-7706 và cho phép người dùng đặt một max_fee duy nhất, đơn giản hóa trải nghiệm người dùng trong khi vẫn duy trì hiệu quả kinh tế tốt.

Mối quan ngại chính đối với thị trường phí đa chiều là làm thế nào để xử lý khả năng quan sát (tự kiểm tra) gas . Cụ thể, một số hợp đồng dựa vào tham số gas của các mã lệnh thuộc họ CALL (sau đây, CALL sẽ được sử dụng làm từ viết tắt) để chỉ chuyển tiếp một phần nhỏ gas khả dụng của bên gọi, giữ lại gas cho các hoạt động còn lại cần được hoàn thành trong hợp đồng gọi. Vì tham số gas không phải là đa chiều, các nhà phát triển dựa vào tự kiểm tra gas sẽ thiếu độ chi tiết về lượng gas họ có thể chuyển tiếp giữa các chiều tài nguyên. Mặc dù nhìn chung nên tránh sử dụng tự kiểm tra gas , nhưng hiện tại vẫn chưa rõ liệu điều này có được các nhà phát triển và người dùng chấp nhận hay không.

Vì lý do này, Đề xuất cải tiến Ethereum (EIP)-7999 đưa ra các tùy chọn để xử lý các cuộc gọi con có tham số gas . Một cách tiếp cận cơ bản là để Máy ảo Ethereum (EVM) diễn giải lại các cuộc gọi con cũ với tham số gas g_c bằng cách chuyển tiếp một phần ngân sách còn lại của người gọi trong mỗi chiều tài nguyên. Nếu ngân sách còn lại của người gọi trong chiều jg_j và tổng lượng gas còn lại là g_r := \sum_j g_j g r : = j g j , thì cuộc gọi sẽ chuyển tiếp \lfloor g_j \cdot \min(1, g_c/g_r)\rfloor g j min ( 1 , g c / g r ) trong mỗi chiều j .

Bằng cách yêu cầu người dùng cung cấp Gas Limit cho một giao dịch duy nhất và tổng hợp gas Máy ảo Ethereum (EVM) , quá trình xử lý có thể diễn ra như hiện tại trong Máy ảo Ethereum (EVM) . Nhược điểm là người dùng phải quy định mức phân bổ max_fee cao không cần thiết (m m) bất cứ khi nào Gas Limit Máy ảo Ethereum (EVM) tổng hợp không được sử dụng hết trong tài nguyên Máy ảo Ethereum (EVM) có giá cao nhất.

Giả sử j là chỉ số của các tài nguyên EVM không xác định với phí cơ bản b_j giới hạn giả định cho mỗi tài nguyên g_j, và i là chỉ số của các tài nguyên với mức sử dụng gas xác định g_i phí Máy ảo Ethereum (EVM) bản b_i . Định nghĩa tài gas EVM giá cao Máy ảo Ethereum (EVM) là b_\text{max} := \max_j b_j b max : = max j b j . Gas Limit giao dịch tổng hợp g_a g a , trong đó g_a = \sum_j g_j + \sum_i g_i g a = j g j + i g i , sẽ làm tăng mức độ bao phủ phí cơ bản trước khi thực hiện cần thiết so với việc sử dụng giới hạn gas Máy ảo Ethereum (EVM) riêng lẻ g_j g j bằng:

\sum_j (b_\text{max} - b_j)g_j.
j ( b max b j ) g j .

Phần phí cơ bản của khoản thanh toán tài trợ, bao gồm các nguồn lực xác định i i , sẽ trở thành:

m \ge (g_a-\sum_i g_i) b_\text{max} + \sum_i b_i g_i.
m ( g a i g i ) b max + i b i g i .

Các phương án được đề xuất để giảm thiểu vấn đề này bao gồm:

  • Hủy bỏ Block khi kiểm tra sau giao dịch cho thấy tổng phí cho một giao dịch đã vượt quá max_fee cho phép.
  • Hãy trao cho Block Producer quyền và trách nhiệm bổ sung bất kỳ khoản tiền nào còn thiếu như một phần của quy trình kiểm tra sau khi thực hiện giao dịch.
  • Cung cấp cho người thực hiện giao dịch khả năng đặt giới hạn cho tất cả các chiều, nếu họ muốn.

Phương án cuối cùng là thiết kế gas Máy ảo Ethereum (EVM) lai. Đây là phương án tối ưu nhất được trình bày trong Đề xuất cải tiến Ethereum (EIP)-7999. Người dùng dựa vào CALL với tham số gas có thể sử dụng gas Máy ảo Ethereum (EVM) tổng hợp, còn tất cả người dùng khác có thể có giới hạn riêng cho từng tài nguyên. Một số người dùng chỉ có thể tổng hợp một số tài nguyên nhất định. Tuy nhiên, đối với những người dựa vào gas Máy ảo Ethereum (EVM) tổng hợp, việc phân bổ max_fee cao không cần thiết vẫn còn tồn tại.

Tràn toàn cầu

Một ý tưởng để cải tiến “ Gas Máy ảo Ethereum (EVM) lai” là “Tràn phổ quát”. Ý tưởng này giảm tỷ lệ gas phải được định giá ở tài nguyên Máy ảo Ethereum (EVM) đắt nhất trong các trường hợp sử dụng phổ biến liên quan đến CALL với tham số gas . Vitalik đề xuất thiết kế như sau:

Chúng ta có n+1 chiều không gian gas, trong đó n+1 là "lượng gas dư thừa toàn cục". Tất cả các lệnh đều cố gắng tiêu thụ từ dạng gas được chỉ định, và nếu dạng gas đó hết, chúng sẽ bắt đầu tiêu thụ từ lượng gas dư thừa toàn cục. Mã lệnh GAS trả về lượng gas dư thừa toàn cục còn lại, và mã lệnh CALL chuyển tiếp tất cả các chiều không gian gas mới, nhưng chỉ lượng gas dư thừa toàn cục được chỉ định.

Nói cách khác, lệnh CALL truyền thống chuyển tiếp tất cả các giới hạn gas đa chiều thông thường còn lại, trong khi tham số gas vô hướng chỉ kiểm soát lượng gas tràn phổ quát được chuyển tiếp. Điều này bảo toàn Use Case gas được giữ lại quan trọng của khả năng quan sát gas truyền thống: người gọi vẫn có thể sử dụng giá trị gas vô hướng để dành riêng một bộ đệm sau CALL , trong khi phần lớn quá trình thực thi được tính giá theo nhiều chiều. Hình 1 hiển thị một lệnh gọi con với gas tràn phổ quát được biểu thị bằng màu xanh lá cây và giới hạn gas thông thường được biểu thị bằng màu đỏ.

Tràn toàn cầu
Universal overflow 1920×937 63.4 KB

Hình 1. Vùng tràn chung (Universal overflow) màu xanh lá cây, được chỉ định là tham số giao dịch bổ sung cùng với giới hạn tài nguyên đa chiều thông thường màu đỏ. CALL truyền thống chuyển tiếp tất cả các giới hạn đa chiều thông thường còn lại, trong khi tham số gas vô hướng của nó xác định lượng vùng tràn chung được chuyển tiếp. Khi giới hạn thông thường của một tài nguyên bị cạn kiệt, giao dịch sẽ sử dụng vùng tràn chung của tài nguyên đó.

Theo thiết kế này, việc kiểm tra phí cơ bản trước khi thực thi sẽ không yêu cầu max_fee phải chi trả cho tài nguyên đắt nhất đối với toàn bộ gas Máy ảo Ethereum (EVM) của giao dịch, mà chỉ chi trả cho lượng gas tràn phổ quát. Trong trường hợp thông thường, khi đây chủ yếu là lượng gas mà người gọi muốn giữ lại sau khi thực thi CALL , thì lượng gas này có thể chỉ chiếm một phần nhỏ trong tổng gas Máy ảo Ethereum (EVM) được phân bổ cho giao dịch, giúp cải thiện đáng kể hiệu quả kinh tế. Vì giới hạn tràn phổ quát o_u có thể được sử dụng cho bất kỳ tài nguyên Máy ảo Ethereum (EVM) nào , nên việc kiểm tra phí cơ bản trước khi thực thi yêu cầu:

m \ge \sum_j b_j g_j + o_u b_\text{max} + \sum_i b_i g_i.
m j b j g j + o u b max + i b i g i .

Sự cải tiến nằm ở chỗ b_\text{max} b max không còn được áp dụng cho toàn bộ giới hạn gas Máy ảo Ethereum (EVM) \sum_j g_j j g j . Một kiểm tra trước về tính hợp lệ Block mang tính bảo thủ sẽ cần phải dành dung lượng cho khả năng o_u o u được sử dụng hoàn toàn cho bất kỳ tài nguyên Máy ảo Ethereum (EVM) nào (ví dụ: bằng cách dành chỗ dự phòng o_u o u trong mỗi chiều Máy ảo Ethereum (EVM) ).

Ngoài ra còn có một tính năng thứ hai, có thể hữu ích hoặc không: các giao dịch phức tạp với nhiều chi nhánh có thể dựa vào tính năng tràn bộ nhớ chung như một bộ đệm gas Có thể hoán đổi hơn, với chi phí là phải phân bổ trước nhiều kinh phí hơn cho bộ đệm đó theo nguồn tài nguyên đắt nhất.

Một hạn chế là tràn bộ nhớ Universal không bảo toàn GAS như một thước đo cho toàn bộ dung lượng thực thi còn lại. Trong khi Máy ảo Ethereum (EVM) theo dõi các giới hạn đa chiều thông thường, mã lệnh GAS cũ chỉ báo cáo tràn bộ nhớ Universal mà tham số CALL vô hướng có thể kiểm soát. Do đó, các hợp đồng cần biết lượng gas thông thường còn lại trong mỗi chiều có thể cần một cơ chế tự kiểm tra đa chiều mới, hoặc đủ lượng tràn bộ nhớ Universal để giao diện vô hướng vẫn hữu ích.

Vectơ tràn

Lý tưởng nhất là cũng loại bỏ điều khoản trường hợp xấu nhất o_u b_\text{max} o u b max khỏi việc kiểm tra tài trợ trước khi thực thi. Do đó, một phần mở rộng tiềm năng cho tràn phổ quát là sử dụng "Vector tràn" \mathbf{o} o , với một thành phần cho mỗi trong số n n tài nguyên Máy ảo Ethereum (EVM) , thay vì một tràn phổ quát duy nhất. Một quy tắc quan sát kế thừa khả thi là cho o_r := \sum_j o_j o r : = j o j và cho mã lệnh GAS trả về o_r o r . Đối với o_r>0 o r > 0 , một CALL với tham số gas g_c g c chuyển tiếp \lfloor o_j \cdot \min(1, g_c/o_r)\rfloor o j min ( 1 , g c / o r ) gas tràn trong mỗi chiều tài nguyên j j ; nếu o_r=0 o r = 0 , nó không chuyển tiếp vector tràn nào. Không giống như tràn Universal, tập hợp này chỉ là phép chiếu vô hướng của một vectơ cụ thể cho từng tài nguyên, vì vậy nó có thể là một tín hiệu thời gian thực không chính xác để đánh giá xem hỗn hợp gas được giữ lại có đủ hay không. Các giới hạn đa chiều thông thường được chuyển tiếp đầy đủ.

Hình 2 minh họa một Use Case điển hình: một lệnh gọi con được thực thi trong giới hạn đa chiều thông thường, trong khi quá trình xử lý phía người gọi tiếp theo có thể sử dụng vectơ tràn được giữ lại.

Vectơ tràn
Vector tràn 1762×1374 84,4 KB

Hình 2. Vectơ tràn màu vàng với một phần tràn bổ sung cho mỗi giới hạn tài nguyên đa chiều thông thường màu đỏ. Lượng vectơ tràn được truyền trong một lệnh gọi con được xác định bởi tham số gas CALL so với tổng gas của vectơ tràn. Khi giới hạn thông thường của một tài nguyên bị cạn kiệt, giao dịch sẽ sử dụng phần tràn liên quan của nó. Trong ví dụ này, bên gọi giữ lại toàn bộ vectơ tràn để sử dụng sau: lệnh gọi con được thực thi trong giới hạn đa chiều thông thường được truyền cho nó, trong khi quá trình xử lý phía bên gọi tiếp theo có thể sử dụng vectơ tràn được giữ lại.

Nếu người dùng có ước tính đáng tin cậy về mức sử dụng vượt mức của giao dịch trong từng khía cạnh tài nguyên, vectơ vượt mức có thể ngăn chặn việc phân bổ max_fee quá mức. Vì mỗi thành phần vượt mức được chỉ định và định giá riêng biệt, việc kiểm tra tài trợ ban đầu không cần phải tính phí bất kỳ ngân sách vượt mức nào tại tài nguyên có giá cao nhất trừ khi ngân sách đó thực sự được phân bổ cho tài nguyên đó:

m \ge \sum_j b_j (g_j + o_j) + \sum_i b_i g_i.
m j b j ( g j + o j ) + i b i g i .

Không rõ liệu hiệu quả kinh tế được cải thiện của vector Overflow có đủ để biện minh cho việc áp dụng nó thay vì Universal Overflow hay không, xét đến độ phức tạp tăng thêm của nó. Khi người dùng chỉ dựa vào vector Overflow, hợp đồng thường không thể xác định được trong thời gian chạy, từ tổng lượng gas được trả về bởi GAS , liệu hỗn hợp gas Overflow còn lại trên các tài nguyên có đủ cho việc thực thi dự định hay không (ví dụ: các thao tác được thiết lập để thực thi sau một lệnh gọi con). Điều này thúc đẩy biến thể lai được thảo luận bên dưới: nếu hỗn hợp tài nguyên của gas được giữ lại không chắc chắn, người dùng có thể sử dụng Universal Overflow cho phần không chắc chắn đó, trong khi vẫn sử dụng vector Overflow cho việc sử dụng tài nguyên đã biết trước.

Các biến thể khác

Đặt trước gas

Sự khác biệt giữa việc chuyển tiếp vectơ giới hạn gas trong CALL tỷ lệ thuận với gas được chỉ định (một phương pháp cơ bản đã được nghiên cứu trước đó) và việc chuyển tiếp vectơ tràn tỷ lệ thuận với gas được chỉ định là vectơ tràn có thể được chọn có thành phần tài nguyên khác với vectơ giới hạn gas thông thường của bên gọi. Điều này có thể có lợi vì hợp đồng gọi có thể muốn dành riêng gas cho một tập hợp các hoạt động sau CALL khác nhau (ví dụ: dọn dẹp, kế toán, phát nhật ký) so với những hoạt động do bên được gọi thực hiện, có nghĩa là hỗn hợp tài nguyên có thể khác nhau. Vectơ tràn cho phép dành riêng một hỗn hợp khác với những gì được chuyển tiếp.

Một thay đổi Máy ảo Ethereum (EVM) mang tính xâm phạm hơn—nhưng có khả năng sạch hơn—là cho phép các hợp đồng dành riêng một lượng gas cụ thể trong quá trình thực thi. Về mặt khái niệm, điều này chia ngân sách gas còn lại của người gọi thành một vector khả dụng (có thể chuyển tiếp) và một vector được dành riêng (không thể chuyển tiếp) được đảm bảo sẽ vẫn còn cho quá trình thực thi sau khi gọi CALL . Điều này có thể được thực hiện theo hai cách: (a) thông qua một mã lệnh chuyển gas từ vector khả dụng sang vector được dành riêng (và tùy chọn giải phóng nó sau đó), hoặc (b) thông qua một biến thể CALL đa chiều nhận cả vector gas được chuyển tiếp và vector gas được dành riêng.

Sự tràn lai

Hai phương pháp được đề xuất trong bài viết này cũng có thể được kết hợp bằng cách cho phép cả vectơ tràn \mathbf{o} o và tràn phổ quát o_u o u . Khi Gas Limit thông thường cho một tài nguyên bị cạn kiệt, giao thức trước tiên sẽ sử dụng bất kỳ gas còn lại nào trong thành phần vectơ tràn o_j o j của tài nguyên đó, và chỉ sau đó mới sử dụng gas từ tràn phổ quát o_u o u . Việc kiểm tra phí cơ bản tương ứng sẽ là:

m \ge \sum_j b_j (g_j + o_j) + o_u b_\text{max} + \sum_i b_i g_i.
m j b j ( g j + o j ) + o u b max + i b i g i .

Tuy nhiên, sự kết hợp này cũng cần một quy tắc quan sát theo kiểu cũ. Quy tắc đơn giản nhất là mã lệnh GAS chỉ trả về o_u o u , và tham số gas CALL cũ chỉ kiểm soát lượng tràn phổ quát được chuyển tiếp. Do đó, vectơ tràn không được hiển thị thông qua khả năng quan sát gas kiểu cũ và, theo CALL cũ, vẫn nằm trong tay người gọi cho bất kỳ quá trình xử lý nào diễn ra sau lệnh gọi con.

Phần kết luận

Phương pháp tràn phổ quát (Universal overflow) cung cấp một cách tối thiểu để duy trì mô hình gas giữ lại dạng vô hướng truyền thống xung quanh CALL , đồng thời tránh được sự нееfficienсy chính của việc định giá toàn bộ gas Máy ảo Ethereum (EVM) tổng hợp ở mức giá cao nhất cho tài nguyên Máy ảo Ethereum (EVM) . Bằng cách giới hạn yêu cầu tài trợ ở mức giá cao nhất cho lượng gas tràn phổ quát được cung cấp rõ ràng, nó cung cấp cho các hợp đồng một vùng đệm gas giữ lại quen thuộc mà không cần từ bỏ định giá đa chiều cho phần lớn quá trình thực thi. Các vectơ tràn và các giải pháp lai có thể cung cấp những cải tiến hữu ích. Tuy nhiên, tràn phổ quát vẫn cung cấp một nền tảng trực quan để dung hòa khả năng quan sát gas với thị trường phí đa chiều.


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