**區塊鏈概念**</br>
區塊鏈技術用區塊去記錄流水賬,(位元幣的第一個區塊--創世區塊)
支付寶的相護寶是用了螞蟻的區塊鏈技術,
**區塊鏈的優點**</br>
去中心化,更安全
**分布式系統**</br>
通過互聯網來維護一個公共的賬本,由兩個以上節點組成一個整體,節點獨立,節點能相互通信,
區塊鏈所有節點如何達成共識?通過演算法:</br>
共識演算法:作業量證明(PoW)--代理權益證明(DPoS)--PBFT(拜占庭容錯)</br>
行業組織:位元幣基金會--以太坊基金會--block.one(EOS)--Hyperledger(Linux基金會)(專注企業的應用)
https://www.hyperledger.org/about/members 可以看到很多大企業加入
**主流幣區塊瀏覽器**</br>
btc.com
etherscan.io
eosx.io
**如何驗證交易雙方**</br>
私鑰---只有發起人知道</br>
公鑰---用私鑰運算得出,單向加密,無法解密</br>
加密計算的在線網站:1024tools.com/hash</br>
交易簽名:跟手寫簽名一樣,“數字簽名”用于提供交易真實的證明,不同的是“數字簽名”對每一筆交易都是唯一的,</br>
**錢包**</br>
生成鑰匙對、賬戶名;查看余額、轉賬;使用去中心化應用
**如何發送和記錄交易**</br>
轉賬資訊+私鑰簽名進行廣播式的發送,快速傳遍全網,各個節點拿公鑰進行核對驗證,
驗證后存盤到分布式賬本中,
**驗證交易**</br>
沒有中心機構,由誰來驗證交易;礦工:專門用來驗證交易并維護賬本的節點,</br>
礦工把交易分組成一個區塊
**新區塊決出**</br>
求解新區塊方法:作業量證明(Proof of Work),PoW是解決一個特定的數字問題,費時費力作業量大,但別人容易驗證,</br>
*PoW*三要素:
亂數(nonce):一個亂數字,用于參與哈希運算,直到哈希值滿足前幾位是0,這個亂數就可以確定了,
哈希(hash):一個固定長度的文本,是哈希運算的結果,
交易(Tx):真實的轉賬資訊,
**挖礦的回報**
一個位元幣新區塊獎勵12.5個BTC,
**位元幣的發行**新位元幣被發送到采礦成功的礦工(Coinbase),總共2100萬枚,</br>
**緩釋機制**網路自動調整難度,區塊哈希的0位數增加,每21萬個區塊,獎勵減半,</br>
**區塊的實作**
```
class Block{
var index=0
var timeStamp=Date()
Var preHash=""
var nonce=0
var hash=""
var key:String{
get{
return "\(self.index)\(self.timeStamp)\(self.preHash)\(self.nonce)"
}
}
}
```
Hash的演算法選擇有很多種</br>
比如SHA1演算法
```
extesnsion String{
function sha1()->String{
let task=Process()
task.launchPath="/usr/bin/shasum"
task.arguments=[]
let inputPipe=Pipe()
.....
}
}
```
**區塊鏈結構**</br>
區塊的容器(按區塊高度排列)</br>
每一個區塊包含上一個區塊的哈希</br>
每一個區塊哈希滿足前幾位是0(網路難度自動調整)</br>
創世區塊的哈希為0</br>
```
區塊鏈
class Blockchain{
var blocks=[Block]()
init(_genesis:Block){
}
func add(block:Block){
if blocks.isEmpty{
block.preHash="0"
本區塊的哈希計算
}else{
block.preHash=blocks.last!.hash
block.index=blocks.count
//本區塊的哈希計算
}
blocks.append(block)
print("完成添加新區塊!")
}
func genHash(for block:Block)->String{
var hash=block.key.sha1()
//算出哈希,第一位是0,如果沒算出來,就把亂數遞增
while !hash.hasPrefix("0"){
block.nonce+=1
hash=block.key.sha1()
}
return hash;
}
}
let block1=Block()
let blockchain=Blockchain(block1)
```
**同時挖到位元幣算誰的**</br>
同一時間挖到同一個區塊的可能性是存在的,每個節點收到新區塊的時間不一樣,可以產生分支,在經歷過多次分治后,切換到最長的那條,
位元幣一般是等6個新區塊后,就穩定下來了,
短分支中的交易被退回到”待確認交易池“,等待稍后處理,
*偽造新區塊發布*很容易被驗證,不正確的哈希會被忽略,
*更改區塊中的交易*,會導致整體區塊哈希值變化,要想這個區塊被網路承認,必須重新計算,
由于后續區塊包含前一個區塊的哈希,以此類推,后續所有的都要重新計算,---51%算力攻擊
**位元幣如何匿名**
*天生匿名性*由于交易雙方只有公鑰公開,不需要任何個人或組織資訊,
但公鑰就是化名,因為賬本公開,可輕松找到一個公鑰的交易歷史,仔細分析這些交易元資料,依然可以追蹤相關資金的使用情況,
使用密碼學技術創建一個安全的賬本,讓交易無須通過第三方進行,</br>
加密貨幣的使用遠比法幣簡單,通過創造一種加密貨幣,代表任何資產,比如代表一美元,代表一桶石油等等,從而實作一個全球化的、實時的、可靠的、超低運行費用、而且可以匿名的交易系統,
降低對中心化的依賴,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/351059.html
標籤:區塊鏈
下一篇:2021-11-06
