ethereum - 如何检查地址是否是以太坊区 block 链上的现有地址?

标签 ethereum solidity smartcontracts

如果我的以太坊区 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/

相关文章:

javascript - 未定义值 : angularjs $scope and web3. eth.getBalance

ethereum - 如何在 Solidity 中声明常量

node.js - Node Js中如何选择首先调用哪个函数

javascript - 有人成功通过 Web3.js@1.0.0 获得了 ERC20 代币的余额吗?

以太坊调用从另一个合约发出事件的合约方法

javascript - 如何在同一个javascript程序中部署并获取智能合约的地址

c++ - 严重错误:找不到 'boost/uuid/uuid.hpp'文件

testing - 如何发送wei/eth到合约地址? (使用松露javascript测试)

node.js - 执行 "Truffle init"时出错

javascript - 在 pact-lang 智能合约中获取 tx 发送者数据