區塊鏈(Block Chain)結構解析
定義
狹隘定義:區塊鏈是一個公共賬本(Public ledger),一個按照時間順序排序的交易記錄
廣義定義:區塊鏈是分散式資料儲存、點對點傳輸、共識機制、加密演算法等計算機技術的新型應用模式。所謂共識機制是區塊鏈系統中實現不同節點之間建立信任、獲取權益的數學演算法.
區塊鏈的組成
區塊鏈是一種按照時間順序將資料區塊以順序相連的方式組合成的一種鏈式資料結構
區塊的結構
每個Block分為兩部分:區塊頭(Block Header)和區塊體( Block)
區塊頭(Block Header)
區塊頭包括三組元資料
- 用於連線前面的區塊、索引自父區塊雜湊值的資料。
- 挖礦難度、Nonce(隨機數,用於工作量證明演算法的計數器)、時間戳
- 能夠總結並快速歸納校驗區塊中所有交易資料的Merkle(默克爾)樹根資料
時間戳
區塊鏈中的時間戳從區塊生成那一刻起就存在於區塊中,它對應的是每一次交易記錄的認證,證明交易記錄的真實性。
Merkle樹結構
Merkle樹的資料結構存放所有葉子節點的值,並以此為基礎生成一個統一的雜湊值。Merkle的葉子節點儲存的是資料資訊的雜湊值,非葉子節點的儲存是對其下面所有葉子節點的組合進行雜湊計算後得出的雜湊值。區塊中任意一個數據的變更都會導致Merkle樹結構發生變化,在交易資訊驗證對比的過程中,Merkle樹結構能夠大大減少資料的計算量,畢竟,我們只需驗證Merkle樹結構生成的統一雜湊值就可以了。
區塊體(Block)
主要是包含交易資料(Transaction,TX).
Transactions包括一個input和多個output.並且輸入和輸出相等:.已確認的交易(或者說已經花出去的錢)被稱為Transaction identifiers(TXIDs),未確認的被稱為Unspent Transaction Outputs(UTXOs)
相關推薦
區塊鏈(Block Chain)結構解析
定義 狹隘定義:區塊鏈是一個公共賬本(Public ledger),一個按照時間順序排序的交易記錄 廣義定義:區塊鏈是分散式資料儲存、點對點傳輸、共識機制、加密演算法等計算機技術的新型應用模式。所謂共識機制是區塊鏈系統中實現不同節點之間建立信任、獲取權益的數
區塊鏈學習—自己動手寫區塊鏈(Java版)
自己動手寫區塊鏈(Java版) 2018年開始區塊鏈真是火啊。一夜暴富的例子一直在傳說。今天我們就自己動手寫一個基本的區塊鏈。 先簡單的說一下區塊鏈是個什麼(相信你早就知道了)。 區塊鏈就是一個連結串列。把一堆區塊串起來就是區塊鏈。每個block有自己的數字簽名(就是一串不規則看起來
區塊鏈(初識二)
區塊鏈技術框架 核心技術 密碼學和數字簽名用於身份地址標識 共識演算法用於工作量證明 分散式儲存技術用於儲存交易記錄和區塊,分散式網路技術用於網路通訊和節點發現 區塊鏈的本質 區塊鏈
初嘗以太坊區塊鏈(ubuntu16.04)
環境搭建 以太坊環境是用go語言開發,虛擬機器內部執行的是javascript 使用 Personal Package Archives 直接安裝,命令如下: sudo apt-get install software-properties-common sud
[work]馬爾可夫鏈 (Markov Chain)是什麼鬼
“隨機過程隨機過,實變函式學十遍,微機原理鬧危機,組合語言不會編”1. 唯一讓我徹底蒙圈的課程這些課程真的太難了,大學裡無數人為此傷透了腦筋,掛科率槓槓的。我當初也是的,特別是隨機過程這門課,上完了一學期的課,只記住了幾個公式,問我幹嘛的?不知道!像其他的高等數學啊,電磁場電
學習區塊鏈(十二)--DAG是真正的區塊鏈3.0?別急!!!
首先,在我花了大量的時間來閱讀DAG的相關文章和資料後,我仍然不敢確定我理解的DAG是正確的,我試圖用最簡單的話來描述DAG(有向無環圖)以及它和區塊鏈的區別。 首先了解下資料結構中的有向無環圖是什麼?在圖論中,圖分為有向圖和無向圖兩大類,在無向圖中進一步進行
馬爾可夫鏈(Markov Chain)
================================================================== 應用隨機過程Markov鏈的應用題 設今日有雨,則明日也有雨的概率為0.7,今日無雨明日有雨的概率為0.5。 第一
JavaScript中的作用域鏈(scope chain)
第一篇部落格,略有手抖,不知道應該撿哪句說起。開博最重要的目的就是做一些自己的技術沉澱。之前不是不想開,是因為確實自己確實沒有積累,即使勉強寫出點什麼,我想大抵也是東拼西湊吧,這樣不如不幹。 幹,就像個樣子。分隔符---此為前話。 近幾日精讀JavaScript高階程式設
從基本理解到深入探究 Linux kernel 通知鏈(notifier chain)【轉】
see sta seconds 內核和 一定的 mut 內核模塊 val spa 轉自:https://blog.csdn.net/u014134180/article/details/86563754 版權聲明:本文為博主原創文章,未經博主允許不得轉載。—&
基於Java語言構建區塊鏈(一)—— 基本原型
java 分布式 程序員 後端引言 區塊鏈技術是一項比人工智能更具革命性的技術,人工智能只是提高了人類的生產力,而區塊鏈則將改變人類社會的生產關系,它將會顛覆我們人類社會現有的協作方式。了解和掌握區塊鏈相關知識和技術,是我們每位開發人員必須要去做的事情,這樣我們才能把握住這波時代趨勢的紅利。 本文將基於Jav
基於Java語言構建區塊鏈(二)—— 工作量證明
分布式 java引言 在 上一篇 文章中,我們實現了區塊鏈最基本的數據結構模型,添加區塊以及和前一個區塊連接在一起。但是,我們的實現方式非常簡單,而真實的比特幣區塊鏈中,每一個區塊的添加都是需要經過大量的計算才可以完成,這個過程就是我們熟知的挖礦。 工作量證明機制區塊鏈最關鍵的一個思想就是,必須進行大量且困難
基於Java語言構建區塊鏈(三)—— 持久化 & 命令行
java 分布式 編程語言 程序員 引言上一篇 文章我們實現了區塊鏈的工作量證明機制(Pow),盡可能地實現了挖礦。但是距離真正的區塊鏈應用還有很多重要的特性沒有實現。今天我們來實現區塊鏈數據的存儲機制,將每次生成的區塊鏈數據保存下來。有一點需要註意,區塊鏈本質上是一款分布式的數據庫,我們這裏
基於Java語言構建區塊鏈(三)—— 持久化 & 命令列
文章的主要思想和內容均來自:https://jeiwan.cc/posts/building-blockchain-in-go-part-3/ 原文連結:https://wangwei.one/posts/35c768a3.html 引言 上一篇文章我們實現
CC++實現區塊鏈(下)之區塊鏈實現
看了上面的演算法,相信大家基本可以猜到,相對於比特幣的限量的性質,對於本演算法來說,難解程度的根本原因即為向量環路的迭代次數。迭代次數越多,則演算法越難解,從而導致解題需要花費更多的時候,再基於這點,在數學上,當解題次數足夠大時,效率會無限小,從而導致瞭解題時間無限長最後導致加密貨幣的發放無
CC++實現區塊鏈(中)之演算法實現
1、矩陣類實現 class Martix { public: static const int circle_s = 1; //假定向量環路為1; static const int KEY =Martix::circle_s * 8; private: unsigned long long
CC++實現區塊鏈(上)之加密演算法
本演算法基於橢圓標準方程、線性代數、資料結構,純屬自制。僅供學習參考,不得用於商業用途。 首先了解下橢圓標準方程: 我們先模擬下長軸為Y軸時(即焦點F在Y軸上,F的橫座標為0的情況),然後根據橢圓的定義,得到橢圓上任意一點F,到焦點F1,F2的距離|MF1|+|MF2
區塊鏈(雜記)
區塊鏈 去中心化App 去中心化 github下載(Mist) Chrome外掛 MetaMask 以太坊的四種錢包:Ethereum Wallet、METAMASK、 Parity Ethereum、MyEtherWallet 編輯器:Atom、Websto
Golang實現區塊鏈(一)—簡單區塊鏈
隨著比特幣、以太坊等虛擬貨幣的越來越火,作為這些虛擬貨幣背後支撐的區塊鏈技術,也被越來越多的人提及。下面我們將使用go語言對區塊鏈進行探討,並實現一個簡易的區塊鏈,本文暫不涉及poW、poS等共識演算法。 通過本文,你可以做到: 瞭解區塊 Hash演算法
學習區塊鏈(一)--我為什麼要學習區塊鏈?
2017年真的是概念頻發的一年,上半年人工智慧剛剛站穩腳跟,阿爾法狗擊敗各路圍棋高手更是將人工智慧送上了天,導致一直平靜的演算法界也出現了深度學習,但還不過幾個月,比特幣以一路飆升至2w美元將區塊鏈帶向了人們,作為程式設計師的我們自然是對它最敏感的,有很多朋友問
數字貨幣最新動態、內幕、趨勢,老司機給小白炒幣的深度貼(區塊鏈15個問題)
區塊鏈不得不說是當下最最熱門的話題,以前在各類會議、航班上、咖啡廳,人們聽的最多的可能是各類共享經濟、O2O、大資料、人工智慧等這些話題,現在區塊鏈被提及和關注的可能遠遠超過各類老牌的“科技明星”。資本圈、創業圈持續熱議區塊鏈,各方一致稱之為“技術革命”,大街小巷都掀起了區塊