【区块链】走进web3的世界-gas费用

news2024/11/25 12:35:48

        气体单位用于衡量在以太坊上执行交易所需的计算量。由于每笔交易都需要一些计算资源来执行,因此需要一笔费用,通常称为Gas fee或Transaction fee 。

        汽油费以以太坊的本地货币——ether或ETH支付。汽油费的计算方式在伦敦升级前后略有不同。 

        注意:通常当有人说“Gas”时 - 他们指的是“Gas Fees”而不是单位本身。但是,出于本教程的目的,我们在技术上是正确的,在提到单位时说“Gas”,在提到 Ether 中的费用时说“Gas Fees”。

1、gas为什么存在?

        gas有助于保持以太坊网络的安全。通过对网络上执行的每次计算收取费用,可以防止不良行为者向网络发送垃圾邮件。

        为了避免智能合约中的意外或恶意无限循环,这将导致所有以太坊节点永远卡住,交易的气体限制设置了交易可以使用多少计算的限制。

2、gas的计算方式

Gwei 代表 Giga-Wei,等于 1,000,000,000 (10^9) wei。Wei是ETH的最小面额。1 ETH = 10^18 Wei。

    gas fee = gas的价格 * 需要消耗gas的数量

    2.1、gas价格的获取方式,可以通过ethers进行获取


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、消耗gas数量的获取方式(影响gas最大的因素是gas的单价)


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浏览器:                

https://testnet.bscscan.com/tx/0x48187736a21e19bc1d274002b3b557745695bf80e520ee0ea6b373e681c94809

注意(合约每一个操作消耗的gas数量基本不变,ETH举例):

     1、Commit所需的gas数量:46255

     2、注册所需的gas数量:169869

     3、授权需要的gas数量:46339

     4、转换需要的gas数量:27966

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/417639.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

进程间通信之共享内存

共享内存一. 什么是共享内存二. 共享内存有关函数1.获取key2.打开创建共享内存对象 - shmget3.映射空间地址 - shmat4.取消映射 - shmdt5.删除共享内存对象 - shmctl三. 实例四. 注意事项1.查看当前系统的共享内存2.当两个进程间ftok参数不一样时,shmid也不一样,共享内存不是同…

第04章_IDEA的安装与使用(下)

第04章_IDEA的安装与使用(下) 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 8. 快捷键的使用 8.1 常用快捷键 见《尚硅谷_宋红康_IntelliJ IDEA 常用快捷键一览表.md》…

【机器视觉1】光源介绍与选择

文章目录一、常见照明光源类型二、照明光源对比三、照明技术3.1 亮视野与暗视野3.2 低角度照明3.3 前向光直射照明3.4 前向光漫射照明3.5 背光照明-测量系统的最佳选择3.6 颜色与补色示例3.7 偏光技术应用四、镜头4.1 镜头的几个概念4.2 影响图像质量的关键因素4.3 成像尺寸4.4…

迁移Visual Studio2022到非系统盘

参考:VS2019/VS2022移动安装位置CSDN博客 已经安装VS Studio2022,默认在了C盘,下面是VS2022更换安装位置的方法:将安装好的文件剪切到其他盘,然后mklink链接。 第一步:将安装好的文件剪切到其他盘 以下为…

C++ 实现 matlab 的 buttord函数

文章目录1. matlab 的 buttord函数 的作用2. matlab 的 buttord函数 的使用方法3. C 实现代码4. 测试代码和结果4.1 定义滤波器的设计指标的结构体4.2 C 测试文件4.3 测试结果1. matlab 的 buttord函数 的作用 根据给定的巴特沃斯滤波器的指标计算滤波器的最低阶数和截止频率 …

【蓝桥杯嵌入式】蓝桥杯嵌入式第十四届省赛程序真题,真题分析与代码讲解

🎊【蓝桥杯嵌入式】专题正在持续更新中,原理图解析✨,各模块分析✨以及历年真题讲解✨都已更新完毕,欢迎大家前往订阅本专题🎏 🎏【蓝桥杯嵌入式】蓝桥杯第十届省赛真题 🎏【蓝桥杯嵌入式】蓝桥…

k8s ingress controller 使用

目录 一 安装Ingress controller 二 创建service deploy 三 创建ingress 四 测试 一 安装Ingress controller apiVersion: v1 kind: Namespace metadata:name: ingress-nginxlabels:app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/instance: ingress-nginx--- # …

怎么把wav转换成mp3格式,5种方法值得收藏

