主页 > 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;
}
}