區塊鏈技術核心概念與原理


第一章 區塊鏈技術入門

 
1.1區塊鏈前世今生
    1.1.1 密碼朋克(Cypherpunk)
郵件組: 密碼 數學 計算機技術 等
    wiki解密創始人: 阿桑奇
    BT下載作者     : 布萊姆-科恩
    萬維網創始人  : 蒂姆伯納斯-李
    智能合約概念的提出者: 尼克 薩博
    Facebook創始人之一: 肖恩帕克
    比特幣的創始人: 中本聰  (比特幣白皮書: 一個點對點的電子現金系統-去中心化)
 
    1.1.2區塊鏈: 一系列技術的集合
    作用:存儲信息。任何需要保存的信息都可以寫入區塊鏈,也可以從里面讀取,就像一個數據庫。
比特幣系統里面的數據是以一個個的區塊來存儲的,並且通過hash的方式,把一個個區塊鏈接起來形成一個區塊的鏈條。
    
特點:
  • 無中心化 :沒有管理員 無需添加額外審核
  • 分布式數據庫 
  • 能耗大,非常浪費資源
 
    1.1.3 應用場景
    資產: ICO 數字資產發行、支付、交易、結算
    記賬:股權交易、供應鏈金融、商業積分
     不可篡改(區塊鏈不可篡改的特點): 溯源、重酬、醫療證明、存在性證明
     點對點特點: 共享經濟 、 物聯網 
     隱私:匿名交易
 
1.2區塊鏈前景
     任何人都可以架設服務器,加入區塊鏈網絡成為其中一個節點。可以向任何一個節點,寫入/當前數據,因為最后所有數據都會同步到區塊鏈網絡中保持一致。
1.3比特幣是什么
 
    1.3.1 比特幣
比特幣:數字貨幣 每10分鍾記賬一次
貨幣: 貨幣是可以承載價值的一般等價物
一般等價物: 任何可以作為具有交易價值的物品
  金屬貨幣—>銀票—〉法幣  ——》一串數字(虛擬貨幣)
數字貨幣: 共識 具有共識的虛擬貨幣
 
    1.3.2 特點
    信任性:財產只受自己控制 (私密鑰匙)
    無通脹性:不會因為發行過多而貶值  
                    比特幣的總量不變性:2100萬個 
   無假鈔 :
    流通性: 流通性好,全球無縫流通。免去中間商和中心化直接點對點交易
    去中心化記賬系統:
            中央服務器存儲所有數據 !=》 存在比特幣網絡每一個節點里
 
1.4比特幣原理
   1.4.1 賬本如何驗證
Hash 
     哈希函數: Hash(原始信息) = 摘要信息
        
       Hash就是 計算機可以對任意內容,計算出一個長度相同的特征值。
    區塊鏈的長度:256位 ,原始信息不同對應的Hash值一定不可能相同!
解析: 原始信息 通過Hash操作之后,對任何的原始信息,得到一個簡短的摘要信息
 Hash特點:
  •     同樣的原始信息用同一個哈希函數總能得到相同的摘要信息
  •     原始信息任何微小的變化都會哈希出面目全非的 摘要信息 
  •     從摘要信息無法逆向推算出原始信息 
  •     區塊與Hash是一一對應的,每個區塊的Hash都是針對 區塊頭 計算的
摘要信息保存起來形成了區塊
 
區塊
    區塊鏈由一個個區塊block組成。區塊很像數據庫的記錄,每次寫入數據,就是創建一個區塊。
  
 
 
  ex:區塊頭( 序號 、時間戳、 Nonce值、Hash值、當前區塊體的hash,上一個區塊的Hash值等...) +區塊體(交易記錄)
Nonce值:記錄Hash重算的次數。第100000個區塊的NOce值是 274148111,即計算了2.74億次,才得到一個有效的Hash值。
 
區塊鏈計算公式:
                      hash = SHA256(區塊頭)
hash值 由區塊頭唯一決定,SHA256是區塊鏈的Hash算法
 
ps:若當前區塊的內容變了,或者上一個區塊的hash變了,一定會引起當前區塊的Hash改變。
 重大意義: 如果有人修改了一個區塊,該區塊的hash值就變了,為了讓后面的區塊能繼續鏈接到它,就必須同時修改后面所有的區塊,否則被改掉的區塊就脫離整個區塊鏈。
    基於這類聯動機制,區塊鏈保證了自身的可靠性,數據一旦寫入就無法被篡改。
  
兩個賬本的合並:把第一個賬本的Hash值作為原始信息的一部分,與第二個賬本的原始信息和在一起進行Hash運算操作。
        對比第二個Hash值是否一致的驗證。對上了說明第二個賬本的信息和第一個摘要的信息都是正確的。
第二個賬本:形容又一個 區塊 (( 序號 、時間戳、Hash值) +交易記錄)
區塊鏈:每一個節點在核對數據的時候,只需要核對最后一個區塊的摘要信息。信息能夠核對上,說明整個區塊鏈的賬本是正確的。完成高效的賬本驗證。
 
    1.4.2 所有權問題
 
