将数据存储到区块链中

问题描述 投票:1回答:2

编写DApp,将数据存储到“区块链”中。我试图写这个坚固但我不明白如何将它存储到“区块链”。我可以这样做吗?这样存储数据是否安全?

pragma solidity 0.4.24;

contract database{
struct Data{
    uint index;
    uint value;
}

Data[] public Datas;

  function AddData(uint _index, uint _data) public {
      Datas.push(Data(_index, _data));
  }
}
blockchain solidity smartcontracts
2个回答
0
投票

是!您可以简单地将数据存储在区块链中。

假设您已将此合同部署到网络,合同地址为0x1234abc...。 现在再次部署它,这次合同部署在0x987cba...AddData()0x1234abc...上调用0x987cba...将不一样。 您只需向该合约的that specific instance添加更多数据。

我不能说以这种方式存储一些数据是否安全,它可以像你想要的那样安全。意思是,这取决于您的具体需求和实施。

目前你的合同看起来永远不会被篡改。 因为您只是附加数据,而不是修改合同中的任何内容。

如果您想要修改数据,可以在AddData()函数中添加一些修饰符,例如Ownable by OpenZeppelin。因此,唯一的所有者可以修改此合同中的数据。


0
投票

最好为你的情况使用mapping,因为这使你有可能定义一个自定义的index,它不仅可以是0, 1, 2, ..., n,还可以是一个字符串或任何你想要的。这是一个例子:

pragma solidity 0.4.24;

contract database{

    struct Table{
        uint value1;
        uint value2;
    }

    mapping(bytes32 => Table) public tables; 

    function addData(bytes32 _index, uint _value1, uint _value2) public {
        tables[_index].value1 = _value1;
        tables[_index].value2 = _value2;
    }
}  

您还可以使用此表达式通过addData函数存储数据:

tables[_index] = Table(_value1, _value2);

它看起来更好,但使智能合约的大小更大!

© www.soinside.com 2019 - 2024. All rights reserved.