首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >电子智能合同中的私人信息

电子智能合同中的私人信息
EN

Ethereum用户
提问于 2016-04-03 20:10:54
回答 3查看 4.2K关注 0票数 26

有什么方法可以在智能合同上存储信息,并将其保密吗?

如果合同的状态变量不是公共的,如:

代码语言:javascript
复制
contract foo{
    uint public publicVariable;
    uint notPublic;
}

"notPublic“真的不是公开的吗?如果它包含像信用卡一样的秘密信息呢?这样行吗?如果我想在这个变量中保存一些绝密信息,那么即使它是链上的,也没有人能得到它吗?

EN

回答 3

Ethereum用户

回答已采纳

发布于 2016-04-03 22:58:01

Ethereum区块链上的一切都是公开的。

因此,您不能模糊数据。这是因为每个each节点存储整个块链的副本,因此每个节点理论上都可以检查它们的副本,以查找您想要隐藏的任何数据。

这并不意味着你不能把敏感数据放在区块链上,你只需要先加密它。

用公钥

加密数据

如果要在区块链上存储敏感用户信息,则应使用其公钥对数据进行加密。只有拥有私钥的用户才能解密。

这似乎是更多的工作,然后你必须做更多的正常的web应用程序,但这实际上是一个好处。如果您假设攻击者可以访问您的数据,那么您将避免造成这些巨大数据破坏的许多安全隐患。默默无闻的安全根本不是真正的安全!

票数 25
EN

Ethereum用户

发布于 2016-04-03 20:25:57

您可以对数据进行加密,并将密钥保持在非链状态:

请参阅:https://github.com/brix/crypto-js

票数 13
EN

Ethereum用户

发布于 2020-03-17 14:09:52

加密数据并将其放入链中的一个问题是,您要将加密的数据永远保存在公共的不可变数据存储区中。如果有一些激进的新计算范式(量子模式)呢?能破解加密,还是你的钥匙被偷了?

这个问题是“基线议定书”正在解决的问题,参见:

https://docs.baseline-protocol.org

简而言之,它的目标是使用零知识证明(ZKP),而不是将您的私人信息存储在链上,而是存储您知道信息而不透露信息的证据。

票数 1
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/2624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档