如何检查以太坊区块链上的地址是否存在?

4
如果我想在Solidity中检查以太坊区块链上是否存在一个地址,该怎么办?
当查看solidity.readthedocs时,有一个函数balance可用/滥用于检查地址是否有效/具有余额:
address x = 0x4e5d039c5516b69a4b6b1f006cbf4e10accb5cfa; // this is an example address which does not have valid checksum....
if (x.balance > 0) // Return true when valid ??

你能做到吗?

我还在如何确定以太坊地址是否为合同上找到了一些参考资料,但我不确定这是否有帮助。

1个回答

5
并没有绝对可靠的方法。你只能最接近地验证地址是否符合正确格式(20字节十六进制),而且不是一个合约地址(你链接到了这个)。从那里开始,该地址被认为是有效的EOA账户。当然,你仍然可以向某人误输的地址发送以太币,所以即使检查该地址的余额也无法得出你要寻找的结果(而且,该地址正确但却没有以太币也是完全可以的)。大多数钱包都支持校验和,这会给你更多的保护,但仍不能保证该地址正在使用。
如果你正在使用私有区块链并完全掌控帐户创建,则可以在AccountManager合约中将每个已创建的帐户存储在映射中,并在你的合约中使用修饰符来检查该列表。

谢谢您的回答。目前我已经在我的合约中构建了一些账户管理功能,并在函数中添加了require。因此,这应该适用于我的函数,但实际上我想在我的API中构建登录功能,只允许特定的账户使用私人区块链。 - Stef Heyenrath

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接