00:09
现在我们就准备开始了,之前我们相当于比特币的学习是第一阶段,那接下来我们就进入第二阶段,就是我们以太坊的这一部分学习,这次课主要是一个以太坊的综述。这个综述呢,大家可以理解成就是一个导论性质的东西,所以说我会把我对以太坊的理解,把以太坊里边重要的一些东西,一些概念,整个都集中在这个PPT里边,给大家讲解出来。这一部分东西呢,就是,呃,可能大家会觉得在外面如果去听一些讲座,或者说看一些视频,有可能就是这样的一个性质,呃,它可能更多的算一个科普,但是里边也会涉及到一些比较生涩的知识点。好,接下来我们就主要先从这个名字入手吧,以太坊呃,大家肯定都听过,对吧?既然我们学区块链,以太坊的英文名字叫eer。
01:08
我平常是这么叫的啊,当然大家如果看这个一些网上视频的话,可能老外的叫法一般是叫ESRI。这个这个发音这个我觉得不是很重要,但关键是我们听老外说的时候要听得懂就可以了,就是M或者是RI说的就是以太坊这个词本来是一个合成词啊,就是前面这一部分,Ether这一部分,这是一个单词。大家如果知道的话,这就是伊ER,这就是以太的意思,就是物理学史上曾经假设过的那个东西,就是不满于整个的宇宙当中的一个东西,很多物理学家曾经想就是这个东西是,呃,我们的光电磁波就是靠这个东西传播的,所以这其实是一个很很大很宽泛的一个概念,从这个命名上其实也能够看出来这个整个系统设计者对它的一个期待啊,就是一个很大的东西啊,Eer后面加了一个后缀e umerra,这个中文翻译就翻译叫做了以太坊,这就是我们接下来要学习的这个区块链系统的名字。然后首先我们先来明确一下我们为什么要学习以太坊,在这一部分的话,我首先可能想要问一问大家,就大家在之前看到我们课程安排的时候有过疑问吗?就是说。
02:29
我们已经学习了比特币,比特币不就是区块链的代表吗?不就是区块链里面最重要的一个东西,就是我们知道整个所谓的区块链技术,其实就是从比特币里边脱胎提炼出来的,对吧?那我们都已经学了比特币了,大家觉得应该对区块链是不是有很深的掌握了?那我们为什么还要学以太坊呢?呃,如果大家想过这个问题的话,我我觉得就特别好啊,就是我们对这个可能会有比较深刻的理解,我一开始接触比特币的时候,我觉得这个东西太难了,大家已经学习过,肯定知道里边各种各样的加密算法,对吧?公钥、私钥,P two p网络,还有分布式计算各各方面的各种各样的知识,甚至还有经济学、金融方面的一些知识会杂糅进来,对吧?它是一个大综合,所以本身比特币的学习,其实学习曲线是比较陡峭的,就是大家如果前一阶段觉得自己好像没学太明白,没学太懂,或者说自己觉得好像没有掌握的太深刻,我觉得是正常的。呃,我们应该给自己一段一段时间去消化,去深入理解。
03:41
而这个原因,也就是为什么我们还要学习以太坊的一个原因,就是以太坊如果跟比特币相比的话,以太坊其实它的学习曲线没有那么陡峭。以太坊从一开始的定义其实就给自己定义的是一个庞大的开发者社区,它现在应该说是最大的一个区块链开发平台,在这样一个平台上我们开始去学习,那应该就方便上手很多。另外就是相对来讲,从比特币之后新兴的这些区块链项目,其实有很多都是以区块链开发平台作为自己的一个定位的,那我们为什么选以太坊呢?
04:21
那相对来讲,以太坊其实是所有这些所谓的第二代项目里边,区块链里边最成熟的一个,它的资料是特别的多的,非常有代表性,我们现在其实到网络上去,大家能看到的资料最多的就是比特币以太坊,对吧?所以我们把这个以太坊也作为一个很重要的课程,作为我们的第二阶段来讲,还有另外两个两个点就是以太坊的学习,我们可以从应用入手,我们首先可以去自己装一个插件,去装自己的钱包,自己去在测试网络上去,呃,就是直接去转账,去转一些以太,然后之后我们就可以去用以太坊的内置编程,就是编程语言solidility去做一些合约的编写,我们可以尝试就是怎么样把这个东西玩转,怎么样把它玩起来,所以从这个角度来讲,上手确实是好很多,对吧,如果我们能从应用的角度,能从项目的角度去看这件事情的话,就会好很多。最后还有一点。
05:22
就是它和javascript和JS结合是非常紧密的,就本身solidity这个语言啊,它跟JS的语法就比较接近。而且就是说,呃,整个以太坊的官方开发团队也提供了一个完整的JS的一个接口,就是之后我们会给大家讲解,叫WEB3GS,就这样一个东西,我们去开发以太坊上的东西的话,就非常的方便了,就是本身它用的语言solidity也很熟悉,也很方便上手,然后他又有很方便的JS接口。所以对于我们开发人员而言,这简直就是必须要学的一个东西,呃,这是就是我们为什么要学啊?呃,接下来我们就先给大家大概的过一下。
06:10
我们准备要给大家讲什么内容,课程的一个简介,大家先有一个整体的概念啊,这里边可能涉及到很多很专业的概念,大家现在看看不懂,就是或者说听说过,或者说连听都听都没听过,见都没见过,大概先给大家列出来,我们的这个课程主要是分为五个部分,这里边列出来三大部分是第一部分以太坊基础。这一部分就是,呃,其实我预计只用大概两天的时间啊,就是会给大家整个的描述一下以太坊是个什么什么样的东西,然后我们怎么样用这个以太坊,怎么样去转账,然后呃,它的客户端是怎么样的,怎么样去搭建,怎么样去安装,接下来就是深入理解以太坊这一部分内容,我们可能就会理解到以太坊里边比较就是重要的一些概念了,像账户,像合约,像交易等等等等这些东西去给大家做一些深层次的分析和理解。第三部分就是编程和应用。
07:11
这一部分呢,主要是solidity,就是智能合约的语言。就是叫solidity,这个是我们的,也算是一个重点吧,我们会给大家详细的去讲解一下,然后会做一个基于solidliity去做一个很简单的一个投票的DAPPDAPP不知道大家有没有听说过啊,这是一个也算是一个新兴的概念啊,叫decentralized的application,就是去中心化应用,简称叫DAPP,呃,就是现在的区块链上,如果要是利用以太坊这样的可编程的区块链平台写出来的这个APP就叫做DAPP。啊,这是第三部分之后还有啊,整个应该说是六部分啊,不是五部分之后还有三个部分,一部分是深入理解合约工作流。
08:01
就是以太坊上面这个智能合约,它的整个的工作流程是是怎么样的,我们要更深刻的去理解,然后去做一些自动化编译啊,部署的一些脚本,这到时候我们会带着大家去做。接下来还有一部分是深入理解以太坊原理,这一部分可能会比较深色一些,就主要会去我们看以太坊的白皮书,黄皮书,还有就是做一些简单的源码分析,呃,这一部分可能到时候看大家的状况啊,如果说大家要是觉得呃,我们就做实际的,就写合约,然后做一些项目就就好,那可能我们这一部分代码就是源码分析之类的,大家就是感兴趣的同学,大家自己去看就可以了。这个预计也不会花太多时间,大家可以看到前面的这几部分其实理论性和实践是结合在一起的,理论要讲还是挺多的,但是其实前面这部分预计的课时并不占主要,可能前面所有的这几部分加起来可能占我们不到一半的课时。
09:06
那后面更多的课时在什么地方呢?更多课时就是最后一部分D项目实战,我们可能会带着大家做三个,就是相对比较完整的项目。一个是叫做基于token投票啊,Token就是以太坊上,当然就是也是新兴的一个概念了,我们可以把它理解成代币,也可以把它理解成通证或者呃,到后后面我们会给大家详细讲解啊。还有一个是基于IPFS的去中心化EBAEBA大家应该应该了解对吧,即使不了解应该也知道它是一个拍卖平台,所以这个我们其实是想做一个拍卖平台D,当然还涉及到一些我们可能没有听说过或者没有见过的东西啊,IPFS什么的,到时候我们给大家一点一点讲解。最后一个是一个ICO的。呃,大家接触区块链的话,听说过ICO是吗?对,就之前其实很火的啊,ICO现当然现在可能大多数都凉了,呃,就到时候我们会给大家讲一个ICU这个东西,是不是可以把它写到合约里边,就是所有的人都不去就是,但单说为什么ICU那么多泡沫项目都跑路了呢?因为没有别的约束嘛,对吧,自己赚把把钱直接打到他的账户里边,那他说跑路就跑路,这肯定是这样的,所以那我们是不是可以用一些东西来约束他呢?所以最后的这个项目其实还是比较有意思,它是这样一个东西。
10:31
呃,如果我们看后面写的主要内容的话,涉及的东西可能会非常非常多啊,有些东西可能这些这些东西大家可能没见过,比如说像这个自动化测试,后面写了一个gach GA纳是这是什么东西呢?呃,后面像这个基于token投票Le是什么呢?包括后面的IPFS,后面最后我们可能又要用到一些,就是跟区块链,不是区块链方面的,呃,一些框架和组件,但是也是我们前后端应用的时候要用到一些其他的工具,像react呀,NEX啊,Material UI,还有moa什么的,这些可能大家听过,也可能没听过,但我们希望在最后做项目的时候把这些都综合在一起,即使大家没听过,没关系,我相信既然我们报了区块链的学习班,大家肯定就不会对。
11:25
陌生的东西或者说新的东西报抗拒的态度,就这些东西我们没听过,但是如果我们把它们都了解他们的原理的话,工具其实很简单,用起来就可以了,对吧?好,这是我们大概的一个课程结构啊。接下来我们看一下我们的学习目标,刚才说了那么多东西,那样的一个课程设计目标是什么呢?这么几条,一个就是我们掌握以太坊的基本原理和工作原理,这门课学的就是以太坊,到最后如果别人问你说以太坊是什么呀,你不知道以太坊是怎么运作的呀,不知道你采访什么特点不知道,那一问三不知肯定是不行的,对吧?第二点是。
12:10
要理解以太坊和比特币的区别和联系,这点我专门列出来,呃,我记得应该是两周前吧,我记得有几个同学一起到那个新运链那边去,去做了一个,就是跟那边的一个技术人员也聊了一聊,对吧,感受一下,感受了一下这个我们现在区块链企业他们需要的是什么样的人,其实大家当时可能也听到了,就是。呃,那个技术负责人他的态度其实就是说,你得理解以太坊它的很多设计原理,为什么他要这么设计,他为什么跟比特币不一样。我觉得这其实确实是一个很好的点,就是我们已经有比特币了,为什么我们还要有以太坊呢?那以太坊为什么它很多东西就跟比特币不一样呢?之前大家学比特币可能也会发现,比特币设计很多理念很简单,很简洁。
13:04
但是他就是有用。比特币从08年09年开始到现在都差不多十年了,依然稳定的运行。没有人专门去管理他,他跑的特别好。所以这个项目其实是怎么说呢,就是非常完美的一个项目了,那以太坊在这个基础上还能做什么改进呢?它还能有什么变化呢?那这些东西可能是我们需要了解的,呃,在后面的话就可能是技能上的一些东西了,就是我们需要掌握以太坊客户端的使用。我们要深入的理解智能合约是什么,理财网上很重要的一个概念,从呃,我们这讲课开始到现在,可能不止一遍的听我提到这个,对吧,智能合约合约,那这个东西到底是什么,我们一定是要深入理解的,还有就是我们要掌握solidity的基本语法,要能写的出比较复杂的合约,这也是我们的一个重要的学习目标。
14:00
最后就是我们要掌握WEB3GS调用,这是前面我们说了,这是JS的一个接口,所以我们用这样的API能够调用它去实现具体的DAPP,这样我们就可以做项目了。最后就是综合运用各种工具,就前面我们可能看到的GA纳travel,包括react什么的这些前后端的工具,用这些东西去完成比较大的复杂的项目。说到这儿,大家是不是会觉得这个东西好像看起来也很难的样子,是不是?呃,大家什么感觉?东西特别多,东西特别多是吗?呃,其实确实也是挺多的,因为怎么说呢,就是这可能也就是区块链这个课程的一个门槛所在吧,如果要是那么简单的话,可能大家也就不会就是就是专门想要去学这件东西了,对吧?呃,当然这个就是涉及到东西确实很多,呃,到时候可能我们会根据大家的接受的状况和我们课程的进度,然后来及时做一些调整,就前面列出的那些东西啊,就这些课程只是一个大概的一个安排,具体我们还要就看大家如果想听什么东西,可能我们到时候再做临时的一些调整。
15:19
好,接下来我把这个主要的参考资料给大家。看一下啊呃,怎么说呢,我们学习区块链,区块链项目绝大多数都是开源项目,所以几乎所有的资料在网上都可以找到。所以呃,我希望大家也是能够把这个我们的网络资源get up上的资源就是好好的运用起来,这其实我给大家讲的这些东西绝大多数,这肯定不可能是我自己写出来的嘛,对吧,就我也是到处找资料把这些东西整理出来的,所以如果大家感兴趣的话,可以去读原始的这些资料。可能有些东西会比较难,但是呃,大家如果真正的钻进去,或许是先听我讲过一遍之后,有了一些概念之后,然后再去研读这些文件,肯定是会有特别多的收获。主要参考资料一个是第一个是一本书啊,这个叫精通以太坊mastering eri这本书,我建议大家是读一下,这本书我我个人觉得写的很好,呃,之前我听左老师说,其实讲比特币的时候,是带着大家专门读了一下那个精通比特币的是吧。
16:33
是是是这样是吧,呃,对对对对对,这个其实我觉得就是说,呃,这两本书他们是有有这个共同作者的,所以这两本书我觉得写的都非常的好,所以如果学习区块链的话,精通比特币和精通以太坊,我建议大家是都读一遍。呃,京东以太坊现在的我下面给了一个get up上的链接,这个链接上是可以看到他现在整理的一些,就是比较散的一些章节,这个书还没有正式的发售,大概它的发售可能是预计在今年的12月份,可能是,所以现在要买还买买不到,但只能在gith up上看,呃,所以是这样一个状况啊。另外就是京通以太坊这个网上也有一些中文翻译版,中文翻译我看了,就是怎么说呢,里边错误和这种不太好理解的地方还是挺多的。
17:30
如果大家就是不怕麻烦的话,读英文原版可能效率更高,是这样的。之后还有比较重要的几个参考资料,就一个是以太坊白皮书。这就跟呃,大家学比特币肯定是读过比特币白皮书的,对吧?中本聪的那篇著名的论文以太坊也一样,一开始创创立的时候是从一个白皮书出发的,这个论文就是大家也值得一读,之后就是我们有一天的时间是可能会带着大家过一下这些东西啊,但是不会详详细的去看。还有就是以太坊的黄皮书,黄皮书跟白皮书不一样,黄皮书以太坊的黄皮书是非常详细,里边有很多数学公式,数学推导,然后是有具体的这个系统怎么设计的,一整套规范的。
18:17
所以黄皮书可能会更难一点,就白皮书可能讲的大多数还是一种概念理念上的一些设计,黄皮书就是实现细实现的一些细节,呃,大家如果有经历,这些东西都可以看啊。最后就是以太坊的官方文档,还有solid利官方文档,这些文档在我们去做一些,比方说一个接口怎么用啊,Solid一些语法细节是什么样的,都值得我们去看一下。呃,然后接下来就是涉及到工具啊。前面已经给大家说了一堆东西,那这里其实就是简单的一个罗列,我们在这个课程当中可能涉及到之后,大家可能会频繁的看到这些字眼出现。
19:01
简单的说一下MAT mask,这是一个浏览器插件,钱包,呃,大家之前学比特币,自己会学钱包这部分东西吗?呃,学了是吧?大家用的是什么钱包?官方的钱包是吗?嗯,啊,就是以太坊这边的话,其实可选择的钱包会更多一些,然后我们主要用的是ma mask之后是remix remix,这是一个什么东西,它是基于浏览器的一个solid在线编辑器。所以简单说它就是拿solidity写合约的,Solidity是编程语言嘛,所以这个咱们可以认为它就是一个用来写合约的一个编辑器。呃,然后是guess guess这个是以太坊的一个客户端,是用go语言实现的一个客户端,呃,大家如果有go语言基础的话,就到时候我们可以跟大家一起看,就是做一些源码分析,然后看一看gas的一些就是里边的一些代码块,它怎么样实现一个具体的功能。
20:09
之后是WEB3JS,这是以太坊的一个JSAPI库,前面我们已经说到了啊,跟JS相关的剩下两个就是前面我们也见到一个叫GA纳,SHGA纳,这也是一个以太网客户端,但是它主要是用来干什么呢?它是用来起一个本地的私有链,一个私链主要是用作测试环境的,我们之后做项目的时候,做测试很多就是拿它来。就是作为我们的以太坊客户端的。最后就是t trouble,这是一个以太坊的开发框架,被认为这是一个就是大而全开发以太坊的一个瑞士军刀所到最后,呃,穿Le,可能我们就是GA纳,Sh trile,这些东西我们不会专门去给大家拿一节来讲,我们可能就结合到最后做项目的时候,用到什么我们就讲什么啊,这是这些东西啊,就先给大家有一个大概的了解,大家呃,我觉得不需要先被吓到啊,这些东西可能很多,但是我们一点一点用起来的时候,大家就会发现,工具嘛,工具而已,其实就是。
21:17
即使我们不会,拿来用一下就会了,所以大家不要有太多这种害怕的。情绪,接下来我们看一下这个环境的准备,我们这门课其实还是要求有一点预先准备的环境的。呃,今天上午的话,主要就是我来给大家做这个综述,这样的一个简单的一个讲解,有一个大概的概念之后,呃,今天下午也还好,今天下午我们可能就是跟大家做一个这种,呃浏览器就装一下ma mask,我们装一个钱包,然后去做这个转币啊什么的操作,这些简单的一些操作,就大家即使没有环境,我觉得也问题不大,但是从明天开始。
22:00
希望大家就能把这些环境至少都能够先装好,都能够有。呃,大家可以看一下啊,其实我觉得对于开发人员而言,特别是区块链的开发人员而言,这些基本上都是都是必备的东西啊,一个是那个Chrome Chrome浏览器后面括号里边是我这边用到的一个版本。呃,我这边的版本Chrome是就是70.353538这样的一个最新的版本,Linux系统,或者是我们基于Windows搭的一个虚拟机,这个也是肯定是必要的,我这边用的是WINDOW10自带的一个就是Linux系统,这个大家有没有也也用这样的一个环境的,如果有的话就跟我的环境是一样,但然如果没有的话,就自己装一个虚机,然后Linux系统里边我们需要预先装的,装哪几样东西呢?就是go get,还有node。呃,NPM的话是大家知道是一个包管理工具嘛,就是安装node的时候,一般情况就自己把它已经安上,安装上了,对吧,不需要专门装,但我这里都列出来了,因为涉及到一些版本的问题。
23:08
我这里面够是1.9gate12.7.4 note是9.0,呃,大家这些东西都熟悉吗?嗯,都应该至少都知道对吧?所以如果大家要是还不熟悉的话,那就先到网上去找一找,然后先把它装上,呃,我们可能不需要熟悉,但是至少要先把它装起来,到时候我们会用到。大家可以先先先大概就是啊,没关系,这个就是课件,之后我们都会给大家放到放到get up上啊。呃,然后还有就是文本编辑器了,这个我我是听左老师说大家一般用的都是video code是吧,其实我之前是是不用video的,所以我也专门装了一个,对,到时候方便我们大家用同样的环境去看代码,其实对于以太坊就是区块链开发而言,这种集成开发环境IDE其实没太没太大的用途,因为大家知道我们用集成开发环境可能更多的是要就是要去做编译啊,做调试啊,这这些东西是比较有用,那这个地方我们就把它当一个文本编译器,当然呃,Video code上我们装了一个就是solid的插件之后,它可以有solidity的语法高亮显示,这个还是比较好的,所以我们自己可以让他来做一些语法检查。
24:31
最后说一个啊,最后就是科学上网工具,这个其实大家如果经常做开发,或者说就是大家对区块链了解的话,大家可能有这个意识,对吧,我们应该是肯定是需要这个东西的,呃,包括我们上Google,包括我们去查很多资料,包括我们使用前面提到的remix那个在线编辑器。都需要科学上网。好,这是我们大概需要的这些。这些工具大家先大概的有一个了解就可以。
我来说两句