# cb-privacy
一个基于区块链+同态加密+小程序的隐私保护方案
<br/>
***写在前面***
> 设想一个场景,你有好多智能设备(终端设备),比如你的手机、air-pods、平版、小米手环......,你使用它们的过程中,它也不断的在产生数据,这些数据是有价值的,设备的制造商或应用开发商想获取它们,然而它通常却是隐私的,这可怎么办呢?
这就是本文(本项目)欲尝试解决的问题。
<br />
### :tired_face: 理论
详见项目根目录的论文。欢迎下载。
<br/>
### :tada: 开发
- 在本地创建一个存放projects的文件夹,比如projects,在该文件夹下右键,点击`Git bash here`
- 输入 `git clone https://github.com/yenche123/cb-privacy.git ` 安装好后projects下会出现 `cb-privacy` 文件夹。
#### :file_folder: cb-privacy下 各文件夹解释
`contracts`: 存放智能合约
`main-project`: 主要目录,终端层、数据分析者(外包)以及边缘服务器层的代码皆在其中。
#### :file_folder: main-project 下 文件夹解释
`cloudfunctions`: 云函数根目录,其下每个文件夹对应一个云函数。其中`cb` 为中枢区块链的代理,`edgeServer` 模拟边缘服务器,`getOpenId` 为获取身份标识用的云函数。
`miniprogram`: 小程序客户端的根目录
`project.config.json`: 小程序项目配置文件
<br/>
### :hammer: main-project 的部署
- 安装 [小程序开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html)
- [注册一个小程序账号](https://mp.weixin.qq.com/wxopen/waregister?action=step1&token=&lang=zh_CN),申请完成后,获得小程序的 AppID
- 打开小程序开发者工具,选择导入项目`projects/main-project`,输入AppID。由于会使用到云开发,所以建议申请一个AppID,不要使用测试号。接着,为项目命名,输入“项目名称”,然后点击 `导入`
<img src="docs/images/screenshot-1.png" style="zoom:50%;" />
p.s. 注意上图的目录 `D:\research` 只是示例,请选择你中你本地的 `cb-privacy/main-project` 文件夹
- 点击导入后,若没有开通云开发(用于部署云函数和存储其他部署存于链上的数据),点击顶部选项栏的`云开发`,进行开通
<img src="docs/images/screenshot-2.png" alt="开通云开发" style="zoom:50%;" />
- 在 `main-project` 目录里,定位到 `cloudfunctions/cb` 路径上,此时在终端命令行内分次输入 `npm install big-integer@1.6.48` 、`npm install ethereumjs-tx@2.1.2` 、`npm install web3@0.20.6` 以及 `npm install web3-eth-abi`,以完成 `cb` 云函数的依赖安装。@之后的版本号,代表安装特定版本,这些版本皆已通过测试,若为其他(或最新)版本,不保证兼容。完成后,在小程序开发者工具里,找到 `cloudfunctions/cb` 目录,在该目录上右键,点击`上传并部署:云端安装依赖(不上传node modules),如此即可同步云函数至云上。
![上传云函数](docs/images/screenshot-3.png)
- 同理,对`edgeServer` 云函数安装 `npm install big-integer@1.6.48` ,安装完也同样 `上传并部署:于端安装依赖`
- 再同理,对 `getOpenid` 云函数点击 `上传并部署:于端安装依赖`(它没有依赖需要安装)
- 在终端打开 cb-privacy/main-project/miniprogram ,`npm install big-integer@1.6.48` 在终端层上安装大数模块。安装好后,点击 小程序开发者工具 顶部标签 `工具` ,再点击 `构建 npm`,即把 npm 模块转成小程序客户端可运行的格式。转换完毕后,`miniprogram` 文件夹下即会出现 `miniprogram_npm` 文件夹,这里用于存放转换完成后的代码。
- 至此,即完成配置。
<br/>
### :smirk: 如何使用
- 首先,打开小程序,点击`进入`
<img src="./docs/images/进入页.jpg" width="256" />
<br/>
- 接着点击`数据分析者`,输入分析标题和详情
<img src="./docs/images/数据分析页.jpg" width="256" />
<br />
- 回到身份选择页,选择`终端用户`,输入一个数字;输入完,退出到选择页再进入,接着再输入一个数字,如此反复.....
<img src="./docs/images/终端1.jpg" width="256" />
- 最后再回到数据分析者页,`触发EdgeServer`,观察结果。
<br />
至此,即完成了系统的初探。
以下步骤为智能合约开发及部署的流程,若只是简单上手本方案,可忽略。
<br/>
---
<br/>
### :pencil: 开发智能合约
使用任意代码编辑器(譬如VS code)打开,cb-privacy/contracts 目录,其中以存放一个.sol后缀的文件 `CentralBlockchain.sol` 文件,这即是一个智能合约的代码。目前该智能合约已部署在 Ropsten 测试链上,合约地址为 `0x19987BDd141D1F6F582E90C2f35aF43620A93FDc`
现在若我们修改或新增了智能合约,可以打开 [在线remix ide](http://remix.ethereum.org/) 对合约进行部署:
1. 在该网站上,打开你要部署的合约,比如`CentralBlockchain.sol` 。打开后,按ctrl+S 进行编译
![在remix ide上打开你的智能合约](docs/images/screenshot-4.png)
2. [安装 MetaMask的Chrome扩展](https://metamask.io/download.html),并在其上注册一个 Ropsten 测试链上的账号
3. 回到 remix-ide,点击`DEPOLY & RUN TRANSACTIONS`,选择部署环境为 `Injected Web3`
![选择 Injected Web3](docs/images/screenshot-5.png)
4. 此时会弹出MetaMask扩展的授权,remix-ide 要求得到你在 Ropsten网络上某账号的授权。点击“连线”,即可。
![授权连线到你的链上账户](docs/images/screenshot-6.png)
5. 连线完成后,点击上图橘色按钮`Deploy` ,这是MetaMask又会弹框,告知你部署需要的多少以太。若以太不够,由于Ropsten是测试网络,你可以在MetaMask插件上,点击“存入 - 取得以太币 - request 1 ether from faucet”(如下三图所示),免费获得以太币。同样,获得以太币需要等待一段时间。
<img src="docs/images/screenshot-7.png" alt="点击存入" style="zoom:50%;" />
<img src="docs/images/screenshot-8.png" alt="点击取得以太币" style="zoom:50%;" />
<img src="docs/images/screenshot-9.png" alt="点击 request 1 ether" style="zoom:50%;" />
6. 回到点击"Deploy"后,MetaMask弹出的通知,点击“确认”后,就会对合约进行部署。同样地,这一步也需要一段时间。
7. 部署成功后,MetaMask会弹出通知,告知你合约部署完成,同时remix-ide左下角上也会展示合约地址,如下图所示。该合约地址,请妥善保存。
![部署成功后获得合约地址](docs/images/screenshot-10.png)
8. 安装 solc,在任意文件夹下打开cmd终端,输入 `npm install -g solc`。 solc模块用于编译Solidity文件。
9. 在 cb-privacy/contracts文件夹下,打开cmd终端,输入 `solcjs --abi xxxxx.sol` ,将智能合约转成abi文件,abi文件用于让终端调用智能合约接口时,能知道该合约有哪些曝露的接口。其中xxxxx,为你的智能合约名,比如 `CentralBlockchain.sol` 。生成完后,会在同目录下出现 xxxxx_sol_xxxxx.abi 文件
10. 将 xxxxx_sol_xxxxx.abi 复制到 cb-privacy/main-project/cloudfunctions/cb 文件夹下,并修改该文件夹下Controller.js 代码的定义: 将合约地址改成第 7步得到的地址,将 .abi 文件修改至正确的路径下,以及修改成自己在Ropsten链上的账户地址,如下图所示。小提示:`./CentralBlockchain_sol_CentralBlockchain.abi` 中 “./” 代表在当前文件夹下的意思。
![修改Controller.js 中的合约地址以及abi文件的名称](docs/images/screenshot-11.png)
11. 另外,你有可以至 [infura.io](https://infura.io/) 注册一个账户,其提供套件,可视为一个节点,来便利的连接以太坊网络。在其控制台上,点击`CREATE
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于区块链同态加密+小程序的隐私保护方案项目源码+论文(高分毕设),本资源中的源码都是经过本地编译过可运行的,评审分达到98分,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、毕业设计、期末大作业和课程设计使用需求,如果有需要的话可以放心下载使用。 基于区块链同态加密+小程序的隐私保护方案项目源码+论文(高分毕设)基于区块链同态加密+小程序的隐私保护方案项目源码+论文(高分毕设)基于区块链同态加密+小程序的隐私保护方案项目源码+论文(高分毕设)基于区块链同态加密+小程序的隐私保护方案项目源码+论文(高分毕设)基于区块链同态加密+小程序的隐私保护方案项目源码+论文(高分毕设)基于区块链同态加密+小程序的隐私保护方案项目源码+论文(高分毕设)基于区块链同态加密+小程序的隐私保护方案项目源码+论文(高分毕设)基于区块链同态加密+小程序的隐私保护方案项目源码+论文(高分毕设)基于区块链同态加密+小程序的隐私保护方案项目源码+论文(高分毕设)基于区块链同态加密+小程序的隐私保护方案项目源码+论文(高分毕设)基于区块链同态加密+小程序的隐私保护方案项目源码+论文(高分毕设)基于
资源推荐
资源详情
资源评论
收起资源包目录
基于区块链+同态加密+小程序的隐私保护方案源码+论文.zip (68个子文件)
cb-privacy-main
test.md 38B
docs
images
screenshot-2.png 96KB
screenshot-7.png 103KB
appreciate.png 156KB
screenshot-12.png 81KB
screenshot-13.png 78KB
screenshot-6.png 138KB
screenshot-3.png 186KB
进入页.jpg 131KB
screenshot-11.png 222KB
终端1.jpg 241KB
screenshot-5.png 209KB
screenshot-8.png 121KB
screenshot-9.png 49KB
screenshot-1.png 32KB
screenshot-10.png 285KB
数据分析页.jpg 163KB
screenshot-4.png 133KB
崔晏哲 学士学位论文.pdf 2.31MB
.gitignore 53B
contracts
CentralBlockchain.sol 9KB
main-project
project.config.json 1KB
miniprogram
sitemap.json 194B
pages
index
index.wxml 1KB
user-unlogin.png 5KB
index.js 5KB
index.json 27B
index.wxss 1018B
identity
identity.wxml 271B
identity.wxss 301B
identity.js 658B
identity.json 71B
user
user.wxml 2KB
user.js 5KB
user.wxss 1KB
user.json 27B
analyst
analyst.json 74B
analyst.js 6KB
analyst.wxml 866B
analyst.wxss 1KB
test-one
test-one.wxml 395B
test-one.js 417B
test-one.json 27B
test-one.wxss 197B
enter
enter.js 775B
enter.wxss 875B
enter.wxml 601B
enter.json 65B
app.json 432B
app.js 252B
utils
identity-tool.js 1KB
paillier.js 5KB
app.wxss 117B
miniprogram_npm
big-integer
index.js 51KB
index.js.map 61KB
package.json 277B
package-lock.json 375B
cloudfunctions
getOpenid
package.json 259B
index.js 358B
edgeServer
paillier.js 5KB
package.json 261B
index.js 2KB
cb
Controller.js 5KB
CentralBlockchain_sol_CentralBlockchain.abi 2KB
paillier.js 5KB
package.json 253B
index.js 6KB
README.md 8KB
共 68 条
- 1
资源评论
盈梓的博客
- 粉丝: 9740
- 资源: 2473
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 【化工行业】-01-组织架构图.docx
- 【广告行业】-01-组织架构图.docx
- 【环保协会】-01-组织架构图.docx
- 【会展公司】-03-组织架构图.docx
- 【会展公司】-02-组织架构图.docx
- 【建筑工程】-01-项目组织架构图.docx
- 【建筑工程】-02-项目组织架构图.docx
- 【建筑工程】-03-组织架构图.docx
- 【金融行业】-01-组织架构图.docx
- 企业级网络仿真平台(eNSP)的功能特性及应用场景探讨
- 【教育培训】-01-组织架构图.docx
- 【建筑工程】-04-组织架构图.docx
- 【酒店行业】-01-组织架构图.docx
- 【科技行业】-01-组织架构图.docx
- 【科技行业】-02-组织架构图.docx
- 【科技行业】-03-组织架构图.xlsx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功