《智能合约Solidity学习笔记 - 僵尸军团》Part1- 搭建僵尸工厂
pragma solidity ^0.4.19; //指定版本号/**关卡1 : 创建 根据输入的姓名 创建随机僵尸学习网址: https://cryptozombies.io/zh
**/// 创建合约
contract ZombieFactory {/**关于事件:事件 是合约和区块链通讯的一种机制。你的前端应用“监听”某些事件,并做出反应。例子:// 这里建立事件event IntegersAdded(uint x, uint y, uint result);function add(uint _x, uint _y) public {uint result = _x + _y;//触发事件,通知appIntegersAdded(_x, _y, result);return result;}你的 app 前端可以监听这个事件。JavaScript 实现如下:YourContract.IntegersAdded(function(error, result) {// 干些事})**///建立事件event NewZombie(uint zombieId, string name, uint dna);/**无符号整数: uintuint 无符号数据类型, 指其值不能是负数,对于有符号的整数存在名为 int 的数据类型。**/uint dnaDigits = 16; //设置僵尸DNA为16位 Digits n. 数字uint dnaModulus = 10 ** dnaDigits; // 10 的 16次方// 结构体允许你生成一个更复杂的数据类型,它有多个属性。struct Zombie {string name; //僵尸名字uint dna; //僵尸DNA 16位}/**如果你想建立一个集合,可以用 _数组_这样的数据类型. Solidity 支持两种数组:静态数组和动态数组:固定长度为2的静态数组:uint[2] fixedArray;固定长度为5的string类型的静态数组:string[5] stringArray;动态数组,长度不固定,可以动态添加元素:uint[] dynamicArray;公共数组你可以定义 public 数组, Solidity 会自动创建 getter 方法. 语法如下:Person[] public people;其它的合约可以从这个数组读取数据(但不能写入数据),所以这在合约中是一个有用的保存公共数据的模式。**/Zombie[] public zombies; //创建结构体/ java中叫对象 数组/**函数:1. 习惯上函数里的变量都是以(_)开头 (但不是硬性规定) 以区别全局变量2. 只有当你需要外部世界调用它时才将它设置为公共。public / private 只能内部使用 类似于java暴露或者不暴露接口3. 把函数定义为 view, 意味着它只能读取数据不能更改数据pure 函数, 表明这个函数甚至都不访问应用里的数据,例如:function _multiply(uint a, uint b) private pure returns (uint) {return a * b;}这个函数甚至都不读取应用里的状态 — 它的返回值完全取决于它的输入参数,在这种情况下我们把函数定义为 pure.4. 指定函数返回值类型 returns(数据类型)**/function _createZombie(string _name, uint _dna) private { // 创建僵尸函数
// zombies.push(Zombie(_name, _dna)); // 僵尸对象数组 放入创建的僵尸uint id = zombies.push(Zombie(_name, _dna)) - 1;NewZombie(id, _name, _dna);/**定义僵尸idarray.push() 返回数组的长度类型是uint因为数组的第一个元素的索引是 0, array.push() - 1 将是我们加入的僵尸的索引。zombies.push() - 1 就是 id, 数据类型是 uint 把它用到 NewZombie 事件中。**/}// 创建僵尸的随机DNA 返回值类型为 uint 无符号整型function _generateRandomDna(string _str) private view returns (uint) {/**Ethereum 内部有一个散列函数keccak256,它用了SHA3版本。一个散列函数基本上就是把一个字符串转换为一个256位的16进制数字。字符串的一个微小变化会引起散列数据极大变化。 这里使用它来创建一个随机数 一个伪随机十六进制数_str 参数为僵尸的名字 rand % 10^16 得到 16位长度的DNA**/uint rand = uint(keccak256(_str));return rand % dnaModulus;}//最后创建一个随机的僵尸 给定一个僵尸名字function createRandomZombie(string _name) public {uint randDna = _generateRandomDna(_name); //创建随机DNA_createZombie(_name, randDna); //创建僵尸}}
《智能合约Solidity学习笔记 - 僵尸军团》Part1- 搭建僵尸工厂相关推荐
- solidity学习笔记第1天
Solidity 学习笔记第1天 1. 什么是Solidity? 编写智能合约首选Solidity 语言,Solidity 是一门为实现智能合约而创建的高级编程语言.这门语言受到了 C++,Pytho ...
- solidity payable_以太坊区块链搭建与使用(五)-智能合约Solidity
一.智能合约Solidity开发工具 1.remix-ide http://remix.ethereum.org/ 在线版本,也可以去github下载安装到本地.开发.编译.发布.执行.测试 2.re ...
- 小觅智能 |MSCKF 学习笔记
转载自:https://mp.weixin.qq.com/s/shxmOtDOSVZn_eQKgs8LBw 小觅智能 |MSCKF 学习笔记 知乎觅 MYNTAI小觅智能 2019-10-31 VIO ...
- 多智能体系统仿真学习笔记:(一)ODE
多智能体系统仿真学习笔记:(一)ODE (一)ODE的一般形式 Ⅰ.常微分方程 (ODE) Ⅱ.ODE方程组 Ⅲ.高阶ODE Ⅳ.复数ODE (二)Matlab中的ODE Ⅰ.Matlab中可求解的O ...
- ESP8266学习笔记(1)——搭建环境、编译烧写(NONOS SDK)
RTOS SDK环境搭建参看 ESP8266学习笔记(17)--搭建环境.编译烧写(RTOS SDK) 一.搭建环境 1.1 ESP8266 SDK 入门指南 官网下载:https://www.esp ...
- ESP32学习笔记(1)——搭建环境、编译烧写(Windows+VS Code)
Espressif-IDE 环境搭建参看 ESP32学习笔记(50)--搭建环境.编译烧写(Windows+Espressif-IDE) 一.搭建环境 1.1 官方资料 ESP-IDF 编程指南 1. ...
- Ionic 学习笔记之-痛彻心扉的环境搭建
Ionic 学习笔记之-痛彻心扉的环境搭建 最近在学习Ionic 做多平台的应用.跨平台应用.就是用html写的界面.js实现逻辑. 在学ionic之前选了各种跨平台APP开发框架.最后选择了ioni ...
- OpenGL学习笔记(一):环境搭建、三维空间坐标系理解以及OpenGL的基本使用
原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7866 ...
- adg oracle,【学习笔记】Oracle ADG搭建与配置 windows平台11G ADG搭建与测试
[学习笔记]Oracle ADG搭建与配置 windows平台11G ADG搭建与测试 时间:2016-10-26 20:09 来源:Oracle研究中心 作者:HTZ 点击: 次 天萃荷 ...
最新文章
- 【android-cocos2d-X2.2 环境配置】在Mac下搭建Cocos2d-X-android开发环境!
- DOSBOX使用的一些方法和注意点(汇编实验中遇到的)
- 【知识星球】卷积核和感受野可动态分配的分组卷积
- LeetCode每日一题: 最后一个单词的长度(No.58)
- leetcode 687. Longest Univalue Path | 687. 最长同值路径(树形dp)
- php 获取季度起始日期,php获取昨天、今天、上周、本周、上月、本月、上季度、本季度、今年的起始时间...
- java putall实现,Java JsonObject.putAll方法代码示例
- 一站式VDI部署教程(4)配置SMB3.0共享
- C语言 16进制转float
- C语言程序设计知识点总结归纳(全书)
- gg修改器修改数值没有用怎么办_gg修改器修改游戏数值教程_gg修改器怎么修改数值_咖绿茵手游站...
- ubuntu安装系分区,挂载磁盘
- Android手机设备唯一标识符
- 秘宝 | 将体育赛事结合区块链 数字藏品新风向
- 大学四年,我把私藏「B站」 20 个学习 UP 主贡献出来!
- 企业拼团APP商城开发流程6步曲
- POJ1228 Grandpa's Estate
- 【python练习,6.15】(霍兰德人格分析雷达图等)
- 2019 大数据必备书籍推荐
- 2020年缓存Redis面试题与答案