Solidity
https://gyazo.com/0f813826ff3eb11e6b14543774b7e169
言語特徴
注意
バージョン記述
関数
アクセス修飾詞
public extaernalは、誰が実行すべきかのか確認すること
デフォルトprivateにして、必要な時だけpublic
internal
external
publicと同じだが、コントラクトの外からだけ呼び出すことができる
privateは、原則_ (アンダーバーつける)
view関数 読み取り専用
pure関数 アプリから読み込み不可 戻り値が関数パラメーターに依存
実行
外部の呼び出し元から関数を実行しなければならないという決まり
関数修飾詞 modifire
例: owner情報で実行可能分岐(セキュリティ面で重要🤚)
_;
いろんな関数
'listening'状態 接続待ち
mapping(key => value) public ステート変数名;
例 mapping (address => uint) balances;
比較
keccak256(_name) == keccak256("Vitalik")
変数
storage
memory
型
address型
balance型
transfer型
メモリ、ストレージ、スタック
メモリ
プログラム実行用の一時的な値を保存するために使う
引数はデフォルトで保持
ストレージ
複数の関数呼び出しの間でも永続的に保持される
デメリット
スタック
ローカル変数をほぼ無料で保持可能
使用量に制限あり
struct array mapping以外のローカル変数はスタックに保存
暗号関数
詳しく
interface
別のコントラクトとやりとり
関数自体は定義しない。呼び出すだけ
interface 使用
indexed
parameterにindexedというmodifierを付与
そのparameterでもEventを絞り込む事ができる
indexedが無いものは、log.data[]の中に記述
セキュリティ
SafeMath ライブラリ
オーバーフロー
限界よりも大きい数字をいれようとして、以上が発生した状態
111 +1 = 000
アンダーフロー
計算結果が小さくなりすぎてコンピュータが表現できなくなった状態
000 - 1 = 111
デバッグ
増やす!!!!!
code:soli.sol
//関数
function eatHamburgers(string _name, uint _amount) private returns (string){
return hoge
}
困りごと
import "openzeppelin-solidity/contracts/ownership/Ownable.sol";
vscodeにsource無いと怒られる
再度vscodeに入ると無くなった。
補間機能もっと欲しい🤚
参考