博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
十一课堂|通过小游戏学习Ethereum DApps编程(1)
阅读量:7197 次
发布时间:2019-06-29

本文共 1830 字,大约阅读时间需要 6 分钟。

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

全程在线编程,无需搭建复杂的环境,只需要有任何其他语言的编程经验,即可马上学习。

网址:

这篇文章是一篇关于制作游戏的总结。

1

在线游戏简介

支持多语言界面:

课程:

cryptozombies课程

编辑页面

在线编辑页面

学习总结

可视范围的

函数专用限制语法

整数

int是带符号整数

其他变量

2

solidity语言的知识点

modifier

modifier 和 function有些相似。

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

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

出自:

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 来实现。

比如,用户可以查询自己拥有的东东的时候,可以这样写function。

 function getZombiesByOwner(address _owner) external view returns (uint[]) { }复制代码

还记得 external 么?

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名开发者(识别下图二维码或点击“”即可了解详情并报名)

北京blockathon回顾:

成都blockathon回顾:

转载地址:http://nzakm.baihongyu.com/

你可能感兴趣的文章
模板类中的友元函数
查看>>
Eclipse设置项目默认编码和换行符类型
查看>>
【实用性程序】弧微分计算圆周长
查看>>
算法模板——平衡树Treap
查看>>
1819: [JSOI]Word Query电子字典
查看>>
10分钟学会AngularJS的数据绑定
查看>>
Flash Stage3D Molehill 学习笔记(2)
查看>>
JsDoc脚本注释文档生成
查看>>
基于人脸识别的考试系统16
查看>>
如何在eclipse模拟器上运行下载好的apk程序
查看>>
DTCMS插件的制作实例电子资源管理(一)插件目录结构
查看>>
《领域模型》——第四部分-战略设计
查看>>
微信开发之调起摄像头、本地展示图片、上传下载图片
查看>>
对于使用了SSH造成的中文乱码问题,4大解决方法
查看>>
PAT Advanced 1023 Have Fun with Numbers
查看>>
python多线程threading下载示例
查看>>
python常见问题解决方案
查看>>
【算法学习笔记】77.双线棋盘 动态规划 SJTU OJ 1263 纸来纸去
查看>>
OnSubmit中的Ajax判断
查看>>
CF1117G Recursive Queries
查看>>