以太坊dag生成演算法
Ⅰ 以太坊架構是怎麼樣的
以太坊最上層的是DApp。它通過Web3.js和智能合約層進行交換。所有的智能合約都運行在EVM(以太坊虛擬機)上,並會用到RPC的調用。在EVM和RPC下面是以太坊的四大核心內容,包括:blockChain, 共識演算法,挖礦以及網路層。除了DApp外,其他的所有部分都在以太坊的客戶端里,目前最流行的以太坊客戶端就是Geth(Go-Ethereum)
Ⅱ 比特幣和以太坊挖礦有什麼區別
比特幣採用的是SHA-256加密演算法發,在挖礦的時候,比拼的是算力。為了提高算力,比特幣經歷了CPU挖礦、GPU挖礦、FPGA挖礦和現在的ASIC礦機挖礦四個階段,專業化程度越來越高。
以太坊採用的是Ethash加密演算法,在挖礦的過程中,需要讀取內存並存儲DAG文件。由於每一次讀取內存的帶寬都是有限的,而現有的計算機技術又很難在這個問題上有質的突破,所以無論如何提高計算機的運算效率,內存讀取效率仍然不會有很大的改觀。因此從某種意義上來說,以太坊的Ethash加密演算法具有「抗ASIC性」.
加密演算法的不同,導致了比特幣和以太坊的挖礦設備、算力規模差異很大。
目前,比特幣挖礦的、設備主要是專業化程度非常高的ASIC礦機,單台礦機的算力最高達到了110T/s,全網算力的規模在120EH/s以上。
以太坊的挖礦設備主要是顯卡礦機,專業化的ASIC礦機非常少,一方面是因為以太坊挖礦演算法的「抗ASIC性」提高了研發ASIC礦機的門檻,另一方面是因為以太坊升級到2.0之後共識機制會轉型為PoS,礦機無法繼續挖礦。
和ASIC礦機相比,顯卡礦機在啊算力上相差了2個量級。目前,主流的顯卡礦機(8卡)算力約為420MH/s,以太坊全網算力約為230TH/s.
從過去兩年的時間維度上看,比特幣的全網算力增長迅速,以太坊的全網算力增長相對緩慢。
比特幣的ASIC礦機被幾大礦機廠商所壟斷,礦工只能從市場上購買;以太坊的顯卡礦機,雖然也有專門的礦機廠商生產製造,礦工還可以根據自己的需求DIY,從市場上購買配件然後自己組裝。
Ⅲ C++假設給我們一個任意的圖,它可能是也可能不是DAG(有向無圈圖),推廣拓撲排序演算法
我可以給你一個思路,先dfs判斷這個圖有沒有環,如果是DAG就直接拓撲排序,如果不是DAG的話可以考慮將有向圖刪去一些邊,變成一棵樹,考慮邊A指向B,可以理解為A是B的父親節點,然後dfs一下就能得到一棵樹,接下來逐一枚舉每條邊C指向D,如果樹上C與D間沒有邊,就輸出樹上從C到D路徑上所有邊和C指向D的這條邊
Ⅳ 為什麼要用DAG作為底層技術相比別的以太坊和比特幣底層技術,其優勢是什麼
DAG區塊鏈與傳統區塊鏈工作機制不同之處在於,後者需要礦工完成工作量證明(PoW)來執行每一筆交易,而DAG區塊鏈能擺脫區塊鏈的限制來完成這樣的操作。相反的是,在DAG區塊鏈中一筆交易接著另外一筆,這意味著一筆交易能夠對下一筆交易提供證明,由此一直排序下去。這些交易之間的連接就是DAG,就像區塊通過哈希值來向整條區塊鏈提供它們的名字一樣。
在傳統塊鏈式區塊鏈中,每筆交易要花費不少時間,而對於DAG區塊鏈來說,交易時間將變得微不足道
Ⅳ 以太坊gpu挖礦程序是怎樣的
GPU挖掘
硬體
演算法是內存難解的,為了使DAG適合內存,每個GPU需要1-2GB內存,如果你得到錯誤提示:Error GPU mining. GPU memory fragmentation? 說明你沒有足夠的內存。GPU挖礦軟體是基於OpenCL實現的,AMD GPU會比同一水準的NVIDIA GPU更快。ASIC和FPGA相對低效因而被阻攔。要給晶元集成平台獲取openCL,嘗試:
AMD SDK openCL
NVIDIA CUDA openCL
Ubuntu Linux設置
對於這個快速指南,你會需要Ubuntu 14.04或15.04以及fglrx圖像驅動器。你也可以使用NVidia驅動器和其他平台,但是你必須要找到自己的方式來獲得有效的OpenCL安裝,比如Genoil的ethminer分叉。
如果你在用15.04,到"軟體與更新〉額外的驅動器"設置為"從fglrx為AMD圖形加速器使用視頻驅動器"。
如果你在用14.04,到"軟體與更新〉額外的驅動器"設置為"從fglrx為AMD圖形加速器使用視頻驅動器"。很遺憾,對於一些人來說,這種方法可能不管用,因為Ubuntu 14.04.02中有個已知的程序錯誤會阻止你轉換到GPU挖礦所必須的專屬圖形驅動器。
所以,如果你遇到這個程序錯誤,先到"軟體與更新〉更新"選擇"預發行的可靠更新提議"。然後,回到"軟體與更新〉額外的驅動器"設置為"從fglrx為AMD圖形加速器使用視頻驅動器"。重啟之後,值得檢查一下現在確實正確安裝了驅動器(例如通過再到"額外驅動器")。
不管做什麼,如果你在用14.04.02,一旦安裝之後,就不要改變驅動器或者驅動器配置。例如,aticonfig –initial的使用(尤其是-f, –force選項)會"破壞"你的設置。如果你偶然改變了配置,會需要卸載驅動器,重啟,再次安裝驅動器並重啟。
Ⅵ 以太坊如何挖礦
目前市場上主流的以太坊礦機大多來自比特大陸、嘉楠耘智,不過隨著以太坊價格的下跌,挖礦帶來的利潤已經十分微薄,投資者可以選擇在數字貨幣交易所進行以太坊的交易投資。目前市場上主流的數字貨幣交易所有幣安、火幣網、比特網等。
Ⅶ 什麼是DAG區塊鏈技術
DAG全稱是「有向無環圖」,沒有區塊概念,不是把所有數據打包成區塊,再用區塊鏈接區塊,而是每個用戶都可以提交一個數據單元,這個數據單元里可以有很多東西,比如交易、消息等等。數據單元間通過引用關系鏈接起來,從而形成具有半序關系的DAG(有向無環圖)。DAG的特點是把數據單元的寫入操作非同步化,大量的錢包客戶端可以自主非同步地把交易數據寫入DAG,從而可以支持極大的並發量和極高的速度。同時,使用DAG技術的TrustNote還支持聲明式智能合約,聲明式的智能合約要表達的意思是可以直接按照用戶想要的結果去寫、去描述,以很簡單的語言,讓大家都能看懂的語言去描述他要乾的事情。
截止到2017年年底,「高流量應用」越來越多,除了主流電商平台外,還有直播平台、P2P理財、今日頭條、陌陌等嶄露頭角,如果「高流量應用」與DAG區塊鏈技術結合,將會給行業帶來哪些變革呢?除區塊鏈自身的特點去中心化、分布式賬本、不可篡改之外,DAG區塊鏈技術不但可以支持高並發,結合雙層共識機制,使用工作量證明共識演算法,還能夠防止「雙花」問題。
那麼,DAG如何支持高並發的呢?第一,數據不像比特幣和以太坊一樣強同步,而是弱同步,允許節點在同一時刻數據不一樣,數據可以有一些微小的差別。第二,可以通過數據單元之間的引用來完成交易的確認,就是後面發生的單元去引用前面的單元,這樣不需要我們把數據傳給礦工,整個過程都是由自己去完成的,這個過程很快。DAG是解決高並發比較優美的方法,比起之前的閃電網路,還有其他一些方面,DAG有其先天優勢。
再來看看DAG是如何防止「雙花」?在有向圖里如果能選出一個MainChain,這個時候會發現所有圖裡面的節點都可以用一種方法來給它做排序,把這個序號連接起來在一排,這張圖將會變成跟區塊鏈一樣的序列結構,就是排完序的節點,而且每個節點是一個交易,而不是一個區塊。所以,確定了主鏈,通過主鏈,可以形成全序。最後達到的結局就是在某一個邏輯狀態里,交易還是被排序了,這是DAG最關鍵核心的部分。
「高流量應用」是隨著節點數和交易數的增加平滑擴展,當這個節點數超過1億或交易數超過並發100萬時,DAG的特性剛好是交易越多越快,節點越多越快。
Ⅷ 什麼是DAG,DAG有發展前途嗎
DAG(Directed acyclic graph),有向無環圖,是計算機領域一個常用的數據結構,因為獨特的拓撲結構所帶來的一些特性,經常被用到處理動態規劃,導航中尋求最短路徑,數據壓縮等場景中。從15年開始,區塊鏈概念被單拎出來,這之前區塊鏈還只是比特幣技術里的一個數據結構,中本聰白皮書里把block和chain連一起的時候也只是a chain of blocks 。隨著以太坊去中心化計算機的概念提出來,很多人開始把以太坊稱作區塊鏈2.0,而比特幣被歸到了區塊鏈1.0。至於區塊鏈3.0,市場上為了搶奪區塊鏈3.0的冠名權打的不可開交,沒准會是DAG。
Ⅸ 有誰知道能解釋一下有向無環圖(DAG)么怎麼用程序做出來,及怎麼應用到經濟學實證上
我們說區塊鏈目前還不成熟,有各種各樣的問題,比如說處理速度慢、手續費高昂、存在安全隱患等等,這些都是用戶最直觀的體驗,體驗不是太好。區塊鏈還有一個問題,那就是高並發問題。
高並發問題是怎麼回事呢,我們簡單說一下。高並發是計算機領域的問題,簡單來講,高並發問題就是系統無法順利同時運行多個任務。
很多任務同時運行,一大堆用戶涌進來,系統承受不住這么多的任務,會出現高並發問題,你的系統就卡住了,就好比春運時候,12306系統總是卡住,有可能就是高並發問題造成的。
傳統互聯網尚且存在高並發問題,區塊鏈網路自然也存在這個問題,畢竟區塊鏈的成熟程度比起傳統互聯網,還有很大的差距。但是,如果沒有安全、可靠和高效的公鏈,整個區塊鏈產業的發展都將受到嚴重製約,應用落地也是空談。
在這種背景下,DAG 技術就被提出來了,DAG 的全稱是「Directed Acyclic Graph」,中文翻譯為「有向無環圖」。
DAG有向無環圖是怎麼回事呢,它到底能起到什麼作用呢?我們下面解釋一下。
一、DAG:一個新型的數據結構
DAG,中文名字叫「有向無環圖」,從字面意思看,「有向"就是說它是有方向的,
「無環」就是說它是沒有環路的、不能形成閉環的。所以,DAG其實是一種新型的數據結構,這個數據結構是有方向的,同時又是不能形成閉環的。
傳統區塊來講,我們總是以「區塊」為單位,一個區塊里往往包含了多筆交易信息。而在DAG中,沒有區塊的概念,而是以「單元」為單位,每個單元記錄的是單個用戶的交易,組成的單元不是區塊,而是一筆筆的交易,這樣一來,可以省去打包出塊的時間。
簡單來說,區塊鏈和DAG有向無環圖最大的區別就是:區塊鏈是一個接一個的區塊來存儲和驗證交易的分布式賬本,而DAG則是把每筆交易都看成一個區塊,每一筆交易都可以鏈接到多個先前的交易來進行驗證。
二、DAG 的工作原理
傳統區塊鏈上,就拿比特幣來講,它是單鏈式的結構,區塊與區塊之間按照時間戳的先後順序排列開來(如圖一),數據記錄在一條主鏈上。用不太恰當的比喻來講,這個
「單鏈式」結構是一條一字排列的鏈。
區塊鏈只有一條單鏈,打包出塊就無法並發執行。新的區塊會加入到原先的最長鏈之上,所有節點都以最長鏈為准,繼續按照時間戳的順序無限蔓延下去。而對於DAG來講,每個新加入的單元,不僅只加入到最長鏈的一個單元,還要加入到之前所有的單元(如圖二)。
舉個例子:假設我發布了一個新的交易,此時DAG結構已經有2個有效的交易單元,那麼我的交易單元會主動同時鏈接到前面的2個之中,去驗證並確認,直到鏈接到創世單元,而且,上一個單元的哈希會包含到自己的單元裡面。
換句話說,你要想進行一筆交易,就必須要驗證前面的交易,具體驗證幾個交易,根據不同的規則來進行。這種驗證手段,使得DAG可以非同步並發的寫入很多交易,並最終構成一種拓撲的樹狀結構,極大地提高擴展性。
依據DAG有向無環圖,每一筆交易都直接參與了維護全網。當交易發起後,直接廣播全網,跳過礦工打包區塊階段,這樣就省去了打包交易出塊的時間,提升了區塊鏈處理交易的效率。
隨著時間遞增,所有交易的區塊鏈相互連接,形成圖狀結構,如果要更改數據,那就不僅僅是幾個區塊的問題了,而是整個區塊圖的數據更改。DAG這個模式相比來說,要進行的復雜度更高,更難以被更改。
總結一下,DAG作為一種新型的去中心化數據結構,它屬於廣義區塊鏈的一種,具備去中心化的屬性,但是二者的不同之處在於:
區塊鏈組成單元是Block(區塊),DAG組成單元是TX(交易)。
區塊鏈是單線程,DAG是多線程。
區塊鏈所有交易記錄記在同一個區塊中,DAG每筆交易單獨記錄在每筆交易中。
區塊鏈需要礦工,DAG不需要礦工。
三、 DAG 的代表:IOTA
DAG當前的代表項目,最知名的無疑就是 IOTA。可以說,正是因為IOTA這個幣種在 2017年下半年沖進市值排行第四位,才使人們真正認識到了它的底層技術:DAG有向無環圖。
IOTA在DAG有向無環圖的基礎上提出了「纏結」概念,在IOTA裡面,沒有區塊的概念,共識的最小單位是交易。每一個交易都會引用過去的兩條交易記錄哈希,這樣前一交易會證明過去兩條交易的合法性,間接證明之前所有交易的合法性。這樣一來, 就不再需要傳統區塊鏈中的礦工這樣少量節點來驗證交易、打包區塊,從而提升效率,節省交易費用。
四、 DAG 的現狀
盡管理論上來講,DAG有向無環圖能夠彌補傳統區塊鏈的一些弊端,但是目前並不成熟,應用到數字貨幣領域的時間也比較短,還比較年輕 。
它沒有像比特幣那般經過長達10年的時間來驗證整個系統的安全性,也沒有像以太坊那般實現了廣泛的應用場景。不過,現在有些聲音提出要採用「傳統區塊鏈+DAG」的數據結構,但是還沒有非常突出的案例,這里就不多說了。
總結一下,本節我們介紹了區塊鏈的衍生技術:DAG有向無環圖,這是一種全新的數據結構,可以對區塊鏈處理交易的效率、並發力達到顯著的提升。
Ⅹ HLC為什麼要用DAG作為底層技術相比其他以太坊和比特幣底層技術,其優勢是什麼
因為DAG在去中心化和可擴展性等方面可以找到一個好的平衡呀,這也遵循了傳統的區塊鏈價值觀。