區塊鏈入門1簡介
區塊鏈會重塑商業,社會和政治互動,以及任何其他方式價值交換。很多公司已經開始探索區塊鏈以降低交易成本,加快交易時間,降低欺詐風險,消除中間人或中間人服務。
什麼是區塊鏈

image.png

image.png

image.png
區塊鏈中交易和結算不是兩個不同的的實體。
•區塊鏈是一種對等的交易系統,之間沒有可信任的第三方。
•它是共享的,分散的,開放的分類帳交易。分類帳資料庫是複製分佈在大量節點。
•此分類帳資料庫是僅能增加,不能修改。
•無需第三方服務。
•它是網際網路上的層,可以與其他網際網路技術共存。
•區塊鏈技術旨在實現真正去中心化。

image.png
區塊鏈網路上的每個節點都有相同的區塊鏈副本,其中每個區塊都是事務的集合。 header部連結回到前一塊鏈。這意味著每個塊頭包含前一塊的雜湊值,這樣任何人都無法改變之前的任何交易塊。body包含經過驗證的事務清單,金額,當事人的地址等細節。
假設有三個候選人:Alice, Bob和Charlie 在區塊鏈上進行一些貨幣交易:
步驟1:Alice有50美元

image.png
第2步:
Alice通過向Bob支付20美元進行交易。

image.png
步驟3:
Bob支付10美元給Charlie。

image.png
集中式與分散式系統
無論集中式還是分散式,都可是分散式的。比如集中式分散式系統,主節點負責分解任務或資料並分配負載。分散分散式系統沒有“主”節點,計算是分散式的。區塊鏈就是這樣的例子。

image.png
上圖類似Hadoop的實現,雖然計算速度快,但是還是受限於控制節點。
集中或分散系統的區分:
•技術架構:系統可以集中或分散。需要考慮物理計算機(或節點)的和數量,能容忍多少節點出現故障。
•政治視角:個人,或一群人,或整個組織控制系統,那系統自然是集中的。
•邏輯視角:如果把系統切成兩半,每半個都有服務提供商和消費者,如果它們可以作為獨立單位運作,那麼它們就是分散的否則是集中的。
•企業有總部,政治上是集中的,邏輯上也是集中的
•語言溝通通常是分散
•BitTorrent等torrent是分散的
•內容分發網路(Content Delivery Network CDN)邏輯和架構上是分散的,但在政治上是集中的,因為它由企業擁有,比如亞馬遜的CloudFront。
•區塊鏈是為了實現權力下放。架構分散、政治分散,但邏輯上是集中的,像一臺全球計算機。

圖片.png
集中式系統具有集中控制功能。易於設計,維護,強加信任和治理,缺點如下:
•受限於中心點,不太穩定。
•更容易受到攻擊
•權力集中可能導致不道德操作。
•大多數情況下可擴充套件性不好

圖片.png
分散式系統沒有集中式控制,每個節點具有相同的許可權。 這樣的系統很難設計,維護,治理或施加信任。 優點:
•無中心點故障,所以更穩定和容錯
•更安全
•更少不道德行為的範圍,天生是民主的
分散式點對點系統示意圖:

圖片.png
區塊鏈分層
公共區塊鏈變體如以太坊(Ethereum)還在在成熟過程中,基於這些區塊鏈構建複雜的應用程式還不太合適。請記住區塊鏈是不僅僅是一項技術,還是商業原則,經濟學,博弈論,密碼學和電腦科學工程。
大多數真實世界的應用程式本質上都非常複雜,建議從頭開始構建區塊鏈解決方案。
區塊鏈目前還沒有全球標準,一些系統分層如下:

圖片.png
- 應用層
通常涉及用於軟體開發的傳統技術堆疊,例如客戶端程式設計,指令碼,API,開發框架等。理想情況下,區塊鏈應用程式沒有客戶端 - 伺服器模型,沒有集中式伺服器,比特幣就是這麼幹的。
- 執行層
執行應用層的指令。
比特幣是簡單指令碼
並且只允許一些指令。以太坊和Hyperledger允許複雜的執行。Ethereum的程式碼編譯為位元組碼或機器碼在自己的以太坊虛擬機器上執行。Hyperledger支援在docker中執行已編譯的機器程式碼,支援多種高階語言,如Python、Java和Go。
- 語義層
語義層是個邏輯層,因為事務和塊是有序的。本層涉及資料結構。
- 傳播層
- 一致層
協議有:Proof of Stake (PoS), deligated PoS(dPoS), Practical Byzantine Fault Tolerance (PBFT)等。
為什麼區塊鏈很重要?
集中式的一些缺點
• 信任問題
• 安全問題
•隱私問題 - 資料銷售隱私正在受到破壞
•交易的成本和時間因素
分散式系統優點
•消除中間人
•更簡單,更真實的交易驗證
•以更低的成本提高安全性
•更高的透明度
•分散和不可變
參考資料
- ofollow,noindex">本文涉及的python測試開發庫 謝謝點贊!
- 本文相關海量書籍下載
- https://github.com/satwikkansal/ibm_blockchain/blob/3d252de03586ebb96acb689842ca2d451c0eec47/node_server.py
- http://adilmoujahid.com/posts/2018/03/intro-blockchain-bitcoin-python/
- https://segmentfault.com/a/1190000014075385
- https://github.com/adilmoujahid/blockchain-python-tutorial
- https://github.com/bitcoinbook/bitcoinbook/tree/develop/code