Go-Ethereum

geth中有dumpprivkey類似物嗎?

  • July 31, 2018

我正在使用以下程式碼使用 web3.py 創建新地址:

from web3 import Web3 
w3 = Web3(Web3.HTTPProvider('http://localhost:8545')) 
w3.personal.newAccount('the-passphrase')

還有幾個問題:

  1. 有沒有辦法the-passphrase從下面的程式碼返回的地址中獲取?dumpprivkey需要與bitcoin-cli相同的行為
  2. 為什麼每次我使用相同的密碼時都會得到不同的地址?這是否意味著我可以只使用這個密碼片語來使用這些地址中的每一個的輸入?密鑰的結構與比特幣的不同privatekey-publickey-address嗎?
  3. 當我使用 signTransaction方法時,我應該使用“密碼”還是它的雜湊?

謝謝!

我認為您可能對密碼的用途感到困惑。passphrase 參數不是用於生成私鑰的種子,而是用於在生成私鑰後對其進行加密的密碼。

當您呼叫w3.personal.newAccount('the-passphrase')節點時,會生成一個隨機私鑰,從中派生地址,然後使用您的密碼加密密鑰並將加密的密鑰儲存在磁碟上。然後它返回地址。

因此,您可以根據需要創建任意數量的不相關帳戶,所有帳戶都使用相同的密碼進行加密。


核心問題是您可能應該使用eth_account庫而不是personalapi。accountAPI 用於在記憶體、客戶端建構錢包和帳戶,而APIpersonal用於在伺服器端、磁碟上管理帳戶。無法通過 web3 獲取伺服器端私鑰,但如果您建構帳戶客戶端,那麼您可以手動處理您想要的所有私鑰。

有關更多範例,請參見https://web3py.readthedocs.io/en/stable/web3.eth.account.html#working-with-local-private-keys

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