【问题标题】:How to store private data on blockchain?如何在区块链上存储私有数据?
【发布时间】:2019-06-05 08:06:42
【问题描述】:
我正在以太坊 (Solidity) 上编写 DApp,我需要找到一个解决方案,如何在区块链上存储私有数据,同时我还需要以某种方式继续它们。如果只是存储,我可以使用一些普通的加密,但问题是我需要读取智能合约中的数据并以某种方式进行。
假设:
1) 我想向区块链发送一些私人号码。
2)我需要检查私人号码是否大于最后存储的私人号码并且小于最后存储的第二个号码。
if (storage[n] < y < storage[n-1]) storage.push(y);
3) 如果是,我想私下存储。
有什么想法吗?谢谢。
【问题讨论】:
标签:
security
blockchain
ethereum
solidity
smartcontracts
【解决方案1】:
最好使用具有两个条目的数据结构,例如一个元组,第一个条目用作计数器(即处理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
【解决方案2】:
您可以在发送到区块链之前对数据进行加密。加密和解密应该在链下完成,因为区块链是公开的,你不希望你的明文被暴露。
如果您使用同态加密,您可以在不暴露明文的情况下在链上比较这些数字。
同态加密是一种加密形式,它允许对密文进行计算,生成一个加密的结果,当解密时,它与操作的结果相匹配,就好像它们是在明文上执行的一样。 - 维基百科