Aufruf einer Funktion in einem anderen Vertrag (ungültiger Prüfsummenfehler)

Ich weiß, dass es viele solcher Fragen gibt, aber ich glaube, das ist anders.

Basierend auf dieser Frage habe ich dies geschrieben

pragma solidity ^0.4.11;

contract Registry {
    mapping(string => address) ID;
    mapping(address => address) Contract;

    function addID(string _id, address publicAddress) {
        ID[_id] = publicAddress;
    }

    function addContract(address _owner) {
        Contract[_owner] = msg.sender;
    }
}

contract User {
    // The GMC contract
    address regAddress = 0xf70ce669d4fa2bdeae1c4c61021627fc4b1d463c;
    address owner = msg.sender;

    function addID(string _id){
        // Get the GMC contract
        Registry registry = Registry(regAddress);
        registry.addID(_id, owner);
    }

    function addContract(address _owner) {
        Registry registry = Registry(regAddress);
        registry.addContract(owner);
    }
}

Außerdem bin ich mir zu 100 % sicher, dass das Vertragsregister unter Adresse abgebaut wurde 0xf70ce669d4fa2bdeae1c4c61021627fc4b1d463c.

Das Einfügen unverändert in Remix gibt einen Fehler zurück

This looks like an address but has invalid checksum

Nach dieser Antwort habe ich versucht, die Adresse in Großbuchstaben umzuwandeln. Das kehrt zurück

TypeError: Invalid literal value

Ein Vorschlag in der Frage ist die Verwendung von import. Ich mache das nicht wegen einer anderen (unbeantworteten) Frage, die ich hier gestellt habe (kann den Import bei der Bereitstellung mit NodeJS nicht verwenden).

Hilfe wäre sehr willkommen!

Antworten (1)

verwenden address regAddress =0xF70ce669d4FA2BdEae1c4C61021627fC4b1d463Cund der Fehler wird abgewiesen.

Der Trick besteht darin, https://etherscan.io/ zu verwenden , um Ihnen die Adresse mit der Prüfsumme zurückzugeben.

Die Antwort hat funktioniert, aber könnten Sie erklären, warum das so ist?