智能合约学习 CryptoZombies 僵尸工厂 第一课基础语法

652 阅读1分钟

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);
    }

}