Tổng quan
Phí giao dịch trên Ethereum hiện nay quá đắt đỏ, vậy trên Arbitrum làm sao để phí giao dịch trở nên rẻ hơn. Trong bài viết này, GFS Blockchain sẽ đi sâu vào cơ chế gas và fee của Arbitrum để bạn đọc hiểu rõ hơn, từ đó có thể thực hiện 1 giao dịch với chi phí rẻ nhất cho mình trên Arbitrum.
*** Bài viết này thuộc chuỗi Series Arbitrum Universe của GFS Blockchain nhằm theo dõi từng bước phát triển của Hệ sinh thái này. Tổng hợp các bài viết của Arbitrum Universe -> Xem tại đây
Gas trên Arbitrum
Gas trên Arbitrum được gọi là ArbGas. ArbGas được Arbitrum sử dụng để theo dõi chi phí thực hiện trên một chuỗi Arbitrum. Nó tương tự về khái niệm với Ethereum gas, theo nghĩa là mọi lệnh Arbitrum Virtual Machine đều có chi phí ArbGas và chi phí tính toán là tổng chi phí ArbGas của các hướng dẫn trong đó.
ArbGas không thể so sánh trực tiếp với Ethereum gas. Arbitrum không có giới hạn ArbGas và nói chung một chuỗi Arbitrum có thể tiêu thụ nhiều đơn vị ArbGas hơn mỗi giây tính toán, so với số lượng đơn vị Ethereum gas trong giới hạn gas của Ethereum. Các nhà phát triển và người dùng nên nghĩ về ArbGas phong phú hơn nhiều và rẻ hơn nhiều so với Ethereum gas.
Trước khi đi sâu vào tìm hiểu ArbGas, các bạn nên đọc lại bài viết “công nghệ Arbitrum” để hiểu rõ mô hình thiết kế công nghệ của Arbitrum, từ đó thuận lợi hơn khi tiếp thu kiến thức về ArbGas.
-> Xem tại đây
Nguồn gốc Arbgas
Một trong những nguyên tắc thiết kế của Arbitrum Virtual Machine (AVM) là mọi hướng dẫn phải mất một khoảng thời gian có thể dự đoán được để xác thực, chứng minh và kiểm tra bằng chứng. Như một hệ quả tất yếu, chúng ta muốn có một cách để đếm hoặc ước tính thời gian cần thiết để xác thực bất kỳ phép tính nào.
Có hai lý do cho việc này. Đầu tiên, chúng ta muốn đảm bảo rằng kiểm tra bằng chứng có chi phí dự đoán được, vì vậy chúng ta có thể dự đoán lượng gas ở layer1 (L1) cần thiết cho EthBridge và đảm bảo rằng EthBridge sẽ không bao giờ đến gần giới hạn gas L1. Thứ hai, ước tính chính xác thời gian xác thực là rất quan trọng để tối đa hóa thông lượng của chuỗi Rollup, vì nó cho phép chúng ta đặt giới hạn tốc độ của chuỗi một cách an toàn.
ArbGas trong khối Rollup
Mỗi khối Rollup bao gồm một lượng ArbGas được sử dụng để tính toán, điều này ngụ ý một lượng được sử dụng kể từ khối Rollup trước đó. Giống như mọi thứ khác trong khối Rollup, giá trị này chỉ là xác nhận quyền sở hữu của người tạo khối đã tạo khối ra và khối sẽ có thể bị đánh rớt trong một thử thách nếu xác nhận quyền sở hữu sai.
Mặc dù giá trị ArbGas trong một khối Rollup có thể không chính xác, nhưng nó có thể được sử dụng một cách đáng tin cậy như một giới hạn về số lượng tính toán được yêu cầu để xác thực khối. Điều này đúng vì trình xác nhận đang kiểm tra khối có thể cắt tính toán của họ sau khi đã tiêu thụ nhiều ArbGas. Nếu số lượng ArbGas đó đã được tiêu thụ mà không đến cuối khối Rollup, thì khối Rollup phải sai và người kiểm tra có thể thử thách nó một cách an toàn. Vì lý do này, giao thức Rollup có thể sử dụng xác nhận quyền sở hữu ArbGas một cách an toàn trong khối Rollup, trừ đi số tiền trong khối trước đó, như một giới hạn trên về thời gian cần thiết để xác thực tính đúng đắn của khối Rollup.
Một khối Rollup có thể được thử thách một cách an toàn ngay cả khi việc sử dụng ArbGas là gas cạnh duy nhất của khối là sai. Khi một xác nhận quyền sở hữu được chia nhỏ, các xác nhận quyền sở hữu sẽ bao gồm (đã xác nhận quyền sở hữu) các cách sử dụng ArbGas, phải tính bằng cách sử dụng ArbGas đối với xác nhận quyền sở hữu gốc. Theo đó, nếu số tiền ArbGas của xác nhận quyền sở hữu là sai, thì ít nhất một trong các yêu cầu phụ phải có số tiền ArbGas sai. Vì vậy, người thách đấu biết rằng số tiền ArbGas của yêu cầu sai sẽ luôn có thể tìm được yêu cầu phụ có số lượng ArbGas sai.
Cuối cùng, tranh chấp sẽ chuyển sang một hướng dẫn AVM duy nhất, với khiếu nại về việc sử dụng ArbGas của hướng dẫn đó. Xác minh bằng chứng một bước sẽ kiểm tra xem tuyên bố này có đúng không. Vì vậy, một yêu cầu ArbGas sai trong một khối Rollup có thể được theo sát đến tận một hướng dẫn duy nhất với số lượng ArbGas sai và sau đó sai sót sẽ được phát hiện bằng xác minh bằng chứng một bước trong EthBridge.
Tính toán ArbGas trong AVM
Kiến trúc AVM cũng thực hiện tính toán ArbGas nội bộ, sử dụng một thanh ghi máy có tên ArbGasRemaining, là một số nguyên không dấu 256-bit hoạt động như sau:
- Ban đầu, đăng ký được đặt thành MaxUint256. Ngay lập tức trước khi thực thi bất kỳ lệnh nào, chi phí ArbGas của lệnh đó sẽ được trừ khỏi thanh ghi. Nếu điều này sẽ làm cho giá trị của thanh ghi nhỏ hơn 0, một lỗi sẽ được tạo ra và giá trị của thanh ghi được đặt thành MaxUint256.
- Một lệnh đặc biệt có thể được sử dụng để đọc giá trị của thanh ghi. Một hướng dẫn đặc biệt khác có thể được sử dụng để đặt thanh ghi thành bất kỳ giá trị mong muốn nào.
Cơ chế này cho phép ArbOS kiểm soát và giải thích cho việc sử dụng mã ứng dụng ArbGas. ArbOS có thể giới hạn việc sử dụng ArbGas của một lệnh gọi ứng dụng.
Nếu mã ứng dụng trả lại quyền điều khiển cho thời gian chạy mà không tạo ra lỗi ngoài ArbGas, thì bộ chạy này có thể đọc thanh ghi ArbGasRemaining và trừ đi để xác định lượng ArbGas mà lệnh gọi ứng dụng đã sử dụng. Điều này có thể được tính vào tài khoản của ứng dụng.
Thời gian chạy có thể bỏ qua cơ chế tính toán ArbGas một cách an toàn. Nếu các lệnh đặc biệt không bao giờ được sử dụng, thanh ghi sẽ được đặt thành MaxInt256, và sẽ giảm nhưng trong thực tế sẽ không bao giờ về 0, do đó sẽ không bao giờ có lỗi nào được tạo ra.
Trình dịch biến mã EVM thành mã AVM tương đương sẽ không bao giờ tạo ra lệnh thiết lập thanh ghi ArbGasRemaining, vì vậy mã không đáng tin cậy không thể thao tác phân bổ gas của chính nó.
Tốc độ giới hạn
Tính bảo mật của chuỗi Arbitrum phụ thuộc vào giả định rằng khi một trình xác thực tạo một khối Rollup, các trình xác nhận khác sẽ kiểm tra nó và đưa ra một thử thách nếu nó sai. Điều này đòi hỏi các trình xác thực khác phải có thời gian và nguồn lực để kiểm tra từng khối Rollup kịp thời để đưa ra thử thách kịp thời. Giao thức Arbitrum tính đến điều này trong việc thiết lập thời hạn cho các khối Rollup.
Điều này đặt ra giới hạn tốc độ hiệu quả khi thực thi Arbitrum VM về lâu dài, VM không thể đạt được tiến độ nhanh hơn so với trình xác thực có thể mô phỏng quá trình thực thi của nó. Nếu các khối Rollup được xuất bản với tốc độ nhanh hơn tốc độ giới hạn, thời hạn của chúng sẽ ngày càng xa hơn trong tương lai. Do giới hạn, được thực thi bởi các hợp đồng giao thức Rollup, thời hạn có thể kéo dài bao lâu trong tương lai, điều này cuối cùng sẽ khiến các khối Rollup mới bị chậm lại, do đó thực thi giới hạn tốc độ hiệu quả.
Việc có thể đặt chính xác tốc độ giới hạn phụ thuộc vào khả năng ước tính thời gian cần thiết để xác thực tính toán AVM, với một số độ chính xác. Bất kỳ sự không chắc chắn nào trong việc ước tính thời gian xác thực sẽ buộc chúng tôi phải đặt giới hạn tốc độ thấp hơn để đảm bảo an toàn. Và chúng ta không muốn đặt giới hạn tốc độ thấp hơn, vì vậy chúng tôi cố gắng kích hoạt ước tính chính xác.
Phí
Các giao dịch của người dùng phải trả phí, để trang trải chi phí vận hành chuỗi. Các khoản phí này được ArbOS đánh giá và thu tại layer2 (L2). Chúng được tính bằng ETH. Một số khoản phí được thanh toán ngay lập tức cho người tổng hợp đã gửi giao dịch. Phần còn lại chuyển vào nhóm phí mạng được sử dụng để trả cho các nhà cung cấp dịch vụ, những người giúp kích hoạt hoạt động an toàn của chuỗi, chẳng hạn như trình xác nhận.
Phí được tính cho bốn tài nguyên mà một giao dịch có thể sử dụng:
- L2 tx: phí cơ bản cho mỗi giao dịch L2, để trang trải chi phí phục vụ một giao dịch
- L1 Calldata: phí cho mỗi đơn vị calldata L1 được quy trực tiếp cho giao dịch
- Tính toán: một khoản phí cho mỗi đơn vị ArbGas được sử dụng bởi giao dịch
- Lưu trữ: một khoản phí cho mỗi vị trí lưu trữ hợp đồng EVM, dựa trên mức tăng ròng về lưu trữ EVM do giao dịch
Mỗi tài nguyên trong số bốn tài nguyên này đều có một mức giá, có thể thay đổi theo thời gian. Giá tài nguyên, được tính bằng ETH (chính xác hơn là theo wei), được đặt như sau:
Giá cho L2 tx và L1 calldata
Giá của hai tài nguyên đầu tiên, L2 tx và L1 calldata, phụ thuộc vào giá gas L1. ArbOS không thể xem trực tiếp giá gas L1, vì vậy nó ước tính giá gas L1, như là một mức trung bình có trọng số của giá gas gần đây mà các nhà tổng hợp thực sự trả trên một danh sách địa chỉ cụ thể. ArbOS cũng giữ mức trung bình chạy (1 / batchSize) cho các lô giao dịch gần đây.
- Giá cơ sở của L2 tx là CxP/B, trong đó C là chi phí L1 cần thiết để người tổng hợp gửi một lô rỗng, P là giá gas L1 ước tính và (1/B) là giá trung bình (1/batchSize).
- Giá cơ sở của một đơn vị L1 calldata chỉ là giá gas L1 ước tính.
Các giá cơ sở này đảm bảo rằng số tiền thu thập được bằng với chi phí gửi giao dịch theo lô của người tổng hợp, giả sử là quy mô lô điển hình.
Nếu giao dịch được gửi bởi một người tổng hợp, ArbOS sẽ thu các khoản phí cơ bản này cho L2 tx và L1 calldata, đồng thời ghi có số tiền đó ngay lập tức cho người tổng hợp. ArbOS cũng thêm khoản đánh dấu 15% và gửi các khoản tiền đó vào tài khoản phí mạng, để giúp trang trải chi phí chung và các chi phí chuỗi khác. Nếu giao dịch không được gửi bởi người tổng hợp, ArbOS chỉ thu phần 15% và ghi có vào tài khoản phí mạng.
Để một trình tổng hợp được hoàn lại tiền khi gửi giao dịch, ba điều phải đúng:
- Lần thực hiện của giao dịch là chính xác. Điều này ngăn người tổng hợp gửi lại giao dịch để thu nhiều khoản bồi hoàn cho giao dịch đó.
- Người gửi giao dịch có ETH trong tài khoản L2 để thanh toán phí.
- Bộ tổng hợp được liệt kê là “bộ tổng hợp ưa thích” của người gửi. (ArbOS ghi lại một trình tổng hợp ưu tiên cho mỗi tài khoản, với mặc định là một địa chỉ tổng hợp cụ thể, được điều hành bởi Offchain Labs trên chuỗi Arbitrum hàng đầu.) Điều này ngăn một trình tổng hợp chạy trước các lô của trình tổng hợp khác để lấy cắp các khoản bồi hoàn của nó.
Nếu tất cả các điều kiện này không được đáp ứng, giao dịch được coi là không được gửi bởi người tổng hợp, do đó chỉ phần phí mạng được thu.
Giá để lưu trữ
Các giao dịch được tính phí dựa trên mức tăng ròng mà chúng gây ra trong tổng số lượng lưu trữ hợp đồng EVM hiện có. Việc giảm dung lượng lưu trữ hợp đồng không nhận được tín dụng. Mỗi vị trí lưu trữ có giá gấp 2000 lần giá gas L1 ước tính. Điều này có nghĩa là chi phí lưu trữ cao hơn khoảng 10% so với chi phí lưu trữ trên chuỗi L1.
Giá cho ArbGas
Định giá ArbGas phụ thuộc vào mức giá tối thiểu và cơ chế định giá tắc nghẽn.
Giá ArbGas tối thiểu được đặt bằng giá gas L1 ước tính chia cho 10.000. Giá của ArbGas sẽ không bao giờ thấp hơn mức này.
Giá sẽ tăng trên mức tối thiểu nếu chuỗi bắt đầu tắc nghẽn. Ý tưởng tương tự như Ethereum, để đối phó với nguy cơ quá tải bằng cách tăng giá gas đủ để nhu cầu sẽ đáp ứng cung. Cơ chế này được lấy cảm hứng từ EIP-1559 được đề xuất của Ethereum, sử dụng giá cơ sở, ở đầu mỗi khối, được nhân với hệ số từ 7/8 đến 9/8, tùy thuộc vào mức độ bận rộn của chuỗi. Khi cầu dường như đang vượt quá cung, hệ số sẽ nhiều hơn 1; khi cung vượt quá cầu, hệ số sẽ nhỏ hơn 1. (Nhưng giá không bao giờ xuống dưới mức tối thiểu)
Cơ chế điều chỉnh tự động phụ thuộc vào “ArbGas pool” được ArbOS theo dõi. Nhóm ArbGas có dung lượng tối đa bằng 60 giây tính toán tốc độ đầy đủ ở giới hạn tốc độ của chuỗi. ArbGas được sử dụng bởi các giao dịch được trừ khỏi nhóm gas và ở đầu mỗi khối Ethereum mới, ArbGas được thêm vào nhóm tương ứng với xử lý full-speed cho số giây timestamp kể từ khối cuối cùng (tùy thuộc vào dung lượng nhóm tối đa ).
Sau khi thêm gas mới vào nhóm, nếu kích thước nhóm gas mới là G, thì giá ArbGas hiện tại được nhân với (1350S – G) / (1200S) trong đó S là giới hạn tốc độ ArbGas của chuỗi. Đại lượng này sẽ là 7/8 khi G = 60S (kích thước vùng gas lớn nhất) và sẽ là 9/8 khi G = 0.
Giới hạn tắc nghẽn
Nhóm gas cũng được sử dụng để giới hạn lượng gas có sẵn cho các giao dịch tại timestamp cụ thể. Đặc biệt, nếu một giao dịch có thể yêu cầu nhiều gas hơn lượng gas có sẵn trong vùng gas, giao dịch đó sẽ bị từ chối mà không được thực hiện, trả lại biên lai giao dịch cho thấy rằng giao dịch đã bị bỏ do tắc nghẽn. Điều này ngăn chuỗi tạo ra một công việc tồn đọng rất lâu, nếu các giao dịch được gửi liên tục nhanh hơn mức chúng có thể được xác thực, thì cuối cùng gas sẽ trở nên trống rỗng và các giao dịch sẽ bị loại bỏ. Trong khi đó, giá giao dịch sẽ leo thang, do đó cơ chế giá sẽ có khả năng đưa cung và cầu trở lại sự liên kết.
Tính toán ArbGas và đấu giá theo giá thứ hai
Như trên Ethereum, các giao dịch Arbitrum gửi một lượng gas tối đa (ở đây gọi tắt là “maxgas”) và giá mua gas (ở đây gọi tắt là “gasbid”). Một giao dịch sẽ sử dụng đến lượng gas tối đa của nó hoặc sẽ hoàn nguyên nếu cần thêm gas.
Trên Ethereum, giá gas trả cho một giao dịch bằng với giá gasbid của nó. Ngược lại, Arbitrum coi gasbid là số tiền tối đa mà giao dịch sẵn sàng trả cho gas. Giá thực tế được trả bằng với giá Arbitrum ArbGas hiện tại, bất kể giá đó là gì, miễn là nó nhỏ hơn hoặc bằng giá gasbid của giao dịch. Nếu gasbid của giao dịch thấp hơn giá gas Arbitrum hiện tại, giao dịch sẽ bị giảm và biên lai giao dịch được phát hành, nói rằng gasbid của giao dịch quá thấp.
Vì vậy, các giao dịch Arbitrum không nên cố gắng “đánh lừa” sự đắt đỏ của họ bằng cách cố gắng khớp nó quá chặt chẽ với giá ArbGas hiện tại. Thay vào đó, các giao dịch nên đặt gasbid của chúng bằng với giá tối đa mà họ sẵn sàng trả cho ArbGas, với lưu ý rằng người gửi phải có ít nhất gasbid * maxgas trong tài khoản ETH L2 của mình.
Kết luận
Ông bà xưa hay nói đồng tiền đi liền khúc ruột, nên rất hy vọng bài viết này giúp các bạn hiểu về cơ chế tính gas và fee của Arbitrum, từ đó tối ưu chi phí khi thực hiện các giao dịch với các ứng dụng được xây dựng trên Arbitrum.
*** Hãy cùng theo dõi sự phát triển của Arbitrum qua các bài viết cập nhật sau này thông qua chuyên đề Hệ sinh thái Arbitrum -> Tại đây
Hàng tuần, GFS Blockchain sẽ cập nhật các thông tin mới nhất về thị trường Crypto, mọi người hãy thường xuyên theo dõi tại website và đừng quên tham gia vào nhóm cộng đồng của GFS để thảo luận với các thành viên khác nhé.