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

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. }

Logo

为所有Web3兴趣爱好者提供学习成长、分享交流、生态实践、资源工具等服务,作为Anome Land原住民可不断优先享受各种福利,共同打造全球最大的Web3 UGC游戏平台。

更多推荐