和傳統的電子支付一樣,比特幣也拋棄了紙鈔、黃金這樣的實體,但為了在點對點環境下實現可信支付,比特幣創造性地使用交易記錄作為貨幣的載體。雖然在比特幣名字中有“幣”這個字, 但在比特幣這個系統中并不存在一枚金光閃閃的“幣”。 比特幣所構造的模型迥異于傳統銀行系統的余額制, 當然更不同于古老的金銀鑄幣和紙鈔(倒是在流通模式、隱私保護上與金銀和紙鈔類似)。中本聰設計的比特幣,以交易記錄的形式出現。你并非擁有一個比特幣, 而是擁有別人轉比特幣給你的一筆記錄。這個記錄就叫作“未花費的輸出”(Unspent Transaction Output,UTXO),可以理解為一張可轉讓的權利電子憑證。
很多論著或報道告訴我們,區塊成鏈,所以我們把這種技術形象地稱為“區塊鏈”。實際上,比特幣區塊之中的交易通過UTXO記錄的形式也勾連成鏈,形成了連續的交易鏈條,也即交易成鏈。我們來具體了解一下“區塊”的特點和“鏈”的形成過程。
“區塊”是將多筆交易數據打包在一起形成的數據體。可以將區塊理解為一個賬本, 賬本里記錄了多筆交易。單筆交易在最簡單的情況下,大小為250字節, 當然實際發生的交易會大于這個數值。每個區塊大小被中本聰限定最大為1兆字節(1024千字節), 那么我們就可以算出來, 一個區塊最多可以容納4096(1024000/250) 筆交易。以賬本作比喻, 中本聰限定了一個賬本最多只有1024頁。而每個最基本的交易要占用四分之一頁, 那么一個賬本最多就是4096筆交易。
區塊成“鏈”的同時交易也成鏈。記賬人按照規則在賬本(區塊)上記滿了交易后,在封面貼上時間封條,同時在賬本封面上記錄前一個賬本的編號,這樣就在賬本之間構成了一個首尾相連的賬本鏈條。這樣構成的賬本鏈條, 有一個特點:越老的賬本, 其中的交易越難以篡改。若要更改2015年高度為363270區塊中的一筆交易, 那么就要將自2015年該賬本之后的所有賬本, 全數改掉, 重新記賬才可做到。
如何防止篡改賬本呢?比特幣創造性使用了工作量證明(POW)機制,礦機通過哈希運算競爭獲得記賬權,從而防止區塊篡改。比特幣沒有中心服務器,而是由所有節點的礦機自發運行為系統提供算力。礦機通過競爭,以獲得記賬權,系統會給獲得記賬權的礦機以比特幣作為獎勵。也就是我們常說的“挖礦”。礦機作POW運算就是對“區塊頭”數據進行兩次哈希運算(比特幣使用的是SHA256哈希運算), 得到了一個256位的哈希值。
算出哈希值只要幾秒時間,礦機在瞬間即可完成,因此,比特幣給哈希運算提出了要求,也即你必須算出指定要求的哈希值,比如,前19位數都是零。這樣,難度陡然增加。礦機要算出指定要求的哈希值,必須用試錯的方法,將隨機數(專業上稱作“被使用一次的非重復的隨機數值”,即Nonce)不斷代入以運算出小于某個數值的哈希值。因為SHA256的運算結果是非常隨機的, 所以, 要想運算出指定的哈希值, 唯一的方法就是不停地嘗試Nonce。因此, 礦機是否能夠挖礦成功, 一是依賴礦機的運算速度; 二是依賴運氣, 也許第一次改變Nonce的值, 就得到了合乎大小的哈希值, 也許運行幾百億次, 也沒有得到。比特幣設置了自動調節哈希運算的時間,將其設定為平均十分鐘,并動態調整。這個時間設定,是兩個方面的平衡,時間太少,消耗算力不夠,無法讓篡改企圖知難而退,且造成網絡同步不穩定,而時間太長則交易確認時間過長,礦機體驗太差。
以上是對比特幣的區塊鏈原理的基本解釋,對于非技術人員了解比特幣的運行效率而言,至關重要的有三個方面:
第一,可以將每一次比特幣交易驗證過程理解為一次“出塊”,就是將很多交易數據文件整理在一起后封裝,并蓋上數據哈希和時間戳,從此不再更改(前提是在哈希競賽中勝出并在共識機制中得到足夠多的確認)。
第二,比特幣區塊大小被設定為1兆字節,每個區塊理論上只能記載4096筆交易。
第三,出塊時間就是礦機們驗證交易、區塊打包、哈希競賽的時間,按照比特幣代碼的設定,比特幣哈希競賽的目標難度值會進行動態調整,使出塊時間平均維持在10分鐘左右。
版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。