Ethereum以太坊DAG

DAG代表定向非循環(huán)圖。在Ethereum中奖年,每個epoch都會使用Dagger-Hashimoto算法,結(jié)合Vitalik Buterin的Dagger算法Thaddeus Dryja的Hashimoto算法烙荷,創(chuàng)建DAG 系谐。

DAG定義的整理:
Ethereum yellow paper中有提到

維基百科上
image.png

在數(shù)學(xué)和計算機科學(xué)中,有向無環(huán)圖(DAG)是一個沒有定向循環(huán)的有限有向圖魂奥。也就是說菠剩,它由有限的多個頂點和邊組成,每個邊從一個頂點指向另一個頂點耻煤,這樣就沒有辦法從任何頂點v開始具壮,沿著一個連貫的邊緣序列,最終循環(huán)回到v 哈蝇。等價地棺妓,DAG是有向圖,其具有拓撲排序炮赦,頂點序列怜跑,使得每個邊緣從序列中的較早到較晚被引導(dǎo)。

在 [github上以太坊項目主頁]中說明(https://github.com/ethereum/wiki/wiki/Ethash-DAG):
...一個巨大的數(shù)據(jù)集稱為DAG ...
Ethash算法期望DAG是uint32s(4字節(jié)無符號整數(shù))的二維數(shù)組吠勘,尺寸(n×16)性芬,其中n是一個很大的數(shù)字。(n從16777186開始)在幻數(shù)之后剧防,DAG的行應(yīng)該順序地寫入文件植锉,在行之間沒有分隔符,每個unint32以little-endian格式編碼峭拘。

The Ethash algorithm expects the DAG as a two-dimensional array of uint32s (4-byte unsigned ints), with dimension (n × 16) where n is a large number. (n starts at 16777186 and grows from there.) Following the magic number, the rows of the DAG should be written sequentially into the file, with no delimiter between rows and each unint32 encoded in little-endian format.(我也不知道n汽煮,還有'幻數(shù)'是個啥)

而以太坊創(chuàng)始人Vitalik Buterin自己說的是
Dagger是基于適度連接的有向非循環(huán)圖(DAG,因此得名)的memory-hard proof of work棚唆,雖然遠不是最佳的暇赤,但其比現(xiàn)如今其他的工作具有更強的memory-hardness特性。

實質(zhì)上宵凌,Dagger算法的工作原理是創(chuàng)建一個有向無環(huán)圖(其實就是數(shù)據(jù)結(jié)構(gòu)里面 允許節(jié)點有多個父節(jié)點 的樹)鞋囊,共有十個級別,包括根和總共225-1個值瞎惫。

Dagger, a memory-hard proof of work based on moderately connected directed acyclic graphs (DAGs, hence the name), which, while far from optimal, has much stronger memory-hardness properties than anything else in use today.

Essentially, the Dagger algorithm works by creating a directed acyclic graph (the technical term for a tree where each node is allowed to have multiple parents) with ten levels including the root and a total of 225 - 1 values.

在github上以太坊項目里介紹挖礦里的DAG定義
...計算PoW(工作量證明)需要固定量resource的子集溜腐,量大小取決于隨機數(shù)和塊頭译株。這個resource(幾GB的大小的數(shù)據(jù))被稱為DAG。每30000塊的間隔之間(一個100小時的窗口挺益,稱為epoch)DAG是完全不同的歉糜,需要一段時間才能生成。

...calculating the PoW (Proof of Work) requires subsets of a fixed resource dependent on the nonce and block header. This resource (a few gigabyte size data) is called a DAG. The DAG is totally different every 30000 blocks (a 100 hour window, called an epoch) and takes a while to generate.

在github項目上mining中的ethash-dag
用于工作證明算法的DAG(有向無環(huán)圖)

在github項目中https://github.com/ethereum/wiki/wiki/Mining#the-algorithm
一個大的望众,暫時的匪补,隨機生成的數(shù)據(jù)庫

下面稍微總結(jié)一下:DAG是Ethash算法描述中的“數(shù)據(jù)集”

1 存在一個種子,可以通過掃描塊標題直到該點為每個塊計算烂翰。
2 從種子中夯缺,可以計算一個16 MB的偽隨機緩存。輕客戶端存儲緩存甘耿。
3 從緩存中踊兜,我們可以生成一個1 GB的數(shù)據(jù)集,其屬性是數(shù)據(jù)集中的每個項目僅依賴于緩存中的少量項目佳恬。完整的客戶和礦工存儲數(shù)據(jù)集捏境。數(shù)據(jù)集隨時間線性增長。
4 挖掘包括抓取數(shù)據(jù)集的隨機片段并將它們混合在一起毁葱。通過使用緩存重新生成所需數(shù)據(jù)集的特定片段垫言,可以使用低內(nèi)存完成驗證,因此您只需要存儲緩存头谜。

1.There exists a seed which can be computed for each block by scanning through the block headers up until that point.
2.From the seed, one can compute a 16 MB pseudorandom cache. Light clients store the cache.
3.From the cache, we can generate a 1 GB dataset, with the property that each item in the dataset depends on only a small number of items from the cache. Full clients and miners store the dataset. The dataset grows linearly with time.
4.Mining involves grabbing random slices of the dataset and hashing them together. Verification can be done with low memory by using the cache to regenerate the specific pieces of the dataset that you need, so you only need to store the cache.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末骏掀,一起剝皮案震驚了整個濱河市鸠澈,隨后出現(xiàn)的幾起案子柱告,更是在濱河造成了極大的恐慌,老刑警劉巖笑陈,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件际度,死亡現(xiàn)場離奇詭異,居然都是意外死亡涵妥,警方通過查閱死者的電腦和手機乖菱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蓬网,“玉大人窒所,你說我怎么就攤上這事》妫” “怎么了吵取?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長锯厢。 經(jīng)常有香客問我皮官,道長脯倒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任捺氢,我火速辦了婚禮藻丢,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘摄乒。我一直安慰自己悠反,他們只是感情好,可當我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布缺狠。 她就那樣靜靜地躺著问慎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪挤茄。 梳的紋絲不亂的頭發(fā)上如叼,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天,我揣著相機與錄音穷劈,去河邊找鬼笼恰。 笑死,一個胖子當著我的面吹牛歇终,可吹牛的內(nèi)容都是我干的社证。 我是一名探鬼主播,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼评凝,長吁一口氣:“原來是場噩夢啊……” “哼追葡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起奕短,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤宜肉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后翎碑,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谬返,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年日杈,在試婚紗的時候發(fā)現(xiàn)自己被綠了遣铝。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡莉擒,死狀恐怖酿炸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情涨冀,我是刑警寧澤填硕,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站蝇裤,受9級特大地震影響廷支,放射性物質(zhì)發(fā)生泄漏频鉴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一恋拍、第九天 我趴在偏房一處隱蔽的房頂上張望垛孔。 院中可真熱鬧,春花似錦施敢、人聲如沸周荐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽概作。三九已至,卻和暖如春默怨,著一層夾襖步出監(jiān)牢的瞬間讯榕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工匙睹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留愚屁,地道東北人。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓痕檬,卻偏偏與公主長得像霎槐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子梦谜,可洞房花燭夜當晚...
    茶點故事閱讀 45,500評論 2 359