文章閱讀頁通欄

河南22选5开走势图:比特幣的信任模型

來源: 區塊網 作者:
比特幣是一種去中心化的數字貨幣,它建立在信任系統的基礎上,并以諸如橢圓曲線的各種性質等密碼難題為基礎。在不深入研究比特幣數學方面的情況下......
比特幣是一種去中心化的數字貨幣,它建立在信任系統的基礎上,并以諸如橢圓曲線的各種性質等密碼難題為基礎。在不深入研究比特幣數學方面的情況下,讓我們看看比特幣信任系統是如何構建的。要正確理解本文的關鍵思想,不需要深入了解密碼學。但是,您應該對私鑰和公鑰有基本的了解。

“我在哪兒簽名?”

每次您想授權付款時,都會要求您進行某種形式的驗證。核實的目的是,一旦你以自己的名義批準了一筆交易,這筆交易就不可逆轉。當然,在某些情況下,您可能希望添加一個條款,即如果某些條件沒有得到滿足,付款必須向另一個方向進行托管。但一旦一項交易獲得授權并簽署,就會成為定局。唯一的問題是:你能完全肯定地證實它確實是由它所代表的人授權的嗎?使用簽名來識別用戶的問題是一個老問題。曾經有一段時間,人們用昂貴的徽記密封信件,以證明信件  確實來自某個權威機構。

河南22选5第202期开奖 www.lyedr.com 封信與應用封信的做法已被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

關鍵詞: 比特幣  私鑰  公鑰  密碼學  
0/300
?