買比特幣 買比特幣
Ctrl+D 買比特幣
ads
首頁 > 幣贏 > Info

區塊鏈:一文了解智能合約執行引擎的前世今生_GAS

Author:

Time:1900/1/1 0:00:00

Solidity作為最早提出的智能合約語言,它的出現為區塊鏈的應用場景打開了新的大門。

——?緣起——

智能合約這個術語最早于1994年由跨領域法律學者尼克·薩博?次提出。他對智能合約的定義如下:

“一個智能合約是一套以數字形式定義的承諾,包括合約參與方可以在上面執行這些承諾的協議。”

所以簡單來看,尼克·薩博認為智能合約是?套承諾。所謂承諾就是參與?同意的相互之間的權利和義務。因此智能合約的本質和?的即是承諾本身。?如?個簡單的買賣事件,賣家承諾供貨,買家承諾?付,這兩個承諾就可以形成?個智能合約。注意尼克·薩博對智能合約定義中提到的關鍵詞:數字形式和協議。這兩個關鍵詞決定了智能合約不同于傳統意義上的承諾,它在形式和功能上有著決定性的特征。

「智能合約」最開始由以太坊引入區塊鏈。據以太坊白皮書,引入智能合約主要為了解決如下問題:

對于腳本語言,腳本是非圖靈完備的,難以實現復雜的功能,比如橢圓曲線簽名算法腳本無法對可以提取的金額進行細粒度控制腳本缺乏狀態保存,無法實現更為復雜的有狀態合約執行時能獲取的數據不夠豐富,例如隨機數、時間戳和前一個區塊哈希的獲取總之,腳本語言無法滿足更為豐富的應用操作,所以以太坊設計了獨特的智能合約語言Solidity,同時,執行智能合約的智能合約執行引擎EVM也誕生了。

Moonbeam發布Runtime2400系列升級波卡跨鏈互操作功能:7月31日消息,Moonbeam的Runtime2400系列升級即將推出。此次升級將增加GMP預編譯工具、XCM到EVM跨鏈遠程調用以及OpenGov升級方案。此次升級將首先在Moonriver網絡上執行,并在未來逐步落地Moonbeam主網。Runtime2400系列升級有望提升跨鏈終端體驗,并降低跨共識開發難度。[2023/7/31 16:08:56]

自此,區塊鏈技術的應用場景,從單一基于UTXO的數字貨幣交易,延伸到圖靈完備的通用計算領域。用戶不再受限于僅能使用比特幣腳本所支持的簡單邏輯,而是可以自行設計任意復雜的合約邏輯。

——?總述——

以太坊設計智能合約有著如下設計特點:

▲?執行的確定性

確定性是指程序對于給定的輸入,不管在何時何地,執行多少次都有相同的輸出。由于區塊鏈維護的是同一份賬本,智能合約執行的確定性可以理解為不同的節點執行相同的合約,必須有相同的結果。

俄羅斯計劃2024年實現加密貨幣挖礦合法化:金色財經報道,俄羅斯國家杜馬金融市場委員會主席Anatoly Aksakov在2023年圣彼得堡國際經濟論壇上表示,俄羅斯加密貨幣挖礦最早可能在2024年合法化。該國加密貨幣挖礦合法化的四項法案的一讀定于7月舉行,國家杜馬將通過這些法案。它將啟動他們成為法律的過程。除了監管加密貨幣挖礦外,這些法案還將涵蓋加密貨幣挖礦法規、礦工稅收以及對非法挖礦活動的處罰等主題。

據俄羅斯財政部此前稱,該國的礦工產生了價值約40億美元的加密貨幣,產生了約12億美元的利潤。該部還強調了俄羅斯在采礦領域日益重要的作用,強調俄羅斯是世界第二大采礦國。[2023/6/16 21:42:39]

以太坊智能合約語言被設計的足夠簡單,為了保證執行的確定性,其不會實現隨機數,不確定的調用等功能,同時,智能合約的執行在一個環境被限制的虛擬機中進行,這樣能夠在底層更加保證其結果的確定性。

▲?圖靈完備性

圖靈完備的語言,比較官方的解釋是“可以計算一切可以用一個算法計算的問題”的語言,包括無限循環。以太坊引入智能合約的目的就是為了實現圖靈完備,來支持更為豐富的應用形式。

Numen Cyber與BNB Chain達成合作,成為BNB Chain Kickstart Program官方安全審計服務商:2月1日消息,新加坡Web3安全公司Numen Cyber宣布與BNB Chain正式建立合作,成為BNBChain Kickstart Program官方安全審計服務商。這是繼與Binance簽署安全合作協議后,雙方進一步開展更多維度的合作。通過此次合作,NumenCyber將為BNBChain生態以及相關開發者提供Web3安全解決方案,同時為所有服務提供25%的折扣,以幫助項目團隊確保其區塊鏈實施、共識協議、智能合約和DApps的安全。

Numen Cyber是一家總部位于新加坡的Web3安全及網絡威脅檢測和響應的解決方案提供商。Numen Cyber Labs由來自全球的知名安全專家組成,技術團隊發現過很多知名Web3生態(Aptos,Sui,EOS,Ripple,TRON等)及項目、微軟、谷歌、蘋果產品的高危漏洞,并提供業界頭部水平的Web3安全解決方案,可滿足各種Web3應用場景的網絡安全需求。[2023/2/1 11:40:06]

引入圖靈完備之后需要解決的一個問題就是停機問題:在一般情況下,沒有辦法判斷給定的程序是否會停機。

北京副中心元宇宙行動計劃發布,首提跟蹤NFT、聚焦數字藏品等舉措:金色財經消息,北京通州區與北京市科委、中關村管委會,北京市經信局聯合印發了《北京城市副中心元宇宙創新發展行動計劃(2022-2024年)》(以下簡稱《行動計劃》)。根據《行動計劃》,副中心將聚焦培育元宇宙細分產業鏈,打造數字設計、數字人、混合現實、數字藝術4大產業鏈條;引入云上內容創作生產線企業,促進內容創作數實共生,打造數字內容創作生態圈;探索數字資產權益全生命周期管理,跟蹤NFT(非同質化通證)技術前沿動態,大力發展數字資產交易服務;加快安全芯片、零信任網絡、可信計算等技術的研發和產業化,持續強化區塊鏈技術攻關與應用,打造數字信任的安全保障體系。[2022/8/24 12:44:27]

為了避免圖靈完備帶來的停機問題,以太坊引入Gas機制,來對相關的執行過程進行耗費計算。通過將各種操作費用以gas為單位計算,并且設置每次執行的gas消耗上限,即gasLimit,在合約執行耗費累計操作gasLimit上限后強制停止執行,從而達到停機的效果。Gas機制的引入,使得用戶對使用應用的復雜程度取決于其愿意為其付出的代價,而不是平臺物理上的限制。

IOHK:Cardano的Vasil升級進度或將延遲:6月21日消息,Cardano 開發公司 IOHK 發文”Vasil 升級的最新進展”,表示 IOG 工程團隊非常接近完成核心工作,只有七個 Bug 仍未完成完成硬分叉工作,目前沒有一個被列為“嚴重”,經過一番考慮,同意今天不將硬分叉更新提案發送到測試網,以便有更多的時間進行測試。此外目前已經完成了大部分(約 95%)的 Plutus V2 測試腳本,但是仍然需要運行一些未完成的項目以確認一切是否按預期工作,已經確定還需要幾天的時間,這或使進度落后于之前所溝通的 6 月 29 日主網硬分叉的預定日期。

此前報道,IOHK 的社區和生態系統副總裁 Tim Harrison 稱非常接近 Cardano 的 Vasil 硬分叉目標,但需評估 DApp、交易所等的準備情況。[2022/6/21 4:41:54]

