Отправка транзакции web3js не удалась, когда контракт изменил данные отображения, но ремикс работает - PullRequest
0 голосов
/ 02 ноября 2018

первая, версия web3: 1.0.0-beta.36

код контракта:

pragma solidity ^0.4.25;

contract Main {
  struct Model {
    uint256 key;
    uint64 createTime;
  }

  Model[] public models;

  mapping(uint256 => address) public modelOwner;

  function total() view public returns (uint256) {
    return models.length;
  }

  function getData(uint256 _tokenId) view returns ( uint256, uint64){

    Model _model = models[_tokenId];
    return  (_model.key, _model.createTime);
  }

  function createData(uint256 _key, address _owner) returns (uint){

    Model memory _model = Model({key : _key, createTime : uint64(now)});

    uint256 newModelId = models.push(_model) - 1;

    // modelOwner[newModelId] = _owner;

    return newModelId;
  }
}

Я отправляю транзакции по ремиксам и web3.js:

myContract.methods.createData(
 key,
 addressA
).send({
 from: addressB 
})

проблема:

  1. когда я удаляю код modelOwner[newModelId] = _owner; в функции createData, web3 и ремикс оба работают (список моделей увеличивается) ;
  2. когда я добавляю modelOwner[newModelId] = _owner;, ремикс работает, но web3 не работает, потому что результат метода getData не верен (список моделей не увеличивается) ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...