0x13--检测是否为合约地址

  1. 使用web3

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

    var code = await this.web3.eth.getCode(address);
    if(code === '0x') {
    return false;
    }
    return true;
  2. 使用合约判断
    在合约内,可以使用EVM汇编代码来获取指定地址处的代码大小。
    普通账户地址因为没有代码将返回0:

    contract EzDemo {
    function isContract(address addr) returns (bool) {
    uint size;
    assembly { size := extcodesize(addr) }
    return size > 0;
    }
    }
  • 本文作者:Jack Yao
  • 本文链接: eth_0x13_is_contract
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!