如何在区块链上存储私人数据?

时间:2019-01-10 12:39:33

标签: security blockchain ethereum solidity smartcontracts

我正在以太坊(Solidity)上编写DApp,当我还需要以某种方式进行处理时,我需要找到一种解决方案如何在区块链上存储私有数据。如果只是存储,我可以使用一些常规的加密方法,但是问题是我需要读取智能合约中的数据并以某种方式进行处理。

让我们说:

1)我想向区块链发送一些私人号码。

2)我需要检查私有号码是否大于上次存储的私有号码,并且小于倒数第二个存储的号码。

if (storage[n] < y < storage[n-1]) storage.push(y);

3)如果是,我想将其秘密存储。

有什么想法吗?谢谢。

2 个答案:

答案 0 :(得分:0)

最好使用带有两个条目的数据结构,例如一个元组,第一个条目用作计数器(即处理check if the private number is bigger than the last stored private number部分,第二个条目存储加密数据,一个用作计数器)。

y = new Dapp(sno, value)
# compare y's sno with the record, store private data in value

答案 1 :(得分:0)

您可以在将数据发送到区块链之前对其进行加密。加密和解密应在链外进行,因为区块链是公共的,并且您不希望公开纯文本。

如果使用同态加密,则可以在链上比较这些数字而不会暴露明文。

  

同态加密是一种加密形式,它允许对密文进行计算,生成加密结果,该结果在解密后与操作结果相匹配,就好像它们是对明文执行的一样。 -维基百科