AOW先行網絡獵戶座的技術亮點之三——EVM(以太坊虛擬機)

2020-12-04 金色財經

EVM(以太坊虛擬機),用Solidity程式語言編寫,可以執行任何算法複雜的代碼。以太坊就是通過EVM從而實現智能合約的調用和執行。發展至今,可以說EVM已經非常成熟並且應用廣泛。

那麼,什麼是以太坊虛擬機?

不要著急,容我們詳細道來

第一:以太坊帳戶

我們要明白在以太坊中的帳戶,一般有兩類,一個是外部帳戶,一個是合約帳戶,兩個帳戶的區別在於擁有不同的控制載體,外部帳戶,該類帳戶被公鑰-私鑰對控制(人類)。合約帳戶,該類帳戶被存儲在帳戶中的代碼控制。但是他們共用一個地址空間。外部帳戶的地址是由公鑰決定的,合約帳戶的地址是在創建改合約時確定的(這個地址由合約創建者的地址和該地址發出過的交易數量計算得到,地址發出過的交易數量也被稱作"nonce"),合約帳戶存儲了代碼,外部帳戶則沒有,換句話說,去除掉這一點來說,兩類帳戶沒有多少區別。

第二:以太坊交易

一筆交易是一條消息,從一個帳戶發送到另一個帳戶(可能是相同的帳戶或者零帳戶,見下文)。交易可以包含二進位數據(payload)和以太幣。如果目標帳戶包含代碼,該代碼會執行,payload就是輸入數據。如果目標帳戶的地址是0,那麼交易將創建一個新合約。而這個合約地址不是零地址,對於這一點,我們一定要切記,記住了這一點,我們對於下面所要進行的工作就有了思路,言歸正傳,這個地址是由合約創建者的地址和該地址發出過的交易數量(被稱為nonce)計算得到。創建合約交易的payload被當作EVM字節碼執行。執行的輸出做為合約代碼被永久存儲。這意味著,為了創建一個合約,你不需要向合約發送真正的合約代碼,而是發送能夠返回真正代碼的代碼。

第三:Gas

這個可以理解為傳統金融業務中的手續費,當以太坊上產生一筆交易的時候,每筆交易都會被收取一定數量的gas,gas的目的是限制執行交易所需的工作量,同時為執行支付費用。當EVM執行交易時,gas將按照特定規則被逐漸消耗。

gasprice(gas價格,以太幣計)是由交易創建者設置的,發送帳戶需要預付的交易費用=gasprice*gasamount。如果執行結束還有gas剩餘,這些gas將被返還給發送帳戶。無論執行到什麼位置,一旦gas被耗盡(比如降為負值),將會觸發一個out-of-gas異常。當前調用幀所做的所有狀態修改都將被回滾。

第四:存儲,主存和棧

每個帳戶有一塊持久化內存區域被稱為存儲。其形式為key-value,key和value的長度均為256比特。在合約裡,不能遍歷帳戶的存儲。相對於另外兩種,存儲的讀操作相對來說開銷較大,修改存儲更甚。一個合約只能對它自己的存儲進行讀寫。第二個內存區被稱為主存。合約執行每次消息調用時,都有一塊新的,被清除過的主存。主存可以以字節粒度尋址,但是讀寫粒度為32位元組(256比特)。操作主存的開銷隨著其增長而變大(平方級別)。

從上述的講述中,我們可以得出一個重要的信息,那就是EVM不是基於寄存器,而是基於棧的虛擬機。因此所有的計算都在一個被稱為棧的區域執行。棧最大有1024個元素,每個元素256比特。對棧的訪問只限於其頂端,方式為——允許拷貝最頂端的16個元素中的一個到棧頂,或者是交換棧頂元素和下面16個元素中的一個。所有其他操作都只能取最頂的兩個元素,並把結果壓在棧頂。當然可以把棧上的元素放到存儲或者主存中。但是無法只訪問棧上指定深度的那個元素,在那之前必須要把指定深度之上的所有元素都從棧中移除才行。

用很通俗的話語來解釋以太坊虛擬機,我們舉個例子,你有一個房子,馬上就要進行裝修,但是裝修不是說把所有的家具擺放在一塊就可以,這樣會顯的很雜亂,也沒有章法可言,美觀更無從談起,為此,我們會提前先進行裝修計劃的打造,打一個草稿,或者更為專業一點的,那就是打開SketchUp軟體模擬一個同樣的三維空間,並在上面繪製規劃圖紙。

