到昨天我們講完了怎麼購買NFT,而今天我們終於來到旅程的最後一部分,也就是動手實作智能合約!!!今天我們會介紹智能合約的幾個特性和架構,夠夠夠!
在開始介紹智能合約之前,我們需要知道智能合約跟一般傳統合約的差別,先從傳統合約的角度來看,如下圖:
如果我們想要將傳統合約電子化
,那麼我們應該要具備以下條件
- 甲乙兩方都需要有帳號,並且要有辦法辨別是帳號否真實,以確保合約安全。
- 當合約簽訂後,沒有人可以修改內容。
- 我們也要撰寫一些程式已達成合約內容。
- 如果有些公司利用支票支付的話,我們需要有相對應的金融服務,以確保支票可以兌現。
而這些看似複雜的過程,都是多虧了有以太坊
建立了基礎,幫我們省下很多基礎建設的時間。
簡單來說就是可以在區塊鏈上進行的程式
,因此他和傳統合約不一樣,他是一段電腦程式
,被發佈到區塊鏈當中,並等待滿足的條件符合之後,就會開始執行。
建立在區塊鏈的基礎上,智能合約有以下四個特性:
當智能合約發佈到區塊鏈中,該智能合約就無法被篡改。
沒有一台電腦可以單獨掌控這個合約,區塊鏈上的所有電腦都會同步合約內容和程式碼。
雙方不需要對對方有信任才可以進行交易,因為合約內容是全部公開透明的,我們可以自己去審核。
就像電腦程式一樣,只要滿足條件,出來的結果就會是當初設定的結果。
以程式語言來說智能合約就像:
判斷式if ... else...
是否得到資料
很常是智能合約判斷是否要執行的先決條件
而智能合約的資料來源可以是第三方資料,例如是某貨幣的時價,又或者是某個項目的漲跌變化。而目前提供生活中各種資料的服務,我們稱之為Oracle Services
。
當前最大的智能合約應用平台就是以太坊
,而以太坊語言Solidity
就是用來專門撰寫智能合約的程式語言,也是我們這次撰寫智能合約主要使用的語言
假設甲乙兩方需要交易,如果沒有值得信任的第三方協調,想必不會有人想要當先付出的冤大頭,而且如果交易過程中有問題,那麼又要多花錢來進行法律調停,但如果是智能合約的話就可以解決這個問題,當雙方所繳交的錢都到達合約條件門檻,合約才會進行,如果沒有符合規定,合約就會退錢給雙方。
智能合約可以解決許多容易發生爭執的交易,如果是重籌也可以使用智能合約來執行,如果金額沒有達到標準,也會將錢退給資方。
也可以應用在任何租賃上,如果租客滿足付錢的條件,合約將會給租客電子鑰匙,反之將會把錢退給租客。
今天某個災難或者疫情發生了,我們可以透過智能合約去判斷是否滿足保險給付標準,將給付分給用戶。
曾經發生過一起DAO事件,DAO稱為
去中心化組織
,主要是讓民眾集資到這個去中心化組織,根據智能合約跟著組織一起獲益賺錢,後來因為合約內容有問題被有心人士利用,進而偷走價值6000萬美金的以太幣偷走,經過這次事件之後以太坊決定不再以程式作為法律,打算回朔交易,返還以太幣給民眾,不過也有人反對此舉動,因此原有的以太幣就被稱作為古典以太幣(Ethereum classic)。
因為Oracle Serves無法完全得知世界上發生的所有情況,因此如果今天發生一個突發狀況,雙方甚至三方對同一事件有不一樣的認知時對於賠償金也不會有共識。
Oracle Serves 也有可能會有錯誤的訊息被記錄,因此資料來源是否正確也是一個極大的考驗。