Muss ein Solidity-Schnittstellenvertrag alle Funktionen implementieren oder nur die Funktionsteilmenge, die in dem Vertrag verwendet wird, der die Schnittstelle implementiert?

Nehmen wir folgendes an:

  • Es gibt einen Rahmenvertrag A, einen Schnittstellenvertrag IB und einen Nebenvertrag B
  • A implementiert IB, um ein Upgrade von B zu ermöglichen, ohne A erneut bereitzustellen

Frage:

Muss IB alle Funktionen von B haben oder nur die von A genutzten?

Schnittstellen implementieren keine Verträge: Verträge implementieren Schnittstellen. Was ist hier die Vererbungskette? A->IB->B ? Scheint seltsam und IB muss nichts implementieren. Oder ist es eine Schnittstelle I mit den Verträgen A und B, die I implementieren? Was hineingeht, wäre das, was Sie sowohl von A als auch von B implementieren müssen: A und B können jeweils zusätzliche Funktionen haben.

Antworten (1)

Nach meiner Erfahrung im folgenden Code

https://gist.github.com/anonymous/c23f944b139a76693abbae261ad577b8

Es reicht aus, die von Ihnen verwendeten zu implementieren. Im Beispiel:

/// ---- dataStorage interface
contract dataStorage {
    function getBalanceOf(address _account) constant returns (uint256 balance);
    function setBalanceOf(address _account, uint256 _value);
}
hast du es kompiliert und bereitgestellt?
Ja, mit Browser-Solidity + Metamask: Es wird unter testnet.etherscan.io/address/… bereitgestellt.