0
想要了解以太坊智能合约开发,cryptozombies(加密僵尸)是个很不错的学习网站。
即使没有编程功底的人也可以很方便的学习智能合约,因为这里的教学方法很科学很神奇。
1
这个网站的每一个知识点的教学思路都是:
1. 循序渐进地向用户讲解一个知识点。
2. 根据这个知识点设计一个题目,让用户去完成。
3. 用户提交代码,如果不成功再根据正确答案修改自己的代码,直至提交成功。
这是一种非常科学的“学习—>实践—>反馈-->改进”的刻意练习式的学习方式,你想不想试一试,那就点这个链接cryptozombies访问官网吧。
2
这个网站的主线任务就是通过智能合约设计一个加密版的“僵尸大战”的游戏:用户可以新建僵尸,和别人的僵尸PK,繁殖新的僵尸等等。
这些都是为了增加学习智能合约编程的趣味性,真正学习的时候还是需要一步一步去演练知识点的,这一点始终是无法取巧略过的。
3
很多技术类教程往往只讲技术细节,很少讲这项技术的应用场景。
学习新技术的时候技术本身自然是最重要的,但是知道这项技术能做什么,适合在什么地方用显然会让我们容易容易摸到方向。
先掌握整体的框架思路,再去撸细节问题,会得心应手很多。
4
智能合约和我们平时在电脑上运行的程序有什么区别呢?
以我们玩的游戏为例:
1. 最早的时候我们大多玩的是单机游戏,游戏的程序运行在本地电脑上,不需要网线。有些游戏被其他程序员开发出了作弊器,就可以任意修改参数——金钱无限,生命无限等等,任意改。
2. 后来有了网络游戏,数据都是存储在运营商的服务器上。这时候只有运营商可以修改数据和代码,我们想作弊就不容易了,顶多就是用了第三方作弊器,在运营商允许的范围内上传假数据。
5 程序不可更改
现在如果在以太坊上开发了游戏,这个程序一旦被部署到以太坊的网络中,就会在每一个全节点上保存这个程序,它就变得不可更改。
这种永固性意味着代码永远不能被调整或更新,它会一直的,永久的,不可更改的存在以太网上。
这也是机器信任产生的原因。
同时,以太坊开发语言solidity代码的安全性就会变得非常重要。因为如果这个智能合约有漏洞,即使后来发现了也无法补救,你只能眼睁睁、眼睁睁的看着别人利用这个漏洞做他们想做的事情。
6 参数可改
代码和数据都是在链上的,不可修改,但是参数还是可以修改的。
譬如:币乎用于给每篇文章的作者和点赞者发放KEY的智能合约,那些a、c值什么的就是可以修改的。往往为了安全起见,修改者也仅限于智能合约的创建者。
从感性角度看,如果什么都不能改,智能合约那不是太不智能了?
所以,开发者在开发智能合约的时候就需要好好考虑一下哪些参数是需要变动的,哪些参数不能变动。不然可以变动的参数太多,机器倒是可以信任了,人还是不可信的,用户还怎么放心使用你的智能合约呢?
7 Gas
在Solidity中,你的用户想要每次执行你的DApp都需要支付一定的gas,gas可以用以太币购买。
你在进行以太坊转账的时候需要花费gas进行交易打包,这动用了以太坊的节点的资源。同样,你在运行Dapp的时候也需要动用以太坊节点的资源,所以也需要花费gas。
所以以太坊上运行的智能合约往往都是比较有经济价值的合约,毕竟谁也不会花着真金白银去天天玩加密猫,僵尸大战啥的。
8 可支付
为什么区块链基本都需要发通证(token),因为可支付性是智能合约的一个重要特点。
payable是solidity中的一个修饰符,它是一种可以接收以太的特殊函数,这就让以太坊变得很酷了。
当你在调用一个普通网站服务器上的API函数的时候,你无法用你的函数传送美元,甚至你也不能传送比特币。
但是在以太坊中, 因为钱 (以太坊)、数据,以及合约代码本身都存在于以太坊。你可以在同时调用函数并付钱给另外一个合约。
至于怎么调用,嘿嘿,去cryptozombies试试看。
重要的网站推荐三遍。
9 应用前端
DApp的前端和我们平时用的手机App或者网页的使用体验差别并不大,主要的差别应该就是你用着用着就会有一个环节提示你需要付款了——gas费用,或者程序中约定需要支付的其他费用。
10 小结
智能合约的应用暂时还比较简单,使用的方法也并没有太多的神奇之处。
就像我们平时刷App一样,在DApp上进行一项操作,然后程序调用智能合约,智能合约根据代码的规则给我们反馈,如此而已。
但是,智能合约的一些特点却是极为重要和非常需要关心的地方:
1. 代码和数据部署在以太坊区块链系统中,没有人可以更改,但是开发者可以留有灵活调整的参数。
2. 智能合约之间可以方便的进行钱(以太坊)的价值传递。
了解了智能合约的关键点——道,再去学习智能合约的细节——术,顿时感觉自己是个“专家”,就没有那么困难了。