區塊鏈技術
什麼是區塊鏈?
去中心化的、分佈式的、區塊化存儲的數據庫
存儲全部賬戶餘額及交易流水的總賬本
每個節點有完整的賬本數據
賬本數據記錄了全部的歷史交易數據
交易數據存儲在區塊上
每個區塊包含前一區塊ID及HASH,形成鏈
區塊鏈基本原理
如果把區塊鏈作為一個狀態機,則每次交易就是試圖改變一次狀態,而每次共識生成的區塊,就是參與者對於區塊中所有交易內容導致狀態改變的結果進行確認。
交易(Transaction):一次操作,導致賬本狀態的一次改變,如添加一條記錄
區塊(Block):記錄一段時間內發生的交易和狀態結果,是對當前賬本狀態的一次共識
鏈(Chain):由一個個區塊按照發生順序串聯而成,是整個狀態變化的日誌記錄
區塊鏈要解決的問題
如何去中心化地共享數據?
如何確保賬戶不被冒用?
如何確保賬戶餘額足夠?
如何確保交易記錄不被篡改?
誰負責記賬?
怎麼保障記賬者的可信?
怎麼保障記賬者的積極性?
區塊鏈特性
去中心化
開放性(沒有限制,開源,數據公開)
去信任(僅信任機器)
自治性,集體維護
可靠的數據庫(不可更改,永遠可訪問)
匿名性,隱私保護
核心技術
P2P網絡、數字簽名、區塊化數據庫,競爭記賬權、共識算法、交易回溯。
![比特幣底層區塊鏈技術到底是什麼?](http://p2.ttnews.xyz/loading.gif)
分佈式計算網絡
自動發現
通過種子文件,獲取初始節點(地址及端口)
連接初始節點,獲取初始節點知道的Peer
把自己的地址及端口廣播給各個Peer
接收各個Peer廣播的地址信息,構建出網絡的全貌或片段
技術領域
分佈式存儲、分佈式計算、分佈式協同
組播
流媒體
搜索引擎
通信協議
napster 、Gnutella、eDonkey、 Bittorrent(文件分發協議)
XMPP、Jabber(即時通信協議)
Paxos 、Gossip(分佈式系統狀態同步協議)
JXTA
HASH算法及非對稱加密及簽名技術
每個節點、每個人有唯一的一對公鑰及私鑰
公鑰同時也是每個節點、個人的地址和賬號
私鑰是證明”我就是我“的唯一手段
HASH算法對數據進行規整
算法
RSA、Elgamal、D-H、ECC
SHA256、 RIMPED160
加密
發送方使用接收方的公鑰加密數據
接收方使用本方的私鑰解密數據
通常使用本方面交換對稱加密的Key
簽名
發送方使用HASH算法計算數據的HASH值
發送方使用本方的私鑰加密HASH值,得到簽名
接收方使用HASH算法計算數據的HASH值
接收方使用發送方的公鑰解密簽名得到發送的HASH值
比較兩個HASH值的一致性
區塊鏈化數據庫
典型特徵
去中心化的、分佈式的、區塊化存儲的數據庫
區塊(Header + Body)
鏈
隨機數
時間戳
包含父區塊創建之後、本區塊創建之前的全部交易;
滿足某個條件的區塊HASH;
a) SHA256(SHA256(version + prev_hash + merkle_root + ntime + nbits + x )) < TARGET
b) Target值由動態的難度係數確定,Target越小,難度越高;
![比特幣底層區塊鏈技術到底是什麼?](http://p2.ttnews.xyz/loading.gif)
參考
默克爾樹是一種二叉樹,由一組葉節點、一組中間節點和一個根節點構成。最下面的大量的葉節點包含基礎數據,每個中間節點是它的兩個子節點的哈希,根節點也是由它的兩個子節點的哈希,代表了默克爾樹的頂部。默克爾樹的目的是允許區塊的數據可以零散地傳送:節點可以從一個源下載區塊頭,從另外的源下載與其有關的樹的其它部分,而依然能夠確認所有的數據都是正確的。
默克爾樹協議對比特幣的長期持續性可以說是至關重要的。在2014年4月,比特幣網絡中的一個全節點-存儲和處理所有區塊的全部數據的節點-需要佔用15GB的內存空間,而且還以每個月超過1GB的速度增長。簡化支付確認(SPV)協議允許另一種節點存在,這樣的節點被成為“輕節點”,它下載區塊頭,使用區塊頭確認工作量證明,然後只下載與其交易相關的默克爾樹“分支”。這使得輕節點只要下載整個區塊鏈的一小部分,就可以安全地確定任何一筆比特幣交易的狀態和賬戶的當前餘額。
記賬權競爭及獎勵制度(挖礦)
概述
為防止可預期的記賬節點被控制或攻擊,導致錯誤記賬行為,區塊鏈技術採用競爭記賬權的做法:
任何一個節點均可以參與記賬,因而記賬節點無法預期,也就不容易被控
競爭的過程就是看誰最先計算出滿足條件的HASH值
每次計算必須以最後1個有效的區塊為起點,必須消耗大量的計算機CPU,增加偽造記賬數據的成本
計算的結果必須得到大部分節點的認可(共識算法),才會成為新的區塊。實際算法中,如果該區塊位於最長的區塊鏈上,則為正式被認可的區塊,也即大部分節點認可計算結果,並願意在該結果下繼續計算
這個過程被稱為挖礦,或工作量證明(POW)。參與挖礦的節點稱為礦工,協同挖礦的礦工聯合體稱為礦池
a ) 以前1區塊為起點,計算滿足條件的HASH值;
b ) 將計算的結果廣播給其他節點;
c ) 其他節點驗證計算結果無誤時,認可該結果,並以該結果為起點重新進行計算;
d ) 單位時間內達到共識認可要求時,該區塊成為正式認可的區塊。
這個過程被稱系統為鼓勵挖礦的積極性,給予競爭成功的記賬節點獎勵
e ) 給予每個區塊挖礦者直接的“現金”獎勵。例如,比特幣網絡給予25個比特幣,以太坊給予5個以太幣;
f ) 以太坊:納入該區塊的交易的手續費,由發起節點和記賬節點分成(發起75%,記賬25%)。
閱讀更多 商量商城 的文章