Rückgabewert aus Speichervertrag

Wenn ich Daten im Orakel speichere und dann versuche, über die Bezahlfunktion auf dem Testrpc darauf zu verweisen, funktioniert es einfach nicht. Irgendwelche Ideen?

pragma solidity ^0.4.6;

contract Oracle{
    struct DocumentStruct{
        uint value;
    }

    mapping(bytes32 => DocumentStruct) public documentStructs;

    function StoreDocument(bytes32 key, uint value) returns (bool success) {
        documentStructs[key].value = value;
        return true;
    }

}

contract Payment {
    address public counterparty1;
    address public counterparty2;
    uint public margin;
    address public oracleID;


    function Payment(address _cp2, address _oracleID) payable{
        margin = msg.value;
        counterparty1 = msg.sender;
        counterparty2 = _cp2;
        oracleID = _oracleID;
    }


    function Pay(bytes32 _keyval) returns (bool){
        var pValue = RetrieveData(_keyval);
        var npvalue = pValue >= margin ? (this.balance) : pValue;
        if (npvalue > 0 ){
            counterparty2.send(npvalue);
            return true;
        }
        else{
            throw;
        }
    }

    struct DocumentStruct{
        uint value;
    }    
    Oracle oracle;

    function RetrieveData(bytes32 key) 
    public
    constant
    returns(uint) 
    {
        oracle = Oracle(oracleID);
        DocumentStruct memory doc;
        (doc.value) = oracle.documentStructs(key);
        return doc.value;
    }
}
Was heißt das geht nicht? Erhalten Sie einen Fehler?
Es lässt sich gut bereitstellen, aber wenn ich dann die Funktion zum Abrufen von Daten verwende, erscheint es leer und es zahlt sich aus, als ob es leer wäre. Aus irgendeinem Grund zieht der Vertrag den Wert nicht (es ist, als ob ich den falschen Schlüssel verwende)

Antworten (1)

Macht nichts, Jungs, falls andere Leute das sehen, der Vertrag funktioniert, aber er zahlt nur Wei aus und es ist eine Summe. Korrigieren Sie mich, wenn ich falsch liege, aber ich glaube, ich kann keine Dezimalzahlen, und ich müsste diesen Betrag irgendwie in Ether auszahlen.

Du hast Recht. Sehen Sie sich hier eine Methode an, um Preise als Dezimalzahlen darzustellen (was Sie meiner Meinung nach erreichen wollen ...): ethereum.stackexchange.com/questions/11733/…