以太坊智慧合約及以太坊虛擬機器EVM

2022-09-16T18:39:01+08:00

相比於比特幣所提供的極為受限的交易指令碼語言·◕•│,以太坊所提供的智慧合約極大增強了區塊鏈的功能·◕•│,同時也為區塊鏈賦予了可程式設計性↟✘↟。透過以太坊平臺提供的智慧合約程式語言和相應的對智慧合約進行解釋執行的以太坊虛擬機器·◕•│,區塊鏈開發者可以直接在以太坊平臺上進行各種可能的操作的開發·◕•│,賦予以太坊區塊鏈各種方向的應用↟✘↟。 我們可以將以太坊視為一個可以實現去中心化應用的平臺·◕•│,其核心是一套用於執行以太坊的節點所要執行的智慧合約進行程式設計的語言·◕•│,及相應地在保證節點執行其他服務的環境不受影響的條件下·◕•│,對所編寫的智慧合約語言進行解釋執行的虛擬機器↟✘↟。使用者透過呼叫以太坊提供的介面·◕•│,對自己所希望部署的去中心化應用進行編寫↟✘↟。 在呼叫時·◕•│,透過共識協議在所有以太坊節點間·◕•│,同將要執行的智慧合約達成一致·◕•│,進而在每個節點的EVM上執行↟✘↟。具體地可以將智慧合約理解為程式碼和資料的集合↟✘↟。 以太坊所提供的智慧合約程式語言是圖靈完備的·◕•│,亦即以太坊的智慧合約可以做到所有能夠用圖靈機做到的事情·◕•│,類似於常見的高階程式語言·◕•│,如C++•₪·╃•、GoLang 等 ↟✘↟。 以 太 坊 提 供 了 幾 套 編 寫 智 能 合 約 的 高 級 語 言 ·◕•│, 如Solidity•₪·╃•、Viper•₪·╃•、Serpent及LLL等·◕•│,其中目前較為流行的是Solidity及Viper↟✘↟。以太坊預設的智慧合約程式語言是Solidity·◕•│,該語言編寫的智慧合約對應的副檔名為.sol·◕•│,目前有許多可用的線上Solidity整合開發環境(IDE)·◕•│,如Browser-Solidity Web IDE等·◕•│,使用者可以很方便地在其上編寫並編譯自己所需的智慧合約程式碼↟✘↟。 使用者透過這些高階語言編寫出較為複雜的智慧合約程式碼後·◕•│,對應的程式碼進而被編譯為可以在EVM上執行的EVM位元組碼·◕•│,這些位元組碼再被上傳至以太坊區塊鏈從而使所有節點均可獲取程式碼段·◕•│,從而使每個節點都能夠利用本地的EVM對位元組碼進行執行↟✘↟。