.數據區塊算法
#區塊頭:版本號、前一區塊地址、時間戳、隨機數、當前區塊的目標hash值、merkle樹根數據庫
另外一說法:上一區塊的hash值、時間戳、挖礦難度值、工做量證實隨機數、merkle樹根hash值安全
大小爲80字節,可用於spv(簡化支付驗證)網絡
#區塊體:交易計數、交易詳情分佈式
(merkle樹會對每筆交易進行數字簽名,保證真實和不重複)函數
#以太坊區塊頭:不一樣於比特幣只包含一棵merkle,以太坊包含了三棵merkle(交易/收據(交易影響的數據條)/狀態)加密
交易樹:這筆交易被包含在區塊中了嗎spa
收據樹:XX地址在過去XX時間中,發生了XX事件的數據操作系統
狀態樹:帳戶是否存在/當前餘額多少/僞裝在這個合約中運行這筆數據,他的輸出是什麼遞歸
.挖礦與分叉
#工做量證實機制挖礦
#最長鏈解決分叉問題
.時間戳和不可篡改性
#時間維度使得數據易追溯
#數據在特定時間的存在,保證了不可篡改性
.分佈式數據庫
#單一節點數據被破壞不影響總體
.utxo交易模式
#未花費的交易輸出,每筆交易都有若干輸入(資金來源)+ 若干輸出(資金去向)
#知足來源於utxo+數字簽名的交易纔是合法交易
#因此:判斷交易的合法性不須要追溯整個交易歷史
.哈希函數
#經過兩次sha256哈希函數,生成長度爲256的二進制數字進行識別和存儲
#哈希的優勢:
單向性:基本不會被發現原始值
耗費:處理數據耗費時間一致,且輸出值定長
.merkle樹
#能夠是二叉樹也能夠是多叉樹,比特幣採用的是二叉樹:
#實現:經過向上遞歸運算最終只剩樹根存於區塊頭中
#優勢:
運行效率:消息頭只包含根的hash值,沒必要封裝底層數據,將會高效運行在智能/物聯網設備上
簡化驗證:不運行完整區塊節點,也能對交易數據進行校驗
.雙重支付/雙花支付
#時間戳+utxo(未花費的交易)+數字簽名 保證不雙重支付
.p2p網絡
#對等網絡
#每一個節點都會承擔網絡路由、驗證數據區塊等功能
.加密算法
#一、sha256:上面介紹過的哈希,用於保證交易不可篡改
#二、非對稱加密:用於交易不可僞造,使用的是橢圓曲線加密算法(ECC)
私鑰加密(交易方用私鑰簽名),公鑰解密(可經過交易方公鑰進行驗證)
公鑰能夠從私鑰提取,反之不達
##私鑰產生:
操做系統底層密碼學安全的256隨機數爲私鑰(總數爲2256,難以破解)
經過sha256和base58轉換爲易書寫和識別的50位長度私鑰
##公鑰產生:
私鑰+secp256k1橢圓曲線算法生成65字節長度的隨機數
##比特幣錢包地址產生:
前綴+body+後綴,經過base58轉換爲易識別的地址
前綴:0x00(版本前綴)
body:公鑰經過sha256+ripemd160雙哈希,hash160生成20字節長度的摘要
後綴:對body進行兩次sha256運算,取前四位
.數字簽名
#簽名:用hash算法處理信息得出hash值+私鑰加密
#解密:用公鑰對簽名解密得出hash值,比對此hash值和本身另外經過hash算法得出的hash值
.比特幣隱私模型
#傳統隱私模型:
身份信息----交易----可信任的第三方----交易對手 | 公衆
依靠第三方不暴露交易雙方信息,使公衆無從知曉
#比特幣隱私模型:
身份信息 | 交易----公衆
經過比特幣地址和交易對手完成準匿名交易
準匿名:經過對交易地址和交易額等信息進行分析,可發現交易者的蛛絲馬跡
【完】