对于一个给定的地址,如何使用代码来判断它是普通账户还是合约账户?
1.使用web3.js
chain3.mc.getCode() 方法返回指定地址上代码的16进制字符串,由于普通账户地址处没有代码,因此将仅返回16进制前缀 0x
。利用这个我们可以进行判断,例如:
var Web3= require('web3');
var web3= new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
account = "0xe7ff4ca4fbf213d1718bf4be136e689cccfbc3dd";
// 如果是较底版本的web3
var code = web3.eth.getCode(account);
console.log(code);
if(code === '0x')
console.log('普通账户');
else
console.log('合约账户');
// 如果是较高版本的web3,以上代码的 code 会返回"Promise { <pending> }"
// 此时 Promise 要用 then 或以下方式接收
web3.eth.getCode(ac