1. 程式人生 > >學習區塊鏈(十二)--DAG是真正的區塊鏈3.0?別急!!!

學習區塊鏈(十二)--DAG是真正的區塊鏈3.0?別急!!!

首先,在我花了大量的時間來閱讀DAG的相關文章和資料後,我仍然不敢確定我理解的DAG是正確的,我試圖用最簡單的話來描述DAG(有向無環圖)以及它和區塊鏈的區別。

首先了解下資料結構中的有向無環圖是什麼?在圖論中,圖分為有向圖和無向圖兩大類,在無向圖中進一步進行約束形成了DAG(有向無環圖),所謂無環是指它是由集合的頂點和有向邊構成,每條邊連線一個頂點到另一個,這樣,假如頂點A開始,沿著有序的邊,最終迴圈回再次到A是不可能的,其實圖是樹的一種泛化,真正在用的時候一般會通過深度優先或者廣度優先規則把圖拆成“森林”就是多顆“樹”。
這裡寫圖片描述

 區別於大家熟知的比特幣採用的為鏈式結構,而區塊鏈的pow共識機制需要競爭打包區塊的權利所耗費大量的能源不說,導致效率也更加緩慢。
 那麼DAG中到底怎麼解決這個問題呢?

每個新加入的單元,不僅僅只加入長鏈裡的一個區塊,而是加入到之前的所有區塊。假設當你釋出新交易時,前面有兩個有效區塊,那麼你的區塊會主動同時連結到前面兩個之中,DAG 中的每個新單元,驗證並確認其父輩單元,父輩單元的父輩單元,慢慢可達創世單元,並將其父輩單元的雜湊包含到自己的單元裡面。隨著時間遞增,所有交易的區塊鏈相互連線,形成圖狀結構,如若要更改資料,那就不僅僅是幾個區塊的問題了,而是整個區塊圖的資料更改。

DAG 這個模式相比來說,要進行的複雜度更高,更難以被更改,所以這裡解決了比特幣與以太坊最大的一個問題隱患,就是沒有一個確定的不可更改的最終狀態。理論上,如果有足夠的算力,足夠的出塊速度,產生一條更長的隱藏鏈,就可以把之前的區塊推翻。

,假如很多年後量子計算機算力突破天際!!!

我們來看下很火的基於DAG的IOTA專案:
IOTA資料結構
Tangle(纏結)是基於定向非迴圈圖的(DAG),而不是一種連續的鏈式架構,定期新增區塊。通過DAG,IOTA能夠實現較高的交易吞吐量(通過平行驗證),並且不收取交易手續費。隨著Tangle的不斷髮展,越來越多的參與者都將發起交易,整個系統也會變得越來越安全和快速,確認時間會縮短,交易也完成的越來越快。說實話,本來我看到pow的共識機制已經感嘆其精妙,但看完DAG的tangle,我真覺得區塊鏈的世界是永無止境的想象和創新。

IOTA 共識機制
 區塊鏈共識是通過一個非常嚴格的機制完成的,區塊鏈中新增下一個區塊需要多方進行競爭,並獲取區塊獎勵或交易手續費。正因如此,共識和交易生成是分離開的,並且由網路的一小部分人來完成

,通常會設定較高門檻(不是每個人都會使用礦機,而且礦池日益集中的算力讓人對去中心化心生疙瘩),這樣會導致進一步的中心化。
在IOTA系統中,網路中的每位參與者都能進行交易並且積極參與共識。更具體點說,你直接定位了兩筆交易(主交易和分支交易),且間接在子tangle中定位其它交易。通過這種方式,驗證就能同步進行,網路能夠保持完全去中心化,不需要礦工傳遞信任,也不需要支付交易手續費。

就IOTA來看,我們從DAG身上看到了區塊鏈3.0的影子,交易效率變快、更加的去中心化,似乎一切都那麼完美,我們迫不及待的想向DAG跑過去,但理智告訴我們再看看,就我個人的知識和所查資料而言,我有兩個疑問:

