Loading

以太坊账户模型采用了什么记账系统?

2021-02-07 15:26:15 88

与比特币不同,以太坊没有采用UTXO模型,而是采用了传统记账系统的账户模型,即每个用户对应一个直接记录余额的账户,交易中附带有参与交易的账户的信息。相比于比特币的UTXO模型,以太坊所采用的传统账户模型显然更易于理解和进行智能合约的编程。


具体地,以太坊的每一个账户都由一对公私钥进行定义,账户的地址为其公钥的最后20个字节,以太坊通过地址来对账户进行索引。在以太坊中,共有两种账户模型:外部拥有账户( Extermally owned account , EOAs)和合约账户( Contract account)。以太坊的外部拥有账户一般是给用户分配的账户,拥有该账户的用户可以通过账户对应的私钥创建和签署交易,发送消息至其他外部账户或合约账户。合约账户一般是由合约代码控制的账户,可以被外部拥有账户触发从而执行其对应的合约代码,从而进行各种预先定义好的操作。

ethereum.jpg

这些账户 都是具有状态的“实体账户"(相对于比特币的“虚拟账户"),例如,外部账户有余额、合约账户有余额和合约储存。以太坊中所有账户的状态即为以太坊网络的状态,以太坊通过产生区块对其状态进行更新。


以太坊的账户状态包括如下四个部分:

(1) nonce: 随机数,用于指定唯一一个交易或合约代码;

(2) balance: 账户余额;

(3)root:账户状态树的树根的哈希值;

(4)codeHash:账户的合约代码的哈希值,对外部拥有账户,此字段为空;