Невозможно сохранить значение в этой программе в солидности - PullRequest
0 голосов
/ 13 января 2020

ОС: Windows10

Среда: Remix (солидность)

Здравствуйте! Я студент университета.

Я учусь о прочности. Теперь я развернул эту программу.

 function submitValue (int256 myGuess, uint16 myiteration) public{

        assert(! problemSolved);
        assert(iteration == myiteration);

        if (waiting[msg.sender]){
            // If we are still waiting for this sender, go ahead with the assignment.
            if (msg.sender == whitelist[0]){
                x = myGuess;
            } else if (msg.sender == whitelist[1]){
                s = rho * A * B * (myGuess - z);
                z = myGuess;
            } else {revert();}
            waiting[msg.sender] = false;
        } else { revert(); }

        if (! stillWaiting() ){
            updateY();
            resetWaiting();
            iteration += 1;
        }
    }


Я успешно скомпилировал и развернул на ремикс.

Однако, если вы попытаетесь выполнить, присвоив числовые значения myguess и итерируя функцию submitbvalue, произойдет следующая ошибка:

transact to Aggregator.submitValue errored: VM error: revert.
    revert  The transaction has been reverted to the initial state.
    Note: The called function should be payable if you send value and the value you send should be less than your current balance.  Debug the transaction to get more information. 

Значение, которое должно быть назначено, должно быть правильным и Я не знаю, почему произошла ошибка. Может кто-нибудь сказать мне об этой причине?

Кстати, каждое значение

MyGuess = 20000 итераций = 1

было назначено.

Это код был создан со ссылкой на следующий сайт.

http://ecomunsing.com/decentralized-optimization-with-blockchains

Полный код находится на следующем сайте.

https://github.com/ushiwak/questions/blob/master/Aggrigator.sol

...