请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册
发布
  • QQ空间
  • 回复
  • 收藏

一名合格的智能合约开发者需要具备怎样的能力?

2019-4-13 11:24

众所周知,智能合约的开发,与基于传统的中心化技术的开发有很大的不同。区块链的技术特性和智能合约平台(比如以太坊)自身的技术特点对智能合约开发者提出了更高的要求。



一名合格的智能合约开发者需要具备怎样的能力?



作为一名智能合约开发者,到了1-4岁这个阶段,需要让自己身上能够具备一些“多面手”的特质,而不能让自己的能力面变得过于狭窄。

举例来说,假如你现在一家做区块链的公司工作,你做的事特别聚焦,就是去写合约代码,你很长时间里在做、在关注的都是这一件事,也只能干好这一件事,那么假如有一天你所在的这家公司倒闭了,或者这个业务被砍掉了,现在让你再出来找工作,你觉得你能去一家什么样的公司做些什么呢?你还能找到一份“专门去写智能合约代码”的工作吗?

因此,我们认为优先要解决的问题是要让自己尽量去掌握一些通用的、无需依赖于特定环境或工具的工作方法或技能。

换句话说,在“智能合约开发”这个职业下面,其实存在着一些工作方法和能力,是你一旦掌握了之后,无论你进入到任何一家公司,服务于不同的产品形态,你一定都能用得上,一定都能让你去发光发热的。

这些工作方法和能力典型比如:重视审计、对算法精益求精、严谨的测试等等都要求开发者有一定的技术功底和积累等等。

那么在1-4岁这个阶段里,我们建议,对于一个智能合约开发者来说,最佳的选择——就是要把这些常见的通用技能至少都要修炼到60-70分,能够做到但凡有相关工作交到你手中,你基本都能完成到及格水平以上,一旦你能做到这一点,可能你对于“变化”和“不确定”的焦虑和恐慌可能会减轻很多。

而目前业内的智能合约开发课程大多侧重实操以及工具的使用,对于智能合约平台的原理和实现机制的讲解有很大程度的缺失。

所以在今天,我想为各位同学诚恳推荐一块链习即将开班的第3期《以太坊智能合约高级开发课》。

这门课程,就是希望能使学员从基础原理上对智能合约平台(以太坊)有更深入和本质的理解,并阅读、理解更多的合约实例,同时提高代码优化的意识,并学习智能合约安全开发的相关知识,最终成为合格的乃至优秀的智能合约开发者。

课程上线至今已开班2期,有100+同学参与学习。第3期即将于本周日(4月14日)开课,想让自己进阶的小伙伴可以添加一块链习Jessie 小姐姐的微信号(ID:yikuailianxi),抓紧报名学习啦~



一名合格的智能合约开发者需要具备怎样的能力?



接下来,如果你还想再深入了解下这门课程,不妨再为你介绍。

首先,这门课程是讲什么的?能解决什么问题?


我们将重点围绕着“以太坊开发+案例”帮大家解决如下问题——

1、帮你掌握 Solidity 的特殊语言特性

Solidity是一种结合了 C++、Python 和 Javascript 语言创造出来的为智能合约开发而定制的语言,它在事实上简化了智能合约的开发,是一种上手很容易、对初学者“很友好的”开发语言。

只要你稍有编程经验,就可以很快写出一些简单的智能合约。

不过,这种看起来“很简单的”语言,其实并不简单,因为有太多不那么直观的因素会影响 Solidity 程序的运行。

而大部分开发者也许并不那么理解智能合约的运行环境——以太坊虚拟机(EVM)的各种各样的技术细节,各种各样的大坑小坑。

● 比如 private 函数和 public 函数在调用时到底有什么不同,仅仅是可见性么?

● 比如数据在内存和存储(storage)中的结构有什么区别,为什么我可以对存储中的动态数组使用 push 和 pop,而对内存中的就不行?

● 比如 fallback 函数是如何运作的,它真的不能接收参数也不能有返回值么?

●比如 transfer、send 和带 value 的 call 有什么区别?

显然,这些问题并不是我们学习传统的编程语言可以了解到的,所以对于大多数初学者来讲,这些细节很可能会妨碍他们真正掌握合约开发或者影响他们处理一些相对复杂逻辑的能力。

所以让智能合约开发者都真正搞懂 Solidity 与其他开发语言的区别便是首先要进行的重要工作。

2、助你理解智能合约安全编码的原则、最佳实践和实操要点

