作者:Zarten
知乎专栏:区块链技术详解知乎ID:Zarten简介: 互联网一线工作者,尊重原创并欢迎评论留言指出不足之处,也希望多些关注和点赞是给作者最好的鼓励 !概述
以太坊(Ethereum),是一个开源的有智能合约功能的公共区块链平台。
比特币是区块链1.0的代表,以太坊是区块链2.0的代表,以太坊相比比特币最重要的功能是加入了智能合约(Smart Contract)功能。
发展简史
1.在2013年底,有一些开发者开始提出以太坊概念,早期的发明者Vitalik Buterin(V神)提出以太坊应能运行任意形式(图灵完备)的应用程序。
2.在2015年7月底,以太坊第一阶段 Frontier 正式发布,标志着以太坊区块链网络的正式上线。Frontier 版本实现了一些基础功能,这一阶段的用户以开发者居多。
3.在2016年3月,第二阶段 Homestead 开始运行(区块数 1150000),主要提高了安全性和易用性,并有更多的用户加入进来了。
4.在2016年6月,DAO(Decentralized Autonomous Organization ,去中心化自治组织) 基于以太坊平台进行众筹,受到漏洞攻击,造成价值超过 5000 万美金的以太币被冻结。社区最后通过硬分叉(Hard Fork)进行解决。
5.在2017年3月,以太坊成立以太坊企业级联盟EEA(Enterprise Ethereum Alliance),联盟成员主要来自摩根大通,微软,芝加哥大学和部分创业企业等。
目前以太坊在不断的更新完善,并且越来越多的人加入到了以太坊中。
特点
以太坊跟比特币技术也类似,但还是有一些区别,以太坊主要有以下特点:
1.支持图灵完备的智能合约,设计了编程语言 Solidity 和虚拟机 EVM
2.采用账户系统和世界状态,而不是 UTXO,容易支持更复杂的逻辑
3.选用了内存需求较高的哈希函数,避免出现强算力矿机、矿池攻击
4.叔块(Uncle Block)激励机制,降低矿池的优势,并减少出块时间(10 分钟降低到 15 秒左右)
5.通过 Gas 限制代码执行指令数,避免循环执行攻击
6.目前是PoW 共识算法,并计划支持效率更高的 PoS 算法
核心概念
跟比特币相比,以太坊中提出了一些新的概率,包括:智能合约、以太币、燃料、账号等。下面将一一介绍。
智能合约智能合约(Smart Contract)是以太坊中最为重要的一个概念。
以太坊支持通过图灵完备的高级语言(包括 Solidity、Serpent、Viper)等来开发智能合约。智能合约作为运行在以太坊虚拟机(Ethereum Virual Machine,EVM)中的应用,可以接受来自外部的交易请求和事件,通过触发运行提前编写好的代码逻辑,进一步生成新的交易和事件,可以进一步调用其它智能合约。
智能合约的执行结果可能对以太坊网络上的账本状态进行更新。这些修改由于经过了以太坊网络中的共识,一旦确认后无法被伪造和篡改。
账户我们知道,在比特币系统中并没有账户的概念,而在以太坊系统中提出了账户的概念,用来记录系统状态。每个账户存储余额信息、智能合约代码和内部数据存储等。
以太坊账户分为2种类型:
1.合约账户(Contracts Accounts):
合约账户中存储执行的智能合约代码,且只能被外部账户来调用激活。
2.外部账户EOA(Externally Owned Accounts):
以太币拥有者账户。
交易在以太坊中采用了账户的概率,状态可以实时的保存到账户里,而不像比特币利用UTXO集来回溯历史。
UXTO模型与账户模型对比如下所示:
在以太坊中,每个交易的字段包括:
to:目标账户地址value:可以指定转移的以太币数量nonce:交易相关的字串,用于防止交易被重放gasPrice:执行交易需要消耗的 Gas 价格gasLimit:交易消耗的最大 Gas 值data: 交易附带字节码信息,可用于创建/调用智能合约signature:签名信息以太币以太币(ETH)是以太坊网络的货币,最小单位为wei
1ETH = 10^18 wei
以太币通过矿工挖矿来产生,以太坊中没有出块奖励减半的机制,但出块奖励也不是一成不变的,可以进行调整。目前的出块奖励是2ETH。以太坊是一个通胀模型,系统中并没有规定以太币发行量的上限。
以太坊最初始的出块奖励是5ETH,后来经过了几次调整,后续也可能会调整:
1.2017年10月的拜占庭升级,出块奖励由5枚以太币降为3枚
2.2019年3月的君士坦丁堡升级,出块奖励由3枚以太币降为2枚
以太币(ETH)目前2020.4.15的价格是158.84$,以太币最近几个月的价格走势如下图所示:
燃料燃料(Gas)用于控制某次交易执行指令的上限,每执行一条合约指令会消耗固定的燃料,若某个交易还未执行结束,但是燃料消耗完时合约执行终止并回滚状态。
燃料(Gas)可以与以太币(ETH)兑换。
运行环境
以太坊采用以太坊虚拟机作为智能合约的运行环境。以太坊虚拟机是一个隔离的轻量级虚拟机环境,运行在其中的智能合约代码无法访问本地网络、文件系统或其它进程。
对同一个智能合约来说,往往需要在多个以太坊虚拟机中同时运行多份,以确保整个区块链数据的一致性和高度的容错性,另一方面,这也限制了整个网络的容量。
智能合约编写完毕后,用编译器编译为以太坊虚拟机专用的二进制格式(EVM bytecode),由客户端上传到区块链当中,之后在矿工的以太坊虚拟机中执行。