基于区块链与IPFS的数据共享系统搭建步骤

购买专栏前请认真阅读:《基于区块链与IPFS的数据共享系统》专栏简介

视频演示:

https://www.bilibili.com/video/BV1y24y1v7RX
截图

系统简介:

本系统使用RSA算法生成密钥对, RSA私钥用于用户身份认证;用户发送的数据将存储于IPFS, IPFS返回的CID(IPFS Hash)使用双方用户的RSA公钥加密后存储于区块链; 区块链部分使用Hyperledger Fabric,并用Hyperledger Explorer追踪交易

包含功能

  1. 基于Fabric v1.4.4 first-network,四个peer一个orderer节点,使用docker部署
  2. IPFS使用的是ipfs/kubo镜像,负责用户数据文件的存储,IPFS返回的CID存储于Fabric
  3. 项目包含了Hyperledger Explorer(区块链浏览器),默认跟随脚本启动
  4. 项目包含了tape对链码压测
  5. 使用RSA公私钥鉴别用户身份(1024位)
  6. 链码对传输记录进行存储,包含:发送者公钥、接收者公钥、文件在IPFS的加密CID(由发送者或接收者的公钥加密)、文件名、时间戳、Fabric交易id
  7. 后端使用gin框架实现,前端使用Vue和Element ui实现
    使用go fabric sdk调用智能合约;使用go-ipfs-api上传与下载用户文件;使用uuid对用户的文件名(下载时)进行加密

安装步骤(默认是在本地虚拟机)

  1. 安装ubuntu 20.04(或其他Linux发行版),docker,docker-compose,go1.19
    docker,docker-compose,go1.19安装方法请参考此文章:https://blog.csdn.net/qq_41575489/article/details/129129086

  2. 向/etc/hosts 写入:

    127.0.0.1 orderer.example.com
    127.0.0.1 peer0.org1.example.com
    127.0.0.1 peer1.org1.example.com
    127.0.0.1 peer0.org2.example.com
    127.0.0.1 peer1.org2.example.com
    
  3. 项目在服务器上运行需要操作,如果是虚拟机则省略这步。
    修改以下两个文件中127.0.0.1 为服务器公网IP:

    datashare/application/server/controller/controller.go
    datashare/application/web/index.html
    
  4. 启动区块链部分

    cd blockchain
    ./start.sh
    
  5. 启动前后端

    cd application/server
    go run main.go
    
  6. 如果是云服务器
    在防火墙放行9090和8080TCP端口

  7. 打开网页
    ip:9090/web

  8. 关闭项目或需要重启项目时清理现有项目:

    cd blockchain
    ./stop.sh
    在application/server运行后端时
    使用键盘指令:ctrl+c
    

tape测压命令:

在blockchain/tape中

./tape --config=config.yaml --number=100

注意:

  1. 如果全部是在虚拟机内操作,不需要修改IP
  2. 提示密钥不对、服务器错误请检查是否修改好hosts(步骤2)
  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Java Spring Boot项目中解决跨域问题可以通过以下步骤实现: 1. 在Spring Boot的配置类或者启动类上添加`@CrossOrigin`注解,例如: ```java @CrossOrigin(origins = "http://localhost:3000") @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` 这里的`origins`参数指定了允许跨域请求的源地址,你可以根据你的需求进行设置。 2. 使用全局配置方式解决跨域问题,创建一个名为`CorsConfig`的配置类,并实现`WebMvcConfigurer`接口,例如: ```java @Configuration public class CorsConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("http://localhost:3000") .allowedMethods("GET", "POST", "PUT", "DELETE") .allowCredentials(true) .maxAge(3600); } } ``` 这里的`allowedOrigins`方法指定了允许跨域请求的源地址,`allowedMethods`方法指定了允许的请求方法,`allowCredentials`方法设置为`true`表示允许发送身份凭证信息(如cookies),`maxAge`方法设置了预检请求的有效期。 3. 如果需要在特定的控制器或者接口上配置跨域,可以使用`@CrossOrigin`注解,例如: ```java @RestController @CrossOrigin(origins = "http://localhost:3000") public class UserController { // 控制器方法... } ``` 这样配置的话,只有`UserController`类下的接口允许跨域请求。 这些方法可以帮助你在Java Spring Boot项目中解决跨域问题。记住,在开发过程中,请根据你的实际需求和安全考虑来进行跨域配置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TrueTechLabs

创作不易!感谢打赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值