您的当前位置: 首页 > 三个皮匠报告百科 > 以太坊(Ethereum)

以太坊(Ethereum)

目录

以太坊是什么

以太坊(Ethereum)是一种基于区块链技术且拥有智能合约功能的公链平台,平台使用者可以利用以太坊提供的基础层对区块链技术做更广泛的尝试并不受中央机构控制。“坊”代表巷,四通八达的巷连接了人们的交通网络,这正如以太坊的特性:连接各个分散式应用程序或各个DApps。同时,平台设计者为防止使用者在系统内恶意占用资源和放置垃圾信息的行为,以太坊规定使用者在利用以太坊系统进行交易时需要使用代币作为交换,这在以太坊中称之为Gas。

以太坊的架构

1.数据层

数据层是区块链的基础,在数据层数据以交易的形式存储在分布式共享账本中。数据层通过使用哈希函数、Merkle树、非对称加密、数字签名等技术实现以太坊区块链中数据的不可篡改性和安全性,为整个以太坊区块链系统提供安全可靠的数据支持。

(1)哈希函数:哈希函数可以将输入为不同长度的内容转化为定长,在哈希函数中,既不需要知道输入信息的具体内容,也不需要限定输入信息的长度,只要通过哈希函数进行计算就可以获得固定长度的比特值。具有单向性、抗碰撞性和确定性等属性的哈希函数满足了区块链中的防篡改、快速验证等需求特性。

单向性:对于正输入,哈希函数可以轻松计算输出结果。但是,基于输出结果来反向计算输入原始数据非常困难。因此,哈希函数的操作过程是单向不可逆的,从而确保了输入信息的安全性。

抗碰撞性:输入不同的两个数,经过哈希运算得到相同的输出结果,只是一种理想状态,现实中还不能同时找到这样的两个数。

确定性:在哈希函数运算的过程中,即使重复输入一样的数据内容,最终计算出来的结果也是确定的,不会随其他因素而发生改变。

(2)非对称加密:非对称加密,也称为公钥加密,是目前被广泛使用的一种加密算法。与对称加密不同的是,非对称加密过程中加密和解密分别采用不同的密钥,即公钥用来进行加密,私钥用来进行解密。(公钥一般公开,而私钥由用户私下保存)。

(3)区块:区块主要包括两部分——区块头和区块体。区块头中记录了相关的属性字段,其中前一个区块的哈希值是区块中至关重要的一个属性,该属性使前后区块相互链接从而形成一条链即区块链。区块体中则记录了相关的所有交易,并且使用一种基于哈希值的二叉树结构Merkle树对交易数据进行存储和组织。

以太坊

(4)Merkle树是一种重要的数据结构,一般是二叉树结构,也可以是多叉树,包括叶子节点、中间节点和根节点。Merkle树的完整计算过程,如图2.3所示。首先对交易数据(Tx0、Tx1、Tx2、Tx3)分别进行哈希处理已获得哈希值(hash0,hash1,hash2,hash3),然后将哈希计算成对组合,并重复执行,直到得到最后一个根哈希值结束。

以太坊

(5)数字签名:数字签名完整过程分为签名和验证两部分。在发送消息之前,发送方首先需要通过哈希函数对将要发送的消息进行计算,进而获得哈希摘要,然后使用私钥对摘要进行签名。当接收方从发送方收到数字签名,首先使用公钥对数字签名进行解密以获得摘要,然后通过哈希函数计算原始消息以获得摘要,并将它们的结果进行比较。若一样,则说明没有被篡改,否则,意味着信息已被篡改。

2.网络层

网络层包括P2P网络机制、数据广播机制和数据验证机制。以太坊的底层网络结构是一个结构化的P2P网络,其中每个节点(即客户端)存储整个区块链的副本。在以太坊网络中,节点实时监听着网络中广播的数据,通过TCP协议彼此之间建立连接以及传输消息,当接收到新的交易和区块时,就会对这些交易和区块的有效性进行验证,只有验证通过的交易和区块才会继续被处理和转发。

3.共识层

共识层可以确保节点在分散网络中就区块数据的一致性和正确性达成共识,目前以太坊中包括PoW和PoS两种共识算法。

4.激励层

