Gas
Gas is a measure of computational effort required to execute a transaction or contract on the Sei network. Gas fees are paid in Sei and are used to incentivize validators to process transactions and smart contracts.
Key Terms and Concepts
Gas
A unit of measurement representing the work done to execute a transaction, "gas" varies based on the complexity of the transaction being executed.
Gas Price
The amount of Sei paid per unit of gas used when executing a transaction. The gas price is set by the user and is used to calculate the fee for the transaction.
Gas Limit
The maximum amount of gas the user wants the transaction to use. If the gas limit is set too low, the node attempting to run the transaction will run out of gas and fail to complete the transaction, using up the entire max gas without completing the transaction.
Fee
Fee = Gas Price * Gas Limit
.
To help developers and users estimate fees on Sei, please reference Sei Gas and the associated APIs (opens in a new tab) provided by Blocknative. Their estimates are based on real-time SEI data and advanced ML modeling to accurately and consistently estimate SEI transaction fees.
Using Blocknative's Gas API
To leverage Blocknative's you will need an API Key (opens in a new tab). Once you have an API key, you can request fee estimation for SEI:
curl -H "Authorization: your-apikey-here" https://api.blocknative.com/gasprices/blockprices?chainid=1329
Maximum Gas
The maximum gas limit for a transaction ensures that complex transactions do not consume excessive resources. You can find the maximum gas limits for each chain in the Sei chain registry (opens in a new tab) or by querying the /consensus_params
of the RPC node itself (ex. https://rpc.pacific-1.sei.io/consensus_params (opens in a new tab)).
Minimum Gas Price
Sei enforces minimum gas prices to prevent spam transactions. These prices are set per chain and are detailed in the chain registry (opens in a new tab).
Max Bytes
Each transaction has a maximum size in bytes, which is set per chain. This limit can be queried on the RPC node directly using the /consensus_params
endpoint.
Max Gas for Queries
Since queries also use gas, there is a maximum gas limit for queries. This limit is RPC specific, so check with your RPC provider to determine the maximum gas limit for queries.
Sending Gas in Transactions
When submitting a TX to be broadcast, users specify the gas price and the gas limit to create the fee.
Using seid
When using seid
, the fee is set using the --fees
flag, gas limit and gas price can be set with --gas
and --gas-prices
flags respectively.
seid tx bank send <from_address> <to_address> <amount> --gas <gas_limit> --gas-prices <gas_price> --fees <fee>
Using CosmJS
Gas fees must be sent in any CosmJS transaction using the StdFee
object.
const fee = {
amount: [{ denom: "usei", amount: "5000" }],
gas: "200000",
};
const result = await client.signAndBroadcast(address, [msg], fee, memo);
Using EVM (wagmi)
import { sendTransaction } from 'wagmi/actions'
sendTransaction({
request: {
to: '0xRecipientAddress',
value: '1000000000000000000', // 1 ETH
gasPrice: '100000000000', // 100 Gwei
gasLimit: '21000',
},
})
Optimizing Gas Prices for Smart Contracts
Optimizing gas prices involves efficient smart contract coding practices:
- Minimize storage operations.
- Use fixed-size data structures where possible.
- Avoid unnecessary computations.
- Use an optimizer (opens in a new tab) to reduce the size and efficiency of your smart contract.
Fee Grants
Sei allows users to pay for gas fees on behalf of other users. This feature is useful for dApps that want to cover the gas fees for their users. Learn more about Fee Grants in the Advanced Concepts section.