賬號: 地址表示
1.4.2.1 轉賬記錄:
    { “付款地址”:“xxxxx”
      “收款地址” :“yyyyy”
        “金額” : “2 btc"
    }
 
1.4.2.2 密碼 —>私鑰 
    一個地址對應一個私鑰
誰擁有這個私鑰 ,誰就能用於支付。私鑰泄露 比特幣就會丟失。 
    無法重新獲取,賬號和密碼不能互相推導。
 
1.4.4.3 非對稱加密技術(交易簽名)
    ————不泄露私鑰的情況下,證明  擁有某個地址的私鑰
  •     對交易進行hash得到交易的摘要
  •     用私鑰對摘要進行簽名  
 
1.4.4.4 簽名過程:
  •     對原始信息進行Hash計算 得到摘要信息
 用摘要信息和 私鑰 進行 簽名操作 sign  ——得到簽名信息
 
付款節點:
    循環廣播交易內容:   交易的 原始信息、交易的簽名 信息、交易的金額
  •  交易的節點 分發給 周圍的節點,讓周圍的節點一起驗證信息 ,整個廣播循環操作
  • 相鄰節點收到廣播后,驗證通過后,再次與之相鄰的節點進行廣播,進行驗證操作。
與相鄰的節點進行廣播驗證后:
    驗證簽名的信息是否是付款方 用私鑰對原始信息 簽名產生的 
 
1.4.4.5 驗證
    驗證運算 : 
        原始交易 信息的摘要 一致 說明 是地址私鑰所有者發出的 
         驗證通過 並寫入賬本  並再次廣播
    
1.4.4.6 簽名及驗證
    簽名 和 驗證 是逆運算
        付款的地址 是 公鑰 
    簽名的過程 是對摘要進行加密的過程: 通過摘要和私鑰 得到簽名信息
    驗證的過程 是解密的過程 :付款方地址和簽名信息進行解密,  得到交易的摘要
 
ps: 賬本 不包含任何個人信息 
 
    1.4.3 為什么記賬(挖礦)
記賬 :Hash打包過程
記賬 需要消耗資源,記賬操作完成會獲得系統12.5 btc的獎勵
 
挖礦——工作量證明
1個比特幣 相當於 4w+ 人民幣 ,一次記賬相當於能獎勵 50W+ rmb
 
    1.4.3.1 規則
  •     一段時間內 只可以有一個人可以記賬成功 (10分鍾左右)
  •     通過解決密碼學難題(即工作量證明)競爭獲得唯一記賬權
  •     其他節點 復制記賬結果
  •     使用一個常量  除以/難度系數 = 目標值 ; target = targetMax / difficulty。只有小於目標值餓Hash才是有效值  (難度系數越調越高目標值越來越小,導致采礦越來越難)
  •     難度系數動態調節機制; 即是如果每兩周調節一次,發現生成速度比法定速度快10%則難度系數增加10% ,反之亦然
為了保證節點之間的同步,所以區塊鏈的添加速度不能太快。    
 
    1.4.3.2 工作量證明
 Hash(上一個hash值,交易記錄集) = 新的Hash值
 
提高難度:
 Hash(上一個hash值,交易記錄集,隨機數) = 0000..開頭新的Hash值【直到找到一個以若干個0開頭hash值】
    率先找到一個符合條件的hash值,就能獲得一個唯一的記賬權
 
交易記錄集
  •     收集廣播中還沒有被記錄賬本的交易
  •     交易的有效性驗證
  •     添加一筆給自己轉賬的交易(挖礦獎勵12.5btc)
 
hash值是 16進制 字符串
    得到一個0  的概率 是 1/16 
    得到兩個0  的概率 是 16*16 
    得到 18個0 的概率 是 16的 18次方的 hash運算
 
    1.4.4 以什么為基准--共識機制
思考: 兩個節點同時完成工作量證明,使用誰的區塊?
    
節點工作量只有在其他的節點認同其有效的 
 
1.4.4.1 區塊鏈的分叉
上面提到的問題,如果兩方同時向區塊鏈寫入數據,雙方都鏈接着前一個區塊,就形成分叉,這時采用哪個區塊?
    答: 新節點總是采用最長的那條區塊鏈。若分叉,參考哪個分支在分叉點后面,先達到6個新區塊(“ 六次確認”。新區塊的生成速度由計算能力決定,擁有大多數計算能力的那條分支,就是被選中的區塊鏈比特鏈,沒被選中的作為備選鏈。
 
1.4.4.2 共識機制
    采用累計工作量最大的區塊鏈 是主鏈 或是說難度最大的區塊鏈
機制:
    保證 區塊鏈 比特幣在最大的鏈上進行工作 
 
 
1.5 比特幣其他
  • 比特幣P2P網絡
  • 區塊結構Merkle樹
  • 比特幣UTXO及交易腳本(未發費的交易輸出)
  • 比特幣白皮書
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM