有什么方法可以在智能合同上存储信息,并将其保密吗?
如果合同的状态变量不是公共的,如:
contract foo{
uint public publicVariable;
uint notPublic;
}"notPublic“真的不是公开的吗?如果它包含像信用卡一样的秘密信息呢?这样行吗?如果我想在这个变量中保存一些绝密信息,那么即使它是链上的,也没有人能得到它吗?
发布于 2016-04-03 22:58:01
Ethereum区块链上的一切都是公开的。
因此,您不能模糊数据。这是因为每个each节点存储整个块链的副本,因此每个节点理论上都可以检查它们的副本,以查找您想要隐藏的任何数据。
这并不意味着你不能把敏感数据放在区块链上,你只需要先加密它。
加密数据
如果要在区块链上存储敏感用户信息,则应使用其公钥对数据进行加密。只有拥有私钥的用户才能解密。
这似乎是更多的工作,然后你必须做更多的正常的web应用程序,但这实际上是一个好处。如果您假设攻击者可以访问您的数据,那么您将避免造成这些巨大数据破坏的许多安全隐患。默默无闻的安全根本不是真正的安全!
发布于 2016-04-03 20:25:57
您可以对数据进行加密,并将密钥保持在非链状态:
发布于 2020-03-17 14:09:52
加密数据并将其放入链中的一个问题是,您要将加密的数据永远保存在公共的不可变数据存储区中。如果有一些激进的新计算范式(量子模式)呢?能破解加密,还是你的钥匙被偷了?
这个问题是“基线议定书”正在解决的问题,参见:
https://docs.baseline-protocol.org
简而言之,它的目标是使用零知识证明(ZKP),而不是将您的私人信息存储在链上,而是存储您知道信息而不透露信息的证据。
https://ethereum.stackexchange.com/questions/2624
复制相似问题