想学习智能合约开发一定要看这篇文章

本文由币车HIT(biche.yaofache.com)大V养成计划支持

如果说2017年对于大多数普通人来说最大的机会是区块链投资,可以用很低的价格买到很好的区块链资产,那么2018年对于广大程序员来说是一次人生不能错过的机会,随着EOS等公链的上线,将会迎来一场DAPP的开发热潮。相比个人投资来说,DAPP会是一个更大的蛋糕。

如果你之前从事过J2EE、.NET、IOS、Android任何一种语言的开发,你就会理解掌握一门新技术的重要性了。我是在VB、ASP那个年代学习的J2EE,后来J2EE火起来之后,只要给人说我会J2EE别人就刮目相看了。再后来到移动互联网时代,一个只要有2年以上Android开发经验的工程师工资就可以超过有很多年开发经验工程师的工资。

需要说明的是之前很长一段时间IT技术对商业的贡献是非常有限的,直到“互联网+”时代大家才意识到了技术的重要性,程序员才有了活着的尊严。在区块链逐渐席卷全球的时代,智能合约和DAPP开发将会让程序员在薪资和地位上得到前所未有的提升。

踏进区块链世界成为区块链世界里的弄潮儿从事DAPP开发需要具备什么样的能力?经过我最近的梳理和思考,从事DAPP开发只需要掌握以下三种能力就可以了。

第一,能够正确理解区块链。理解区块链的本质、特点和商业价值,了解分布式、共识机制、密码学、P2P网络的基本概念,对区块链的商业价值和应用场景有一定的认知。

第二,至少熟悉一种开发语言。比如Javascript、C++、Go、Python等。

第三,至少熟悉一种区块链的智能合约开发。比如以太坊、超级账本、EOS等。

嗯,好像有点多,但没关系,这些其实都没有你想象的那么难。

关于第一点正确理解区块链可能是大多人的一个坎。对于大部分人来说,最难的事情是克服自己内心的障碍去拥抱区块链这个新生事物。同时由于区块链技术比较新,中文方面的书籍、资料比较匮乏,导致大部分无法正确理解区块链。片面和断章取义的理解都会误导大家,如果能够在一段时间里系统学习区块链我认为这不是一件难事。我们前面几章做事的事情其实就是帮助大家在一段时间内跨越这个门槛。

关于第二点至少熟悉一种开发语言,我认为也不难。不管是C++还是JavaScript这方面的学习资料已经非常多,大家可以选择一种自己喜欢的开发语言进行深入全面的学习。比如目前最流行的以太坊智能合约开发用的solidity就类似于JavaScript的语法,EOS目前使用的开发语言是C++。

很多人对于编程有一种莫名其妙的畏惧,动不动就说自己不懂技术,做不了开发,在我看来这都是借口,其实编程没有大家想想的那么难,甚至我认为每个人都可以学会开发,前提是你愿意持续投入一段时间进行系统的学习。

为了让大家克服对开发的恐惧,下面我简单聊聊开发语言。任何一种开发语言都是由数据结构、数据类型、逻辑结构组成,只不过是不同的语言有不同的语法。

在计算机中,为了有效组织数据之间关系,会使用到数据结构,数组就是一种常用的数据结构。要把一个公司的所有人放在一个数据结构里,就可以使用数组的方式进行存储。

数据类型的作用是将不同数据可以有效的存储在计算机中,常见的数据类型有整型、浮点型、字符串等。比如姓名我就可以使用字符串数据类型,年龄就可以使用整型数据类型。

计算机在模拟人类思维的时候需要有相应的逻辑结构,分别是顺序结构、条件分支结构、循环结构。顺序结构是三种结构里最简单的一种编程逻辑,它如同我们写文章一样,代码的执行是按照语句的编写顺序执行的。条件分支结构是三种结构里稍微复杂的一种编程逻辑,它如同我们日常生活中这样的场景,你吃了吗?没吃,我们一起去吃饭,吃了,我找别人去。循环结构是三种结构里最复杂的一种编程逻辑。它如同毛驴拉磨,只要主人不让停,就一直转下去。不同编程语言的之间的差异就如同中文、英语之间的差别,只是语法不一样而已。

好的开发语言就简单说到这里。有了语言开发的基础之后,就可以选定一个公链进行智能合约开发的学习,不同公链使用的开发语言会有所不同,智能合约的特性会有一些差别。下面我们以以太坊的solidity智能合约开发为例。智能合约类似我们之前开发的业务逻辑代码,你也可以理解为后端代码,但智能合约开发与我们之前的程序是有很多不一样的地方。首先,由于智能合约代码是运行在区块链上的代码,一旦部署就无法修改,因此在部署之前一定要进行充分测试,防止软件出现严重漏洞。如果一旦发现软件有漏洞,只能修改后重新部署在另外一个不同的地址上,并且通知用户调用新的地址。虽然这一点与我们之前的开发习惯不一样,但这也恰恰体现了智能合约开发的代码即法律的特点。其次,由于智能合约往往会涉及到钱,因此在编程时一定要保证程序的安全性,幸运的是现在我们可以调用第三方提供的程序以保证资金的安全。最后,需要注意的是以太坊的智能合约开发部署、运行都需要耗费GAS,在智能合约开发一定要注意代码的简洁及可读性,这一点也是与之前软件开发不一样的地方。

一个完整的DAPP包含后端的智能合约和前端的展示。传统的系统开发我们的前端是通过web服务(WS)调用后端的业务代码,在DAPP开发中,前端是通过web3调用链上的智能合约。

需要注意的是,以上只是作为DAPP程序员的基本能力。在一个实际项目中往往需要程序员、架构师和运营人员共同配合来完成一个项目的落地。

最后,我在这里再次呼吁广大程序员尽快加入到这场革命中来,让我们一起成为区块链世界里的先行者,一起成为未来1%的人。

你可能感兴趣的:(想学习智能合约开发一定要看这篇文章)