在以太坊这个庞大的去中心化应用生态系统中,账户(Account)是所有交互的核心,无论是用户持有的资产、智能合约的状态,还是交易的发起与接收,都离不开账户的概念,理解以太坊账户的构成,是深入掌握以太坊工作原理的关键,一个完整的以太坊账户,主要由以下四个核心部分组成,它们共同定义了账户的身份、状态和权限。

地址 (Address)

地址是以太坊账户最直观的标识符,可以理解为银行账户中的账号,它是一个20字节(40个十六进制字符)的值,由账户的公钥经过特定算法(Keccak-256哈希后取后20位)生成,或直接由智能合约创建时指定。

  • 作用:地址是账户在以太坊网络中的唯一身份标识,所有发送给该地址的ETH和代币,以及调用该地址(如果是合约账户)的函数,都通过地址来定位。
  • 类型:地址本身并不区分是外部拥有账户(EOA)还是合约账户,地址的“类型”取决于它背后是由私钥控制的EOA,还是由代码和数据构成的合约账户。
  • 生成:对于EOA,地址从私钥/公钥对派生;对于合约账户,地址在合约创建时由创建者地址和nonce值共同决定,确保了合约地址的唯一性。

账户余额 (Account Balance)

账户余额是以太坊账户中存储的以太坊(ETH)数量,通常以“wei”为最小单位(1 ETH = 10^18 wei),这是账户状态最核心、最直观的体现。

  • 作用:对于EOA,余额代表了用户可以用于支付交易费用(Gas费)和发送的价值,对于合约账户,余额可以存储ETH,也可以作为合约逻辑的一部分被使用或转移。
  • 状态存储:账户余额记录在以太坊的状态根(State Root)中,是账户状态树中的一个叶子节点,每次余额发生变动(如转账、收取Gas费),都会更新状态树,并最终反映在最新的区块中。
  • 查询:任何人都可以通过以太坊客户端(如Geth、Nethermind)或区块浏览器,查询任意地址的当前ETH余额。

Nonce (Nonce)随机配图