CN108270874B - 应用程序的更新方法及装置 - Google Patents
应用程序的更新方法及装置 Download PDFInfo
- Publication number
- CN108270874B CN108270874B CN201810112015.5A CN201810112015A CN108270874B CN 108270874 B CN108270874 B CN 108270874B CN 201810112015 A CN201810112015 A CN 201810112015A CN 108270874 B CN108270874 B CN 108270874B
- Authority
- CN
- China
- Prior art keywords
- block
- target
- data
- target block
- intelligent contract
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例提供了一种应用程序的更新方法及装置,该方法包括:生成待更新应用程序的更新文件,待更新应用程序对应的服务器与客户端之间预先部署有区块链网络,服务器和客户端为区块链网络中的用户节点;执行区块链网络中的智能合约,智能合约用于根据更新文件生成目标区块;通过区块链网络将生成的目标区块发送到区块链网络中的各个用户节点,以供各个用户节点执行智能合约,智能合约还用于对接收到的所述目标区块进行安全校验,并根据通过检验的目标区块进行应用程序的更新。本发明实施例能够避免第三方对更新文件进而恶意篡改,而且采用区块链技术实现更新文件的发送,不仅能够确保所有客户端的同步更新,同时也减少了服务器的网络带宽压力。
Description
技术领域
本发明涉及信息技术领域,尤其涉及一种基于区块链技术的应用程序的更新方法及装置。
背景技术
随着计算机网络技术的不断发展,终端设备的功能越来越强大。终端设备能够承载各种各样的应用程序,从而满足用户各种各样的需求。为了满足用户不断变化的需求,应用程序提供商通常向终端设备推送应用程序的更新信息。
目前,随着软件开发技术的发展,应用程序的更新也是比较重要的一个方面。当软件开发商发现软件有一处漏洞或者BUG时,则会强制更新所有的客户端,并希望无错误的尽快的覆盖到所有用户的终端设备。因此,对于发布的更新文件如何能够保证文件完整,并避免第三方进行截获篡改或加入病毒等恶意行为,对应用程序的更新具有重要作用。同时当应用程序进行更新时,由于大量的客户端请求最新的更新文件,造成客户端软件服务器分发更新文件时网络带宽不够,进而导致有些客户端无法更新;而且也存在一些边缘节点的客户端,从而更新会非常慢,无法及时完成应用程序更新,影响用户体验。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的应用程序的更新方法及装置。
本发明的第一方面,提供了一种应用程序的更新方法,所述方法包括:
生成待更新应用程序的更新文件,所述待更新应用程序对应的服务器与客户端之间预先部署有区块链网络,所述服务器和所述客户端为所述区块链网络中的用户节点;
执行所述区块链网络中的智能合约,所述智能合约用于根据所述更新文件生成目标区块;
通过所述区块链网络将生成的目标区块发送到所述区块链网络中的各个用户节点,以供所述各个用户节点执行智能合约,所述智能合约还用于对接收到的所述目标区块进行安全校验,并根据通过检验的目标区块进行应用程序的更新。
可选地,所述执行所述区块链网络中的智能合约,包括:
从所述区块链网络中获取所述目标区块的上一个区块的区块数据和区块数据结构;
根据所述上一个区块的区块数据、所述更新文件以及所述目标区块的区块数据与所述上一个区块的区块数据之间的预设映射关系生成目标区块的区块数据;
根据所述区块数据结构和目标区块的区块数据生成所述目标区块。
可选地,所述区块数据结构,包括区块号、时间戳、第一编码值、第一key值、区块数据、预设值、随机数和第二编码值;其中,所述第一编码值为当前区块的上一个区块的第二编码值,所述第一key值为当前区块对应的更新文件的MD5值,所述第二编码值是所述区块号、时间戳、第一编码值、第一key值、区块数据、预设值、随机数进行组合后的数据的哈希值。
可选地,所述执行所述区块链网络中的智能合约,包括:
从所述区块链网络中获取所述目标区块的上一个区块的区块数据和区块数据结构;
将所述更新文件拆分成至少一个子更新数据包;
根据所述上一个区块的区块数据和各子更新数据包分别生成各子更新数据包对应区块的区块数据;
根据所述区块数据结构和各子更新数据包对应区块的区块数据分别生成各子更新数据包对应的目标区块。
本发明的第二方面,提供了另一种应用程序的更新方法,所述方法包括:
接收服务器通过区块链网络发送的目标区块,所述目标区块是所述服务器执行所述区块链网络中的智能合约生成的,所述智能合约用于根据待更新应用程序的更新文件生成目标区块;其中所述待更新应用程序对应的服务器与客户端之间预先部署有区块链网络,所述服务器和所述客户端为所述区块链网络中的用户节点;
执行所述智能合约,所述智能合约还用于对接收到所述目标区块进行安全校验;
根据通过检验的目标区块进行应用程序的更新。
可选地,所述执行所述智能合约,包括:
从所述区块链网络中获取所述目标区块的上一个区块的区块数据;
根据所述上一个区块的区块数据以及目标区块的区块数据与所述上一个区块的区块数据之间的预设映射关系,对所述目标区块进行安全校验。
本发明的第三方面,提供了一种应用程序的更新装置,所述装置包括:
生成模块,用于生成待更新应用程序的更新文件,所述待更新应用程序对应的服务器与客户端之间预先部署有区块链网络,所述服务器和所述客户端为所述区块链网络中的用户节点;
服务器侧处理模块,用于执行所述区块链网络中的智能合约,所述智能合约用于根据所述更新文件生成目标区块;
服务器侧通信模块,用于通过所述区块链网络将生成的目标区块发送到所述区块链网络中的各个用户节点,以供所述各个用户节点执行智能合约,所述智能合约还用于对接收到的所述目标区块进行安全校验,并根据通过检验的目标区块进行应用程序的更新。
本发明的第四方面,提供了另一种应用程序的更新装置,所述装置包括:
客户端通信模块,用于接收服务器通过区块链网络发送的目标区块,所述目标区块是所述服务器执行所述区块链网络中的智能合约生成的,所述智能合约用于根据待更新应用程序的更新文件生成目标区块;其中所述待更新应用程序对应的服务器与客户端之间预先部署有区块链网络,所述服务器和所述客户端为所述区块链网络中的用户节点;
客户端处理模块,用于执行所述智能合约,所述智能合约还用于对接收到所述目标区块进行安全校验;
程序更新模块,用于根据通过检验的目标区块进行应用程序的更新。
此外,本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上任一方法的步骤。
此外,本发明还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上任一方法的步骤。
本发明实施例提供的应用程序的更新方法及装置,通过执行预先部署在待更新应用程序服务器与客户端之间的区块链网络中的智能合约,根据待更新应用程序对应的更新文件生成目标区块,然后通过区块链网络将生成的目标区块发送到区块链网络中的各个用户节点,以供各个用户节点对接收到所述目标区块进行安全校验,并根据通过检验的目标区块进行应用程序的更新。本发明实施例能够避免第三方对更新文件的截获篡改或加入病毒等恶意行为,而且,采用区块链技术将更新文件发送到区块链网络中的各个用户节点,不仅能够确保所有客户端的同步更新,同时也减少了服务器的网络带宽压力。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明实施例的一种应用程序的更新方法的流程图;
图2为本发明另一实施例的一种应用程序的更新方法的流程图;
图3为本发明实施例的一种应用程序的更新装置的结构示意图;
图4为本发明另一实施例的一种应用程序的更新装置的结构示意图;
图5为本发明实施例的计算机设备的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非被特定定义,否则不会用理想化或过于正式的含义来解释。
图1示意性示出了本发明一个实施例的应用程序的更新方法的流程图。本发明实施例提供的应用程序的更新方法适用于服务器侧执行,参照图1,本发明实施例的应用程序的更新方法具体包括以下步骤:
步骤S11、生成待更新应用程序的更新文件,所述待更新应用程序对应的服务器与客户端之间预先部署有区块链网络,所述服务器和所述客户端为所述区块链网络中的用户节点。
本实施中的应用程序可以是各种各样的适于终端设备的客户端应用程序,例如:游戏客户端程序、购物客户端程序、直播客户端程序等,对此本实施例不做具体限定。
本实施中的更新文件,即待更新应用程序的更新数据包。
步骤S12、执行所述区块链网络中的智能合约,其中,所述智能合约用于根据所述更新文件生成目标区块。本实施例中,目标区块是指新生成的区块。
步骤S13、通过所述区块链网络将生成的目标区块发送到所述区块链网络中的各个用户节点,以供所述各个用户节点执行智能合约,所述智能合约还用于对接收到的所述目标区块进行安全校验,并根据通过检验的目标区块进行应用程序的更新。
本实施例中,区块链技术具有P2P的技术,具体可以在区块链的所有客户端中来使用P2P技术来实现目标区块的同步发送,从而比从服务器去更新更快速,同时也减少了服务器的网络带宽压力。
本发明实施例提供的应用程序的更新方法,通过执行预先部署在待更新应用程序服务器与客户端之间的区块链网络中的智能合约,根据待更新应用程序对应的更新文件生成目标区块,然后通过区块链网络将生成的目标区块发送到区块链网络中的各个用户节点,以供各个用户节点对接收到所述目标区块进行安全校验,并根据通过检验的目标区块进行应用程序的更新。本发明实施例能够避免第三方对更新文件的截获篡改或加入病毒等恶意行为,而且,采用区块链技术将更新文件发送到区块链网络中的各个用户节点,不仅能够确保所有客户端的同步更新,同时也减少了服务器的网络带宽压力。
在本发明的实施例中,所述执行所述区块链网络中的智能合约,具体通过以下步骤实现:
从所述区块链网络中获取所述目标区块的上一个区块的区块数据和区块数据结构;其中,上一个区块是指目标区块的前一个区块。
根据所述上一个区块的区块数据、所述更新文件以及所述目标区块的区块数据与所述上一个区块的区块数据之间的预设映射关系生成目标区块的区块数据;
根据所述区块数据结构和目标区块的区块数据生成所述目标区块。
进一步地,所述区块数据结构,包括区块号、时间戳、第一编码值、第一key值、区块数据、预设值、随机数和第二编码值;其中,所述第一编码值为当前区块的上一个区块的第二编码值,所述第一key值为当前区块对应的更新文件的MD5值,所述第二编码值是所述区块号、时间戳、第一编码值、第一key值、区块数据、预设值、随机数进行组合后的数据的哈希值。
本发明实施例中,将待更新应用程序的所有客户端加入到预先部署的区块链网络中,从而所有的客户端都是区块链中的一个用户节点,具备区块链的所有功能,分布式账本,P2P同步技术等等。
其中,区块链的区块数据结构如下:
通常的一个区块链必须包含一些必要的数据,一个是可以校验区块链本身数据的合法性和完整性,例如,区块号、时间戳、第一编码值、第一key值、预设值、随机数和第二编码值,另一个是客户端软件的更新文件,即区块数据。具体如下:
Struct BlockData{
Int64index;
//用来表示区块链的区块号,通常从0开始递增。
String previousHash;
//第一编码值,表示前一个区块链的HASH值。
Int64timestamp;
//表示时间戳。
String key;
//第一key值,表示计算新区块需要的key值。
String data;
//其中data字段则是客户端软件的更新文件,其中可以是更新的资源文件,或者是更新的程序文件,同时也可以包含资源文件。并且对于每一个文件都会有一份文件内容的HASH值,来保障文件内容的完整性。
String zero;
//预设值,表示计算新区块的HASH值中前面0的个数据。
String randdata;
//随机数,此randdata则标示随机数据,用于加入到新的区块中,以使得其计算的HASH结果满足服务器下发的0的个数。
String hash;
//第二编码值,此HASH值则表示当前这个区块的内容的HASH值。
}
有了这个区块的设计后,任何一个观众收到一个区块则可以对区块数据进行校验,至此完成了区块链中区块的数据结构的设计。
当客户端应用软件首次需要更新时,客户端上报需要进行更新的文件,服务器会对每个需要更新的文件计算其文件内容的生成初始区块。具体实现如下:
步骤1、读取各个需要更新的文件到内存中。
首先,读取每个独立的需要更新的文件,将整个文件的内容读取到内存中。本发明实施例中具体可以使用***函数fopen和fread来读取更新文件。
FILE*pFile=fopen("beauty.data","rb");
通过调用***函数fopen来打开指定的更新文件。
其中参数1是打开的更新文件名称。
其中参数2则是以二进制的方式来打开更新文件。
返回值则是文件的句柄pFile。
fseek(pFile,0,SEEK_END);
通过调用fseek函数则将文件的读取指针移动到文件尾部。
Long Size=ftell(pFile);
通过调用***函数ftell则得到更新文件的大小Size。
Char*buffer=(char*)malloc(Size);
调用***函数malloc来分配一段内存,分配大小则是更新文件的大小。
fread(buffer,1,Size,pFile);
调用***函数fread来读取整个文件内容到分配的内存中。
fclose(pFile);
调用***函数fclose来关闭文件句柄。
从而将整个更新文件的内容读取到了分配的内存中。
步骤2、计算整个更新文件的Md5值。
本发明实施例通过对读取的整个更新文件计算其MD5值从而得到后续加密使用的KEY值。
KEY=MD5.Create(buffer,Size);
通过调用MD5函数的接口Create来计算读取的文件内容计算其MD5结果。
其中参数buff则是读取的更新文件的内存。
其中参数size则是读取的更新文件的大小。
同样的对所有的更新文件都采用上述的方案来计算每个文件的MD5值。
步骤3、计算每个更新文件的MD5值。
对客户端的每一个更新文件都计算其MD5的HASH结果。
步骤4、服务器来生成客户端软件更新的区块。
本实施例中,区块数据结构如下:
Struct BlockData{
Int64index;
String previousHash;
Int64timestamp;
String key;
String data;
String zero;
String randdata;
String hash;
}
其中核心的则是data字段,该字段则会包含需要更新的客户端更新文件的内容,同时也包含更新内容的MD5值。服务器产生了此初始区块后,则会同步到区块链中,从而通过区块链来分发同步到所有的区块链客户端中。
进一步地,服务器产生的初始区块后,当后续需要再次对客户端应用程序进行更新时,则直接通过区块链网络中的智能合约实现新区块的产生,此时新的区块则会通过P2P来转发给房间内的所有客户端,同时所有的客户端收到区块时也会对区块的数据进行合法性校验。具体产生新的区块的实现如下:
首先,获取到了所述目标区块的上一个区块的区块数据和区块数据结构,下一个区块则是依据上一个区块的区块数据和区块数据结构进行生成。
在一个具体实施例中,假设上一个区块的名字是prevblock,新生成的区块即目标区块的名字是newblock。
1、计算目标区块的区块号。
Newblock.index=prevblock.index+1;
则目标区块的块号是上一个区块的块号加1。
2.计算目标区块的时间戳。
Newblock.timestamp=time();
目标区块的时间戳则是获取当前的时间。
3.计算目标区块的上一个区块的hash值。
Newblock.previousHash=prevblock.hash;
目标区块的上一个区块的hash值则是获取的上一个区块的hash。
4.计算目标区块的上一个区块的key值。
Newblock.key=prevblock.key;
目标区块的上一个区块的key值则是获取的上一个区块的key。
5.计算目标区块的数据。
Newblock.data=文件内容+md5。
其中目标区块的数据内容则是更新文件的内容和更新文件的MD5值。
6.计算更新文件的randdata值。
此randdata值则是客户端随机生成,以凑足正好整个目标区块计算的hash值前面满足服务器下发的0的个数。
7.计算目标区块的hash值。
Newblock.hash=HASH(index+previousHash+timestamp+data+zero+randdata);
目标区块的hash值则是由目标区块的index字段、previousHash字段、timestamp字段、data字段。
本实施例中使用的HASH算法则通常是SHA-256算法,当然也可以使用其他HASH算法,本发明对此不做具体限定。
在本发明的另一实施例中,为了增加区块的复杂度,进一步增加黑客篡改的难度,所述执行所述区块链网络中的智能合约,具体还可以通过以下步骤实现:
从所述区块链网络中获取所述目标区块的上一个区块的区块数据和区块数据结构;
将所述更新文件拆分成至少一个子更新数据包:
根据所述上一个区块的区块数据和各子更新数据包分别生成各子更新数据包对应区块的区块数据;
根据所述区块数据结构和各子更新数据包对应区块的区块数据分别生成各子更新数据包对应的目标区块。
对于区块链来说,区块越多则黑客伪造区块的难度越大,同时也考虑每个区块的大小及区块的计算量,在本发明实施例中,在一次客户端软件更新中,可以将需要更新的文件生成多个区块,而不是只使用一个区块进行更新。从而每一个区块可以包含部分更新的文件内容。此外,还可以将每一次客户端软件的更新文件都存储到区块中,这样软件的更新历史包都在区块链中,从而使得区块链的区块增多,账本更为庞大,从而进一步的增加了黑客篡改的难度。
图2示意性示出了本发明另一个实施例的应用程序的更新方法的流程图。本发明实施例提供的应用程序的更新方法适用于客户端侧执行,参照图2,本发明实施例的应用程序的更新方法具体包括以下步骤:
步骤S21、接收服务器通过区块链网络发送的目标区块,所述目标区块是所述服务器执行所述区块链网络中的智能合约生成的,所述智能合约用于根据待更新应用程序的更新文件生成目标区块;其中所述待更新应用程序对应的服务器与客户端之间预先部署有区块链网络,所述服务器和所述客户端为所述区块链网络中的用户节点;
步骤S22、执行所述智能合约,所述智能合约还用于对接收到所述目标区块进行安全校验;
步骤S23、根据通过检验的目标区块进行应用程序的更新。
本发明实施例提供的应用程序的更新方法,通过对接收到目标区块进行安全校验,并根据通过检验的目标区块进行应用程序的更新,其中目标区块是根据更新文件生成的。本发明实施例能够避免第三方对更新文件的截获篡改或加入病毒等恶意行为,而且,采用区块链技术将更新文件发送到区块链网络中的各个用户节点,不仅能够确保所有客户端的同步更新,同时也减少了服务器的网络带宽压力。
在本发明实施例中,步骤S22中的执行所述智能合约,具体通过以下步骤实现:
从所述区块链网络中获取所述目标区块的上一个区块的区块数据;
根据所述上一个区块的区块数据以及目标区块的区块数据与所述上一个区块的区块数据之间的预设映射关系,对所述目标区块进行安全校验。
本实施例中,目标区块是指新生成的区块,上一个区块是指目标区块的前一个区块。
本实施例中,区块链中的客户端,当其收到一个区块时,首先都会对区块进行安全校验,以判断当前的区块是否是合法的,防止黑客伪造区块,或者区块在网络中传输被修改等因素。所以每个区块都需要进行安全校验。具体实现如下:
假设上一个区块的名字是prevblock,然后收到了一个新生成的区块即目标区块的名字是newblock。
1.首先判断其index是否正确。
Newblock.index!=prevblock.index+1;
如果目标区块的区块号不是上一个区块的区块号加1,则说明目标区块不合法,直接返回区块错误信息。
2.然后判断区块的hash值。
Newblock.previousHash!=prevblock.hash
如果目标区块的上一个区块的hash值不等于上一个区块的hash值则认为目标区块不合法,直接返回区块错误信息。
3.判断目标区块的hash值。
目标区块的hash值是目标区块的整个数据结构中各个数据的hash结果。
HASH(Newblock.index+Newblock.previousHash+Newblock.timestamp+Newblock.data+Newblock.randdata+Newblock.zero)!=Newblock.hash;
如果目标区块的整个区块的数据的hash值不等于目标区块hash值,则认为目标区块不合法,直接返回区块错误信息。
4.判断目标区块的更新包内容。
目标区块的data值则包含更新的文件内容,和文件内容的MD5值,则可以将更新的内容再次计算MD5值来比较存储在data中的MD5值是否一致,如果一致则说明内容正确没有被篡改,否则是被篡改过,则不会更新此区块。至此实现对目标区块的安全校验。
本发明实施例中,在区块链的所有客户端中,所有客户端会使用P2P技术来更新所有的区块数据,从而实现对软件的更新功能,同时服务器也是区块链的一个用户节点,他也会更新此区块,从而也可以再次校验此区块,来查看服务器分发的更新文件区块是否正确。同时后续其他文件的更新都可以使用本文的方法来生成一个区块来分发到所有的区块链客户端中。
针对现有技术的缺陷或改进需求,本发明实施例提供了一种基于区块链技术的实现客户端应用程序更新的方法。区块链技术既可以具备对区块进行加密保存的功能,防止数据被篡改,同时更重要的是区块链技术具有P2P的技术,可以在区块链的所有客户端中来使用P2P技术来同步区块,从而比从服务器去更新更快速,同时也减少了服务器的网络带宽压力。使用区块链即保障了更新包的完整性,从而任何人无法篡改更新包的内容,同时也保障了所有客户端必须更新到最新的客户端。
对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
图3示意性示出了本发明一个实施例的应用程序的更新装置的结构示意图。本发明实施例提供的应用程序的更新装置配置于服务器侧或由服务器设备实现,参照图3,本发明实施例的应用程序的更新装置具体包括生成模块301、服务器侧处理模块302以及服务器侧通信模块303,其中:
生成模块301,用于生成待更新应用程序的更新文件,所述待更新应用程序对应的服务器与客户端之间预先部署有区块链网络,所述服务器和所述客户端为所述区块链网络中的用户节点;
服务器侧处理模块302,用于执行所述区块链网络中的智能合约,所述智能合约用于根据所述更新文件生成目标区块;
服务器侧通信模块303,用于通过所述区块链网络将生成的目标区块发送到所述区块链网络中的各个用户节点,以供所述各个用户节点执行智能合约,所述智能合约还用于对接收到的所述目标区块进行安全校验,并根据通过检验的目标区块进行应用程序的更新。
本发明实施例中,所述服务器侧处理模块302,具体用于从所述区块链网络中获取所述目标区块的上一个区块的区块数据和区块数据结构;根据所述上一个区块的区块数据、所述更新文件以及所述目标区块的区块数据与所述上一个区块的区块数据之间的预设映射关系生成目标区块的区块数据;根据所述区块数据结构和目标区块的区块数据生成所述目标区块。
其中,所述区块数据结构,包括区块号、时间戳、第一编码值、第一key值、区块数据、预设值、随机数和第二编码值;其中,所述第一编码值为当前区块的上一个区块的第二编码值,所述第一key值为当前区块对应的更新文件的MD5值,所述第二编码值是所述区块号、时间戳、第一编码值、第一key值、区块数据、预设值、随机数进行组合后的数据的哈希值。
本发明另一实施例中,为了增加区块的复杂度,进而增加了黑客篡改的难度,所述服务器侧处理模块302,具体用于从所述区块链网络中获取所述目标区块的上一个区块的区块数据和区块数据结构;将所述更新文件拆分成至少一个子更新数据包;根据所述上一个区块的区块数据和各子更新数据包分别生成各子更新数据包对应区块的区块数据;根据所述区块数据结构和各子更新数据包对应区块的区块数据分别生成各子更新数据包对应的目标区块。
图4示意性示出了本发明另一个实施例的应用程序的更新装置的结构示意图。本发明实施例提供的应用程序的更新装置配置于客户端侧或由客户端实现,参照图4,本发明实施例的应用程序的更新装置具体包括客户端通信模块401、客户端处理模块402以及程序更新模块403,其中:
客户端通信模块401,用于接收服务器通过区块链网络发送的目标区块,所述目标区块是所述服务器执行所述区块链网络中的智能合约生成的,所述智能合约用于根据待更新应用程序的更新文件生成目标区块;其中所述待更新应用程序对应的服务器与客户端之间预先部署有区块链网络,所述服务器和所述客户端为所述区块链网络中的用户节点;
客户端处理模块402,用于执行所述智能合约,所述智能合约还用于对接收到所述目标区块进行安全校验;
程序更新模块403,用于根据通过检验的目标区块进行应用程序的更新。
在本发明实施例中,客户端处理模块402,具体还适用于从所述区块链网络中获取所述目标区块的上一个区块的区块数据;根据所述上一个区块的区块数据以及目标区块的区块数据与所述上一个区块的区块数据之间的预设映射关系,对所述目标区块进行安全校验。本实施例,通过根据目标区块的上一个区块的区块数据以及目标区块的区块数据与所述上一个区块的区块数据之间的预设映射关系,判定目标区块的区块数据相对于上一个区块的区块数据是否满足该预设映射关系,以实现对接收到所述目标区块进行安全校验,若目标区块的区块数据相对于上一个区块的区块数据满足该预设映射关系,则通过检验。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
本发明实施例提供的应用程序的更新方法及装置,通过执行预先部署在待更新应用程序服务器与客户端之间的区块链网络中的智能合约,根据待更新应用程序对应的更新文件生成目标区块,然后通过区块链网络将生成的目标区块发送到区块链网络中的各个用户节点,以供各个用户节点对接收到所述目标区块进行安全校验,并根据通过检验的目标区块进行应用程序的更新。本发明实施例能够避免第三方对更新文件的截获篡改或加入病毒等恶意行为,而且,采用区块链技术将更新文件发送到区块链网络中的各个用户节点,不仅能够确保所有客户端的同步更新,同时也减少了服务器的网络带宽压力。
此外,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如图1所示实施例所述方法的步骤或如图2所示实施例所述方法的步骤。
本实施例中,如图3所示实施例所述应用程序的更新装置或如图4所示实施例所述应用程序的更新装置集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
图5为本发明实施例提供的计算机设备的示意图。本发明实施例提供的计算机设备,包括存储器501、处理器502及存储在存储器501上并可在处理器502上运行的计算机程序,所述处理器502执行所述计算机程序时实现上述应用程序的更新方法实施例中的步骤,例如图1所示的步骤,或例如图2所示的步骤。或者,所述处理器502执行所述计算机程序时实现上述应用程序的更新装置实施例中各模块/单元的功能,例如图3所示的生成模块301、服务器侧处理模块302以及服务器侧通信模块303。再例如图4所示的客户端通信模块401、客户端处理模块402以及程序更新模块403。
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在如图3所示实施例所述应用程序的更新装置或如图4所示实施例所述应用程序的更新装置中的执行过程。
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,所述示意图5仅仅是计算机设备的示例,并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述计算机设备还可以包括输入输出设备、网络接入设备、总线等。
所述处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述计算机设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (9)
1.一种应用程序的更新方法,其特征在于,所述方法包括:
生成待更新应用程序的更新文件,所述待更新应用程序对应的服务器与客户端之间预先部署有区块链网络,所述服务器和所述客户端为所述区块链网络中的用户节点;
执行所述区块链网络中的智能合约,所述智能合约用于根据所述更新文件生成目标区块;所述执行所述区块链网络中的智能合约,包括:从所述区块链网络中获取所述目标区块的上一个区块的区块数据和区块数据结构;根据所述上一个区块的区块数据、所述更新文件以及所述目标区块的区块数据与所述上一个区块的区块数据之间的预设映射关系生成目标区块的区块数据;根据所述区块数据结构和目标区块的区块数据生成所述目标区块;
通过所述区块链网络将生成的目标区块发送到所述区块链网络中的各个用户节点,以供所述各个用户节点执行智能合约,所述智能合约还用于对接收到的所述目标区块进行安全校验,并根据通过检验的目标区块进行应用程序的更新。
2.根据权利要求1所述的方法,其特征在于,所述区块数据结构,包括区块号、时间戳、第一编码值、第一key值、区块数据、预设值、随机数和第二编码值;其中,所述第一编码值为当前区块的上一个区块的第二编码值,所述第一key值为当前区块对应的更新文件的MD5值,所述第二编码值是所述区块号、时间戳、第一编码值、第一key值、区块数据、预设值、随机数进行组合后的数据的哈希值。
3.根据权利要求1或2所述的方法,其特征在于,所述执行所述区块链网络中的智能合约,包括:
从所述区块链网络中获取所述目标区块的上一个区块的区块数据和区块数据结构;
将所述更新文件拆分成至少一个子更新数据包;
根据所述上一个区块的区块数据和各子更新数据包分别生成各子更新数据包对应区块的区块数据;
根据所述区块数据结构和各子更新数据包对应区块的区块数据分别生成各子更新数据包对应的目标区块。
4.一种应用程序的更新方法,其特征在于,所述方法包括:
接收服务器通过区块链网络发送的目标区块,所述目标区块是所述服务器执行所述区块链网络中的智能合约生成的,所述智能合约用于根据待更新应用程序的更新文件生成目标区块;其中所述待更新应用程序对应的服务器与客户端之间预先部署有区块链网络,所述服务器和所述客户端为所述区块链网络中的用户节点;所述目标区块是所述服务器执行所述区块链网络中的智能合约生成的,包括:从所述区块链网络中获取所述目标区块的上一个区块的区块数据和区块数据结构;根据所述上一个区块的区块数据、所述更新文件以及所述目标区块的区块数据与所述上一个区块的区块数据之间的预设映射关系生成目标区块的区块数据;根据所述区块数据结构和目标区块的区块数据生成所述目标区块;
执行所述智能合约,所述智能合约还用于对接收到所述目标区块进行安全校验;
根据通过检验的目标区块进行应用程序的更新。
5.根据权利要求4所述的方法,其特征在于,所述执行所述智能合约,包括:
从所述区块链网络中获取所述目标区块的上一个区块的区块数据;
根据所述上一个区块的区块数据以及目标区块的区块数据与所述上一个区块的区块数据之间的预设映射关系,对所述目标区块进行安全校验。
6.一种应用程序的更新装置,其特征在于,所述装置包括:
生成模块,用于生成待更新应用程序的更新文件,所述待更新应用程序对应的服务器与客户端之间预先部署有区块链网络,所述服务器和所述客户端为所述区块链网络中的用户节点;
服务器侧处理模块,用于执行所述区块链网络中的智能合约,所述智能合约用于根据所述更新文件生成目标区块;所述执行所述区块链网络中的智能合约,包括:从所述区块链网络中获取所述目标区块的上一个区块的区块数据和区块数据结构;根据所述上一个区块的区块数据、所述更新文件以及所述目标区块的区块数据与所述上一个区块的区块数据之间的预设映射关系生成目标区块的区块数据;根据所述区块数据结构和目标区块的区块数据生成所述目标区块;
服务器侧通信模块,用于通过所述区块链网络将生成的目标区块发送到所述区块链网络中的各个用户节点,以供所述各个用户节点执行智能合约,所述智能合约还用于对接收到的所述目标区块进行安全校验,并根据通过检验的目标区块进行应用程序的更新。
7.一种应用程序的更新装置,其特征在于,所述装置包括:
客户端通信模块,用于接收服务器通过区块链网络发送的目标区块,所述目标区块是所述服务器执行所述区块链网络中的智能合约生成的,所述智能合约用于根据待更新应用程序的更新文件生成目标区块;其中所述待更新应用程序对应的服务器与客户端之间预先部署有区块链网络,所述服务器和所述客户端为所述区块链网络中的用户节点;所述目标区块是所述服务器执行所述区块链网络中的智能合约生成的,包括:从所述区块链网络中获取所述目标区块的上一个区块的区块数据和区块数据结构;根据所述上一个区块的区块数据、所述更新文件以及所述目标区块的区块数据与所述上一个区块的区块数据之间的预设映射关系生成目标区块的区块数据;根据所述区块数据结构和目标区块的区块数据生成所述目标区块;
客户端处理模块,用于执行所述智能合约,所述智能合约还用于对接收到所述目标区块进行安全校验;
程序更新模块,用于根据通过检验的目标区块进行应用程序的更新。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-3任一项或如权利要求4-5任一项所述方法的步骤。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-3任一项或如权利要求4-5任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810112015.5A CN108270874B (zh) | 2018-02-05 | 2018-02-05 | 应用程序的更新方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810112015.5A CN108270874B (zh) | 2018-02-05 | 2018-02-05 | 应用程序的更新方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108270874A CN108270874A (zh) | 2018-07-10 |
CN108270874B true CN108270874B (zh) | 2021-04-23 |
Family
ID=62773709
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810112015.5A Active CN108270874B (zh) | 2018-02-05 | 2018-02-05 | 应用程序的更新方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108270874B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108833610B (zh) * | 2018-07-19 | 2021-08-31 | 网宿科技股份有限公司 | 一种信息更新方法、装置及*** |
CN109375944B (zh) * | 2018-08-28 | 2021-10-01 | 浪潮金融信息技术有限公司 | 一种基于区块链数据结构的终端软件分发验证方法 |
CN110969458A (zh) * | 2018-09-29 | 2020-04-07 | 武汉斗鱼网络科技有限公司 | 一种客户端集群的积分方法、客户端及*** |
CN109388968B (zh) * | 2018-10-19 | 2021-05-14 | 杭州安恒信息技术股份有限公司 | 一种基于区块链的轻量物联网终端***及其控制方法 |
CN111258599B (zh) * | 2018-12-03 | 2023-06-20 | 中国电信股份有限公司 | 固件升级方法、***和计算机可读存储介质 |
CN109714652A (zh) * | 2018-12-18 | 2019-05-03 | 京信通信***(中国)有限公司 | Odn管理***的数据存储方法、***、存储介质及设备 |
CN109753767B (zh) * | 2019-01-04 | 2020-12-18 | 嘉兴熠智软件科技有限公司 | 基于区块链的软件分发及更新方法和装置、服务器、客户端 |
CN109889589B (zh) * | 2019-02-18 | 2021-11-23 | 闪联信息技术工程中心有限公司 | 一种基于区块链实现嵌入式硬件ota升级***及方法 |
CN110502271A (zh) * | 2019-07-22 | 2019-11-26 | 平安科技(深圳)有限公司 | 基于区块链的应用程序发版方法和*** |
CN110493345A (zh) * | 2019-08-23 | 2019-11-22 | 北京智芯微电子科技有限公司 | 基于区块链的物联网终端软件升级方法及*** |
CN110535938B (zh) * | 2019-08-29 | 2021-07-27 | 腾讯科技(深圳)有限公司 | 一种基于智能合约的数据处理方法、设备及存储介质 |
CN110780979B (zh) * | 2019-10-28 | 2021-01-26 | 北京海益同展信息科技有限公司 | 微服务框架下配置的控制方法及装置、介质和电子设备 |
KR102365945B1 (ko) * | 2019-12-12 | 2022-02-22 | (주)포뎁스 | 블록체인을 기반으로 응용 애플리케이션에 대한 업데이트 처리가 가능한 전자 단말 장치 및 그 동작 방법 |
CN111651467B (zh) * | 2020-05-25 | 2023-09-12 | 杭州溪塔科技有限公司 | 一种区块链节点接口发布调用方法和装置 |
CN112162770B (zh) * | 2020-10-20 | 2023-11-10 | 深圳技术大学 | 基于区块链实现完整性验证的固件版本升级方法及装置 |
CN112702419B (zh) * | 2020-12-21 | 2023-03-24 | 杭州趣链科技有限公司 | 基于区块链的数据处理方法、装置、设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106534317A (zh) * | 2016-11-17 | 2017-03-22 | 杭州云象网络技术有限公司 | 一种基于区块链技术的灾备云存储***构建方法 |
CN106919419A (zh) * | 2017-02-03 | 2017-07-04 | 中钞***产业发展有限公司北京智能卡技术研究院 | 区块链上的智能合约程序的更新方法及装置 |
CN107077557A (zh) * | 2016-12-29 | 2017-08-18 | 深圳前海达闼云端智能科技有限公司 | 软件应用程序发布和验证的方法及装置 |
CN107249046A (zh) * | 2017-08-15 | 2017-10-13 | 李俊庄 | 一种基于区块链的分布式云存储***构建方法 |
CN107426253A (zh) * | 2017-09-26 | 2017-12-01 | 武汉斗鱼网络科技有限公司 | 一种数据校验方法及客户端 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2016235539B2 (en) * | 2015-03-20 | 2019-01-24 | Rivetz Corp. | Automated attestation of device integrity using the block chain |
US20170352219A1 (en) * | 2015-08-06 | 2017-12-07 | Blockchain Technologies Corporation | System and method for securely receiving and counting votes in an election |
CN106603698A (zh) * | 2016-12-28 | 2017-04-26 | 北京果仁宝科技有限公司 | 基于dpos的区块链共识方法和节点 |
CN107391944A (zh) * | 2017-07-27 | 2017-11-24 | 北京太云科技有限公司 | 一种基于区块链的电子病历共享*** |
-
2018
- 2018-02-05 CN CN201810112015.5A patent/CN108270874B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106534317A (zh) * | 2016-11-17 | 2017-03-22 | 杭州云象网络技术有限公司 | 一种基于区块链技术的灾备云存储***构建方法 |
CN107077557A (zh) * | 2016-12-29 | 2017-08-18 | 深圳前海达闼云端智能科技有限公司 | 软件应用程序发布和验证的方法及装置 |
CN106919419A (zh) * | 2017-02-03 | 2017-07-04 | 中钞***产业发展有限公司北京智能卡技术研究院 | 区块链上的智能合约程序的更新方法及装置 |
CN107249046A (zh) * | 2017-08-15 | 2017-10-13 | 李俊庄 | 一种基于区块链的分布式云存储***构建方法 |
CN107426253A (zh) * | 2017-09-26 | 2017-12-01 | 武汉斗鱼网络科技有限公司 | 一种数据校验方法及客户端 |
Also Published As
Publication number | Publication date |
---|---|
CN108270874A (zh) | 2018-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108270874B (zh) | 应用程序的更新方法及装置 | |
US11501533B2 (en) | Media authentication using distributed ledger | |
CN107294729B (zh) | 区块链中不同节点之间的通信方法及装置 | |
US10630463B2 (en) | Meta block chain | |
CN106778329B (zh) | 一种区块链智能合约模板动态更新方法、装置及*** | |
CN107396360B (zh) | 区块验证方法及装置 | |
CN107276765B (zh) | 区块链中共识的处理方法及装置 | |
EP3665892B1 (en) | Methods and systems for automatic blockchain deployment based on cloud platform | |
WO2020233373A1 (zh) | 一种应用程序的配置文件管理方法及装置 | |
TW202011329A (zh) | 基於區塊鏈的交易共識處理方法及裝置、電子設備 | |
CN110417502B (zh) | 一种区块链节点时钟共识方法及装置 | |
CN109379343B (zh) | 一种区块链的异构共识方法及终端 | |
CN112699081A (zh) | 基于区块链的文件自证方法及装置 | |
US20200169382A1 (en) | Encrypted and Compressed Data Transmission with Padding | |
CN109634615B (zh) | 应用安装包的发布方法、验证方法和装置 | |
CN110597824A (zh) | 一种基于区块链网络的数据存储方法以及装置 | |
CN111523150A (zh) | 基于区块链的文档编辑方法、装置及*** | |
CN112134883B (zh) | 基于可信计算进行节点间信任关系快速认证的方法、装置及相关产品 | |
US10785025B1 (en) | Synchronization of key management services with cloud services | |
CN112131041A (zh) | 用于管理数据放置的方法、设备和计算机程序产品 | |
KR101593675B1 (ko) | 사용자 데이터의 무결성 검증 방법 및 그 장치 | |
CN109885258B (zh) | 基于区块链的数据删除装置及方法 | |
KR102199967B1 (ko) | 위변조 데이터가 네트워크에 저장되는 것을 방지하는 방법 및 상기 방법을 수행하는 시스템 | |
CN111695098A (zh) | 多分布式集群访问方法及装置 | |
CN110618989A (zh) | 信息处理方法、信息处理装置及相关产品 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |