LoginSignup
1
1

More than 1 year has passed since last update.

solidity忘備録 crypt zombie

Last updated at Posted at 2022-06-02

lesson 1からlesson2

getterメソッドとは
ある特定のフィールドを呼び出すメソッドのこと
publicを使って誰でもPerson structとperson配列を呼び出すことができる

//pepopleという名前の配列をPerson構造体を使って作成。注意!配列を作っている。
Person[] people;

//publicで呼び出しができるようになった。
Person[] public people;

// 新しいPersonを作る:
Person satoshi = Person(172, "Satoshi");

// それを配列に格納する:データは配列に入るのである。
//people配列にsatoshiを追加。
people.push(satoshi);

//まとめて書くとすっきり。
people.push(Person(16, "Vitalik"));

パラメーターと変数の違い

パラメーターは引数を受けるために定義した変数のこと
変数は変えることができる定義された値

//_nameと_dnaがパラメーター のちほど具体的な値を当てはめるときの値のことを引数という。
function _createZombie(string _name, uint _dna) private {
        zombies.push(Zombie(_name, _dna));

フロントエンドとバックエンドの違い

フロントエンド
HTMLなどユーザーに直接触れる言語のこと
バックエンドとは
サーバーサイドの言語のこと
python,phpなど

mappingとは

構造体、配列と同じくデータを格納したもの
配列は構造体を元に作られ、mappingはバリューをキーに格納している。
1つ目ではuintがバリューでaddressがキー

// 金融系のアプリの場合、ユーザーのアカウントの残高にuintを格納する:
//accountBlanceというmappingを作っている
mapping (address => uint) public accountBalance;
// もしくは、ユーザーIdを基にユーザー名を参照・格納するために使用するぞ:
mapping (uint => string) userIdToName;

mappingの更新方法

上のmappingはデータが何も入っていないので実際にデータを格納する方法を書く
関数を作って、faboriteNumber mappingに_myNumberパラメーターを格納する。

msg.sender

グローバル変数
その関数を呼び出したユーザーのaddressを参照する

mapping (address => uint) favoriteNumber;
function setMyNumber(uint _myNumber) public {
  // ここでは`favoriteNumber` mappingを更新して、`msg.sender`下に`_myNumber`を格納するぞ。
  favoriteNumber[msg.sender] = _myNumber;
  // mappingにデータを格納するのは、こう書くのだ
}

function whatIsMyNumber() public view returns (uint) {
  // 送信者のアドレスに格納されている値を受け取る
  // もし送信者が`setMyNumber`を呼び出さなかった場合は`0`だ
  return favoriteNumber[msg.sender];
}

lesson2 チャプター3

Zombie[] public zombies;
    mapping (uint => address) public zombieToOwner;
    mapping (address => uint) ownerZombieCount;
    function _createZombie(string _name, uint _dna) private {
        uint id = zombies.push(Zombie(_name, _dna)) - 1;
        //ゾンビのオーナーidを関数の呼び出したユーザーに変更
        zombieToOwner[id] = msg.sender;
        //関数を呼び出したユーザーのゾンビ保有数が増えたので、オーナーの保有数も増やす
        ownerZombieCount[msg.sender]++;
        NewZombie(id, _name, _dna);
    }

privateとinternalの違い

privateで定義された関数は継承されたコントラクトではエラーがでる。internalで定義しておけば、継承されたコントラクトでも使用できる。

Lesson 2 チャプター10

dappとは
Decentrailized application 分散型アプリケーションの略

ineterface

外部コンストラクトのデータを読み込む方法。
新しいコントラクタを作っているのではなく、インターフェイスを定義している。
getNum関数は関数定義をしているのではなく、外部のgetNum関数を参照している。
関数定義との違いはreturnステートメント後に{}で関数定義せず、;で終わっている。

contract NumberInterface {
  function getNum(address _myAddress) public view returns (uint);
}

Lesson2 チャプター11

address ckAddress = 0x06012c8cf97BEaD5deAe237070F9587f8E7A266d;
  KittyInterface kittyContract = KittyInterface(ckAddress);
//kittyContractという名前のKittyInterfaceを作っている。インターフェイスを違う名前で作っている。
//kittyContractにラッキーナンバーで検索したアドレスを代入している。
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1