Fisco-Bcos联盟链应用开发经验分享【区块链应用开发心得】

智能合约开发教程

本文旨在解答以下几个问题

  1. 区块链具有公开透明可追溯的特点,那么我们在项目开发的过程中应该如何保障用户的隐私?
  2. 区块链的信息要存入每个节点,如此高的通信复杂度和存储开销下,我们应当如何选择把什么信息存储到链上?
  3. 区块链应用开发中,我们应该如何保证在不泄漏自己身份的前提下,同时证明"我"是"我"?

1.区块链具有公开透明可追溯的特点,那么我们在项目开发的过程中应该如何保障用户的隐私?

​ 在区块链应用开发中,我们会发现一个很重要的问题。相对于传统开发来说,用户完成注册信息,需要填写用户的身份信息以及账号密码等隐私信息。在区块链中,这条交易信息可以被任何人看到,交易回执等信息也可以被任何人追溯。那么该如何保证到用户的隐私得到最大的保护呢?我们可以通过对关键信息采取**“脱敏上链”**.通过对关键信息采取sha256等加密算法脱敏上链,区块链上只存储一串类似b3b5cdbf6c2b060533dce93ebfb944df9085517c912a2d29193f43264f120367的哈希值.那么用户又如何证明这个信息是原来的信息呢?本文将通过两个实际例子来解释这一点 。

案例一:用户注册登陆时,如何在保障用户密码安全的情况下实现用户登陆?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OjnGs42g-1640606981660)(https://github.com/Jay1213811/Government-office-program-based-on-blockchain/blob/master/img/%E7%99%BB%E9%99%86%E6%B3%A8%E5%86%8C.jpeg)]

案例二:用户A上传一大型文件,用户B下载该文件的情况下解决以下问题.1.如何保障该文件是用户A上传的?2.如何保障该文件没有被篡改过?

​ 这里有两个问题需要注意。第一由于文件很大我们不可能把文件放在链上,同时由于有的文件具有隐私性,不可能给所有人查看。因此我们需要把文件的哈希上链,而不是直接把文件上链。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZiuRVlZD-1640606981661)(https://github.com/Jay1213811/Government-office-program-based-on-blockchain/blob/master/img/%E4%B8%8B%E8%BD%BD%E6%96%87%E4%BB%B6.jpeg)]

2.区块链的信息要存入每个节点,如此高的通信复杂度和存储开销下,我们应当如何选择把什么信息存储到链上?

  • 文件过大以及一些不重要的信息并不需要上链,这一点有别于我们传统开发思维,什么数据都要往数据库存。我们应当把重要的信息才上链。那么我们应该如何界定什么信息是重要的信息呢? 我们应该回归初心,问问怎么为什么要用区块链技术?因为区块链具有公开透明、可追溯,不可篡改等特点。那么我们存这信息的时候就应当问问自己这个信息是否需要保证公开透明、可追溯,不可篡改等特点中的一点甚至多点。举例来说,
    针对一个区块链疫苗溯源系统。那么对于当天的天气,疫苗的生产方法等信息就不符合需要公开透明、可追溯,不可篡改等特点,对于疫苗的生产时间,地点等信息就需要保障了。因此疫苗的生产时间,地点就需要上链,而疫苗的生产方法等就不需要上链,需要的话我们存放在本地即可了。

3.区块链应用开发中,我们应该如何保证在不泄漏自己身份的前提下,同时证明"我"是"我"?

​ 我们可以运用零知识证明的方法实现这一点。零知识证明可以理解为 “我不告诉泄露任何有效信息的情况下证明某件事”。举个具体的实际例子来说:
我们想要开发一个匿名投票系统.对于一个公司,想要做一个投票系统选出最佳员工.我们想要保障1.知道投票人是公司的员工2.投票人的信息不被泄漏,避免导致公司矛盾3.投票信息公开透明可追溯,不可篡改.
针对这一需求就可以很好的应用零知识证明来解决.用户首先通过在区块链上完成注册,得到一个数字身份.用户登陆进行投票的时候,进行确认该身份是符合的,那么就可以进行投票.我们只做了一次判定该用户是公司的员工.而不需要披露该用户的具体身份信息.

猜你喜欢

转载自blog.csdn.net/qq_41569591/article/details/122179575