當然,Gas機制的引入也還有其他好處,不在此處過多介紹。

▲?安全性

安全性作為以太坊的設計前提,也是智能合約需要保證的。以太坊智能合約的安全性在設計上主要體現在兩個方面:

1)相對簡單的智能合約語言

Solidity語言相對于主流的圖靈完備語言而言,由于其專注于區塊鏈場景,所以很多語言特性其沒有必要去實現比如多線程,系統調用,這就使得其可以設計得盡可能簡化。不過這也是其早期比較難用的原因之一,雖然隨著語言的逐漸發展,其功能也在不斷的增加與完善。

2)智能合約的執行環境足夠隔離

以太坊智能合約運行在以太坊虛擬機EVM中,EVM中的運行不僅被沙盒化,而且實際上是完全隔離的,這意味著在EVM中運行的代碼無法訪問網絡、文件系統或其他進程。甚至智能合約中對其他智能合約的訪問也很有限。通過運行的隔離很大程度上保證了其可控安全。

但是,不可否認以太坊智能合約仍然存在許多安全上的問題,如著名的“可重入攻擊”等。

——?詳解——

下面,讓我們深入Solidity合約的執行引擎—EVM。

EVM被定義為一種棧式虛擬機,其使用一個字節作為指令。棧式虛擬機的特點是執行運算時都是依靠與操作數棧進行交互。

Solidity合約源碼經過編譯后是用一種低級的、基于堆棧的字節碼,所以我們真正部署在以太坊上并且在EVM中執行的其實是一串字節碼。代碼由一系列字節組成,其中每個字節代表一個操作。字節碼執行時從第一個字節碼開始根據字節碼的操作含義依次執行,直到到達代碼末尾或出現錯誤。這些操作可以訪問三種類型的空間來存儲數據:

棧:后進先出容器,其值可以被壓入和彈出;Memory:一個無限可擴展的字節數組;Storage:合約的長期存儲,為鍵/值對存儲。與計算結束后重置的堆棧和Memory不同,存儲會長期存在,這部分也就是常說的“世界狀態”的一部分。智能合約的執行過程其實就是依據操作碼定義的行為對三種類型存儲空間的操作過程,我們以下面的例子進行簡單的展示:

下圖展示部分合約片段:左邊是合約字節碼,右邊是字節碼代表的操作含義

各個操作碼的簡單含義如下:

PUSH1:字節碼16進制為60,操作含義是將緊跟著的一個字節推入棧中

ADD:字節碼16進制為01,操作含義是將棧上的兩個元素彈出相加,然后將結果放回棧中

MSTORE:字節碼16進制為52,操作含義是將棧中彈出的第二個值存入Memory中,存入的索引值為棧中彈出的第一個元素

RET:字節碼16進制為f3,操作含義是執行結束,返回結果,結果在Memory中,起始索引為棧中彈出的第一個值,長度為棧中彈出的第二個值

將這段字節碼放入EVM中執行,其執行過程如下所示:

其中,PC代表當前執行操作碼的位置,合約片段執行的最后會從Memory中的60起始處,取出5個字節的數據出來,由此,合約片段執行完畢,最終的結果會被返回給調用者!

細心的同學會發現,圖中相關的指令沒有和Storage相關的操作,其實是因為為了簡化沒有在示例代碼中選取相關的指令如SStore,其執行原理和上述的表述類似。

“那么,為什么EVM會被設計成這個樣子?為什么通過這些棧的進進出出,內存的復制來復制去,以及對Storage的操作,就能夠解決計算問題,完成對合約狀態的獲取以及修改呢?”

