Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

CryptZombiesレッスン1(チャプター1~5)の自分なりのまとめ

More than 1 year has passed since last update.

はじめに

この記事は私がCryptZombiesを進めていく上で自分なりにまとめたものです。
書いてあることが100%あってる保証はないです。
参考にしたサイト
サイト名: イーサリアム上のDApp開発をゲームを作って学びましょう
URL:  https://cryptozombies.io/jp/ 

この記事の問題文と答えについては上の参考にしたサイトから引用しています。

チャプター1: レッスンの概要

ゾンビの外見はゾンビDNAで決まる。
ゾンビDNAは簡単なもので16桁(例: 8356281049284737)  
例えば最初の2桁が頭の種類を表している
  83 % 7 + 1 = 7と計算していて頭の種類が7種類ある

チャプター2: コントラクト

solidityのコードはcontractの中にカプセル化されている。
コントラクトはethereumアプリケーションの基本ブロックのこと。
変数やファンクションは全てコントラクトに属している。

contract contract名{

}

で定義される。

version pragrma

solidityのソースコードの最初にはversion pragrama(コードが使用するSolidityのコンパイラのバージョンを宣言するもの)を書かなければならない。
具体的には

pragma solidity ^0.4.19;  //0.4.19はsolidityのversion
contract contract名{

}

このように書く。

チャプター2 テストの実行

問題文1: solidity 0.4.19バージョンを指定して、コントラクトを使う準備をせよ
問題文2: ゾンビ軍団を生み出すための、ZombieFactoryというコントラクトを作成してみよ。
答え

pragma solidity ^0.4.19;   //0.4.19はsolidityのversion
contract ZombieFactory{ 
}

チャプター2の感想・まとめ

contractはclassの様なものな気がした。

チャプター3 状態変数と整数

用語について

状態変数
コントラクト内に永遠に保管され続けるもの。イーサリアムブロックチェーン上に記載されるらしい。データベースに書き込むようなもの。
コントラクトについてはまだ完全に理解できていないのでブロックチェーン上でどのように動いていくのか勉強する必要がある。

contract Example {
  // この部分がブロックチェーン上に記載される
  uint 変数名 = 100;
}

上のコードはuint型の変数(変数名は任意)を定義してそこに100を入れている。
uint型について
・ 符号無しの整数のデータ型。負数ではないことを表している。
・ uintは256ビットの符号無しの整数である。
・ uint8,uint16,uint32など少ないbit数で宣言することもできる。

チャプター3 テストの実行

問題文
我々ゾンビのDNAは16桁の数字で決まる。

dnaDigitsというuintを宣言し、それを16に設定せよ。
答え
uint dnaDigits = 16;

上のやつを追加する
チャプター3の感想・まとめ
変数の定義は他のプログラミング言語とだいたい同じだった

チャプター4 数式演算

演算子一覧

加算(足し算): x + y
減算(引き算): x - y
乗算(掛け算): x * y
除算(割り算): x / y
剰余(余り): x % y
他の言語と一緒
solidityは指数演算もできる。
xのy乗は x ** y と書ける

uint x = 5 ** 2; // 5^2 = 25 と同様

チャプター4 テストの実行

問題文
ゾンビのDNAが16桁の数字だと確認するために、別のuintを作成して10^16と設定せよ。後のレクチャーでは剰余演算子である %を使用して整数を16桁に縮小できる。
1. dnaModulusという名前の uintを作成し、10のdnaDigits乗に設定せよ。
答え

uint dnaModulus = 10 ** dnaDigits;

これを追加する。

チャプター4の感想・まとめ

%と10の16乗を使うと整数を16桁に縮小できる理由が分からない。
演算子はほぼ他の言語と一緒

チャプター5 構造体

用語について

構造体
元々ある型の変数を寄せ集めて新しい型を作れる物。複数のプロパティを持つ複雑なデータ型を作成することができる。

struct 任意の構造体名 {
  uint age;
  string name;
}

このように書くと構造体を定義してその中にuint型のageとstring型のnameを入れれるようになる。

String型について

Stringは任意の長さのUTF-8データに使用される。

string greeting = "Hello world!"

チャプター5 テストの実行

問題文
1. Zombieという名前のstructを作成せよ。
2. Zombie 構造体にプロパティを2種類設定せよ:name (string)、と、dna (uint)だ。
答え

    struct Zombie{
        string name;
        uint dna;
    }

これを追加する。

チャプター5の感想・まとめ

構造体いろんな型のものを入れておける物。
今回はZombieに名前の要素とDNAの要素を定義した。

次の記事

https://qiita.com/daichi77/items/3ae60fab23634f340e6e

daichi77
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away