也就是,以太坊虛擬機扮演的就是這樣的角色,它生成現有作業系統的虛擬鏡像,具有和真實Windows系統完全一樣的功能。這為現在的區塊鏈落地應用提供了一種虛擬的測試環境,所以成為區塊鏈重要的技術支撐。

在此框架之下,ORION集成了EVM模塊,並使⽤Substrate的contractpallet來⽀持solidity智能合約的開發與運⾏。這不僅有利於自身鏈上智能合約的快速開發與調用,也為以後與以太坊跨鏈轉接提供了兼容性

獵戶座在虛擬機和區塊鏈的其他部分之間提供了一個環境無關接口。這是通過統一的獵戶座API(應用程式編程接口)完成的,該API使區塊鏈軟體的各個組件可以通過一種通用語言彼此「對話」,而無需學習任何新技巧。使用獵戶座,其他軟體組件無需針對特殊情況、異常、或者別的奇怪代碼進行編程(程式設計師將其稱為「簡陋代碼」、「義大利麵條代碼」或者其他NSFW術語)。相反,獵戶座提供了一個穩定、安全、有前瞻性的平臺,用於集成各種虛擬機,而無需接觸任何VM代碼。

在獵戶座中,允許執行智能合約代碼。合約狀態或內存存儲在智能合約地址中。可以將這種存儲視為位於智能合約地址的無限長度的數據結構數組。存儲機制確保存儲位置沒有衝突,並遵循一組規則。使用這些規則,我們可以解碼任何合約的狀態。解碼存儲在映射中的數據需要知道所使用的密鑰。

聲明:本文由入駐金色財經的作者撰寫,觀點僅代表作者本人,絕不代表金色財經贊同其觀點或證實其描述。

提示:投資有風險,入市須謹慎。本資訊不作為投資理財建議。

