以太坊技術(shù)黃皮書學(xué)習(xí)筆記22:生成區(qū)塊2

公式31表示對(duì)于第n個(gè)全局狀態(tài),其處理過程是在前一個(gè)狀態(tài)的基礎(chǔ)上,對(duì)最新區(qū)塊的交易進(jìn)行狀態(tài)遷移,得到新的全局狀態(tài),公式32表示累計(jì)的gas使用的計(jì)算公式,公式37表示交易日志的產(chǎn)生公式,公式38表示交易狀態(tài)碼產(chǎn)生的公式,我認(rèn)為這個(gè)公式的表達(dá)是有問題的,交易的狀態(tài)碼是無(wú)需與歷史交易狀態(tài)碼關(guān)聯(lián)的,因?yàn)槭〉慕灰撞粦?yīng)該進(jìn)入?yún)^(qū)塊并且用于計(jì)算。公式39表示最終的狀態(tài)是對(duì)當(dāng)前的交易順利完成狀態(tài)遷移之后,通過與當(dāng)前區(qū)塊的鏈接和運(yùn)算得到最終有效的區(qū)塊鏈全局狀態(tài)。

公式41是通過pow函數(shù)計(jì)算得到兩個(gè)值,一個(gè)是mixHash,另一個(gè)是滿足不等式的n,這個(gè)n是用來(lái)檢驗(yàn)當(dāng)前區(qū)塊生成者有效性的標(biāo)志。

變量表:

公式42表示計(jì)算當(dāng)前世紀(jì)的方式,根據(jù)上表中,一個(gè)世紀(jì)是30000個(gè)區(qū)塊鏈,因此根據(jù)當(dāng)前區(qū)塊的高度就可以計(jì)算出當(dāng)前的世紀(jì)。

公式43根據(jù)當(dāng)前的世紀(jì)數(shù),初始狀態(tài)的數(shù)據(jù)的大小,計(jì)算當(dāng)前區(qū)塊數(shù)據(jù)的大小,公式44根據(jù)當(dāng)前世紀(jì)數(shù),計(jì)算當(dāng)前緩存數(shù)據(jù)的大小。

公式44表示,如果能夠整除,則計(jì)算結(jié)束,否則多減去一個(gè)調(diào)節(jié)參數(shù),這樣做的目的是為了使得數(shù)據(jù)的大小和緩存的大小都成為素?cái)?shù)。

Cache的數(shù)據(jù)一般用于輕客戶端使用,data一般是礦機(jī)和全節(jié)點(diǎn)客戶端使用。

