Gaseinheiten werden verwendet, um den Rechenaufwand zu messen, der für die Ausführung von Transaktionen auf Ethereum erforderlich ist. Da für jede Transaktion einige Rechenressourcen erforderlich sind, ist eine Gebühr erforderlich, die normalerweise als Gasgebühr oder Transaktionsgebühr bezeichnet wird.
Gasgebühren werden in Ether oder ETH, der Heimatwährung von Ethereum, bezahlt. Die Benzinkosten werden vor und nach dem London-Upgrade etwas anders berechnet.
Hinweis: Wenn jemand "Gas" sagt, meint er normalerweise "Gasgebühren", nicht die Einheit selbst. Für die Zwecke dieses Tutorials sind wir jedoch technisch korrekt und sagen „Gas“, wenn wir uns auf Einheiten beziehen, und „Gasgebühren“, wenn wir uns auf Gebühren in Ether beziehen.
1. Warum gibt es Gas?
Gas trägt dazu bei, das Ethereum-Netzwerk sicher zu halten. Durch die Erhebung einer Gebühr für jede im Netzwerk durchgeführte Berechnung werden schlechte Akteure daran gehindert, das Netzwerk zu spammen.
Um versehentliche oder böswillige Endlosschleifen in Smart Contracts zu vermeiden, die dazu führen würden, dass alle Ethereum-Knoten für immer hängen bleiben, legt das Gaslimit einer Transaktion eine Grenze dafür fest, wie viel Berechnung eine Transaktion verwenden kann.
2. Berechnungsmethode für Gas
Gwei steht für Giga-Wei und entspricht 1.000.000.000 (10^9) Wei. Wei ist die kleinste Stückelung der ETH. 1 ETH = 10^18 Wei.
Gasgebühr = Gaspreis * die Menge an Gas, die verbraucht werden muss
2.1. Die Methode zur Ermittlung des Gaspreises kann über Ether erzielt werden
import { getProvider } from '@wagmi/core'
export const getGasPrice = async () => {
const providers = getProvider()
const result = await providers.getGasPrice()
console.log('getGasPrice...', getGasPrice)
return result.toString()
}
2.2 Wie man die Menge des verbrauchten Gases erhält (der wichtigste Faktor, der das Gas beeinflusst, ist der Einheitspreis des Gases)
import { getProvider } from '@wagmi/core'
/**
*
* @param factor 需要多少个gas
* @returns
*/
export const estimateGasNumber = async (factor: number) => {
const provider = getProvider()
const gasPrice = await provider.getGasPrice()
const data = formatFixed(gasPrice.mul(factor), 18)
// 统一保留6位。
return data.slice(0, 8)
}
// 预判eth注册的gas费用
export const estimateEthRegisterGasFee = async () => {
const registerCount = 169869
const commitCount = 46255
const totalCount = registerCount + commitCount
const data = await estimateGasNumber(totalCount)
return data
}
// 预判bnb普通注册费用
export const estimateRegisterBnbGasFee = async () => {
const registryCount = 293767
const commitCount = 44027
const totalCount = commitCount + registryCount
const data = await estimateGasNumber(totalCount)
return data
}
// 预判bnb礼品卡注册费用
export const estimateRegisterBnbAndPointGasFee = async () => {
const registerCount = 304505
const commitCount = 44027
const totalCount = commitCount + registerCount
const data = await estimateGasNumber(totalCount)
return data
}
ENS-Browser:
https://testnet.bscscan.com/tx/0x48187736a21e19bc1d274002b3b557745695bf80e520ee0ea6b373e681c94809
Hinweis (die Gasmenge, die durch jeden Vorgang des Vertrags verbraucht wird, bleibt im Wesentlichen unverändert, ETH ist ein Beispiel):
1. Die für Commit erforderliche Gasmenge: 46255
2. Die für die Registrierung erforderliche Gasmenge: 169869
3. Die für die Zulassung erforderliche Gasmenge: 46339
4. Die für die Umwandlung erforderliche Gasmenge: 27966