什麼是智能合約(Smart Contract)?
智能合約是什麼?
在區塊鏈上運行的程式,通常稱為智能合約(Smart Contract)📒。所以通常會把"寫區塊鏈程式"改稱作"寫智能合約"。雖然比特幣(Bitcoin)上也能寫智能合約,但是比特幣所支援的語法僅與交易有關,能做的事情比較有限。因此目前提到寫智能合約,通常指的是支援執行圖靈完備程式的以太坊(Ethereum)區塊鏈⛓。
智能合約可以做什麼
目前最常見的智能合約是各種加密貨幣合約💷,開發者可以很容易地透過部署一個智能合約,來提供運行於以太坊上的新加密代幣。如果這份智能合約相容於ERC20標準1,開發者不需要重新開發從挖礦到交易的整個代幣生態系,而且你的新加密代幣也可以直接使用支援以太坊的電子錢包💰來收送,大大降低了建立新加密代幣的門檻。
智能合約也讓募資💸變得更透明。參與者投資資金或提供服務,也可獲得相應的權益。這份權益可以用代幣的形式返還給參與者。同樣地如果這代幣相容於ERC20標準2,投資者或贊助者還可以隨時交易這些代幣。讓資金的運用變得更加彈性,也降低了投資的門檻。
除此之外,智能合約也可以用來運作各式公開公正的自動服務機構(DAO,Decentralized Autonomous Organization)🏦。透過分散在全球各節點上運作的智能合約,所有運作與決策都是公開透明的,降低了交易的不確定性 (Uncertainty)。
智能合約和一般程式的差異
以太坊智能合約確實有些和一般程式不同的特性,以下整理了四個不同點。
一,整合金流容易
一般的應用程式要整合金流是件非常不容易的事情。而智能合約極容易整合金流系統 (透過使用以太幣或自行建立的新代幣合約)。
二,部署時與後續寫入時需費用
一般的應用程式需要提供網址讓使用者下載,一般的網頁應用程式也需要運行在伺服器上,開發者需要維持伺服器的運作以提供服務,這需要持續地花費(就算是免費的伺服器或網頁空間,也是廠商自行吸收了費用),程式開始運作後,除了維持費用外不需額外的花費。
智能合約在部署時需要一筆費用,這筆費用將分給參與交易驗證(挖礦)的人。而在合約部署成功後,合約會作為不可更改的區塊鏈的一部分,分散地儲存在全球各地以太坊的節點上。也因此,智能合約在部署後,並不需定期提供維持費用,同時查詢已寫入區塊鏈的靜態資料時也不需費用。只有在每次透過智能合約寫入或讀取計算結果時,需要提供一小筆交易費用。
三,儲存資料的成本更高
一般的應用程式將資料儲存在本機或伺服器上,需要資料時再從本機或伺服器上讀取,而智能合約將資料儲存在區塊鏈上,儲存資料所需的時間與成本相對昂貴。
四,部署後無法更改
一般的應用程式改版時可透過安裝新版程式,網頁應用程式也可透過部署新版程式達成,而智能合約一旦部署到區塊鏈上後,就無法更改這個智能合約。
當然聰明的開發者透過加入額外的智能合約,也已有辦法繞過智能合約部署後無法再更改的限制。
參考資料
- [1] ERC20 https://theethereum.wiki/w/index.php/ERC20_Token_Standard
- [2] Solidity http://solidity.readthedocs.io/en/latest/index.html
- [3] migration contracts http://truffleframework.com/docs/getting_started/migrations