如何判断一个以太坊地址是是智能合约地址或者ETH普通地址

根据不同的应用场景分成两种

1.web3.js在DAPP应用开发时使用

2.solidity智能合约开发时使用

以下是具体实现

1.web3.js在DAPP应用开发时使用

web3.eth.getCode()方法返回指定地址上代码的16进制字符串,由于普通账户地址处没有代码,因此将仅返回16进制前缀0x。利用这个我们可以进行判断,例如:

 
  1. var code = web3.eth.getCode("0xbfb2e296d9cf3e593e79981235aed29ab9984c0f")

  2. if(code === '0x') console.log('普通账户')

  3. else console.log('合约账户')

2.solidity智能合约开发时使用

在solidity中实现在合约内,可以使用EVM汇编代码来获取指定地址处的代码大小,显然,普通账户地址将返回0:

 
  1. contract Demo {

  2.        function isContract(address addr) returns (bool) {

  3.        uint size;

  4.        assembly { size := extcodesize(addr) }

  5.        return size > 0;

  6.       }

  7. }

你可能感兴趣的:(以太坊,以太坊地址,判断以太坊地址)