想知道更多關於區塊鏈技術知識,請百度【鏈客區塊鏈技術問答社區】 鏈客,有問必答!
首先,不要把比特幣當成一種貨幣,而是一個總帳。它是個電子總帳,網絡上的每個參與者的電腦都會有一份總帳的備份,而且全部的備份都是在實時的持續的更新、對帳、以及同步着。
每個參與者都能在這本總賬裏記上一筆,這一筆記錄着必定數量的幣從一個參與者那裏被髮送到另外一個參與者那裏,而且每一條這樣的記錄都接着就實時的廣播到網絡了,因此在每一臺電腦上的每一分份拷貝都是幾乎同時更新的,而且全部的總帳拷貝都保持着同步。這本公開的分佈式的總帳的官方叫法是「區塊鏈(blockchain)」,而且它使用了BT技術以保證全部的拷貝都是同步的。
而且儘管單個哈希值用如今的計算機能夠幾乎即時的計算出來,但只有一個前13個字符是0的哈希值結果能夠被比特幣系統接受成爲「工做量證實」。這樣一個13個0的哈希值是極其不可能與罕見的,而且在當前須要花費整個比特幣網絡大約10分鐘的時間來找到一個。在一臺網絡中的機器隨機的找到一個有效哈希值以前,上十億個的無效值會被計算出來,這就是減慢信息傳遞速率並使得整個系統可用的「工做量證實」。
那臺發現下一個有效哈希值的機器(或者說在咱們類比中的城邦),把全部的以前的信息放到一塊兒,附上它本身的,以及它的簽名/印章/諸如此類,並向網絡中的其餘機器廣播出去。只要其餘網絡中的機器接收到並驗證經過了這個13個0的哈希值和附着在上面的信息,他們就會中止他們當下的計算,使用新的信息更新他們的總帳拷貝,而後把新更新的總帳/區塊鏈做爲哈希算法的輸入,再次開始計算哈希值。哈希計算競賽從一個新的開始點從新開始。如此這般,網絡持續同步着,全部網絡上的電腦都使用着同一版本的總帳。
最後,在我的向網絡輸入一筆交易的時候,他們使用內嵌在比特幣客戶端的標準公鑰加密工具來同時他們的私鑰以及接收者的公鑰來爲這筆交易簽名。這對應於拜占庭將軍問題中他們用來簽名和驗證消息時使用的「印章」。所以,哈希計算速率的限制,加上公鑰加密,使得一個不可信網絡變成了一個可信的網絡,使得全部參與者能夠在某些事情上達成一致(好比說攻擊時間、或者一系列的交易、域名記錄、政治投票系統、或者任何其餘的須要分佈式協議的地方)。
這一解決方案在一系列的歷史事件發生以前是不可能的,這些事件有:
互聯網的創造
公鑰加密算法的發明
點對點Bitorrent(BT)協議的發明。BT協議最開始是開發來用於在網絡上的相對小的用戶子集之間共享許多文件的,但比特幣用它來在全部用戶之間共享單個文件。
人們意識到,在系統中添加一個簡單的時間延遲,同時使用公鑰加密算法以驗證每筆交易,能夠解決這個問題。
能夠推廣到任何核心問題是在分佈式網絡上缺少信任的領域。如咱們已經提到樂的,人們正在爲互聯網建設一個分佈式的域名系統,以及爲政治選舉建設分佈式的投票系統(尚未網站)。若是人們認爲單純的文件分享攪亂了這個世界,那麼比特幣解決方案和協議纔剛剛打開洪水的閘門。
PS:如今比特幣,對交易速度是有限制的,防止區塊過大(如今區塊限制1M左右),大約每秒很少於7筆,天天60萬筆。而如今峯值是天天7萬筆。
當我在2011年開始使用比特幣的時候,個人比特幣軟件花了一天的時間來下載從2009年起源開始到2011年的全部比特幣交易記錄。到了2013年,若是客戶端連續幾天沒有開啓運行的話,它每次啓動就得花幾個小時來遇上最近幾天的交易記錄的進度。算法