Uso de contrato de otro contrato

Implementé un contrato llamado Storageusando el código de la consola de trufas paraStorage.sol

pragma solidity ^0.4.8;
contract Storage {

  struct EntityStruct {
    string str_address;
    uint entityData;
    //more fields
  }

  EntityStruct[] public entityStructs;

  function newEntity(string entityAddress, uint entityData) public returns(uint rowNumber) {
    EntityStruct memory newEntity;
    newEntity.str_address = entityAddress;
    newEntity.entityData    = entityData;
    return entityStructs.push(newEntity)-1;
  }

  function getEntityCount() public constant returns(uint entityCount) {
    return entityStructs.length;
  }

  function getEntityByRowNumber(uint rowNumber) public constant returns(string entity, uint data) {
    string a = entityStructs[rowNumber].str_address;
    uint b =  entityStructs[rowNumber].entityData;
    return (a,b);
  }
}

Ahora quiero acceder a las funciones de este contrato desde otro contrato llamadoAccess1

código paraAccess1.sol

pragma solidity ^0.4.8;
import 'storage.sol';
contract Access1{
address storgeContractAddress = "0xcd53170a761f024a0441eb15e2f995ae94634c06";

 function createEntity(address entityAddress,uint entityData){
        //Storage s = Storage(storgeContractAddress);
        storgeContractAddress.newEntity.call(entityAddress,entityData);
    }

    function getEntityCount()public constant returns(uint entityCount){
        //Storage s = Storage(storgeContractAddress);
        uint count=storgeContractAddress.getEntityCount.call();
        return count;
    }
}

El problema al que me enfrento es al compilar Access1.soldesde truffle usando

compilación de trufas

me sale el mensaje de error

Error: Source "storage.sol" not found: File not supplied initially.
import 'storage.sol';
^-------------------^

No puedo entender por qué sucede esto, verifiqué que el contrato de almacenamiento se implementó y funcionó correctamente, revisé muchos ejemplos en línea que importan el contrato de la misma manera.

Cualquier ayuda es muy apreciada, gracias de antemano

Respuestas (2)

¿Está Storage.solen la carpeta de contratos predeterminada para la trufa? Si es así, debe escribir import "./Storage.sol". También asegúrese de que esté en mayúsculas correctamente.

Debe interconectar Storagelas funciones de contrato implementadas.

pragma solidity ^0.4.8;

contract Storage {
    function getEntityCount() public constant returns(uint entityCount);
}

contract Access1{
    address storgeContractAddress = "0xcd53170a761f024a0441eb15e2f995ae94634c06";
    Storage storage;    
    function Access1(){
     storage =  Storage(storgeContractAddress);
    }
    function getEntityCount()public constant returns(uint entityCount){
        uint count=storage.getEntityCount.call();
        return count;
    }
}
¿No es posible importar un contrato a otro? como he hecho en el código anterior
No creo que pueda importar un contrato implementado como este.
Sí, es posible importar contratos como requiere OP usando import "Storage.sol" (sin embargo, como señaló @Michael O'Rourke, se requiere importar mayúsculas y minúsculas, ya que también la ruta debe ser correcta. Tenga en cuenta que al usar el contrato importado, es necesario consultar una instancia del contrato. Consulte ethereum.stackexchange.com/a/20751/20155 para comprender mejor esto.