【发布时间】:2017-12-20 22:03:09
【问题描述】:
我之前看到过这个问题,但我仍然需要澄清一下接口中声明的函数在哪里完全定义?我了解该界面列出并解释了另一个合约(contractB)可以使用的功能,但是该界面只是一种方便,而不是contractB使用这些功能的必要条件吗?在我看来,我将 delegateCall 与接口混淆了。如果我们想调用其他合约的函数,为什么要使用接口而不是delegateCall?如果接口指向的合约地址已经定义了函数但我没有在接口中列出,那我在contractB中还能使用吗?
例如,下面我知道我可以在众筹中使用转移功能,但转移在哪里?假设合约 A 定义了函数 makepovertyhistory() 但我没有在接口令牌中提及它......我仍然可以在众筹合约中使用它吗?
如果我在接口内重新定义了转账函数,它是否会覆盖在众售合约中实例化的地址处定义的转账函数?我不确定我是否正确地考虑了这一切,所以我想我会问更详细的问题,以防其他人发现通用答案仍然适用于一般情况,以了解正在发生的事情。
区分为什么我们会使用接口而不是将合同直接继承到我当前正在创建的合同中可能会有所帮助
interface token {
function transfer(address receiver, uint amount);
}
contract Crowdsale {
address public beneficiary;
uint public fundingGoal;
....
....
..
【问题讨论】:
标签: interface token ethereum smartcontracts