趣说区块链系列08–以太坊之“十万个为什么”

CTO区块链

链接CTO,做区块链布道的前行者

本文为刘朋先生投稿至CTO区块链(ID:CTOBlockChain),未经原作者允许,不得转载。

编辑| 菱酒

封面| 姜新城

第78篇深度好文:4074字 | 8分钟阅读

刘朋,小伙伴们称为B哥(因为英文名Brian)、“套路”老师(因为“打造高绩效团队的招式和模式”的分享而得名),《突破——程序员如何练就领导力》作者,活跃于成都敏捷和技术社区。现就职于诺基亚网络成都研发中心研发经理,10年+软件行业开发、团队教练和团队管理经验。目前专注于探索软件开发团队高效能和自组织之路、区块链技术及其所能带来的巨大变革的力量。

本篇知识脉络

上篇回顾

在上一篇

趣说区块链系列07–从“老友记”到智能合约

中,我们讲到在区块链1.0解决了“陌生信任”建立问题之后,接下来非常自然的问题就是:如何保证交易双方的交易合约能够达成?以及如何确保交易合约能够被顺利执行?

这也就是区块链2.0——“智能合约”大显身手的地方!智能合约,简单的说,就是“一种计算机化的交易协议,可以执行某个合约的条款”。智能合约既然是一种计算机化的交易协议,就需要运行在某种平台和环境下,而目前最热门的智能合约运行环境,就是大名鼎鼎的“以太坊Ethereum”。

我们在上一篇中也提到,以太坊上开发智能合约的语言有几种,但是最为推荐的是Solidity。

但是,但是……我想你此刻心里的OS一定是:

等一下,我还有好多关于以太坊的问题你没有回答呢!!!

我猜,你现在一定有“十万个为什么”吧?

所以,不要着急,我们这一篇趣说区块链,就好好来回答下你关于以太坊的十万个为什么吧。

01

以太坊“十万个为什么”之:以太坊是什么

______

首先,以太坊是一个计算机软件,并运行在一个有大量节点组成的计算机网络中。它确保数据以及称为智能合约的小程序可以在没有中心协调者的情况下被所有网络中的计算机复制和处理。

在以太坊官方介绍中,有一句特别“牛逼”的对于以太坊愿景(vision)的描述:

以太坊的愿景是:创建一个无法停止的、抵抗内容审查的、以及自我维持的、去中心化的世界计算机。

“The vision (of Ethereum) is to create an unstoppable censorship-resistant self-sustaining decentralised world computer”

——以太坊官方介绍https://www.ethereum.org

02

以太坊“十万个为什么”之:怎么运行以太坊

______

以太坊需要运行在以太坊虚拟机(Ethereum Virtual Machine, EVM)上。

EVM和java虚拟机JVM是类似的,只是EVM是利用solidity语言来进行编写智能合约。

以太坊中运行着大量的“以太坊节点”,每个以太坊节点都运行着EVM以太坊虚拟机,在解析和执行智能合约的同时,也能够达到将EVM内部和外部的代码隔离的作用。

当我们把智能合约部署在以太坊网络上之后,合约就可以在以太坊网络中运行了。从下图可以看到,EVM以太坊虚拟机在整个以太坊端到端的价值实现中是非常重要的一环。

03

以太坊“十万个为什么”之:以太坊也发了币?

______

幸好是第三个问题才问到了“钱”的问题,看来读者们的觉悟进过一系列趣说的洗礼已经提高了~~

我们之前说到可以在以太坊上创建任何形式的智能合约,那其中也就包括表示数字资产的智能合约,这些数字资产的智能合约就是以太坊代币,也就是以太币(Ether),交易代码是ETH。

非常有趣的是,以太币的货币单位的命名非常有趣:

还记得我们之前提到的被误认为中本聪的计算机科学家萨博吗?以太币中10−6的货币单位名称“萨博”就是来自尼克·萨博(NickSzabo)的名字。

而我们下面将会讲到的以太币货币单位“维(wei)”也是来源于一位密码学先驱和大牛:戴伟(WeiDai):

在中本聪那篇横空出世的论文“Bitcoin: A Peer-to-Peer Electronic Cash System”中,就引用了Dai Wei的论文,而以太币的单位Wei就是像这位密码学先驱致敬!

04

以太坊“十万个为什么”之:以太币除了让人民群众致富之外,还有什么作用

______

