以太坊技術(shù)黃皮書(shū)學(xué)習(xí)筆記18:系統(tǒng)運(yùn)行模型1

系統(tǒng)的運(yùn)行模型說(shuō)明如何通過(guò)字節(jié)碼的指令和簡(jiǎn)單的環(huán)境數(shù)據(jù)來(lái)修改系統(tǒng)的狀態(tài),我們知道以太坊是一個(gè)大型的狀態(tài)機(jī)犀忱,運(yùn)行模式就是通過(guò)虛擬狀態(tài)機(jī)的模式來(lái)說(shuō)明這個(gè)狀態(tài)遷移的過(guò)程,這個(gè)虛擬狀態(tài)機(jī)也被稱作以太坊虛擬機(jī)(EVM)。這個(gè)虛擬機(jī)是偽圖靈完備的虛擬機(jī)女责,因?yàn)橐蕴粏为?dú)設(shè)置了停機(jī)機(jī)制耳鸯,如果gas消耗完湿蛔,虛擬機(jī)就會(huì)停止運(yùn)行。

虛擬機(jī)簡(jiǎn)介

EVM是個(gè)棧式的架構(gòu)县爬,其一個(gè)字的大小事256比特位煌集,之所以選擇這樣的大小,是為了適應(yīng)Keccak-256 hash算法和橢圓曲線函數(shù)計(jì)算捌省。其內(nèi)存是一個(gè)以字為尋址單位的字節(jié)序數(shù)組苫纤,棧可以最多容納1024個(gè)字纲缓。除了內(nèi)存的設(shè)計(jì)卷拘,虛擬機(jī)設(shè)計(jì)了存儲(chǔ),他與內(nèi)存類(lèi)似祝高,只是他是一個(gè)以字為尋址方式的字的數(shù)組栗弟,而不是字節(jié)數(shù)組,同時(shí)內(nèi)存的數(shù)據(jù)是可以擦除的工闺,存儲(chǔ)的數(shù)據(jù)是不可擦除的乍赫。所有的內(nèi)存數(shù)據(jù)和存儲(chǔ)數(shù)組在初始化為0瓣蛀。

虛擬機(jī)與馮諾依曼架構(gòu)的計(jì)算機(jī)不同,他沒(méi)有將可執(zhí)行程序放在磁盤(pán)或者內(nèi)存雷厂,而是將可執(zhí)行代碼放在了虛擬的ROM中惋增,并且只有部分質(zhì)量可以修改這段代碼。

虛擬機(jī)可以因?yàn)槎喾N異常原因停止運(yùn)行改鲫,包括棧擊穿異常诈皿,gas異常耗盡,指令異常像棘,當(dāng)這些異常發(fā)生之后稽亏,狀態(tài)機(jī)機(jī)會(huì)遷移到異常停機(jī)狀態(tài),并且將錯(cuò)誤上報(bào)給執(zhí)行代碼的代理缕题,比如交易或者消息調(diào)用等截歉,并且分別進(jìn)行下一步處理。在前面的章節(jié)中我們已經(jīng)定義了交易和消息調(diào)用在虛擬機(jī)代碼指令發(fā)生異常的情況下烟零,狀態(tài)遷移函數(shù)是如何處理的怎披。

費(fèi)用概覽

虛擬機(jī)的運(yùn)行費(fèi)用是通過(guò)gas的方式來(lái)標(biāo)定的,在執(zhí)行一個(gè)操作之前有3種前置費(fèi)用瓶摆,第一種是計(jì)算操作本身需要消耗的gas凉逛,這個(gè)在前面的幾節(jié)中講解過(guò),第二種是消息調(diào)用和智能合約的創(chuàng)建指令需要消耗gas群井,第三種是因?yàn)閮?nèi)存的消耗需要支付的費(fèi)用状飞。

內(nèi)存的消耗與整個(gè)程序消耗的內(nèi)存除以32字節(jié)的倍數(shù)成正比,如果一個(gè)內(nèi)存大小對(duì)32字節(jié)不能乘除則去上界作為衡量費(fèi)用的標(biāo)準(zhǔn)书斜。