相關焦點

  • 以太坊雲算力挖礦原理
    如果說比特幣開啟了人們認識區塊鏈技術的大門,這是區塊鏈1.0的時代,那麼以太坊就開啟了區塊鏈2.0的時代。那麼它究竟是什麼?以太坊是區塊鏈的一個基礎設施,他是一個開源的有智能合約功能的公共的區塊鏈平臺,通過ETH提供去中心化的虛擬機來處理點對點合約,簡單來說就是可編程的區塊鏈。它並不是給用戶一系列的預先設定好的操作,例如比特幣。而是允許用戶按照自己的意願創建複雜的操作,這樣一來,它就可以作為多種類型去中心化區塊鏈應用的平臺。包括加密貨幣在內但並不僅限於此。生動舉例說明一下。
  • 以太坊2.0合約存入ETH突破200萬枚|以太坊2.0|以太坊|波卡|filecoin
    本周技術周刊包含以太坊、波卡、Filecoin、BSN網絡的技術類新聞。以太坊網絡Sigma Prime發布以太坊2.0客戶端Lighthouse v1.0.5版本據官方消息,以太坊2.0客戶端Lighthouse開發團隊Sigma Prime 發布Lighthouse v1.0.5版本。
  • 火星獨家|2個關鍵點讀懂從以太坊1.0到2.0的大遷徙
    以太坊的故事都是圍繞技術和金融各一半展開講述,隨著以太坊2.0遷移的臨近,考慮技術和經濟方面的挑戰變得至關重要,它們需要被給予同等的重視。代幣遷移代幣遷移從技術角度來看,單向橋接與雙向橋接的對比已經得到了充分表達和展示。
  • 一文了解以太坊姊妹鏈xDai的生態系統
    xDai很仰慕以太坊這位大姐姐,並且非常依賴她,但她也認為自己的姐姐有時會有點乏味,相比之下,xDai更叛逆和有趣,她是一個藝術家,並且擁有自由精神。儘管她們表面上存在差異,但在實現共同的家庭目標時,xDai與以太坊相處得很好,她們彼此互相稱讚,比如建立一個去中心化的結算網絡、開放的金融等等。
  • 初創公司Upvest獲101萬美元投資,將進一步開發以太坊gas費用預測工具
    小編:記得關注哦來源:火星一線文 | 梁雨山融資完成後,該公司計劃進一步開發以太坊gas費用預測工具。gas是以太坊虛擬機(EVM)內部的Token,以太坊虛擬機用gas來對交易打包、智能合約執行等操作收取費用,即執行每筆交易都需要消耗一定數量的gas,這些費用將分配給驗證交易的礦工。Upvest表示,預估每筆交易的gas費用面臨成本與風險方面的問題,即支付費用過高增加成本,過低則可能導致交易驗證延遲。
  • 認識冬季星空——獵戶座的「亮點」
    在上一期的節目中,我們簡單認識了冬季星座的代表星座——獵戶座,聆聽了獵戶座「英雄救美」的故事。今天我們一起來學習一下,在獵戶座中,有哪些「亮點」?在上一期我們講過,獵戶座中有三顆亮星,整齊地排布在獵戶座的中央。
  • [中文] 以太坊(Ethereum )白皮書
    消息和交易以太坊的消息在某種程度上類似於比特幣的交易,但是兩者之間存在三點重要的不同。第一,以太坊的消息可以由外部實體或者合約創建,然而比特幣的交易只能從外部創建。第二,以太坊消息可以選擇包含數據。第三,如果以太坊消息的接受者是合約帳戶,可以選擇進行回應,這意味著以太坊消息也包含函數概念。
  • 以太坊外無Defi?EOS:我有
    金融領域,才是區塊鏈能顛覆之地。然而,可供枚舉的 MakerDAO、Dharma、dydx、Compound 等 Defi 項目,均建立在以太坊上。經歷 2018 年如火如荼的發展之後,如今已在以太坊上衍生出包括借貸、預測、信託等去中心化金融生態。其中 MakerDAO 的市場份額佔比最大。
  • SERO正式發布對以太坊的跨鏈功能
    著名的基於非交互式零知識證明(NIZK)並支持圖靈完備智能合約的隱私保護公鏈 SERO,在2021年1月8日正式發布了 SERO 公鏈到以太坊公鏈的資產跨鏈轉移的功能。SERO 跨鏈技術作為 SERO2.0 生態的先行部分,通過和 EMIT Wallet 合作的方式展現給 SERO 社區。該技術基於聚合籤名以及公證人技術,實現了以太坊和 SERO 公鏈之間的資產跨鏈轉移功能。同時,CoralSwap對這類跨鏈資產的交易支持,可以作為一種非常低Gas的Swap平臺,替代以太坊上的其它同類產品。
  • 以太坊2.0上線後對礦工有什麼深遠影響?
    如今以太坊2.0地址的質押數已超過85萬枚,創世區塊出現之前,還有著「4G顯卡停挖」這樣一個事件,於是便出現了「以太坊還能挖多久」這樣一個熱議話題,雖然現在PoW鏈上的挖礦照舊,但礦工們該如何布局呢?但是對於這個問題始終沒有一個明確的答案,Eth1是礦工一直參與的PoW鏈,Eth2則是PoS共識的以太坊2.0。Eth1與Eth2合併之後,Eth1的PoW挖礦即停止,整個以太坊網絡完成共識升級。正如大家頻繁聽到的,Eth2分為階段0(信標鏈,一條PoS主鏈)、階段1(數據的分片,64條分片鏈)、階段2(交易處理的分片)。預期發生兩個鏈合併的時間在階段1.5。
  • 一文讀懂以太坊擴容方案的投資機會 |幣小寶區塊鏈...
    layer2 是一個為提升以太坊網絡(layer1)性能的整體解決方案,眾所周知,由於以太坊網絡經常出現擁堵情況,並且手續費奇高不下,導致許多大規模應用無法在以太坊網絡實現。例如今年的Defi浪潮中,動輒手續費高達數百美元,非常不利於項目推廣;此外,受限於以太坊網絡的TPS,導致去中心化交易所難以普及,甚至衍生品等業務無法進一步擴張。
  • 快問快答,以太坊技術崗位面試終極必備題
    1 ETH =10魏問:以太坊的平均阻擋時間是多少?答:14秒問:以太坊的平均街區大小是多少?答:一個節點本質上是一臺連接到網絡的計算機,它處理事務。問:你熟悉多少個以太坊網絡?答:有三種類型的網絡 - 實時網絡(主),測試網絡(如Ropsten和Rinkeby)和專用網絡。
  • 取代以太坊、爭鋒Cosmos, Polkadot 的真實面貌到底是什麼?
    圖片來源圖蟲:已授站長之家使用聲明:本文由站長之家內容合作夥伴 36 氪戰略合作區塊鏈媒體「Odaily星球日報」 授權發布,作者:蘆薈。在創建Polkadot 之前,Gavin Wood 曾有過兩個知名身份:前以太坊的 CTO 及聯合創始人,其後是以太坊客戶端 Parity 的創始人。
  • 以「狀態」 視角理解以太坊及其未來
    而 「狀態」 視角,作為理解以太坊本身的視角,正好能幫助我們廓清這些方案的設計,並揭示我們的所得和所失。本文將從解釋 「狀態」 的含義開始,揭示以太坊的終極之矛和阿喀琉斯之踵,然後探討各種改進方向。「富狀態性」 是以太坊智能合約 「可組合性」 的來源,但也是以太坊網絡最大的弱點。由此,我們可以見出現在常被人提起的哪些方案會影響 「可組合性」,哪些 「可擴展性」 的意義更明顯。
  • 以太坊的「黑暗森林」:混沌與生機
    本文將以太坊網絡比作「黑暗森林」,其與生俱來的無需許可,透明開放的性之下也暗湧著混沌與危機。而我們作為社區的一員應該作何態度?又該如何發揮其正面效應?雖然以太坊無需許可的特性需要付出一定代價,但卻十分必要,我們也能從中受益。摘要以太坊在技術層、社區層以及治理層都是無需許可的——這意味著任何人都有權訪問。
  • 比特幣、以太坊、區塊鏈、代幣、ICO,你需要知道的一切都在這了
    ……數百萬美元的代幣銷售是常見的事情,新聞媒體頭條討論了關於以太坊,比特幣,ICO,代幣,硬分叉和其他技術主題。也許,去中心化應用在興起以太坊是在2015年推出的一種加密貨幣,基於區塊鏈技術構建。 它被設計為比比特幣區塊鏈更廣泛的協議,而不僅僅是創建和記錄區塊鏈網絡中的原生代幣。
  • 以太坊2.0創世,在「寧靜」中沸騰
    相比於前者被市場以「機構牛「和「灰度牛」來做解讀的「明褒暗酸」;後者雖然只是以太坊2.0規劃中的很小一步,但其代表了以太坊正式走向了權益證明(PoS)和擴容的主線劇情。時光倒回至2015年,以太坊社區以前沿(Frontier)、家園(Homestead)、大都會(Metropolis)和寧靜(Serenity)這四個充滿遐想的詞來標記以太坊未來的技術階段。
  • CellETF:以太坊的優點和缺點分別是什麼?
    以太坊不僅僅是交易的加密貨幣。它的真正價值在於它的目的。以太坊的目的是讓擁有以太坊的人能夠使用由數千個節點驅動的分布式世界計算機。當然,因為每個微小的語句都必須由網絡中的每個節點執行,所以去中心化的分布式計算機運行緩慢且成本高昂。但是這裡的慢參照系是什麼呢?
  • 波卡和以太坊2.0的中間帶機會:從資產跨鏈到應用跨鏈
    公鏈依然是去中心化理想的重要抽象公鏈向來都是建立在一個個極為龐大的敘事上,這些宏偉夢想在區塊鏈技術剛剛走紅的幾年間被屢次提起,尤其是 2018 年前後,你會發現,大多公鏈項目的團隊會打出「價值網際網路」、「完全去中心化的開源網絡」等等充滿抱負的口號,但夢想和現實出現了明顯的不匹配,而從現階段的篩選結果來看,佔據行業注意力的當屬更加實際的波卡和 ETH2.0 了。
  • 以太坊本次幣市牛市行情的發動機
    以太坊的概念    以太坊是一個計算機網絡,以一個去中心化平臺的形式運行,不需要任何計算功能。它為以太坊開發者提供一個編寫代碼並創建全球可訪問的dApps(去中心化式應用)的平臺。簡單地說,它是一個分布式的公鏈網絡,是僅次於比特幣的第二大加密貨幣。