一個以太坊帳戶是一個具有以太幣 (?ETH
?) 余額的實體,可以在以太坊上發(fā)送交易。 帳戶可以由用戶控制,也可以作為智能合約部署。
帳戶是一個很適合初學者的主題。 但為了幫助您更好地理解這個頁面,我們建議您首先閱讀我們的以太坊簡介。
以太坊有兩種帳戶類型:
這兩種帳戶類型都能:
ETH
?和 ?token
?外部持有
合約
以太坊帳戶有四個字段:
nonce
?– 顯示從帳戶發(fā)送的交易數(shù)量的計數(shù)器。 這將確保交易只處理一次。 在合約帳戶中,這個數(shù)字代表該帳戶創(chuàng)建的合約數(shù)量
balance
?– 這個地址擁有的 ?Wei
?數(shù)量。 ?Wei
?是以太幣的計數(shù)單位,每個 ?ETH
?有 1e+18 ?Wei
?。
codeHash
?- 該哈希表示以太坊虛擬機 (?EVM
?) 上的帳戶代碼。 合約帳戶具有編程的代碼片段,可以執(zhí)行不同的操作。 如果帳戶收到消息調用,則執(zhí)行此 ?EVM
?代碼。 與其他帳戶字段不同,不能更改。 所有代碼片段都被保存在狀態(tài)數(shù)據(jù)庫的相應哈希下,供后續(xù)檢索。 此哈希值稱為 ?codeHash
?。 對于外部所有的帳戶,?codeHash
?字段是空字符串的哈希。
storageRoot
?– 有時被稱為存儲哈希。 ?Merkle Patricia trie
? 根節(jié)點的 256 位哈希已編碼了帳戶的存儲內容(256 位整數(shù)值映射),并編碼為 ?Trie
?,作為來自 256 的 ?Keccak
?256 位哈希的映射位整數(shù)鍵,用于 ?RLP
?編碼的 256 位整數(shù)值。 此 ?Trie
?對此帳戶存儲內容的哈希進行編碼,默認情況下為空。帳戶由公鑰和私鑰加密對組成。 它們有助于證明交易實際上是由發(fā)送者簽名的,并防止偽造。 您的私鑰是您用來簽名交易的密鑰,所以它保障您對與您帳戶相關的資金進行管理。 您從未真正持有加密貨幣,您持有私鑰 – 資金總是在以太坊的賬本上。
這將防止惡意參與者廣播虛假交易,因為您總是可以驗證交易的發(fā)送者。
如果 Alice 想要從她自己的帳戶發(fā)送 ?ETH
?到 Bob 的帳戶,Alice 需要創(chuàng)建交易請求并將其發(fā)送到網(wǎng)絡進行驗證。 以太坊對公鑰加密的使用確保了 Alice 可以證明她最初發(fā)起了交易請求。 沒有加密機制,惡意對手 Eve 可以簡單地公開廣播一個看起來像“從 Alice 的帳戶發(fā)送 5 ?ETH
?到 Eve 帳戶”的請求。而且沒有人能夠證實它不是來自 Alice 的。
當你想要創(chuàng)建一個帳戶時,大多數(shù)庫將生成一個隨機的私鑰。
私鑰由 64 個十六進制字符組成,可以用密碼加密保存。
例如:
fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd036415f
使用橢圓曲線數(shù)字簽名算法從私鑰生成公鑰。 通過獲取公鑰 Keccak-256 哈希的最后 20 個字節(jié)并校驗碼前面添加 ?0x
?,可以為帳戶獲取公共地址。
下面是使用 ?GETH
?的 ?personal_newAccount
?在控制臺中創(chuàng)建一個帳戶的例子
> personal.newAccount()
Passphrase:
Repeat passphrase:
"0x5e97870f263700f46aa00d967821199b9bc5a120"
> personal.newAccount("h4ck3r")
"0x3d80b31a78c30fc628f20b2c89d7ddbf6e53cedc"
可以通過您的私鑰獲取公鑰,但您不能通過公鑰獲取私鑰。 這意味著保持私人密鑰的安全至關重要,如同名稱所建議的 ?PRIVATE
?。
您需要一個私鑰來簽署消息和交易并輸出簽名。 然后其他人可以使用簽名獲取您的公鑰,證明信息的作者。 在您的應用程序中,您可以使用 javascript 庫向網(wǎng)絡發(fā)送交易。
合約帳戶也有一個 42 個字符組成的十六進制地址:
例如:
?0x06012c8cf97bead5deae237070f9587f8e7a266d
?
合約地址通常在將合約部署到以太坊區(qū)塊鏈時給出。 地址產(chǎn)生自創(chuàng)建人的地址和從創(chuàng)建人地址發(fā)送的交易數(shù)量(“?nonce
?”)。
帳戶和錢包不同。 賬戶是用戶擁有的以太坊賬戶的密鑰和地址對。 錢包是一個界面或者說應用程序,可以讓您與以太坊賬戶交互。
更多建議: