合約
- 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 版本