128

如何在区块链保存私密信息 - 我的第一个 ETH 智能合约应用

thinkingincrowd · 于 发布 · 最后由 hwancha回复 · 1328 次阅读

忙活了一两个星期,终于把自己的第一个区块链 Ethereum 智能合约 Dapp 应用上线了。通过这个应用,我也学习了一下 Ethereum 智能合约的应用,Solidity 语言,和怎么配合其它基础架构(如 MetaMask, IPFS 等)实现一个系统。花了差不多 0.02 个 ETH 部署了智能合约,不知道能不能赚回打赏,哈哈。

这是一个什么应用

它的名字叫 Decentralized Secret Note。我部署在 Github pages 上,域名是 http://www.secret-note.one 。它的作用是让用户可以把他们私密的笔记内容,存储到区块链和分布式的网络上面。

如何做到分布式

  1. 笔记内容,保存在 IPFS(一个分布式 Web 架构)上。
  2. 笔记名字,和对应的内容在 IPFS 地址的 mapping,都保存在 Ethereum 的智能合约里面。

虽然页面是部署为 Github Pages,但是后端骨架都是在区块链上分布式存储的。其实 Dapp 好像也是可以部署到 IPFS 的,不过这个我还没有研究清楚。

什么数据应该放到区块链

每对区块链公链作出更改,都要耗费一定的手续费(矿工费)。而且,存储大量的数据在区块链里面也是不合适的。所以,我们只能把最关键的数据,存放在区块链里面。而且,数据存储在区块链上,对外界都是公开的。如何在区块链公链上存储私密的内容,一直是值得探讨的话题。

怎么保障内容安全

基于区块链公链直接存储数据的限制,和安全性考虑,智能合约里面我只保存了用户地址,笔记名字,和笔记内容在 IPFS 上面的链接 Hash。

正常情况下,每个用户只能看到自己保存的内容。他和智能合约交互的时候,必须是使用他自己的 Ethereum 地址来获取他的笔记。即便其它人的笔记内容在 IPFS 上的链接 Hash 被泄漏,IPFS 上面的内容也是经过了 SSH 的 Private Key 加密过的。这个私钥只有用户自己才知道,也没有保存在系统任何一个地方。

你可以做什么?

有兴趣的话,可以看我的源代码:https://github.com/kenspirit/secret-note ,提提意见,一起研究。当然,你还可以自己部署一个,连到测试网络,那就不用给 Mainnet 的 Gas,花真正的钱了,Yeah。

欢迎各位币圈大佬打赏。:D

ERC20 Token 打赏地址:0x713C8C77112858A3bd14A5FB380Fa0c4c5b1A8Bd
BTC 打赏地址:196XA8S8ZwBu7UNap2A84cLzCAKoPPGck3

  • 8433 large
    halepa

    收集相关新闻消息是有必要的。我觉得未来可能会用得上,谢谢提供给我的文章。

  • 128
    jackoelv

    拿来存放自己的各种密码,类似1Password那样的一个应用场景切入,是比较不错的。

  • 128
    hwancha

    现在,智能合同技术的出现给人们的生活带来了很多方便。