Address

公鑰管理

  • September 16, 2020

關於比特幣私鑰/公鑰和地址,我不確定是否了解某些內容。

一個新的比特幣使用者“U”首先生成一個私鑰。他可以從這個私鑰計算出幾個公鑰。

當他想要接收比特幣時,使用者應該生成一個地址。我不明白這個地址是公鑰還是兩個不同的東西。

如果我的“U”使用者應該從 10 個不同的人那裡收到比特幣,他可以為這 10 個人生成一個公共地址,但他們將能夠看到“U”餘額,並看到他收到了 10 筆交易。解決方案是生成 10 個不同的地址。使用此解決方案,每個發件人將只能看到自己的交易,而不會看到其他 9 個交易。我錯了 ?

那麼,簡而言之,我們可以說“U”生成 10 個“虛擬賬戶”,連結到它的私鑰嗎?

如果是這樣,我不明白“U”如何計算自己的餘額:有沒有辦法讓他恢復他從私鑰生成的所有公共/地址?或者使用者應該將他生成的所有地址保存在一個文件中?

謝謝

現代比特幣錢包程序可以生成許多私鑰,每個私鑰都有一個公鑰。對於最常見的交易類型,比特幣地址源自公鑰。

正如您所說,為每筆交易生成一個新地址(即一組新密鑰)是正常的。這是因為所有的交易數據都是公共知識——它在我們稱為區塊鏈的複制交易日誌中。任何人都可以查看特定地址的所有交易,因此如果十個人每人向同一地址支付 1 BTC,他們都可以看到您在該地址總共收到了 10 BTC。這是一個隱私問題。如果地址都不同,他們無法分辨哪個屬於同一個人。

在比特幣網路中沒有賬戶,沒有虛擬賬戶,也沒有餘額。

錢包可以閱讀整個交易日誌,並將交易中所有未使用的金額相加,其中接收地址是錢包知道它擁有相應私鑰的地址。這樣它就可以向使用者展示一個總量。人們將這個總數稱為平衡,但這是一種誤導。比特幣網路不會記錄人們的餘額。比特幣網路不知道任何人總共有多少錢。美國造幣廠不知道我的架子上的塑膠袋裡有多少一美分硬幣,它不記錄我的餘額或以我的名義開設賬戶。

比特幣的術語有點混亂。比特幣被設計為數字現金。賬戶和余額與銀行相關聯,而不是與床墊下或皮革錢包中的成堆美元鈔票相關聯。如果您談論的是紙幣和金屬硬幣形式的現金,您就不會考慮賬戶和余額。您只想知道紙幣和金屬硬幣中的總金額。

現代錢包就是所謂的分層確定性(HD)錢包。從初始私鑰(或種子片語)可以以可預測和可重複的方式生成所有輔助密鑰和地址。您不需要對每個生成的密鑰和生成的地址進行備份。

一個新的比特幣使用者“U”首先生成一個私鑰。他可以從這個私鑰計算出幾個公鑰。

您所指的那種私鑰是比特幣改進提案 0032 (BIP32) 中描述的擴展私鑰,或者像 RedGrittyBrick 解釋的那樣,是 HD 錢包的動力。

擴展私鑰只包含一個“正常”私鑰,並且只能直接生成一個擴展公鑰。

然而,這些擴展私鑰還包含一些其他資訊,使它們能夠生成其他大量的擴展私鑰,這些子擴展私鑰也包含“正常”私鑰,並且這些子擴展私鑰可以擁有自己的大量子擴展私鑰。擴展的私鑰,這可以繼續下去。

當他想要接收比特幣時,使用者應該生成一個地址。我不明白這個地址是公鑰還是兩個不同的東西。

它們是兩種不同的東西。也有不同類型的地址,但不包括多重簽名類型的地址,它們都是通過對公鑰的雜湊進行編碼來計算的。所以地址不是公鑰,而是從它派生出來的(P2PKH,P2WPKH)。地址類型讓您知道您使用哪種比特幣技術來鎖定 BTC。

如果我的“U”使用者應該從 10 個不同的人那裡收到比特幣,他可以為這 10 個人生成一個公共地址,但他們將能夠看到“U”餘額,並看到他收到了 10 筆交易。解決方案是生成 10 個不同的地址。使用此解決方案,每個發件人將只能看到自己的交易,而不會看到其他 9 個交易。我錯了 ?

這正是提出 BIP32 的原因。擴展私鑰也稱為主私鑰,它可以生成確保隱私所需的所有子密鑰。由於您可以使用主密鑰生成無限數量的私鑰,因此也可以生成公鑰,因此您可以生成無限數量的地址。

那麼,簡而言之,我們可以說“U”生成 10 個“虛擬賬戶”,連結到它的私鑰嗎?

是的,但請記住,它們將連結到/擴展私鑰。每個地址都有自己的私鑰,私鑰由主密鑰生成。

如果是這樣,我不明白“U”如何計算自己的餘額:有沒有辦法讓他恢復他從私鑰生成的所有公共/地址?或者使用者應該將他生成的所有地址保存在一個文件中?

我認為 RedGrittyBrick 在解釋為什麼我們不應該使用“餘額”或“虛擬賬戶”等術語方面做得非常出色。但是,我想你的問題是你怎麼知道你的主私人可以訪問多少 BTC關鍵,對吧?這就是錢包的工作。錢包必須能夠儲存或生成您使用過的地址,然後掃描區塊鏈以查找未使用的交易輸出 (UTXO),或者換句話說,與這些地址相關的未使用的比特幣。然後,錢包將所有這些 BTC 加起來,向您展示這個被某些人錯誤地稱為“餘額”的最終金額。

引用自:https://bitcoin.stackexchange.com/questions/99039