以太坊gas计算方法
1. 以太国际空间谁知道怎么玩。EIS币怎么交易
现在我们大家都很关注关于以太坊方面的问题,那么关于以太币怎么交易?我想我们大家应该会很想了解一些内容,那么下面就让我们小编在这里就来为大家好好的介绍一下很多内容关于以太币怎么交易?以太坊的交易最直观解释:从外部账户发送到区块链上的另一个账户的消息和签名的数据包。
包含如下内容:
发送者的签名
接收的地址
转移的数字货币数量等内容
以太坊上的交易都是需要支付费用,和比特币以比特币来支付一定的交易费用不同,以太坊上固定了这个环节,那么这个间接理解是以太坊的一种安全防范错误,防止了大量的无意义的交易,保证一定的安全性,特别是智能合约的创建、执行、调用都需要消耗费用,那么也保证了整个系统的稳定性,防止了一些链上无意义的恶意行为。
交易手续费
以太坊的核心是EVM,以太坊虚拟机,那么在EVM中执行的字节码都是要支付费用。也就是经常看到的Gas、Gas limit、Gas Price这几个概念。
Gas:字面理解就是汽油,以太坊和日常的汽车一样需要Gas才能运行。Gas是一笔交易过程中计算消耗的基本单位。有一个列表可以直观看到在以太坊中操作的Gas消耗量:
操作Gas消耗具体内容
step1执行周期的默认费用。
stop0终止操作是免费的。
suicide0智能合约账户的内部数据存储空间,当合约账户调用suicide()方法时,该值将被置为null。
sha320加解密
sload20在固定的存储器中去获取
sstore100输入到固定的存储器中
balance20账户余额
create100创建合约
call20初始化一个只读调用
memory1扩充内存额外支付的费用
txdata5交易过程中数据或者编码的每一个字节的消耗
transaction500交易费用
contract creation53000homestead中目前从21000调整到53000
所以有些公司或者个人觉得区块链技术去中介化,不需要中心服务器,这种开发模式是比较便宜的,但是事实上区块链的开发不比之前的那些传统软件开发来的便宜。
Gas Price:字面理解汽油价格,这个就像你去加油站,95#汽油今天是什么价格。一个Gas Price就是单价,那么你的交易费用=Gas*Gas Price,然后以以太币来ether来支出。当然你觉得我不想支付费用,你可以设置Gas Price为0,但是选择权在矿工手中,矿工有权选择收纳交易和收取费用,那么最简单的想想很难让一个矿工去接收一个价格很低的交易吧。另外提一句,以太坊默认的Gas Price是1wei。
Gas Limit:字面理解就是Gas的限制,限制是必要的,没有限制就没有约束。这个Gas Limit是有两个意思的。首先针对单个交易,那么这个表示交易的发起者他愿意支付最多是多少Gas,这个交易发起者在发起交易的时候需要设置好。还有一个是针对区块的Gas Limit,一个单独的区块也有Gas的限制。
假设几个场景来说明Gas的使用:
用户设置Gas Limit,那么在交易过程中,如果你的实际消耗的Gas used
用户设置Gas Limit,那么交易过程中,如果你的实际消耗的Gas used > Gas Limit,那么矿工肯定发现你的Gas不足,这个交易就无法执行完成,这个之后会回滚到执行之前的状态,这个时候矿工会收取Gas Price*Gas Limit。
区块的Gas Limit,区块中有一个Gas上限,收纳的交易会出现不同的用户指定的Gas Limit。那么矿工就会根据区块限制的Gas Limit来选择,“合理”选择打包交易。
具体交易
以太坊上交易可以是简单的以太币的转移,同时也可以是智能合约的代码消息。列个表格看下交易的具体内容:
代码内容
from交易发起者的地址、不能为空,源头都没有不合理。
to交易接收者的地址(这个可以为空,空的时候就表示是一个合约的创建)
value转移的以太币数量
data数据字段。这个字段存在的时候表示的是,交易是一个创建或者是一个调用智能合约的交易
Gas Limit字面理解就是Gas的限制,限制是必要的,没有限制就没有约束。这个Gas Limit是有两个意思的。首先针对单个交易,那么这个表示交易的发起者他愿意支付最多是多少Gas,这个交易发起者在发起交易的时候需要设置好。还有一个是针对区块的Gas Limit,一个单独的区块也有Gas的限制。
Gas Price一个Gas Price就是单价,那么你的交易费用=Gas*Gas Price,然后以以太币来ether来支出。以太坊默认的Gas Price是1wei。
nonce用于区别用户发出交易的标识。
hash交易ID,是由上述的信息生成的一个hash值
r、s、v交易签名的三部分,交易发起者的私钥对hash签名生成。
交易分三种类型
转账:简单明了的以太坊上的以太币的转移,就和比特币类似,A向B转移一定数量的以太币。这种交易包含:交易发起者、接收者、value的数量,其余类似Gas Limit、hash、nonce都会默认生成。所以你会看到一段代码:
web3.eth.sendTransaction({ from: "交易发起者地址", to:“交易接收者地址”, value: 数量});
智能合约创建:创建智能合约就是把智能合约部署到区块链上,那么这个时候to是一个空的字段。data字段则是初始化合约的代码。所以看到代码:
web3.eth.sendTransaction({ from: "交易发起者地址", data: "contract binary code"});
智能合约执行:合约创建部署在区块链上,那么执行就是会加上to字段到要智能合约执行的地址,然后data字段来指定调用的方法和参数的传递,所以看到代码:
web3.eth.sendTransaction({ from: "交易发起者地址", to:“合约执行者地址”, data:“调用的方法和参数的传递”});
以上大致就是交易的类型。
交易的确认
和比特币一样,以太坊的交易需要后续区块确认后,节点同步后、才能确认。简单理解就是多挖出一些区块来,通过验证后这一笔交易才算确认,以太坊时常会出现拥堵的情况,所以有时候需要等待确认。
转账、合约交易流转
首先交易发起者A发起一笔转账交易,那么发送的格式如下:
代码具体内容
from交易发起者的地址
to交易接收者的地址
value转移的以太币数量
GasGas的量
Gas PriceGas的单价
data发送给接收者的消息
nonce交易编号
节点验证:以太坊网络中会有节点收到A发送出来的消息,那么会去检查这个消息格式时候有效,然后计算Gas Limit。这个时候回去验证A的以太坊余额,如果余额不足,那么就返回错误,不予处理。一旦A发送的消息通过了节点的验证,那么节点就会把这个交易放到交易存储池中。并广播到区块链网络。
矿工验证:那么写入区块链必须要矿工打包,矿工在接收到A发出的交易,会和其他交易一块打包,普通转账交易打包即可,那么合约调用的交易则需要在矿工本地的EVM上去执行调用的合约代码,代码执行过程中检查Gas的消耗。一旦Gas消耗完了,那么就回滚,如果Gas足够那么返回多余的Gas。并广播到区块链网络。
其余节点:重复节点验证步骤,然后合约也会在本地EVM上执行验证。通过验证后同步区块链。
首先还是发起者A发起一个创建智能合约的交易请求。格式如下:
代码具体内容
from交易发起者的地址
to0
value转移的以太币数量
GasGas的量
Gas PriceGas的单价
data合约代码
nonce交易编号
节点验证:
以太坊网络中会有节点收到A发送出来的消息,检查交易是否有效,格式是否正确,验证交易签名。计算Gas,确定下发起者的地址,然后查询A账户以太币的余额。如果余额不足,那么就返回错误,不予处理。一旦A发送的消息通过了节点的验证,那么节点就会把这个交易放到交易存储池中。并广播到区块链网络。
矿工验证:
矿工将交易打包,那么会根据交易费用和合约代码,来创建合约账户,在账户的空间中部署合约。这里说下合约地址(智能合约账户的地址是有发起者的地址和交易的随机数作为输入,然后通过加密算法生成)。交易确认后会把智能合约的地址返回给A。且广播到区块链网络。
其余节点:
重复节点验证步骤,验证区块,在节点的内存池中更新A的智能合约交易,同步区块链,且智能合约部署在自己本地的区块链中。
2. 以太坊钱包转账实战记录
最近项目中,要求给客户退款。 虽然之前我们写的服务封装了以太坊钱包转账的诸多细节,可以很方便的转账,但考虑再三,觉得最安全的方式还是用钱包本身的命令来转账。话不多说,这里记录下用以太坊钱包转账的步骤:
1. 首先网络搜索了下,网上此类的文章还不少。看了一圈后,觉得最好的还是这篇: https://blog.csdn.net/DDFFR/article/details/53673650 geth账户管理转账。
2.开始打开自己的以太坊钱包。查看钱包各个账户的余额。命令:eth.getBalance('0xaddress')
3. 开始转账步骤:
3.1) 解锁账户。命令:personal.unlockAccount("0xaddress123456789",“123456”)。 第一个参数:账户,第二个参数:解锁密码。就是创建这个账户地址时的密码。 其实还有第三个参数,是时间,表示解锁多久。如60,就写0x3c。可以不写,默认是300秒,就是5分钟;
3.2)计算fee:因为想把账户里的钱都退回去,所以要计算一个合理的fee,fee的计算公式:
fee <= gasPrice * gasLimit,对于普通的ETH交易,则gasLimit=21000即可,这个值可看区块浏览器的交易,一般都是这个值。而gasPrice则需要自己确定,这个是浮动的。获取方式:通过钱包的:
eth.gasPrice 来获取钱包本身推荐的矿工费。也可自己给一个值。但记住,给太低就没人打包了;
而对于gasLimit,钱包的值各不相同。如果不在乎手续费的话,可以用后面提到了的转账命令,给自己的账户发送一个0eth的转账,来获取本钱包的gaslimit参数。
3.3)计算实际款额度:
amout = 账户的余额-fee
3.4)转账命令:
有几个方式:
gasprice/gaslimit由钱包本身指定: eth.sendTransaction({from: '0xfromaddress', to: '0xtoaddress', value: web3.toWei(1, "ether")})
eth.sendTransaction({from: '0xfromaddress', to: '0xtoaddress', value: web3.toWei(0, "ether")})//通过这个可以获取钱包本身提供的 gasLimit默认参数。
自己指定gasprice/gaslimit:eth.sendTransaction({from: '0xfromaddress', to: '0xtoaddress', gasPrice: web3.toWei(30, 'gwei'), gas:21000, value: web3.toWei(1, "ether")})
这里用到了web3.toWei()函数,这个函数表示将第一个数字参数变成最小以太坊单位Wei表示的一个数字。第二个参数表示这个参数的单位。可以是1Gwei = 10^9 Wei,1 ether=10^18 Wei.
如果出现错误,根据提示修改参数。如果成功,则返回一个交易id。根据这个id到浏览器上查看交易状态即可。
上面步骤要在解锁时间范围内完成,要不就提示账户被锁定的信息。感觉以太坊这点做得还是挺好,挺安全的。
在做上面步骤时,这里还遇到了一个坑,就是有个服务会扫描钱包账户,进行资金归集。对此,为了操作不被打断。必须先停止对这个钱包操作的所有服务,否则会中断转账流程,引起不必要的安全隐患。所以切记:转账前,保证只有你自己在操作钱包;转账前,保证只有你自己在操作钱包;转账前,保证只有你自己在操作钱包;
3. 计算以太坊中 发送交易/调用合约方法 需要消耗多少gas
普通交易所需的gas
> eth.estimateGas({from:eth.accounts[1], to: eth.accounts[2], value:50000000000000})
21001
> eth.gasPrice
20000000000
如上,显示这笔account[1] => account[2] 的交易需要21001 gas, 当前的gasPrice为 20000000000,下面来验证一下
给账户1解锁,发送这笔交易,并开启挖矿打包
4. 以太坊矿工费给谁了
员工。一个公有链上, 任何人都可以读写数据。读取数据是免费的, 但是向公有链中写数据时需要花费一定费用的, 这种开销有助于阻止垃圾内容, 并通过支付保护其安全性。网络上的任何节点(每个包含账本拷贝的连接设备被称作节点) 都可以参与称作挖矿的方式来保护网络。由于挖矿需要计算能力和电费, 所以矿工们的服务需要得到一定的报酬, 这也是矿工费的由来。
拓展资料:
什么是 gas
以太坊和比特币的不同之处,以太坊引入了 gas 的概念,gas的目的是限制执行交易所需的工作量,同时为执行支付费用。gas 用来衡量你的这笔交易(或者合约代码调用)所消耗的资源(包括计算量,存储,带宽等)。一笔交易所产生的转账费用会奖励给打包包含这笔交易的区块的矿工。区块不是哪个矿工产生的,所有的矿工都会竞争下一个区块的打包权,胜出者可以打包下一个区块。
交易不一定会存在一个区块,它交易被广播出去后,在数秒内全网所有的节点都会接收到这笔交易。矿工会优先打包 gas 合理,gas price 高的交易。如果用户交易时所支付的矿工费非常低(out of gas), 那么这笔交易可能不会被矿工打包, 从而造成交易失败。 以太坊的交易费用= gas 数量 * gas price (gas 单价, 以太币计价)
Gas Fee由Gas Limit(限制) 和 Gas Price(价格) 相乘得到。 不同时期、不同的操作gas limit默认值不同,而在执行操作时可以自行设置Gas Limit。需要注意的是,完成一笔交易所需的Gas 单位数量,取决于交易的复杂程度。当一笔交易越复杂,就必须要耗费较多的运算资源,因此需要花费较多Gas。 Gas Price是指Gwei的数量,它会影响到你的交易被矿工打包放上区块链的速度。如果Gas Price 设的越高,就会让给矿工更有动力将你的交易打包;相反的,如果Gas Price 设的低就要等待比较长的时间。如果不急着完成一笔交易,你就可以选择较低的Gas Price 来省钱。在每次的交易中,你都可以依照需求调整Gas Limit和Gas Price。
5. 什么是GAS费用
在一个公有链上, 任何人都可以读写数据。读取数据是免费的, 但是向公有链中写数据时需要花费一定费用的, 这种开销有助于阻止垃圾内容, 并通过支付保护其安全性。 网络上的任何节点(每个包含账本拷贝的连接设备被称作节点) 都可以参与称作挖矿的方式来保护网络。由于挖矿需要计算能力和电费, 所以矿工们的服务需要得到一定的报酬, 这也是矿工费的由来。
矿工会优先打包 gas 合理,gas price 高的交易。如果用户交易时所支付的矿工费非常低(out of gas), 那么这笔交易可能不会被矿工打包, 从而造成交易失败。TokenPocket 的交易费用 (也是以太坊的交易费用) = gas 数量 * gas price (gas 单价, 以太币计价)
gas是用于测量在以太坊区块链上执行特定操作所需的计算工作量的单位。这个名字本身并不是偶然选定的。gas其实类似于汽油,后者作为汽车的能量保证汽车可以正常行驶,以太坊网络上的gas为交易行为进行“加油”,并允许用户执行不同的操作。
链乔教育在线旗下学硕创新区块链技术工作站是中国教育部学校规划建设发展中心开展的“智慧学习工场2020-学硕创新工作站 ”唯一获准的“区块链技术专业”试点工作站。专业站立足为学生提供多样化成长路径,推进专业学位研究生产学研结合培养模式改革,构建应用型、复合型人才培养体系。
6. Gas 机制是如何运作的
以太坊是目前第二大公链,它和比特币不一样,以太坊上的可以实现的功能更多,如果比特币是一个可以进行加减乘除的计算器,那么以太坊就是一台功能完备的计算机。以太坊系统的复杂度超过比特币好几个数量级。
在以太坊中,用户可以自己写一个智能合约,然后把智能合约放到以太坊中执行。智能合约的执行需要消耗资源,而以太坊上的资源是有限的。
在计算机系统中,停机问题(https://zh.wikipedia.org/wiki/停机问题)目前还没有办法完全证明。这个问题简单来说就是没办法判断一个程序是否能够在有限的时间内结束运行。
如果一个用户提交了一个死循环程序到以太坊中,那么就会无限的执行下去,从而将以太坊网络击垮。而使用 gas 机制则可以解决这个问题,智能合约中,每段代码的执行都会消耗一定量的 gas,在用户提交交易的时候需要指定好。如果 gas 消耗完了,那么智能合约就必须停止,交易也会被撤销,如果智能合约执行完成, gas 还有剩余,就会退还给用户。
需要特别说明的是,即使交易失败,用户也需要支付 gas 费用,因为以太坊为这些错误的交易也付出了计算资源。
除了这点之外,gas 还可以用来激励矿工,用户提交交易所消耗的 gas 费用最后都会给到矿工,矿工会优先去打包那些提供了更高 gas 价格的交易,在以太坊中,如果希望自己的交易早点被打包,可以设置更高的 gas 价格。
g as 机制是以太坊系统的命脉。
gas 本质就是维护以太坊网络安全,这是从两个方面来做到的,一方面通过 gas 来衡量计算量,一方面使用 gas 来吸引更多的矿工,矿工的数量越多,以太坊网络就越安全。
gas 只能用于交易中,用户不会接触到 gas,gas 会在交易的提交的时候直接通过以太币来兑换。
智能合约中,每个操作都会消耗一定的 gas 。每个操作都对应一个 Opcode,下面是一些常见的 gas 消耗,完整的 gas 消耗说明看这里:https://github.com/crytic/evm-opcodes
以太坊中的交易最后会被确认,打包成区块,这样交易才算是完成,但是在一个区块中,可以打包的交易是有限的,以太坊通过 gas 来限制可以打包的交易数。这样就让被打包的机会成为了一个稀缺的资源。
用户提交一个交易后,gas 量可以看做是一个固定的值,矿工为了做到最大收益,就会选择那些 gas 价格更高的交易。
很多以太坊的用户经常吐槽 gas 费过高,其实这里的过高不是指 gas 本身过高,而是指 gas 对应的以太坊价格过高。
因为 Gas 的价格不是固定的,而是波动的,简单来说就是根据供需关系来决定的,如果同时需要用以太坊的用户多,那么Gas 的价格就贵,如果用户的人少,那么 Gas 的费用就会少。
以太币的最基本单位是 wei,1 ETH = 10 ^18 wei,而衡量 gas 价格的单位则是 gwei,1 ETH = 10 ^ 9 gwei。
在提交交易的时候,需要设定两个参数,一个是 gas 的最大消耗量(gas limited)和 gas 的价格,gas 的消耗量通常情况下会比较固定,不会有太大的变化,主要是 gas 的价格会波动很大。
在上面我们说到矿工会挑选那些 gas 费用比较高的交易进行打包。所以 gas 的价格设置得越高,那么总的 gas 费用就会越高。如果想让当前的交易尽快被确认,那么就需要设置一个当前相对来说比较高的 gas 价格。
其实对当前 gas 价格最清楚的就是那些矿工,所以矿工们也提供了一些服务,让用户可以实时地了解到当前 gas 价格的分布。比如 GasNow 就是一个比较常用的服务,现在很多钱包中都在使用这个来为钱包的用户提供 gas 价格建议。
如果你提交的交易不紧急,那么使用当前的平均 gas 价格就可以,如果需要提交紧急的交易,那么就需要设置更高的 gas 价格。
文 / Rayjun
7. 1分钟搞清Gas/ Gas Price/ Gas Limit
好多朋友第一次接触以太坊的时候,都会搞不清什么是Gas,更搞不清Gas Price和Gas Limit是什么。 本文将逐一介绍并理清这三者之间的关系,相信你看完后就会理解这三个gas相关的概念了。
Gas
Gas对应于一个交易(Transaction)中以太坊虚拟机(EVM)的实际运算步数。 越简单的交易,例如单纯的 以太币转帐交易,需要的运算步数越少, Gas亦会需要的少一点。 反之,如果要计算一些复杂运算,Gas的消耗 量就会大。 所以你提交的交易需要EVM进行的计算量越大,所需的Gas消耗量就越高了。
Gas Price
Gas Price就是你愿意为一个单位的Gas出多少Eth,一般用Gwei作单位。 所以Gas Price 越高, 就表示交易中每运算一步,会支付更多的Eth。
大家可能对Gwei 这个单位感到陌生,Gwei 其实就是10 ^ -9 Eth,也就是说1 Gwei = 0.000000001 Eth。 所以,当你设定Gas price = 20 Gwei ,就意味着你愿意为单步运算支付0.00000002 Eth。
说到这里,聪明如你就会意识到以太坊的手续费计算公式很简单:
1交易手续费(Tx Fee) = 实际运行步数(Actual Gas Used) * 单步价格(Gas Price)
例如你的交易需要以太坊执行50步完成运算,假设你设定的Gas Price是2 Gwei ,那么整个交易的手续费 就是50 * 2 = 100 Gwei 了。
Gas Limit
Gas Limit就是一次交易中Gas的可用上限,也就是你的交易中最多会执行多少步运算。 由于交易复杂程度各有不同, 确切的Gas消耗量是在完成交易后才会知道,因此在你提交交易之前,需要为交易设定一个Gas用量的上限。
如果说你提交的交易尚未完成,消耗的Gas就已经超过你设定的Gas Limit,那么这次交易就会被取消,而 已经消耗的手续费同样被扣取 —— 因为要奖励已经付出劳动的矿工。 而如果交易已经完成,消耗的Gas未达到Gas Limit, 那么只会按实际消耗的Gas 收取交易服务费。 换句话说,一个交易可能被收取的最高服务费就是Gas Limit * Gas Price 了。
最后值得一提的是Gas Price 越高,你提交的交易会越快被矿工接纳。 但通常人们都不愿多支付手续费, 那么究竟应该将Gas Price设置为多少,才可以在正常时间(eg 10 mins)内,确保交易被确认到区域链上呢? 这个网站 可以帮到你。 写这篇文章时候,1 Gwei的Gas Price 就可以确保 交易在50 秒左右被接纳。
8. gas费用什么意思
Gas译为“汽油费”,Gas最初是在以太坊区块链上实现的,用于衡量消息消耗的计算和存储资源。
在其他区块链中,节点参与者以本机货币指定GasFee,然后根据消息消耗的天然气量向生产节点参与者的区块支付优先费用。
gas其实类似于汽油,后者作为汽车的能量保证汽车可以正常行驶,以太坊网络上的gas为交易行为进行“加油”,并允许用户执行不同的操作。
(8)以太坊gas计算方法扩展阅读
gas存在的原因
任意的一条消息都需被矿工打包上链和销毁,存储矿工自己会设定一个标准的GAS费用的价格。GAS费会由高到低进行标价,标价低的消息有可能不会被打包,GAS费用高的消息将会被优先打包,所以GAS费用是一个市场行为。
当消息出现拥堵的时候,GAS费用会水涨船高,如果不及时处理拥堵的消息就会出现掉算力的情况,如果连续2天算力没有恢复,那就会受到非常严厉的惩罚。
如果没有gas,用户就可以执行一个永远不会停止的程序,其中的原因可能是代码有问题,也可能是有人作恶。为了防止这种情况发生,以太坊引入了与每个操作相关的gas成本,这将防止程序处于永远运行的状态,最终使整个网络陷入停滞状态。
9. 以太坊gas limit什么意思
一、智能合约这么好,可不是白用的
智能合约,顾名思义,是指计算机代码可以自动执行的合同;以太坊虚拟机是用来执行智能合约的;智能账户是智能合约能够被执行的载体。换句话说,智能账户,这个“账户”是可以被以太坊虚拟机操控的,依据什么操控呢,依据智能合约来操控。
天下没有免费的午餐,智能合约这个功能这么好,可不是白用的,你在以太坊进行交易的时候也要付给矿工手续费的,那么在以太坊系统上,你要付出的手续费是怎么回事,
Gas和手续费之间又有什么关联呢?
二、以太坊 Gas 是怎么回事?
以太坊Gas类似于汽车燃油,智能合约的驱动,需要以太坊Gas。Gas是一个英文单词,中文意思是:瓦斯、汽油,这个东西在日常生活中,是一种消耗品。以太坊为什么会产生“燃料”呢?
以太坊里面的Gas是什么意思呢?其实,以太坊的Gas和交易费息息相关。以太坊交易需要手续费,这个Gas就是以太坊手续费的计算模式。
在以太坊的设定中,交易费类似于一种加密的燃料,也就是Gas,这个东西可以驱动智能合约的运动。当以太坊在区块链上执行交易时,燃料将按照特点的规则而逐渐被消耗。
从这一点看呢,Gas真的是和它的本意一样,像汽车燃油一样,想要发动汽车,必须需要燃油。
三、以太坊 Gas 和比特币交易费有哪不同?
说到手续费,大家可能很熟悉。天下没有免费的午餐,无论是以太坊,还是比特币,都需要手续费,但是二者的手续费模式是不一样的。比特币是直接支付比特币作为转账手续费的,以太坊却不是这样的。
以太坊本质上是一个虚拟机,这个虚拟机是去中心化的,全世界各国人民各自掌控的虚拟机,联合起来形成一个“世界级的计算网络”。当你发送token,执行合约、转移以太坊,或者在区块上做其他事情时,计算机在处理这笔交易时,需要进行计算,这个计算过程需要消耗网络资源。这样一来,你必须支付“燃料费”(也就是Gas),才能让计算机为你工作,让矿工为你处理交易。
通常情况下,发送方愿意支付的Gas价格越高,矿工从交易中获得的价值就越大,矿工们也就越有可能选择这个交易。通过这种方式,矿工可以自由地选择交易。为了给发送者设置Gas 价格做参考,矿工们可以直接提出他们执行交易所需的最低Gas 价格。
四、以太坊 Gas 的消耗量该如何计算?
以太坊虚拟机处理交易时,虚拟机会根据交易中确定的一个一个的操作指令进行逐个处理,而每个操作指令都有明文规定的Gas消耗量。
以太坊系统规定了两个账户:一个是正常账户,一个是智能账户。
普通的转账交易,也就是调用“正常账户”,所需要的Gas是固定的21000;
而调用“智能账户”的的话,因为智能合约的复杂程度不同,使得所需要的Gas也不同。处理交易占用的资源(计算量、内存等)越多,那么所需要的Gas也就越多,比如:执行一次加法运算将消耗 3Gas,如果执行更复杂的运算,那么消耗的Gas就更多。
那么大家可能会问一个问题:当用户的交易涉及一个恶意的智能合约,这个合约超级复杂,执行这个合约要消耗无限的燃料,怎么办呢?以太坊系统的方案是:为了避免恶意
智能合约引起无限的Gas消耗,用户需要在发送交易时设定允许消耗的燃料上限,即
GasLimit,这样一来,就算有恶意智能合约,最坏情况也只是消耗 GasLimit 所规定的燃料范围之内。
五、以太坊 Gas 和交易手续费有什么关系?
以太坊上,你所支付的手续费等于:GasPrice 乘以GasUsed。
你可以把 GasPrice 理解为是燃油单价, GasUsed 理解为汽车所需多少升燃油。
对于汽车,假如说每升汽油是20块钱,一万升汽油就是20万块钱。对于以太坊,每
Gas是20吉伟(吉伟是以太币的数量单位),一万个 Gas 就是:20乘以一万,等于20 万吉伟,2万吉伟等于0.0002以太坊,也就是说,本次交易手续为 0.0002以太坊。
具体的兑换值见下表:
图
(注释:以太币数量的基础单位是“伟”,以太币的数量单位有“伟、芬尼、以太”,其中,“以太”被用作普通交易;“芬尼”被用作微交易;“萨博”和“伟”被用作进行关于费用和合约实施。)由此我们可以发现,Gas并不是以太坊,它是一种单独的体系,它的汇率与以太坊成一定的比例,经过了比例兑换,最终形成交易费。
具体的汇率查询,可以查看以下网站:
https://jin10086.github.io/etherconVerter/
Gas价格和以太币价格都是由市场自由调节的,但是二者是不一样的,他们的不同之处在于:以太币的价格是根据市场情况波动,而Gas的价格由矿工决定的,如果燃料价格低于矿工们的最低要求,矿工就会拒绝处理交易。Gas和以太坊分离,可以保护系统免受随着以太坊价格的快速变化而可能出现的波动。
通常来讲,大部分矿工都会选择利益优先,处理交易时候,他们会按Gas价格从高到底排列,优先处理Gas价格高的,如果你很着急交易 ,就需要提高Gas价格,让矿工早点看到你;如果你不着急呢,你只需要设定一个Gas价格,这个价格在矿工设置的Gas价格底线之上就行了。
六、Gas 是怎么获取的呢?
实际上,Gas就是从矿工那里购买的以太币,用户自己账户中的以太币就可以向矿工购买Gas,以太坊客户端根据指定的交易最大支出限额,自动用以太坊购买Gas。
七、Gas 最后去了哪里?
每笔交易,交易发起方都要设置交易的Gas限定和 Gas价格,不同的操作会产生不同的Gas成本,Gas用完时矿工将停止执行,使用的Gas会作为奖励,奖励给挖矿的矿工,这将涉及到几下几种情况:
第一种情况是,如果有剩余Gas,那么这些剩余的Gas会退还给交易发起方或智能合约创建者,比如我发送1个以太坊给依依,我设置的 Gas limit 是 5万,正常需要消耗的Gas是21000,,那么,剩下没有被消耗的29000会返还给我。
第二种情况是,如果我设置的Gas limit太低,或者我账号中的以太坊不足以支付我的Gas消耗,那么,这笔交易会因为Gas不足而被取消,并且用于计算的Gas不会退回到我的账户。
第三种情况是,如果交易失败,我也必须为已经占用的计算资源来支付手续费。
八、怎么设置合理的 Gas 价格?
每次交易之前,可以查询这个网站来确认需要设置的Gas价格: https://ethGasstation.info/总结一下,这篇文章我们主要介绍了以太坊的Gas和手续费:Gas相当于燃油,你在以太坊虚拟机上处理交易,会消耗计算资源,也就是Gas。在以太坊上,你所支付的手续费等于:GasPrice 乘以GasUsed,也就是:Gas的单价乘以消耗掉的Gas总量。操作的复杂程度不同,产生的Gas成本也不同,Gas用完时,矿工将停止执行,使用的Gas会作为奖励,奖励给挖矿的矿工,矿工会优先选择Gas价格出的高的交易者。
10. 4:以太(Ether)
以太是以太坊内使用的货币的名称。它用于支付EVM中的计算。
以太坊定义了以太的单位。每个单位都有自己独特的名字(有的承担了计算机科学和隐秘经济学演变中的重要人物的姓氏)。最小面额(又称基本单位)称为Wei。以下是Wei名称及其价值。请注意,货币的单位并不叫"以太坊".
更多关于以太的文章请看:
https://blog.ethereum.org/2014/04/10/the-issuance-model-in-ethereum/
https://www.reddit.com/r/ethereum/comments/44zy88/clarification_on_ether_supply_and_cost_of_gas/
https://www.reddit.com/r/ethereum/comments/45vj4g/question_about_scarcity_of_ethereum_and_its/
https://www.reddit.com/r/ethtrader/comments/48yqg6/is_there_a_cap_like_with_btc_with_how_many_ether/
为了获得以太,你需要
* 成为以太坊矿工(见采矿)或
* 用其他货币进行交换
* 通过Mist钱包的api http://shapeshift.io/ 进行购买
请注意,以太坊平台的特殊之处在于: 在货币兑换交易中, 智能合同可以让信任无关的服务避免对可信任第三方的依赖. 例如中间货币兑换业务。
(我的理解就是: 一般的货币交换都是需要某种机构来保证公信力. 而智能合同本身就可以做到)
这些项目(编写本文时的字母/预启动状态)为:
-- BTCrelay
- More information (about ETH/BTC 2-way peg without modifying bitcoin code).
- BTCrelay audit
-- EtherEx decentralised exchange .
(注意人民币有2个. BTER 已经关闭, yunbi 还在使用 )
ETH markets exhaustive listing by volume on coinmarketcap
Aggregating realtime stats of major ETH markets:
Tradeblock
EthereumWisdom
Cryptocompare
Coinmarketcap
这里只是给出一些链接. (不转过来了, 看这里: http://ethdocs.org/en/latest/ether.html )
使用geth 控制台进行发送:
有关以太网转账交易的更多信息,请参阅 账户类型和交易 。
以太坊将以太作为"加密燃料", 这在加密货币设计领域是独一无二的. 这种必要性让以太像"天然气"一样重要.除交易费外,天然气是每个网络请求的核心部分,并要求发件人支付所消耗的计算资源。根据请求的数量和复杂程度并乘以当前的天然气价格,动态计算天然气成本。以太的价值加强了以太坊平台的稳定性和长期需求。有关更多信息,请参阅 账户类型和交易 。
(我的理解就是: 内部货币处处流通, 这样有助于保持生态活力. 倒是很好的想法)
https://www.reddit.com/r/ethereum/comments/271qdz/can_someone_explain_the_concept_of_gas_in_ethereum/
https://www.reddit.com/r/ethereum/comments/3fnpr1/can_someone_possibly_explain_the_concept_of/
https://www.reddit.com/r/ethereum/comments/49gol3/can_ether_be_used_as_a_currency_eli5_ether_gas/
天然气应该是网络资源/利用的不变成本。您希望发送交易的实际成本始终保持不变,因此您不能真正期望发放天然气,而货币一般都是波动的。
相反,我们发布其价值肯定变动的以太,但以太的价格可以用天然气来计算。如果以太的单位价格上涨,天然气价格就会下降以保持燃气的实际成本相同。
天然气与它有多个关联术语:天然气价格,天然气成本,天然气限制和天然气费。Gas背后的原则是为以太坊网络的交易或计算成本提供稳定的价值。
* 气体成本是一个静态值,表示气体的计算成本是多少,并且其意图是气体的实际价值不会改变,所以这个成本应该始终保持稳定。
* 天然气价格是另一种货币或像Ether这样的标志物的天然气成本。为了稳定天然气的价值,天然气价格是一个浮动价值,这样如果标记或货币的成本波动,天然气价格就会保持相同的实际价值。天然气价格由用户愿意花费的平衡价格以及愿意接受多少处理节点来设置。
* 气体限制是指每个区块可以使用的最大气体量,它被认为是区块的最大计算负荷,交易量或区块大小,并且矿工可以随着时间的推移慢慢改变这个值。
* 燃气费实际上是运行特定交易或计划(称为合同)所需支付的燃气量。块的气体费用可以用来暗示块的计算负荷,交易量或大小。天然气费用支付给矿工(或PoS保税承包商)。
(我的理解就是和货币的金本位一样. 用一个恒定的常量来维持货币价格的合理性)