如何在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"作为输出。

这个问题可能很傻。请帮帮我。

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

在尝试用另一个事务获取值之前,请确保存储值的第一个事务已经被正确挖掘。

最新更新