以太坊(ETH)技術(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ǔ)樹的根節(jié)點(diǎn)。賬號(hào)內(nèi)的數(shù)據(jù)會(huì)以Merkle Patricia樹的形式存儲(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è)在黃皮書中并沒(méi)有明確的定義,由此說(shuō)明根據(jù)以太坊的技術(shù)黃皮書,大家可以實(shí)現(xiàn)自己的以太坊公鏈,曾經(jīng)有位大牛就是用C++實(shí)現(xiàn)了一個(gè)新版本的以太坊全節(jié)點(diǎn)代碼。以太坊的黃皮書只是一個(gè)架構(gòu)設(shè)計(jì),具體的實(shí)現(xiàn)語(yǔ)言只是技術(shù)選型而已。

我們今天只概括性的講一下以太坊的狀態(tài)遷移函數(shù)和狀態(tài)表達(dá)函數(shù),里面的很多子函數(shù)的講解,留在下一節(jié)詳細(xì)展開,你會(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ì)開發(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)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 以太坊(Ethereum ):下一代智能合約和去中心化應(yīng)用平臺(tái) 翻譯:巨蟹 、少平 譯者注:中文讀者可以到以太坊愛(ài)...
    車圣閱讀 3,928評(píng)論 1 7
  • 【中文版】以太坊白皮書 翻譯:少平、 Seven當(dāng)中本聰在 2009 年 1 月啟動(dòng)比特幣區(qū)塊鏈時(shí),他同時(shí)向世界引...
    __Seven__閱讀 4,453評(píng)論 0 10
  • 區(qū)塊鏈技術(shù)的典型應(yīng)用 1 偉大的開拓者-比特幣 1) 比特幣產(chǎn)生 2008年,中本聰(Satoshi Na...
    yrm23閱讀 6,680評(píng)論 0 23
  • 文/我有一顆小虎牙 初一的時(shí)候,我和小惠都是班長(zhǎng),只不過(guò)我是一班班長(zhǎng),她是十一班班長(zhǎng)。但我從不認(rèn)為我和她是同一個(gè)世...
    端端姐姐閱讀 1,483評(píng)論 3 8
  • 青春年華,期待幾多:江南煙雨如畫,風(fēng)月情濃如茶。 我能想象的 無(wú)非 風(fēng)荷依依 ,水蓮花的嬌羞,至于遠(yuǎn)觀還是靜...
    文馨雕蟲閱讀 309評(píng)論 0 1

友情鏈接更多精彩內(nèi)容