科普贴 | 以太坊网络中的Gas Limit 和 Gas Price 是什么概念?
接触以太坊的同学都听过 Gas/ Gas Price/ Gas Limit,那么这些词汇究竟是什么意思?
还有,为什么有时候你的ETH转账会很慢?如何提高ETH转账速度?
Ethereum平台
Vitalik Buterin于2015年7月推出了全球市值第二大加密货币的平台叫做Ethereum。 该平台目标是为开发人员提供一个开放、分布式网络,允许启动自己的分散式应用程序(DApps)和智能合约。 若比特币网络是对等支付系统,则以太坊被设计为通过分散式虚拟机(EVM)执行程序代码。
Ethereum网络与Bitcoin不同,前者里不仅运行一种加密货币,除了ETH之外,还有Gas和Gas Limit。 它们不仅允许用户支付交易费用,还可以启动智能合约和DApps,并将数据存储在区块链中。
Gas 是什么?
Gas 翻译成中文就是“燃气”,是以太坊世界的燃料,它决定了以太坊网络生态系统的正常运行。
Gas 用来衡量执行某些动作需要多少“工作量”,这些“工作量”就是为了执行该动作支付给网络的费用额。通俗理解,Gas 是给矿工的佣金,并以 ETH 支付,无论是交易、执行智能合约并启动 DApps,还是支付数据存储费用,都需要用到 Gas。
▲gas 的工作原理
Gas Limit 和 Gas Price 是什么?
ETH 与其他加密货币不同,其作用不仅限于支付还用维护网络,一枚 ETH 分为:Finney,Szabo,Gwei,Mwei,Kwei 和 Wei,其中Wei是最小的 ETH 单位,一个ETH 等于一千 Finney,一百万 Szabo,十亿Gwei和百万万亿 Wei 。
Gas由两个部分组成: 限制(Gas limit)和价格(Gas Price)。Gas Limit 是用户愿意为执行某个操作或确认交易支付的最大Gas量(最少21,000)。Gas Price 是 Gwei 的数量,用户愿意花费于每个 Gas 单位的价钱。
当进行每笔交易时,发送人设定Gas Limit 和Gas Price,将 Gas Limit*Gas Price ,就得到了ETH交易佣金的成本。
发送者支付的Gas Price越高,则其交易的优先级越重要,因为矿工的报酬会更高。 此选项适用于那些参与热门ICO预售的人,并他们希望增加自己交易列入到下一个区块的机会。 但是,通过设置较低燃料价格(GasPrice),发送者可以节省资金,例如,将资金转到另一个钱包。
交易完成后,所有未使用的Gas都会退到发送者账户。 但是,如果用户设置的限制值太低,那么ta的交易被认为是无效的,并且会因为“Gas不足”错误而被取消,并且用于计算的Gas不会退到账户。 值得注意的是,无论交易是否通过,发送者总是向矿工支付计算费用。
因此设置 Gas 需要考虑的问题:
- 不同的操作会产生不同的 Gas 成本。
- Gas Price越高,交易优先级越高,打包交易速度越快。
- Gas 用完时,矿工将停止执行。也即当设置的最大Gas Limit用完时,交易还未完成,那么交易失败,并且已消耗的费用不再退回。
- 如果设置的最大Gas Limit未用完时,还有剩余的 Gas,将立即退还给发起交易的人员。
提高Gas Price是否会加快开采速度?
交易费用会交给挖矿的矿工。当矿工挖矿时,他们必须决定确认哪些交易。为了鼓励矿工在区块中确认你的交易,你可以设置一个足够高的 Gas Price,这样你就跳到了别人的前面,被优先确认交易。如果你的 Gas price 设置得过低,低于矿工的预期值,就会被忽视不予确认。
如果你想少花一些交易费,就降低 Gas price,但是价格太低会影响交易的确认速度,适用于不紧急的交易。目前为止,确认交易使用 1 Gwei 需要大约30分钟,而用 40 Gwei 大约1-2分钟。
想知道更多区块链的资讯和干货,请持续关注 wx公众号:『猫说区块链』。

