如何检查地址是否是以太坊区块链中的现有地址?

时间:2018-05-11 19:59:28

标签: ethereum solidity smartcontracts

如果我的Etherum区块链上存在地址,我想检查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 ??

这可能吗?

我在how-to-find-out-if-an-ethereum-address-is-a-contract上也找到了一些参考资料,但我不确定这会有所帮助。

1 个答案:

答案 0 :(得分:3)

没有保证的方法。您最接近的是验证地址格式是否正确(十六进制为20字节),而不是合同地址(您链接到的地址)。从那里,该地址被视为有效的EOA帐户。当然,您仍然可以将以太网发送到有人输入错误的有效地址,因此即使检查该地址的余额也不会产生您正在寻找的结果(同样,对于地址是正确的并且没有其中的以太)。大多数钱包都支持checksums,它可以为您提供更多保护,但仍然不能保证地址正在使用中。

如果您正在使用私有区块链并完全控制帐户创建,您可以假设存储在AccountManager合同中的映射中创建的每个帐户,并使用合同中的修饰符来检查该列表。