区块链中的ETH可以解决哪些问题

区块链

580人已加入

描述

在《在区块链上运行程序,到底是啥意思?DAPP到底是什么?》里我们谈到,BTC脚本语言不具备图灵完备性,ETH使用的语言,比如Solidity具备图灵完备性。

具备图灵完备性的语言,可以使用循环语句,可以一遍又一遍地执行一组指令。这个特性可能会造成网络堵塞。

ETH如何解决这个问题?

用Gas。简单地说,你必须为你的程序执行的每一条指令——付费。

昨天我们说到,Solidity语言编写的代码,会被编译为字节码。这组字节码,就是一组EVM可执行的指令。

而执行每条指令,都有相关的Gas成本。参考下表:

这张表中,EVM可以执行的每条指令,在Gas Used这一列,都有相应的Gas价格。

这样,如果你想在ETH网络里,跑一百万次循环语句堵塞网络,你需要花费的Gas,会是个天文数字哦!你会放弃的!

你可能会问,这个Gas,是我们转账eth时设定的Gas吗?

每次ETH转账,Gas,Gas Price,Gas Limit,感觉一脸懵逼,傻傻分不清楚啊!

Gas (燃料)

如前表,Gas的多少,对应于交易中EVM实际执行的运算复杂度。

运算越简单所需Gas就越低。反之,如果转账过程中,需要用到其它复杂指令,Gas就会高。

比如 BALANCE指令,Gas高达400.

Gas Price(燃料价格)

是指你愿意为每个Gas,花费多少ETH。Gas Price由交易者设定。一般用Gwei作单位。

1 Gwei = 0.000000001 Eth。 Gas Price越高,付出的Eth也就越多。

当你设定Gas price = 30 Gwei,表示,愿意为每个Gas付出:0.00000003 Eth。

Gas 由你主动出价。如果价格太低,矿工们就会拒绝帮你打包,帮你转发交易。

但是如果设置太高,就会增加交易成本。

转账手续费(Tx Fee)

它等于——实际花费燃料(Gas Used)x 单价(Gas Price)

比如,一次交易运算量,需要50Gas,而Gas Price设为3 Gwei。整个交易的手续费= 50 * 3 = 150 Gwei = 0.00000015 Eth。

Gas Limit (燃料供给上限)

交易中Gas上限值。是指:交易中最多花费多少Gas。

由于交易复杂度各不相同,ETH网络需要完成交易后,才能计算出一共要花费多少Gas。

所以,ETH网络,要求交易者在发出交易之前,为交易设定一个Gas上限。

如果交易还没完成,而消耗的Gas,已经超过交易者设定的Gas Limit,那么交易就会被取消。

转账的ETH会退回,但燃料费还是要扣除,用作奖励矿工。

而如果交易已经完成,而消耗的Gas没要达到Gas Limit,则只花费实际消耗的Gas,不会多算。

强调

设置Gas的主要目的,不是为了金钱!

而是为了每条指令都有价!阻止恶意的循环语句和其它恶意语句,阻止恶意代码的运行。
责任编辑;zl

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分