如何在Solidity智能合约中永久存储数据?

时间:2020-03-03 13:33:16

标签: solidity

我写了具有映射的智能合约。我在事务中的映射中存储了一些键/值对。当我尝试在另一个事务中打印映射时,先前事务中存储的数据不是永久存储的。如何将数据永久保存在映射数据结构中,以使其也反映在其他事务中?

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 个答案:

答案 0 :(得分:1)

您将映射命名错误,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];
 }
}

答案 1 :(得分:0)

在尝试通过另一笔交易获取价值之前,请确保已正确开采了第一笔储值交易。