十一课堂|经过小游戏学习Ethereum DApps编程(1)

image

这篇文章,是经过制做一款可爱的游戏(DAPP,也能够称作智能合约),从而学习Solidity语言。和ETH网络的一些基础知识。git

全程在线编程,无需搭建复杂的环境,只须要有任何其余语言的编程经验,便可立刻学习。github

网址:https://cryptozombies.io编程

这篇文章是一篇关于制做游戏的总结。微信

1

在线游戏简介

支持多语言界面:网络

image

https://cryptozombies.io/函数

课程:学习

image

cryptozombies课程区块链

编辑页面ui

image

在线编辑页面code

学习总结

可视范围的

image

函数专用限制语法

image

整数

image

int是带符号整数

其余变量

image

2

solidity语言的知识点

modifier

modifier 和 function有些类似。

主要用于提早检查function的参数是否符合function的要求。

这个就是经典检查调用智能合约的owner是不是此智能合约的开发者的modifier。

出自:https://github.com/OpenZeppelin/openzeppelin-solidity

OpenZeppelin is a library for writing secure Smart Contracts on Ethereum.

/**

   * @dev Throws if called by any account other than the owner.

   */

  modifier onlyOwner() {

    require(msg.sender == owner);

    _;

  }

在游戏里面,咱们增长了对于级别的判断。

modifier aboveLevel(uint _level, uint _zombieId) {
   require(zombies[_zombieId].level >= _level);
   _;
 }

用法:添加在须要检查的function定义的末尾

function changeName(uint _zombieId, string _newName) external aboveLevel(2, _zombieId) {
}

Gas

在ETH网络上,用户在经过智能合约修改区块链上的数值的时候,须要支付Gas的。Gas能够经过以太币来兑换。

简单的说,修改区块链的时候,不是免费的。难免费的理由能够参照网络。

而只是查询区块链上的信息的时候,是免费。因此为了给你的用户节约费用,开发者可用经过设置函数为 view 和 pure 来实现。

image

好比,用户能够查询本身拥有的东东的时候,能够这样写function。

 function getZombiesByOwner(address _owner) external view returns (uint[]) {
 }

还记得 external 么?

image

storage

更新区块链是须要支付Gas的,尤为是 storage 的写入操做。

开发者须要尽可能避免 storage 的写入。其余语言,循环是效率低的,但在solidity里面,比起Gas的消耗,咱们仍是倾向于用循环。

除非,让逻辑过于复杂化的处理,好比每次都须要在 memory 上从新创建序列。

或者是每次都须要调用函数来获得特定值的时候。

经过在变量定义的时候,加入 memory 能够在 memory 上新建一个仅仅存储在 memory 里面的变量

function getArray() external pure returns(uint[]) {

  // Instantiate a new array in memory with a length of 3

  uint[] memory values = new uint[](3);

  // Add some values to it

  values.push(1);

  values.push(2);

  values.push(3);

  // Return the array

  return values;

}

pure : 函数内没有使用任何外部数据

本系列文章做者:HiBlock区块链技术布道群-A****mywu

原文发布于简书

加微信baobaotalk_com,加入技术布道群

Blockathon|48小时极客竞赛,区块链马拉松等你挑战(上海)

时间:2018年10月19-21日

地点:(上海黄浦)露香园路1号(近淮海东路)P2

  • 招募50名开发者(识别下图二维码或点击“阅读原文”便可了解详情并报名)

image

北京blockathon回顾:

Blockathon(北京):48小时极客开发,区块松11个现场交付项目创意公开

成都blockathon回顾:

Blockathon2018(成都站)比赛落幕,留给咱们这些区块链应用思考

相关文章
相关标签/搜索