跳至主要內容

什麼是軟體錢包?

U
作者:UKey Wallet

軟體錢包使用隨機數來產生主私鑰

然後,透過確定性且不可逆的演算法,它可以從該主私鑰派生出無限數量的子私鑰

為什麼我們需要確定性且不可逆的演算法?
因為確定性意味著所有子私鑰總是可以從同一個主私鑰生成,而不可逆意味著主私鑰不能從任何子私鑰重構。

這就是為什麼它被稱為分層確定性(HD)錢包。私鑰的衍生結構類似一棵樹:一個父金鑰可以衍生出多個子金鑰,每個子金鑰可以衍生出多個孫金鑰,而這個過程可以無限期地繼續下去。

首次創建HD錢包或備份錢包時,會產生助記詞。助記短語是英語單字的序列。此序列用於產生種子,然後使用該種子產生錢包中的所有私鑰。換句話說,助記詞作為錢包的備份,因為它可以用來恢復錢包。反過來,種子對應於確定性錢包背後的原始隨機數。

HD錢包的一大優點是只需要主公鑰來產生任意數量的子公鑰。換句話說,可以從主公鑰創建新的公共地址,而無需存取私鑰,無論是主私鑰還是子私鑰。然而,所有這些產生的地址最終仍然可以由主私鑰控制。

當然,這種設計也存在風險。如果助記詞被暴露,本質上就等於暴露了所有私鑰。一旦發生這種情況,錢包中的數位資產的安全性實際上就會喪失。

為什麼需要這麼多私鑰?

用戶需要這麼多私鑰的原因可以透過比特幣交易中的變更機制來理解。

比特幣交易是一種包含輸入輸出的資料結構。它還包括將值從來源(輸入)傳輸到目的地(輸出)的必要腳本資訊。

要了解比特幣的輸入和輸出,了解UTXO未花費的交易輸出)的概念非常重要。 UTXO是比特幣交易的基本單位,代表未花費的交易產出。單一比特幣實際上以 UTXO 的形式分佈在許多交易和許多區塊中。事實上,不存在儲存簡單帳戶餘額的集中記錄;相反,只有去中心化的 UTXO 鎖定其各自的所有者。

UTXO 可以代表任何數量的價值,但一旦創建,它就不可分割,就像實體硬幣不能分成兩半一樣。如果 UTXO 的價值大於交易所需的金額,則仍然必須花費整個 UTXO,超出的部分將作為找零返還。

例如,假設您有一個價值 20 個單位的 UTXO,並且想要支付 1 個單位。該交易必須消耗完整的 20 單位 UTXO 並創建兩個輸出:一個輸出將 1 個單位發送給接收者,而另一個輸出則將 19 個單位作為找零發送回您的錢包。從這個意義上說,大多數比特幣交易都會產生變化。

這就引出了另一個問題:更改應該發送回原始地址,還是發送到新生成的地址?

當中本聰設計比特幣時,使用了找零地址機制,這意味著通常會創建一個新地址來接收每筆交易的找零。這樣設計的好處是有利於保護使用者隱私,降低一定的安全風險。

在現實生活中,這類似於在不同銀行以不同名稱和身分開設多個銀行帳戶。即使有人可以觀察每個帳戶中的資金流動,他們也很難將所有資金追溯到數位資產的真正所有者。這是比特幣相對匿名性的部分原因。

這就是為什麼錢包用戶需要如此多的私鑰。由於公鑰和私鑰總是成對存在,並且每次交易都可能產生新的找零地址,因此儲存和備份所有這些地址對應的私鑰將成為重大技術挑戰。 HD錢包透過允許單根產生任意數量的子公鑰和子私鑰解決了這個問題,大大提高了數位錢包的可用性。

是否回答了您的問題?