¿Es necesario que un contrato de interfaz de Solidity implemente todas las funciones, o solo el subconjunto de funciones utilizado en el contrato que implementa la interfaz?

Supongamos lo siguiente:

  • Hay un contrato maestro A, un contrato de interfaz IB y un contrato esclavo B
  • A implementa IB para permitir la actualización de B sin volver a implementar A

Pregunta:

¿Necesita IB tener todas las funciones de B, o solo las utilizadas por A?

Las interfaces no implementan contratos: los contratos implementan interfaces. ¿Cuál es la cadena de herencia aquí? A->IB->B? Parece extraño y IB no tiene que implementar nada. ¿O es una interfaz I con los contratos A y B que implementan I? Lo que entra sería lo que necesita que implementen tanto A como B: A y B pueden tener funciones adicionales.

Respuestas (1)

Según mi experiencia en el siguiente código.

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

es suficiente implementar los que estás usando. En el ejemplo:

/// ---- dataStorage interface
contract dataStorage {
    function getBalanceOf(address _account) constant returns (uint256 balance);
    function setBalanceOf(address _account, uint256 _value);
}
¿Lo compilaste e implementaste?
Sí, usando browser-solidity + metamask: se implementa en testnet.etherscan.io/address/…