比特幣網路何時知道新錢包?
我只是向一位朋友展示了一個確定性錢包,他問“網路什麼時候知道錢包?” 我只能猜測只有當交易被廣播和確認時才知道……但我認為這不是全部。我還有一些未回答的問題。我認為這是因為我並不完全理解其中的密碼學方法。
- 所以為了爭論,我們有User A和User B。
- 使用者 B使用離線電腦創建了一個大腦錢包,該電腦實質上為使用者 B提供了一個公鑰和一個私鑰。
- 使用者 B告訴使用者 A將比特幣發送到該地址並提供她的公鑰。
- 使用者 A線上,因此他使用他最喜歡的客戶端發送帶有簽名交易的硬幣,包括費用。
發生什麼了?
網路(我指的是網路上正在轉發交易的節點)如何知道這是一個真實地址,使用者 B 到底是離線的?
如果沒有硬幣被發送到這個地址,區塊鍊是否需要知道這個錢包是否已經創建?
TL;DR: 網路不知道地址所有權,也沒有人可以檢查地址是否擁有,除非它以前曾被使用過(或由他自己擁有)。任何人都可以將交易發送到任何有效(如形狀正確)的地址¹,收件人不必線上即可進行交易。
讓我稍微詳細說明一下,以便解釋:
地址是非對稱密鑰對的公鑰
地址是非對稱密鑰對的公鑰。密鑰對的所有者可以使用私鑰簽署交易或消息(例如為了證明所有權)。只有使用正確的私鑰才能創建有效的簽名,然後任何人都可以使用關聯的地址(同樣是公鑰)驗證其是否有效。
錢包是一種抽象
錢包是一個抽象結構,它包含一組為使用者隨機生成的公鑰和私鑰對。在確定性錢包中,密鑰是從密碼而不是隨機種子派生的。
比特幣客戶端軟體為使用者提取錢包,以便檢查錢包中包含的每個地址,是否有與它們關聯的區塊鏈中的餘額(*交易輸出)。*它匯總資金並將其顯示為單個總餘額。然而,在底層,這些餘額公開儲存在區塊鏈中(沒錯,錢包不包含你的硬幣,它只允許你使用它們)。它們被分成許多地址和交易輸出:
- 地址 #15521³ 有
+ 3 BTC 在交易輸出 1
- 地址 #23414 有
+ 1.2 交易輸出 1 中的 BTC + 交易輸出 2 中的 0.7 BTC
- …
每個人都可以看到它們,但是,通常無法確定所有者的身份。
交易是所有權變更的公開通知
現在,當有人發送交易時,他基本上會向網路中的每個人發出通知,以查看他在其中將一些交易輸出簽名到收件人地址。他用他的私鑰簽署此通知,以便每個人都可以檢查他是流出餘額的合法所有者(因為他們可以看到餘額是從哪個地址發送的,他們知道使用哪個公鑰來驗證有效性)。無論接收者是否線上,都可能發生這種情況:比特幣將可供新地址的所有者使用,因為只有他擁有私鑰,無論何時他選擇這樣做。
無法確定地址是否歸某人所有
公鑰(比特幣地址)通過校驗和實現特定模式,因此比特幣軟體可以輕鬆評估地址是否有效。但是,除非之前使用過一個地址,否則任何人都無法檢查一個有效地址是否已被任何人實際使用過。
在任何時候,網路都不會意識到新錢包的創建,也不必如此。餘額只是簽署到收件人地址,隨後只能使用關聯的私鑰來使用。如果尚未找到新地址的私鑰,那麼任何人都不太可能這樣做——硬幣很可能會永遠失去。
¹ 通過創建原始交易,實際上可以將交易發送到無效地址。例如,這用於在區塊鏈中留下消息或驗證文件的真實性。