以太坊是什么?¶
以太坊是一个开放的区块链平台,任何人都可以在这个平台上构建和使用基于区块链技术的分布式应用。像比特币一样,以太坊不被任何人控制也不属于任何人,它是多人一起开发的一个开源工程。但是又不同于比特币协议,以太坊被设计成具备适配性和灵活性。很容易在以太坊平台上创建新的应用程序,随着家园(Homestead)版本的发行,任何人都可以安全地使用这些应用程序。
下一代区块链¶
区块链技术是比特币的技术基础,由神秘作者中本聪(Satoshi Nakamoto)在2008年的白皮书《比特币:P2P电子现金系统》中首次被提出。虽然原始论文中已经讨论了区块链更广泛的用途,但是直到几年后,区块链技术才成为一个通用术语。区块链是一个分布式计算架构,每一个网络节点都执行并记录相同的交易信息,并把结果打包到块(block)中。同一时间只有一个块可以被添加,每一个块都包含通过前一个块计算出来的数学证明。以这种方式,整个网络中的数据块数据库都会保持一致。个人用户以强大的加密技术与账本进行交互。网络通过奖励机制来促进每个节点维护和验证的行为。
在比特币中,分布式数据库被设计成账户余额表,或者叫做账本,个人之间通过比特令牌的转移来进行交易。后来比特币开始越来越多地吸引开发者和技术专家的注意,小型项目利用比特币网络来实现令牌转账之外的目的,在这之上,改进了原始的比特币协议,以加入更多新的特性和能力。在2013年底,以太坊的创始人Vitalik Buterin提出,区块链上层加入可编程功能可以用来构建很多其他的项目。
在2014年,以太坊的创始人Vitalik Buterin,Gavin Wood 和Jeffrey Wilcke有雄心实现下一代区块链技术,实现一个图灵完备的智能合约平台。
以太坊虚拟机¶
以太坊是一个可编程的区块链,而不是给用语提供一组预设的操作(比如:比特币交易)以太坊允许用户创建任意复杂度的操作。在这种方式下,区块链就成为一个分布式应用的平台,可以实现但不局限于加密货币。
狭义上,以太坊是一套可以实现分布式应用的平台协议。它的核心是可以执行任意复杂算法的以太坊虚拟机(EVM)。在计算机科学方面,以太坊是图灵完备的。开发人员可以使用现有的语言(如:Javascript和Python)方便地创建运行于EVM上的应用程序。
和其他区块链一样,以太坊也包含一套P2P协议,以太坊区块链数据由网络上的节点进行维护和更新。网络上的每一个节点都运行着EVM并执行相同的指令。因这个原因,以太坊经常被描述为“世界电脑”。
以太坊网络中大规模的并行计算并不是为了计算更高效,事实上,这个过程让计算速度比传统的计算更为低效。另一方面,以太坊中的每一个节点都运行EVM目的是保持整个区块链的共识。分散式的共识机制给予了以太坊极其高的容错能力,确保零宕机,并且使存储于区块链的数据永远不可更改并且可被审查。
以太坊平台本身是无特征的或无价值的。类似于编程语言,由企业和开发者决定应该如何使用。然而,很明显某种类型的应用程序更能从以太坊平台上获得收益,具体来说,以太坊更适用于自动化对等体之间直接交互或通过网络来协调的应用程序,例如:p2p的市场应用或复杂金融合同的自动化。比特币允许个人不通过像银行、金融机构或政府等第三方担保进行现金交换业务。以太坊等影响可能更加深远,理论上可以在以太坊之上运行代码,自动可靠地执行任何复杂性等财务交互或交换。处了金融方面,任何依赖于信任、安全和永久性的情景,都会受到以太坊平台的巨大冲击。
以太坊如何工作?¶
以太坊集成了很多比特币用户熟悉的特性和技术,同时也引入了许多自身的修改和革新。
比特币区块链是纯粹的交易列表,以太坊的基础单位是账户。以太坊区块链追踪每一个账户的状态,每一个区块链状态转换都是账户之间的价值和信息交换。以太坊包含两种账户:
- 外部账户(Externally Owned Accounts),用私钥来控制
- 合约账户(Contract Accounts),由合约代码来控制并且只能由外部账户激活
对于大多数用户而言,它们之间的基本区别在于用户控制EOA,因为它们可以控制对EOA进行控制的私钥。 另一方面,合同账户由内部代码管理。 如果它们被人类用户“控制”,那是因为它们被编程为由具有特定地址的EOA来控制,这又由持有控制该EOA的私钥的人控制。 流行术语“智能合同”是指合同帐户中的代码 ———— 当事务发送到该帐户时执行的程序。 用户可以通过将代码部署到块链来创建新合同。
合同账户只有在EOA指示的时候才执行操作。 因此,合同帐户无法执行随机数生成或API调用等本地操作,只有在EOA提示的情况下,才能执行这些操作。 这是因为以太坊要求节点能够就计算结果达成一致,这需要严格确定性执行的保证。
像比特币一样,用户必须向网络支付小额的交易费用。 这样可以保护以太坊区块链不受恶意的计算任务,如DDoS攻击或无限循环。 交易的发件人必须支付他们激活的“程序”的每个指令,包括计算和内存存储。 这些费用是用以太坊本地货币以太来支付的。
这些交易费用由验证网络的节点收集。 这些“矿工”是以太坊网络中接收,传播,验证和执行事务的节点。 然后,矿工们将这些交易(包含于“以太坊区块”中的“账户状态”更新)分组成所谓的“块”,然后矿工们将彼此竞争计算,争取成为下一个被添加到区块链上的块。矿工们通过计算出每个成功的块而获得以太币奖励。这给人们提供了经济上的激励,鼓励人民将将硬件和电力投入到以太坊网络上。
在比特币网络中,矿工的任务是解决复杂的数学问题用来成功进行块的“挖掘”,这种方式被称为“工作量证明(PoW)”。任何计算问题,如果计算所需的资源比验证结果所需的资源高出更多数量级的问题,都是好的工作量证明算法。为了阻止由于使用专用硬件(如ASIC)而使计算集中化,比如比特币网络中已经发生的那样,以太坊选择了内存饥饿算法。如果内存如同CPU一样成为计算资源,那么普通的计算机就称为了最理想的硬件。这就使以太坊的工作量证明对ASIC具有抵抗性,这样分布更为分散的计算比硬件集中的区块链(例如比特币)更具有安全性。
学习以太坊¶
[正在扩展中]
区块链和以太坊101¶
- Explain bitcoin like I’m five - an excellent introduction to blockchain technology and bitcoin to the mildly techsavvy layperson.
- https://medium.com/@creole/7-a-simple-view-of-ethereum-e276f76c980b
- https://blog.chain.com/explaining-ethereum-fd043c7d602e
- Explain Ethereum to non-technical people Q&A on stackexchange
- Reddit threads on ELI5-ing Ethereum:
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19]