Accounts

帳戶在乙太坊中如何運作?

  • May 30, 2021

我是加密世界的新手,所以試圖用一些程式碼弄髒我的手。我正在嘗試創建一個帳戶並使用同一帳戶執行一些操作。但是獲取帳戶不會返回我創建的帳戶。

程式碼

if __name__ == '__main__':
   print_hi('PyCharm')
   w3 = Web3(Web3.HTTPProvider('https://mainnet.infura.io/v3/<appKey>'))
   print(w3.isConnected())
   account = w3.eth.account.create()
   print(account)
   accounts = w3.eth.get_accounts()
   print(accounts)

在帳戶中列印空數組。這也會在 infura 的主網中創建一個帳戶嗎?是否有地方/儀表板可以檢查帳戶是否已創建?

account = w3.eth.account.create()

我無法立即看到 Web3.py 中存在此方法(我在 docs中看不到它)。在 Web3.js 中,它返回以下內容

web3.eth.accounts.create();
> {
   address: "0xb8CE9ab6943e0eCED004cDe8e3bBed6568B2Fa01",
   privateKey: "0x348ce564d427a3311b6536bbcff9390d69395b06ed6c486954e971d960fe8709",
   signTransaction: function(tx){...},
   sign: function(data){...},
   encrypt: function(password){...}
}

accounts = w3.eth.get_accounts()

同樣,對於 Web3.py,我認為應該是accounts = w3.eth.accounts()(請參閱文件中的此處)。

這也會在 infura 的主網中創建一個帳戶嗎?

它不會在特定位置為您創建帳戶。它會為您生成一個私鑰、相應的公鑰,並為您派生一個地址。私鑰在主網和測試網上均有效。私鑰位於您的本地電腦上(或駐留在您的錢包中,如果您正在使用一個),並允許您簽署發送到您連接到的任何網路的交易。Infura 是第三方提供商,可讓您訪問 RPC(或 websocket)端點,以便您可以與網路進行互動。

是否有地方/儀表板可以檢查帳戶是否已創建?

所以所有賬戶(技術上)都已經存在。是否有人生成了等同於每個帳戶的私鑰是另一回事。

您無法知道是否有人為特定地址生成了私鑰,除非該地址已發送交易,這反過來會在區塊鏈數據中留下記錄。這樣你就知道某個地方的另一個人(或機器人)擁有該地址的私鑰。

因此,當您create()在程式碼中執行該方法時,它會為您生成一個私鑰。在您發送第一筆交易之前,沒有人知道您生成了該密鑰。此時,已知私鑰/地址存在。

私鑰只是 64 個十六進製字元的字元串。您可以以任何您喜歡的方式生成它,例如,通過從帽子中隨機挑選角色或使用骰子來生成它。(這會使他們更難創建相應的公鑰和地址,這就是人們通常使用錢包的原因。但你明白了。)

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