2019-08-12 16:15

区块链入门 | 区块链2.0:以太坊

6.4万

比特币首次实现了点对点的去中心化平台,但是比特币的设计仅适合虚拟货币场景,比特币缺少保存状态的账户概念,协议的扩展性也存在不足,例如比特币网络里只有一种代币符号,用户无法自定义另外的符号用以代表如股票、债务凭证等其他权益。此外,比特币协议使用了一套非图灵完备的脚本语言,这让很多应用场景受到限制,比如说现在大家都已经熟悉了解的加密猫游戏是不可能在比特币上开发出来的。

2013年19岁的Vitalik对比特币提出了一些改进意见,但是没有被社区采纳;他然后在2014年开始研究新一代区块链,试图实现一个新的分布式系统,把比特币的底层区块链技术核心特点抽出来作为一个通用平台,允许开发者写几行代码就可以自主发行一个新的代币,而无需关心底层的共识算法、复杂的加密算法、P2P通讯网络等等,所有这一切都由平台搞定,由此产生了以太坊。

智能合约是以太坊的核心创新点。合约可以认为是以太坊系统中的自动代理人,他有一个自己的以太坊地址,当用户向合约的地址里发送一笔交易后,该合约就被激活,然后根据交易中的额外信息,运行相应的代码。这些代码可能修改了某个用户某种代币的余额,或者向其他合约地址转账以触发其他合约的运行。需要指出的是,以太坊中的交易,不单只是发送以太币而已,还可以嵌入其他的信息,用以创建智能合约或者为智能合约的调用提供参数。图灵完备的语言提供了完整的自由度,让用户得以搭建各种应用。

就像比特币一样,以太坊不受任何人控制,也不归任何人所有——它是一个开放源代码项目,由全球范围内的很多人共同创建,并且有数以千计的人在他们的个人电脑上运行一个软件来支撑整个网络以运行智能合约。也就是说,网络中的每个节点、就是每台电脑,都运行一个叫做“以太坊虚拟机”的东西,可以把它想象成是一个操作系统,它能够理解并且执行用以太坊上特定的编程语言编写的软件,而智能合约就是由“以太坊虚拟机”所执行的软件或者应用。

在以太坊的技术黄皮书中有这样说到过,以太坊就是一个世界计算机,用户通过向以太坊发送交易,以改变这个计算机中的状态,而这样的状态变化则由运行在网络中的成千上万台机器共同执行,产生一个确定的状态改变。而无论是转账、创建智能合约还是调用智能合约,本质上都是通过交易来促使以太坊网络产生这样的行为,并在区块链上记录状态的改变。

智能合约的运行过程,大致可以分为三步:

第一步,用户使用以太坊指定的语言编写业务逻辑,其中包括了一些状态数据如各个用户的余额信息等等,还有一些包含了权限控制的函数代码;

第二步,用户将这些源代码编译之后产生的字节码整合到交易数据当中,并将此交易信息签名后发送到以太坊网络中等待矿工确认;

第三步,交易确认意味着合约被创建,网络中的节点便可以通过向该合约地址发送交易,以调用该合约中的方法实现合约预先定义的一些功能。

一个合约写好以后,就无法再被编辑或者修改。因此,你可以保证无论合约的内容是什么,它都会无条件地按照创建时设定的规则执行,不存在事后毁约的情况。真正实现了代码即法律的目标。

正是这些独特的可编程性以及可扩展性,以太坊平台上迅速产生了越来越多的去中心化应用,其本质就是利用了智能合约。通过智能合约,这些去中心化应用可以实现如智能投票、众筹、游戏等功能,一定程度上为去中心化应用打开了大门。

此外,如果用户想要使用和执行智能合约,就必须要为执行该智能合约付出一定费用,这笔费用是奖励给实际花费了内存、存储、计算和电力等资源来执行合约的节点。

虽然以太坊的智能合约推动了区块链创新应用,但是也存在着很多令人诟病的地方:

首先,合约的运行需要消耗成本,这也被称作Gas机制。Gas机制对虚拟机上运行的每条指令,依据指令的特性而收取费用,这样设计的初衷是为了防止死循环,以及防止产生大量的垃圾智能合约,但带来的副作用是,极大增加了使用智能合约的成本。

其次,智能合约的开发人员需要学习专门的编程语言,也因此提高了人们使用以太坊网络开发智能合约的难度。

最后,由于智能合约编写不严谨而带来了的安全问题层出不穷,给用户造成了巨大损失。比较有名的例子就有2016年DAO事件,导致以太坊出现了硬分叉;2018年美图旗下的美链合约溢出的漏洞让黑客无限转账,将其交易价格一下子归零。

在此之后出现的种种公链,基本上都借鉴了以太坊智能合约的思路,在其基础上进行改进或优化。例如EOS将最新的Web Assembly这样一种前端技术搬到了区块链的虚拟机上,使得用户可以直接使用C++进行智能合约的编写而无需另外多学一门编程语言。

好的,今天我们主要学习了以太坊的运行逻辑,介绍了智能合约的原理以及应用。明天我们将一起探讨个人参与区块链项目中要注意的公钥、私钥和加密钱包的问题。

 

作者:Dipperin 蔡庆丰

本文链接:https://www.8btc.com/media/462920
转载请注明文章出处

评论
登录 账号发表你的看法,还没有账号?立即免费 注册
下载
分享
收藏
阅读
评论
点赞
上一篇
下一篇