我想知道三件事:
发布于 2019-09-10 14:26:18
对于1您可以使用web3.eth.getCode(address)函数的Web3 API。对于契约地址,它返回契约字节码,而对于非契约地址,则返回类似于"0x"的内容。
这取决于“公众”对你来说意味着什么。如果您的意思是智能契约是否验证了在Etherscan.io上发布的源代码,那么您可以使用API调用来根据合同地址获取源代码,或者下载所有已验证源代码的契约地址的完整列表:https://etherscan.io/apis#contracts。
这2是最棘手的,因为除了分析它的源代码之外,没有可靠的方法可以知道智能契约是否实现了特定的接口。尽管可能会有一些暗示。您可以检查智能契约是否记录了Transfer(address indexed, address indexed, uint256) (用于ERC-20)或Transfer(address indexed, address indexed, uint256 indexed) (用于ERC-721)事件,但这样您将无法识别令牌契约,其令牌尚未被传输。
发布于 2019-09-10 14:22:56
目前还不清楚你想在哪一层找到这个信息(链上还是链外)。一般而言:
地址是明智之举吗?
可以通过查看地址上是否有关联的代码来检查这一点。
这是智能契约ERC20还是ERC721令牌?
你可以通过在以太扫描上遵守合同来检查这一点。您还可以使用一些接口来告诉您同样的事情。
密码是公开的吗?
字节码是公开的。从技术上讲,你可以把它解构成坚实的。在某些情况下,作者发布源代码。这里是以太扫描上经过验证的合同的一个例子,您可以在其中看到源代码。
https://ethereum.stackexchange.com/questions/74834
复制相似问题