硬核“拆解”比特幣

買賣虛擬貨幣
上節課我們講到,區塊鏈的發展有三個階段,分別是:密碼貨幣、可程式設計區塊鏈和價值網際網路。第一階段密碼貨幣主要以比特幣為首,今天我們就透過比特幣來詳解密碼貨幣的組成,給比特幣動個“手術”。看看比特幣系統中究竟由什麼組成的呢?2009年1月,在比特幣系統論文發表兩個月之後,比特幣系統正式執行並開放了原始碼,標誌著比特幣網路的正式誕生。透過其構建的一個公開透明、去中心化、防篡改的賬本系統,比特幣開展了一場規模空前的密碼貨幣實驗。在區塊鏈1.0階段,區塊鏈技術的應用主要聚集在密碼貨幣領域,典型代表即比特幣系統以及從比特幣系統程式碼衍生出來的多種密碼貨幣。

密碼貨幣的“瘋狂”發展吸引了人們對區塊鏈技術的關注,對於傳播區塊鏈技術起到了很大的促進作用,人們開始嘗試在比特幣系統上開發密碼貨幣之外的應用,比如存證、股權眾籌等。但是比特幣系統作為一個為密碼貨幣設計的專用系統,存在如下的問題:

比特幣系統內建的指令碼系統主要針對密碼貨幣交易而專門設計,不是圖靈完備的指令碼,表達能力有限,因此在開發諸如存證、股權眾籌等應用時,有些邏輯無法表達,而且比特幣系統內部需要做大量開發,對開發人員要求高、開發難度大,因此無法進行大規模的非密碼貨幣類應用的開發。

比特幣系統在全球範圍內只能支援每秒7筆交易,交易記賬後追加6個區塊才能比較安全地確認交易,追加一個塊大約需要10分鐘,意味著大約需要1小時才能確認交易,不能滿足實時性要求較高的應用的需求。

針對區塊鏈1.0存在的專用系統問題,為了支援如眾籌、溯源等應用,區塊鏈2.0階段支援使用者自定義的業務邏輯,即引入了智慧合約,從而使區塊鏈的應用範圍得到了極大拓展,開始在各個行業迅速落地,極大地降低了社會生產消費過程中的信任和協作成本,提高了行業內和行業間協同效率,典型的代表是2013年啟動的以太坊系統。

舉個例子:保險行業

有了智慧合約系統的支援,區塊鏈的應用範圍開始從單一的貨幣領域擴大到涉及合約共識的其他金融領域,區塊鏈技術首先在股票、清算、私募股權等眾多金融領域嶄露頭角。比如,企業股權眾籌一直是眾多中小企業的夢想,區塊鏈技術使之成為現實。區塊鏈分散式賬本可以取代傳統的透過交易所的股票發行,這樣企業就可以透過分散式自治組織協作運營,藉助使用者的集體行為和集體智慧獲得更好的發展,在投入運營的第一天就能實現募資,而不用經歷複雜的IPO流程,產生高額費用。

各種區塊鏈系統採用不同的共識方法以提升區塊鏈的效能,比如以太坊採用改進工作量證明機制將出塊時間縮短到了15秒,從而能夠滿足絕大多數的應用,以太坊未來擬採用的PoS共識演算法可進一步提升區塊鏈的效能。

比特幣是基於P2P架構的數字貨幣系統:它的架構總體上分為兩部分,一部分是前端,包括錢包(Wallet)或圖形化介面;另一部分是執行在每個節點的後臺程式,包括挖礦、區塊鏈管理、指令碼引擎以及網路管理等功能。比特幣架構如下圖所示:

今天我們來詳細瞭解比特幣的前端組成。

比特幣前端

1.  比特幣前端-錢包

錢包儲存使用者的私鑰資料庫,並管理使用者的餘額,提供比特幣交易(支付、轉賬)功能,一般可以分為冷錢包和熱錢包。

冷錢包是指網際網路不能訪問到私鑰的錢包:冷錢包往往依靠“冷”裝置確保比特幣私鑰的安全,比如不聯網的電腦、手機、寫著私鑰地址的小本本等。冷錢包避免了被駭客盜取私鑰的風險,但是可能面臨物理安全風險,比如電腦丟失損壞等。

熱錢包是指網際網路能夠訪問私鑰的錢包:熱錢包往往是線上錢包的形式。使用熱錢包時,最好在不同平臺設定不同密碼,且開啟二次認證,以確保自己的資產安全。

從部署場景來說分,錢包可以分為4種:移動錢包、桌面錢包、網際網路錢包,以及紙錢包。

移動錢包指的是執行在智慧手機、移動終端上的輕量級錢包。

桌面錢包指的是執行在普通電腦上的錢包。

網際網路錢包指的是依託第三方平臺對使用者金鑰進行保護的錢包。

紙錢包指的是將私鑰進行冷備份,可用於防範電腦或USB介質損壞所造成的私鑰丟失,也能防範駭客透過網路攻擊盜竊私鑰,但需防範紙錢包被人物理偷竊或複製。

2.  比特幣前端- HTTP/JSON RPC API

JSON-RPC是一種無狀態,輕量級的遠端過程呼叫協議(Remote Procedure Call, RPC)該規範主要定義與處理過程相關的資料結構和規則,它是與傳輸方式無關的,可在Socket,HTTP或在各種訊息傳送環境內使用。它只是將JSON(RFC 4627)作為資料格式。

比特幣提供HTTP/JSON RPC API介面,供外部透過介面控制比特幣節點。預設情況下該服務端只允許來自同一機器的客戶端訪問。使用不同語言編寫的程式可以方便地透過HTTP/JSON RPC API介面訪問比特幣節點。例如,Bitcoin-JSON-RPC-Client是一個輕量級的Java客戶端程式。

3.  比特幣前端-命令列工具bitcoin-cli

bitcoin-cli提供一個命令列工具來控制比特幣節點。該命令列工具透過JSON RPC API介面訪問比特幣後臺bitcoind。使用者可以透過發命令來完成比特幣的各項功能,例如查詢餘額、支付、轉賬等。

4.  比特幣前端-比特幣瀏覽器bx

比特幣提供一個跨平臺的C++libbitcoin庫,該庫支援比特幣全節點服務端和瀏覽器(BitCoinExplorer)作為客戶端命令列工具。比特幣瀏覽器命令提供與bitcoin-cli一樣的基本功能。但同時bx提供bitcoin-cli沒有的一些金鑰管理功能和處理工具。

5.  比特幣前端-圖形開發工具(Qt)

比特幣使用最廣的客戶端,是使用C++開源使用者介面開發工具Qt所開發的桌面客戶端。

Qt是一個跨平臺的C++圖形使用者介面應用程式框架.它提供給開發者建立圖形使用者介面所需的功能,廣泛用開發GUI程式,也可用於開發非GUI程式。Qt是完全物件導向的,很容易擴充套件,並且允許真正的元件程式設計。

比特幣前端的拆解就講到這裡啦!下節課我們將拆解比特幣的後端,看看比特幣系統強大的自我執行能力究竟是如何達成的。敬請期待~

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;