激励层包括发行机制和分配机制。在以太坊中奖励方式主要包括普通区块奖励和叔块奖励(叔块奖励是对产生或者发现不在主链上的区块的旷工进行奖励)。通过给予旷工以太币奖励从而激励矿工积极参与交易的验证和区块的生成,维护系统正常循环发展。

5.合约层

合约层分为以太坊虚拟机(Ethereum Virtual Machine,EVM)和智能合约。以太坊网络中的每个节点都在EVM下运行并执行其指令,通过EVM可以执行任意复杂算法,智能合约被转换为EVM代码,然后由节点执行,无需第三方的参与,当条件符合时则会自动触发执行,用于编写智能合约的最流行的编程语言之一是Solidity。

6.应用层

应用层包括DAPP(去中心化应用)、以太坊等各种衍生应用。开发者可以在基于以太坊平台进行应用产品的开发[1]

以太坊

以太坊的基本构成

以太坊要素由节点、矿工、账户、交易四部分构成。

(1)节点:顾名思义,即构成以太坊的基本单位。以太坊中含有大量节点,通过节点可以对区块链数据进行读取和写入。根据节点参与度大小和使用情况又划分为两种:公有链和私有链。公有链类似CPU出厂的正式版本,用于上线最终版本的以太坊相关开发。私有链类似CPU的ES版本(EngineeringSample,即不上市仅供测试的工程样品),用以测试即将要上线到公有链中的开发。在公有链中,每一个节点均具有同等的地位和操作权限,同时可以自由加入以太坊中进行数据读取写入。节点间依靠POW机制保证其数据交换的无差性和可靠性。

(2)矿工:网络中节点用来不停进行哈希运算来满足POW机制规定。一个节点可以包含若干矿工,通过CPU、GPU、专用矿机进行运算哈希数学难题碰撞得出答案,算力越大的矿工有较大几率求得难题的答案,将计算结果保存到新的区块当中并向全网广播。当结果被确认后,新生成的区块将奖励以太币(ETH)发送到矿工所属的节点账号中。

(3)账户:以太坊账户上存在两种账户:外部账户和合约账户。外部账户通过公私钥对及进行控制,合约账户表示在区块链上指向了一个智能合约。合约账户无法主动发起交易,但是外部账户可以进行交易。

(4)交易:以太坊交易中,若干节点进行数字资产的转移。首先由以太坊检查交易是否有效,并计算交易所需费用设定所需的gas值。外部账户通过创建和签名交易进行信息的发送。因外部账户并没有代码,此时需要合约账户。在合约账户收到消息后,启动合约的代码对其内部存储进行读写,交易在以太坊上进行到其代码运行为止或gas消耗完毕[2]

以太坊的特点

以太坊不仅拥有比特币所具有的技术特点,以太坊也具有比特币不具备的特点,具体来讲其特点有以下几点:

(1)权益证明机制。以太坊目前采用PoS(权益证明机制),而比特币采用的是PoW(工作量证明机制),矿工在使用PoW机制解决问题时会在区块链中增加一个块,这意味着最长的区块链就是正确的区块链。而在PoS机制中,验证交易的方式却是通过证明其拥有加密货币的单位来验证。PoS机制所耗费的能源相对较少,也不会浪费提供较短链矿工的资金与精力。

(2)去中心化。以太坊的信息存储方式与百度网盘等应用程序采用的中心化存储不同,它将用户上传的信息通过默克尔树结构进行分化,将分化后的信息碎片随机储存在网络节点上,每个节点均可看到加密的信息但无法解密全部内容。这种方式极大程度地降了文件存储成本。与此同时,以太坊也拥有去中心化应用程序(DApps)以及去中心化自治组织(DAO)

(3)开源性。用户在网络中可以免费获得以太坊的源代码,同时所有使用者都可以免费访问、贡献和分叉。这些特点使以太坊不仅积累了一大批用户还建立了双方的信任,这使得以太坊成为拥有最多的活跃用户的数字货币社区。与此同时,用户在使用过程中发现任何问题都可以通过以太坊改进建议(EIP)提出,最大程度上完善用户体验与弥补以太坊的功能缺陷。

(4)智能合约。智能合约这一概念由计算机科学家尼克萨波在上世纪90年代发表的白皮书中最早提出,以太坊也是第一个将平台与智能合约功能结合起来的数字资产。使用者可以通过智能合约交换信息、合同、知识产权等所有有价值的东西,这些信息被用户上传到区块链上后便无法被篡改。同时使用者也可通过收发以太坊来建立市场,通过逻辑指令进行资产转移并形成新型的数字资产。

