CN109753767B - 基于区块链的软件分发及更新方法和装置、服务器、客户端 - Google Patents

基于区块链的软件分发及更新方法和装置、服务器、客户端 Download PDF

Info

Publication number
CN109753767B
CN109753767B CN201910009188.9A CN201910009188A CN109753767B CN 109753767 B CN109753767 B CN 109753767B CN 201910009188 A CN201910009188 A CN 201910009188A CN 109753767 B CN109753767 B CN 109753767B
Authority
CN
China
Prior art keywords
software
data
transaction
preset
transaction type
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910009188.9A
Other languages
English (en)
Other versions
CN109753767A (zh
Inventor
徐义吉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Yizhi Technology Co.,Ltd.
Original Assignee
Jiaxing Yizhi Software Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Jiaxing Yizhi Software Technology Co ltd filed Critical Jiaxing Yizhi Software Technology Co ltd
Priority to CN201910009188.9A priority Critical patent/CN109753767B/zh
Publication of CN109753767A publication Critical patent/CN109753767A/zh
Application granted granted Critical
Publication of CN109753767B publication Critical patent/CN109753767B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Transfer Between Computers (AREA)

Abstract

本申请公开了一种基于区块链的软件分发及更新方法和装置、服务器、客户端。该方法包括通过点对点网络模块下载最新的区块;解析得到每个所述区块中的交易信息,并提取出每个所述区块中的预设交易类型的数据,并抛弃非预设交易类型交易相关的数据;将所述预设交易类型的交易数据写入本地数据库;通过检查所述本地数据库,确认预设交易类型的交易中的代码数据是否被已经在本地生成的可执行软件程序依赖;如果确认预设交易类型的交易中的代码数据被已经在本地生成的可执行软件程序依赖,则调用软件生成更新本地软件。本申请解决了软件更新存在隐私泄露的技术问题。

Description

基于区块链的软件分发及更新方法和装置、服务器、客户端
技术领域
本申请涉及区块链、软件技术领域,具体而言,涉及一种基于区块链的软件分发及更新方法和装置、服务器、客户端。
背景技术
已有的软件分发及更新方法主要有两种:一种是用户通过光盘、网络下载等手段主动获得软件及更新;另一种是用户通过软件中心连接软件分发商的中心化服务器被动的获得软件及更新。
发明人发现,目前采用主动获得软件的方式面临着不能及时更新软件的问题,而被动获得软件的方法存在着隐私泄漏的风险。
针对相关技术中软件更新存在隐私泄露的问题,目前尚未提出有效的解决方案。
发明内容
本申请的主要目的在于提供一种基于区块链的软件分发及更新方法和装置、服务器、客户端,以解决软件更新存在隐私泄露的问题。
为了实现上述目的,根据本申请的一个方面,提供了一种基于区块链的软件分发及更新方法,用户通过预置软件客户端获取软件及更新,并通过所述软件客户端生成最新的软件版本,所述软件客户端包括:软件及更新的获取组件和软件生成组件。
根据本申请的基于区块链的软件分发及更新方法方法包括:通过点对点网络模块下载最新的区块;解析得到每个所述区块中的交易信息,并提取出每个所述区块中的预设交易类型的数据,并抛弃非预设交易类型交易相关的数据;将所述预设交易类型的交易数据写入本地数据库;通过检查所述本地数据库,确认预设交易类型的交易中的代码数据是否被已经在本地生成的可执行软件程序依赖;如果确认预设交易类型的交易中的代码数据被已经在本地生成的可执行软件程序依赖,则调用软件生成更新本地软件。
进一步地,所述调用软件生成更新本地软件包括:根据软件名从本地数据库中取出预设交易类型中相关的数据;根据预设交易类型中相关的数据中的所依赖的库及版本号,从本地数据库中取出所有依赖项相关的预设交易类型中相关的数据;如果依赖项存在依赖项,则递归的取出所有依赖项的预设交易类型中相关的数据;根据预设交易类型中相关的数据中的元信息数据,并选择不同的编译器工具链,将多个不同的代码数据以及客户端提供的运行时环境链接,生成最后的可执行软件;将已经生成的可执行软件的元信息数据写入本地数据库。
进一步地,通过点对点网络模块下载最新的区块之前包括:使用相关开发语言及工具将相应的软件,按照固定格式提交到区块链上。
进一步地,所述固定格式中包括:在区块链配置预设的交易类型为:napp 交易,napp_name 为软件的名字,napp_version 为软件的版本号,napp_intro 为软件的介绍,napp_icon_url 为软件的图标的URL;napp_depends 定义了该交易类型所依赖的库及版本号,其中,napp_ir 为软件的代码数据,可以为Java 字节码,LLVM 中间表示LLVM IR,napp_meta 为napp_ir 的描述,当napp_ir 为Java 字节码时,字段为java_bc,当napp_ir 为LLVM 中间表示时,字段为llvm_ir。
进一步地,通过检查所述本地数据库,确认预设交易类型的交易中的代码数据是否被已经在本地生成的可执行软件程序依赖之后包括:如果确认预设交易类型的交易中的代码数据没有被已经在本地生成的可执行软件程序依赖,则退出配置。
为了实现上述目的,根据本申请的另一方面,提供了一种基于区块链的软件分发及更新装置,用户通过预置软件客户端获取软件及更新,并通过所述软件客户端生成最新的软件版本,所述软件客户端包括:软件及更新的获取组件和软件生成组件。
根据本申请的基于区块链的软件分发及更新装置包括:下载模块,用于通过点对点网络模块下载最新的区块;解析模块,用于解析得到每个所述区块中的交易信息,并提取出每个所述区块中的预设交易类型的数据,并抛弃非预设交易类型交易相关的数据;储存写入模块,用于将所述预设交易类型的交易数据写入本地数据库;确认模块,用于通过检查所述本地数据库,确认预设交易类型的交易中的代码数据是否被已经在本地生成的可执行软件程序依赖;调用模块,用于确认预设交易类型的交易中的代码数据被已经在本地生成的可执行软件程序依赖时,调用软件生成更新本地软件。
进一步地,调用模块包括:第一提取单元,用于根据软件名从本地数据库中取出预设交易类型中相关的数据;第二提取单元,用于根据预设交易类型中相关的数据中的所依赖的库及版本号,从本地数据库中取出所有依赖项相关的预设交易类型中相关的数据;第三提取单元,用于依赖项存在依赖项时,递归的取出所有依赖项的预设交易类型中相关的数据;执行单元,用于根据预设交易类型中相关的数据中的元信息数据,并选择不同的编译器工具链,将多个不同的代码数据以及客户端提供的运行时环境链接,生成最后的可执行软件;写入单元,用于将已经生成的可执行软件的元信息数据写入本地数据库。
进一步地,装置还包括:上链模块,所述上链模块,用于使用相关开发语言及工具将相应的软件,按照固定格式提交到区块链上。
为了实现上述目的,根据本申请的又一方面,提供了一种服务器,包括:所述的装置。
为了实现上述目的,根据本申请的再一方面,提供了一种客户端包括:所述的方法。
本申请提出一种软件更新存在隐私泄露的,既能保证软件的及时更新,又能从根本上避免隐私泄漏的问题。
在本申请实施例中基于区块链的软件分发及更新方法和装置、服务器、客户端,采用区块链的方式,通过点对点网络模块下载最新的区块,解析得到每个所述区块中的交易信息,并提取出每个所述区块中的预设交易类型的数据,并抛弃非预设交易类型交易相关的数据;将所述预设交易类型的交易数据写入本地数据库;通过检查所述本地数据库,确认预设交易类型的交易中的代码数据是否被已经在本地生成的可执行软件程序依赖;达到了如果确认预设交易类型的交易中的代码数据被已经在本地生成的可执行软件程序依赖,则调用软件生成更新本地软件的目的,从而实现了软件的分发及更新的及时性,软件的分发及更新完全不会涉及用户隐私的泄露问题的技术效果,进而解决了软件更新存在隐私泄露的技术问题。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,使得本申请的其它特征、目的和优点变得更明显。本申请的示意性实施例附图及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请第一实施例的基于区块链的软件分发及更新方法示意图;
图2是根据本申请实第二施例的基于区块链的软件分发及更新方法示意图;
图3是根据本申请第一实施例的基于区块链的软件分发及更新装置示意图;
图4是根据本申请第二实施例的基于区块链的软件分发及更新装置示意图;
图5是软件及更新的获取组件的工作流程示意图;
图6是软件生成组件的工作流程示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本申请中,术语“上”、“下”、“左”、“右”、“前”、“后”、“顶”、“底”、“内”、“外”、“中”、“竖直”、“水平”、“横向”、“纵向”等指示的方位或位置关系为基于附图所示的方位或位置关系。这些术语主要是为了更好地描述本申请及其实施例,并非用于限定所指示的装置、元件或组成部分必须具有特定方位,或以特定方位进行构造和操作。
并且,上述部分术语除了可以用于表示方位或位置关系以外,还可能用于表示其他含义,例如术语“上”在某些情况下也可能用于表示某种依附关系或连接关系。对于本领域普通技术人员而言,可以根据具体情况理解这些术语在本申请中的具体含义。
此外,术语“安装”、“设置”、“设有”、“连接”、“相连”、“套接”应做广义理解。例如,可以是固定连接,可拆卸连接,或整体式构造;可以是机械连接,或电连接;可以是直接相连,或者是通过中间媒介间接相连,又或者是两个装置、元件或组成部分之间内部的连通。对于本领域普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
如图1所示,该方法包括如下的步骤S101至步骤S105:
步骤S101,通过点对点网络模块下载最新的区块;
用户通过预置软件客户端获取软件及更新,并通过所述软件客户端生成最新的软件版本,所述软件客户端包括:软件及更新的获取组件和软件生成组件。通过点对点网络模块下载最新的区块。点对点网络模块是区块链系统的基础模块,用于接入区块链系统的点对点网络,并从邻居节点上获取必要的区块。
步骤S102,解析得到每个所述区块中的交易信息,并提取出每个所述区块中的预设交易类型的数据,并抛弃非预设交易类型交易相关的数据;
通过相关算法可解析得到每个区块中各个交易的信息,提取每个区块中的预设交易类型的数据,并抛弃非预设交易类型的交易相关的数据。
优选地,在步骤S102,之前,本申请的实施例中还包括如下的步骤:
使用相关开发语言及工具将相应的软件,按照固定格式提交到区块链上。
所述固定格式中包括:在区块链配置预设的新的交易类型为:napp 交易,napp 交易仅为举例,并不表述对本申请实施例中保护范围的限定。
具体地,所提交的软件应该包括如下信息,
struct napp_dep_meta{
std::string name;
uint64 version;
};
struct napp_data{
std::string napp_name;
uint64 napp_version;
std::string napp_intro;
std::string napp_icon_url;
std::vector<napp_dep_meta> napp_depends;
std::string napp_meta;
std::string napp_ir;
};
其中,napp_name 为软件的名字,
napp_version 为软件的版本号,
napp_intro 为软件的介绍,
napp_icon_url 为软件的图标的URL;
napp_depends 定义了该交易类型所依赖的库及版本号,
其中,napp_ir 为软件的代码数据,可以为Java 字节码,LLVM 中间表示LLVM IR,napp_meta 为napp_ir 的描述,
当napp_ir 为Java 字节码时,字段为java_bc,
当napp_ir 为LLVM 中间表示时,字段为llvm_ir。
步骤S103,将所述预设交易类型的交易数据写入本地数据库;
将所述预设交易类型的交易中包含的数据为交易数据。通常地,预设交易类型的交易由开发者提交申请。
步骤S104,通过检查所述本地数据库,确认预设交易类型的交易中的代码数据是否被已经在本地生成的可执行软件程序依赖;
检查本地数据库,确认预设交易类型交易中的代码数据,是否被已经在本地生成的可执行软件依赖。
步骤S105,如果确认预设交易类型的交易中的代码数据被已经在本地生成的可执行软件程序依赖,则调用软件生成更新本地软件。
待更新的软件相应的元信息及软件的代码数据存储到了用户本地的设备中,从而完成了软件分发及更新。
需要注意的是,用户本地的设备存储的是软件的代码数据,并未生成最终的代码,所以还需要软件客户端中的软件生成组件生成代码。
优选地,还可以包括:如果确认预设交易类型的交易中的代码数据没有被已经在本地生成的可执行软件程序依赖,则退出配置的判断步骤。
从以上的描述中,可以看出,本申请实现了如下技术效果:
在本申请实施例中基于区块链的软件分发及更新方法和装置、服务器、客户端,采用区块链的方式,通过点对点网络模块下载最新的区块,解析得到每个所述区块中的交易信息,并提取出每个所述区块中的预设交易类型的数据,并抛弃非预设交易类型交易相关的数据;将所述预设交易类型的交易数据写入本地数据库;通过检查所述本地数据库,确认预设交易类型的交易中的代码数据是否被已经在本地生成的可执行软件程序依赖;达到了如果确认预设交易类型的交易中的代码数据被已经在本地生成的可执行软件程序依赖,则调用软件生成更新本地软件的目的,从而实现了软件的分发及更新的及时性软件的分发及更新完全不会涉及用户隐私的泄露问题的技术效果,进而解决了软件更新存在隐私泄露的技术问题。
根据本申请实施例,作为本实施例中的优选,如图2所示,所述调用软件生成更新本地软件包括:
步骤S201,根据软件名从本地数据库中取出预设交易类型中相关的数据;
根据软件名从本地数据库中取出预设交易类型的相关的数据。
步骤S202,根据预设交易类型中相关的数据中的所依赖的库及版本号,从本地数据库中取出所有依赖项相关的预设交易类型中相关的数据;
根据上述相关的数据中的所依赖的库及版本号,从本地数据库中取出所有依赖项相关的数据,如果依赖项进一步存在依赖项,则递归的取出所有依赖项的数据。
步骤S203,如果依赖项存在依赖项,则递归的取出所有依赖项的预设交易类型中相关的数据;
如果依赖项有缺失,则返回错误信息,并退出。
步骤S204,根据预设交易类型中相关的数据中的元信息数据,并选择不同的编译器工具链,将多个不同的代码数据以及客户端提供的运行时环境链接,生成最后的可执行软件;
根据交易类型的数据中的元组数据选择不同的编译器工具链,将多个不同的代码数据以及客户端提供的运行时环境链接生成最后的可执行软件。
步骤S205,将已经生成的可执行软件的元信息数据写入本地数据库。
将已经生成的可执行软件的元信息数据写入本地数据库完成软件的生成后即可视为完成软件的分发及更新。
在本申请的再一实施例中还提供了一种客户端,包括:所述的基于区块链的软件分发及更新方法。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
根据本申请实施例,还提供了一种用于实施上述方法的基于区块链的软件分发及更新装置,如图3所示,该装置包括:下载模块10,用于通过点对点网络模块下载最新的区块;解析模块20,用于解析得到每个所述区块中的交易信息,并提取出每个所述区块中的预设交易类型的数据,并抛弃非预设交易类型交易相关的数据;储存写入模块30,用于将所述预设交易类型的交易数据写入本地数据库;确认模块40,用于通过检查所述本地数据库,确认预设交易类型的交易中的代码数据是否被已经在本地生成的可执行软件程序依赖;调用模块50,用于确认预设交易类型的交易中的代码数据被已经在本地生成的可执行软件程序依赖时,调用软件生成更新本地软件。
本申请实施例的下载模块10中用户通过预置软件客户端获取软件及更新,并通过所述软件客户端生成最新的软件版本,所述软件客户端包括:软件及更新的获取组件和软件生成组件。通过点对点网络模块下载最新的区块。点对点网络模块是区块链系统的基础模块,用于接入区块链系统的点对点网络,并从邻居节点上获取必要的区块。
本申请实施例的解析模块20中通过相关算法可解析得到每个区块中各个交易的信息,提取每个区块中的预设交易类型的数据,并抛弃非预设交易类型的交易相关的数据。
优选地,还包括:上链模块(图中未示出),所述上链模块,用于使用相关开发语言及工具将相应的软件,按照固定格式提交到区块链上。
所述固定格式中包括:在区块链配置预设的新的交易类型为:napp 交易,napp 交易仅为举例,并不表述对本申请实施例中保护范围的限定。
具体地,所提交的软件应该包括如下信息,
struct napp_dep_meta{
std::string name;
uint64 version;
};
struct napp_data{
std::string napp_name;
uint64 napp_version;
std::string napp_intro;
std::string napp_icon_url;
std::vector<napp_dep_meta> napp_depends;
std::string napp_meta;
std::string napp_ir;
};
其中,napp_name 为软件的名字,
napp_version 为软件的版本号,
napp_intro 为软件的介绍,
napp_icon_url 为软件的图标的URL;
napp_depends 定义了该交易类型所依赖的库及版本号,
其中,napp_ir 为软件的代码数据,可以为Java 字节码,LLVM 中间表示LLVM IR,napp_meta 为napp_ir 的描述,
当napp_ir 为Java 字节码时,字段为java_bc,
当napp_ir 为LLVM 中间表示时,字段为llvm_ir。
本申请实施例的储存写入模块30中将所述预设交易类型的交易中包含的数据为交易数据。通常地,预设交易类型的交易由开发者提交申请。
本申请实施例的确认模块40中检查本地数据库,确认预设交易类型交易中的代码数据,是否被已经在本地生成的可执行软件依赖。
本申请实施例的调用模块50中待更新的软件相应的元信息及软件的代码数据存储到了用户本地的设备中,从而完成了软件分发及更新。
需要注意的是,用户本地的设备存储的是软件的代码数据,并未生成最终的代码,所以还需要软件客户端中的软件生成组件生成代码。
优选地,还可以包括:如果确认预设交易类型的交易中的代码数据没有被已经在本地生成的可执行软件程序依赖,则退出配置的判断步骤。
根据本申请实施例,作为本实施例中的优选,如图4所示,所述调用模块50包括:第一提取单元501,用于根据软件名从本地数据库中取出预设交易类型中相关的数据;第二提取单元502,用于根据预设交易类型中相关的数据中的所依赖的库及版本号,从本地数据库中取出所有依赖项相关的预设交易类型中相关的数据;第三提取单元503,用于依赖项存在依赖项时,递归的取出所有依赖项的预设交易类型中相关的数据;执行单元504,用于根据预设交易类型中相关的数据中的元信息数据,并选择不同的编译器工具链,将多个不同的代码数据以及客户端提供的运行时环境链接,生成最后的可执行软件;写入单元505,用于将已经生成的可执行软件的元信息数据写入本地数据库。
本申请实施例的第一提取单元501中根据软件名从本地数据库中取出预设交易类型的相关的数据。
本申请实施例的第二提取单元502中根据上述相关的数据中的所依赖的库及版本号,从本地数据库中取出所有依赖项相关的数据,如果依赖项进一步存在依赖项,则递归的取出所有依赖项的数据。
本申请实施例的第三提取单元503中如果依赖项有缺失,则返回错误信息,并退出。
本申请实施例的执行单元504中根据交易类型的数据中的元组数据选择不同的编译器工具链,将多个不同的代码数据以及客户端提供的运行时环境链接生成最后的可执行软件。
本申请实施例的写入单元505中将已经生成的可执行软件的元信息数据写入本地数据库完成软件的生成后即可视为完成软件的分发及更新。
在本申请的另一实施例中还提供了一种服务器,包括:所述的基于区块链的软件分发及更新装置,所述装置的实现原理和有益效果如上述,在此不再赘述。
本申请的实现原理如下:
区块链上的软件表示,及用于执行区块链上软件的客户端。本申请提供的软件分发及更新方法,要求软件开发人员按照如下方式将软件提交到区块链上:使用相关的开发语言及工具将相应的软件,按照本发明所描述的格式提交到区块链上。具体而言,所提交的软件应该包括如下信息:
struct napp_dep_meta{
std::string name;
uint64 version;
};
struct napp_data{
std::string napp_name;
uint64 napp_version;
std::string napp_intro;
std::string napp_icon_url;
std::vector<napp_dep_meta> napp_depends;
std::string napp_meta;
std::string napp_ir;
};
其中,napp_name 为软件的名字,napp_version 为软件的版本号,napp_intro 为软件的介绍,napp_icon_url 为软件的图标的URL。napp_depends 定义了该NApp 所依赖的库及版本号,napp_ir 为软件的代码数据,可以为Java 字节码,LLVM 中间表示(LLVM IR)等,napp_meta 为napp_ir 的描述,当napp_ir 为Java 字节码时,字段为java_bc,当napp_ir 为LLVM 中间表示时,字段为llvm_ir。
需要说明的而是,对于区块链上的软件表示,本发明需要在区块链上引入一种特别的交易类型,定义为napp 交易,napp 交易中包含的数据为如前所述的napp_data,napp交易由开发者提交。应当理解,此处所描述的napp 交易仅仅定于解释本发明,并不用与限定本发明。在本发明提供的软件分发及更新方法中,用户通过客户端获取软件及更新,并通过客户端生成最新的软件。客户端包括两个组件,软件及更新的获取组件,软件生成组件。
请参考图5,描述了软件及更新的获取组件的工作流程,具体包括:
通过点对点网络模块下载最新的区块;
解析得到每个所述区块中的交易信息,并提取出每个所述区块中的预设交易类型的数据napp 交易,并抛弃非预设交易类型交易相关的数据;
将所述预设交易类型的交易数据napp_data写入本地数据库;
通过检查所述本地数据库,确认预设交易类型的交易中的代码数据是否被已经在本地生成的可执行软件程序依赖;
如果确认预设交易类型的交易中的代码数据被已经在本地生成的可执行软件程序依赖,则调用软件生成更新本地软件。
经过上述步骤,一个软件相应的元信息及软件的代码数据存储到了用户本地的设备中,从而完成了软件分发及更新。然而此时,用户本地的设备存储的是软件的代码数据,并未生成最终的代码,为此,需要客户端中的软件生成组件。
请参考图6,描述了软件生成组件的工作流程,具体包括:
根据软件名从本地数据库中取出预设交易类型中相关的数据napp_data;
根据预设交易类型中相关的数据napp_data中的所依赖的库及版本号napp_depends,从本地数据库中取出所有依赖项相关的预设交易类型中相关的数据;
如果依赖项存在依赖项,则递归的取出所有依赖项的预设交易类型中相关的数据;
根据预设交易类型中相关的数据napp_data中的元信息数据napp_meta,并选择不同的编译器工具链,将多个不同的代码数据以及客户端提供的运行时环境链接,生成最后的可执行软件;
将已经生成的可执行软件的元信息数据写入本地数据库。
通过本申请中的方法,实现了软件的分发及更新的及时性,以及软件的分发及更新完全不会涉及用户隐私的泄露的效果。
显然,本领域的技术人员应该明白,上述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (6)

1.一种基于区块链的软件分发及更新方法,其特征在于,用户通过预置软件客户端获取软件及更新,并通过所述软件客户端生成最新的软件版本,所述软件客户端包括:软件及更新的获取组件和软件生成组件,所述方法包括:
使用相关开发语言及工具将相应的软件,按照固定格式提交到区块链上;
通过点对点网络模块下载最新的区块;
解析得到每个所述区块中的交易信息,并提取出每个所述区块中的预设交易类型的数据,并抛弃非预设交易类型交易相关的数据;
将所述预设交易类型的交易数据写入本地数据库;
通过检查所述本地数据库,确认预设交易类型的交易中的代码数据是否被已经在本地生成的可执行软件程序依赖;
如果确认预设交易类型的交易中的代码数据被已经在本地生成的可执行软件程序依赖,则调用软件生成更新本地软件;
根据软件名从本地数据库中取出预设交易类型中相关的数据;
根据预设交易类型中相关的数据中的所依赖的库及版本号,从本地数据库中取出所有依赖项相关的预设交易类型中相关的数据;
如果依赖项存在依赖项,则递归的取出所有依赖项的预设交易类型中相关的数据;
根据预设交易类型中相关的数据中的元信息数据,并选择不同的编译器工具链,将多个不同的代码数据以及客户端提供的运行时环境链接,生成最后的可执行软件;
将已经生成的可执行软件的元信息数据写入本地数据库。
2.根据权利要求1所述的软件分发及更新方法,其特征在于,所述固定格式中包括:在区块链配置预设的交易类型为:napp 交易,
napp_name 为软件的名字,
napp_version 为软件的版本号,
napp_intro 为软件的介绍,
napp_icon_url 为软件的图标的URL;
napp_depends 定义了该交易类型所依赖的库及版本号,
其中,napp_ir 为软件的代码数据,可以为Java 字节码,LLVM 中间表示LLVM IR,napp_meta 为napp_ir 的描述,
当napp_ir 为Java 字节码时,字段为java_bc,
当napp_ir 为LLVM 中间表示时,字段为llvm_ir。
3.根据权利要求1所述的软件分发及更新方法,其特征在于,通过检查所述本地数据库,确认预设交易类型的交易中的代码数据是否被已经在本地生成的可执行软件程序依赖之后包括:
如果确认预设交易类型的交易中的代码数据没有被已经在本地生成的可执行软件程序依赖,则退出配置。
4.一种基于区块链的软件分发及更新装置,其特征在于,用户通过预置软件客户端获取软件及更新,并通过所述软件客户端生成最新的软件版本,所述软件客户端包括:软件及更新的获取组件和软件生成组件,所述装置包括:
下载模块,用于通过点对点网络模块下载最新的区块;
解析模块,用于解析得到每个所述区块中的交易信息,并提取出每个所述区块中的预设交易类型的数据,并抛弃非预设交易类型交易相关的数据;
储存写入模块,用于将所述预设交易类型的交易数据写入本地数据库;
确认模块,用于通过检查所述本地数据库,确认预设交易类型的交易中的代码数据是否被已经在本地生成的可执行软件程序依赖;
调用模块,用于确认预设交易类型的交易中的代码数据被已经在本地生成的可执行软件程序依赖时,调用软件生成更新本地软件;
调用模块包括:
第一提取单元,用于根据软件名从本地数据库中取出预设交易类型中相关的数据;
第二提取单元,用于根据预设交易类型中相关的数据中的所依赖的库及版本号,从本地数据库中取出所有依赖项相关的预设交易类型中相关的数据;
第三提取单元,用于依赖项存在依赖项时,递归的取出所有依赖项的预设交易类型中相关的数据;
执行单元,用于根据预设交易类型中相关的数据中的元信息数据,并选择不同的编译器工具链,将多个不同的代码数据以及客户端提供的运行时环境链接,生成最后的可执行软件;
写入单元,用于将已经生成的可执行软件的元信息数据写入本地数据库;
所述装置还包括:上链模块,
所述上链模块,用于使用相关开发语言及工具将相应的软件,按照固定格式提交到区块链上。
5.一种服务器,其特征在于,包括:权利要求4所述的基于区块链的软件分发及更新装置。
6.一种客户端,其特征在于,包括:权利要求1至3任一项所述的基于区块链的软件分发及更新方法。
CN201910009188.9A 2019-01-04 2019-01-04 基于区块链的软件分发及更新方法和装置、服务器、客户端 Active CN109753767B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910009188.9A CN109753767B (zh) 2019-01-04 2019-01-04 基于区块链的软件分发及更新方法和装置、服务器、客户端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910009188.9A CN109753767B (zh) 2019-01-04 2019-01-04 基于区块链的软件分发及更新方法和装置、服务器、客户端

Publications (2)

Publication Number Publication Date
CN109753767A CN109753767A (zh) 2019-05-14
CN109753767B true CN109753767B (zh) 2020-12-18

Family

ID=66405227

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910009188.9A Active CN109753767B (zh) 2019-01-04 2019-01-04 基于区块链的软件分发及更新方法和装置、服务器、客户端

Country Status (1)

Country Link
CN (1) CN109753767B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102365945B1 (ko) * 2019-12-12 2022-02-22 (주)포뎁스 블록체인을 기반으로 응용 애플리케이션에 대한 업데이트 처리가 가능한 전자 단말 장치 및 그 동작 방법
CN111831301B (zh) * 2019-12-25 2024-04-09 北京熠智科技有限公司 支持无分叉升级的区块链运行时环境系统、方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102622226A (zh) * 2012-02-24 2012-08-01 中标软件有限公司 一种生成Linux软件包仓库的方法
CN108270874A (zh) * 2018-02-05 2018-07-10 武汉斗鱼网络科技有限公司 应用程序的更新方法及装置
CN108572986A (zh) * 2017-03-13 2018-09-25 华为软件技术有限公司 一种数据更新的方法及节点设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160321434A1 (en) * 2015-05-01 2016-11-03 Monegraph, Inc. Digital content rights transactions using block chain systems

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102622226A (zh) * 2012-02-24 2012-08-01 中标软件有限公司 一种生成Linux软件包仓库的方法
CN108572986A (zh) * 2017-03-13 2018-09-25 华为软件技术有限公司 一种数据更新的方法及节点设备
CN108270874A (zh) * 2018-02-05 2018-07-10 武汉斗鱼网络科技有限公司 应用程序的更新方法及装置

Also Published As

Publication number Publication date
CN109753767A (zh) 2019-05-14

Similar Documents

Publication Publication Date Title
US11451398B2 (en) Management of interoperating machine learning algorithms
US11823017B2 (en) Interoperation of machine learning algorithms
US11698818B2 (en) Load balancing of machine learning algorithms
US11106458B2 (en) System and method for distributed ledger-based software supply chain management
US20210142221A1 (en) Autonomous logic modules
CN106095522A (zh) 一种实现分布式编译的方法和分布式编译系统
CN103164249A (zh) 用于脚本语言编译器的扩展机制
Wu et al. Combinatorial testing of restful apis
Quinton et al. SALOON: a platform for selecting and configuring cloud environments
CN104583945A (zh) 一种应用升级方法、装置
CN107885658B (zh) 测试前置实现方法、装置、终端设备及存储介质
CN110866029B (zh) sql语句构建方法、装置、服务器及可读存储介质
CN107193607A (zh) 用于更新代码文件的方法和装置、存储介质、处理器以及终端
CN109032631A (zh) 应用程序补丁包获取方法、装置、计算机设备及存储介质
EP2667301A1 (en) Decision service manager
CN109753767B (zh) 基于区块链的软件分发及更新方法和装置、服务器、客户端
Ajienka et al. An empirical analysis of source code metrics and smart contract resource consumption
CN112015826B (zh) 基于区块链的智能合约安全性检测方法及相关设备
Severin et al. Smart money wasting: Analyzing gas cost drivers of ethereum smart contracts
CN115543967A (zh) 一种数据迁移方法、装置、电子设备及计算机可读介质
US11722324B2 (en) Secure and accountable execution of robotic process automation
CN114356379A (zh) 基于备份的服务升级方法、装置、设备及存储介质
Kerdoudi et al. A novel approach for software architecture product line engineering
CN112748932B (zh) 基于智能合约的数据处理方法、服务器
Imamura et al. Empirical Study of Software Adoption Process in the Bitcoin Network

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20200120

Address after: Room 411, building 12, No. 906, Asia Pacific Road, Daqiao Town, Nanhu District, Jiaxing City, Zhejiang Province (phase III, Chinese Academy of Sciences)

Applicant after: Jiaxing Yizhi Software Technology Co., Ltd

Address before: 11000 000 Floor 118-09, 11th Floor, No. 1 Zhongguancun Street, Haidian District, Beijing

Applicant before: Beijing See Future Network Technology Co., Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20211118

Address after: 100085 1127-25, 11 / F, 18 Zhongguancun Street, Haidian District, Beijing

Patentee after: Beijing Yizhi Technology Co.,Ltd.

Address before: 314006 Room 411, building 12, No. 906, Asia Pacific Road, Daqiao Town, Nanhu District, Jiaxing City, Zhejiang Province (phase III of Chinese Academy of Sciences)

Patentee before: Jiaxing Yizhi Software Technology Co.,Ltd.

TR01 Transfer of patent right