主页 > 最新版imtoken官网 > 以太坊账户——外部账户和合约账户
以太坊账户——外部账户和合约账户
以太坊账户:外部账户和合约账户
以太坊中有两种账户,它们共享相同的地址空间:
什么是外部账户?
外部账户,由公私密钥对(人)控制。 一个以太坊地址代表一个账户。 对于外部帐户,地址是作为控制该帐户的公钥的最后 20 个字节派生的。
例如:0x71C7656EC7ab88b098defB751B7401B5f6d8976F。 这是一种十六进制格式(以 16 为基数的表示法),通常通过在地址后附加 0x 来指定。
外部账户地址是通过公钥加密生成的,所以用户需要注意私钥。 私钥用于查看和处理我们账户中的资产。 一旦丢失,资产将永远丢失。
什么是合约账户?
合约账户由智能合约的代码控制。 只有合约账户才有code,里面存放的是codeHash(该账户的以太坊虚拟机代码的哈希值)。 该字段生成后不可变以太坊可以有几个账户,即智能合约代码不可变。
以太坊中的账户由四个字段组成:随机数、账户余额、合约代码(如果有)和存储空间(通常为空)。
外部账户可以触发交易,而合约账户不能主动发起交易,只能在被触发后根据预先编写的智能合约代码执行。
合约账户可以设置多重签名(multisign)。 例如,一个简单的例子是:有一个现有的合约账户,需要一笔转账由发起转账的人(Alice)和另一个人(Charles)签名。 因此,当Alice通过这个合约转给Bob 20 ETH时以太坊可以有几个账户,合约会通知Charles签字,Bob签字后就可以收到这20 ETH(见下图)。
外部账户和合约账户的区别
以太坊中的账户由四个字段组成:随机数、账户余额、合约代码(如果有)和存储空间(通常为空)。
外部账户:有账户余额; 没有代码; 可以触发交易(转账或执行智能合约); 由私钥控制。
合约账户:有账户余额; 有密码; 可被触发执行智能合约代码; 智能合约创建后自动运行。
外部账户地址由公钥决定。
合约账户的地址是在合约创建时确定的(这个地址是根据合约创建者的地址和这个地址发送的交易数量来计算的)。