1.比特幣結構裡面,必須保持持續的算力優勢才能更改交易,否則最終長鏈可以將短期算力優勢形成的鏈廢掉,而大部分礦工不會傻到用大量的算力讓挖到的比特幣沒有意義!但是如果採用DAG分塊的方式,破壞者只需要在一定時間內的算力保持優先形成一個DAG塊,那麼是不是今後所有的交易都會繼承這個錯誤呢?
2.缺乏真正主鏈解決“雙花問題”是否更加困難?

相關推薦

學習區塊--DAG真正區塊3.0

首先,在我花了大量的時間來閱讀DAG的相關文章和資料後,我仍然不敢確定我理解的DAG是正確的,我試圖用最簡單的話來描述DAG(有向無環圖)以及它和區塊鏈的區別。 首先了解下資料結構中的有向無環圖是什麼?在圖論中,圖分為有向圖和無向圖兩大類,在無向圖中進一步進行

JAVA基礎學習之路

args 是否為空 鏈表 == lin 一個 ava int 數據類型 定義鏈表的基本結構: class Link {//外部類 //內部類,只為鏈表類服務 private class Node {//定義節點類 private

python學習之路

pack 分享 psi python 模塊 shp 詳解 階段 new from 這節主要介紹一下import!很實用的調用模塊的功能。 導入模塊 是導入真實的代碼 而導入包 是導入包下面的 __init__() 文件 這兩個是不一樣的 先說模塊定義 模塊 它就是一個

Spark學習之路 SparkCore的調優之資源調優JVM的基本架構

程序員 存儲 src ron 指示器 引用 double strong 功能 一、JVM的結構圖 1.1 Java內存結構 JVM內存結構主要有三大塊:堆內存、方法區和棧。 堆內存是JVM中最大的一塊由年輕代和老年代組成,而年輕代內存又被分成三部分,Eden空間、

Spark學習之路 SparkCore的調優之資源調優

限制 無法 數據 block 可能 executors 頻繁 通過 操作 摘抄自:https://tech.meituan.com/spark-tuning-basic.html 一、概述 在開發完Spark作業之後,就該為作業配置合適的資源了。Spark的資源參數,基

Android破解學習之路—— GP錄影漢化過程及添加布局

## 前言 最近閒著發慌,想起了很久之前就想漢化的一款錄影APP,APP大小不到1MB,但是好用,本期就給大家帶來漢化的基本步驟以及如何在APP中新增我們漢化的資訊 ## 漢化思路 1. **查詢關鍵字** 關鍵字挺好找的,由於APP本身就是英文,我們找到某個英文單詞進行搜尋即可 2. **找到string.

機器學習與深度學習系列連載: 第二部分 深度學習卷積神經網路 3 經典的模型LeNet-5,AlexNet ,VGGNet,GoogLeNet,ResNet

卷積神經網路 3 經典的模型 經典的卷積神經網路模型是我們學習CNN的利器,不光是學習原理、架構、而且經典模型的超引數、引數,都是我們做遷移學習最好的源材料之一。 1. LeNet-5 [LeCun et al., 1998] 我們還是從CNN之父,LeCun大神在98年提出的模

Python學習之旅

Python基礎知識(11):高階特性 一、分片(切片)   通過索引來獲取一定範圍內的元素 #字串 s="Alice" s[0:4:2] 結果: 'Ai' #列表 l=[1,2,3,4,5,6] l[0:2] 結果: [1, 2] #元組 t=(1,2,3,"a","b","c"

每天學點SpringCloud:Zipkin全路監控

Zipkin是SpringCloud官方推薦的一款分散式鏈路監控的元件,使用它我們可以得知每一個請求所經過的節點以及耗時等資訊,並且它對程式碼無任何侵入,我們先來看一下Zipkin給我們提供的UI介面都是提供了哪些資訊。 zipkin首頁為我們提供了對於呼叫鏈路的搜尋查詢

zipkin+sleuth定時任務生成全域性呼叫

問題背景 github提供的方式,是一個zipkin-dependencies-xxx.jar ,通過啟動這個jar包生成呼叫鏈,這個jar包啟動後,執行一次執行緒就會自動結束了,這在生產環境是不可忍受的。 準備 在github上下載最新的 release原始碼

【零基礎】Python3學習課後練習題

本文是跟著魚C論壇小甲魚零基礎學習Python3的視訊學習的,課後題也是跟隨每一課所附屬的題目來做的,根據自己的理解和標準答案記錄的筆記。 第十四課 測試題: 0.如何定義一個跨越多行的字串嗎(請至少寫出兩種實現的方法)? 答: 方法一:使用三引號 '''

機器學習實戰教程:線性迴歸提高篇之樂高玩具套件二手價預測

一、前言 本篇文章講解線性迴歸的縮減方法,嶺迴歸以及逐步線性迴歸,同時熟悉sklearn的嶺迴歸使用方法,對樂高玩具套件的二手價格做出預測。 二、嶺迴歸 如果資料的特徵比樣本點還多應該怎麼辦?很顯然,此時我們不能再使用上文的方法進行計算了,因為矩陣X不是滿秩矩陣,非

EMV規範學習與研究——指令碼處理

指令碼處理目的是髮卡行可以提供命令指令碼讓終端傳送給IC卡,這些命令執行的功能對當前交易沒有影響,但是對確保IC卡中後續的正常執行非常重要。在一個授權應答中又可能包括多個指令碼,每個指令碼包括多個髮卡行指令碼命令。 終端可能不能理解某個髮卡行指令碼命令,但是終端需要把每個指

【GANs學習筆記】SAGAN

3.1 SAGAN解決的問題 前篇我們說到用深度卷積網路能夠提升GANs生成高解析度圖片的細節,但是由於卷積網路的區域性感受野的限制,如果要生成大範圍相關(Long-range dependency)的區域,卷積網路就會出現問題。譬如說在生成人臉圖片時,是非常

系統學習程式設計筆記

一個電路就是一個環路。 研究電流工作原理的、最主流的科學理論叫做“電子理論”(electro theory),這套理論認為電流是由電子的運動而產生的。 所有的物質都是由叫做原子(atom)的極其微小的東西組成的。每一個原子又由三種粒子構成;它們分別是中子(neutron)、質子(proton)和電子(el

JDBC學習之路使用Spring中的JdbcTemple實現資料查詢

                其實在Spring這個框架中,提供了一些對JDBC訪問資料庫的封裝,其中JdbcTemplate就是一個很好用的類,下面來演示一下這個類的一些用法。首先需要匯入commons-logging.jar,和spring.jar這兩個包。然後使用他的功能就可以了,可以說,Spring

PHP學習練手

傳送電子郵件 函式: 1、傳送郵件函式: (subject中不能包含換行符;正文中每一行的長度都不能超過70,故用wordwrap函式進行隔斷) mail(to, subject, body, [headers]) 2、字串隔斷函式 wo

從零開始學習PYTHON3講義畫一顆心送給你

(內容需要,本講使用了大量線上公式,如果因為轉帖網站不支援公式無法顯示的情況,歡迎訪問原始部落格。) 《從零開始PYTHON3》第十二講 上一節課我們主要講解了數值計算和符號計算。數值計算的結果,很常用的目的之一就是用於繪製圖像,從影象中尋找公式的更多內在規律。 Python科學繪圖 科學繪圖是計

Andrew Ng機器學習課程筆記之無監督學習之K-means聚類演算法

Preface Unsupervised Learning(無監督學習) K-means聚類演算法 Unsupervised Learning 我們以前介紹的所有演算法都是基於有類別標籤的資料集,當我們對於沒有標籤的資料進行分類時,以前的方

EMV技術學習和研究交易限額

轉載請註明出處 作者:小旭 EMV引數裡面有幾個限額,但是感覺這幾個限額都比較容易混淆和模糊,下面一個一個的來討論一下。 終端最低限額(9F1B)、終端電子現金交易限額(9F7B)、非解最低限額(DF19)、非解交易限額(DF20)、CVM限額(DF21) 9F1B,就是所