科普

解读以太坊黄皮书(1/7)

Ajian   |     |   2803 次阅读

各位好久不见!很久没有发文了。不知道大家有没有看过我最近更新的一篇文章,最近我加入了 ConsenSys ,成为了一名区块链协议工程师。

我在区块链领域还是个门外汉,过去的几周里恶补了很多知识。不过面对这一挑战,我兴奋不已,而且乐在其中。

我前段时间开始读以太坊的白皮书黄皮书的时候萌生了写作的灵感。最近大概发生了以下几件事:

  1. 以太坊白皮书点燃了我对这个项目的学习热情;
  2. 对以太坊进行了很多研究(博客帖子、文章、教程等等);
  3. 开始阅读以太坊黄皮书,发现自己啥都不懂;
  4. 心态崩了,被自己蠢哭了!

经过了几天的抓狂之后,我又跟其他人聊了下,发现不少人也是如此。我撰写本文的目的是:在阅读以太坊黄皮书的过程中对其进行梳理,尝试简化一些概念,并针对以太坊协议的主要部分来创建一个思维模型。

(免责声明:如果你已经了解了以太坊及其协议,这篇文章可能对你用处不大。我主要是想帮助自己和其他人更多地了解该协议——我已经提醒过你了!)

(免责声明 2:本文基于黄皮书的当前版本,即 2018 年 2 月 12 日的 b9ee254 版)

接下来就进入正题!

引言

(这是最简单的部分!别掉以轻心!)

在这一节中,作者介绍了以太坊项目的目标和驱动因素,并且引用了很多前人的大作。

重点:

  • 以太坊想要创建一个新的去中心化计算机,每个人都可以参与进来,并使用它。

区块链范式

“可以将以太坊 [...] 看作是一个基于交易的状态机。”

我是计算机科学专业的。我还记得我学过的关于计算机系统架构的知识。从本质上来说,计算机一词最简单的定义大概是:

“能够获得输入、进行某种处理、存储数据,并给出一个输出的东西。”

(如果你觉得这个定义过于简单的话,可以了解一下 冯·诺伊曼的计算机架构。)

简单来说,在以太坊模型中,交易和智能合约的执行会改变节点的状态;可以把以太坊想象成一台计算机。因此,如果你将这个逻辑复制到分布于点对点网络中的其他节点上,并找到一种方法来让这些节点就操作的执行顺序和正确状态达成共识,最后就能得到一个去中心化的计算机,其中节点使用交易(输入)来执行计算(处理),存储其结果(输出),以便之后查询(输出)。

公式 1 是从状态转换顺序的角度对“以太坊计算机”下的数学定义 。我们来看一下:

$σ_t+_1≡Υ(σ_t,T)$ …… (1)

这个公式内包含以下几个参数:

  • $σ_t+_1$ 代表下一个世界状态(后面会详细介绍世界状态)
  • $Υ$ 代表以太坊状态转换函数
  • $σ_t$ 代表当前世界状态
  • $T$ 代表一个交易

这个公式表明,交易(输入)会影响(处理)当前的世界状态(存储),最后得到一个新的世界状态(存储/输出)。

另一种思路就是将以太坊看作是状态转换机。在这个模型中,交易 $T$ 就是当前状态 $σt$ 和下一个状态 $σt+_1$ 之间的弧线。

(在之后的文章中,我们会更详细地讲解以太坊的世界状态。如果你想了解更多的话,可以看一下 Timothy McCallum 写的这篇博客文章。)

拓展模型

在以太坊上,交易都是打包成区块(数据块)的。这些区块相互链接起来,形成了一条区块链。将新的区块添加到链上的过程被称为 挖矿 。其中一个很重要的知识点是,节点必需提供计算机和电力才能生成区块。因此,我们需要通过某个机制来激励人们参与进来。每当有一个节点创建了一个新的区块,相关参与者就能得到奖励。

因此,我们可以将上文的以太坊范式扩展到区块和奖励上。这就是公式 2、3、4 的由来。我们来看一下:

$B≡(...,(T_0,T_1,...))$ …… (3)

这个公式将区块视作一个交易列表(为便于理解,其他部分在此忽略不计)。

由上文可知,我们是按块来处理交易(而非单笔单笔处理),然后更新世界状态的。因此,我们也可以将这个公式写成:

$σ_t+_1≡Π(σ_t,B)$ …… (2)

  • $σ_t+_1$ 代表下一个世界状态
  • $Π$ 代表区块层面上的状态转换函数
  • $σ_t$ 代表当前世界状态
  • $B$ 是一个区块(即一个交易列表)

简单来说,这个公式表明,将区块中的交易应用到当前状态中,产生一个新的状态,就可以更新世界状态。

最后还有一个公式 4 。这个公式将上文提到的所有参数都融合进了同一个模型里:

$Π(σ,B)≡Ω(B,Υ(Υ(σ,T_0),T_1)...) $ …… (4)

我知道你在想啥!这个公式看着这么丑,貌似狗屁不通的样子。其实它表达的意思是:

  1. 挖出区块($B$)之后,按顺序执行交易$ (T_0,T_1,...)$,每个函数($σ$)的输出都被用作下一个函数的输入。
  2. $Ω$ 被称为区块确定性状态转换函数,会奖励参与者。

综上所述,这 4 个公式阐明了区块链的运作方式。节点挖出一个区块之后,该区块内的交易会(按顺序)执行,改变当前的世界状态。挖出该区块的节点会得到奖励。

我知道这看上去很复杂。我第一遍读的时候也是什么没看懂。不过放轻松点,难的还在后面呢... :)

这一节的最后,作者还着重介绍了一下区块奖励。以太坊有自己的原生货币(以太币),以太币会作为出块奖励发放给挖矿节点。以太币可以拆分成很小的单位,如下表所示:

倍数 单位
100 Wei
1012 Szabo
1015 Finney
1018 Ether

结语

恭喜你!读到这里,你就学完黄皮书的前两页内容了!

我希望这篇文章能帮助你理解黄皮书的内容。我读不惯学术论文,感觉根本看不懂。不过多读多研究还是有用的。如果本文对你有帮助的话,请告诉我,我会超级开心的!

下一篇文章还没想好什么时候写。等我准备好了就会立马动笔。

下一篇再见!

参考文献


解读以太坊黄皮书(2/7)
解读以太坊黄皮书(3/7)


原文链接: https://www.lucassaldanha.com/ethereum-yellow-paper-walkthrough-1/
作者: Lucas Saldanha
翻译&校对: 闵敏 & 阿剑

本文由作者授权 EthFans 翻译及再出版。


你可能还会喜欢:

以太坊 (Ethereum ):下一代智能合约和去中心化应用平台
以太坊的工作原理
以太坊简介(注释版)

 
0 人喜欢