各位好,上次我與 @antonsteemit探討了區塊鏈應用的層次架構:
今日我們將談談另一個大家耳熟能詳,但是卻不一定清楚其內涵的一個名詞:智能合約(smart contracts)。智能合約真的多有智慧嗎?以太坊是怎麼崛起的?今天這一篇文章,都可以給你一點,基礎但紮實的訊息喔!去騙錢再也不會心虛了!^_^
此一系列以「DA-ChainTalk」的名稱開頭,您亦可從 #da-chaintalk來追蹤我們的文章。謝謝!
Image Source: pixabay
智能合約之前世今生
前言
今天我們來聊聊什麼是智能合約(Smart Contracts)。
大家在這圈內久了,沒聽說過智能合約這幾個字幾乎是不可能的。但如果你完全不懂程式,去搜尋什麼是智能合約的話,常常搞的一頭霧水:部署在區塊鏈上的程式、可以與其他的合約互動做出決策,盡是一些聽起來很厲害的敘述。也有些人聽到Smart這個字,就把整個東西跟機器學習、AI聯想在一起了。究竟智能合約是什麼,又為什麼會跟區塊鏈扯上邊,就是我們今天想要討論的主題。
如果你也是個對於智能合約概念不太了解的人,那麼希望看完這篇文章之後你會有豁然開朗的感覺。但是先警告大家,在了解智能合約之後,你應該就不會覺得他很「智能」了,沒關係,聰明的永遠是你喔!XD
Image Source: https://www.openxcell.com/smart-contracts-development
智能合約的源起
首先,非常重要的一點是,智能合約並不是一個新的想法。它是在1996年由電腦科學家Nick Szabo提出的電腦協議。當時正是一個網路蓬勃發展的年代,而Nick Szabo第一次關於智能合約的發表,就是想要將它用在電子商務上。他心目中的「智能合約」就像是網路上電子合約的進化版,除了像傳統合約兩人簽名後使其有效之外,它也能確保某些合約內容被實踐。
Why "Smart"?
I call these new contracts "smart", because they are far more functional than their inanimate paper-based ancestors. No use of artificial intelligence is implied.
為什麼稱為「智能」合約?Nick Szabo自己說,因為這些電子合約比以前紙筆簽的合約要聰明,它自己本身就能夠透過事先寫的協議等等來確保內容被執行。他還有特別提到,這跟AI沒有關係。也就是說,這個智能合約,其實就只是因為比紙筆合約聰明,所以叫做Smart Contract。
Image Source: http://ggllaw.net/areas-of-practice/
智能合約的本質
好了,現在我們搞清楚智能合約的由來了,我們來看看今天的智能合約是什麼樣的面貌。
就如同Nick Szabo在二十年前提出的想法,智能合約的宗旨在於創造一個「可信任、獨立運作」的機器;它接受所有使用者的指示,並且執行一個大家所同意的合約內容。
一個被廣為利用也最容易理解的比喻,就是「自動販賣機」。我們可以把智能合約想像成一台自動販賣機,每當我們想要買飲料時,我們來到一台販賣機面前,投錢、選飲料,然後機器就吐一瓶飲料給我們。啊,爽!
一台販賣機上除了買飲料外,也可以有其他的動作,例如退錢、補貨、老闆領錢之類的。還有,自動販賣機並不是一個永遠在進行中的程式,只有在有人「Trigger」它的時候才會做出對應的動作。這就跟智能合約一樣,它並不是一個一直在執行的程式,而是一個「隨時能被喚醒並運作的機器」。這台機器的合約內容被大家所信任,並且被放在一個穩定且公開的地方,所有人都可以去存取。
自動販賣機的比喻讓我們更容易的理解智能合約的概念,但為什麼我們不把自動販賣機稱為智能合約呢?這是因為販賣機這樣的機器,是存在弱點的。
真正智能合約之要件
一個「智能合約」要符合所有的定義,必須要確保他擁有「穩定運作」、「公開透明」這兩個重要的條件。
首先先講關於「穩定運作」這一點,其中又可以分為兩個面向。
第一個是機器本身的穩定,也就是合約本身的穩定性。一台販賣機本身有「硬體不穩定性」的問題,搞不好某一陣子天氣變化多端忽冷忽熱,或是品質製造太差,導致機器裡某些零件無預期地壞掉,從此無法退幣,所以他不符合要成為偉大的「智能合約」的條件。
再者,對於機器執行環境的穩定。假如今天在百貨公司裡有一台的販賣機,在你投錢之後突然整個百貨公司停電了,那麼你的飲料當然也就吐不出來了。或著如果這個百貨公司充斥著流氓,在你拿出飲料之後會拿刀把你的飲料搶走,那麼這整個想法也件變成不可行的。這就是為什麼「存在於一個穩定而且公平的執行環境」是非常重要的條件。
再來是關於「公開透明」。
公開透明是為了讓合約可以被大眾檢驗,也是被大家信任的基礎。就好像一般合約內容公開透明我們才願意簽字一樣,假如看不到內容,我們該如何信任一個合約呢?
我們對於自動販賣機的信任並不來自於它的公開透明,而是來自它我們的經驗認知,加上它被廣大用戶給測試過,也沒有人貼上「騙子」的便條紙,所以我們相信在投錢進去後,它會乖乖掉出我們要飲料零嘴。所以嚴格來說,這樣的信任並不是真的信任,就好像今天有一台販賣機告訴你,你投一百萬進去,他會吐給你兩百萬,我想大家都是不會相信的。
這兩個條件都是現實生活中非常非常難完成的,以執行一個程式而言,對於公開透明,我們還可以透過開源等方式來讓大家驗證,但是關於「穩定及公平的環境」這一點,幾乎是難以達到的。即使我們把程式放在全球最穩定的亞馬遜雲端平台上,它也不是「公平」的:因為亞馬遜是一家公司,是中心化的,我們使用亞馬遜當作合約運行平台,就代表著我們「信任」這個第三方平台,而這違背了智能合約的宗旨:我們不用透過任何對第三方的信任,就可以確保執行這個合約。
這些種種困難,讓「智能合約」這個詞雖然問世已久,卻遲遲不能得到實踐,直到中本聰2008年的比特幣論文之後,才讓大家眼睛一亮。
區塊鏈成為智能合約興起的舞台
看到這裡大家應該心裡有數了。區塊鏈的出現提供了一個「去中心化」的系統當底層,如果我們把它看成一個運作程式的平台,那麼他幾乎擁有所有的必要條件:公開、透明、去中心化,如果我們在上面放了一台販賣機,除了大家都可以檢視它的構造(程式碼)之外,全世界的電腦都在利用自己的算力確保平台穩定,因此我們幾乎可以確定它可以永遠運作並且不會突然中止或被人操縱。
這根本是個完美的舞台呀!因此,當Vitalik Buterin將比特幣的運作基礎稍加以改變之後,於是就以「運行智能合約」為目的創造了以太坊(Ethereum)這一個宏偉的體系!如果想要了解更多以太坊做的改變,可以參考我們系列之前的文章:State,從宏觀到微觀:以太坊如何將智能合約帶入區塊鏈世界。是不是非常地戲劇化呢?
Image Source: https://unhashed.com/cryptocurrency-coin-guides/ethereum/
小結
這大概就是智能合約的前世今生了,不知道大家看完有何感想或指教呢?歡迎分享或提出喔!
雖然說Smart Contract聽起來十分酷炫,但實際上只是發想於簡單合約的進化而已。我認為真正的核心在於「實踐的環境」這一點,而配合了區塊鏈的出現,這樣的概念不但得以實現,也大大提昇區塊鏈的價值,讓區塊鏈不再只是金錢交易系統,而是能讓我們對未來世界有更多想像的新技術。有時候,創造歷史,就只是那麼一點點想法的改變!
剛剛看到這一篇,也談Smart Contract。寫的不錯,也可參考一下。
工程師視角:什麼是區塊鏈的 Smart Contract?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
写的非常棒,学习了。最近在思考智能合约可信环境时发现很多人走入了一个误区。以POW和DPOS为例,作为全球货币属性的智能合约,需要的是去中心化程度比较高的共识机制,作为区块链应用的智能合约,需要是多中心化效率很高的共识机制。
从智能合约本身的应用场景看待共识机制,才能有一个比较客观的认知。就像Android与IOS,windows与liunx,其实没有错对好坏贵贱之分。
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Well said!! 沒有最好,只有最適合。許多關於去中心化的討論,都過度神化這個概念了。掌握應用之特性,找出適合的共識機制,拿捏好這個「度」,就會是市場最終的贏家~~
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
一次史诗般的对话,站在一个更高的维度思考问题。
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
我認為智能合約最重要的就是不可修改 (保障簽訂人) 和去掉中介人 (降低成本)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
我也覺得目前去掉中間平台成本是很重要的一個環節,可以實現p2p的真正性質。
但我覺得真正的潛力在於更多未來的應用,不僅限於所謂「平台」或是「p2p」,只是我實在絞盡腦汁也想不出什麼新東西哈哈
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
請問ETH的智能合約系統只能用一種語言,比起NEO能用多種現存程式語言編寫,有什麼特殊好處嗎?
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
目前ETH的合約語言Solidity還是最主流的開發語言,因為是為了智能合約而設計的,有許多內建的function等等都是可以直接調用。其實要開發ETH智能合約的話,也有支援python等等其他語言編譯器 ,但就開發上而言我覺得並不一定較方便,第一是因為不一定支援這些語言好用的函式庫,再來是比較容易遇到bug(都還不太成熟)。
NEO因為其中一個遠景就是讓所有人開發智能合約,因此一直宣傳支援各種語言,但其實就像剛剛說的,用其他程式語言編寫目前並不是太方便(例如neo-python現在就滿多bug,一直在更新)。所以我覺得現在還沒有時機成熟到其他開發平台可以拿「可用多種程式編寫」來跟eth的Solidity較量。
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
原來如此。謝謝指教。
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit