比特幣的信任模型

買賣虛擬貨幣
比特幣是一種去中心化的數字貨幣,它建立在信任系統的基礎上,並以諸如橢圓曲線的各種性質等密碼難題為基礎。在不深入研究比特幣數學方面的情況下,讓我們看看比特幣信任系統是如何構建的。要正確理解本文的關鍵思想,不需要深入瞭解密碼學。但是,您應該對私鑰和公鑰有基本的瞭解。“我在哪兒簽名?”每次您想授權付款時,都會要求您進行某種形式的驗證。核實的目的是,一旦你以自己的名義批准了一筆交易,這筆交易就不可逆轉。當然,在某些情況下,您可能希望新增一個條款,即如果某些條件沒有得到滿足,付款必須向另一個方向進行託管。但一旦一項交易獲得授權並簽署,就會成為定局。唯一的問題是:你能完全肯定地證實它確實是由它所代表的人授權的嗎?使用簽名來識別使用者的問題是一個老問題。曾經有一段時間,人們用昂貴的徽記密封信件,以證明信件  確實來自某個權威機構。

封信與應用封信的做法已被PGP金鑰所取代。PGP金鑰很有趣,因為在某些方面它們與比特幣金鑰非常相似。讓我們花一分鐘看看PGP,然後看看比特幣是如何建立在這個基礎上的。

有兩種使用PGP金鑰的方法:

1. 用於加密和解密電子郵件。如果有人截獲了郵件,他們就無法破譯郵件內容。
2. 簽署訊息。如果有人攔截,他們能夠驗證訊息的真實性。

PGP有效地替代了密封裝置。過程如下。首先,必鬚生成公鑰-私鑰對。現在你寫電子郵件。完成之後,您拿著您的私鑰和電子郵件,透過PGP簽名程式執行它,然後會出現一個簽名。此簽名只能由持有私鑰的人生成。怎麼能確定呢?您獲取訊息和簽名,並透過提供傳送方公鑰的PGP驗證程式執行它。這個程式會告訴你這封郵件是否真的是由他聲稱的那個人寫的。唯一需要回答的問題是:如何獲得公鑰?這是一個有趣的問題,因為加密技術沒有為您提供任何機制。它完全掌握在使用者手中。通常,在PGP的情況下,使用者上傳他們的一些中央伺服器公鑰,這樣任何人都可以取。

比特幣使用了一個非常類似的公鑰加密過程。然而,比特幣程式不需要對訊息進行簽名,而是允許您對交易進行簽名。

比特幣交易如何簽署?

現在你已經瞭解了PGP加密是如何工作的,你可以開始考慮比特幣簽名了。不過這有點棘手。天真的想法是,當您建立一個交易提供從您的帳戶中扣除X數量的比特幣並將其轉移到Y時,您只需要簽署這個建議。但這有一個問題。如果您只是在建立交易,說明您想要轉移資產,那麼誰會驗證您確實有錢?這將需要一些中央權力進行核查。比特幣的設計初衷並非如此。因為權力最終掌握在使用者手中。比特幣提出了一個絕妙的解決方案。這個想法是這樣的:只有在過去的某個時候你收到了比特幣,你才有可能擁有比特幣。這樣,唯一可以宣告事務的人,就是持有私鑰的人。因此,比特幣簽名有雙重用途:

· 它驗證您是事務的真正建立者,並且
· 你確實擁有你將要轉移的比特幣。

後者是最基本的。我們將在其他帖子中看到這是如何形成錢包(或賬戶集合)的基礎。順便說一下,以太坊以略不同的方式介紹了一個獨立帳戶的概念。但比特幣只是一個交易鏈。因此,對於所有權來說,你必須掃描交易鏈並使用它們,你必須解鎖它們並在交易中使用它們。

附註: 您可能想知道:以太坊為什麼有一個較好的設計,因為它允許建立賬戶。這取決於用例。設計上的簡潔性使系統保持流線型,比特幣確實實現了價值儲存的目的。

每個事務都由輸入和輸出組成。每個輸入都包含一些以前的事務。每一項產出都包括資金被送往的目的地。當您簽署一個事務時,您同時簽署輸入和輸出。透過對輸入的簽名,您實際上是在說您是這些代幣的真正所有者。透過對輸出結果的簽名,您就同意確實希望將這些代幣傳送到指定的地址。為了保持資金流動,交易的每個輸出都被用作另一個交易的輸入。

輸出消耗為輸入

足夠的理論。讓我們看一個真實的交易。

這是透過電線傳輸的實際交易。我們無法從中瞭解任何東西。我們如何解釋它?一個詞: 協議。

協議是一個標準的用於定義交換資料的方法,從計算機networkIf的交易協議規則中,我們可以看到交易是如何構造的。

交易協議

輸入交易協議

輸出交易協議


讓我們根據協議分解交易


包含後設資料資訊。例如,它告訴程式這是一條事務訊息。

版本
允許向後相容性。如果使用新欄位更新協議,則舊事務不應變得不可識別。

事務目擊者
這是作為隔離證人變更的一部分而引入的一個領域。我們改天再看。

引用的事務
事  務僅包含對正在使用的前一個事務的特定輸出的引用。它使用事務雜湊值和輸出索引號(從0開始)的組合。如果需要,程式可以使用它的雜湊值獲取整個事務。使用索引號,它知道將哪個輸出用作輸入。

要計算事務雜湊值,您需要連線事務的完整十六進位制表示,並計算該字串的SHA256兩次。

序列
見https://bitcoin.stackexchange.com/a/55113。

價值
傳送的金額(以satoshi表示)。

鎖定時間
解鎖此事務的塊號或時間戳。

公鑰指令碼(scriptPubKey)
事務的目的地。隱藏在這個指令碼中的是接收方的公鑰雜湊值,表示為十六進位制。要獲得相應的比特幣地址,只需將此十六進位制轉換為Base58。

簽名指令碼(scriptSig)
與scriptPubKey類似,scriptSig包含授權事務的簽名。除了簽名本身之外,所有部分都已簽名。

現在我們知道了編碼的規則,讓我們解碼它:

有一個事務輸入,即hash2936ee6a0db4e4901988503bb6e966128dd5fa01bcf08451f78a1d5b08dbbd6事務的第0個索引,有兩個輸出。其中一個是0.05 BTC,地址為3swtkzdetsfxyjqgdwtvpqulv64rvktbzthukvxxre4th6tsgxnrg
其餘33.54 BTC,地址為3q7mcidryx4d9pefdeqckuq2iug4i4efb8buho7gflckepynwkr4h。

您可能已經注意到,與其簡單地呼叫公鑰和簽名,還不如呼叫公鑰指令碼和簽名指令碼。這是一個非常強大的概念,我們將在其他時間深入探討。但我將留給您這樣一個想法:有時您希望建立一個可程式設計事務,以便它只在滿足某些條件時才執行。例如,如果發現有問題,您可能希望返回剛購買的商品。或者你的經理想要批准你做的每一筆交易。指令碼支援有趣的用例,並且正在進行進一步改進指令碼的工作。

交易是比特幣分散式對等電子現金系統的關鍵組成部分。公鑰密碼學確保了沒有人可以只接受您建立的交易並更改它,這樣一來,比特幣現在的地址將與您打算髮送的目的地不同。它還確保除了私鑰所有者之外,任何人都不能訪問傳送給他的資金。

概括地說:交易是不可逆轉的,也是無可爭辯的。要使用以前事務的輸出作為新事務的輸入,您需要私鑰。這允許您對訊息進行簽名。要將資產傳送到某個帳戶,需要它們的公鑰。交易是比特幣系統的核心特徵之一。

但這並不是信任體系的全部。如果我建立一個事務,廣播它,然後快速建立另一個事務,並廣播那個事務,會怎麼樣?誰來廢除其中一個?一般來說,世衛組織確保系統中的所有事務都公平地進行。如果比特幣需要一個實體來檢查一切是否公平公正,它就不會被認為是去中心化的。在這篇文章的第二部分中,你將看到如何可以在沒有一箇中心機構的情況下,確保一切事物順利執行。

上面探討了如何以加密方式密封交易,從而使除所有者之外的任何人都無法對其進行j決策。我們簡要地討論了這些交易是如何透過網路提交併廣播到整個網路的。我們還討論了接收方如何接收這些交易並在後續交易中使用它們,從而建立一個順序,在這個順序中,先前交易的輸出作為新交易的輸入使用。

建立交易之後,需要在某個地方寫下它,以便以後可以引用它。這需要一個儲存模型,其中所有的交易都可以被記錄(也稱為分類賬)。為什麼我們需要以前的交易?因為為了驗證某筆交易是正確的而不是欺詐的,您必須從一開始就跟蹤它(從Nakamoto的賬戶開始)。我建議你暫停一下思考為什麼需要這樣做?有沒有更有效的方法來處理這個問題?

這顯然是一個乏味的過程!在每分鐘發生數百萬個交易的情況下,您不可能花費所有的計算資源來試圖弄清楚交易是如何構造的。這裡有一種簡單而優雅的方法可以解決這個問題。將一組交易儲存在塊中,並將這些塊連結在一起。而不是在接受的單個交易上蓋章。透過這種方式,在檢查某個交易是否確實正確而非欺詐時,您只需獲取前面引用的交易及其塊,並對其進行驗證即可。

這總結了比特幣的儲存模式。但是如何進行溝通呢?區塊鏈中有不同的角色—每個角色都有自己的角色集。有些正在向區塊鏈新增塊。有些只是簡單地將塊傳遞給其他塊—確保所有塊都被考慮在內。有些正在建立/傳輸實際的交易。有些只是驗證這些交易。有些只是監視區塊鏈上發生的活動。但這一切是如何在不受外部影響的情況下以一種自我維持的方式發生的呢?

在我們深入研究理論之前,我想介紹一下系統中的一些關鍵角色。稍後我們將進一步闡述其目的。這些參與者(更具體地說:節點)可能以某種形式重疊,但在概念上是獨立的實體。

錢包
錢包(也稱為簡單支付驗證節點)有兩種功能:
1. 它需要掃描區塊鏈來檢視哪些交易屬於他
2. 它需要建立向網路廣播(並最終挖掘)的交易。

種子
在任何時刻,每個節點都連線到若干其他任意節點;形成點對點節點的網格狀結構。然而,為了發現其他節點,一個節點必須首先連線到“種子”節點——這將引入其他節點。

礦工
礦工將塊放入區塊鏈中。它們彙集所有未經確認的交易;按照開礦費(最高)對它們進行排序,並將其新增到區塊鏈中。然後將這個新挖掘的塊廣播到網路的其他部分。簡而言之,礦商的工作就是將交易轉換為塊。

中繼器
中繼器只是監視活動。他們可以判斷網路的健康狀況;參與訊息傳遞;或者查詢區塊鏈以獲得其他統計資訊。

在上述文中我們在討論中提到,對於一個具有加密簽名的交易系統,仍然有可能濫用該系統。如何確保新增到區塊鏈上的交易沒有被篡改?如果一個淘氣的參與者開始用不正確的交易/訊息轟炸系統,該怎麼辦?如果有人同時將x個BTC傳送給A和x個BTC傳送給B,會怎麼樣?哪一個是有效的?如果礦商接受兩個不同的交易呢?節點之間如何協調一致地進行網路更改?可以用一個問題來概括:這個體系是如何監管的?

這些都是密碼學上的、受保護的、不受信任的網路中的難題——在某種意義上說,任何一方都不能危害生態系統。所有節點必須符合網路規則,如有異議,一組節點可以對當前的區塊鏈進行快照;

提出的比特幣解決方案中的一個關鍵概念是形成一個定義良好的塊順序。如果您已經訂購了塊,並且得到了所有對等方的一致同意,那麼同一個交易不可能在區塊鏈中出現多次。一個簡單的方法可以是簡單地向塊(1,2,3…)新增索引。更好的方法是新增時間戳而不是數字,因為時間戳還提供關於塊建立時間的額外資訊,每個塊隨後可以引用前面的時間戳(假設每個時間戳是惟一的)。在我們的系統中仍然有一個明顯的問題。你能看出來是什麼嗎?

任何人都可以在任何時候建立一個塊,並可以向網路傳送幾十個塊的垃圾郵件。這將導致網路癱瘓,比特幣將完全無法使用。在Bitcoin白皮書中提出的解決方案如下:當向區塊鏈新增一個塊時,礦商被要求破解一個密碼難題,並將產生的雜湊值新增到塊中。這個謎題的設計方法是這樣的:它很容易驗證是否正確解出了,但如果事先不知道答案,就很難解出。此外,比特幣網路還可以定期調整這個謎題。例如,2019年初,採礦難度比兩年前提高了1800%左右。這樣做是為了抵消採礦機雜湊功率的上升,並在系統中保持平衡。當然,如果礦商沒有開採這些交易的動機,所有這些工作都將毫無意義。這就是所有交易都要收費的原因——費用由礦商承擔。在2140年之前,礦工們還將獲得一些BTC作為繼續採礦的額外激勵。這個額外工作產生的雜湊值也用於排序;而不是依賴於時間戳。但是,我們仍然在塊上使用時間戳,因為它們為我們提供了有價值的資訊。


到目前為止,我們已經有了一個帶有時間戳的、受垃圾郵件保護的、連結在一起的塊,這些塊由看起來相當可靠的交易組成。讓我們進一步測試它。礦工有可能做出惡意行為嗎?例如,他可以在一個塊中引入一個從來沒有人請求過的交易嗎?如果兩個不同的塊包含由兩個不同的礦商幾乎同時產生的一組相同的交易,該怎麼辦?

這是兩個不同的問題,但值得探討。為了解決第一個問題,我們需要介紹比特幣區塊鏈如何巧妙地處理雜湊值。雜湊值是一種固定大小的資料,用於確保某些輸入的完整性。首先,我們計算一個塊中所有交易的雜湊值。然後,我們使用一種稱為Merkle根構造的技術來計算根雜湊值。這個雜湊值可以看作:所有的雜湊值。簡單來說,根雜湊保證了塊中所有交易的完整性。礦機或中繼器不可能引入不屬於原始塊的交易,因為這會破壞整個塊的雜湊值。很好,那麼同時生產多個塊呢?

這就有點複雜了,因為比特幣論文並沒有給出一個具體的答案。相反,它被留在了一場碰運氣的遊戲中。不幸的是,必須有人輸掉這場戰鬥。讓我們畫一幅畫。假設中國的礦商X和美國的礦商Y的區塊中都包含了交易T。x 產生塊 b1 和產生的區塊鏈是 [..。a→b1], 而 y 的區塊鏈看起來像 [..。a→b2]。這兩個塊被廣播和轉發, 直到最終74% 的節點知道一個區塊鏈 [..。a→b1], 而18% 的人知道區塊鏈為 [..。a→b2]。這兩個區塊鏈似乎都是有效的, 儘管相互矛盾。現在,德國的一名礦工Y把區塊鏈看成是[…a→B1],他製作了另一個C塊並廣播它。他的範圍是94%的節點。所有以前和區塊鏈[…A→B2]打交道的礦商,現在都看到了這個新的區塊鏈[…A→B1 C],他們將決定放棄之前的鏈條,代之以最新的版本。如果他們不這樣做,而是繼續使用舊的開採鏈,他們就有可能將開採區塊拱手讓給大多數。最後,最流行的區塊鏈版本被認為是標準版本。這就是為什麼一般建議等到6個塊後才接受交易,因為區塊鏈的狀態可能會發生變化。作為一個挖掘人員,您希望能夠訪問儘可能多的節點,否則您的所有努力都有可能白費。另一方面,礦業權力的統一也給比特幣網路的分散化帶來了風險。如果一組礦工獲得51%的雜湊值功率,他們可以有效地從他們喜歡的區塊鏈中剝離出來。這是對比特幣區塊鏈的實際威脅,目前沒有任何安全措施確保未來不會發生這種情況。反對這一觀點的人認為這是極不可能的,而且會損害所有參與者的利益。

垃圾郵件保護(工作證明)結合區塊鏈分支和最終的合併意味著我們應該在交易廣播之後等待一段時間,然後才能有足夠的信心說它已經在區塊鏈網路中持久化。通常,開採一個新區塊需要10分鐘。如果我們等6個區塊,我們的交易就會被深埋在賬本里,我們可以非常自信地說,交易已經完成了。但是沒有人喜歡喝等一個小時的咖啡。這就是比特幣的瓶頸。這項技術不能用於日常使用,但卻引領了網際網路貨幣的發展。記住,比特幣本身就是各種試圖創造虛擬貨幣的高潮。所以,在我看來,說這項技術已經達到頂峰是不正確的。有很多改進的建議。下一個版本的加密貨幣可能在利用比特幣(Bitcoin, et al)提出的概念的同時,處理當前系統面臨的問題(比如波動性和交易速度)。


更多數字貨幣資訊:www.qukuaiwang.com.cn/news

免責聲明:

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

推荐阅读

;