假设我有一个使用erc721协议的以太合约。当我使用web3创建新的contract对象时。
const contract = new web3.eth.contract(contractABI, contractAddress);如果我只使用erc721作用域内的函数,是否可以只包含父erc721协定的abi?或者,web3需要完整的abi吗?
我想知道是否可以调用共享一个abi的多个erc721令牌。谢谢!
发布于 2021-03-22 17:49:34
可以,您可以将同一ABI用于多个合同。限制是您只能使用ABI中定义的方法和属性。
反之亦然:如果调用在ABI中定义但在实际约定中没有定义的方法,则约定将尝试运行回退函数。
web3需要ABI能够告知如何对函数参数和返回值进行编码。因此,如果调用foo(1, 2),它应该编码为foo(uint8 1, uint64 2)还是foo(bool true, uint256 2)
但它实际上只是在contract.methods.*列表及其编码映射中生成正确函数的帮助器。因此,如果您不需要其中的一些,您可以跳过这一步,不在ABI中定义它们。
https://stackoverflow.com/questions/66742409
复制相似问题