剛搞懂 ERC20, ERC721又來了!
開發人員能利用以太坊上的資源自己建構一個去中心化的應用程式,以太坊提供程式語言、分散、擔保和交易任何事物。說明其設計有四大原則:簡潔、通用、標準化、 非歧視。

Token 是以太坊上智能合約的其中一種應用,創建 Token 要編寫智能合約時,為了符合普遍貨幣的定義,Token 基本要:交易處理,帳戶餘額、兌換...等,因此在編寫智能合約時你必須要非常的細心,一點漏洞失誤都會造成整個應用出現不可逆的缺陷或災難損失,這是因為區塊鏈的特性是不能再修改的。另外,在缺少一種標準的情況下,每一份 Token 的智能合約的內容會完全不一樣,使的 Token 之間的數據不能交換,形成"隔離"。
然而如果有一種規範、模板,告訴你應該要如何標準化、安全地編寫一份作為"貨幣"應有各種性質的智能合約,亦可以令各 Token 的智能合約之間可以互通,那會多方便和美好,這就 ERC 誕生的原因。
ERC20 ( Ethereum Requests for Comments )
而為了區分每一種標準化協議,最簡單的方式就是將ERC後面加上不同的數字!
ERC20是最先出現也是最廣泛使用的標準,由該標準產出的每個 TOKEN 價值都是均等的!這點務必記牢!
賦予 Token 貨幣價值,其智能合約基本要:
六個functions
1. TotalSupply() : Token 的發行總數,當到達 Token 發行數量的上限,智能合約就將會拒絕再發行新的 Token。
2. BalanceOf(address tokenOwner) : 獲取指定賬戶上 Token 的餘額。
3. Allowance(address tokenOwner, address spender) : 檢查可從 tokenOwner 錢包提取的 Token 數量
4. Transfer (address to, uint tokens) : 我的帳戶匯出特定 Token 到指定帳戶。
5. Approve(address spender, uint tokens) : 授權指定地址讓 spender可以從我的賬戶地址中提款。
6. TransferFrom(address from, address to, uint tokens) : 首先將 from 的賬戶地址中減去指定數量的Token,然後我的帳戶允許 from 的賬戶地址減去指定數量的Token,在 to 的賬戶地址中加上相應數量的Token。
兩個events
1. Transfer(我, to, tokens): transfer, transferfrom 發生後,記錄發送賬戶地址、指定賬戶地址、Token 數量。
2. Approval(我, spender, tokens) : approve後,記錄他人的賬戶地址、指定賬戶地址、Token 數量。

利用ERC20撰寫智能合約非常簡單快速,這意味一間公司要做 ICO也相當容易,警示我們需要仔仔細細地看欲投資項目的白皮書、公司背景、經歷等,大家若有興趣可以上下面的網站去看看:https://etherscan.io/tokens
ERC721
前陣子迷戀貓這款區塊鏈遊戲使ERC721變得火紅, 這款遊戲的核心也是以太坊的智能合約,同時一種新的Token協議ERC721也進入了幣圈群眾的視野。
ERC721官方解釋是Non-Fungible Tokens(NFT),不可轉換的Token,在這種標準下產出的每個 Token 都是獨一無二的,同時 ERC721 的每個 Token 都擁有獨立唯一的編號(Token ID)。
他適用於收藏品、房子 ...等不可替換資產,利用Token上的智能合約,輕而易舉追蹤這些資產的相關資訊,建立數位化資產。
(補充: 房產X區塊鏈 :https://news.cnyes.com/news/id/4185104)
迷戀貓這款遊戲建構於ERC721 標準,該標準是由 Axiom Zen 技術總監 Dieter Shirley 提出的,迷戀貓為第一個採用 ERC721 標準的去中心化遊戲應用。
迷戀貓成功地詮釋ERC721 標準的性質,遊戲中你的貓就是一個NTF,我的貓是另一個NTF,我們兩的貓不能互換,與ERC20標準寫的的Token相反!而每隻貓都具有收藏的價值。看到這大家也能有點sense了吧!ERC721根本就是拿來當作加密虛擬貨幣的收藏品。

ERC721 標準內容中,有一點與ERC20不同之處:
代幣所有權發送 ownerOf、代幣所有權提取 takeOwnership。此外,在 ERC721 規格中重寫了代幣批准授權 approve ,以及代幣轉移 transfer。
ERC721 和 ERC20 在記錄(event)方式不同,ERC20 中,只需要知道帳戶地址上有多少代幣;在 ERC721 中,需額外單獨記錄每枚代幣的 ID。