La paridad no compila el contrato sin error.

Cuando ingreso el siguiente contrato en el campo de desarrollo de Parity, no se queja, pero tampoco compila el contrato, lo que hace que sea imposible implementarlo. ¿Alguna sugerencia? Intenté borrar el contrato pero parece sintácticamente correcto.

pragma solidity ^0.4.11;

/// @title Name Resolver for multiple contracts
/// Resolves contract names to their current version's address
contract Register {
    address owner;
    mapping (string => address) public backends;

    function Register() {
        owner = msg.sender;
    }

    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    function changeBackend(string contractName, address newBackend) public onlyOwner() returns (bool) {
        if(newBackend != backends[contractName]) {
            backends[contractName] = newBackend;
            return true;
        }

        return false;
    }
}

Respuestas (1)

Resulta que es un error que ni Parity ni atomlinter muestran. Usar Remix da el error:

"Accessors for mapping with dynamically-sized keys not yet implemented.”

Entonces, el error se puede corregir cambiando el mapeo a:

mapping (bytes32 => address) public backends;

Y proporcione un getter personalizado para los backends:

function getBackend(string contractName) returns (address) {
    return backends[keccak256(contractName)];
}

Procedimiento similar con el colocador.