以太坊智能合約及以太坊虛擬機EVM最先出現(xiàn)在己任區(qū)塊鏈。
]]>我們可以將以太坊視為一個可以實現(xiàn)去中心化應用的平臺,其核心是一套用于運行以太坊的節(jié)點所要執(zhí)行的智能合約進行編程的語言,及相應地在保證節(jié)點運行其他服務的環(huán)境不受影響的條件下,對所編寫的智能合約語言進行解釋執(zhí)行的虛擬機。用戶通過調(diào)用以太坊提供的接口,對自己所希望部署的去中心化應用進行編寫。
在調(diào)用時,通過共識協(xié)議在所有以太坊節(jié)點間,同將要執(zhí)行的智能合約達成一致,進而在每個節(jié)點的EVM上執(zhí)行。具體地可以將智能合約理解為代碼和數(shù)據(jù)的集合。
以太坊所提供的智能合約編程語言是圖靈完備的,亦即以太坊的智能合約可以做到所有能夠用圖靈機做到的事情,類似于常見的高級編程語言,如C++、GoLang 等 。 以 太 坊 提 供 了 幾 套 編 寫 智 能 合 約 的 高 級 語 言 , 如Solidity、Viper、Serpent及LLL等,其中目前較為流行的是Solidity及Viper。以太坊默認的智能合約編程語言是Solidity,該語言編寫的智能合約對應的文件擴展名為.sol,目前有許多可用的在線Solidity集成開發(fā)環(huán)境(IDE),如Browser-Solidity Web IDE等,用戶可以很方便地在其上編寫并編譯自己所需的智能合約代碼。
用戶通過這些高級語言編寫出較為復雜的智能合約代碼后,對應的代碼進而被編譯為可以在EVM上執(zhí)行的EVM字節(jié)碼,這些字節(jié)碼再被上傳至以太坊區(qū)塊鏈從而使所有節(jié)點均可獲取代碼段,從而使每個節(jié)點都能夠利用本地的EVM對字節(jié)碼進行執(zhí)行。
以太坊智能合約及以太坊虛擬機EVM最先出現(xiàn)在己任區(qū)塊鏈。
]]>智能合約的安全性需要關注最先出現(xiàn)在己任區(qū)塊鏈。
]]>智能合約原理
因此,智能合約的編寫者需要極為謹慎,避免編寫出有邏輯漏洞或是執(zhí)行動作本身有不確定性的智能合約。不過,一些區(qū)塊鏈平臺引入了不少改進機制,對執(zhí)行動作上的不確定性進行了消除,如超級賬本項目的Fabric子項目,即引入了先執(zhí)行、背書、驗證,再排序寫入賬本的機制;以太坊項目也通過限制用戶只能通過其提供的確定性的語言(Ethereum Solidity)進行智能合約的編寫,確保了其上運行的智能合約在執(zhí)行動作上的確定性。
2016年著名的The DAO事件,就是因為智能合約漏洞導致大約幾千萬美元的直接損失。The DAO是當時以太坊平臺最大的眾籌項目,上線不到一個月就籌集了超過1 000萬個以太幣,當時價值一億多美元。但是該智能合約的轉賬函數(shù)存在漏洞,攻擊者利用該漏洞,盜取了360萬個以太幣。由于此事件影響過大,以太坊最后選擇進行回滾硬分叉挽回損失。The DAO智能合約的具體內(nèi)容感興趣的讀者可以自行查閱(1)。但是我們并不能因此而否認智能合約的價值,任何事物在發(fā)展初期必然因為不完善而存在風險,因噎廢食并不可取。
隨著智能合約的普及,智能合約的編寫必然會越來越嚴謹、規(guī)范,同時,其開發(fā)門檻也會越來越低,對應領域的專家也可參與到智能合約的開發(fā)工作中,智能合約必定能在更多的領域發(fā)揮越來越大的作用。隨著技術的發(fā)展和大家對智能合約安全的重視,從技術上可以對智能合約進行靜態(tài)掃描,發(fā)現(xiàn)潛在問題反饋給智能合約開發(fā)人員,也可以通過智能合約形式化驗證的方法全面地發(fā)現(xiàn)智能合約中存在的
智能合約的安全性需要關注最先出現(xiàn)在己任區(qū)塊鏈。
]]>智能合約在區(qū)塊鏈中的運行邏輯
對應前面打賭的例子,智能合約即為通過代碼實現(xiàn)的打賭內(nèi)容。該智能合約預置的觸發(fā)條件即為規(guī)定球賽場次、時間等相關信息,同時需要規(guī)定獲取結果途徑(例如直接從官網(wǎng)獲取結果)。預置響應條件即為觸發(fā)事件后,智能合約具體執(zhí)行內(nèi)容。條件
1:皇馬贏,響應1:錢直接打入我的賬戶;
條件2:拜仁贏,響應2:錢直接打入小明賬戶。該智能合約一經(jīng)部署,其內(nèi)容就會永久地保存在鏈上,并嚴格執(zhí)行。球賽結束后,區(qū)塊鏈網(wǎng)絡中的節(jié)點均會驗證響應條件,并將執(zhí)行結果永久記錄在鏈上
]]>生活中的智能合約是什么?最先出現(xiàn)在己任區(qū)塊鏈。
]]>合約在生活中處處可見:租賃合同、借條等。傳統(tǒng)合約依靠法律進行背書,當產(chǎn)生違約及糾紛時,往往需要借助法院等政府機構的力量進行裁決。智能合約,不僅僅是將傳統(tǒng)的合約電子化,它的真正意義在革命性地將傳統(tǒng)合約的背書執(zhí)行由法律替換成了代碼。俗話說,“規(guī)則是死的,人是活的”,程序作為一種運行在計算機上的規(guī)則,同樣是“死的”。但是“死的”也不總是貶義詞,因為它意味著會嚴格執(zhí)行。
比如,球賽期間的打賭即可以通過智能合約實現(xiàn)。首先在球賽前發(fā)布智能合約,規(guī)定:今天凌晨2:45,歐冠皇馬VS拜仁慕尼黑,如果皇馬贏,則小明給我1 000元;如果拜仁贏,我給小明1 000元。我和小明都將1 000元存入智能合約賬戶,比賽結果發(fā)布,皇馬4:2勝拜仁,觸發(fā)智能合約響應條件,錢直接打入我的賬戶,完成履約。整個過程非常高效、簡單,不需要第三方的中間人進行裁決,也完全不會有賴賬等問題。
生活中的智能合約是什么?最先出現(xiàn)在己任區(qū)塊鏈。
]]>