主页 > imtoken钱包苹果版手机下载 > 24. 以太坊账户(外部账户和合约账户)

24. 以太坊账户(外部账户和合约账户)

文章目录[隐藏]

以太坊有一个账户,每个用户都可以开一个账户,账户余额是我们自己的以太坊或者其他基于ERC20的代币。 账户的设计使得以太坊不同于比特币以太坊账户模型,我们从之前的讨论中知道比特币只有钱包地址和未花费的交易输出。

以太坊中的两种账户:外部账户和合约账户

以太坊中有两种类型的账户,如下图所示:

24、以太坊的账户(外部账户和合约账户)

图 1:以太坊中的两种账户

以太坊中的账户由四个字段组成:随机数、账户余额、合约代码(如果有)和存储空间(通常为空)。

只有合约账户才有code,里面存放的是codeHash(该账户的以太坊虚拟机代码的哈希值)。 该字段生成后不可变,即智能合约代码不可变。

外部账户可以触发交易,而合约账户不能主动发起交易,只能在被触发后根据预先编写的智能合约代码执行。

合约账户可以设置多重签名(multisign)。 例如以太坊账户模型,一个简单的例子是:有一个现有的合约账户,需要一笔转账由发起转账的人(Alice)和另一个人(Charles)签名。 因此,当Alice通过这个合约转给Bob 20 ETH时,合约会通知Charles签字,Bob签字后就可以收到这20 ETH(见图2)。

24、以太坊的账户(外部账户和合约账户)

图2:以太坊合约账户的多重签名

以太坊交易及其区块中存储的内容

和比特币一样,以太坊区块也存储交易,其中包括诸如:收件人(接受的账户)、发件人的签名、发件人发送给收件人的以太币数量等字段。

与比特币区块中存储的交易不同,对应以太坊账户的状态以默克尔帕特里夏树(Merkle Patricia Tree,MPT)的形式存储在以太坊区块中。

以太坊中的交易是所谓的状态转换函数。 一笔交易触发它的执行,将相应的账户从一个状态转换到一个新的状态,然后将新的状态存储在区块链的一个数据块中。

参考:

Dew Bay,版权所有丨如未注明,均为原创丨本网站受BY-NC-SA协议授权

转载请注明原文链接:24.以太坊账户(外部账户和合约账户)

报酬

[]