Возвращает значение uint из контракта хранения

Когда я сохраняю данные в оракуле, а затем пытаюсь обратиться к ним на testrpc через функцию оплаты, это просто не работает. Есть идеи?

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;
    }
}
Что значит не работает? Вы получаете сообщение об ошибке?
Он отлично развертывается, но затем, когда я использую функцию извлечения данных, он оказывается пустым и платит, как если бы он был пустым. По какой-то причине контракт не вытягивает значение (как будто я использую неправильный ключ)

Ответы (1)

Не берите в голову, ребята, на случай, если это увидят другие люди, контракт работает, но он просто выплачивает вэй и это юинт. Поправьте меня, если я ошибаюсь, но я думаю, что не умею работать с десятичными дробями, и мне нужно как-то выплатить эту сумму в эфире.

Вы правы. Посмотрите здесь метод представления цен в виде десятичных знаков (я думаю, это то, к чему вы клоните...): ethereum.stackexchange.com/questions/11733/…