Проблема с развертыванием в JavaScriptVM

У меня действительно странная проблема. Когда я развертываю контракт в JavaScriptVM с помощью Remix, включая следующую функцию:

function setLoanStatus(address _loan, bytes1 _newStatus) public {
    // "A" = 0x41 / "I" = 0x49 / "S" = 0x53 
    var check = (_newStatus == 0x41 || _newStatus == 0x49 || _newStatus == 0x53);
    if (check)
        {
        // Only update status if it is a valid value
        loanStatusList[_loan] = _newStatus;
        } // if (check)

} // function setLoanStatus(address _loan, bytes1 _newStatus) public {

кажется, что контракт развертывается, но если я попытаюсь посмотреть какое-либо значение, я получаю сообщение:

ошибка: не удалось декодировать вывод: TypeError: невозможно прочитать свойство «длина» неопределенного

Если я изменю видимость на внутреннюю , он будет развернут правильно, И если я разверну контракт с исходной функцией в Injected Web3, он будет работать правильно. Я использую тестовую сеть Ropsten.

Любые идеи, почему такое поведение происходит?

Ответы (1)

На самом деле это распространенная проблема среди новых пользователей ремиксов.

Во время развертывания в виртуальной машине Javascript попробуйте увеличить лимит газа в параметре ниже параметра «Среда Javascript и учетные записи».

Проблема в том, что из-за низкого лимита газа контракт не развертывается должным образом. Так что вы по сути общаетесь с неполным контрактом.

Увеличение лимита газа позволит правильно развернуть контракт, и проблема исчезнет навсегда.