Как постоянно хранить данные в смарт-контракте Solidity? - PullRequest
0 голосов
/ 03 марта 2020

Я написал умный контракт, в котором есть сопоставления. Я сохранил несколько пар ключ / значение в отображении в транзакции. Когда я пытаюсь распечатать отображение в другой транзакции, данные, сохраненные в предыдущей транзакции, не сохраняются постоянно. Как сохранить данные в структуре данных на постоянной основе, чтобы они отражались и в других транзакциях?

pragma solidity >=0.4.0 <0.6.0 ;
contract mrks
{
 mapping(uint => string) public var ;

 function assign(uint it, string memory str) public
 {
   var[it] = str ;
 }

 function display(uint it) returns(uint) 
 {
   return var[it] ;
 }
}

Это пример кода. Если я задаю это = 1, str = "John" и в другой транзакции, когда я даю 1 в качестве аргумента в функции отображения, это не дает "John" в качестве вывода.

Вопрос может быть глупым. Пожалуйста, помогите мне .

Ответы [ 2 ]

1 голос
/ 03 марта 2020

Вы называете отображение неправильно, var является зарезервированным ключевым словом в Solidity и не может использоваться в качестве имени какой-либо структуры данных. Другая проблема заключается в том, что отображение возвращает string, а ваша display функция возвращает int. Я исправил обе проблемы, и ниже приведен результирующий код.

pragma solidity >=0.4.0 <0.6.0 ;
contract mrks {

 mapping(uint => string) public testMapping;

 function assign(uint it, string memory str) public {
   testMapping[it] = str ;
 }

 function display(uint it) returns(string) {
   return testMapping[it];
 }
}
0 голосов
/ 09 марта 2020

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

...