一种基于区块链和IPFS的代码版本管理方法技术

技术编号:37620011 阅读:17 留言:0更新日期:2023-05-18 12:11
本发明专利技术公开一种基于区块链和IPFS的代码版本管理方法。首先项目创建者上传智能合约形式的代码审查机制。代码开发者在进行项目提交时,需要在IPFS上提交原始代码,并将生成的内容哈希地址经过非对称加密后转换为IPNS地址并上传至智能合约。所有提交的代码需要审查合约进行代码检查,确保没有基础漏洞。同时审查合约需要检查代码冲突,保证代码版本的一致性。本发明专利技术解决了软件代码版本管理过程中依赖中心化服务器的弊端,能够实现真正意义上完全去中心化与防篡改的代码版本管理方式。去中心化与防篡改的代码版本管理方式。去中心化与防篡改的代码版本管理方式。

【技术实现步骤摘要】
一种基于区块链和IPFS的代码版本管理方法


[0001]本专利技术属于代码版本管理控制
,尤其涉及一种基于区块链和IPFS的代码版本管理方法。

技术介绍

[0002]代码协同一直是项目开发过程中最重要的方面之一,在软件项目日益趋向大型化之后,好的代码版本协同工具在可以节省代码开发人员大量时间和精力的同时提高相关各方的可信度。当多方参与协同开发时,管理准确的数字信息并跟踪项目代码的变化已成为代码版本控制面临的主要挑战之一。
[0003]代码版本控制已在当今快节奏环境中广泛使用,有助于缩短产品开发和发布周期。数字化的发展带来了内容不准确、文档协作相关的问题,版本管理问题消耗了83%的生产力。现有的文件版本控制系统大多是集中式的,存在单点故障,其特点是时间消耗增加,文件更新的错误操作允许在网络中其他用户不知情的情况下对文件进行更改。更重要的是,使用集中式系统,文档和更新历史记录的更改可能会被篡改,从而危及更改及其更新历史的可信度。因此,需要一个完全安全和分散的数字化代码版本管理平台。

技术实现思路

