Solidityメモ
SolidityのDocsをちゃんと読む。
読んでるやつ
Solidityのデザインパターンみたいなやつ
仕様
メソッドのアクセス権
基本
private
コントラクト内のみ。継承先でも使えない。
internal
コントラクト内と継承先で使える。変数のデフォルト。
public
デフォルト。コントラクトの継承先や外部からアクセスできる。
external
外部からのみ呼び出せる。
publicとexternalの違い
publicは外部からと内部の両方から呼び出せるので引数の値をメモリに一度保存する(private method内からも呼び出せると確かに必要そう。externalはメモリに保存しない = ガス代が少し安く済む。
保存領域
storage
永続化される。gas代が高い。
memory
インスタンス生成時にクリアされて作られる。拡張していくごとにgas代が増える。
外部コントラクトの呼び出し
外部のコントラクトコードを呼び出し元のコントラクトに読み込んでこれる
テスト
requireで弾かれた時
expect()をawaitしてrevertedすれば良い
await expect(coin.mint(receiver.address, 1e60)).to.be.reverted;