29天编程挑战,收获知识和友谊
2018年1月6日,我报名参加了硅谷Live举办的《以太坊智能合约全栈开发入门》课程,通过29天紧张密集的学习和实践,2018年2月4日,我拿到了毕业证书。
一、我为什么要学习这门课程?
去年年底我就关注了老董的公众号【老董区块链干货铺】,他制作的区块链原理的系列视频给我留下了很深的印象,所以当他发布第一期的区块链学习课程的时候,我马上就缴费报名了,可惜当时只有50人名额,我未能入选。
第二期扩大到100人,我有幸入选参与了整个学习过程,而我为什么如此卖力地去学习这门课程?我主要有以下几个思考:
1)一个比较实际的问题,周围几个朋友在用imtoken钱包收币,并要给许多人发Token,人数较多时就会变成一件非常费力且容易出错的事,所以想写一个智能合约来自动完成这件事。
2)以太坊号称开创了区块链2.0时代,当前世面上出现的1478种币(来源于coinmarketcap.com),有587种都是以太坊上的代币,想评判这些币的价值,需要深入了解以太坊的背后原理。
3)智能合约在写作社群激励等很多地方有广阔的应用前景,程序员学会它肯定是站在区块链的顶端,既有趣又赚钱。用老董的话来说,学完这门课相当于超过了世界上95%的程序员。
二、苦逼的学习过程
我在报名之前看过一期学员的一篇文章,知道学习强度非常大,而我又没有写过Javascript程序,所以提前预习了一点github、Solidity和Truffle的相关内容,好让自己能够在正式学习过程中不掉队。
1月7日上午10点,学习班正式开班,而我正在杭州参加公信宝新版本发布会,会后与一帮区块链爱好者交流甚酣,一直没空看课程视频,直到第二天晚上才有空做作业。
本次课程的作业发放和批改过程全部在github上进行,而我以前没怎么用过github,第0课的视频看了好几遍才搞明白了复杂的提交过程,后来还是助教整理的一张流程图更清晰。
第一课中关于ETH地址的引号问题就挺折磨人,幸亏有助教帮忙,第一课的作业才能及时完成。现在回忆起来,当时犯错的问题确实比较初级,多些耐心和讨论,前几课的内容还是相对容易的。
第四课的开发环境用到了VirtualBox中的Ubuntu虚拟机,还好以前有Linux的命令行基础,这一课勉强通过,但各种开发工具的版本问题仍是巨大的坑。无奈,我尝试着用Windows跑通了整个Truffle环境。
真正的难点在第五、第六课,这里需要用到Javascript和React框架,再加上node.js、truffle和Testrpc(现在叫Ganache CLI)之类的环境,才能跑通整个程序。我按照视频中的说明敲入了代码,可是运行中总是出现莫名的错误,由于前端开发技能几乎为零,所以遇到错误后束手无策,不知道到哪里去找错。
在第五课的做作业过程中,曾经一度想过放弃,为了体验后面的白帽黑客大赛,借鉴了队友的代码,终于挺了过来。通过认真比对代码,发现自己当时写错了好几处代码。
三、刺激的白帽黑客大赛
第七课可以说是整个课程的点睛之作,老董在以太坊网络上发布了一份带有漏洞的智能合约,10个小组各显神通,运用平生所学去偷走合约中的ETH。这个过程中我有幸担任了B组的组长,这时候才发现队友们个个深藏不露,Python、Javascript、Solidity、Myetherwallet和Metamask全都运用娴熟,最后还完成了一个Hacking核武器,可惜时间不够用了。
非常遗憾,我们组最终并没有获得比赛冠军,但在这次比赛中,我们不仅巩固了以前学过的内容,更是收获了团队合作的经验和宝贵的友谊。这里我要感谢几位并肩作战的战友,他们是高翔、熊雄、Hong Zhong、陈浩林,有两位战友处于地球的另一端,经常熬夜破解老董的合约,一位战友为了方便队友操作,把以太坊养猫的钱包私钥都贡献了出来。
关于这次比赛的过程,我整理了10多页的详细记录,为了不影响后面学员的学习乐趣,这里就强忍住不能剧透了。如果你入选本次课程,一定要投身于这场比赛,一次比赛的收获远多于前六课的总和。
四、课程的运营
1)教师团队
老董和Frank两位老师,带着4位班长和14位助教组成了一个豪华团队,将课程办得井井有条,大家各司其职,目标只有一个:让学员们学有所成。
2)每日打卡
每天一个热点话题,大家都可以发表个人的见解,优秀的回答还被收录在github的【每日优质内容复盘】中。
3)运营班长
几个班长完成了开班、打卡、写稿、催作业、主持、排练、结业、做证书等等繁重的事务,并且每个细节都死抠不放。我在最后的结业仪式上只安排了一个充满学术气息的抽奖任务,还提前排练了1个小时。
4)精彩分享
课程中间的每个周六,几位助教给我们带来了4份知识加餐,海螺老师的《以太坊白皮书解读》、刘芳璐的《XMR白皮书》、何智华的《IOTA技术介绍》以及蔡志诚的《破解养猫合约与智能合约伪随机数》,可以说每篇都值回999元的票价。
5)催作业
几位班长、组长通过各种手段催交作业,无所不用其极,每天打开微信最怕这种信息,我离开校园已经20多年,如今还被90后班长整天催作业,还是老老实实地去看课程视频敲代码吧。
五、参加这个课程需要哪些基础?
零基础是无法完成这门课程的学习的,大概需要以下基础:
- 会使用科学上网工具,不会它,连炒币都没门;
- 至少掌握一门面向对象编程语言,比如C++、Python之类的,因为Solidity语言与它类似;
- 需要有前端开发的基础知识,有些单元测试是用Javascript写的,最后开发出来的Dapp应用的前端也有许多js代码;
- 最好了解react开发框架,虽然它不是必需的;
- 会Linux的基本命令行操作,比如md、cd、npm之类的,因为老师介绍的truffle环境是部署在Linux虚拟机上的;
- 了解区块链的基本原理,比如钱包、地址、区块、Hash、挖矿、BTC、以太坊等等,当然建议看看我写的《区块链生存训练》PDF电子书,可以快速入门;
- 上面几条对你来说都是小Case?那就点击这里报名吧。
六、几个花絮
- 小组本来10人,一周后有2人不适合学习,退出,小组只剩8人
- B组的第一任组长由于工作任务很重,难以安排足够的时间学习和参与团队活动,小组积分垫底,我出任新组长,实际上我也没做什么,只是催催作业、打打气、汇总照片、写写作战报告之类的
- 结业彩排时夏玮欹把老董的奖金说成4000美金,估计想让老董破产
- 好多学员名字全是英文字母,在抽到2名中奖学员时,编程神勇的顺达助教卡在姓名上,我用汉语拼音解围
- 陈浩林同学用40秒默认值设置,将班长的歌声传遍结业典礼
- 学习过程被代码绊住,正好行情冷淡,在场外7万、6万时分别抄底一把
写此文时BTC价格:51150元
本文由币乎(bihu.com)内容支持计划奖励
以前写过的几篇智能合约开发相关的笔记:
Leave 29天编程挑战,收获知识和友谊 to:
Read more #cn-007 posts
Best Posts From 申龙斌
We have not curated any of speeding's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.