Как использовать набор со строкой - PullRequest
0 голосов
/ 27 апреля 2019

Я использую умный контракт для обновления значения в блокчейне, но метод set принимает только целые числа.

Это событие handleSubmit устанавливает новое сохраненное значение и получает ответ, чтобы подтвердить его обновление.

async handleSubmit(event) {
    alert('A value was submitted: ' + this.state.newValue);
    event.preventDefault();
      // Use web3 to get the user's accounts.
      const { accounts, contract } = this.state;
      await contract.methods.set(this.state.newValue).send({ from: accounts[0] });
      const response = await contract.methods.get().call();
      this.setState({storageValue: response});

Это умный контракт

pragma solidity ^0.5.0;

contract SimpleStorage {
string storedData;


function set(string x) public {
   storedData = x;
  }

  function get() public view returns (string) {
    return storedData;
  }
}

1 Ответ

0 голосов
/ 05 мая 2019

В Solidity v0.5.0 в списке критических изменений говорится:

Явное расположение данных для всех переменных структуры, массива или отображения Типы сейчас обязательны. Это также применяется к параметрам функции и вернуть переменные.

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

Итак, ваш код должен выглядеть так:

function set(string memory x) public {
   storedData = x;
  }

  function get() public view returns (string memory) {
    return storedData;
  }
}
...