00:00
好,接下来我们继续来看以太坊这一部分,前面其实我们主要给大家介绍的是以太坊发展的一个历史和发展的一个过程,接下来我们就主要要看以太坊它到底是什么东西了。呃,首先我们看以太坊特点这一块啊,就是先理解一下大多数人对以太坊的描述是什么样的,以太坊被大家如果看文章或者看一些视频的话,可能被很多人会形容有一个比喻叫世界计算机,就这代表什么意思呢?什么叫世界计算机呢?其实就是代表它是一个开源的全球分布式的计算机基础设施。那所谓的这个世界计算机。它到底世界在什么地方,那其实就是说它是分布式,分布到全球各个地方的节点上,没有一个中心化的东西能把它全部控制,那我们在这里如果起一个以太网的节点的话,我们也可以参与到这个世界计算机的运作当中来,这其实就是区块链的特点嘛,对吧?分布式系统的一个特点在它上面,它可以执行被称为智能合约的程序,这就是我们之前反复提到这个概念,Smart contract智能合约其实就是存储在以太坊上,然后被以太坊这个世界计算机自动执行的这样的程序。
01:25
这就是智能合约的概念,然后它还有一个特点,就是会使用区块链作为它的底层数据结构来同步和存储系统状态和名为以太币的加密货币,也就是说它和比特币一样,也是有一个内置的加密货币的,也是有一套现金系统的。或者说。而这套加密货币的系统,这套加密货币叫做以太,或者叫以太币,就是我们看到的意思,所以这个就是之后我们可能还再会跟大家强调,就是大家不要把这两个概念搞混,因为有时候我们可能听人说的话就会说就是我买买一个以太坊或者怎么样,呃,其实以太坊我们是买不起,或者说是买不到的啊,就是以太坊是整个的这个系统,我们买的是以太,或者是以太币是E,不是ER。
02:17
呃,那这个以太币主要的用途是什么呢?其实跟比特币的这个用途不一样,比特币其实它本身就是要把它当现金来做流转,来做交易的。以太。网上的设计以太币本身其实不是主要当货币用的,以太币的设计主要是用来计量和约束执行资源的成本,呃,这个值大家一看这一句可能也稍微有一点宽泛,或者说不理解啊,这个到后面我们再去详细给大家说。还有一点就是以太坊本质它是一个基于交易的状态机,这个东西怎么理解,其实大家可以想象就是整个的区块链是一个什么状态,大家都知道,它是每一次就是矿工在挖矿的时候,把所有的交易打包在一起,然后出一个区块。
03:05
然后把它广播出去,让其他矿工,其他人去确认,大家如果都认同的话,我们整个的这个大家共同的这个账本就增长了,就在后面多加一个区块,所有的区块连接起来,这个就叫区块链,对不对?这个大家应该都很熟悉这样的概念,从这个意义上讲,大家其实可以看到这个区块链,这个链条其实是有状态的,这其实一个区块其实就是一个状态,我们有了一个区块,那其实就代表这个区块链里边发生了这么多交易,那大家的状态肯定就改变了,对吧?就像以前我们学比特币utxo一样,只要有一个区块进来之后,UTXO的那些状态肯定会改变。然后我们再接一个区块来了之后,那它的状态又会发生一次改变,这个过程其实就是一个状态的改变,那状态由于交易输入进来之后发生状态改变,这其实就是一个广义的状态机,所以呃,从广义上讲的话,那比特币其实也可以说是一个状态机,但是以太坊跟它不一样,比特币基于的状态,它仅仅跟踪的是货币的所有权,就我们只去跟踪UTXO嘛,对吧,但是以太坊不是以太坊不光是看以太,看以太币,而且它会跟跟踪整个存储在以太坊上,整个存储在区块区块链上的所有数据,也就是他除了前面我们不是说到吗?可它可以同步和存储系统状态,那就是不光是以太币可以存,这个是一个状态,别的所有的数据我们都可以放上去,而所有的这些都是它的状态的一部分。
04:46
最后就是以太坊平台它的应用,它可以使开发人员能够构建具有内置经济功能的强大去中心化应用程序,哎呀,这个好拗口啊,其实简单说就是它是一个开发平台,在上面大家可以随便的开发D,然后这个DAPP呢,还有一个内置的功能就是什么?它可以转利,这是所谓的内置经济功能,对吧,就是它本身里边就可以自带以太的这些属性,所以这就是以太坊的一个一个特点。
05:20
呃,接下来我们简单说一下以太坊的组成成分,其实以太坊就是说说到本质上还是区块链,所以只要是区块链有的一些基本的组件和一些基本的构成,以太坊不例外都有,所以大家可能看到这些东西,呃,其实大多数还是比较熟悉的,对吧?讲讲那个比特币,或者说讲区块链基础知识的时候,大家应该接触到,首先就是p two p网络,以太网一样的也是,它是基于一个p twop网络来做这个通讯的,它在以太坊的主网络上运行,它的网络是在TCP端口30303上选择,就所以大家如果起一个以太坊节点的话,互相彼此发现的时候,通信的接口就是30303,然后呃,另外就是说了一下他这个协议,这个协议比较看起来比较奇怪啊,这一般读就读成呃,大p top p。
06:18
就是前面那个,就把它认成是一个D一个E就好了,就像de一样,他他为什么会这么去命名呢?也是比较奇怪,也比较好玩吧,就是一个前面这个像D一样,应该是一个拉丁字母,后面那个应该是一个希腊字母吧,应该是一个,就是这两个,它其实是比较比较特别的两个字母,就前面这个,因为比较像D,经常在以太坊或者一些文章里面就会把它当成去中心化这个discentralize的一个一个标志,所以大家有时候看有人写那个DAPP的时候,它会D会用成这个,不知道大家见过没有这种写法啊,上面带一个杠,所以它相当于也是大家的一个黑化吧,就是会会这么去说,然后后面像E的那个呢,就是因为它比较像易嘛,所以说相当于是以太坊的一个一个标志,或者说就是以太币,其实有一个不常见的缩写,就是这个这个标志,它应该是希腊字母里边叫叫可还是。
07:18
这叫什么?这样一个标志啊,所以一般读就是P带带p two p的这个协议,然后就是交易,交易这个东西其实大家应该很熟悉了,这跟比特币里边的基本概念是差不多的,它的交易就是一个网络消息,里边包括几部分,主要几部分就是send发送者,然后receiver接收者,然后还有一个value,就是你从谁发发给谁,然后你要发多少钱,这不就是基本的这个东西吗?另外还有一个就是所谓的paylo,就是这个,这个翻译可能也确实有点问题啊,就是数据的有效载荷,呃,这这个你不不要管它怎么翻译了,就是大家能够理解,这就相当于是还有一段数据要发出去,它这个东西在以太坊里面叫做paylo,这是交易的组成部分,之后我们会详细再跟大家讲交易是什么东西,下面这一部分可能是大家之前学比特币没有接触。
08:19
啊,这个叫做以太坊虚拟机EVM,这就是为什么以太坊可以称作世界计算机的一个原因,因为整个这个系统上,它相当于是跑了一个虚拟机的,也就是说我们自己如果当一个以太坊节点的话,我们去启动以太坊其实是起了一个虚拟机的,就相当于或者说是启了整个以太,以太坊虚拟机的这一部分的,是这样一个状态,所以以太坊的状态转换就是由这个虚拟机来处理的。这个虚拟机是什么呢?大家如果之前是学Java的话,那大家可能会比较熟悉GVM对吧?它会把Java的code代码,然后直接编译转换成自己的码,就是供这个Java虚拟机来读取,来供它操作,而Java虚拟机本身就可以做成,就是相当于这个东西就可以跨平台了,就我们不需要关心我们的Java代码怎么样去编译成具体的机机器的执行码,所以以太坊其实我觉得是肯定是借鉴了这样一个概念的,所以它也有这样的一个虚拟机,它会把我们编写的合约,就是前面说的solidliity编写的合约编译成自解码,然后相当于他也就跨平台了,我们不管是在Linux系统上去去跑一个以太网节点,还是Windows上还是Mac上,没关系,反正我们的那个solidli合约代码最后都是编译成自。
09:53
点码的,所以这也就是一个跨平台的一个一个处理,而且它是继续对战的,这是它的一个特点啊。呃,下面是数据库,数据库其实其实就是我们所理解的block chain,这个block chain不是说整个区块链系统啊,就是对大家对block chain可能就是我们在不同的语义下面有不同的理解,一种情况就是我们理解这是一个整套系统,就我们说啊,比特币是一一个区块链系统,以太坊是一个区块链系统,这是一个整个的大的系统。还有另外一个狭义的概念,就是我们就认为block chain,它是一种数据存储的方式,数据存储的结构就是我们说的那一个一个的块连成的一条链,对吧?所以在这里的话,这个block chain其实就是说以太坊的底层就是用这样的一种方式来做数据存储的,那这个数据库,它具体最后存数据肯定是要用数据库啊,用什么呢?通常就是Google的。
10:53
DB,呃,就是这是一种KV数据库,大家应该也也知道对吧?呃,本地存储在每个节点上,然后它里边主要的内容是什么呢?就是我们每一次交易的。
11:09
结果交易的状态就是和交易发生之后系统的状态改变都会包含在这个数据库里面,所以呃,也是区块链的特点,我们一旦记录上链的话,这就是永久存储,大家每个人都有副本,这个是不能更改的。最后就是以太坊的客户端,客户端可以有各种各样的,就是不同的实现这个之后我们会专门用一就是一个大篇幅的时间,一整块时间来给大家讲客户端,这一块现在就不专门说了,呃,可以简单的先知道这两个概念,就是里边最突出的就是gori,或者我们一般简称叫它叫GA,还有另外一个客户端叫parity,就是这两个客户端比较有名。呃,然后我们再简单的说一下里边的一些重要概念,哎呀,这这部分确实可能会比较枯燥啊,就是呃,我可能尽量的能说的直白一些,然后尽量能让大家听得懂。
12:09
以太坊当中重要的概念一个是账户account这个东西在比特币里边其实是没有的一个概念,大家如果有印象的话,比特币里边有账户概念吗?其是没有对吧?对对,比特币里边我们直接其实就是就是就是有地址,有UTXO有有这些就够了,就是其实没有真正意义上我们像银行账户一样的账户概念,但是以太坊里边有,这是跟比特币里边一个显著的不同,呃,那以太坊里边的账户呢,它包含的东西主要是地址,以太余额,还有一个随机数,然后还有就是可选的存储和代码对象这东西是什么呢?就是说一个账户里边相当于我们申请一个,假如说我们有了一个以太坊的账户的话,其实在以太坊的这。
13:09
这个整个世界计算机里边就给我们分配了对应的存储空间的,当然了一般情况下我们是不能用的,就下面就分了两类,普通账户EOA,这个简称其实叫external own account,就是外部拥有账户叫,或者我们简单理解就是普通账户,这种账户它是不能用存储和代码这一部分的,那既然这就是我们申请的这种平常的这种转币的这种账户不能用的话,那肯定就有账户可以用存储和代码,对不对?那另外一类就叫合约账户,所以前面我们一直说智能合约,智能合约contract它到底是一个什么东西,其实这个东西它是一个账户,以太坊上的账户,特殊的账户,这个账户可以存储数据,也可以包含一段代码,存储一段代码,这就是以太坊上一个很特别的地方。
14:09
呃,接下来是地址,地址这个大家很熟悉了啊,就是他一般在以太坊上呢,代表的就是一个普通账户或者合约,每一个账户都有一个对应的地址,对他们就一一对应起来了,但他们是不同的概念,它可以地址这个东西可以在区块链上作为接收和发送交易的一个源头,就是我们平常说一个交易接收者是谁,发送者是谁,写什么呢?写的都是地址,更具体的是说啊,后面这个就比较专业了啊,它是ecda公钥的K散列的最右边的160元,那这里边涉及到两个,两个这个专业的算法名称啊,一个ecds sa,这个大家应该知道对吧,椭圆曲线,嗯,所以就是。
15:01
以太坊跟比特币一样,它的这个账户就公司要这个加密,加密的方式也是用的图像曲线算法,它生成的公钥,然后去做一个散列之后,取了右边的160倍就是地址,这之后可能我们还会再给大家再去重复的讲啊,呃,另外一个概念是交易,交易其实也跟比特币里边是差不多的,但是它有扩展,有不一样,比特币里边的交易其实主要就是说,呃,发送比特币嘛,对吧,就是我们指定指定输入指定输出这样的UTXO的一个状态转换,在以太坊里边它更直接一些,他就直接发以太币,没有UTXO的概念。另外它还可以发信息,这个信息就是我们理财网上不是有合约吗?他不是程序吗?我们怎么调这个程序呢?我们发信息的时候,向合约发信息的时候就可以调他代码,另外还有一个。
16:02
特殊的情况是可以向一个空用户发信息,在这种情况下可以自动生成代码块,生成的就是我们的合约账户,当然这都比较比较具体,也比较比较深啊,就是我们只是提一句,大家大概的有一个印象,有一个概念,最后以太坊里面还有一个很特殊的概念,叫做盖,这个大家听说过吗?有有听说过以太坊盖这个东西是吧?呃,对,就是这个简单的理解,就是有些人可能就是有些教程或者说文章里边会把它称作是这就是以太网上转账的手续费,有些人可能会会这么说,但是这个概念不准确,我这里可以先明确告诉大家,大家可以简单认为说它跟那个手续费是差不多的一个东西,反正就是你发交易要得得支付一些东西,然后这个东西跟guest有关。但是guest不完全是手。
17:02
续费它确切的说是以太坊要执行智能合约,它要消耗虚拟燃料,第二大家知道它是汽油的意思,对不对?所以它是一种燃料,好,我们现在先先把这个概念放到这儿,之后我们遇到的时候再去详细讲解,呃,这这其实就是这么过一遍啊,大家如果觉得这里边好像有些东西听不懂,没关系,现在就是让大家先混个脸熟,之后我们提到的时候,大家想到哦,以太坊里边是有这些东西的,特别是我提到就是它跟比特币不一样的地方,大家可能着重的去记忆一下。
我来说两句