首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >关于eth gas的思考

关于eth gas的思考

作者头像
rectinajh
发布于 2018-05-17 08:31:06
发布于 2018-05-17 08:31:06
2K0
举报
理解Gas需要的几个概念:

旷工费:除了转账金额需要额外支付给以太坊网络旷工的费用 gas cost交易旷工费用 ( 也是也是以太坊的交易费用 ) =gas used数量 * gas price ( gas 单价,以太币计价)

Gas:以太坊每一步操作都需要消耗Gas,执行总量就是Gas

Gas Price:每一步操作的单价,一般用GWei作为单位,乘以Gas就是需要支付的矿工费。Gas Price是运行一个特别的交易或程序(被称作合约)所需的gas。 一个区块的gas费用可以用来暗示计算工作量,交易量和区块大小。gas费用支付给矿工(或PoS中的担保承包人)。Gas价格的设定是根据多少用户愿意花费和多少进程节点愿意接受的平衡价格。

Gas Limit:gas Limit为每个区块所能承载的最多gas消耗,是一种区块交易数量限制,被视为计算工作量,交易量和区块大小的最大值。以太坊为防止某些错误或者恶意的智能合约(比如一个死循环)消耗掉用户大量手续费,所以对默认Gas上限做了限制,但是有些合约(比如复杂的众筹合约)的确会消耗大量的Gas,所以需要手动设置上限。

Gwei单位:以太坊有很多单位,Gwei最容易记,因为以太坊一共支持18位小数,Gwei正好是一半,9位小数的那个单位。

设计初衷:

gas背后遵循的原则是使以太坊网络上每个交易或计算成本保持稳定的价值。希望通过这个体系将使用价值与投资价值分离,避免因为ETH价格波动,造成系统手续费的波动。使每一次交易的gas cost 不是随着ETH价格的波动而波动,小V就设计了gas price这个变量。

gas的目的是限制执行交易所需的工作量,同时为执行支付费用。gas 用来衡量你的这笔交易(或者合约代码调用)所消耗的资源(包括计算量,存储,带宽等),一笔交易所产生的转账费用会奖励给打包包含这笔交易的区块的矿工。区块不是哪个矿工产生的,所有的矿工都会竞争下一个区块的打包权,胜出者可以打包下一个区块。交易不一定会存在一个区块,它交易被广播出去后,在数秒内全网所有的节点都会接收到这笔交易,但是它不一定会被打包,如它的 gas price 非常低。

GAS与以太坊网络拥堵: 太坊网络又堵了,所谓堵,表现为默认的Gas设置,转账一直在等待打包,一直不能到账,而且还无法判断是否会到账。结果就是,你买个币,等待打包一上午,你还不能重新设置Gas,因为你不知道那笔等待打包的会不会成功,只能眼睁睁的看着价格上去。 拥堵的核心问题其实就是以太坊每秒的打包笔数限制。

如果取消掉Gas会怎么样?

相当于不给矿工钱,然后想让别人替你干活?Pengding吧。。。

当然你非要取消掉Gas费,让发送交易的真实成本保持一致。在私有链是可以实现的,将默认的gas Price改成0。

如何去除gas Price

环境准备: Mac OS 10.12.6 Go Version: go1.10 Node v9.5.0 go-ethereum Version :v1.8.2 Geth Version: 1.8.2-unstable

1,git clone https://github.com/ethereum/go-ethereum.git

2, 命令行输入:geth -h

--gasprice "18000000000" Minimal gas price to accept for mining a transactions

这是系统默认的最小挖矿交易的gasPrice交易费。

3,在go-ethereum里面的找到相关代码:

屏幕快照 2018-03-09 下午1.53.24.png

GasPrice: big.NewInt(18 * params.Shannon),

尝试设置:GasPrice: big.NewInt(0 * params.Shannon),

编译代码: make geth make all

4,再次命令行输入:geth -h

屏幕快照 2018-03-09 下午1.59.15.png

5,启动一个以太坊节点,验证的GasPrice geth --datadir "./" --nodiscover console

eth.gasPrice

mmexport1520575399591.jpg

6,其他相关的GasPrice 交易的时候,gasPrice是动态改变的,交易者、智能合约设计者、矿工三方设定,所以系统有个SuggestGasPrice。

Accounts/abi/bind/backend/simulated.go

屏幕快照 2018-03-09 下午3.39.39.png

// SuggestGasPrice implements ContractTransactor.SuggestGasPrice. Since the simulated // chain doens't have miners, we just return a gas price of 1 for any call. func (b SimulatedBackend) SuggestGasPrice(ctx context.Context) (big.Int, error) { return big.NewInt(0), nil }

如果没有矿工因素的影响,SuggestGasPrice默认是1,如果强制将gasPrice默认设置为0,也就说任何交易的gasPrice都会是0,

