原创: 卖课的小姐姐程序员
各位同窗好,我是一块链习卖课的小姐姐。今天,咱们想要郑重且欣喜的为你们介绍一堂刚上线不久的重量级课程:算法
「以太坊智能合约开发(进阶)课」编程
如今这门课程已经历“内测”+“第一期”的考验,立刻就要开启第二期了,在开启以前,咱们想要为它再次发声。设计模式
由于以咱们所见,这绝对是一堂极其所值,能让你感到超预期的课程,且会源源不断地为你带来惊喜(今天就有1个惊喜,待你挖掘)。数组
第一,在第一期正式上线的当天,开放的30个名额在24小时内就所有被报满且超额!安全
这背后意味着—— 它是一块链习史上惟一一门属于高客单价(3999元)的课程,却能在如此短的时间内被报满的课程,以往只是低客单价的、入门级的系列课程才能达到这样的效果。微信
说实话,当时课程名额降低的速度,让咱们深入地记住了属于智能合约开发者人的疯狂。数据结构
第二,资深区块链游戏开发者、区块链大型沙盘类游戏evolutionland的负责人锤姐亲自参与了这门课的内测,参与事后,她留下两句评价——app
1)在过去我看过听过见过的各类智能合约课程里,我以为这门课是最好的,或者是惟一的; 2)若是你是一个已经度过了新人执行打杂期间的智能合约开发从业者,没有上过这门课,你可能会后悔。数据结构和算法
第三,最最值得一提的是结业比赛上的其中一个小组同窗们在48小时内共同协做作出了一个小项目,实现了在智能合约开发上的显著成长。
下面是他们所作的Dapp简介:
「The King of Fighters 97 Dapp」
每一轮对抗赛中,由两位玩家各自指派三位英雄出征,做为一个总体进行对抗,每位英雄的出场顺序由玩家决定,每英雄相互可出拳、腿、必杀、防护四种招数,每次出招状况均为随机,每次攻击均为会扣减英雄的生命值,防护可抵消或者保护生命值。
当一方玩家的一位英雄在对抗中生命值为零后,该玩家的第二位英雄自动跟对方玩家胜出的英雄继续战斗,直到两位玩家中有一位玩家中三位英雄的生命值所有为零时,其中一方玩家获胜,该轮对战游戏结束。
如下是合约代码结构:
@史远同窗: 一个偶然的机会看到了智能合约高级编程课的招生海报,当时我就感受到了这个课的不同凡响,第一时间报了名。填写学习目的时,我写的是“但愿可以节省自学智能合约编程的时间”,如今在课程结束时,我能够确定地说,这个目的100%达到了,并且收获多得多。
好久没有过集体学习的经历了,在此次学习的过程当中,再次体会到了集体学习的快乐,每次都期待着新课程的发布和老师对做业的批改。
老师严谨细致的课程设计和讲解,耐心负责的班长助教,以及活跃的学习群,都此次快乐而且高效的学习中不可或缺的因素。
杨老师的水平天然不用多说,教课游刃有余。并且我印象最深的就是杨老师对于学生的问题太耐心了,有几回我本身都很差意思再一直问下去了,杨老师仍是会连着发好几条六十秒的语音,把问题解释的很是清晰。很是感谢老师!
班长和助教催交做业也是课程特点之一,要是没按时写做业,天天都会有小姐姐找你聊天的。感谢班长和助教们这么负责任,让我一次都不敢晚交做业!
除了紧凑的课程外,还安排了每日打卡的活动,致使我这一个月彻底没有了娱乐时间,可是坚持每日打卡也让个人收获很是的大,为了打卡查资料、学新知识、对已有的知识进行了系统的整理,从别的同窗的打卡中也学习到了不少。再加上每周一次的专题直播活动,极大扩宽了视野,加深了对区块链各类相关知识的理解。
在课程结束的时候,不得不说,遇到这个课程真的是很幸运。
若是你还想看到更多来自第一期学员的评价和反馈,大致是这样的——
通过内测以及第一期公测,一块链习和杨镇老师一直在收集课程反馈建议以及调整课程内容。之因此这样费劲心思,是由于咱们想要的就是必须保证精心打磨课程内容,努力作到「惟一精品」。
所以,咱们在第二期,从新更新录制了8节所有的课程内容!😄
而且根据内测、公测的反馈,咱们在课程大纲上作了如下的调整:
不少人或许不知道,虽然杨镇老师很早就知道了比特币,但他我的是 2016 年末才开始学习和研究区块链技术的。通过了一个月左右的对 fabric 的从入门到放弃后,他把精力集中到了以太坊上。
从 2017 年 3 月到 10 月的大概 7 个月左右的时间里,他用业余时间翻译了以太坊官网的 Homestead 文档,没有用任何机器翻译软件,彻底是本身读原文来译为中文,虽然当时已经有其余人作了中文版,但他知道作这个事的目的仍是学习、是积累,这也就是他的风格。
到 2017 年末的时候,杨镇老师基本上已经知道了以太坊是什么,它能干什么以及它正在干什么。然后就发现了目前国内文章质量最高的中文以太坊社区 Ethfans,当时的想法仍是去结合本身对软件技术的理解和积累去作一些高质量的翻译、提供一些高质量的内容。
在今年 3 月份的时候,杨镇老师很幸运参与了 HiBlock 社区组织的 Solidity 官方文档中译项目,后来也成为了管理员,对中译版作了不少的校正工做;
同时,他开始学习以太坊黄皮书,2017 年下半年曾经看过黄皮书,但当时看不懂,半年以后再来看,感受就简单了不少。
同时也更深地理解了黄皮书的价值和它开创性的贡献,尤为是在借鉴了其余不少所谓“智能合约平台”的设计以后。
从今年4月下旬开始他就对黄皮书的中文版(最初由猿哥和高天露中译)的正文全文进行了独立的校正和增补更新(结合英文版拜占庭版本的更新),到 5 月初最终完成。
至此,结合 Solidity 文档中的相关细节,他终于以为本身真正搞懂了以太坊、搞懂了智能合约。不过,直到今年夏天依然没有看到市面上有其余人出这样一门课程,不管线上仍是线下。
他认为很是奇怪:为何智能合约开发的必修基础课没有人在讲呢?为何这么有价值的、水平这么高的技术文档没有人在讲呢?那些本身看看社区文档就能搞定的东西反而那么多人在讲呢?
因此,他以为应该作一门真正有质量的课,给那些和他同样关注细节、但愿扎扎实实打好基础、讨厌低质量的快餐式学习的同行打造一个能真正帮助他们提升对智能合约的理解、帮助他们尽快从入门到精通的智能合约开发进阶课程。
这门课程解决什么问题?
Solidity 语言基础
这门课程将首先将介绍 Solidity 语言基础(Solidity 做为智能合约开发语言的一些特殊之处) 并结合数个合约实例带你走进智能合约的世界。
Solidity 是一种结合了 C++、Python 和 Javascript 语言创造出来的为智能合约开发而定制的语言,虽然它在设计时没有考虑形式化验证(智能合约的运行结果是依赖于其自己的合约“状态”数据和区块链环境数据的,因此最初没有考虑形式化验证大概也是能够理解的),它的数据类型的表现力有限(好比不支持真正的元组类型、不支持多维动态数据的序列化等等)。
但它也确实在事实上简化了智能合约的开发,是一种上手很容易、对初学者“很友好的”开发语言,它的技术价值是不能否认的。
不过,这种看起来“很简单的”语言,其实并不简单,由于有太多不那么直观的因素会影响 Solidity 程序的运行;而大部分开发者也许并不那么理解智能合约的运行环境——以太坊虚拟机(EVM)的各类各样的技术细节,各类各样的大坑小坑。
好比 private 函数和 public 函数在调用时到底有什么不一样,仅仅是可见性么?好比数据在内存和存储(storage)中的结构有什么区别,为何我能够对存储中的动态数组使用 push 和 pop,而对内存中的就不行?
好比 fallback 函数是如何运做的,它真的不能接收参数也不能有返回值么?好比 transfer、send 和带 value 的 call 有什么区别?又好比 EVM 中复杂的费用设计(尤为是存储的使用费)和 gas 返还机制是如何影响合约的 gas 消耗(也就是运行费用)的?
Openzeppelin 源代码分析 相信已经有愈来愈多的开发者知道了 openzeppelin-solidity 这个项目,在以太坊生态中,这绝对是个伟大的项目。由于它提供了众多通过社区反复审计、优化的,可复用的基础合约模版。
这也是很是很是重要的所谓“最佳实践”,由于杨镇老师从刚刚入行时就很是重视可复用的代码和设计模式。“不要重复造轮子”!尤为是那些已经被证实很好用的、很安全的“轮子”。
在这个课程的第二部分,就将为你们逐一解释这个项目中的全部合约模版的源代码。学习这些优秀的、通过反复审计的代码,对开发者而言就是一个很大的提升,读懂这里边涉及的诸多经典的设计模式,对开发者提升编码水平、培养良好的编码习惯也大有裨益。
虽然在老师看来这个项目里的大部分合约都不须要特别解释,但仍是仔细的为你们整理了一个相对比较优化的学习顺序,帮助你们快速了解这几十个基础合约。
而其中关于权限控制、生命周期、支付、悬赏以及 ERC20、Crowdsale、ERC721 等合约模版都是很是有实用价值的可复用代码。
智能合约安全开发指南
智能合约安全的问题是智能合约开发者必须面对的问题,智能合约开发也是一个典型的上手容易、精通难的技术活儿;因此,做为进阶课程,这个话题也是必需要来谈的。
在这个课程的第三部分里,将首先为你们介绍目前全部已知的攻击(针对 Solidity 智能合约),包括重入、算术溢出、意外之财、Delegatecall、默认的可见性、随机错觉、外部合约引用、短地址/参数攻击、未检查的返回值、竞争条件/预先交易、拒绝服务、时间戳操纵、未初始化的存储指针、浮点和数据精度、tx.origin 断定;
全部这些攻击都会结合具体的代码片断来说解,以帮助你们理解其中的原理和细节。
然后,将介绍智能合约安全编码的通常原则、Solidity 智能合约开发的最佳实践、软件工程上的考量以及一些安全辅助工具。
智能合约开发进阶 课程的第四部分将继续深刻介绍智能合约开发的高级话题。在第七课里,咱们会讲解以太坊虚拟机的费用设计、指令设计,简单地介绍 Solidity 内联汇编,并讲解合约 gas 优化的基本原则。
无论用什么高级语言编写的智能合约程序,最终都是会被编译为 EVM 指令的,最终都会表示为 EVM 字节码;因此从本质上讲,理解 EVM 指令才是智能合约开发的终极目标,这也须要咱们能真正理解 EVM 的栈(stack)、内存(memory)、存储(storage)、calldata 和 returndata 的结构。
在这个课程的最后一课中,咱们将讲解三个程序实例:一个对基础排序算法的 gas 优化实例、一个针对合约存储和 gas 返还机制的代码优化实例以及一个以合约实现的简化的以太坊协议模拟器。以此来说解一些 Solidity 智能合约开发中可能会遇到的比较复杂的场景以及相应的处理实例。
课程设计和推动计划 除了以上这些基本课程内容之外,咱们还精心设计了几个须要你们真正动手的编程做业;对于初级合约开发者而言是有必定挑战的,须要花一些时间和精力才能完成,很是有益于开发经验的积累、提升对合约编程的理解,同时这些做业自己也有很高的实用价值。
更惊喜的是杨镇老师也会单独为你们批改每次的做业,给予相应的单独指导。
即便如此,考虑到内容自己的难度,这个课程对于学习者来说依然是有很是大的挑战的。
这是一个精心设计、打磨的包含了很是多技术细节的课程,须要你耐心地学习、理解和积累,是能够反复咀嚼消化的,它毫不是那种只须要看一次的实操课或者简单地对社区文档的搬运和重复。
从如今开始,报名11月25日开班的以太坊智能合约开发进阶课程第二期,不只价格更优惠,并且还有福利相送!具体以下——
1)这门课程将实行“阶梯早鸟价格制”,越早报名,优惠越多,课程原价3599元,如今报名只需2899元,优惠价格还有前10个名额,名额满后,会涨到原价=3599元。
2)这门课程中一个很是大的福利就是——按时完成全部做业,你将得到一半的学费返还!!!
3)那为了让各位同窗能对智能合约开发感觉的更深,在第二期的课程里,咱们特地为你们准备了一重福利——黑客马拉松比赛(多是线下喔!),让你能直接面对面上手实操课程里所教的所有玩法。
所以,想要报名的同窗,建议赶快扫描下方二维码前去抢座,动做请快!晚了,不只价格更高,也会面临没有名额的风险。
点击连接,填表报名👇👇👇
yikuailianxi.mikecrm.com/KxQT6AO
目前第二期的报名通道已经所有开启,点击连接便可前去填表报名。友情提示:优惠名额有限,晚了可能要涨价了,占座请快。
全部填写完报名表的同窗,请记得添加微信号:yikuailianxi,获取录取信息。
也许部分同窗还想继续了解下这门以太坊智能合约进阶开发课程,那我再简单介绍下吧——
1.课程名称:《以太坊智能合约进阶开发实战训练营》
2.课程导师: 杨镇老师,资深软件工程师、区块链技术布道者。拥有17年+的软件行业从业经验,2016年开始学习以太坊,独立中译了以太坊Homestead官方文档、对以太坊黄皮书中文版进行了独立校正和增补更新、独立中译了以太坊分片技术说明。
3.课程时间:11月25日正式开班,预计正常学时1个月,每周更新2节视频内容。
4.人数:第二期限额50人
5.课程适合对象:已经有 Solidity 初级开发经验但又作得没那么好的开发者;当前以及在从事区块链开发相关工做,但愿进一步深造和系统学习以太坊开发相关的程序员;考虑到部份内容对程序设计、数据结构和算法有必定的基础要求,建议有计算机软件或相关专业学历的开发者学习。
6.学习形式: 在线录播课程+全程强化训练+1对1导师批改做业点评辅助学习+7名助教带小组学习+微信班级群交流。
另外,为了让你们真正确认课程是否适合本身,咱们的课程支持1天无条件退款!
7.课程价格:3599元,但实行“阶梯早鸟价格制”,每一个班期都会从2899元起售,每满10人即涨300元,到原价3599元封顶。如今报名,仅需2899元,手慢无!
这里能够多说两句。
按咱们内部讨论的预估,这个课程的含金量和价值很是高,必定程度上,它可能会比市面上全部的区块链开发课程价值还高还值钱——你去看看各大招聘网站上那些动辄就30K月薪起步的区块链技术开发者职位就知道了。
并且重点是,这个课程目前业内确实是惟一的,别无他选。
因此,公平来看,咱们其实以为这个课程的价格不该该过低。但另外一方面,考虑到不少人都对这个课程翘首以盼了好久,一块链习也但愿价格能够尽量亲民一些。
因此,咱们最后的决定是——按时完成所有做业的同窗返还一半的学费!!
想要报名的同窗,建议赶快点击连接前去填表报名抢座啦👇👇👇
yikuailianxi.mikecrm.com/KxQT6AO!
「一块链习」技术社区连接全世界最极客的区块链开发者,共同窗习区块链技术知识与开发实战,为每一位开发者提供有深度的、持续的价值与帮助。
关注「一块链习」 与全球区块链开发者一块学习