以太坊(ETH)技術(shù)黃皮書(shū)學(xué)習(xí)筆記1:全局狀態(tài)概述

李萬(wàn)勝聊區(qū)塊鏈2018-04-26 20:38:20

以太坊概述:

整個(gè)以太坊其實(shí)就是一個(gè)狀態(tài)機(jī)挖诸,每一筆的轉(zhuǎn)賬發(fā)生斧吐,意味著某一個(gè)賬號(hào)發(fā)生了變化召锈,也意味著整個(gè)以太坊的狀態(tài)放生了變化渐扮。

上圖中公式1表示一個(gè)交易T,在當(dāng)前時(shí)刻t的狀態(tài)σ的情況下,通過(guò)交易狀態(tài)變更函數(shù)Υ將狀態(tài)轉(zhuǎn)向了一個(gè)新的狀態(tài)柑贞,這里面需要注意的是這個(gè)狀態(tài)的變更只有在交易T被打包到區(qū)塊中,并被全網(wǎng)共識(shí)之后孔厉,才會(huì)改變整個(gè)以太坊的狀態(tài)拯钻。

公式2表示在某一時(shí)刻t,以太坊將一個(gè)區(qū)塊B撰豺,通過(guò)區(qū)塊狀態(tài)變更函數(shù)Π將以太坊的狀態(tài)轉(zhuǎn)向了一個(gè)新的狀態(tài)粪般。

公式3表示區(qū)塊內(nèi)數(shù)據(jù)實(shí)質(zhì)就是將多個(gè)交易T0,T1…打包的數(shù)據(jù)

公式4表示,一個(gè)以太坊的全局狀態(tài)變更郑趁,就是先根據(jù)當(dāng)前的區(qū)塊的多個(gè)交易改變以太坊的塊內(nèi)狀態(tài)刊驴,然后把狀態(tài)變更施加在本區(qū)塊之前的所有區(qū)塊上,然后形成當(dāng)前的最終狀態(tài)寡润。

因此以太坊區(qū)塊鏈?zhǔn)且粋€(gè)嚴(yán)謹(jǐn)?shù)目梢杂脭?shù)公式表達(dá)的狀態(tài)機(jī)。在狀態(tài)的遷移過(guò)程中舅柜,執(zhí)行了曠工獎(jiǎng)勵(lì)梭纹,token轉(zhuǎn)賬,智能合約指令等任務(wù)致份。

全局狀態(tài):整個(gè)以太坊的全局狀態(tài)可以通過(guò)公式5來(lái)描述变抽,公式5的意思是當(dāng)前的全局狀態(tài)是一個(gè)所有賬號(hào)與賬號(hào)狀態(tài)的對(duì)應(yīng)關(guān)系的集合,并且賬號(hào)狀態(tài)不能是空集合。公式6中就是對(duì)單個(gè)賬號(hào)與賬號(hào)狀態(tài)的對(duì)應(yīng)關(guān)系的描述绍载,其中對(duì)應(yīng)關(guān)系的key是賬號(hào)的KEC

hash值诡宗,20個(gè)字節(jié),對(duì)應(yīng)關(guān)系的value是一個(gè)集合的RLP序列化击儡。

賬號(hào)狀態(tài)是4個(gè)元素的集合:

nonce:是一個(gè)標(biāo)量塔沃,表示從這個(gè)賬號(hào)轉(zhuǎn)出的交易的個(gè)數(shù)或者智能合約創(chuàng)建個(gè)數(shù),表達(dá)式為公式7

balance:以Wei為單位的賬號(hào)的余額阳谍,表達(dá)式為公式8

storageRoot:存儲(chǔ)樹(shù)的根節(jié)點(diǎn)蛀柴。賬號(hào)內(nèi)的數(shù)據(jù)會(huì)以Merkle Patricia樹(shù)的形式存儲(chǔ)。表達(dá)式為公式10

codeHash:本賬號(hào)EVM 代碼的hash值矫夯,這個(gè)代碼創(chuàng)建之后就無(wú)法修改鸽疾,當(dāng)本賬號(hào)收到一個(gè)消息之后會(huì)執(zhí)行該代碼。代碼存儲(chǔ)在狀態(tài)機(jī)數(shù)據(jù)庫(kù)中训貌,codeHash就是這個(gè)代碼在數(shù)據(jù)庫(kù)中的索引制肮。

