从头写一个solidity智能合约(一)介绍

最近学习一下solitity,感受到了区块链技术的神奇之处。决定从头写一个智能合约来练练手,因为才学习了俩天,尚有不足之处,请各位看客多多包涵。

首先先讲一下我对智能合约的理解,智能合约是运行在一个区块链系统上的一套代码,这套代码可以永久的存储一些变量以及函数,任何一个人成为了这个区块链系统的节点之后就可以调用公开的变量和公开的函数,当然智能合约代码也是公开的。所有的东西都是公开透明的,而且是去中心化的。

就拿一个代币合约举例,每个人的余额就是一个公开的变量,还可以写一些功能函数,比如转账功能,拉黑功能等。

而solitity就是以太坊(Ethereum)的智能合约编程语言,本文不过多介绍solitity的基础知识,直接从代码开始吧。

如果你还没有接触过solitity,介绍一个学习solitity很好的网站,https://cryptozombies.io/zh/,这个网站看起来很像一个游戏,非常的棒。

////////////////////////////////////////分割线/////////////////////////////////////

接下来是本文的重点内容了,从头实现一个智能合约,以下高能预警...

建议先从https://cryptozombies.io/zh/学习一遍再看以下内容:

需求分析:

我思考了很久要做一个什么样小案例来检验一下我的学习成果,而且这个案例最好是有价值的,最后,我决定做一个分布式虚拟宠物系统(名字要起的高大上一点),可以饲养你的数字宠物。

我将这个token命名为Pet Token,Pet Token具有不可分割(宠物不能分割只能是完整的个体)的特点。

我设想每个调用这个合约的节点都可以创建一个用户,并且可以设置他的昵称。如果是新注册的用户,他可以捕获一只宠物。

一只宠物就相当于一个token,一个宠物的属性有:宠物id,宠物昵称,宠物DNA,宠物等级和宠物创建时间。

宠物DNA是一个随机生成16位的整数,DNA可以决定生物性状,比如第一位数字代表生物类型,1就是猫,2就是狗;第二位数字代表公母,0~5是公,5~9是母;最后的九位数字可以是宠物毛色的rgb色值。这样,每个宠物都是独一无二的了,尽管可能会有长得一样的,这取决我设计多少生物性状。

宠物可以赠予,可以交换。

每个接入的区块链节点用户可以想象为一个猎人,猎人自然就可以打猎啊,但是我们得限制一下猎人不能一直打猎,可以一直打猎那就没意思了。

猎人打猎成功一次会耗费体力,大概24小时候后体力恢复才可以继续捕猎,体力恢复时间可能跟拥有的宠物数量有关,宠物越多,说明打猎能力越强,耗费的体力越小。

需求先想到这么多,后边可以再变更添加。

/////////////////////////////////////分割线/////////////////////////////////

这个系统最大的亮点是完全去中心化的,而且所有环节公开透明,不会有人作假,最重要的是不需要服务器,节省了很大成本。当然不只是一个智能合约,本文会从第一行代码开始,直到做出一个完善的区块链应用,需要有前端,前端将会是一个浏览器插件,所以说是不需要服务器的。

有必要说一下solitity代码如何编译运行。

推荐使用在线编译运行工具,https://remix.ethereum.org/,官网也提供其他的方式,太过繁琐,本文不详细赘述。

可以先熟悉一下这个工具。

下一篇具体介绍remix如何使用,敬请期待

你可能感兴趣的:(solitity,智能合约)