既然我们已经解析过了什么是以太坊,现在就让我们更加深入其中,一探究竟。
想想我们在 “什么是以太坊” 一文中描述的在线笔记本。使用以太坊时,它不要求一个实体去存储和控制数据。为了达成该目的,以太坊大量借鉴了比特币协议及其设计,但以太坊对其进行了调整,使其支持货币之上的应用。
然而,以太坊旨在抽象化(abstract)比特币的设计,这样开发者就可以创建具有附加步骤、新的所有权规则、丰富的合约调用形式(alternative transaction formats)或者不同的转移状态的应用及协议。
以太坊 “图灵完备”(Turing-complete)编程语言的目标在于允许开发者创更多区块链交易可以治理并自动产生具体结果的应用。这种灵活性可能是以太坊主要的创新所在。
以太坊区块链
以太坊区块链的结构同比特币的十分相似,即一份整个交易历史的共享记录。网络上的每一个节点都存储一份交易历史。
以太坊与比特币的主要不同在于,除了所有以太币(Ether)的交易历史,其节点还存储每个智能合约最近的状态(state)。

对于每个以太坊应用,该网络需要跟踪 “状态”,或者所有这些应用当前的信息,包括每个用户的余额、所有的智能合约代码及其所存储的位置。

比特币使用未花费交易输入(unspent transaction outputs,即 UTXO )来追踪谁使用了多少比特币。

尽管听起来更复杂,但其理念十分简单。每发生一笔比特币交易,比特币网络就像纸币一样以一种类似于物理货币或变化的方式 “改变”(break)总数额。

为了完成以后的交易,比特币网络必须将你所做的所有变化都加入账本,它们被分为 “已花费的” 或者 ”未花费的“。

以太坊,选择了另一路径,它使用账户的概念。
(来源:CoinDesk)
像银行账户中的资金,一个钱包中的以太币可以被移植到(ported)另一账户中。资金总是存在于某个地方,但并不存在称之为持续性关系的状态。
什么是以太坊虚拟机?
在以太坊中,每次使用程序时,数千台计算机组成的网络会处理它。
以智能合约化标准的编程语言写就的合约被编译成 ”字节代码“(bytecode),其可被一项名为 ”以太坊虚拟机“(Ethereum Virtual Machine,下称 EVM)的功能读写。
所有的节点使用其 EVM 来执行合约。
(来源:CoinDesk)
除了跟踪当前 ”状态“,网络中每个节点持有一份网络的交易与智能合约的历史。每次一个用户执行同样的行为时,该网络上所有节点需要就该改变已发生达成共识。
此处的目的在于,让网络的矿工和节点承担起从一个状态向另一个状态转换(transferring the shift from state to state)的责任,而不是让某些权威主体如 Paypal 或者银行来承担此责任。比特币矿工验证从一个人到另一个人的所有权的转变。虚拟机则执行合约,无论其初始时被开发者设定的程序是怎样的。
EVM 上实际执行的预算是通过基于堆栈(stack-based)的字节代码(bytecode)语言(机器可以读取的 0 和 1)完成的,但开发者可以用 Solidity 以及 Serpent 这样对人类而言更易读写的高级语言来编写智能合约。
矿工是阻止恶意行为的群体 — — 例如避免双花问题,拒绝未付款的智能合约。
以太坊网络上有数千个节点,每个节点编译并执行同样的代码。
但是,你可能会想,这不是比正常的计算贵很多吗?的确如此。这就是为什么以太坊可能仅可被用于某些用例。
以太坊官方开发指南承认了这种低效性,其声称:
“大体来讲,一个很好的启发是,你无法在 EVM 上做任何你无法在 1999 年的智能手机上所做的事。”

翻译:王泽龙
责编:寇建超
区块链101
比特币怎样挖矿?|区块链 101
公链和许可链有什么差异?|区块链 101
【周末学习】谁是中本聪?|比特币 101
什么是闪电网络?|区块链 101
继续阅读
阅读原文