从比特币到以太坊,哪些变了哪些没有变?

今天我们聊一聊以太坊,但是这么尴聊很容易自说自话,每一件事情的发生都有其原因。每一项新技术的应用都是有真实的需要,都是为了解决一定的问题而存在的。当我们找到这些问题,就会更加理解为什么出现这样的解决方案,也就会理解使用这样的解决方案的优点和缺点是什么。

而我们今天聊的以太坊,作为市值排名第二,号称区块链2.0,与比特币有极多的渊源,所以我们本文以二者比较的方式,来理解一下以太坊出现的各种技术与概念。

一、基本情况介绍

以下的表,展示了以太坊和比特币在一些基础情况下的差异,我们分别列举如下:

1、创始人:

比特币:中本聪,一个神龙见首不见尾的天才,他没有发明新的东西,但他完美的把很多技术结合在一起创造了比特币。

以太坊:Vitalik Buterin:一个出生1994年的俄罗斯小伙子,17岁开始研究比特币、创《比特币杂志》,20岁启动以太坊项目私募,被尊称为“V神”。

2、发行总额:

比特币:发行总额2100万枚,每10分钟出50枚,每4年减半,直至2100万枚发行完成。

以太坊:总额不受限,初始6000万枚,之后每年产生1872万枚。

3、核心算法:

比特币:采用的核心哈希算法是SHA256。

以太坊:采用的核心哈希算法是Ethash。

4、共识机制:

比特币:采用POW(工作量证明)的共识机制,所以有挖矿一说。

以太坊:第一阶段采用POW的共识机制,将来转为POS(权益证明)的机制。

5、区块时间和奖励:

比特币:10分钟出块时间,每次区块奖励从50个到每四年减半,当前是12.5个。

以太坊:12秒钟的出块时间,每次区块奖励为5个。

说明:由于以太坊有着较快的出块时间,所以处理交易的速度会快一些。比特币理论上每秒处理7笔交易,实际大约是3-4笔每秒。据称当前以太坊每秒处理交易速度在20笔左右,当然也远远不能满足现实需要,所以以太坊也积极探讨雷电网络和分片技术等来提升以太坊的处理速度。

6、分叉:

比特币:为了解决比特币交易处理速度的问题,有各种方案的提出。其中比特币现金的方案,把出块的大小从1M调整到了8M,分裂出比特币现金BCH。之后比特币还经历过多次分叉,有了诸多的山寨币。

以太坊:2016年6月17日,众筹项目TheDAO(被攻击前 拥有1亿美元左右资产)由于合约漏洞遭到黑客攻击,资产被转移。7月以太坊开发团队通过修改以太坊软件的代码,在第1920000区块强行把The DAO及其子DAO的所有资金全部转到一个特定的退款合约地址,从而“夺回”黑客所控制的DAO合约的币。从而形成两条链,一条为原链(ETC),一条为新的分叉链(ETH)。


比特币与以太坊基本信息

小结:从我们上文的对比中可以发现,以太坊是在比特币的基础上发展而来,所以也一直在努力避免比特币曾经出现的问题。


二、技术异同的比较

1、以太坊的图灵完备和智能合约

不精准的图灵完备定义:一切可计算的问题都能计算,这样的虚拟机或者编程语言就叫图灵完备的。

不恰当的比喻:一个正常成人都有权的事情都能做,这样的成人是权利完备的,而被剥夺政治权利或人身权利的人是权利不完备的。

在比特币网络体系中,脚本软件在交易结构中有着重要作用,而比特币的脚本语言是不具备图灵完备的,具有一定的局限性,它没有循环语句和复杂的条件控制语句。由于语言存在这种局限性,我们也就没办法使用这种语言写一些死循环或者一些能够导致DOS攻击的恶意代码,从而也就避免了比特币网络受到DOS攻击。

而以太坊是图灵完备的。他提供EVM(Ethereum Virtual Machine)以太坊虚拟机是可以实现以太坊中智能合约编程,提供相应的运行环境。

那啥叫虚拟机呢?

简单来讲,就是用软件来模拟出有完成功能的计算机系统。

而以太坊虚拟机就是把以太坊网络上的这些计算机虚拟成一个功能完备的计算机,来运行我们的智能合约。

那啥又叫智能合约呢?

