Wallets

乙太坊錢包與乙太坊賬戶?

  • February 2, 2021

我創建了一個乙太坊節點(geth),這會自動創建一個乙太坊帳戶。這個賬戶是乙太坊錢包嗎?然後我使用 personal.newAccount() 命令創建了另外 2 個帳戶。這些是賬戶還是錢包?

謝謝

術語不夠嚴格,但geth字面意思account是用於所謂的外部擁有帳戶,即從公鑰派生的乙太坊地址(地址基本上是 64 字節未壓縮公鑰的 keccak256 雜湊的最後 20 字節)。這樣的地址可以是交易來源,即乙太坊交易可以從這樣的地址發布,由對應於該地址所源自的公鑰的私鑰簽名。

相比之下,wordwallet常用於智能合約,當錢包所有者告知時,它能夠執行任意乙太坊交易。這裡的所有者是另一個有資格向錢包發出訂單的乙太坊地址。通常,錢包允許其所有者將所有權轉移到另一個地址,這允許錢包所有者在不更改錢包地址且不轉移任何資產的情況下更改私鑰。

賬戶和錢包都可以接收、儲存和發送乙太幣和代幣。兩者都可以控制智能合約。

帳戶由私鑰控制,如果不更改地址並將所有資產從舊地址轉移到新地址,就無法更改私鑰(例如,當懷疑被盜用時)。可以免費創建新帳戶。賬戶可用於部署智能合約。

錢包由另一個乙太坊地址控制,可以是賬戶、另一個錢包或任意智能合約。可以在不更改錢包地址的情況下更改控制地址。創建錢包需要支付一些費用。雖然可以設計能夠部署新智能合約的錢包智能合約,但常見的實現通常沒有這樣的功能。

乙太坊賬戶有兩種類型:

  1. 外部擁有的帳戶
  2. 智能合約賬戶

第一種類型僅用於將乙太幣轉入和轉出。

第二種類型也用於實現所需的功能。

您所說的錢包很可能是第一種類型,這意味著在您的問題中,錢包帳戶這兩個術語是等價的。

更多細節:

在這兩種類型中,帳戶的地址都是 40 個字元的十六進製字元串。

然而,與外部擁有賬戶相反,智能合約賬戶在創建時沒有已知的私鑰,因為外部擁有賬戶的地址是由其私鑰生成的,而智能合約的地址通過散列用於部署它的帳戶的地址生成。

為了允許將 Ether 轉移智能合約賬戶,該智能合約的作者必須實現function() external payable(又名回退功能)。

為了允許智能合約賬戶轉移乙太幣,這個智能合約的作者必須實現一個功能來完成它(與外部擁有的賬戶相反,你“只”需要私鑰)。

引用自:https://ethereum.stackexchange.com/questions/68350