主页 > imtoken钱包安卓安装教程 > 如何判断一个以太坊地址是否为合约?

如何判断一个以太坊地址是否为合约?

imtoken钱包安卓安装教程 2023-08-02 05:14:42

如何判断一个以太坊地址是否为合约?

时间:2022-05-16

本文介绍如何判断一个以太坊地址是否为合约? ,主要内容包括其使用示例、应用技巧、基础知识点总结及注意事项。 具有一定的参考价值,有需要的朋友可以参考一下。

如果你想马上开始学习以太坊DApp开发,可以访问汇智网提供的优秀在线互动教程:

使用 web3.js

web3.eth.getCode() 方法返回指定地址上代码的十六进制字符串。 由于普通账户地址没有code以太坊合约张数以太坊合约张数,所以只会返回十六进制前缀0x。 利用这个我们可以判断,例如:

var code = web3.eth.getCode("0xbfb2e296d9cf3e593e79981235aed29ab9984c0f")
if(code === '0x') console.log('普通账户')
else console.log('合约账户')

扎实实施

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

contract EzDemo {
    function isContract(address addr) returns (bool) {
    uint size;
    assembly { size := extcodesize(addr) }
    return size > 0;
  }
}