這就涉及到編程語言的設計了。理論上,在計算理論體系中,指令集架構是一個計算機的抽象模型,指令集包含的指令類型豐富程度直接影響著程序表達的豐富程度。比如,指令集中可以包含算數和邏輯運算類指令如加減乘除,控制類指令如跳轉,數據處理指令如讀取內存等。而作為虛擬機,可以根據需要選取或者添加指令構建一個指令集,來表達自己期望的功能。比如EVM中沒有針對與浮點數的相關操作,增加了Storage相關的指令,所以這就從指令層面解釋了Solidity語言不支持浮點數的運算。而在指令確定之后借助現代程序設計的一些工具,即可設計出特定的語言。所以,在某種程度上,如果需要,我們也可以實現自己的語言以及對應的執行引擎。

——?發展——

EVM的本質是通過可編程的語言來操作“世界狀態”,也就是我們所說得區塊鏈賬本,因此,如何更好、更快的來操作是智能合約虛擬機的一大追求。

隨著不斷的發展,行業內已擁有多種智能合約執行引擎,同時也不乏新的探索。

EVM:兼容以太坊EVM,并進行了性能優化與功能豐富HVM:趣鏈首創支持Java語言編寫智能合約的高效、易用、完備的智能合約執行引擎FVM:支持Rust等語言編寫智能合約的安全,多樣,高效的智能合約執行引擎KVSQL:支持在區塊鏈上執行SQL語句的新型執行引擎本文作為專欄的開篇,介紹智能合約的起源以及以太坊智能合約,接下來系列文章將會對其他執行引擎進行詳細介紹,敬請期待!

作者簡介

何奇趣鏈科技基礎平臺部區塊鏈虛擬機研究小組

參考文獻

智能合約百度百科

以太坊黃皮書

以太坊白皮書

Tags:以太坊區塊鏈GASTORrly幣為什么要關閉以太坊側鏈為什么現在不提區塊鏈了TOGASHIVictoria VR

幣贏
ETH:ENVOY Network啟動并完成250萬美元融資_ETHD

巴比特訊,8月12日,數字收藏品平臺ENVOYNetwork宣布今日啟動并獲得250萬美元首輪私募融資.

1900/1/1 0:00:00
SEA:數據:NFT交易平臺Opensea的供應方收入高于其協議收入_SEAH幣

巴比特訊,TokenterMinal數據顯示,NFT交易平臺Opensea的二次銷售賣方費用高于Opensea交易費用。8月供應方收入超過1.936億美元,協議收入超過1.039億美元.

1900/1/1 0:00:00
EOS:慢霧:DAO Maker Vesting合約遭黑客攻擊,攻擊者獲利近400萬美金_EOS INFINITY

巴比特訊,據慢霧區情報,DAOMaker的Vesting合約遭到黑客攻擊。DeRaceToken(DERC),Coinspaid(CPD),CapsuleCoin(CAPS),ShowcaseT.

1900/1/1 0:00:00
OLY:Poly Network:升級完成后將以去中心化的方式運作,希望黑客能參與到這個進程中來_Polymarket

巴比特訊,8月18日,PolyNetwork發布《寫在PolyNetwork主網上線一周年的一封公開信》表示,白帽黑客與PolyNetwork有著一致的愿景,即在區塊鏈世界里建立一個安全.

1900/1/1 0:00:00
MIN:買NFT不如自己創作?12歲男孩在一天內賺取80枚ETH,他是如何做到的?_YAM

本文來自?Bitcoinist,原文作者:EduardoPrósperoOdaily星球日報譯者|余順遂原標題:《買NFT不如自己創作?12歲男孩在一天內賺取80枚ETH》WeirdWhales.

1900/1/1 0:00:00
NCE:教程丨手把手教你如何領取 MLOOT_NFT

Loot是一個允許任何人鑄造代表一組8個冒險家主題裝備物品的NFT項目。這些物品具有隨機分布的稀缺特征。這被稱為一個「公平鑄造」項目,因為合約不出售NFT——這些NFT是免費鑄造的.

1900/1/1 0:00:00
ads