第57篇 如何判断地址的账户类型

114 篇文章 718 订阅 ¥39.90 ¥99.00
本文介绍了如何通过web3.js和Solidity判断一个区块链地址是普通账户还是合约账户。在web3.js中,利用getCode()方法根据返回的16进制字符串前缀进行判断;在Solidity中,通过EVM汇编获取地址的代码大小来区分两者。
摘要由CSDN通过智能技术生成

对于一个给定的地址,如何使用代码来判断它是普通账户还是合约账户?

1.使用web3.js

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

var Web3= require('web3');   
var web3= new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));

account = "0xe7ff4ca4fbf213d1718bf4be136e689cccfbc3dd";

// 如果是较底版本的web3
var code = web3.eth.getCode(account);
console.log(code);
if(code === '0x') 
	console.log('普通账户');
else 
	console.log('合约账户');

// 如果是较高版本的web3,以上代码的 code 会返回"Promise { <pending> }"
// 此时 Promise 要用 then 或以下方式接收
web3.eth.getCode(ac
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wonderBlock

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值