存儲(chǔ)的費(fèi)用計(jì)算有點(diǎn)特殊诬辈,如果一個(gè)指令是旨在清除他在存儲(chǔ)單元上的存儲(chǔ)空間,不光這樣的指令不收取費(fèi)用荐吉,相反會(huì)獲得一定的費(fèi)用獎(jiǎng)勵(lì)焙糟。所有虛擬機(jī)消耗gas的公式在后面的章節(jié)中會(huì)詳細(xì)的講解.

運(yùn)行的環(huán)境變量

我們知道除了全局狀態(tài)和執(zhí)行需要消耗的gas之外,任何程序運(yùn)行都需要與宿主機(jī)的設(shè)備環(huán)境變量交互才可以在具體的機(jī)器上執(zhí)行样屠,這里的機(jī)器是個(gè)虛擬機(jī)穿撮,其環(huán)境變量相對(duì)簡(jiǎn)單:

公式1是對(duì)環(huán)境變量的定義,公式2表示虛擬機(jī)需要執(zhí)行的代碼的所有者賬戶對(duì)應(yīng)的地址痪欲,公式3表示發(fā)起此次事務(wù)的發(fā)送者的地址悦穿,公式4表示代碼運(yùn)行是需要的數(shù)據(jù),公式5表示gas的價(jià)格业踢,公式6表示出發(fā)次代碼執(zhí)行的賬戶的地址栗柒,對(duì)于交易就是轉(zhuǎn)賬人地址,公式7代碼執(zhí)行涉及的價(jià)值轉(zhuǎn)移額度知举,如果是一筆轉(zhuǎn)賬交易瞬沦,那么這個(gè)值表示轉(zhuǎn)賬額度太伊,公式8表示虛擬機(jī)需要執(zhí)行的代碼的字節(jié)序,公式9表示當(dāng)前區(qū)塊的區(qū)塊頭逛钻,公式10表示當(dāng)前虛擬機(jī)執(zhí)行棧深度公式11表示是否允許修改全局狀態(tài)機(jī)的狀態(tài)僚焦。

在整個(gè)運(yùn)行模型的定義中,我們定義一種狀態(tài)遷移的函數(shù)绣的,這個(gè)函數(shù)我們前一節(jié)剛剛講完,他的作用就是修改狀態(tài)欲账,記錄最新的gas值并產(chǎn)生輸出結(jié)果屡江,公式13表示累計(jì)的子狀態(tài)的定義,這個(gè)在前面的章節(jié)中已經(jīng)給出過(guò)詳細(xì)的解釋赛不。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末惩嘉,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子踢故,更是在濱河造成了極大的恐慌文黎,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件殿较,死亡現(xiàn)場(chǎng)離奇詭異耸峭,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)淋纲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)劳闹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人洽瞬,你說(shuō)我怎么就攤上這事本涕。” “怎么了伙窃?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵菩颖,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我为障,道長(zhǎng)晦闰,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任鳍怨,我火速辦了婚禮鹅髓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘京景。我一直安慰自己窿冯,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布确徙。 她就那樣靜靜地躺著醒串,像睡著了一般执桌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上芜赌,一...
    開(kāi)封第一講書(shū)人閱讀 49,079評(píng)論 1 285
  • 那天仰挣,我揣著相機(jī)與錄音,去河邊找鬼缠沈。 笑死膘壶,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的洲愤。 我是一名探鬼主播颓芭,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼柬赐!你這毒婦竟也來(lái)了亡问?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤肛宋,失蹤者是張志新(化名)和其女友劉穎州藕,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體酝陈,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡床玻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了沉帮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片笨枯。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖遇西,靈堂內(nèi)的尸體忽然破棺而出馅精,到底是詐尸還是另有隱情,我是刑警寧澤粱檀,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布洲敢,位于F島的核電站,受9級(jí)特大地震影響茄蚯,放射性物質(zhì)發(fā)生泄漏压彭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一渗常、第九天 我趴在偏房一處隱蔽的房頂上張望壮不。 院中可真熱鬧,春花似錦皱碘、人聲如沸询一。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)健蕊。三九已至菱阵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缩功,已是汗流浹背晴及。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嫡锌,地道東北人虑稼。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像势木,于是被迫代替她去往敵國(guó)和親蛛倦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容