首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何以安全的方式保存合同中的电子邮件?

如何以安全的方式保存合同中的电子邮件?
EN

Ethereum用户
提问于 2021-06-28 23:34:52
回答 1查看 134关注 0票数 0

我试图在合同中保存用户的电子邮件,但我可以在调用合同方法时模拟from。

Contract.sol

代码语言:javascript
复制
contract Test {
    ...
    mapping (address => string) private _emails;

    function getEmail(address from) public view returns (string memory) {
        require(msg.sender == from, 'No!');
        return _emails[msg.sender];
    }
}

app.js (web3js)

代码语言:javascript
复制
let email = await Contract.methods.getEmail(any_other_address).call({from: any_other_address});
console.log(email);

输出

代码语言:javascript
复制
email@blablabla.com

我认为msg.sender不能在web3.js中被操纵。在合同中有安全的方法保存电子邮件吗?

EN

回答 1

Ethereum用户

发布于 2021-06-29 01:49:06

如果以后只有一个人在合同之外阅读,那么您实际上可以在合同中保存私有信息。您可以使用在浏览器中运行的私钥加密技术,在将用户的电子邮件发送到区块链之前将其加密到您自己的公钥。稍后,您可以使用您的私钥来读取电子邮件地址。

一般来说,如果您只是从用户发送信息的一种方式,只在区块链之外读取,而不是在链上读取,那么使用日志来处理数据要便宜得多,而不是将其写入联机存储。

另外,如果您有大量的数据,那么最好将其写入类似if的内容,然后将散列存储到链上的数据中。为了具有这种安全性和一种方法,您可以在将数据存储在IPFS上之前将数据加密到您的公钥中。

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

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

复制
相关文章

相似问题

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