Vitalik Buterin在2013年发表了一篇名为《以太坊:终极智能合约与去中心化应用程序平台》的博客,其中他首次提出“以太坊”这个概念,并介绍了一种“图灵完备区块链”的理念——时间和资源充足的去中心化计算机可以运行任何应用程序。
以太坊(Ethereum)是一个建立在区块链技术上的去中心化应用平台。它允许任何人在平台中建立和使用通过区块链技术运行的去中心化应用。我们姑且可以理解为以太坊是区块链里的Android,它是一个开发平台,让我们可以像基于Android Framwork一样基于区块链技术写应用。
在没有以太坊之前,写区块链应用是这样的:拷贝一份比特币代码,然后去改底层代码如加密算法,共识机制,网络协议等等(很多山寨币就是这样,改改就出来一个新币)。
以太坊平台对底层区块链技术进行了封装,让区块链应用开发者可以直接基于以太坊平台进行开发,只要专注于开发应用本身逻辑的智能合约,这样就可以大大降低开发难度。
比特币通常被视为第一代区块链,其支持参与者在个人计算机中运行程序,让用户能够在去信任化、去中心化的环境中就金融数据库的状态达成一致意见。开发者考虑到安全性的因素,不愿把比特币打造成过于复杂的系统,在设计上显得缺乏灵活性。同时比特币智能合约的语言极为受限(非图灵完备),无法很好适应交易之外的应用程序。
相比之下,作为第二代区块链的以太坊,其功能更加的丰富。除了金融交易外,以太坊还实现了更高程度的可编程性。以太坊赋予开发人员更高的自由度,允许其试验个人代码,创造出各种去中心化应用程序(DApp)。
以太坊网络上运行程序就称为智能合约,它和其他的程序一样,也是代码和数据(状态)的集合。
智能合约(Smart Contract)和人工智能(Artificial Intelligence )的智能没有关系,智能合约最早由尼克萨博在95年提出,它的概念很简单,就是将法律条文写成可执行代码。让法律条文的执行中立化,这个理念和区块链上的程序可以不被篡改、不被干预(只有有人触发交易,它将自动执行)的执行不谋而合,因此区块链引入了这个概念。
比特币的交易是可以编程的,使用的是比特币脚本。但是比特币脚本有很多的限制,能够编写的程序也有限。而以太坊程序则是”图灵完备的“,因此理论上我们可以编写能够做任何事情的程序。
智能合约非常适合对信任、安全和持久性要求较高的应用场景,比如:数字货币、数字资产、投票、保险、金融应用、预测市场、产权所有权管理、物联网、点对点交易等等。
智能合约现在的主要编程语言是Solidity和Vyper,其中Solidity更为成熟一些,Solidity的合约拓展名为.sol。代码被编译为以太坊虚拟机字节码之后,再部署到以太坊网络。以太坊为我们提供了很好的工具来完成这项工作,比如:Remix就是用来开发、编译、部署智能合约的IDE,它还是一个基于浏览器的Web IDE。
此外,Solidity还是静态类型语言,支持继承、库和复杂的用户定义类型等特性。
以太坊节点指的是以某种方式与以太坊网络交互的程序。从简单的手机钱包应用程序到存储整个区块链副本的计算机,任何设备均可扮演以太坊节点。其中主要包括以太坊全节点、以太坊轻节点、归档节点。
以太坊客户端是实现以太坊规范,并且能够通过网络与其他以太坊客户端进行通信的软件应用程序。其根据协议规则验证数据并保持网络安全。
比特币中使用的共识机制为PoW(工作量证明),在以太坊1.0中,也是通过工作量证明来验证区块。而在以太坊2.0中,以太坊通过名为Casper的升级操作从PoW过度到PoS(权益证明)。在该机制下,验证者明确地通过以太币将资本质押到以太坊上的智能合约中。这些质押的以太币充当抵押品,若验证者有失信行为或者消极怠工,则会销毁抵押品。
在以太坊中引入了燃料费(并不是费用,而是花费的燃料量)这一概念,如同汽车无法在燃料耗尽的情况下行驶,合约也不能在没有燃料费的情况下运行。而燃料费与合约的复杂度和难度有关,复杂度越高的合约其所需支付的燃料费也就越高。利用这一点可以很好规避一些长时间的循环程序,因为这意味着需要支付非常高额的燃料费。
在交易时,需要使用以太币支付燃料费。燃料费通常只消耗一小部分以太币,并设置了一个单位“ gwei ”。其中1gwei相当于以太币的十亿分之一。如果网络拥挤并且许多用户都在参与交易,燃料费的均价就会上涨。相反,如果交易量少,均价也会下降。
虽然燃料费的价格不断变化,但是每次操作所需的燃料费是固定的。也就是说,执行复杂合约消耗的燃料费要高于简单交易。可以说,燃料费成为算力度量的标准,其可以确保系统根据用户的以太坊资源占用率收取相应费用。
在进行合约交易时,你可以计算出需要支付的燃料费(通过ETH Gas Station)。你可以设置一个较高的价格来激励矿工尽快处理交易。同时,你也可以设置燃料费限额,用于自我保护。当合约出现问题时,消耗的燃料费可能会高于计划值。因此燃料费限额的作用就是在设置的燃料费耗尽后,确保操作停止,相应的合约就会失效。如果执行结束还有燃料费剩余,那么这些燃料费就会返还给用户。
简而言之,燃料费决定了矿工处理交易的速度,而燃料费限额则决定用户愿意为此交易支付的燃料费上限。
我们可以将以太币存入个人钱包中,有热钱包和冷钱包两种选择。
以某种方式连入互联网的数字货币钱包成为“热钱包”。它通常是一种移动或桌面应用程序,用户可以通过其查看余额或发送接收代币。热钱包连入网络,极易遭受攻击,但日常支付更加青睐这种便捷方式。Trust Wallet是一种便捷的移动钱包买,支持多种货币。
冷钱包则是一种离线工作的数字货币钱包。这类钱包远离在线攻击向量,显著降低遭受攻击的概率。然而,冷钱包的便捷性一般不如热钱包。硬件钱包均属于冷钱包。
随着以太坊使用人数的增多,区块链的容量已无法满足用户需求,因此扩容方案就此提出。
扩容的主要目的是在不影响去中心化和安全性的前提下,提升交易速度和交易吞吐量。而扩容也分为链上扩容和链下扩容。链上扩容需要更改的是以太坊协议(一层网络/主网),其中分片是主要链上扩容技术;链下扩容则是要与主网分开,在二层网络实现,因此也被称作二层扩容。二层扩容主要包括:Rollups、状态通道、Plasma、Validium、侧链等等。
在工作量证明协议中,矿工负责保障网络的安全性。矿工不会作弊,因为一旦作弊就代表着其算力要超过全网算力的51%,这种做法会空耗电力并且基本无法成功。而权益证明并不存在这种博弈理论,而是通过其他加密货币经济学措施来保障网络的安全。
在权益证明中,验证者必须质押一定数量的代币才能获得验证权。如果节点试图作弊,那么其质押的代币也将会丢失;如果节点无响应或者脱机,这些代币也将逐渐耗尽。
以太坊改进提议 (EIP)是为以太坊潜在新功能或流程提出建议的标准。 EIP 包含提议改进的技术规范,并作为社区的“真相来源”。 在 EIP 的过程中,将会讨论和制定以太坊的网络升级和应用标准。
以太坊社区中的任何人都可以创造一个 EIP。 以太坊改进提案编写准则在 EIP 1 中提供。 以太坊改进提案应主要包括简明技术规范,并提供一些激励措施。 以太坊改进提案的创作者负责在社区内建立共识并记录不同意见。 从历史上看,大多数以太坊改进提案的创作者通常是应用程序或协议开发者,因为提交高水平的以太坊改进提案需要很强的技术能力。
去中心化金融(DeFi)是一种对金融应用程序实施去中心化的活动,其构建在公共的开源区块链,互联网中的所有用户均可免费访问。在日趋成熟的DeFi生态系统中,用户可以通过点对点网络和去中心化应用程序与其他用户和智能合约进行交互。
随着以太坊网络使用需求的增加,其可扩展性问题逐渐暴露出来,以太坊的手续费也变得昂贵。因此“以太坊2.0”应运而生。该升级提案的重点在于解决可扩展性问题。在保障安全性和去中心化的前提下,通过实施技术升级来实现整个“共识升级”,从工作量证明机制过渡到权益证明机制,以太坊网络的速度、效率以及可扩展性将得到显著改善。
“世界计算机”以太坊上的时间以12秒为一个单位计数,称为“slots”。每个slot都会分配一个不同的验证节点来提议一个新区块。若它完成了它的任务,一个有效的区块(在4秒内)将会填充slot,否则slot将传递为空。
区块提议者将区块发送到网络中的每个节点,然后由节点负责处理它并更新其EVM的状态。这使所有节点与提议者保持同步,并将EVM的环境转变为集体性的以太坊环境。
每个slot都有一个专门分配的委员会。这个所谓的委员会是一组验证节点,被指派验证和证明由区块提议者广播的区块的有效性。经过验证,委员会成员会广播其加密认证。
如今有几十万个验证器,如果每个验证节点都在每个委员会中,网络会在大量认证计算下崩溃。因此做了一个去中心化的权衡,每个验证器不会验证每个slot,但会验证每个epoch。
一个epoch由32个slots组成,因此1个epoch为6分24秒。在每个slot的开始,整个验证节点小组被随机(利用RANDAO进行随机分配)分成32个委员会,对应于即将到来的epoch的32个slots。
每个slot都会带来一个新的委员会。第一个成员是区块提议者,其余为证明人。区块提议者有4秒时间向委员会发送区块。每个成员验证区块并创建BLS签名(若未指定区块,则会验证最后一个块)。
BLS签名是一种数字签名,它提供了所有签名应有的作用(证明特定消息是由特定的人签名的),同时它有一个附加属性:它可以被聚合。一旦BLS签名被聚合,一个操作就可以验证数千个签名。