【问题标题】:How to check if an address is an existing address on the ethereum blockchain?如何检查地址是否是以太坊区块链上的现有地址?
【发布时间】:2018-10-22 06:58:26
【问题描述】:

如果我的 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 上找到了一些参考资料,但我不确定这是否会有所帮助。

【问题讨论】:

    标签: ethereum solidity smartcontracts


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回答。目前我已经在我的合同中建立了一些账户管理功能。我已经在函数中添加了 require 。所以这应该适用于我的功能,但我实际上想在我的 API 上构建登录功能,它只允许特定帐户使用私有区块链。
    猜你喜欢
    • 2016-10-05
    • 2018-01-03
    • 2020-01-27
    • 2022-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 2017-01-29
    相关资源
    最近更新 更多