CryptoZombies,看了一段时间智能合约的官方文档,实际写起来智能合约还是磕磕绊绊,网上国内的教程大多数都是老版本的现在很多语法发生了改变。经过一番搜索发现这个互动教程。
边学边练而且还有中文版,网页右上角有语言选择支持多个语言,晚上专注做一下基本上两天就能看完,可以说是solidity最佳的学习方式了。
第一节讲的基本上就是 solidity 的基本结构,状态变量,基础类型,运算,结构体,数组,定义方法,事件,类型转换,web3js。
第一节的完整代码如下
pragma solidity ^0.4.19;
contract ZombieFactory {
event NewZombie(uint zombieId, string name, uint dna);
uint dnaDigits = 16;
uint dnaModulus = 10 ** dnaDigits;
struct Zombie {
string name;
uint dna;
}
Zombie[] public zombies;
function _createZombie(string _name, uint _dna) private {
uint id = zombies.push(Zombie(_name, _dna)) - 1;
NewZombie(id, _name, _dna);
}
function _generateRandomDna(string _str) private view returns (uint) {
uint rand = uint(keccak256(_str));
return rand % dnaModulus;
}
function createRandomZombie(string _name) public {
uint randDna = _generateRandomDna(_name);
_createZombie(_name, randDna);
}
}