什么是以太坊上的账户?

在世界上的大多数地方,您需要一个能够存储本国货币的银行账户。没有这样的银行账户,您将没有地方接收应得的资金。以太币(ETH)或几乎任何其他加密货币也是同样的情况。为了接收和存储 ETH,您需要一个以太坊账户。

账户是最基本的存储需求单元,就像比特币协议中的地址一样。账户的概念与钱包的概念不同,钱包实际上可以管理多个账户。在以太坊上有两种类型的账户——即外部拥有的账户合约账户,这两者在本质上有所不同,但也有某些相似之处。

以太坊账户要点

  • 账户是存储 ETH 的最基本方式。
  • 以太坊上有两种类型的账户:
  1. 外部拥有的账户(EOA)由私钥控制。
  2. 合约账户(CA)由代替私钥的一段代码控制。
  • 不论其类型,每个账户都由以下四个要素组成:
  1. Nonce —— 对应于一个账户发送的(a)交易数量或(b)创建的合约数量的数字
  2. Balance —— 一个账户拥有的 wei 数量
  3. StorageRoot —— 编码账户存储内容的哈希树根节点的哈希
  4. codeHash —— 账户 EVM 代码的哈希

##账户类型 首先,从控制方式来看,有两种类型的账户。外部拥有的账户,也称为 EOA,是普通用户账户,基本上就是私钥和公钥的对。另一种类型是所谓的合约账户。与由私钥控制的外部拥有的账户不同,合约账户由代码控制。

外部拥有的账户

外部拥有的账户的基本功能是它可以持有以太币余额。外部拥有的账户还能够发送和接收交易。

外部拥有的账户的概念与比特币协议中的地址概念相似。也就是说,一个以太坊账户由与其公钥对应的私钥控制。后者被哈希以确定账户地址,而前者用于生成签名和授权出站交易。

但因为以太坊区块链的功能性扩展超出了比特币协议,所以从外部拥有的账户发送交易不仅限于加密货币转账。相反,账户还能触发合约代码,这意味着它可以用来部署智能合约或触发智能合约功能。

合约账户

与外部拥有的账户类似,合约账户(有时拼写为合约账户)也可以持有以太币或 ERC-20 代币的余额。然而,外部拥有的账户是由私钥控制的,合约账户则不是。

与外部拥有的账户不同,合约账户由智能合约代码控制。这意味着没有私钥可以让账户的外部拥有者花费存储在合约账户地址上的货币。而是代码执行是由来自其他合约的交易或消息(即调用)触发的。

每当被调用时,合约账户执行各种任意复杂的操作。合约账户可以操纵其持久存储(即使您未连接到以太坊网络也会保留的存储;类似于您的计算机上的 HDD 与 RAM),这意味着其状态并不总是相同的,当账户被调用时可以改变。此外,合约账户能够调用其他合约。

账户架构

不论是考虑外部拥有的账户(由私钥控制的用户账户)还是合约账户(由代码控制的账户),每个以太坊账户都有一个基本状态,总是包括以下四个要素:

  1. 首先是 nonce。对于外部拥有账户,nonce 表示从账户地址发送的交易数量。对于合约账户,nonce 是该账户创建的合约数量。
  2. 然后是余额,指的是账户地址拥有的 wei 数量。每单位以太币有 10^18 wei。
  3. 第三个组成部分是所谓的storageRoot,这是一个 256 位的哈希,编码了账户的存储内容。
  4. 最后一部分是codeHash,是账户 EVM 代码的哈希。由于哈希是确定性的,codeHash 在生成后是不可变的,无法更改。对于不包含智能合约代码的外部拥有账户,哈希一个空字符串来创建 codeHash。 如果您对投资 ETH 感兴趣,最简单和最安全的方式是让一个可靠、专业的交易所为您处理所有细节,这样您就可以专注于您的投资。