7コロ ビヤ起き

年寄りは7回復習する

CryptoZombiesで学んだSolidityの基本

CryptoZombie

関数定義にpublicをつけるとコントラクトの外から呼べる
privateコントラクト内からしか呼べない

配列の定義は馴染みがないのでなれるまで戸惑いそう

uint[] uint;

四則演算はとくに戸惑いはない
べき乗は ^ではなく**

addressデータ型はアカウントとコントラクトのアドレスを保持できる
Eth送信の宛先などに使われる

mappingは連想配列

mapping(address => uint) public account_id;
uint id = account_id[account_address];

のようにaddressを添え字にしたuintの配列などが作れる

すべてのコントラクトで利用できるグローバル変数がある

msg.sender:トランザクションを送信したaddress
msg.value:トランザクションに載せられたEth

のようにトランザクションの値を参照できる

コントラクトは isを使って継承できる

contract sub is super {
 ...
}

関数にprivate修飾子をつけると、継承先のコントラクトからも呼べない
外からは呼べないが、継承先のコントラクトから呼べるようにするにはinternal修飾子をつける
C++protected修飾子のようなもの?
ちなみにexternal修飾子もあり、つけると外からしか呼べなくなる

関数は複数の値を返せる

Interfaceを使って誰かの作ったコントラクトを参照できるようになる
CryptoKittyをゾンビのエサにできるとかおもしろい