當它控制的部分比特幣被發送時,私鑰是否用完?
以下是我目前對比特幣的理解:
我的錢包裡有 10 個比特幣。
如果我將 5 個比特幣發送給其他人,我會將私鑰從我的錢包發送到某人的公鑰地址。
這些被組合成一個新的交易,稍後由礦工確認。礦工通過檢查我的私鑰確認我擁有比特幣,並且接收者的公鑰是有效的。
然後,礦工創建一個新的私鑰,發送到接收者的錢包。
在一個簡單的真/假的基礎上,到目前為止我所說的一切都是正確的嗎?
如果是這樣,我錢包裡剩下的 5 個比特幣怎麼辦?他們會神奇地得到一個新的私鑰,還是什麼?我的錢包怎麼知道我還剩多少,剩下的比特幣又如何獲得新的身份?
錯誤,正如您在此處描述的那樣,因為私鑰和公鑰的工作方式與 that 略有不同。基礎數學很棘手,但我會嘗試用日常語言給出一個常識性的解釋。
想像一下,有一種特殊的金屬,叫做 Cryptonium,比地球上的任何東西都堅硬,而且完全堅不可摧。 沒有其他人知道它的存在,更不用說如何從中製造東西了。假設你有一台特殊的機器,可以用 Cryptonium 製作斑塊,上面有凸起的字母,上面寫著你想要的任何東西。 顯然,你會對這台製作牌匾的機器的存在保密。您可能甚至不希望任何人知道是您擁有它。但是你仍然想與世界分享這個激動人心的發現,所以你偷偷地發出一條資訊,上面寫著“看哪,一種新的堅不可摧的金屬!” 然後,深夜,你偷偷溜進鎮中心,把隱菌牌匾放在鎮廣場上。
第二天,每個人都聚集在城鎮廣場上,驚嘆於這個令人驚嘆的新牌匾。他們輪流用他們能找到的最堅硬、最鋒利、最重的東西猛擊它,而斑塊仍然完好無損。“果然,”他們想,“它是堅不可摧的。”
你決定使用秘密機器寫更多的東西,幫助鎮上的人,並逐漸贏得一個值得信賴和可靠來源的聲譽,即使沒有人知道你是誰。 但幾個月後,可怕的事情發生了。新的牌匾開始在夜間出現在鎮上,它們是假的! 其他人正在利用您的聲譽傳播虛假和誤導性資訊!他們當然沒有你的特殊機器——他們用鉑金製作他們的牌匾,而且它幾乎是堅不可摧的。但是這兩種金屬看起來一樣,市民們不知道它們的區別。你會怎麼做?
你可以向市民宣布自己,向他們展示機器,並告訴他們新牌匾是假的。他們可能會相信你,但你的機器將不再是秘密。所以相反,你會做一些非常聰明的事情。 你用這台機器製作一個鎚頭形狀的小方形牌匾。 在牌匾上,你寫著“這把錘子將摧毀所有假牌匾”。然後,您將一個搖桿連接到您製作的鎚頭上,並在第二天晚上將其留在鎮中心。
現在,市民們可以簡單地用錘子敲碎所有的假白金牌匾。果然,虛假和誤導性的資訊都容易被破壞,而你生產的資訊卻能經受住錘子的力量。你的名譽被保留了,你的秘密從未被洩露。錘子、秘密機器和牌匾共同構成了一個無與倫比的系統,讓您可以發送只能來自您的資訊,而無需透露您的真實身份。還不錯吧?
在許多方面,公鑰密碼學就像我們想像中的 Cryptonium metal 一樣工作。它由三個部分組成,它為其他人提供了一種方法來確定消息來自您,而無需您透露您的身份或您發送消息的秘密方式。與 Cryptonium 系統一樣,您需要所有三個組件才能使系統正常工作。這三個部分是您的公鑰、您的私鑰和您的簽名(您可以根據需要製作任意數量的簽名,對所有不同的消息進行簽名。)在我們的故事中,私鑰就像秘密機器,公鑰是像錘子,簽名像牌匾。實際上,公鑰加密比我在這裡描述的更複雜,如果您想了解更多資訊,可以查看這門課程來自可汗學院。然而,這個例子應該足以理解比特幣中如何使用私鑰和公鑰。
首先,沒有其他人會看到您的私鑰。相反,就像秘密機器一樣,您使用您的私鑰來製作人們可以確定來自您的簽名(如牌匾)。每個人(以及每個比特幣地址)都有一個公鑰和一個私鑰,它們共享一個特殊的數學關係,而公鑰(就像錘子一樣)是其他人可以用來驗證你的簽名是否真實的東西。當你發送比特幣交易時,你不會洩露你的秘密機器——你只是用它來發送消息說你要把比特幣給誰。此簽名消息或簽名不可能來自除地址所有者之外的任何其他人,因此每個人都知道交易是真實的。
其次,私鑰不是來自礦工——而是來自你。你是秘密選擇一個隨機私鑰的人(比特幣軟體會為你做這個),並且該私鑰被用來在任何人發送它之前找出你的地址(這基本上是你的公鑰的一個版本)比特幣。礦工從一開始就沒有它。他們只看到您的交易(簽名)和您的接收地址(公鑰)。
最後,只是為了讓事情有點混亂,您必須一次用完整個交易. 因此,如果有人向您發送了 10 個比特幣,而您想向其他人發送 5 個比特幣,您實際上發送了一個交易,將您收到的所有 10 個比特幣發送到另一個人的地址,將 5 個發送到您自己的另一個地址(這稱為交易中的“更改”)。比特幣這樣做是為了讓其他人無法分辨交易的哪一部分是你發送的,哪一部分是變化(沒有人知道哪些地址屬於同一個人)。它有助於保護您的隱私。但是,如果您願意,您可以將更改發送回相同的地址,因為您的私鑰仍然是安全的。你只需要使用與預設比特幣客戶端不同的客戶端,因為它沒有辦法做到這一點。 所有這一切都發生在幕後,這就是為什麼在您執行此操作後您的餘額仍顯示為 5 個比特幣的原因。比特幣將你所有不同的地址和私鑰儲存在一個叫做錢包的東西中,餘額是錢包擁有的總比特幣。所以它讓一切都保持簡單!
有道理?希望它不會太長,但我想嘗試讓公鑰/私鑰的事情更清楚。
不。交易通過ECDSA簽名工作。
基本上,您編寫交易並使用您的私鑰對其進行*簽名。*任何擁有您的公鑰、消息和簽名的人都可以輕鬆驗證該公鑰的所有者是簽名消息的人(另一方面,偽造簽名非常困難)
交易可以有多個輸入:在這種情況下,需要每個輸入密鑰的簽名。
它們也可以有多個輸出。通常,交易會耗盡輸入中的所有資金。所有的變化都回饋給輸入,所以一筆交易可能有輸入 A(餘額 10 BTC)和 B(餘額 15 BTC),有 20 BTC 輸出到 C(由其他人擁有),以及 5 BTC 輸出回到 A。預設情況下,大多數客戶端會創建“更改地址”(或讓您選擇這樣做)。在這種情況下,會創建一個新地址 D 來接收交易的更改,並將新地址添加到您的錢包中(這使您更加匿名。如果有一些非- 交易涉及匿名交易所,change key不一定與你相關)
任何未計入交易的比特幣都被視為“交易費用”,是礦工收取的額外激勵。
另請參閱:為什麼發送到一個地址時會有兩個交易輸出?