-
鏈式結構小結
更改區塊1的數據,只有修改所有鏈條上的數據才能保證一致。
在區塊1上可以分叉新的鏈條,這種方式也需要全網區塊達成共識。
查看全部 -
認識hash函數
確定性:對同一個輸入數據,無論用哈希函數重復計算多少次,每次都能得到相同的結果。
單向性:可以很輕松的對已知數據進行哈希計算,得到哈希值,通過哈希值反推相應的已知數據非常難。
隱秘性:在已知哈希值的情況下,沒有可行的辦法算出哈希函數的輸入值。
抗篡改:對一個數據塊,哪怕只改動一個bit位,哈希值改動非常大。
抗碰撞:兩個不同的數據塊,hash值相同的可能性非常小。
MD系列常用MD5,但其抗碰撞性被公認較差,不推薦使用。
SHA0,SHA1已被證實不安全,推薦使用SHA256,SHA3。
查看全部 -
區塊鏈鏈式結構
查看全部 -
區塊鏈的架構模型
?
查看全部 -
認識一下什么是區塊鏈
價值傳遞從轉讓方到了受讓方
價值傳遞雙方借助第三方中介進行傳遞,由于擔心第三方系統會發生故障導致數據丟失,因此引入區塊鏈。
通過區塊鏈協議進行自管理。
查看全部 -
go語言構建區塊鏈
查看全部 -
要看一下,錢包是啥玩意查看全部
-
done查看全部
-
學習區塊鏈查看全部
-
package?BlockChain import?( ???"crypto/sha256" ???"encoding/hex" ???"time" ) //構建區塊鏈結構體——區塊 type?Block?struct?{ ???Index?int64???//區塊編號 ???Timestamp?int64??//區塊時間戳秒為單位,區塊創建的時間 ???PrevBlockHash?string??//上一個區塊哈希值 ???Hash?string??//當前區塊的哈希值 ???Data?string??//區塊所包含的數據 } //計算區塊的哈希值 func?calculateHash(b?Block)?string{ ???//用區塊的這幾個部分作為hash內容 ???//string(b.Index)???將int64轉化為string ???blockData?:=?string(b.Index)?+?string(b.Timestamp)?+?b.PrevBlockHash?+?b.Data ???//計算hash值并存入字節數組 ???hashInBytes?:=?sha256.Sum256([]?byte(blockData)) ????return?hex.EncodeToString(hashInBytes[:]) } //生成區塊 func?GenerateNewBlock(preBlock?Block,?data?string)?Block{ ???//定義一個新的區塊 ???newBlock?:=?Block{} ???//新區塊的編號等于父區塊的編號+1 ???newBlock.Index?=?preBlock.Index?+?1 ???//新區塊的哈希值等于上一個區塊本身的hash值 ???newBlock.PrevBlockHash?=?preBlock.Hash ???//新區塊的時間戳等于當前時間 ???newBlock.Timestamp?=?time.Now().Unix() ???//新區塊的Hash是更新新內容計算得來 ???newBlock.Hash?=?calculateHash(newBlock) ???return?newBlock } //生成創世區塊:是第一個區塊,區塊編號為0,區塊的哈希值是一個空值, //區塊的時間戳和當前Hash值可以為它傳遞一個虛擬的父區塊生成 //?在系統啟動之前就已經生成好了 func?GenerateGenesisBlock()?Block{ ???preBlock?:=?Block{} ???preBlock.Index?=?-1 ???preBlock.Hash?=?"" ???return?GenerateNewBlock(preBlock,"First?Block") }
查看全部 -
修改其中一個區塊,這個區塊后面的所有區塊都有跟著修改
查看全部 -
鏈式結構哈希的計算
查看全部 -
哈希函數:是一種算法,把任意長度的二進制數據映射為固定長度的二進制數據。
哈希函數的特點:具有確定性,單向性,隱秘性,抗篡改,抗碰撞
哈希函數的實現:MD系列,SHA系列,推薦SHA256,SHA3
查看全部 -
區塊鏈鏈式結構:
一個區塊由區塊頭和區塊體組成;
區塊體中存儲了相關的交易數據;
區塊頭中最重要的元素是父區塊hash,每一個區塊含有一個父區塊的hash,相當于有了一個指向父區塊的指針,通過hash指針把一個一個的區塊連接起來,就構成了區塊鏈特殊的鏈式結構。
在區塊鏈中的第一個節點稱為創世區塊,創世區塊只有數據值,沒有父區塊和hash值。
查看全部 -
區塊鏈的架構模型
數據層:封裝了底層數據區塊的鏈子結構,以及相關的非對稱的公鑰私鑰加密技術和時間戳技術;是整個區塊鏈最底層的數據結構。
網絡層:包括P2P組網機制,數據傳播機制和數據驗證機制。
共識層:封裝了網絡節點的各類共識機制算法,是區塊鏈的核心技術,它決定是到底是誰來進行記賬,而記賬方式將會影響整個系統的安全性和可靠性。
激勵層:將幀元素集中到區塊鏈的技術體系中來,包括發行機制和分配機制,主要應用在公有鏈中,并不是所有的區塊鏈都有激勵層。
合約層:用于封裝各類腳本、算法和智能合約,是區塊鏈可編程特性的基礎,可以簡單理解為一份自定義的電子合同。
應用層:封裝了區塊鏈的各種應用場景和案例。
合約層、激勵層、共識層、網絡層、數據層構成了區塊鏈的核心系統
共識層、網絡層、數據層是構建區塊鏈系統的必要元素
激勵層通常位于公有鏈,激勵遵守規則的節點,懲罰不遵守規則的節點
合約層用于封裝各類腳本、算法、合約。
查看全部
舉報