первая, версия 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
})
проблема:
- когда я удаляю код
modelOwner[newModelId] = _owner;
в функции createData
, web3 и ремикс оба работают (список моделей увеличивается) ;
- когда я добавляю
modelOwner[newModelId] = _owner;
, ремикс работает, но web3 не работает, потому что результат метода getData
не верен (список моделей не увеличивается) ;