公式46,47表示一個(gè)種子hash的計(jì)算方式,如果是創(chuàng)世紀(jì),則,這個(gè)seed的函數(shù)值是0的KEC值,其中公式50表示32字節(jié)的0序列。公式49表示,隨著時(shí)間的推移,每個(gè)世紀(jì)的seed的hash值都會(huì)根據(jù)前一個(gè)seed的hash做KEC運(yùn)算。公式51到55是為了定義cache的初始數(shù)據(jù)公式56(C')的生成方式,首先計(jì)算每個(gè)64字節(jié)的序列的內(nèi)容如公式52和53,然后把他們作為cache初始數(shù)據(jù)的一項(xiàng),組成一個(gè)新的序列。

公式57是根據(jù)初始cache的數(shù)據(jù)內(nèi)容,做Jcacherounds輪的RandMemoHash,公式58定義了多輪hash的數(shù)學(xué)實(shí)現(xiàn)方式。公式62是對(duì)分公式的詳細(xì)定義,其中n就是公式55計(jì)算得來(lái)的個(gè)數(shù);公式63是對(duì)62中分函數(shù)的定義,需要注意的是這里用到了XOR運(yùn)算,即異或運(yùn)算。公式64是對(duì)63中用到的x的變形函數(shù)的定義,對(duì)于比當(dāng)前下表小的元素,再將原數(shù)據(jù)內(nèi)容應(yīng)用一次公式63.當(dāng)著西公式運(yùn)行完成,緩存Cache的數(shù)據(jù)就生成了。

公式65定義了全節(jié)點(diǎn)數(shù)據(jù)的生成方式,對(duì)于每一個(gè)元素使用公式67來(lái)生成,整個(gè)數(shù)據(jù)生成的公式都是標(biāo)準(zhǔn)的數(shù)學(xué)引用,沒有特別需要說明的地方,里面的調(diào)用時(shí)候,每一個(gè)參數(shù)的含義要么非常明確,要么就是對(duì)另一個(gè)函數(shù)的調(diào)用。公式66表示對(duì)y進(jìn)行異或運(yùn)算之后拼接在x的后面;公式68根據(jù)P值的不同,將公式分為2中情況,一種是遞歸調(diào)用如公式69,另一種是公式71對(duì)于p=0的情況使用KEC運(yùn)算,否則運(yùn)用公式66,并且其中第二個(gè)參數(shù)還進(jìn)行了遞歸調(diào)用。

公式74給出了pow的算法具體細(xì)節(jié),公式75,76,77給出了在POW中用到的公式實(shí)現(xiàn)方式,這些公式已經(jīng)是具體的數(shù)學(xué)公式,KEC,RLP這些公式在較早的章節(jié)中已經(jīng)給出詳細(xì)定義,公式77指的是講數(shù)據(jù)倒敘,公式76里面的加號(hào)表示將字節(jié)拼接起來(lái)。

公式78給出了變量的計(jì)算方式,公式79到84給出了詳細(xì)的技術(shù)細(xì)節(jié),這些數(shù)學(xué)函數(shù)的定義相對(duì)清晰,沒有需要特別解釋的地方。這里需要提醒的就是兩個(gè)地方,第一個(gè)是POW的第一個(gè)參數(shù)指的是沒有nonce和mixhash的情況下的區(qū)塊鏈頭信息的hash值,LH函數(shù)在之前的章節(jié)已經(jīng)給出定義,指的是區(qū)塊鏈頭各個(gè)元素的組合:

LH(H) ≡ ( Hp,Ho,Hc,Hr,Ht,He,Hb,Hd, Hi,Hl,Hg,Hs,Hx,Hm,Hn )

至此關(guān)于以太坊的技術(shù)解釋都已經(jīng)結(jié)束,接下來(lái)就需要以此技術(shù)為基礎(chǔ),結(jié)合IPFS制作一個(gè)簡(jiǎn)易可用的測(cè)試網(wǎng)絡(luò),并且會(huì)穿插的時(shí)間講解橢圓函數(shù)和Storj的相關(guān)知識(shí),謝謝大家關(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)容

  • 第2章 基本語(yǔ)法 2.1 概述 基本句法和變量 語(yǔ)句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,551評(píng)論 0 13
  • 區(qū)塊最后生成需要檢查很多部分的數(shù)據(jù)有效性,然后給區(qū)塊增加算力證明數(shù)據(jù),最后廣播到全網(wǎng),被大家認(rèn)可之后成為各個(gè)賬本的...
    西二旗李老師閱讀 591評(píng)論 0 2
  • 寫在篇頭 本文是對(duì)以太坊的黃皮書的解析,并參照go-ethereum中的實(shí)現(xiàn),將相應(yīng)的代碼也列了出來(lái)。黃皮書中使用...
    yuan1028閱讀 7,748評(píng)論 4 17
  • 公司有機(jī)肥廠院里有一塊閑地,今年春天承包給了有機(jī)肥廠負(fù)責(zé)人趙京文,規(guī)定土地不收租金,但要保證供應(yīng)公司人員有西瓜...
    雪域紅梅閱讀 296評(píng)論 0 0
  • 身處于燈紅酒綠的城市生活中,對(duì)愛情我早已沒有了當(dāng)初的那么向往,有一天有人問我你的愛情觀是什么?我笑而不語(yǔ)!時(shí)間的平...
    音泉閱讀 431評(píng)論 0 0

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