以太坊 賬戶

2022-05-12 10:19 更新

以太坊帳戶 

一個以太坊帳戶是一個具有以太幣 (?ETH?) 余額的實體,可以在以太坊上發(fā)送交易。 帳戶可以由用戶控制,也可以作為智能合約部署。

前置要求

帳戶是一個很適合初學者的主題。 但為了幫助您更好地理解這個頁面,我們建議您首先閱讀我們的以太坊簡介

帳戶類型

以太坊有兩種帳戶類型:

  • 外部持有 – 私鑰的所有者控制
  • 合約 – 一種由代碼控制,部署在網(wǎng)絡上的智能合約。 

這兩種帳戶類型都能:

  • 接收、持有和發(fā)送 ?ETH ?和 ?token ?
  • 與已部署的智能合約進行交互

主要區(qū)別

外部持有

  • 創(chuàng)建帳戶是免費的
  • 可以發(fā)起交易
  • 外部所有的帳戶之間只能進行 ETH 和代幣交易

合約

  • 創(chuàng)建合約存在成本,因為需要使用網(wǎng)絡存儲空間
  • 只能在收到交易時發(fā)送交易
  • 從外部帳戶向合約帳戶發(fā)起的交易能觸發(fā)可執(zhí)行多種操作的代碼,例如轉移代幣甚至創(chuàng)建新合約

理解帳戶

以太坊帳戶有四個字段:

  • ?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)建

當你想要創(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"

GETH 文檔

可以通過您的私鑰獲取公鑰,但您不能通過公鑰獲取私鑰。 這意味著保持私人密鑰的安全至關重要,如同名稱所建議的 ?PRIVATE?。

您需要一個私鑰來簽署消息和交易并輸出簽名。 然后其他人可以使用簽名獲取您的公鑰,證明信息的作者。 在您的應用程序中,您可以使用 javascript 庫向網(wǎng)絡發(fā)送交易。

合約帳戶

合約帳戶也有一個 42 個字符組成的十六進制地址:

例如:

?0x06012c8cf97bead5deae237070f9587f8e7a266d ?

合約地址通常在將合約部署到以太坊區(qū)塊鏈時給出。 地址產生自創(chuàng)建人的地址和從創(chuàng)建人地址發(fā)送的交易數(shù)量(“?nonce?”)。

關于錢包的說明

帳戶和錢包不同。 賬戶是用戶擁有的以太坊賬戶的密鑰和地址對。 錢包是一個界面或者說應用程序,可以讓您與以太坊賬戶交互。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號