馬蹄鏈智慧合約dapp系統開發搭建
EVM模組主要分為三大模組:編譯合約模組、Ledger模組和EVM執行模組。
編譯合約模組
主要是對底層Solc編譯器進行一層封裝,提供RPC介面給外部服務,對用Solidity編寫的智慧合約進行編譯。編譯後將會返回二進位制碼和相應的合約ABI, ABI可以理解為合約的手冊
Ledger模組
Ledger模組主要是對區塊鏈Account系統進行修改和更新,Account一共分為兩種,分別是普通Account(EOA)和智慧合約Account,呼叫方如果知道合約Account地址則可以呼叫該合約,Account的每一次修改都會被持久化到區塊鏈中。
EVM執行模組
EVM執行模組作為核心模組,主要功能是對事務中的智慧合約程式碼進行解析和執行,一般分為建立合約和呼叫合約兩部分。
支援普通的位元組碼執行和JIT模式的指令執行
指令集
EVM指令由很多標準機器碼指令組成,包含:
算術和位運算邏輯操作
執行上下文查詢
棧、記憶體和儲存訪問
處理流程操作
日誌、跳轉和其他操作
EVM模組執行流程
EVM執行事務的流程如圖所示
(1) EVM接收到Transaction資訊,然後判斷Transaction型別是部署合約還是執行合約。如果是部署合約,執行指令集,來儲存合約地址和編譯後的程式碼;如果是執行合約或是呼叫合約,則使用EVM來執行輸入指令集。
(2) 執行上一條指令集之後,判斷EVM是否停機,如果停機則判斷是否正常停機,正常停機則更新合約狀態到區塊鏈,否則回滾合約狀態。如果不停機則回到上一步(1)進行判斷。
(3) 執行完的合約會返回一個執行結果,EVM會將結果儲存在Receipt回執中,呼叫者可以透過Transaction的雜湊來查詢結果。
EVM程式碼的正式執行模型
每輪執行時,透過調出程式碼的第pc(程式計數器)個位元組,每個指令如何影響元組都有定義。例如,ADD將兩個元素出棧並將它們的和入棧,將Gas減1並將pc加1; stack將頂部的兩個元素出棧,並將第2個元素插入由第1個元素定義的合約儲存位置,同樣減少最多200的Gas值,並將pc加1。雖然有許多方法透過即時編譯去最佳化以太坊,但以太坊的基礎性的實施可以用幾百行程式碼實現。
EVM是基於棧的虛擬機器
以太坊合約的程式碼是使用低階的基於堆疊的位元組碼的語言寫成的,被稱為“以太坊虛擬機器程式碼”或者“EVM程式碼”。程式碼由一系列位元組構成,每一個位元組代表一種操作。一般而言,程式碼執行是無限迴圈,程式計數器每增加一(初始值為零)就執行一次操作,直到程式碼執行完畢或者遇到錯誤、STOP或者RETURN指令。
EVM不是基於暫存器的,而是基於棧的虛擬機器。因此所有的計算都在一個稱為棧的區域內執行。棧最大有1024個元素,每個元素有256位。對棧的訪問只限於其頂端,允許複製最頂端的16個元素中的一個到棧頂,或者是交換棧頂元素和下面16個元素中的一個。所有其他操作都只能取最頂的一個或幾個元素,並把結果壓在棧頂。當然可以把棧裡的元素放到儲存或者主存中。但是無法只訪問棧裡指定深度的那個元素,在那之前必須把指定深度之上的所有元素都從棧中移除才行。
EVM的指令集被刻意保持在最小規模,以儘可能避免可能導致共識問題的錯誤。所有的指令都是針對256位這個基本的資料單位進行的操作,具備常用的算術、位、邏輯和比較操作,也可以進行條件和無條件跳轉。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70010128/viewspace-2942123/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 馬蹄鏈智慧合約DAPP系統開發搭建詳情APP
- matic馬蹄鏈智慧合約dapp系統開發搭建介紹APP
- DAPP馬蹄鏈智慧合約系統開發(案例)丨DAPP馬蹄鏈開發原始碼APP原始碼
- FDF智慧合約系統開發|馬蹄鏈DAPP開發搭建技術APP
- 馬蹄鏈智慧合約DAPP開發需求丨馬蹄鏈智慧合約DAPP質押挖礦系統開發(開發案例)APP
- 馬蹄鏈Dapp智慧合約(系統開發)案例丨馬蹄鏈MATIC智慧合約技術開發原理APP
- DAPP馬蹄鏈智慧合約開發正式版丨DAPP馬蹄鏈智慧合約系統開發(詳解及案例)APP
- polygon馬蹄鏈質押DApp開發合約系統搭建GoAPP
- FDF智慧合約互助系統開發馬蹄鏈搭建
- polygon馬蹄鏈智慧合約dapp系統開發|NFT鏈遊戲搭建技術GoAPP遊戲
- DAPP馬蹄鏈系統開發原理丨馬蹄鏈DAPP智慧合約演算法應用程式APP演算法
- matic馬蹄鏈智慧合約dapp系統開發模式定製APP模式
- Polygon馬蹄鏈(matic)智慧合約DApp開發系統技術GoAPP
- 關於DAPP馬蹄鏈合約系統開發demoAPP
- DAPP馬蹄鏈智慧合約質押挖礦開發丨DAPP馬蹄鏈智慧合約質押挖礦系統開發技術分析及原始碼APP原始碼
- DAPP合約系統開發技術丨DAPP馬蹄鏈系統開發成熟DmeoAPP
- Matic馬蹄鏈DAPP智慧合約挖礦系統開發詳情模式APP模式
- 鏈上DAPP系統開發|智慧合約DAPP開發搭建APP
- DAPP馬蹄鏈代幣合約質押系統開發詳情模式搭建APP模式
- Polygon馬蹄鏈智慧合約挖礦系統開發|Polygon馬蹄鏈專案開發Go
- 關於智慧合約馬蹄鏈DAPP系統開發技術講解(方案)APP
- Polygon(matic)馬蹄鏈智慧合約互助系統開發Go
- NFT遊戲開發系統鏈改技術|馬蹄鏈智慧合約Dapp開發技術遊戲開發APP
- 智慧合約馬蹄鏈Polygon系統開發案例丨馬蹄鏈Polygon功能開發詳情Go
- 關於馬蹄鏈智慧合約DAPP系統開發方案流程詳情介紹APP
- DAPP馬蹄鏈polygon智慧合約系統開發(詳細及案例)原始碼部署APPGo原始碼
- DAPP馬蹄鏈智慧合約專案系統開發詳情技術介紹APP
- 智慧合約馬蹄鏈質押挖礦開發穩定版丨DAPP智慧合約系統開發詳細模型APP模型
- 馬蹄鏈dapp開發規則丨馬蹄鏈dapp系統開發(案例開發)丨馬蹄鏈原始碼功能APP原始碼
- Matlc馬蹄鏈DAPP合約專案系統開發方案(成熟原始碼)APP原始碼
- 關於DAPP馬蹄鏈合約模式系統開發詳情介紹APP模式
- DAPP馬蹄鏈開發原理丨DAPP馬蹄鏈系統開發(案例及說明)丨馬蹄鏈原始碼APP原始碼
- 鏈上智慧合約錢包系統開發搭建DAPPAPP
- 馬蹄鏈FDF智慧合約迴圈互助模式系統開發模式
- 馬蹄鏈合約互助迴圈複利模式開發流程丨智慧合約dapp系統開發程式設計示例模式APP程式設計
- 關於DAPP馬蹄鏈合約系統開發詳情技術介紹APP
- matic馬蹄鏈合約DAPP專案系統開發技術(成熟語言)APP
- matic馬蹄鏈合約DAPP技術開發/區塊鏈專案系統開發Demo流程APP區塊鏈