科普贴 | 以太坊网络中的Gas Limit 和 Gas Price 是什么概念?的更多相关文章
- 以太坊ETH中智能合约消耗的Gas、Gas Limit是什么?
以太坊ETH中智能合约消耗的Gas.Gas Limit是什么? 数字货币交易一般是有交易费的,比特币(BTC)的交易费很容易理解,就是直接支付一定额度的BTC作为手续费.而以太坊(ETH)的交易费表面 ...
- 通过Geth搭建私有以太坊网络
前言 为了进一步了解以太坊区块链网络的工作方式和运行原理,笔者通过官方软件Geth搭建了私有以太坊网络fantasynetwork,最终实现了单机和多机节点间的相互连通:首先通过VMware Work ...
- 科普贴 | 以太坊代币钱包MyEtherWallet使用教程,一步步教你玩转MEW
MyEtherWallet 是一个以太坊的网页钱包,使用非常简单,打开网页就可以使用,源代码开源,不会在服务器上存储用户的钱包信息如私钥和密码.支持 Ledger Wallet.TREZOR 等硬件钱 ...
- 使用Mist部署Contract到Rinkeby以太坊网络
本文使用MyEthWallet新建一个账号,并导入到Mist中,然后部署Contract到Rinkeby网络使用MyEthWallet新建账号的好处是除了JSON文件之外,还能得到一张它生成的pdf( ...
- [中文] 以太坊(Ethereum )白皮书
以太坊(Ethereum ):下一代智能合约和去中心化应用平台 翻译|巨蟹 .少平 译者注|中文读者可以到以太坊爱好者社区(www.ethfans.org)获取最新的以太坊信息. 当中本聪在2009年 ...
- 区块链入门到实战(25)之以太坊(Ethereum) – 以太币单位
以太币的主要单位是以太/Ether,即一个以太币,以太币的最小单位是wei. 以太币最小单位 wei 是以虚拟币先驱人物:戴伟 Wei Dai 命名,戴伟 W Dai 是一位兴趣广泛的密码学专家,他在 ...
- 以太坊开发DApp入门教程——区块链投票系统(一)
概述 对初学者,首先要了解以太坊开发相关的基本概念. 学习以太坊开发的一般前序知识要求,最好对以下技术已经有一些基本了解: 一种面向对象的开发语言,例如:Python,Ruby,Java... 前 ...
- 通俗讲解:PoW共识机制与以太坊的关系、Ghost协议 及 PoS共识机制的变种---Casper
作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...
- 以太坊(ethereum)开发DApp应用的入门区块链技术教程
概述 对初学者,首先要了解以太坊开发相关的基本概念. 学习以太坊开发的一般前序知识要求,最好对以下技术已经有一些基本了解: 一种面向对象的开发语言,例如:Python,Ruby,Java... 前 ...
随机推荐
- redis 持久化与备份策略
持久化(persistence) 本文是 Redis 持久化文档 的中文翻译. 这篇文章提供了 Redis 持久化的技术性描述,推荐所有 Redis 用户阅读. 要更广泛地了解 Redis 持久化,以 ...
- Linux基础第一课——基础知识了解
前言 发展历史 linus 林纳斯 赫尔辛基大学 在自己的笔记本上安上自己写的操作系统 基于Linux内核 Linux内核 也是基于unix内核开发出来 unix 不开源 只能军方和大学使用 Linu ...
- Redis系列二:reids介绍
一.什么是redis.redis有哪些特性.redis有哪些应用场景.redis的版本 1. 什么是redis redis是一种基于键值对(key-value)数据库,其中value可以为string ...
- gcd以及exgcd入门讲解
gcd就是最大公约数,gcd(x, y)一般用(x, y)表示.与此相对的是lcm,最小公倍数,lcm(x, y)一般用[x, y]表示. 人人都知道:lcm(x, y) = x * y / gcd( ...
- 微信支付的notify.php中如何获取订单号(php版)
不要直接使用demo中的notify.php,重写notify.php,继承WxPayNotify(可参考微信api),具体如下: require_once "WxPay.Api.php&q ...
- [Java123] JBoss
https://blog.csdn.net/taogebx/article/details/4620760
- Dubbo -- 系统学习 笔记 -- 目录
用户指南 入门 背景 需求 架构 用法 快速启动 服务提供者 服务消费者 依赖 必需依赖 缺省依赖 可选依赖 成熟度 功能成熟度 策略成熟度 配置 Xml配置 属性配置 注解配置 API配置 示例 启 ...
- [转]OpenGL进阶(一) - 多视口
直接给出原文链接:OpenGL进阶(一) - 多视口
- Git同时使用不同平台代码仓库
问题描述 公司项目使用代码仓库为gitinn/gitlab等,个人项目使用github进行托管,而公司项目和个人项目设置的邮箱和用户名是不同的,而ssh的密钥对又是基于这两个信息生成的,所以此时想要同 ...
- java过滤器filter使用
一:filter:过滤器,拦截servlet的请求和响应. 1. package jd.com.filter; import javax.servlet.*; import java.io.IOExc ...