在第一篇节选中,我们大致了解了以太坊的一些最基本的概念,今天我们来继续了解一下以太坊的历史。
这篇节选的内容取自原始文档中的三个章节,去掉了部分外部资源链接。有兴趣的读者可以访问我的Github项目取得完整的翻译稿源代码自行编译为html文档。Github地址: github.com/riversyang/…
开端
作为Vitalik Buterin在比特币社区中工作和研究的成果,他在2013年底首次提出了以太坊的设想。不久之后他就发表了以太坊白皮书(github.com/ethereum/wi…)。在文中他描述了以太坊协议和智能合约架构的技术设计和基本原理。 2014年1月,在美国佛罗里达州迈阿密举行的北美洲比特币会议上,Vitalik正式宣布了以太坊。
在那段时间,Vitalik也已经开始和Gavin Wood博士一起工作,共同创建以太坊。到2014年4月,Gavin发布了以太坊黄皮书(github.com/ethereum/ye…),也就是以太坊虚拟机(EVM)的技术手册。基于黄皮书的详尽说明,以太坊客户端已经有了7种编程语言的技术实现(C++, Go, Python, Java, JavaScript, Haskell, Rust),这也是使它成为了更加优秀的软件。
以太坊基金会和以太币的预售
除了为以太坊开发软件以外,发布新的加密货币和区块链的能力,需要巨大的持续工作来整合所需的资源使其启动和运转。为了启动一个由开发者、矿工、投资人和其他权益人所组成的巨大网络,以太坊宣布了对其基础货币单位-以太币的预售计划。管理预售资金所带来的法律和财务上的复杂性,也使相关法律实体的建立成为必然。2014年6月,以太坊基金会 (Stiftung Ethereum)在瑞士的Zug设立。
在2014年7月初,以太坊开始了为期42天的以太币公开预售以进行其初始分配;来自网络上的31,591比特币,当时价值18,439,086美元,被兑换为60,102,216以太币。 这笔销售资金被用来偿还合法的负债,补偿开发者为此前数月工作所进行的付出,并作为未来以太坊开发的财务支持。
ETH/DEV和以太坊的开发
伴随着以太币的成功预售,以太坊的开发也在一个非盈利组织ETH DEV的管理下正常化的开展了起来。Vitalik Buterin,Gavin Wood和Jeffrey Wilcke也作为该组织的三位总监来统一管理具体的开发工作。开发者对以太坊的兴趣在2014年间持续的增长,ETH DEV团队发布了一系列概念验证(PoC)版本供开发者社区进行评估。
这些发布由ETH DEV团队频繁的发表在以太坊博客(blog.ethereum.org)上,这也保持了以太坊前进的激情和动力。以太坊论坛和以太坊subreddit上与日俱增的回复量和用户基础也证实了这个平台对那些快速成长的专业开发者社区的吸引力。这种势头一直持续到现在。
开发者大会(DEVCON-0)
2014年11月,ETH DEV组织了开发者大会(DEVCON-0) (blog.ethereum.org/2014/12/05/…),将全世界的以太坊开发者带到了德国柏林,一起探讨了以太坊技术的各种延伸应用。DEVCON-0上的很多的演讲和话题都成为了使以太坊更加可靠、安全和可伸缩的重要启蒙。总体而言,这次大会激励了开发者们为以太坊的正式发布继续工作。
DEVgrants计划
2015年4月DEVgrants计划(blog.ethereum.org/2015/04/07/…)公布。这是一个旨在为以太坊和基于以太坊的项目提供资金的计划。成百上千的开发者,已经在以太坊项目或相关开源项目上贡献了大量的时间和创意,这项计划就是用来支持和奖励他们的贡献的。这项计划直到今天依然在持续的操作,其资金也在2016年1月进行了补充。
Olympic测试网络、问题赏金和安全审计
在2014到2015年间,以太坊开发经历了一系列概念验证发布,直到第9个被称为Olympic的PoC开放测试网络。开发者社区被邀请来测试网络的限制(blog.ethereum.org/2015/05/09/…),一个大额的奖励基金也被分配出来奖励那些成功地用某种方式在网络上得到不同的数据记录或者中断了系统运行的行为。在Olympic发布一个月之后,官方公布了这个奖励计划(blog.ethereum.org/2015/08/26/…)。
2015年初,以太坊赏金计划(bounty.ethereum.org/)启动。该计划为在以太坊软件的任意部分找到弱点的行为提供比特币的奖励。这对于以太坊的可靠性和安全性无疑是个很大的贡献,也从技术上给了以太坊社区很大的信心。这个赏金计划目前仍在执行并且没有终止计划。
以太坊安全审计,开始于2014年底并持续到了2015年上半年。以太坊邀请了多家第三方软件安全机构来对所有关键协议组件(以太坊虚拟机、网络和工作量证明)进行一个端到端的审计。这些审计发现了很多安全问题,经过反复的定位和测试解决,最终使以太坊变成了一个更为安全的平台。
以太坊Frontier发布
以太坊Frontier网络于2015年7月30日发布,自此,开发者们开始在以太坊网络上构建智能合约和去中心化应用。除此之外,矿工们也开始加入以太坊网络来支持其安全性并从挖到的区块中赚取以太币。尽管作为以太坊项目的第一个里程碑,Frontier版本仅是面向开发者的一个beta版本,但它超出所有人预期的能力和可靠性,使开发者们趋之若鹜,争相开始构建自己的解决方案和改进以太坊的生态系统。
开发者大会(DEVCON-1)
第二次开发者大会DEVCON-1(devcon.ethereum.org/)于2015年11月初在伦敦举行。这次为期5天的盛会,诞生了100多个报告、圆桌讨论和启发性的交流,吸引了包括开发者、企业家、思想家及业务经理在内的超过400位参与者。
像UBS、IBM和微软这样的大公司的出席,也表明了企业界对这些技术的兴趣。微软也宣布将在其云计算平台Azure上提供以太坊区块链服务(Blockchain as a Service,BaaS)(azure.microsoft.com/en-us/blog/…)。这也与DEVCON-1一起成为一个标志着以以太坊为中心的区块链技术变为主流的重要时刻。
Homestead版本
Homestead是以太坊平台的第二个主要版本,也是第一个产品级的发布。 它包含了很多协议和网络上的变动以支持未来的网络升级。以太坊的第一个版本,Frontier版本,本质上是一个beta版本,供开发者学习和体验并开始初步构建去中心化的应用和工具。
以太坊开发路线图中的里程碑
在以太坊上线前发表的初始的开发路线图(blog.ethereum.org/2015/03/03/…)指出了以下几个里程碑:
- 预发布 步骤 0: Olympic测试网络 - 2015年5月
- 发布 步骤 1: Frontier - 2015年7月30日
- 发布 步骤 2: Homestead - 2016年3月14日(圆周率日,Pi Day)
- 发布 步骤 3: Metropolis - 待定
- 发布 步骤 4: Serenity - 待定
尽管以上里程碑仍然有效,但它们的实质已经从某种程度上改变了。Olympic测试网络发现了很多重大改进点,于是Frontier版本在其后很快就发布了。而Homestead则是由beta产品阶段退出进入稳定版本的标志。Homestead已经被于2016年3月14日(圆周率日)左右产生的1,150,000号区块所自动引入了。
以太坊基金会(The Ethereum Foundation)
以太坊基金会是一个在瑞士注册的非盈利组织。它的目标是管理以太币销售带来的资金以更好支持以太坊和去中心化技术生态系统。
2014年7月在瑞士成立的以太坊基金会,其宗旨是促进新技术和应用形式的发展,特别是在新的开放的去中心化软件架构领域。
它的目标是使去中心化开放技术可以被开发、培养、升级和保持。一个居于首要地位,但不唯一的中心任务就是对以太坊协议及相关技术发展的推进,以及对使用以太坊技术和协议的应用的推进和支持。除此之外,以太坊基金会还以各种不同的形式支持和倡导一个去中心化的互联网。
更多关于基金会的信息请参考基金管理团队官方网站(ethereum.org/foundation)。
待续。
复制代码
结尾,加一个不太硬的广告。
「以太坊智能合约开发(进阶)课」
经过内测以及第一期公测,一块链习和杨镇老师一直在收集课程反馈建议以及调整课程内容。之所以这样费劲心思,是因为我们想要的就是必须保证精心打磨课程内容,努力做到「唯一精品」。
因此,我们在第二期,重新更新录制了8节全部的课程内容!?
并且根据内测、公测的反馈,我们在课程大纲上做了以下的调整:
开设这门课程的动因
很多人或许不知道,虽然杨镇老师很早就知道了比特币,但他个人是 2016 年底才开始学习和研究区块链技术的。经过了一个月左右的对 fabric 的从入门到放弃后,他把精力集中到了以太坊上。
从 2017 年 3 月到 10 月的大概 7 个月左右的时间里,他用业余时间翻译了以太坊官网的 Homestead 文档,没有用任何机器翻译软件,完全是自己读原文来译为中文,虽然当时已经有其他人做了中文版,但他知道做这个事的目的还是学习、是积累,这也就是他的风格。
到 2017 年底的时候,杨镇老师基本上已经知道了以太坊是什么,它能干什么以及它正在干什么。而后就发现了目前国内文章质量最高的中文以太坊社区 Ethfans,当时的想法还是去结合自己对软件技术的理解和积累去做一些高质量的翻译、提供一些高质量的内容。
在今年 3 月份的时候,杨镇老师很幸运参与了 HiBlock 社区组织的 Solidity 官方文档中译项目,后来也成为了管理员,对中译版做了很多的校订工作;
同时,他开始学习以太坊黄皮书,2017 年下半年曾经看过黄皮书,但当时看不懂,半年之后再来看,感觉就简单了很多。
同时也更深地理解了黄皮书的价值和它开创性的贡献,尤其是在借鉴了其他很多所谓“智能合约平台”的设计之后。
从今年4月下旬开始他就对黄皮书的中文版(最初由猿哥和高天露中译)的正文全文进行了独立的校订和增补更新(结合英文版拜占庭版本的更新),到 5 月初最终完成。
至此,结合 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 内联汇编,并讲解合约 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(或者添加一块链习小姐姐Jessie的微信号:yikuailianxi)
目前第二期的报名通道已经全部开启,点开链接即可前去报名。友情提示:优惠名额有限,晚了可能要涨价了,占座请快。
所有填写完报名表的同学,请记得添加微信号: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!(或者添加一块链习小姐姐Jessie的微信号:yikuailianxi)
「一块链习」技术社区链接全世界最极客的区块链开发者,共同学习区块链技术知识与开发实战,为每一位开发者提供有深度的、持续的价值与帮助。
关注「一块链习」
与全球区块链开发者一块学习