Được viết bởi: Lý
Được viết bởi: Lý
Vấn đề về phí gas là một trong những vấn đề nghiêm trọng nhất mà chuỗi Ethereum 1.0 hiện đang phải đối mặt. vì vậy các tác vụ đang gấp rút) Tài nguyên tính toán của một nút), Ethereum sẽ bị tắc nghẽn khi xử lý một số lượng lớn tác vụ và phí Gas sẽ cao sau khi tắc nghẽn.
Sự phát triển bùng nổ của các ứng dụng DeFi đã làm tăng thêm hiện tượng này. Điều tôi muốn đề cập ở đây là ngoài việc đóng gói các giao dịch blockchain, Ethereum còn xuất bản các hợp đồng thông minh trên chuỗi, vì vậy các hợp đồng thông minh sẽ tiêu tốn tài nguyên khi thực thi trên chuỗi, vì vậy hầu hết mọi bước mà người dùng thực hiện trong DeFi, đều cần phải trả Gas phí, đây cũng là một vấn đề với mô hình Gas.
Gần đây, cuộc thảo luận về EIP-1559 trong cộng đồng Ethereum cũng trở nên gay gắt hơn, do nhiều nhóm khai thác không đồng ý triển khai đề xuất này, đề xuất này điều chỉnh thành phần phí Gas, mặc dù không giải quyết được vấn đề phí Gas cao nhưng nó có thể làm tăng chi phí phí Gas.Trải nghiệm mong đợi, hoàn hảo.
Ngoài ra còn có một tin tức liên quan gần đây, vào ngày 16 tháng 3, Philippe Castonguay, một nhà phát triển của Ethereum, đã đề xuất một đề xuất khác EIP-3382, đề xuất sửa giới hạn Gas khối ở mức 12.500.000 Gas mỗi khối. Và cập nhật các quy tắc xác minh khối, nếu giới hạn gas không bằng 12.500.000, khối không hợp lệ. Điều này là để đạt được sự đồng thuận về giới hạn khí khối và nó không bị hạn chế bởi những người khai thác.
Theo các quy tắc ban đầu, giới hạn gas khối là phần dữ liệu duy nhất trong Ethereum không được xác định bởi sự đồng thuận của các nút và là một tham số được chọn bởi những người khai thác. Anh ấy coi đây là một tham số chính yêu cầu sự đồng thuận của nút để tránh bất kỳ thay đổi có hại đột ngột nào do một số ít người tham gia áp đặt lên phần còn lại của mạng.
Có rất nhiều đề xuất điều chỉnh phí gas như EIP1559 và EIP-3382, vì phí gas chiếm một vị trí quan trọng trong hoạt động của Ethereum nên có rất nhiều câu chuyện lịch sử về phí gas. phí , có thể thấy rằng việc giải quyết phí gas không hề dễ dàng.
Nếu bạn muốn hiểu phí xăng, bạn có thể hiểu nó một cách sinh động từ hình ảnh động của TXStreet.
Mô tả hình ảnh
TXStreet trực quan hóa quy trình đóng gói khối Ethereum dưới dạng vận chuyển
Con đường mà ô tô đi là tài nguyên cơ bản và "phí cầu đường" cần phải trả để trang trải, trong khi phí xăng cần thiết để đóng gói là "phí xăng". Vì vậy, phí Gas (Phí gas) là khoản thanh toán cuối cùng cho việc sử dụng tài nguyên của Ethereum.
tiêu đề phụ
Chìa khóa đầu tiên về Gas trong những ngày đầu
Khái niệm về Gas bắt nguồn từ lĩnh vực máy tính. Nó có thể được nhìn thấy trong Ethereum. Nó lần đầu tiên xuất hiện từ Sách vàng Ethereum. Tác giả của Sách vàng là Gavin, người sáng lập Polkadot. Đây là một giá trị tùy ý, vì về mặt lý thuyết có nhiều hơn các giao dịch cần trang trải, lên tới 2^256 (có thể bao gồm gần như nhiều giao dịch bằng số nguyên tử trong vũ trụ đã biết).
Trước khi phiên bản này được xác nhận, có một chi tiết thú vị khác, trong mô hình Ethereum Gas do Vitalik thiết kế, quy trình thanh toán phí gas được mặc định trong hợp đồng, tức là trong quá trình thực hiện hợp đồng, số dư trong hợp đồng sẽ giảm xuống. Nếu số dư không đủ do tiêu thụ thực thi, hợp đồng sẽ bị đình chỉ.
Mô tả hình ảnh
Sau đó, Gavin bắt đầu tham gia Ethereum, và sau khi tham gia, anh ấy đã sửa đổi cơ chế thanh toán của Gas, từ khoản thanh toán thực hiện hợp đồng này thành khoản thanh toán cho người chuyển nhượng, tức là khoản thanh toán cho người thực hiện hợp đồng. Vitalik mô tả việc chuyển từ cách tiếp cận "thanh toán theo hợp đồng" sang cách tiếp cận "người gửi trả tiền", thay vì lấy một ít ETH ngay lập tức cho mỗi bước giao dịch riêng lẻ.
Mô tả hình ảnh
Trong những ngày đầu của Ethereum, Vitalik và Gavin đã tham gia mini-hackathon và bậc thầy ở giữa là Jeffrey
Đây là một "thanh toán phí xăng" dễ hiểu hơn. Nếu mổ xẻ những phần chi tiết hơn, chúng ta phải xem phần liên quan đến Khí trong Hoàng Thư.
Gas là đơn vị tính cho tất cả các phép tính trong Ethereum, càng muốn thực hiện nhiều phép tính trên Ethereum thì bạn càng phải trả nhiều Gas.
Phương thức thanh toán của người dùng này có thể tránh lạm dụng tài nguyên. Có thể hiểu rằng một khi các nhà phát triển trả tiền cho mỗi thao tác, họ sẽ viết mã ngắn gọn và hiệu quả nhất có thể, ngoài ra, sự tồn tại của Gas cũng có thể ngăn chặn kẻ tấn công vượt qua các thao tác không hợp lệ (rất nhiều thao tác sẽ tốn Gas). cuộc tấn công được thực hiện trên mạng Fang. Một EIP được tính bên dưới là để tăng giá trị Gas cho quyền truy cập tài khoản nhằm giảm khả năng bị tấn công.
Ngoài việc biết nơi thanh toán Gas, chúng ta cũng cần hiểu GasPrice và GasLimit.
GasPrice là giá mà người gửi giao dịch sẵn sàng trả cho mỗi đơn vị Gas (được đo bằng Wei) và người gửi giao dịch có thể tùy chỉnh giá cho mỗi đơn vị Gas mà người gửi giao dịch sẵn sàng trả. Giả sử rằng một giao dịch tốn 10 Gas và người gửi sẵn sàng trả 3 Wei/Gas, tổng chi phí của giao dịch là 30 Wei. Sẽ có các tùy chọn nâng cao để điều chỉnh phí Gas trong ví chúng ta sử dụng.
Ngoài ra, GasLimit cũng có thể được định nghĩa là Gas trả trước. Khi nút đang xác minh giao dịch, trước tiên hãy tính chi phí cố định của giao dịch bằng cách nhân GasPrice với GasLimit. Nếu số dư tài khoản của người gửi giao dịch nhỏ hơn chi phí cố định của giao dịch, giao dịch được coi là không hợp lệ. Sau khi giao dịch được thực hiện, lượng Gas còn lại sẽ được trả lại vào tài khoản của người gửi, đó là lý do tại sao khi chúng tôi sử dụng MetMask để thực hiện hợp đồng, chúng tôi ước tính rằng Gas rất đắt, nhưng giá thực hiện không quá cao.
Mô tả hình ảnh
nội dung chứa trong một khối
Đây là nội dung vốn có trong một khối, trong phần giao dịch có 237 giao dịch chuyển khoản và 39 giao dịch hợp đồng nội bộ, nếu xem xét cụ thể các giao dịch, bạn có thể thấy chi phí gas chi tiết hơn. Bạn cũng có thể thấy giới hạn gas là 12493113. Trong EIP-3382 được đề cập ở đầu bài viết, giới hạn Gas của mỗi khối được giới hạn ở 12500000, chính là phần này. Bằng cách này, tổng số phần thưởng thu được trong mỗi khối sẽ dễ kiểm soát hơn.
chi phí vốn có =
Gtransaction+Gtxdatazero*Nzeros+Gtxdatanonzero* Nnonzeros+Gtxcreate
TRONG:
Gtransaction=21,000Wei
Gtxcreate=32,000Wei
Gtxdatazero=4Wei
TRONG:
Bạn có thể ngồi trên các opcode sau.
Mô tả hình ảnh
Theo phần giới thiệu ở trên, hiểu biết cơ bản mà chúng ta có thể nhận được là phí Gas được tạo ra bằng cách sử dụng các tài nguyên trên chuỗi Ethereum. Càng nhiều phép tính, Gas càng cao. Trong hoạt động hợp đồng hợp đồng thông minh, mỗi bước riêng lẻ cần được thực hiện đã trả tiền xăng. Ngoài ra, cần nói thêm rằng nếu người gửi đặt Gas ở mức rất cao, thợ đào sẽ ưu tiên thực hiện giao dịch hơn, vì thợ đào có thể chọn đóng gói một số giao dịch nhất định trước.
tiêu đề phụ
20 CTKT liên quan mật thiết đến phí Gas
Tiếp theo, chúng ta có thể xem xét chi tiết đề xuất EIP về Gas. Các đề xuất được sắp xếp gần đúng theo trình tự thời gian.
EIP-5: Điều chỉnh mức sử dụng Gas của RETURN và CALL
EIP này cho phép gọi các hàm TRẢ LẠI chuỗi và các mảng có kích thước động khác. Hiện tại, khi gọi một hợp đồng/chức năng khác từ trong Máy ảo Ethereum, kích thước của đầu ra phải được chỉ định trước. Bạn cũng phải trả tiền cho bộ nhớ chưa được ghi, điều này làm cho việc trả về dữ liệu có kích thước động trở nên đắt đỏ và không linh hoạt đến mức thực tế không sử dụng được. Giải pháp được đề xuất trong EIP này là chỉ trả tiền cho bộ nhớ thực sự được ghi khi CUỘC GỌI quay trở lại.
EIP-150: Chi phí gas thay đổi đối với một số lượng lớn hoạt động IO
Tăng chi phí gas cho EXTCODESIZE từ 20 lên 700.
Tăng chi phí gas cơ bản của EXTCODECOPY từ 20 lên 700.
Tăng chi phí gas của BALANCE từ 20 lên 400.
Tăng chi phí gas SLOAD từ 50 lên 200.
Tăng phí gas CALL, DELEGATECALL, CALLCODE từ 40 lên 700.
Tăng chi phí gas của SELFDESTRUCT từ 0 lên 5000.
Nếu SELFDESTRUCT tấn công một tài khoản mới tạo, phí gas bổ sung là 25000 sẽ được kích hoạt (tương tự như GỌI).
Tăng mục tiêu giới hạn gas được đề xuất lên 5,5 triệu.
EIP-158: Dọn dẹp trạng thái
Trong mọi trường hợp, tài khoản có số dư cuộc gọi bằng 0 sẽ không còn tiêu tốn chi phí 25.000 Gas tạo tài khoản.
EIP-1108: Giảm chi phí Gas được biên dịch trước alt_bn128
Tính toán đường cong elip được biên dịch trước hiện đang được định giá quá cao. Việc định giá lại các bản biên dịch trước sẽ là một chặng đường dài hướng tới nhiều giải pháp về quyền riêng tư và mở rộng quy mô trên Ethereum. Đối với các giao thức dựa trên zk-SNARK dựa trên Ethereum, EIP-1108 sẽ không chỉ giảm đáng kể chi phí xăng khi xác minh zk-SNARK mà còn giúp kết hợp nhiều bằng chứng zk-SNARK theo lô. Đây cũng là một kỹ thuật có thể được sử dụng để phân tách mạch zk-SNARK nguyên khối thành một lô zk-SNARK với kích thước mạch riêng lẻ nhỏ hơn, giúp cả hai zk-SNARK dễ dàng xây dựng và triển khai hơn.
Hiện tại, các giao dịch này tiêu tốn khoảng 6.000.000 Gas. EIP này có thể giảm xuống còn 1.000.000Gas, điều này làm cho giao thức trở nên thiết thực hơn.
EIP-1283: Điều chỉnh gas cho SSTORE opcode
EIP này đề xuất các thay đổi đo lường đối với opcode SSTORE để cho phép sử dụng mới dung lượng lưu trữ theo hợp đồng và giảm chi phí gas quá mức khi nó không phù hợp với cách thức hoạt động của hầu hết các triển khai. Điều này có thể phục vụ như một giải pháp thay thế cho EIP-1087, trong đó nó cố gắng thân thiện hơn với các triển khai sử dụng các chiến lược tối ưu hóa khác nhau để thay đổi bộ đệm.
EIP-2028: Giảm chi phí gas dữ liệu giao dịch
Bạn nên giảm chi phí Gas của Calldata (GTXDATANONZERO) từ 68 byte hiện tại xuống 16 byte và hỗ trợ nó thông qua mô hình toán học và ước tính theo kinh nghiệm.
EIP-2200: Định nghĩa cấu trúc của đo lường khí ròng
EIP này cung cấp định nghĩa có cấu trúc về các thay đổi trong đo lường khí ròng đối với opcode SSTORE, cho phép sử dụng mới kho lưu trữ theo hợp đồng và giảm chi phí gas quá mức khi nó không phù hợp với cách thức hoạt động của hầu hết các triển khai. Đây có thể coi là sự kết hợp giữa EIP-1283 và EIP-1706.
EIP-2565: Chi phí ModExpGas
Để phản ánh chính xác chi phí hoạt động thực tế của quá trình biên dịch trước ModExp, EIP này chỉ định một thuật toán để tính toán chi phí Gas. Thuật toán ước tính chi phí độ phức tạp của phép nhân và nhân nó với một xấp xỉ số lần lặp cần thiết để thực hiện phép lũy thừa.
EIP-1559: Thay đổi thị trường phí cho Chuỗi ETH 1.0
Ethereum sử dụng cơ chế đấu giá đơn giản để định giá phí giao dịch theo giá lịch sử, người dùng gửi giao dịch theo giá thầu ("Gasprices"), người khai thác chọn giao dịch có giá thầu cao nhất và các giao dịch bao gồm được thanh toán theo giá thầu được chỉ định. Điều này dẫn đến sự kém hiệu quả.
Đề xuất trong EIP này là bắt đầu với số tiền phí cơ bản được giao thức điều chỉnh giảm xuống dựa trên tình trạng tắc nghẽn của mạng. Phí cơ sở tăng nhẹ khi mạng vượt quá mức sử dụng mục tiêu trên mỗi khối Gas và giảm nhẹ khi công suất giảm xuống dưới mức mục tiêu.
Vì sự thay đổi của các khoản phí cơ bản này bị hạn chế nên sự khác biệt tối đa về phí cơ bản giữa các khối khác nhau là có thể dự đoán được. Điều này sau đó cho phép ví tự động đặt phí gas cho người dùng theo cách có độ tin cậy cao. Dự kiến, hầu hết người dùng sẽ không phải điều chỉnh phí gas theo cách thủ công ngay cả trong thời gian mạng hoạt động. Đối với hầu hết người dùng, phí cơ sở sẽ được ước tính bằng ví của họ.
EIP-2929: Tăng chi phí gas cho các mã truy cập trạng thái
Tăng chi phí Gas SLOAD (0x54) lên 2100 và họ opcode *CALL (0xf1, f2, f4, fA), họ opcode BALANCE 0x31 và EXT* (0x3b, 0x3c, 0x3f) và 2600 CD-free (i) Được biên dịch trước. Ngoài ra, phép đo SSTORE có thể được cải tổ để đảm bảo định giá chính xác "tải lưu trữ thực tế" vốn có trong các mã opcode SELFDESTRUCT này.
Thông thường, chức năng chính của chi phí gas của opcode là ước tính thời gian cần thiết để xử lý opcode đó, với mục tiêu làm cho giới hạn gas tương ứng với giới hạn về thời gian cần thiết để xử lý một khối. Tuy nhiên, các opcode truy cập bộ nhớ (SLOAD và các opcode *CALL, BALANCE và EXT*) trước đây thường bị đánh giá thấp. Trong cuộc tấn công DoS Thượng Hải năm 2016, sau khi sửa lỗi nghiêm trọng nhất phía máy khách, một trong những chiến thuật được những kẻ tấn công sử dụng luôn hiệu quả là chỉ gửi các giao dịch có thể truy cập hoặc gọi một số lượng lớn tài khoản.
EIP được đề xuất làm tăng chi phí của các opcode này lên khoảng 3 lần, giảm thời gian xử lý trong trường hợp xấu nhất xuống còn khoảng 7-27 giây. Các cải tiến đối với bố cục cơ sở dữ liệu liên quan đến việc thiết kế lại ứng dụng khách để đọc trực tiếp cửa hàng thay vì chuyển sang cây Merkle sẽ giảm thiểu điều này hơn nữa, mặc dù các công nghệ này có thể mất nhiều thời gian để triển khai đầy đủ và ngay cả với công nghệ này, chi phí truy cập vào IO lưu trữ sẽ cũng vẫn còn đáng kể.
EIP-1077: Rơle gas cho các cuộc gọi hợp đồng
Trở ngại chính đối với việc áp dụng DApps là cần nhiều mã thông báo để thực hiện các hoạt động chuỗi. Người dùng được phép ký tin nhắn để thể hiện ý định thực thi, nhưng việc cho phép người chuyển tiếp bên thứ ba thực hiện tin nhắn sẽ tránh được vấn đề này, mặc dù giao dịch Ethereum luôn yêu cầu ETH, hợp đồng thông minh có thể sử dụng chữ ký EIP-191 và chuyển tiếp các ưu đãi thanh toán không đáng tin cậy với ETH Party thực hiện giao dịch. Một định dạng phổ biến trong đó chúng có thể được chuẩn hóa và cách người dùng cho phép các giao dịch được thanh toán bằng mã thông báo, mang lại sự linh hoạt cho các nhà phát triển ứng dụng và có thể trở thành cách chính mà người dùng ứng dụng tương tác với chuỗi khối.
EIP-1087: Đo khí cho hoạt động của SSTORE
EIP này đề xuất các thay đổi đối với phương thức nạp gas cho các hoạt động của EVMSSTORE để giảm chi phí gas không cần thiết và cung cấp các trường hợp sử dụng mới cho việc lưu trữ hợp đồng.
EIP-1285: Thêm GcallstipendGas vào mã lệnh GỌI
Gcallstipend tăng tham số phí trong opcode CALL từ 2.300 lên 3.500 đơn vị Gas.
EIP-1380: Giảm chi phí Gas của các cuộc gọi nội bộ
Các ngôn ngữ hợp đồng thông minh như Solidity và Vyper sẽ được hưởng lợi rất nhiều từ việc giảm chi phí gas của các cuộc gọi nội bộ, để họ có thể sử dụng CALL thay vì các cuộc gọi hoạt động nội bộ JUMP để sử dụng opcode.
EIP-1613: Mạng trạm xăng
Làm cho các hợp đồng thông minh (ví dụ: dapps) có thể truy cập được đối với người dùng không sử dụng ETH bằng cách cho phép các hợp đồng chấp nhận "COI" và thanh toán cho Gas.
Giao tiếp với các dapp hiện yêu cầu thanh toán phí gas bằng ETH, điều này chỉ giới hạn việc áp dụng dapp cho người dùng Ethereum. Do đó, chủ sở hữu hợp đồng có thể muốn thanh toán gas để tăng tỷ lệ thu hút người dùng hoặc yêu cầu người dùng của họ thanh toán gas bằng tiền pháp định. Ngoài ra, một bên thứ ba có thể muốn trợ cấp chi phí gas cho một số hợp đồng nhất định. Một giải pháp như được mô tả trong EIP-1077 có thể cho phép giao dịch từ các địa chỉ không chứa ETH.
EIP-1930: GỌI với ngữ nghĩa khí nghiêm ngặt. Hoàn nguyên nếu không đủ Gas
Thêm chức năng hợp đồng thông minh để thực hiện CUỘC GỌI với một lượng Gas cụ thể. Nếu điều này là không thể, thực hiện nên được trả lại.
EIP-2045: Chi phí gas dạng hạt cho opcodes EVM
Tính toán các opcode EVM (ADD, SUB, MUL, v.v.) thường được đánh giá quá cao so với I/O được sử dụng để lưu trữ các opcode (SLOAD, SSTORE, v.v.). Hiện tại, chi phí gas nhỏ nhất là 1 (tức là một đơn vị gas) và hầu hết các opcode tính toán đều có chi phí gần bằng 1 (ví dụ: 3, 5 hoặc 8), do đó, có giới hạn về nơi có thể giảm chi phí. Một đơn vị khí đốt tối thiểu mới, được gọi là "hạt", là một phần nhỏ của khí đốt, sẽ mở rộng phạm vi chi phí khí đốt để chúng có thể được hạ xuống dưới mức tối thiểu hiện tại.
EIP-2046: Giảm chi phí gas cho các cuộc gọi tĩnh để biên dịch trước
Giảm chi phí gas cơ bản khi gọi STATICCALL được biên dịch sẵn từ 700 xuống 40. Điều này sẽ cho phép sử dụng hiệu quả hơn các bản tiền biên dịch cũng như các bản tiền biên dịch với tổng chi phí nhỏ hơn 700.
EIP-2542: Opcodes mới TXGASLIMIT và CALLGASLIMIT
Cho phép các hợp đồng thông minh truy cập thông tin về giới hạn gas cho khung giao dịch và thực thi hiện tại. Với các khái niệm như chuyển tiếp, siêu giao dịch, phí gas và tóm tắt tài khoản ngày càng phổ biến, điều quan trọng đối với một số hợp đồng nhất định là có thể theo dõi chi tiêu gas với độ chính xác tuyệt đối.
EIP-3322: Mã mở kho gas tài khoản
Độ co giãn của nguồn cung khí và sự ổn định về giá được tạo ra bằng cách di chuyển Khí từ các khối có nhu cầu ít hơn sang các khối có nhu cầu lớn hơn. Thật không may, điều này thưởng cho sự tăng trưởng trạng thái không cần thiết. Bằng cách giới thiệu một cơ chế lưu trữ khí đốt tiên tiến, thị trường khí đốt sẽ yêu cầu ít lưu trữ và tính toán hơn.
EIP-2780: Giảm gas giao dịch nội bộ
Giảm chi phí giao dịch nội bộ từ 21.000 xuống 7.000 Gas.
Chi phí gas hiện tại của 21.000 giao dịch khiến việc gửi ETH trở nên rất tốn kém và chi phí cho các lô nhỏ (hàng chục đô la) thường rất cao. Mặc dù các EIP khác (ví dụ: EIP-1559) cũng tính đến các thay đổi về giá gas và đấu giá theo giá đầu tiên, nhưng việc giảm đáng kể chi phí gửi ETH và cho phép số lượng giao dịch như vậy lớn hơn nếu được thực hiện theo cách an toàn là điều tích cực.
Phím thứ hai: Rollup và Gas
Câu chuyện về Gas ban đầu là về việc xây dựng mô hình phí Gas Ethereum, hiện tại, ngoài việc giảm phí Gas, cách tốt nhất để mở rộng và giảm phí Gas là nén dữ liệu giao dịch.
Điều này liên quan nhiều đến Rollup.
Một giao dịch Ethereum đơn giản (gửi ETH) mất khoảng 110 byte. Tuy nhiên, quá trình truyền ETH trong Rollup chỉ mất 12 byte, do đó, Rollup có thể tăng khả năng mở rộng của chuỗi cơ sở lên khoảng 10 lần và trong các tính toán cụ thể, khả năng mở rộng thậm chí có thể tăng hơn 100 lần bằng cách sử dụng Rollup.
Đây là một thành tích hoàn toàn ấn tượng, đó là lý do tại sao Eth2.0 trở thành lộ trình phát triển lấy Rollup làm trung tâm.


