以太坊中有两类帐户,它们共用同一个地址空间。web
外部帐户的地址是由公钥决定的,合约帐户的地址是在建立该合约时肯定的。函数
合约帐户存储了代码,外部帐户则没有,除了这点之外,这两类帐户对于EVM来讲是同样的。 每一个帐户有一个key-value形式的持久化存储。其中key和value的长度都是256比特,名字叫作storage..net
另外,每一个帐户都有一个以太币余额(单位是“Wei"),该帐户余额能够经过向它发送带有以太币的交易来改变。3d
使用web3.eth.getCode()方法能够判断一个给定的地址的帐户是外部帐户,仍是合约帐户。这个函数返回指定地址的代码,因为外部帐户没有代码,所以仅仅会返回0x
,而合约帐户将会返回0x
开头的16进制代码字符串。例如:code
var code = web3.eth.getCode("0xd5677cf67b5aa051bb40496e68ad359eb97cfbf8") if(code === '0x') console.log('外部帐户') else console.log('合约帐户')