-圖 2. 簡化的交易請求訊息-
鑒于賬本由一群相互連通的計算機而非諸如銀行這類中心化的實體來維護,區塊鏈有以下幾個特點:
在我們的銀行系統中每個人僅僅了解發生在自己身上的交易和賬戶余額;而在區塊鏈中每個人都能知道其他所有人的交易。
盡管你通??梢孕湃文愕你y行,但比特幣網絡是分布式的,如果出現問題,你并沒有服務臺可以咨詢也沒人能讓你起訴。
區塊鏈本身的設計方式使得人們無需相互信任,而是通過特定的數學函數和代碼來保證其安全性和可靠性。
我們可以這樣定義區塊鏈:讓一組相互連接的電腦可以維護一個安全賬本、且賬本可以不斷更新的系統。為了在區塊鏈上完成交易,你需要一個錢包――一個讓你儲存并交易比特幣的程序。由于每個人的比特幣應該只能由自己花掉,每個錢包都受到一種特殊的密碼學技術的保護,這種技術要用到一對不同但互相關聯的密鑰:私鑰和公鑰。
編者注:使用兩把不同但相互關聯的私鑰的辦法來自于非對稱密碼學,即在加密和解密過程中使用兩把不同密鑰的密碼學技術。在這種模式中,私鑰即 Private Key,指由行動者自己保管、可以推導出公鑰(但不能反向推導出私鑰)并且(出于實際需要)不該公開給任何人的密鑰,公鑰即 Public Key,是由私鑰推導出來的、可以公開給任何人的密鑰。
公鑰密碼學一般有兩種用途。一種是加密通信,發送者使用接收者的公鑰來加密,接收者使用自己的私鑰來解密,這樣就能保證機密性;另一種是數字簽名,簽名者用自己的私鑰來簽名,驗證者用簽名者的公鑰來校驗,這樣就能保證簽名的身份同一性(不能欺詐也不能抵賴)。
……。當 David 想要支付比特幣時,他需要廣播一條經由他錢包中私鑰加密過的信息。由于 David 是唯一一個知道解鎖錢包對應的私鑰的人,所以他是唯一一個可以花費他持有的比特幣的人。網絡中的任意節點都可以通過使用 David 錢包對應的公鑰解密信息,從而檢查交易請求是否確實來自 David 本人。
當你使用你錢包中的私鑰來加密一條交易請求信息時,你也生成了一個數字簽名,區塊鏈中的計算機通過檢驗該簽名來判斷交易請求的來源和真實性。這一數字簽名是由你的交易請求和私鑰共同生成的一串文本;因此它不能被用于其他交易。如果你更改了交易請求信息中的任何一個字符,那么數字簽名就會變得不一樣,因此任何攻擊者(如果有的話)都不能更改交易請求或交易額。
-圖 3. 簡化的數字簽名-
鑒于交易請求信息需要使用私鑰加密,也就是說在支付比特幣之前,你總是需要證明你是你的錢包私鑰的所有者。由于信息總在加密后才會廣播,因此你永遠不會泄露你的私鑰。
編者注:進階閱讀:
《關于錢包的基礎密碼學》
《密碼學如何重新定義私有產權?》
追蹤你的錢包余額
區塊鏈中的每個節點都保存了賬本副本。那么,某個節點是怎樣知道你賬戶余額的呢?區塊鏈系統本身并不會追蹤余額;它僅僅記錄每一筆經過確認與驗證的交易。事實上,賬本也不會追蹤余額,而僅僅追蹤比特幣網絡內廣播的每筆交易(圖四)。要確定你的錢包余額,你需要分析并驗證整個網絡內與你的錢包有關聯的每一筆交易。
-圖 4. 區塊鏈賬本-“余額” 的驗證基于先前進行的交易。要向 John 支付 10 枚比特幣,Mary 需要生成一個交易請求,這一請求包含了 Mary 先前收到比特幣合計至少 10 枚的交易鏈接。這些鏈接被稱為 “輸入”。網絡中的節點會確認交易額并確保這些 “輸入” 暫未被花費。事實上,每當你在交易中納入某些 “輸入” 時,它們在這次交易之后的交易中就會變得無效。上述這些內容會自動在 Mary 的錢包中完成,并通過比特幣網絡的節點進行二次確認;她只是通過 John 的公鑰向他的錢包支付了 10 枚比特幣。
編者注:上面談到的只是比特幣等使用 UTXO 形式來表示資金的區塊鏈的特點。并非所有區塊鏈都是如此的,比如以太坊就不是這樣。
此文由 中國比特幣官網 編輯,未經允許不得轉載?。?a href="http://www.huohuxiazai.com/">首頁 > 比特幣行情 » 科普 | 區塊鏈的運作方式(注釋版)