碳觅后端项目 TanMi-API
列出运行该项目所必须的条件和相关依赖
- 服务器端 JAVA 版本必须小于或等于 1.8.0_202 ,否则会导致依赖问题
说明如何运行和使用你的项目,建议给出具体的步骤说明
- 开发端/本机
- 项目根目录下执行
mvn package
- 将 target 文件夹下生成的 jar 包上传至服务器
- 项目根目录下执行
- 服务器
- 执行
nohup java -jar $JAR_FOLDER > ./log.txt 2>&1 &
,其中JAR_FOLDER为jar包绝对/相对目录 - 检查
IP:8080
是否可以访问项目
- 执行
如果有测试相关内容需要说明,请填写在这里
- 测试相关请将程序运行后参照 SpringDoc 文档
./doc.html
使用的技术框架或系统架构图等相关说明,请填写在这里
介绍来源:IPFS 白皮书( https://ipfs.netlify.app/tutorial/whitepaperipfs.html ) 其他来源:深入浅出IPFS ( https://blog.csdn.net/shyflea/article/details/120612376 )
- SpringBoot
- 创建可以运行的独立的、基于Spring的生产级应用程序。为所有的Spring开发提供一个根本性的更快、更广泛的入门体验。
- 开箱即用,提供一系列大类项目常见的非功能特性(如嵌入式服务器、安全、度量、健康检查和外部化配置)。
- IPFS
- 星际文件系统 Interplanetary File System(IPFS)
- 一种点对点的分布式文件系统,旨在连接所有有相同的文件系统的计算机设备。在某些方面,IPFS 类似于 Web,但 Web 是中心化的,而 IPFS 是一个单一的 Bittorrent 群集,用 Git 仓库分布式存储。换句话说,IPFS 提供了高吞吐量的内容寻址块存储模型,具有内容寻址的超链接。这形成了一个广义的 Merkle DAG(默克尔有向无环图)数据结构,可以用这个数据结构构建版本文件系统,区块链,甚至是永久性网站。IPFS 结合了分布式哈希表,带有激励机制的块交换和自我认证命名空间。IPFS 没有单故障点,节点不需要相互信任。
- 分布式哈希表 DHT
- 分布式散列表(DHT)被广泛用于协调和维护关于对等系统的元数据。比如,MainlineDHT 是一个去中心化哈希表,他可追踪查找所有的对等节点。
- 块交换 BitTorrent
- BitTorrent 是一个广泛成功应用的点对点共享文件系统,它可以在存在不信任的对等节点(群集)的协作网络中分发各自的文件数据片。从
BitTorrent 和它的生态系统的关键特征,IPFS 得到启示如下:
- BitTorrent 的数据交换协议使用了一种 bit-for-tat 的激励策略,可以奖励对其他方面做贡献的节点,惩罚只榨取对方资源的节点。
- BitTorrent 对等体跟踪文件的可用性,优先发送稀有片段。这减轻了 seeds 节点的负担,让 non-seeds 节点有能力互相交易。
- 对于一些剥削带宽共享策略,BitTorrent 的标准 tit-for-tat 策略是非常脆弱的。然而,PropShare 是一种不同的对等带宽分配策略,可以更好的抵制剥削战略,提高群集的表现。
- BitTorrent 是一个广泛成功应用的点对点共享文件系统,它可以在存在不信任的对等节点(群集)的协作网络中分发各自的文件数据片。从
BitTorrent 和它的生态系统的关键特征,IPFS 得到启示如下:
- 版本控制系统 Git
- 版本控制系统提供了对随时间变化的文件进行建模的设施,并有效地分发不同的版本。流行版本控制系统 Git 提供了强大的
Merkle DAG 对象模型,以分布式友好的方式捕获对文件系统树的更改。
- 不可更改的对象表示文件(blob),目录(树)和更改(提交)。
- 通过加密hash对象的内容,让对象可寻址。
- 链接到其他对象是嵌入的,形成一个 Merkle DAG。这提供了很多有用的完整和 work-flow 属性。
- 很多版本元数据(分支,标示等等)都只是指针引用,因此创建和更新的代价都小。
- 版本改变只是更新引用或者添加对象。
- 分布式版本改变对其他用户而言只是转移对象和更新远程引用。
- 版本控制系统提供了对随时间变化的文件进行建模的设施,并有效地分发不同的版本。流行版本控制系统 Git 提供了强大的
Merkle DAG 对象模型,以分布式友好的方式捕获对文件系统树的更改。
- 自我认证认文件系统 SFS
- SFS 提出了两个引人注目的实现(a)分布式信任链,和(b)平等共享的全局命名空间。SFS 引入了一种自我建构技术—注册文件,因此 SFS 文件系统的名字认证了它的服务,用户可以通过服务提供的公钥来验证,协商一个共享的私钥,保证所有的通信。所有的 SFS 实例都共享了一个全局的命名空间,这个命名空间的名称分配是加密的,不被任何中心化的 body 控制。
- 星际文件系统 Interplanetary File System(IPFS)
高效的协作会激发无尽的创造力,将他们的名字记录在这里吧
- 郑欣荣 Xinrong Zheng
- 赵天成 Tiancheng Zhao