简单来说:满足条件就可以执行的一段代码。自动贩卖机就有点类似,塞进去钱吐出用户想买的饮料。

但是,以太坊上的智能合约是保存在区块链中的区块上的,这个区块又是在所有的参与的电脑上都具备的,而且区块本身也会大小和各种方面的限制,所以事情情况可能会比单纯在一个电脑环境下的app要复杂得多。


2、UTXO和账户体系

比特币:从我们之前的比特币的文章中可以看出,我们拥有的比特币是通过UTXO体系来表述的,我们花费比特币也是通过UTXO来实现的。而UTXO可以理解为我们货币的面值,要支付7块钱可能会给对方1个2元+1个5元,或者是10元,由对方找3元;UTXO也是如此,如果我们支付7个比特币,而我们如果有2个比特币的UTXO和6个比特币的UTXO时,我们就需要把这个两个UTXO拿出,支付作为2份,1份给对方7个比特币,1份给自己1个比特币相当于找零。

       UTXO的示意图:

1)UTXO是比特币最小单位的整数倍,花销起来比较容易。

2)UTXO像一个水管的两端,输入和输出永远是相同的,比较简单的实现了整体上比特币账目的清晰准确。

3)因为没有账户体系,只有地址和地址上的UTXO,所以核实余额时只需要把自己拥有的所有地址上的UTXO累计起来就是自己所可以花销的比特币。

4)通过管理着一个UTXO集,全网的可以花销的比特币就一目了然。

以太坊:以太坊并没有采取比特币的UTXO这样的方式,而是采取了账户体系的方式。有可能是因为两套系统的追求不同。比特币系统追求的是极其简单的方式实现想要达到的效果,非常追求稳定性。就像UTXO一样,极其简单地重新定义便避免使用较为复杂的账户体系就能实现想要实现的功能。而以太坊是要实现一些功能的,而这些功能可能需要较为复杂的账户系统才更加合理。

以太坊的账户体系分为外部账户和合约账户两种。简单来说:外部账户就是存以太坊的,合约账户是可以保存智能合约的代码或者数据的。

其中,外部账户就是我们普通的所有者的账户,存储着我们以太坊的余额,是通过私钥来直接控制,而地址也是有私钥转换而来。

合约账户是被合约的代码来控制,也是有余额,能被外部账户调用来激活,也可以透过另一个合约账户来激活。当合约账户被调用时,存储在里面的智能合约会在虚拟机中自动执行,并消耗一定燃料。

什么是燃料(gas):在以太坊网络中执行智能合约或转账是需要消耗整个网络的计算资源和带宽的,为了避免恶意消耗网络带宽和资源的情况,以太坊规定使用网络资源是需要付出一定代价。但由于以太坊在价格波动太大,为了避免执行智能合约时成本波动过大,以太坊网络规定使用燃料(GAS)来执行智能合约代替以太坊消耗。当然,燃料(GAS)是可以通过以太坊来购买。

每个账户都维护自己的“状态”,所有账户的状态代表的都是以太坊网络的“状态”。

以太坊账户的状态

以太坊的账户状态由四个部分组成

nonce:外部账户代表交易次数。合约账户,nonce代表创建的合约序号。

balance: 此地址拥有Wei的数量。1Ether=10^18Wei(Wei是以太坊代币的一个单位)

storageRoot: Merkle Patricia树的根节点Hash值,Merkle树会将此账户存储内容的Hash值进行编码,默认是空值。

codeHash:账户EVM(以太坊虚拟机)代码的hash值。合约账户就是代码的Hash值。外部账户就是空字符串的Hash值

以太坊账户的优点:

易用性高:易于理解和编程。

容易查询状态的变更。

存储空间小:输入输出只有一个。

更容易实现智能合约。



以太坊的账户体系



小结:以太坊和比特币的目标是不同的。比特币是打造一个点对点、公平、安全的支付系统。而以太坊想建立的是允许任何人在平台中建立和通过使用去中心化的应用(DAPP)来实现自己的功能。简单地说,以太坊技术就是想做区块链体系的操作系统。所以,图灵完备的以太坊虚拟的提供、智能合约的定义、合约账户的使用都是为了实现这一目的而生成的。


你可能感兴趣的:(从比特币到以太坊,哪些变了哪些没有变?)