合約
- memory,storage和calldata
- link
- uint
- unsing Integer
- msg.sender
- 合約發起人
- function function name (string private _name) private view returns (uint){}
- private 要加前置底線
- Private 就是合約內才能call 但後面加上view 就變成可以看
- Interface
- 不需要function內容
- 可以call 外部合約
- Returns 可以知道回傳的values
- 使用時init 合約
- KittyInterface(kittyAddress);
- Save Gas
- Gas很貴
- 合約內操作也都需要錢
- 引申出view function
- view 只能看資料like etherscan
- 但不能更動數據
- 所以可以撰寫出看數據的function
- 同理更動數據皆需要花錢才能改變
- 升級
- 數據變化
- 外觀變化
- 獲得裝備
- Function type
- private
- 合約內調用
- internal
- 除合約外還有被繼承的項目
- external
- 只能在合約外
- public
- 任何地方
- view
- 運行數據但就是只能看
- 通过运行函数,不会保存/改变数据
- 不花費gas
- pure
- 函数不仅不会向区块链保存任何数据
- 而且也不会从区块链中读取任何数据
- 不花費gas
- msg.sender
- 指發出合約請求的人
zombieToOwner[_tokenId] == msg.sender || zombieApprovals[_tokenId] == msg.sender
- 在這場景下
- zombieToOwner 是指 原主人
- zombieApprovals 指給予權限之人
- 之後在erc721.sol內還有驗證對於from的require
- oracle的必要性
- 合約內部無法獲取外部資訊
- 若要交易eth / usd交易對
- 那是必須要實時報價
- 而外部資訊會讓交易陷入報價錯誤的危機
- remix
- Solidity 版本