suggest Price Accounts/abi/bind/base.go

屏幕快照 2018-03-09 下午4.03.07.png

//测试:让 gas allowance直接走c.transactor.SuggestGasPrice的方法。 // Figure out the gas allowance and gas price values gasPrice := opts.GasPrice //if gasPrice == nil { gasPrice, err = c.transactor.SuggestGasPrice(ensureContext(opts.Context)) if err != nil { return nil, fmt.Errorf("failed to suggest gas price: %v", err) } //}

发送一个交易验证一下gasPrice:

mmexport1520575393604.jpg

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.03.09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Solidity:Gas
在 Solidity 和以太坊中,gas 是一个非常重要的概念。它是衡量在以太坊区块链上执行交易或运行智能合约所需的计算工作量的单位。基本上,每一次在以太坊网络中执行某种操作,如交易或合约调用,都需要消耗一定数量的 gas。
孟斯特
2024/05/28
2020
Solidity:Gas
以太坊智能合约开发第二篇:理解以太坊相关概念
很多人都说比特币是区块链1.0,以太坊是区块链2.0。在以太坊平台上,可以开发各种各样的去中心化应用,这些应用构成了以太坊的整个生态。目前,以太坊是区块链世界里生态建设最好的底层公链。本篇将以通俗易懂的方式介绍以太坊开发中涉及到的相关概念,带领大家轻松入门。 以太坊 以太坊(Ethereum)是一个建立在区块链技术之上的、图灵完备的去中心化应用平台。它允许任何人在平台中通过智能合约技术开发、部署和使用去中心化应用。 > 有没有感到和ios、Android平台有点类似? 在以太坊未问世之前,写区块链的应用是
Marser
2018/06/25
1.3K0
【易错概念】以太坊的账户、交易、Gas和Gas Limit的概念
所有以太坊区块链上的行动都是由各账户发送的交易激活。每次一个合约账户收到一个交易,交易自带的参数都会成为代码的输入值运行。合约代码会被以太坊虚拟机(EVM)在每一个参与网络的节点上运行,以作为它们新区块的验证。
辉哥
2018/08/10
1.2K0
带你了解下关于gas一些基本常识
在以太坊出现的很多地方我们都能看到gas这个东西,比如购买NFT需要花费ETH,同时也需要支付gas费用,铸造NFT也是同样。那么究竟什么是gas费,为啥要支付gas费呢?
用户7634691
2023/02/24
6320
带你了解下关于gas一些基本常识
EVM Gas 分析
Gas 就像是机车行驶过程中需要燃烧燃料一样,对于区块链信息的记录至关重要,它是指在网络上执行特定操作所需的计算工作量。
Footprint Analytics
2023/02/02
8420
EVM Gas 分析
web3j教程:java使用web3j开发以太坊智能合约交易
为了进行这些交易,必须有以太币(以太坊区块链的代币)存在于交易发生的以太坊账户中。这是为了支付gas成本,这是为支付参与交易的以太坊客户端的交易执行成本,支付了这个成本就能将结果提交到以太坊区块链上。获得以太币的说明下文会说到。
笔阁
2018/09/04
8.1K1
web3j教程:java使用web3j开发以太坊智能合约交易
第三课 以太坊术语说明及开发者资源列表
也称钱包,提供账户管理、挖矿、转账、智能合约的部署和执行等等功能,以太坊节点利用以太坊客户端接入到以太坊网络。 现在以太坊客户端主要有:Wallent/ist , Geth, Parity, Harmony,
辉哥
2018/08/10
8260
第三课 以太坊术语说明及开发者资源列表
【安全】Fomo3D死亡3分钟的交易攻击
【本文目标】 (1)通过本文分析,了解Fomo3D游戏第一轮结束的交易攻击流程及具体地址; (2)介绍“拒绝服务攻击”(Denial of Service,DoS)的原理。
辉哥
2018/09/26
1K0
ethereum原理-gas说明
简单的说就是手续费的一种变体,本质还是转账费用,只能在设计上,功能更复杂,用处更多。 即然是手续费,为什么不干脆一次性收取或者设定一个转账比例,不是更简单? 这个后面说。
潇洒
2023/10/23
3780
轻松理解以太坊工作原理
以太坊使用Solidity编程语言编写智能合约。智能合约完全按照程序运行,而且防停机、防审查、防欺诈、防第三方干扰。部署智能合约或者调用其方法需要用到以太币。
前端修罗场
2022/07/29
1.9K0
轻松理解以太坊工作原理
关于交易的gas 与gassPrice概念已经交易阻塞
以太坊的交易是通过旷工从矿池中挖矿完成的,而挖矿是❓通俗讲就是将矿池中提交的交易按照价格高低进行筛选打包成块的过程
大话swift
2019/09/25
8370
关于交易的gas 与gassPrice概念已经交易阻塞
EIP-1559 对 gas 费计算的影响
今天有同学问我 etherscan 里先生的 "Txn Savings Fees" 是啥,我就顺便把以太坊新的 gas 费计算方式讲一下吧。
Tiny熊
2022/11/07
1.2K0
EIP-1559 对 gas 费计算的影响
“以太坊智能合约设计缺陷问题”影响分析报告
在审计各种智能合约之后,我发现了一类很有趣的问题,这类问题出现的原因不只是由于开发者的疏忽,也同样是因为智能合约本身的一些设计缺陷,在开发者不了解这些问题的基础上,就容易出现问题。
LoRexxar
2023/02/21
4020
“以太坊智能合约设计缺陷问题”影响分析报告
以太坊基本概念:交易及交易费用
交易 一笔交易是一条消息,从一个账户发送到另一个账户(可能是相同的账户或者零账户,见下文)。交易可以包含二进制数据(payload)和以太币。 如果目标账户包含代码,该代码会执行,payload就是输入数据。 如果目标账户是零账户(账户地址是0),交易将创建一个新合约。正如上文所讲,这个合约地址不是零地址,而是由合约创建者的地址和该地址发出过的交易数量(被称为nonce)计算得到。创建合约交易的payload被当作EVM字节码执行。执行的输出做为合约代码被永久存储。这意味着,为了创建一个合约,你不需要向合约
用户1408045
2018/05/17
1.2K0
BTA | 杨德升:掌握这些技术点,现在就能做一个Dapp!
区块链大本营出品 整理 | Aholiab 3月30日~3月31日,由CSDN、火星财经主办,中关村区块链产业联盟、柏链道捷、区块链大本营、TokenSky联合主办的区块链技术及应用峰会(BTA)·中国,在北京喜来登长城饭店盛大举行。 作为时下最热门的行业话题,区块链以其颠覆性的技术理念,正在对各个行业施以影响,吸引了全球技术圈、投资者、创业者的关注。为了深入理解区块链及其背后的技术本质,本次大会邀请了80+区块链技术领导人物、100+区块链投资商业大咖,就区块链的发展趋势进行探讨,让人们有机会全面了解这一
区块链大本营
2018/05/10
1.6K0
EOS与ETH体系结构比较
以太坊理解成为一个在其上可以开发运作各种去中心化的应用(Dapps)的去中心化平台,同时它有一个优势在于,它确保了它的用户在运行这些应用程序(Dapps)时不受任何第三方的约束。 EOS将是一个区块链操作系统,其上它向所有的应用程序开发者提供了数据库、账目权限设置、执行调度、认证以及网络应用通信等功能。EOS将提供给开发者合适的工具,以使得他们更加专注于他们自身应用的逻辑设计,而不用担心加密算法的实现或者与去中心化的计算机之间的通信;同时,EOS也将尽可能达到高并发,使区块链并发达到百万交易每秒的级别。 以
rectinajh
2018/05/17
1.4K0
以太坊“后偷渡时代”盗币之“拾荒攻击”
作者:Sissel@知道创宇404区块链安全研究团队 发布时间:2018/08/20
Seebug漏洞平台
2018/09/30
1.6K0
以太坊“后偷渡时代”盗币之“拾荒攻击”
参投ICO失败的原因竟然是Gas Limit=25200
最近币圈的ICO太火,有些项目在ico.info平台上几分钟就完成众筹,一些朋友纵然使出各种解数,还是抢不到。然后他们就开始使用以太坊钱包参投项目,安装钱包和参投的过程本来并不麻烦,比如之前写过的《图
申龙斌
2018/03/06
1.9K0
参投ICO失败的原因竟然是Gas Limit=25200
以太坊介绍和使用
以太坊是一个能够在区块链上实现智能合约、开源的底层系统。换言之,以太坊是可编程的区块链,它并不是给用户一系列预先设定好的操作(例如比特币交易),而是允许用户按照自己的意愿创建复杂的操作。这样一来,以太坊是就可以作为多种类型去中心化区块链应用的平台,这些应用比如包括之前很火的各种代币但并不仅限于此,我们可以做很多除了代币之外的东西,比如你可以输出一行代表自己不是外行身份的hello world,或者在上面做一个简单的计算器,总之你可以在上面实现你想要的任何功能。
fnatic
2022/07/15
37.5K0
以太坊合约审计 CheckList 之“以太坊智能合约设计缺陷问题”影响分析报告
作者:LoRexxar'@知道创宇404区块链安全研究团队 发布时间:2018/08/22
Seebug漏洞平台
2018/09/30
5880
以太坊合约审计 CheckList 之“以太坊智能合约设计缺陷问题”影响分析报告
相关推荐
Solidity:Gas
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档