Умный контрактный метод всегда возвращает ноль - PullRequest
0 голосов
/ 07 апреля 2019

У меня проблема, мне нужна помощь в устранении неполадок: у меня развернут базовый смарт-контракт, и все его методы всегда возвращают ноль. Конструктор работает нормально, и использование web3.getStorateAt позволяет мне доказать, что это так

Сначала я думал, что с моими функциями не все в порядке, но даже простой идентификационный вызов, помеченный как view и сделанный из web3, встроенного в geth, не работает.

    constructor(address ca, uint256 zkp, bytes32 uid) public {
        creator = tx.origin;
        coinAddress = ca;
        secret = zkp;
        userId = uid;
        seed = block.timestamp;
    }

    function f(uint256 a) public view returns (uint256) {return a;}
    function ff(uint256 a) public view returns (uint256, uint256) {return (a, a & (2**128 - 1));}
    function fff(uint256 a) public view returns (uint256, uint256, uint256) {return (seed, a, a & (2**128 - 1));}

Конструктор работает нормально, но даже простые функции f возвращают ноль. На самом деле, даже если getStorageAt доказывает, что вещи были сохранены, когда я пытаюсь прочитать их с помощью сгенерированных методов (я опубликую некоторое состояние public), он также возвращает 0! Я назвал это так:

contract = web3.eth.contract([{"constant":false,"inputs":[{"name":"claim","type":"uint256"},{"name":"proof","type":"uint256"},{"name":"command","type":"bytes"}],"name":"storeTransaction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"a","type":"uint256"}],"name":"ffff","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"commandHash","type":"uint256"}],"name":"createChallenge","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"a","type":"uint256"}],"name":"fff","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"a","type":"uint256"}],"name":"f","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"a","type":"uint256"}],"name":"ff","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"ca","type":"address"},{"name":"zkp","type":"uint256"},{"name":"uid","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}])
contract.eth.defaultAccount=contract.eth.coinbase
ct = contract.at('0x3d262eb4a0986def5d5340c0e1251b297165c1b3')
ct.f(3333, console.log)
ct.creator(console.log)

который печатает: ноль 0 ноль 0x

Если у вас есть идеи, что не так, я бы очень хотел Спасибо уже,

...