怎么把wav转换成mp3格式?wav格式相信很多小伙伴们不是很熟悉,这种文件格式通常用于录音室等一些专业音乐项目上,那么wav格式和mp3格式有什么区别呢?wav全名Waveform Audio File Format,是微软公司开发的一种声音文件格…

【HarmonyOS】小熊派鸿蒙系统搭建

文章目录一、BearPi-HM Micro 开发板介绍二、Linux镜像下载三、BearPi-HM Micro编译环境配置1.首先添加如下镜像源2.更新镜像源3.安装依赖库及工具4.安装hb5.测试hb是否安装成功四、安装mkimage工具1.新建tools目录2.下载mkimage.stm32工具到~/tools目录,并复制到/h…

谷粒商城-分布式基础篇3

1.商品服务-品牌管理 把逆向生成的前端代码复制到前端src\views\modules\product 这样我们基本的增删改查就有了 全局搜索isAuth,修改返回值为true 关闭eslint build\webpack.base.conf.js const createLintingRule () > ({// test: /\.(js|vue)$/,// loader: eslint-lo…

真题详解(线性表)-软件设计(四十八)

原创 真题详解(UML图)-软件设计(四十七)https://blog.csdn.net/ke1ying/article/details/130096516 TCP 属于传输层, 用TCP连接的应用层有: SMTP(25) HTTP(80) Telnet(…

kitti数据集中---标注数据label_2

标注文件中16个属性,即16列。但我们只能够看到前15列数据,因为第16列是针对测试场景下目标的置信度得分,也可以认为训练场景中得分全部为1但是没有专门标注出来。下图是000001.txt的标注内容和对应属性介绍。 相机坐标系中,y方向是…

【软考数据库】第一章 计算机系统基础知识

目录 1.1 计算机系统 1.1.1 计算机硬件组成 1.1.2 中央处理单元 1.1.3 数据表示 1.1.4 校验码 1.2 计算机体系结构 1.2.1 体系结构分类 1.2.2 指令系统存 1.2.3 储系系统 1.2.4 输入/输出技术 1.2.5 总线结构…

【Golang开发面经】字节跳动(三轮技术面)

一面 epoll、select、poll 区别 select 机制刚开始的时候,需要把 fd_set 从用户空间拷贝到内核空间,并且检测的 fd 数是有限制的,由 FD_SETSIZE 设置,一般是1024。数组实现。 poll 的实现和 select 非常相似,只是描…

Node【一】初识Node

文章目录🌟前言🌟Node.js🌟特性:🌟1. 单线程🌟2.异步IO🌟前端中的异步🌟Node中的异步🌟3.跨平台🌟4.运行速度快🌟 劣势:🌟…

ASP一个物流商品运输系统的设计与实现

物流运输行业的今天正朝着追求高效、低成本、稳定可靠的方向发展。本文详细介绍了网上物流管理系统,涉及到客户端运输线路设计、过程跟踪等功能模块以及管理员端的相应模块的具体实现,分析了整个系统的架构、工作原理、实现功能等。系统采用ASPMS SQL以B…

代码随想录算法训练营第43天 | 动态规划 背包理论基础 LeetCode1049.最后一块石头的重量II,494.目标和,474.一和零

代码随想录算法训练营第43天 | 动态规划 背包理论基础 LeetCode1049.最后一块石头的重量II,494.目标和,474.一和零 1049.最后一块石头的重量II 第一遍读题思考 重点在于背包问题的理论基础建议阅读以下两个链接。 背包问题理论基础,用二维…

sed命令基础

sed编辑器即流编辑器(stream editor),根据命令处理数据流中的数据,这些命令可从命令行输入,或者指定文件中输入。 sed执行的操作如下: 1)从输入读取一行数据 2)根据提供的命令匹配数…

KSS-ICP: 基于形状分析技术的点云配准方法

目录 1. 概述 2. 算法实现 3. 实验结果 总结 Reference 三维点云配准是三维视觉领域一个经典问题,涉及三维重建,定位,SLAM等具体应用问题。传统的配准可以被分为两条技术路线,即基于全局姿态匹配的方法以及基于特征点对应的方法。…

疫情下社区管理系统的设计与实现(论文+源码)_kaic

疫情下社区管理系统 摘 要:新冠疫情下的社区人员管理系统是基于SpringBoot搭建的一套前后端分离系统。面向疫情下的社区管理人员和社区用户,主要用于进行社区服务,进行高效的社区人员管理。具有一定的经济效益和社会效益。本文分析了新冠疫情…