賬號(hào)狀態(tài)的代碼表示如下:我選用的是go語(yǔ)言版本的以太坊的源碼,有興趣的同學(xué)可以下載源碼研究一下递沪。

你會(huì)發(fā)現(xiàn)以太坊使用stateObject這個(gè)結(jié)構(gòu)體來(lái)表示賬號(hào)的狀態(tài)實(shí)體豺鼻,這個(gè)在黃皮書(shū)中并沒(méi)有明確的定義,由此說(shuō)明根據(jù)以太坊的技術(shù)黃皮書(shū)区拳,大家可以實(shí)現(xiàn)自己的以太坊公鏈拘领,曾經(jīng)有位大牛就是用C++實(shí)現(xiàn)了一個(gè)新版本的以太坊全節(jié)點(diǎn)代碼。以太坊的黃皮書(shū)只是一個(gè)架構(gòu)設(shè)計(jì)樱调,具體的實(shí)現(xiàn)語(yǔ)言只是技術(shù)選型而已约素。

我們今天只概括性的講一下以太坊的狀態(tài)遷移函數(shù)和狀態(tài)表達(dá)函數(shù),里面的很多子函數(shù)的講解笆凌,留在下一節(jié)詳細(xì)展開(kāi)圣猎,你會(huì)發(fā)現(xiàn)最后以太坊的狀態(tài)表達(dá)和狀態(tài)變遷可以細(xì)化到一個(gè)個(gè)數(shù)學(xué)公式。而大家可以使用不同的代碼乞而,根據(jù)數(shù)學(xué)公式來(lái)實(shí)現(xiàn)屬于自己的區(qū)塊鏈公鏈送悔。我們當(dāng)前正在設(shè)計(jì)開(kāi)發(fā)的公鏈,就是將以太坊的狀態(tài)機(jī)區(qū)塊鏈和IPFS這樣的存儲(chǔ)協(xié)議組合起來(lái)爪模,解決當(dāng)前公鏈無(wú)存儲(chǔ)能力的問(wèn)題欠啤,同時(shí)將公鏈應(yīng)用于細(xì)分的領(lǐng)域。

好了屋灌,下一節(jié)我們將講解公式中6中使用到的RLP封裝函數(shù)洁段,至于REC這個(gè)hash函數(shù),屬于一個(gè)比較基礎(chǔ)的知識(shí)共郭,不僅僅是以太坊獨(dú)有的函數(shù)祠丝,因此大家請(qǐng)自行檢索材料疾呻,應(yīng)該會(huì)有很多相關(guān)的資料。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末写半,一起剝皮案震驚了整個(gè)濱河市岸蜗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌叠蝇,老刑警劉巖璃岳,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蟆肆,居然都是意外死亡矾睦,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門炎功,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)枚冗,“玉大人,你說(shuō)我怎么就攤上這事蛇损×尬拢” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵淤齐,是天一觀的道長(zhǎng)股囊。 經(jīng)常有香客問(wèn)我,道長(zhǎng)更啄,這世上最難降的妖魔是什么稚疹? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮祭务,結(jié)果婚禮上内狗,老公的妹妹穿的比我還像新娘。我一直安慰自己义锥,他們只是感情好柳沙,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著拌倍,像睡著了一般赂鲤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上柱恤,一...
    開(kāi)封第一講書(shū)人閱讀 52,156評(píng)論 1 308
  • 那天数初,我揣著相機(jī)與錄音,去河邊找鬼梗顺。 笑死妙真,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的荚守。 我是一名探鬼主播珍德,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼矗漾!你這毒婦竟也來(lái)了锈候?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤敞贡,失蹤者是張志新(化名)和其女友劉穎泵琳,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體誊役,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡获列,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蛔垢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片击孩。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖鹏漆,靈堂內(nèi)的尸體忽然破棺而出巩梢,到底是詐尸還是另有隱情,我是刑警寧澤艺玲,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布括蝠,位于F島的核電站,受9級(jí)特大地震影響饭聚,放射性物質(zhì)發(fā)生泄漏忌警。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一秒梳、第九天 我趴在偏房一處隱蔽的房頂上張望法绵。 院中可真熱鬧,春花似錦端幼、人聲如沸礼烈。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)此熬。三九已至,卻和暖如春滑进,著一層夾襖步出監(jiān)牢的瞬間犀忱,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工扶关, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留阴汇,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓节槐,卻偏偏與公主長(zhǎng)得像搀庶,于是被迫代替她去往敵國(guó)和親拐纱。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

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