(5)图灵完备性。以太坊不同于比特币只能支持简单运算,它允许更复杂的条件逻辑,只要在时间和内存充足的情况下,程序就一直可以运行下去。

以太坊的产生方式

以太坊的产生方式与比特币相同,都是通过矿工挖矿,具体的步骤如下:

(1)开发者进入钱包执行一项操作,并将一枚数字货币或者代币支付给另一个用户。

(2)等待区块链上的矿工将这个交易拾取,在被拾取之前这笔交易都会在小且分散的本地池中。

(3)矿工在未确认交易的交易池中选择想执行的交易并打包成数据块,一笔交易数据可由多位矿工同时打包,但在打包前矿工要对交易数据进行检查。通过查看交易者的历史数据来确认对方钱包里是否有足够的余额,如果符合条件即可被打包上链。当交易者想加速这笔交易时通常会提高挖矿报酬,此时矿工将优先处理这笔有高报酬的交易。

(4)接下来矿工打包成块后的交易数据放置到区块链上,此时区块链上的所有节点都会接受到这笔交易的数据。这个数据块首先需要一个独一无二的“工作证明”,但这个“工作证明”需要解决一个非常复杂的数学问题才可获得,需要花费相当多的电力来解决,这个解决过程就叫做挖矿。

(5)矿工在找到合适的“工作证明”后便可对所有矿工广播他的数据。

(6)其他矿工在看到广播后会对收到的数据块的工作证明进行合法性检验,通过哈希运算确认其能输出以多个零开头的签名。如果通过了检验并取得其他矿工的认同,这个数据块将被放置到区块链上,这个过程称为共识算法。

(7)当数据块被添加到区块链上后,该条链上的所有数据块都会承认它的正确性,当交易被确认的次数越多,它的安全性就越高,攻击者就越难对它进行更改。同时,当有新的数据块加入链上时,所有的矿工都要从步骤三重新打包一个新的数据块[3]

以太坊的发展历程

以太坊技术最早起源于比特币,作为第二代可编程的区块链体系,聚集大量开发者,以太坊生态也日益扩大稳健。以太坊在2013年底首次提出,在2014年由比特币杂志联合创始人之一的Vitalik Buterin发布了以太坊的白皮书。以太坊作为一个去中心化的程序(Decentralized Application)开发平台,起初由瑞士的以太坊Switzerland GmbH公司进行开发,后由“以太坊基金会”负责。

截止到2020年底为止,以太坊共经历了四次重大历史阶段。

在第一阶段,以太坊只能进行挖矿,挖矿采用POW证明,随后若干天进行了第一次分叉并启用了智能合约功能。

第二阶段发生在2016年春天,第二次分叉发生。但是当年发生的DAO事件令以太坊进行了硬分叉,即一个只能兼容之前交易而禁止向后兼容的方案,产生了以太坊和以太坊经典。随后以太坊和以太坊经典各自进行分叉以避免重放攻击。

2017起,第三阶段进行了多次分叉,目的在于改善智能合约的编写,提升安全性能。最重要的目的是在于将现有的POW机制转向未来POS机制,目前这一机制虽然仍作为主流机制,但以太坊在考虑使用POS机制替代PoW机制。同时在这个阶段,以太坊和比特币迈出历史性的一步,首次通过智能合约进行不同链上的加密货币交易。

第四阶段起步于2020年,该阶段面向以太坊2.0。作为项目最终阶段,其最终目的是转为POS机制并开发出第二层区块扩容技术方案。按照以太坊官方规划,原计划在2020年6月推出进行,预计将通过三次分叉完成,但是在2020年8月的测试链上发现若干错误,原计划于2020年11月最终上线但是被继续推迟。

参考资料:

[1]胡倩.基于以太坊的区块链共识算法研究与实现

[2]白甲义.基于以太坊的风电能源交易管理研究

[3]万语竹.以太坊价格的影响因素实证研究

本文由@Y-L发布于三个皮匠报告网站,未经授权禁止转载。

分享到微信 分享到微博 分享到QQ空间
上一篇:双重股权结构
下一篇:病毒式营销
客服
商务合作
小程序
服务号
折叠