00:00
那么我们还是以黄皮书作为一个开始,这样打开大家看到了,其实黄皮书没关系,大家可以,呃在get上已经上传了这这个资料,对吧,大家可以直接打开。另外就是呃,今天MPT就是关于梅克尔梅克尔呃盘加数这一部分课件我也已经刚刚传上去了,大家想看的话也可以先下下来一边看,呃。大家觉得我们是看英文版的还是看中文版的,中文版的是吧?哦,行,对英文版的确实会理解起来更费劲一些,不过中文版就是可能会遇到一个问题,就是有一些地方我们看到它的翻译会比较奇怪啊,那我们一起来就是过一下我给大家解释一下就可以了。黄皮书这一部分大家可以看到,其实这这个干露的的是是这个黄皮书的作者啊,我们现在看的这个版本是拜占庭的版本,今年的五月份出的,呃,大家如果要是已经大概的浏览过一下这个黄皮书的内容的话,你们就会发现它其实就是白皮书里边的具体实现,比如说一开始它是简介,那这个其实就是把白皮书里边一开始的前沿和历史那一部分,他又做了一个展开,大家包括可以看到这里也有前人工作就把威神。
01:24
Y,对吧?呃,一三年提出的这个也就写进去了,那再往前的话,那其实又是工作量证明啊,还有这个比特币啊,呃,包括这个什么万事达币,什么彩色币都都会在这里边说一下,但是他也说到一些比较新的,比如瑞波什么的,呃,所以像这些东西呢,呃,我们前面就肯定就是只是这么过一下就可以,大家感兴趣的话了解一下历史,这个出去之后也是可以说的啊,我们如果要说正式开始的话,这部分内容我们从这个第二部分开始,区块链算式这一部分开始,这部分我们首先其实之前给大家简单的说过一下,他在说什么呢?就是真正把以太坊当成一个状态机,基于交易的状态机。
02:13
那么它状态机是一个什么样的东西?那其实就是它有各种各样的状态,在一定的输入条件下,可以从一个状态跳转到另一个状态,这种东西就是状态机,对吧?就是由一个原始的状态S根据一定的输入跳转到下一个状态,Sep,那在以太坊里边它的定义是什么呢?它的定义其实就是我们的输入就是交易了,每次状态的改变都是通过交易出发的,它的起始就是我们的城市书块啊,大家一开始构建思链的时候,那个geneis.ja对吧?然后随着交易的执行,它一直改变,一直到最终状态,那这个最终状态就是以太坊世界的权威版本,所谓的权威版本其实就是说大家达成共识的我们当前的一个状态。
03:05
我们能够转账的一个状态,能够做一些别的事情的一个状态,那这样的一个状态包括什么样的数据呢?包括包括每一个账户的余额啊,这里还有这个,他说名誉度,信誉度,现实世界的附属数据,其实大家可以想象到所有的这些所谓的附属数据,或者是名誉度什么的,其实就应该都是在合约的状态变量里面,对吧?这些都是通过状态合约里边的状态变量能够把它存储起来的,那本身以太坊里边的状态的话,大家能够想到本身账户相关的就是一个余额,呃,所以对于以太坊设计最初来讲,它就是所有电脑能够描述的任何信息,它都能够表达成一个状态,因为它是一个世界计算机嘛,而交易就是连接两个状态的有效的桥梁啊,这里他专门说了一个有效,因为就是我们一定要保证它有效。
04:04
因为如果说没有任何的数限制,没有任何的约束的话,那肯定大量的垃圾信息,大量的无效交易,有人就会专门用通过这种方式来攻击网络的稳定性和安全性,所以在整个区区块儿链里面对交易的确认,区块的确认,这是非常重要的一点,好,那呃,当然在这里举了个例子,就是说无效的状态改变,那就是假如说给别人转账的话,一边减少了余额,我这边要给你转账,我这边减了,你那边没加上,那其实这个状态改变应该就是一个无效的,对吧,这是应该满足交易的原子性。整个是一笔交易,如果发生的话,那一边的扣款和另外一边的加上这个余额,这应该是同时发生的,不能只完成一件,所以这都是我们交易有效性的一个限制,那大家可以看到这一个状态的这个正式描述啊,这就是所谓的以太坊的状态机的范式,这是一个什么样的范式呢?它其实大家简单的看就是西格玛就表示一个状态,西格玛T加一就是下一个状态,那这边的这个西格玛T就是当前状态,对吧?那么怎么样能到西格玛T加一下一个状态呢?通过一个状态转换函数,这样一个伽马函数,这个函数里边的输入是什么呢?是当前状态和一对交易。
05:35
所以这就是以太坊构建的这个数学模型,或者说状态机的模型,它的输入怎么样得到下一个状态,就是由当前状态和交易来发生转换,构建出下一个。呃,这里边大家可以看到就是伽马,可以这里所说的伽马。就是状态转换,它是可以执行任何计算的。
06:00
所以大家能够想到我们的交易其实就是代表了合约里边的所有的执行的操作,所以它所有计算都能够做,而sIgMa表示我们的状态,它是可以存储任意的状态,就是我们数据存储也是没有限制的,接下来大家可以看到啊,这里就是啊,当然这里说的这个交易记录区块之间通过密码学哈希引用的方式连接起来,这个大家都知道了,区块互相之间要指。就是引用上一个区块负区块的哈希嘛,那这就是一个流水账,所以大家可以看到下边就把这个,当然他还说了一下挖矿啊,挖矿就是通过付出一定量的努力,工作量证明来与其他的区块竞争记账权,拿到记账权之后,然后就可以去把我们的交易写进区块,就可以发生这个状态转移了,啊这这都是大家比较熟悉的内容了,我们看一下就是下面它这个正式表示这个,其实下面的这个2343个式子,它就是把上边的这个一展开了。
07:07
什么意思呢?就是说这个伽马这不是说状态转换吗?那这个状态转换是一下子就跳变过去,变成这个状态吗?那不是他这里把这个拆开了,这个杆啊,到底是个什么东西呢?啊,他说了。SIgMa的T加一这个状态,它是由。西格玛T,原来的这个状态。跟一个区块出,就是一个矿工挖矿之后,挖出来一个区块,然后就变成了下一个状态,那大家这个就理解了,对吧?出一个块就改变一次状态,那出的这个块代表什么呢?出的这个块代表大家看到它是一系列交易的组成,一系列交易的结合,当然了就是区块里边不仅仅是一系列交易,还有一些别的就是区块相关的参数,这个我们也是知道的,所以它的表达就是其他的都是省略号,然后主要就是T0 t1T就代表交易了,Transaction首字母对吧?那B。
08:08
就是代表block了首字母,那接下来它就又定义了上面的这个根据区块的转换函数,它是什么意思呢?它就跟我们前面说的根据交易的那个转化函数又联系起来了,它代表什么?它代表说。每一个大家看这里边每一个交易根据当前的状态有一个状态转换。转换完了之后呢,再根据转换完了之后的这个新的状态,再去跟下一个交易,再发生一次状态转换。说白了就是说我们是一个区块里边的状态转换,它是通过里边包含的交易一个一个去转换的,对吧?一个交易就一次转换,一个交易就一次转换,那最终定稿的时候,大家都确认的时候,是这个外面的这个欧米伽,就是把我们的区块放在里边,整个确定所有的这些交易的状态转换成立,这就变成了一个区块的确认,所以大家可以看到就是这就是这种数学规范式的这种表达。
09:12
呃,是比较枯燥是吧,好,我们继续往后看吧,呃,这一部分就比较简单了,那这个就是说单位了,为了激励网络当中计算,所以我们要有这个大家同意的价值转移的方法,那我们定义了一个共同的货币。网络里边的基础货币叫做以太币,以太币就是ETH,呃,大家看到这里他写的这个就像D一样的这个东西,他说这是古英语里边的表达啊,呃,这可能是一个拉丁文吧,这可能是一个,呃,大家有时候看到会把那个DF大写,D会写成这个对吧,有没有见过这种写法,所以是它是相当于也是以太币的一个简写,所以有时候写这个看起来会高大上一点是吧,一般情况打不出来的一个字符。那以太币最小的单位是伪,然后还有其他几个重要单位,就是这个萨博,芬尼和以太,那大家知道就这几个都是,就是萨博和芬尼,还有戴维,这都是大牛对吧?那萨博就是就是提出了这个智能合约的那个人,芬尼是提出了就是整个那个状态转换的那个人,对吧。
10:20
好,这是呃货币的这一部分激励,那接下来他又说了一下,就是怎么样去选择历史,这其实就是说到去中心化系统里边的共识机制了,那我们这里边的共识机制是怎么样去说的呢?这里就提到了,呃,一就是系统当中可能会有多个状态共存,就是大家有可能会出现分叉的状况,那最后怎么做呢?啊,他就说我们用一个简易的ghost协议版本达成共识,那他这里说是第十章中详细说明,实际上大家如果看到后面的第十章的话,会发现他说的其实也比较简单啊,呃,就是。这个黄皮书里边并不如之前我们给大家讲的那个比较全面,因为它后边这个ghost协议的详详细的那个东西,大家还是看本身他当时提的那个提案会写的比较详细,黄皮书里面并没有涉及到太多,好,那接下来啊,这个约定的话,大家看一下就可以了,就是这个sIgMa表示世界状态。
11:19
这个MU表示机器状态,就EVM的状态,呃,那像这个什么,这这个这个啊,就是这是伽ma表示这个状态转换转换函数,然后它的很多这个黄皮书里边很多文档呢,它会拿一个大写字母来代表一个特定的量。比如说我们前面看到的这个B,它就代表block,代表区块,这个T就代表交易transaction,所以这个还是我们比较好理解的一点,另外呢,它就是有可能会在下面加一个角标。比方说他这里说这个C是代表总体费用函数cost。那下面如果加一个CS store,那就是s store,大家知道这是一个EVM的操作嘛,对吧?对,它是存储一个元素的操作了,所以CS就是执行s star操作的费用函数。
12:11
所以大家就是大概知道一下我们用到什么,再用再再说就可以了啊,当然这里他还专门说了一下,就是用kec这个CA来表示这个,呃,Check的函数就是我们的哈希函数对吧,那这个catch函数就是它其实对于我们在这个以太坊系统里面几乎所有的。哈希做哈希集团的地方都用到的是它,但是有时候大家会发现,就他可能会用煞的这种这种写法,因为它本身是哈煞三的一种一种实现,这里说是杀三竞争中获胜的一种算法啊,就是用到的其实是里边的特定的一种算法。好,那接下来呃,这里说的元组其实就是数组啊,比如说那个T表示一个以太坊的交易,那么大家可以看到,呃,元组大家可以认为是数组,也可以认为它是一个大的对象。
13:09
所以T是一个交易对象的话,那TN就可以表示交易的。啊,这个到时候我们遇到的时候再说就可以了啊,这个我们快速的过啊,啊这里大家稍微注意一下,就是它还有一些特殊的这个定义,这些定义必须得看一眼,因为要不然的话之后就不知道他说什么了。这个大N带这个带这个就是空心的这个大N,这就是正整数集合,这跟大家之前数学学的可能不太一样,对吧?然后他说这个大B这个集合,这是所有字节序列的集合,也是bad对吧?他把这个属于这样的一个bad,然后呢,B32就表示就是832的集合,大家简单的知道它这个什么意思就可以了,然后比方说这个N256,这表示什么呢?是表示比二的二百五十六次方小的正整数。
14:00
它的一些一些设定了,好,我们先不管这个了,这个太枯燥了啊,我们直接看后后边这个区块状态和交易这一部分相对来讲就比较重要了,大家可以看到我们在白皮书里边。已经讲了什么是状态,什么是区块,什么是交易,那我们再看看在黄金书里边,它试图想想要用什么样的方式来实现。好,那我们首先看一下这个世界状态,呃,他这个又说了,就是所谓的世界状态state,其实就是在地址和状态,就是账户的状态,他们之间的一个映射。也就是说所谓的世界状态它是什么呢?呃,它是一组状态的一个集合,那每一个状态是什么呢?每一个状态就是一个账户,它有一个地址,地址作为K,然后把它的所谓的状态作为value,构建一个映射。
15:04
而事实上在真正我们以太坊的数据库数据存储里边,地址存储的方式其实是用他的哈希,而这个账户它的状态大家可以看到啊,它是序列化为就是RP的数据结构,就是我们所说的这个递归前缀,递归前缀数对吧,递归前递归前缀序列这样的一个编码的方式构建出来的一个数据结构。所以大家可以理解成就是序列化嘛,那就是变成了一一串字符串,大家可以简单的认为就是把整个的账户状态。变成了字符串,当成它的value存进去。这就是这里所定义的。世界状态这个可能还是有点宽泛啊,就是等一下我们讲那个MPT的时候,就是讲这个梅克尔攀底下树的时候,我们给大家看图,呃,这里还是先把这个过一下,虽然世界状态没有直接存储在区块链上,但是它会假定在实施过程当中映射维护在一个修改过的梅克尔帕以下树上,这里就提到梅克尔派以下数了,对吧,然后这个数呢,一般。
16:17
说起来因为名字太长,有时候就简称叫MPT,就是这个梅克判断一下tree这样一个名字,所以以后我们说MPT的时候,说的就是梅克尔派的理财树。那这个呃,它有时候简写就直接写成这个tree啊,就是TE,在这个黄皮书里面,它应该就是拿这个来指代维克尔帕特一下树的以太仿里面所有的树结构都是梅克尔帕特比下树。呃,那这里他简单的这么说了一下,这个大家可能看不明白啊,等一下我们详细来讲这个维克尔派的一下说我们把这块说完之后,呃,就开始看我们的课件来讲那个MPT,可能大家那个还稍微可能不像这么枯燥吧,好,我们先把这个先说完啊,在这里边它定义了我们前面说了这个世界状态,它是地址到账,账户状态的一个key value的一个存储吧,那所谓的账户状态又包含什么内容呢?四个字段包含四部分内容,一个是not。
17:23
账户的档子,那就是一个计数器。发发一次交易加一对吧,初始的时候是零,这个大家都知道,那接下来还有一个是balance,那就是这个地址里面还有多少余额了,就是因为做单位的余额,还有一个叫做storage storage root,它的存储的根。那这个其实大家之前记得我们介绍一个账户,可以是外部账户EOA用户账户,也可以是内部账户,合约账户。那如果要是外部账户的话,它没有存储和代码,合约账户就有这两部分,对吧?存储和代码,那当时我们也给大家提了一个问题,就是大家想一下,在以太坊里边,如果让自己来设计的话,一个账户它的存储空间和代码怎么去存?
18:17
是不是给他分配地址之后啊,前面是那然后后面是balance,后面直接就把他的状态,状态变量全部跟在后面顺序存储下去。那当时大家其实已经想到了,这个肯定不可能,因为我们根本不知道要给他多大的空间,我们存着存着有可能就发现,诶不够用了,后面我们已经存上别的地址的值了,那那这个地方它的状态变量就不够了,所以大家可以想到它肯定是在这里只存一个相当于是能够找到别的东西的一个东西,对吧?就是相当于是我们能够去检查,查找我们所有状态变量的一个入口,那这个入口是什么呢?就是一个树根,这是一个maker,它底下树的树根,所以这个树根叫做storage root,呃,它的它所存储的值其实就是根节点的256位哈希,所以这是它里边存的东西是一个哈希。
19:19
那这个哈希呢?这个哈希,它所映射到的那个存储空间的位置,它所代表的存储空间的那个地址里边存着的东西就是我们真正的状态。就是我们如果要定义的状态变量,我们包括我们定义的所有的数据结构,存储在自己空间里面的东西都在它映射过去的那个位置,所以大家可以看到,那么映射过去它是一个什么东西呢?是256位整数值的这个RLP编码,就还是把它序列化之后的一个东西映射到它的存储空间里面去。
20:00
那最后还有一个就是qto,就是代帕西,那大家可以想到就是这个代码也不能直接把它就跟在后面存储,对吧,因为我们不知道它代码有多大,所以这里在本身这个账户状态这里存着的也是它的一个哈希。那他的哈希如果说当这个EVM接收到消息调用的时候,如果发现这个。地址里边有代码。Codeh有这个值,那么它的代码就会找到对应的,它存储代码跟空间去,然后执行它的代码。那这一部分就是code,它为什么要跟storage root分开呢?那就是因为storage storage这部分内容里边的状态变量可以改。但是Co code的这一部分不能改,所以它是不能更改的,跟其他的字段就是不一样,就是coto这一部分,呃,大家可以看到,就是这里边它有专门的定义啊,就是比方说NUS,它就定义成sIgMa a nu这表示什么呢?SIgMa表示一个状态,对吧?那状态里边包含了当前所有地址所有账户的状态,S格玛A就表示当前A账户的状态,那么后面再来一个N,那就表示当前状态这个地址A的no。
21:22
那当然了,他就还可以再跟个B,这就是表示余额对吧,A的余额,然后如果再跟个S,那就表示当前这个A账户对应的storage root,它后面这个再跟一个C的话,代表这个Co。好,大家看一下后面这个定义啊,这个这个定义就是,呃,这个定义可能就看起来更更费解一些,大家可以看到就是说他所说的这个做了一个更方便的定义,我们可能看起来更更复杂是吧,更更不懂这是一个大概什么,什么样的意思呢?前面的这个tree其实就是表示我们真正的贝克尔他底下树里面的存储,对吧,那么它这个东西到底存什么东西呢?
22:07
他拿这个东西里面的这个L这个函数来表示一个键值,对。什么样的剑指队呢?K的哈希。和V的rfp编码的之后序列化的这个值。所以大家可以理解成,我们如果要存一对建值对的话,真正在以太坊的底层数据结构上存的是什么?他存的所谓的键值在底层,其实存的是key的哈希。然后所谓的value,其实我们真正存的东西是他序列化之后的东西,就是做了RLP编码之后的东西啊,当然这个编码有一套很复杂的规则,这个大家想了解可以去看看后面的附录,呃,这个不了解也不影响我们的理解,所以大家可以就是看到就是状态里边,我们如果要去给一个状态变量赋值。
23:09
比方说,我们定义了一个A等于一。那么在以太坊的底层里面,它存的是什么?以太坊的底层数据结构里面存的不是?啊,一个A一个E,它存的不是这个东西,它存的是乙A的。哈希。值作为它的键对。然后存储了以。一的RLP编码做维持存储线,它是这样一种存储方式啊,所以这个可能稍微有点绕,对吧,这个就是以太坊底层的一种实现,特别是状态这一部分状态变量都是这么实现的,当然这里他他还说了啊,就是这个,呃,这里的K。就是我们的这个,这里要存储的K是属于BEST32对吧,每一个存储的这个状态变量,它的这个默认的是BEST32,呃,然后他还说了这个,如果这个code哈希是一个空字符串的哈希的话,那么这个节点就表示一个简单账户,就是我们所说的用户账户对吧?EOA没有code没有代码,这就表示一个EOA啊,所以他最后就业。
24:28
又来了一串定义,定义了一个世界状态函数,大家看一下这个世界状态函数是一个什么东西呢?L这个东西,L这个东西表示什么呢?假如在这个A账户不等于空的时候,它的状态不等于空的时候,那么就用PA来表示我们的这个世界状态函数,那PA又是什么东西呢?是下面这个东西,大家看到了。其实就是A是我们的账户地址对吧。
25:04
对,A就是我们的账户,然后以他的哈希作为一个存储。作为一个键值对吧,这是一个K对吧,然后后边是一个value,它的value是什么呢?把它的nouns状态,状态里面的non balance storage root,还有COTO4部分内容拿起拿合并在一起做一个RLP编码序列化。存在一起,所以大家这下知道了,就是所谓的世界状态是什么,它其实是存了所有账户的。它对应状态的一个键值对,所有状态,所有账户的这个键值对,那么键是什么呢?是K,所谓的K是这个账户地址做哈希之后的一个结果,作为K。那它的value是什么呢?Value是所有它存储它的状态包含的这四部分内容合在一起做序列化之后,做了RLP序列化之后,编码之后的东西确实有点绕是吧,这哪个第第八。
26:21
这个吗?需要说明的是哦,需要说明啊,对,这个不应该算作这个账户的物理成员,对吧,所以大家可以可以就是就是感受到啊,当然这里这里说了一下,就是真正实现的时候,他没有把这个story root root当成这个物理成员,但是大家在理解的时候,其实是可以可以先这么理解,因为这个其实是最初的版本里边,它就是放在里面一起算的,但是后来的版本调整了,就是把它就是这个地方直接制成零了,呃,所以这是后来的一个更改,大家理解的时候可以可以先不考虑这么细节的东西啊嗯,合约非合约账户上面这个非合约账户。
27:11
呃,非合约账户,它指的是这里这个C指的是codeto,它的代码如果是空的话。那么就认为它是一个非合约账户。所以也就是说咱们普通账户没有代码嘛,啊,这就是这个这个说法,所以他在EVM里面判断一个合一个账户,它到底是不是合约账户呢,它是去取这个codeto,这里边对应存储的那个东西,对吧,他如果看到呃,他是看他的那个键值,他的那个那个键,如果要是是这个空字符串的一个哈希的话,那就说明它是一个通胀,不是合约兆,这是EVM的一个判断,好,那呃,接下来这个还有一个。
28:01
我看看这边还说了多少东西啊哦,这里还说了这个和我们把这块说完吧,就账账户这部分都说完吧,这里还有一个什么概念呢,大家看到,呃,这个上面提到的这个状态转换函数,还有这个所谓的除以函数,它是说可以一起用来提供一个世界状态的简短标志。也就是说提供一个哈希,所以就是说大家可以看到,就上面这个状态转换和所谓的这个tree,其实就表达出了当前所有存储的东西,所以它其实是这个意思,我们当前所有账号账户存储的东西就是当前的世界状态。就是这个意思对吧?好,接下来看一下这个它又来了一串啊,就是确实大家可能会看到这个公式就头大,是不是这么一长串,然后这么一堆这个符号,呃,这个黄皮书就是这样的,所以黄皮书可能一般人真的很难能把它完整的读下来,呃,这个。
29:03
我其实到现在为止也不能说是把它就真正很细的通读下来,只是扫扫了一遍啊,就是,所以大家可以看,就是前面这部分比较重要的,我们好好去看一下,那大家看这个它代表什么意思呢?前面这个符号什么意思,数学里面符号对任意大家数学基础还是挺好的啊,任意的一个A,然后怎么样呢?呃,后边是说这个他的。状态不是空对吧,对不是空,然后。这是什么?这是一个这是病还是这是病吗?猫这这个是雨还是前面这个是雨,后面这个方面并并并和应对,并和交是相对的对吧?雨和祸是相对的,咱们可以说这是病还是或,或者说这是呃,这是病还是交啊,或者说这是与或者或啊大家说这个是病还是交吧,并集还是交集哦,这个是并集,后边这个是交集对吧?啊,大家如果习惯就是大家这个代码里边的说法的话,那就是前面这个是who,后边这个是雨,对吧。
30:17
对,并集是或的意思,所以他其实是说什么意思呢?就是你这个A要么是空集,要么A是一个B20,也就是100对160位20个字节的一个BY词,对吧,而且。还有一个V,一个C,也就是他它的状态还得经过V的这个检验,对吧?V是一个账户有效性的检验函数,大家看看这个V是怎么定义的啊,V又是一串V是个什么东西呢?啊,前面这个三个等号大家知道这是恒等,那其实就是表示定义了,对吧?那这个表示什么呢。
31:01
它的一个它里边的这个X啊,那这里X当然就是咱们这里边的这个状A的状态了,大家可以把它认为这个状态,这个状态里边的N,也就是说。要属于N256,也就是说小于二的二百五十六次方的一个整数,对吧,前面定义过的啊。然后后面又是并且。这个是与对吧,并且它的balance也是小于二的二百五十六次方的一个整数,所以大家看到这个定义了,对吧,所以有些合约里边大家就要注意,就得判断它是否会溢出,因为它的上限就是二十二百五十六次方,假如说咱们没有做校验,没有做这种安全检查的话,到这真的就溢出了,这是有上限,那接下来还接着,并且它的storage root s,对吧,是属于一个BEST32。
32:04
那最后还有一个它的Coca也是一个百三二啊,所以这就是定义了所有的数据类型,对吧?在在这个黄皮书里边,其实大家就看到这里所谓的这一串数学公式,看起来像数学公式,其实转换成我们的程序语言,语言就是一串定义,就是数据类型的定义,对吧?啊,所以他前面这个说的是什么呢?就是一个账户,任意的一个账户A。他应该满足什么条件,要不是空,要不就是满足他的这个状态,校验这一串要求的一个165位的一个字符,对吧?啊,这就是一个账户的定义。好,那么我们接下来再看一下这里啊,这里又定义了什么叫做空。空账户呢?那么它的定义是如果没有代码就是空的,而且啊,这这这不是说没有代码就是空的啊,没有代码,且non和balance都是零。
33:07
啊,这个其实很直观,大家看底下这个可能看不懂,看上面这句话还是挺明显的,对吧,就是扣的也是零,另外balance和non都是,它一共不就四部分内容了,所以这里是说他的storage root没管,但是要求三部分他的。呃,这个nu是零,Co是是是空对吧,空哈西,然后balance是零,所以表达出来之后就是empty的这个状态。等于定义成什么呢?它的cold hassh是空的一个哈希,并且它的not是零并且。这样的一个数学表达,那这里就是说所谓的预编译合约也可能处于安状态,这是因为他们的状账户状态并不总是包含可以表述他们行为的代码,就是说,呃,即使是。
34:03
准备要去编译的一个合约,那也有可能它是空的,也是我们提交这个合约的时候,并不知道它到底是什么样的状态,对吧?那接下来又定义了一个死合约。就是什么样的死账户,什么样的账户叫死死账户呢?Dead的这个定义,那就是它的状态不存在,或者是M就叫死账户,所以空账户就是一个死账户,那么除了空账户之外,或者对吧,还有一个什么情况呢?就是这个账户是空集的时候。什么都没有,不光是这三样没有,他啥都没有,那他当然就是一个死账户了啊,这里就是这个账户的所有的这些定义啊。
我来说两句