如果我的以太坊区 block 链上存在地址,我想检查 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 上找到了一些引用资料,但我不确定这是否有帮助。
最佳答案
没有保证的方法。您最接近的是验证地址格式是否正确(20 字节十六进制)并且不是合约地址(您链接到的地址)。从那里,该地址被认为是一个有效的 EOA 帐户。当然,你仍然可以将以太币发送到有人输入错误的有效地址,所以即使检查该地址的余额也不会产生你正在寻找的结果(另外,地址正确并且没有里面有乙醚)。大多数钱包支持 checksums这会给你更多的保护,但仍然不能保证地址正在使用中。
如果您使用私有(private)区 block 链并完全控制账户创建,您可以假设将在映射中创建的每个账户存储在 AccountManager 合约中,并在合约中使用修饰符来检查该列表。
关于ethereum - 如何检查地址是否是以太坊区 block 链上的现有地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50299431/