官术网_书友最值得收藏!

4.3 賬戶

智能合約在以太坊網絡中表現為一種特殊賬戶:合約賬戶

賬戶在以太坊中是非常重要的概念,開發過程中離不開它,以太坊中有兩類賬戶:

(1)外部用戶賬戶(EOAs)——該類賬戶被公鑰——私鑰對控制(由人控制)。

(2)合約賬戶——該類賬戶被存儲在賬戶中的代碼控制。

外部用戶賬戶和合約賬戶,都用同樣的地址形式表示,地址形式為:0xea674fdde714fd979de3edf0f56aa9716b898ec8,是一個20字節的16進制數。

本書中,賬戶(或賬號)和地址兩個概念沒有區別,有時地址也會指代賬戶。

外部用戶賬戶的地址是由私鑰推導出來的(在本書第10章會作進一步介紹),合約賬戶的地址則由創建者的地址和nonce計算得到,這里就不深入介紹,有興趣的讀者可以延伸閱讀《以太坊合約地址是怎么計算出來的?》 文章地址:https://learnblockchain.cn/2019/06/10/address-compute/。 這篇文章。

外部用戶賬戶和合約賬戶都可以有余額;合約賬戶使用代碼管理所擁有的資金,外部用戶賬戶則是用私鑰簽名來花費資金;合約賬戶存儲了代碼,外部用戶賬戶則沒有。它們還有一個不能忽視的區別:只有外部用戶賬戶可以發起交易(主動行為),合約賬戶只能被動地響應動作。

賬戶狀態

賬戶狀態有4個基本組成部分,不論賬戶類型是什么,都存在這4個組成部分。

  • nonce:如果賬戶是外部用戶賬戶,nonce代表從此賬戶地址發送的交易序號。如果賬戶是合約賬戶,nonce代表此賬戶創建的合約序號

提示:以太坊中有兩種nonce,一種是賬號nonce——表示一個賬號的交易數量;一種是工作量證明nonce——一個用于計算滿足工作量證明的隨機數。

  • balance:此地址擁有以太幣余額數量。單位是Wei,1 ether=1018 wei,當向地址發送帶有以太幣的交易時,balance會隨之改變。

ether和wei是以太坊中以太幣的兩種面額單位,就像人民幣的元和分,除此之外,還有一個常用的面額單位Gwei,用來給gas定價,1 Gwei = 109 wei。

  • storageRoot:Merkle Patricia樹的根節點哈希值。Merkle樹會將此賬戶存儲內容的哈希值進行編碼,默認是空值。
  • codeHash:此賬戶代碼的哈希值。對于合約賬戶,就是合約代碼被哈希計算后的哈希值作為codeHash保存。對于外部用戶賬戶,codeHash是一個空字符串的哈希值。

以太坊的全局共享狀態是由所有賬戶狀態組成,它由賬戶地址和賬戶狀態組成的映射存儲在區塊的狀態樹中,如圖4-3所示。

圖4-3 以太坊全局狀態

主站蜘蛛池模板: 托克托县| 滨海县| 集贤县| 梓潼县| 昌吉市| 河源市| 疏勒县| 历史| 镇赉县| 尚志市| 承德市| 高尔夫| 游戏| 新津县| 榆中县| 都匀市| 香格里拉县| 榆树市| 乌拉特后旗| 车险| 抚顺市| 尼勒克县| 广州市| 兴和县| 丹寨县| 五台县| 昂仁县| 桐乡市| 和平县| 沙田区| 上犹县| 道真| 保靖县| 广西| 尉氏县| 白山市| 庆云县| 龙山县| 京山县| 潜江市| 兴业县|