以太坊账户分为两种:个人用户使用以太坊钱包生成的外部账户和合约账户。个人用户使用以太坊钱包生成的外部账户由公钥和私钥组成。合约账户使用Solidity程序语言创建,由一组代码(合约的函数)和数据(合约的状态)组成。在以太坊上发ERC20的币就是创建了一个合约账户。该账户生成的地址是合约地址,没有私钥。合约位于以太坊区块链上的一个特殊地址。