🐕

Solidity初心者のCryptoZombiesまとめ(中級編チャプター4)

2022/10/15に公開

はじめに

前回のチャプター

チャプター4で学べること

Etherの送受金について

Etherの送受金関数

payable修飾子

  • payable修飾子を付けることでetherを受け取れるようになる

withdraw修飾子

  • payable修飾子を付けることでetherを送金できるようになる
  • コントラクトに送られたEthは、コントラクトのイーサリアム・アカウントに貯められる。引き出す関数を追加しない限りそのままになってしまう。
contract ManageEther {
  address public owner;

  // コンストラクタ
  function ManageEther() public {
    owner = msg.sender;
  }

  // payable関数
  function receiveEther() external payable {
    // 送金されたetherの値はmsg.valueに入っている
  }

  // withdraw関数
  function withdraw() external onlyOwner {
    // オーナーのみ実行可能
    require(msg.sender == owner);
    
    // コントラクトのオーナーのアドレスにこのコントラクトのetherの残高を送金する
    // this.balanceでこのコントラクトに蓄積されているetherの残高を取得できる
    owner.transfer(this.balance);
  }
}

ランダム関数(keccak256ハッシュ関数)

// 1から100までの乱数を生成する
uint randNonce = 0;
uint random = uint(keccak256(now, msg.sender, randNonce)) % 100;
randNonce++;
uint random2 = uint(keccak256(now, msg.sender, randNonce)) % 100;

チャプター4のまとめ

このチャプターでは、ether送金/受金の方法を学んだ。
イーサリアム外部からデータをプルする安全な方法であるoraclesなどもこの章でまとめられていたが、こちらについてはチュートリアルを終えた後により深く調査したい。

Discussion