所謂的智能合約即是「在區塊鏈上運行的程式」
比特幣作為第一代的區塊鏈,提供了在數位世界的持有資產的一種方式。例如我們可以在比特幣區塊鏈上轉帳。以太坊導入了智能合約的功能,允許我們寫程式,並部署到區塊鏈上。以下我們以以太坊來說明。
就如同一般的程式,智能合約包含了「狀態(State)」與「函數(Function)」,「函數」內有著各種不同的邏輯,包含讀取「狀態」與寫入「狀態」。合約被部署到以太坊上時,會以一個「地址」的形式存在。通常,我們會透過發送交易到這個地址來執行智能合約內所寫的函數。跟普通的地址一樣,我們也可以把以太幣轉到這個地址,但是這個地址本身沒有私鑰,沒辦法透過私鑰的簽章將屬於該地址的餘額轉出,若有將餘額轉出的需求,寫智能合約時就應該寫一個轉出的函數。
智能合約有個很常見的應用就是在以太坊網路上發行自己的代幣(例如:ERC-20的同質化代幣與ERC-721的非同質化代幣),以同質化代幣為例,ERC-20 是一個標準的智能合約標準,定義著「身為一個代幣,該有哪些功能」。只要我們寫的智能合約符合該標準,就能說是一個 ERC-20 的代幣。
下一篇,我們將嘗試部署一份智能合約到測試鏈上。請先安裝好 Metamask,選擇 rinkeby 測試鏈,並至 faucet 獲得一些測試鏈上的代幣。