我能先用这个表情回答一下吗:

哈哈,书归正传,以太币作为以太坊的原生代币,它主要有两个用途:

以太币重要用途1:应用程序(Decentralized App, Dapp)需要为他们做出的每一个操作付费,这样可以避免被损坏的或恶意的程序走向失控。

以太币重要用途2:对于那些将自己的资源贡献给去中心化网络的人们,以太币是一种奖励。

05

以太坊“十万个为什么”之:怎么理解以太币能够避免对以太坊恶意的破坏呢?

______

要解答这个问题,就需要从比特币说起。还记得之前的趣说系列中提到的,比特币中挖矿的过程,就是把2000笔交易信息打包,然后去计算那个“众里寻他千百度”的随机数,从而让区块链头的哈希值满足前N位为零的要求。第一个计算出这个哈希值的“矿工”就会获得比特币的奖励(2018年是12.5个比特币)。

这就是说,数字货币交易一般是有交易费的。同样,在以太坊上运行的数字货币以太币ETH也是需要交易费的。

不同的是,在以太坊上运行的是智能合约,交易要是按照智能合约的规定一步一步执行命令,每执行一个命令都会产生一定的消耗。这个消耗主要就是参与智能合约执行的以太坊节点所消耗的计算资源(computing power)。

那么,在以太坊上,交易费是怎么规定的呢?

首先,每笔以太坊上的交易都被要求包括两个东西:

-第一个是:Gas limit(有的时候被称为startGas)

其中Gas limit是这笔交易允许的最大的消耗Gas的数量,可以理解为交易服务本身的服务费。

-第二个是:愿为单位Gas支付的费用

愿为单位Gas支付的费用,可以理解为小费。

以太坊上的矿工有权利选择先打包哪一笔交易,你支付的交易费越多矿工就越喜欢帮你打包,交易确认的速度也越快。

Gas limit是你一笔交易最多需要掏的交易费,交易费不会超过这个值,若交易完成后没有用完Gas limit数量的Gas,那么多余的Gas会以ETH的方式返还给你。

如果你想让交易马上就被打包完成,那就得給矿工小费,也就是附加Gas,如果算上小费,实际消耗的Gas是可能超过Gas limit值的。

总体来说,一个交易的交易费由两个因素组成:

gasUsed:该交易消耗的总gas数量。

gasPrice:该交易中单位gas的价格(用以太币计算)。

以太坊交易费 = gasUsed * gasPrice

所以,再回到我们的问题:怎么理解以太币能够避免对以太坊恶意的破坏呢?

现在原因就非常简单了:因为执行智能合约是需要花费以太币的,所以,如果黑客攻击的成本很大——因为以太坊上智能合约的执行,都是先交费,再办事!

这就好像:没有人通过生病开药,去攻击医院的药剂科一样!因为,你以为你在“攻击”,被攻击者觉得:你在送钱!

06

以太坊“十万个为什么”之:为什么矿工会不用完Gas Limit的费用

______

答案是非常简单:因为在以太坊中,有“政府定价”!

有了“政府定价”,好处显而易见:

-好处1:可以鼓励更加高效的合约代码,减少不必要的计算,避免系统遭受攻击,毕竟攻击者要为他们消耗的资源付出一定的代价,包括带宽,CPU,和存储。

-好处2:gasPrice动态由市场调节

gasPrice是由交易的发起者来设置的,但是矿工可以选择先打包那些gas价格高的交易,gas价格低的可能要等很久或者不会被打包。

矿工在启动智能合约时,可以设置两个参数:--ask 和 --bid ,其中

--ask是设置一个最低的gas价格,低于这个价格的交易会被忽略,默认值是500000000000

--bid 设置gas价格竞价,默认值是 500000000000

所以gasPrice还是受整个市场的供求关系,即矿工和交易(合约也是一种交易)发起者的博弈来调控的。

07

以太坊“十万个为什么”之:上一篇会讲什么话题呢?

______

哎呀,你是在太聪明了,都知道今天讲到这里我已经词穷了~

其实我懂你的真实心理是已经想去刷微信了~~

所以这一篇趣说,咱们就到这,下一篇趣说文章,我们应读者要求,一起来看一看区块链智能合约平台EOS。

当当当当~第八篇文章新鲜出炉,小编迫不及待为您送来了最新的一期趣说区块链,后面的精彩内容也还请继续关注我们!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180603G13JOW00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券