NEW EVENT
最新活動
幣安
HOT ARTICLES
熱門文章
只要看過一些加密貨幣相關領域的文章,一定常常看到一個詞:智能合約 (Smart Contract)。
智能合約是什麼意思?英文直譯是聰明的合約,是這樣嗎?
智能合約最直接的解釋,就是當只需要情況符合制定合約條件,以及把這些條件寫好程式並布置在系統環境裡,接著就會由系統自動執行的合法。
不需要經過人,合約條件被制定之後,再由程式自動判定是否符合條件,如果是的話。一旦條件符合由程式自動執行。
舉例來說:
當我們在一台自動販賣機買飲料,投進 50 元硬幣,選擇了 30 元的飲料,系統自動判定我們付的款大於我們選擇的飲料價格,於是放行讓飲料被投下來,同時找錢給我們。
或是當我們到無人化管理採用車牌掃描的停車場停車,要離開的時候,系統掃描車牌,偵測到我們共有多少停車費要繳,是否已經完成繳交?判定已完成就打開閘門讓我們出去,判定尚未繳費就不打開閘門,並在顯示器上顯示繳費提醒。
這兩個案例比較簡單,實際上會使用智能合約的情況更複雜,牽涉到更複雜的條件認定和資源調用。
任何需要判定、驗證、執行的事,如果不想用人力來做,都可能是智能合約可以派上用場的時候。
舉幾個生活中會遇到的情況為例:
購買保險時,保險條款中會註明理賠條件和理賠金額。現階段的理賠基本上是由人力操作,理賠事件發生時由當事人準備相關證明,向保險公司申請理賠,保險公司審核是否符合條件,然後撥款理賠。
向銀行申請貸款時,銀行會審核我們的條件,判定我們的資格,驗證我們的資料,依據條件決定貸款額度和還款條件,現階段也是多由人力操作。
這也是需要判定、驗證、執行的事情。假設由智能合約來操作,系統根據我們提供的相關資料,自動判定可以提供的貸款額度和條件,接著當我們完成抵押設定,自動驗證相關資料,通過後自動執行貸款撥款,中間可以省下大量人力與人為失誤可能。
幣圈在前一兩年最火紅的議題之一就是 NFT,先不討論 NFT 到底是什麼又為什麼紅,簡單描述 NFT 鑄造為什麼會需要智能合約。
又是一個需要判定、驗證、執行的情況,判定你是否在白名單上?你的錢包中是否有足夠鑄造 NFT 的費用?都符合才執行。
智能合約的概念很早以前就有人提出,大約在 90 年代由 Nick Szabo 所提出,只是當時的環境條件還做不到,直到比特幣誕生,區塊鏈的概念出現。
如果只是非常簡單的任務,例如前述的自動販賣機出飲料及找錢或停車場開關閘門,這不會有太多問題。但如果是更複雜的合約,牽涉到更多方,需要驗證多方資訊,調動多種資源的時候,要讓程式自動執行就會有個大問題,就是誰也不信任誰。
保險公司不信任申請人提供的資料,於是需要人工審核,銀行不信任申請人提供的證明,於是需要人工審核。不同組織之間彼此不一定信任彼此提供的資料或訊息,就需要花費大量時間審核。
信任是個大問題,要讓程式自動執行合約並不難,難的是如何在不信任彼此的情況下讓程式自動執行?
這就是「去信任化」的問題。如何讓參與的各方相互之間不需要信任依然可以運作?
區塊鏈的三大特性:去中心化、公開透明、不可竄改,一個運作良好的區塊鏈,本身就可以提供信任,當信任由區塊鏈本身提供,就能做到去信任化,這也是區塊鏈技術的重大價值所在。不需要信任彼此,信任這條鏈的運作機制即可。
雖然說比特幣是第一條成功的區塊鏈網路,但當時的比特幣區塊鏈還不具備執行智能合約的條件,直到以太坊出現。
比特幣網路的設計,主要是為了記帳,記比特幣的帳。以太坊則不一樣,它一開始就是為了讓人在上面運作智能合約而設計的區塊鏈。
突然間真的可以運行智能合約了,人們開始摸索這到底可以拿來幹嘛用,而後第一個火爆應用出現,也孕育了 2017 那年的幣圈大牛市,這個火爆的智能合約應用就是 ICO。
延伸閱讀:什麼是 ICO 初次代幣發行
雖然許多當時的知名項目如今已經殞落,但這確實開啟了加密貨幣領域野蠻生長的時代。像以太坊這種主要用來運作智能合約的區塊鏈,人們稱它為平台公鏈,也有人直接簡稱公鏈,這類平台公鏈後來愈來愈多,百花齊放,不只有跟以太坊一樣的 Layer 1 公鏈,也有後來因應擴容需求而生的 Layer 2 公鏈。
先不用搞懂差異也沒關係,先知道平台公鏈指的就是設計來運作智能合約的區塊鏈就好。有如此多的公鏈蓬勃發展,也意味著人們對於智能合約的需求龐大。
透過區塊鏈的技術,來做到去信任化,讓智能合約得以順利運行,這樣的智能合約有什麼優缺點呢?
區塊鏈是去中心化運作的一種網路,運作良好的區塊鏈本身安全性就很高,又透過程式自動執行減少人力消耗,合約執行效率也很高,同時智能合約就是由程式碼構成,可以完全依據需求客製化設計與修改。
也因為區塊鏈是去中心化的運作,跟中心化方式相比,有時候的進入門檻更高,維護成本也更高,要準備的資源更多,跟直接用人力執行相比,需要有人去寫出對應的程式碼,整體的門檻較高。
儘管智能合約似乎很智能,但確實不是所有事情都適合透過智能合約來處理。
最後的最後,來一段簡短的智能合約範例示意,希望能對智能合約有更立體的了解。但這畢竟是寫給非程式背景的人看的,只能算是個智能合約範例的示意圖。
Solidity 是一種用來開發以太坊上 (EVM 上) 智能合約的程式語言,這段範例示意來自 ethereum / solidity Github。
這段程式中的第一行說的是這段程式碼是根據 GPL 版本 3.0,第二行說的是指定由 0.4.16 或更高版本的 Solidity 語言來撰寫,但排除版本 0.9.0。
程式實際寫起來當然不太可能這麼短,更實際的情況例如以下這張圖,這段合約寫的創建與發送最基本形式的加密貨幣,如果是更複雜的功能寫起來就會更長。
對於非程式背景的人來說要學習與理解這些並不容易,在區塊鏈的發展中,開源文化一直是重要的推進力量,目前有許多項目都把自己的程式碼開源在 Github 網站上,裏頭也有許多智能合約教學與討論,如果有相關需求的建議可以好好研究一下這個網站。
如今,智能合約通常是指運作在區塊鏈上的一套程序或應用,也因為幣圈還在一個
相對早期的階段,整體環境還在發展中,相關的規範也還不夠成熟,這領域充斥著大量詐騙。
詐騙你的不是智能合約,而是背後那個寫出智能合約的人。
目前常見的幾種詐騙方式,基本上可以統整為一種:假的!
用假的網站、客服、服務騙你,騙你的帳號密碼,騙你的私鑰或助記詞,跟智能合約相關的詐騙方式,就是騙你的合約授權。
當我們使用例如錢包等工具,在區塊鏈上做相關操作時,需要授權智能合約去操作你錢包中的資產。詐騙方式就是利用假的網站,或是假的幣,讓你誤以為那是真的,然後授權對方的合約去操作你錢包中的加密貨幣。
針對這種詐騙的破解方式,就是務必小心確認是否來到真的網站,授權合約時仔細檢查授權內容是否有問題,遇到任何新項目,多利用 coinmarketcap 或是 coingecko 網站反覆確認真偽。
或另外一種情況是,它本來是真的,但後來被駭了變成假的。假設我們過去曾經授權過這個智能合約,因為現在它已被惡意的人給掌握,就可能會造成資產損失。
針對這種情況的破解方式,則是記得要去移除授權,把過去曾經給過這個智能合約的授權給移除,對方就沒有辦法動用你錢包中的資產了。
延伸閱讀:撤銷智能合約授權|如何在 Metamask 取消授權?| 工具介紹
記得這幾句話就好:
延伸閱讀:
【ETH】以太坊/以太幣新手入門,2.0四大更新技術看未來前景
東東
加密貨幣愛好者 | 2017 入圈,認為區塊鏈是下個世代的網路,期待區塊鏈與加密貨幣普及到日常生活的那一天。