[0004]解决的技术问题:本专利技术公开了一种基于区块链和IPFS的代码版本管理方法,能提供代码版本控制,代码回溯功能的软件项目代码版本管理方法,从而实现真正意义上完全去中心化的代码版本管理方法。
[0005]技术方案:一种基于区块链和IPFS的代码版本管理方法,所述代码版本管理方法包括以下步骤:S1,项目管理者上传智能合约和智能合约至区块链,智能合约和智能合约分别用来规定项目代码存在性验证和代码合法性审查这两项代码版本管理功能;S2,开发者在星际文件系统IPFS中,上传项目代码的版本,得到版本的初始内容哈希;S3,拼接初始内容哈希和当前时间戳,使用SHA256非对称加密算法结合项目元组数据信息生成项目代码的版本的唯一IPNS地址,并记录当前时间戳;S4,将五元组上传至智能合约,由智能合约验证版本的初始内容哈希的存在性;表示当前版本号,表示前一个版本的;如果验证通过,进入步骤S5,否则,结束流程;S5,在智能合约中进行代码合法性审查,智能合约检查五元组中是否指向当前全局Head节点,如果不一致,通过逐行扫描的方式,检查哈希值不一致的代码文
件,确认并返回代码的冲突情况,结束流程;如果一致,运行静态检查模块以审查代码存在的编译型错误和潜在安全漏洞,若不存在编译型错误和潜在安全漏洞,转入步骤S6,否则,结束流程;S6,智能合约将全局Head节点更新为当前五元组的,在新区块生成后,进行代码上链,完成代码版本更新管理。
[0006]进一步地,步骤S2中,生成项目代码的版本的唯一IPNS地址的过程包括以下子步骤:将初始内容哈希与时间戳字符串进行拼接,并通过SHA256加密算法进行非对称加密,在地址空间中防止哈希碰撞:通过指令ipfs key gen
ꢀ‑‑
type ed25519
ꢀ‑‑
size 20 keyname生成ed25519加密的20位用于项目发布时使用的唯一公私钥对;通过指令ipfs name publish
ꢀ‑‑
key keyname将内容哈希发布到IPNS上,获得版本的唯一IPNS地址。为保证IPNS地址的持续有效,同步执行定时任务脚本job.cron保持IPNS的持续发布。IPNS的默认发布声明周期为24h,并不允许设置永久有效。因此,建立job.cron定时任务脚本,每24h执行发布指令。
[0007]进一步地,步骤S4中,由智能合约验证版本的初始内容哈希的存在性的过程包括以下子步骤:智能合约获取用户上传的五元组信息中的IPNS地址,通过预言机程序在IPFS中查询,并向智能合约返回查询的内容哈希的结果;获得返回后将与五元组中的内容哈希进行比较,判定用户上传的IPNS地址内容哈希的存在性。
[0008]进一步地,所述代码版本管理方法包括以下步骤:项目管理者上传智能合约至区块链,用于规定代码回溯管理功能;如果智能合约接收到发起者发送的版本回退请求,将代码回滚请求广播全网,进入自动共识流程,结合所有参与决策开发者的项目参与度,选举出决策集团,判断是否允许回退行为。
[0009]进一步地,进入自动共识流程,结合所有参与决策开发者的项目参与度,选举出决策集团,判断是否允许回退行为的过程包括以下子步骤:S71,代码回滚申请:开发者通过预言机程序,在指定路径向智能合约发出代码回滚请求,回退至版本;代码回滚请求包括回滚理由和用来确定五元组信息的指定版本的号;S72,发起选举:智能合约将代码回滚请求广播全网,进入自动共识流程,结合所有参与决策开
发者的项目参与度,选举出项目参与度最高的若干个节点,选举出的节点将依次投票,判断是否允许回退行为;项目参与度评判指标考量如下节点状态:节点提交次数、最近提交时间、近K天活跃频率、初次入网时间和历史提交次数;S73,版本回退:如果在一个区块时间内赞同的开发者人数超过,智能合约允许开发者发起的代码回滚申请,将Head指向版本节点,完成版本回退。
[0010]进一步地,步骤S72中,选举出项目参与度最高的若干个节点的过程包括以下步骤:S721:对每个与项目相关的节点的项目参与度评判指标进行数据标准化处理,将离散数据映射到[0, 1]的实数空间中,标准化处理公式如下:其中,i表示节点编号,表示第i个节点的第j个指标的原始值,表示第i个节点的第j个指标的标准化指标值,表示第j个指标的均值,表示第j个指标的标准差;S722:计算每一个节点的相关系数,组成相关系数矩阵,表示节点的参与度高低:表示节点的参与度高低:其中,表示第i个节点与第j个节点的相关系数,表示相关系数矩阵;S723:对相关系数矩阵进行初等行变换,计算得出矩阵的特征值和特征向量;S724:采用下述公式计算得到特征值对应的信息贡献率:;采用下述公式计算得到累计贡献率:;当时,则选择前p个指标变量作为p个主成分,用来代替原来的n个指标变量,对其进行综合分析,计算得到综合评价值Z:;S725:达成共识;由步骤S724计算出的综合评价值将节点按照高低进行排序,将综合评价值最高的
若干个节点作为选举出的节点依次投票,代替全体开发者做出决策。
[0011]有益效果:第一,本专利技术的基于区块链和IPFS的代码版本管理方法,通过区块链和智能合约系统组织软件项目代码的版本元数据信息。充分利用了区块链系统的去中心化特征和智能合约程序的投票功能,实现了完全链上的代码版本更新、版本回溯等功能,极大提升了版本控制系统的防灾能力与健壮性。区块链系统的防篡改性也能够防止程序代码被恶意修改。
[0012]第二,本专利技术的基于区块链和IPFS的代码版本管理方法,代码的原始数据并不直接存储在区块链上,而是存储在星际文件系统中,这使得区块链只需要存储代码在IPFS中的内容哈希地址,有效地控制了代码内容的可见性,保证了代码在团队内部的安全和透明,让公链形式的代码管理系统成为可能。
[0013]第三,本专利技术的基于区块链和IPFS的代码版本管理方法,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于区块链和IPFS的代码版本管理方法,其特征在于,所述代码版本管理方法包括以下步骤:S1,项目管理者上传智能合约和智能合约至区块链,智能合约和智能合约分别用来规定项目代码存在性验证和代码合法性审查这两项代码版本管理功能;S2,开发者在星际文件系统IPFS中,上传项目代码的版本,得到版本的初始内容哈希;S3,拼接初始内容哈希和当前时间戳,使用SHA256非对称加密算法结合项目元组数据信息生成项目代码的版本的唯一IPNS地址,并记录当前时间戳;S4,将五元组上传至智能合约,由智能合约验证版本的初始内容哈希的存在性;表示当前版本号,表示前一个版本的;如果验证通过,进入步骤S5,否则,结束流程;S5,在智能合约中进行代码合法性审查,智能合约检查五元组中是否指向当前全局Head节点,如果不一致,通过逐行扫描的方式,检查哈希值不一致的代码文件,确认并返回代码的冲突情况,结束流程;如果一致,运行静态检查模块以审查代码存在的编译型错误和潜在安全漏洞,若不存在编译型错误和潜在安全漏洞,转入步骤S6,否则,结束流程;S6,智能合约将全局Head节点更新为当前五元组的,在新区块生成后,进行代码上链,完成代码版本更新管理。2.根据权利要求1所述的基于区块链和IPFS的代码版本管理方法,其特征在于,步骤S2中,生成项目代码的版本的唯一IPNS地址的过程包括以下子步骤:将初始内容哈希与时间戳字符串进行拼接,并通过SHA256加密算法进行非对称加密,在地址空间中防止哈希碰撞:通过指令ipfs key gen
ꢀ‑‑
type ed25519
ꢀ‑‑
size 20 keyname生成ed25519加密的20位用于项目发布时使用的唯一公私钥对;通过指令ipfs name publish
ꢀ‑‑
key keyname将内容哈希发布到IPNS上,获得版本的唯一IPNS地址;同步执行每天的定时任务脚本保持IPNS的持续发布。3.根据权利要求1所述的基于区块链和IPFS的代码版本管理方法,其特征在于,步骤S4中,由智能合约验证版本的初始内容哈希的存在性的过程包括以下子步骤:智能合约获取用户上传的五元组信息中的IPNS地址,通过预言机程序在IPFS中查询,并向智能合约返回查询的内容哈希的结果;获得返回后将与五元组中的内容哈希进行比较,判定用户上传的IPNS地址内容哈希的存在性。
4.根据权利要求1所述的基于区块链...

【专利技术属性】
技术研发人员:张伟吴松林陈云芳
申请(专利权)人:南京邮电大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1