智能合约安全吗?我想这个问题的答案已经众所周知。

自以太坊诞生以来,各种各样的合约漏洞、安全问题已经多次出现在技术社区乃至公众视野中,所以合约安全问题早已不是小众的话题。

你需要知道常见的安全漏洞类型,理解这些漏洞产生的原因以及规避的方法,这无论是对开发者本身还是实际业务安全都极其关键。在熟悉安全漏洞以及背后的原理的基础上,最佳实践可以帮助你开发出更加可靠的代码。

你需要知道智能合约安全开发的一般原则,比如牢记区块链特性、使合约尽量简单等等;

你还需要知道 Solidity 智能合约开发中的一些最佳实践,比如一定要谨慎处理外部合约调用、处理错误和意外、仔细处理 fallback 函数等等。

此外,我们还会带你一起学习一些软件工程上的经验,从工程实践上进一步保证合约的正常运转、响应意外情况,尽可能确保项目/用户的资金安全。

3、带你了解智能合约的 gas 优化技术

以太坊是一个很“昂贵”的计算平台,本质上是因为每次 transaction 带来的合约运算,都要在所有的全节点上运行。

但是昂贵并不意味着开发者无能为力。对于我们做合约开发的人来说,有很多技术方法可以减少 gas 的消耗,这对项目的成功是至关重要的,也是开发者应该做到的事情。这就是所谓的性能优化问题。

所以,作为一名合格的智能合约开发者,你需要充分掌握性能优化的方法,大概需要知道一些基础知识,包括 gas 机制和汇编等等。

4、让你清楚知道智能合约到底能做什么,不能做什么

我们在上面的性能优化里已经提到了汇编,其实汇编的作用远不止这些。

在以太坊协议中,智能合约的本质就是 EVM(以太坊虚拟机)字节码加上合约状态数据所组成的所谓“自主对象(Autonomous Object)”。

所以,内联汇编就是我们的终极武器。

了解了内联汇编,你就知道了智能合约到底都能做什么、不能做什么。因为不管我们用什么高级语言来写合约,最终都是要反映为 EVM 字节码的,也就是 EVM 汇编指令,它们就是以太坊智能合约的全部能力。同时,了解 EVM 指令也是进行终极 gas 优化的基础。

以上这四个方面相对的高级话题,是我们这门课程所涉及到的全部内容,这四个部分的教学内容有很大的相关性,将帮助我们系统性理解以太坊智能合约开发的绝大多数细节问题,课程的难度也是逐步递进的。如下附上本期课程大纲,可进一步参考。



一名合格的智能合约开发者需要具备怎样的能力?



接下来,我们再了解本期课程的实操作业设计:


除了以上这些基本课程内容以外,我们还精心设计了几个需要大家真正动手的编程作业,对于初级合约开发者而言是有一定挑战的,需要花一些时间和精力才能完成。



一名合格的智能合约开发者需要具备怎样的能力?



一名合格的智能合约开发者需要具备怎样的能力?



这些实战练习题非常有益于开发经验的积累、提高对合约编程的理解,同时这些作业本身也有很高的实用价值。

那么,这门课程适合哪些人学习呢?


1、已经有 Solidity 初级开发经验但又做得没那么好的开发者;

2、当前以及在从事区块链开发相关工作,希望进一步深造和系统学习以太坊开发相关的程序员;

3、考虑到部分内容对程序设计、数据结构和算法有一定的基础要求,建议有计算机软件或相关专业学历的开发者学习。

最后,我们给你分享部分的学员真实评价,仅供参考

这里分享给你来自往期学员的反馈:



一名合格的智能合约开发者需要具备怎样的能力?



一名合格的智能合约开发者需要具备怎样的能力?



第三期将于4月14日(本周日)开课,正常学习周期为6周左右,12个月课程有效期内课无限观看视频。并且,秉着对每一位学员的学习结果负责的态度,我们将继续采用一块链习实战训练营模式:在线录播课程+全程强化训练+1对1导师批改作业点评辅助学习+4名助教带小组学习+微信班级群交流。

课程价格3599元,本期仅限30个名额!按时完成全部作业的同学返还一半的学费!



一名合格的智能合约开发者需要具备怎样的能力?



如你所见,这一期就剩最后30个坑位了,想要深入学习以太坊智能合约的同学,建议加快手速,添加一块链习Jessie 小姐姐的微信号(ID:yikuailianxi),前去报名!



一名合格的智能合约开发者需要具备怎样的能力?


相关新闻