Как сохранить строку в контракте Solidity? - PullRequest
0 голосов
/ 24 октября 2018

Я создаю контракт, в котором хранится массив строк.

Я тестирую контракт с трюфелем и ganache-cli.Когда я вызываю метод putData() с любой строкой, он выдает ошибку Error: VM Exception while processing transaction: invalid opcode.

Вот код:

pragma solidity ^0.4.24;

contract DataContract {

    address public owner;
    uint public index = 0;
    string[] public data;

    // Constructor
    constructor() public {
        owner = msg.sender;
    }

    function putData(string _d) public {
        data[index] = _d;
        index = index + 1;
    }

}

Как я могу заставить эту работу?

1 Ответ

0 голосов
/ 25 октября 2018

Вы пишете за концом массива.(Длина 0, поэтому нет места для хранения чего-либо.)

Просто отбросьте материал index и используйте push, что увеличит размер массива для вас:

function putData(string  _d) public {
    data.push(_d);
}
...