CN117032727A - 基于区块链的文件编译方法、装置、设备、介质及产品 - Google Patents
基于区块链的文件编译方法、装置、设备、介质及产品 Download PDFInfo
- Publication number
- CN117032727A CN117032727A CN202311304572.4A CN202311304572A CN117032727A CN 117032727 A CN117032727 A CN 117032727A CN 202311304572 A CN202311304572 A CN 202311304572A CN 117032727 A CN117032727 A CN 117032727A
- Authority
- CN
- China
- Prior art keywords
- file
- code
- blockchain
- party code
- party
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 129
- 238000012795 verification Methods 0.000 claims abstract description 387
- 238000012545 processing Methods 0.000 claims abstract description 176
- 238000004806 packaging method and process Methods 0.000 claims abstract description 16
- 230000002159 abnormal effect Effects 0.000 claims description 36
- 238000004590 computer program Methods 0.000 claims description 18
- 238000007405 data analysis Methods 0.000 claims description 12
- 238000012550 audit Methods 0.000 claims description 10
- 238000004422 calculation algorithm Methods 0.000 claims description 10
- 238000012856 packing Methods 0.000 claims 1
- 230000006870 function Effects 0.000 description 27
- 238000005516 engineering process Methods 0.000 description 23
- 238000010586 diagram Methods 0.000 description 14
- 238000013475 authorization Methods 0.000 description 10
- 230000003993 interaction Effects 0.000 description 10
- 238000013473 artificial intelligence Methods 0.000 description 6
- 238000013500 data storage Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 2
- 239000003999 initiator Substances 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000002547 anomalous effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提出一种基于区块链的文件编译方法、装置、设备、介质及产品。该方法包括:获取第三方代码文件的摘要数据,第三方代码文件是指代码编译器在编译可执行文件的过程中,从第三方代码库中链接的代码文件;将第三方代码文件的摘要数据发送至区块链中的编译链接节点,以使编译链接节点在区块链上基于第三方代码文件的摘要数据对第三方代码文件进行验证;若验证通过,则获取编译链接节点针对第三方代码文件的签名验证结果;将签名验证结果打包至可执行文件中,得到打包后的可执行文件;将打包后的可执行文件发送至区块链中进行上链处理。本申请能够在区块链上对第三方代码文件进行可信验证,从而提高编译得到的可执行文件的可靠性和安全性。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及一种基于区块链的文件编译方法、一种基于区块链的文件编译装置、一种计算机设备、一种计算机可读存储介质以及一种计算机程序产品。
背景技术
在代码编辑器进行文件编译的场景中,往往涉及需链接第三方代码库中的代码文件来进行文件编译的需求,例如从一些开源的代码库中直接获取已开源的代码文件,由于第三方代码库是开源且公开的,因此这些第三方代码库中的代码文件可能存在数据被篡改的风险,从而导致需链接的第三方代码文件的数据不够准确、安全,进而会导致文件编译后的可执行文件不够准确。
发明内容
本申请实施例提出了一种基于区块链的文件编译方法、装置、设备、介质及产品,能够在区块链上对第三方代码文件进行可信验证,从而提高编译得到的可执行文件的可靠性和安全性。
一方面,本申请实施例提供了一种基于区块链的文件编译方法,该方法包括:
获取第三方代码文件的摘要数据,第三方代码文件是指代码编译器在编译可执行文件的过程中,从第三方代码库中链接的代码文件;
将第三方代码文件的摘要数据发送至区块链中的编译链接节点,以使编译链接节点在区块链上基于第三方代码文件的摘要数据对第三方代码文件进行验证;
若验证通过,则获取编译链接节点针对第三方代码文件的签名验证结果,签名验证结果用于指示第三方代码文件为经区块链验证通过的可信文件;
将签名验证结果打包至可执行文件中,得到打包后的可执行文件;
将打包后的可执行文件发送至区块链中进行上链处理;其中,完成上链处理后的可执行文件允许被执行。
一方面,本申请实施例提供了一种基于区块链的文件编译方法,该方法包括:
接收代码编译器发送的代码验证请求,代码验证请求中包括待验证的第三方代码文件的摘要数据,第三方代码文件是指代码编译器在编译可执行文件的过程中,需从第三方代码库中链接的代码文件;
基于第三方代码文件的摘要数据,对第三方代码文件进行验证;
若验证通过,则对第三方代码文件进行签名处理,得到签名验证结果;
将签名验证结果发送至代码编译器,以使代码编译器将签名验证结果打包至可执行文件中,并将打包后的可执行文件进行上链处理;其中,完成上链处理后的可执行文件允许被执行。
一方面,本申请实施例提供了一种基于区块链的文件编译装置,该装置包括:
获取单元,用于获取第三方代码文件的摘要数据,第三方代码文件是指代码编译器在编译可执行文件的过程中,从第三方代码库中链接的代码文件;
发送单元,用于将第三方代码文件的摘要数据发送至区块链中的编译链接节点,以使编译链接节点在区块链上基于第三方代码文件的摘要数据对第三方代码文件进行验证;
获取单元,还用于若验证通过,则获取编译链接节点针对第三方代码文件的签名验证结果,签名验证结果用于指示第三方代码文件为经区块链验证通过的可信文件;
处理单元,用于将签名验证结果打包至可执行文件中,得到打包后的可执行文件;
处理单元,还用于将打包后的可执行文件发送至区块链中进行上链处理;其中,完成上链处理后的可执行文件允许被执行。
在一种可能的实现方式中,代码编译器中配置有代码库完整性校验模块;获取单元获取第三方代码文件的摘要数据,用于执行以下操作:
调用代码库完整性校验模块,获取第三方代码文件的版本号;
采用哈希算法对第三方代码文件的版本号进行哈希运算,得到第三方代码文件的哈希值;
将第三方代码文件的哈希值,作为第三方代码文件的摘要数据。
在一种可能的实现方式中,发送单元将第三方代码文件的摘要数据发送至区块链中的编译链接节点,用于执行以下操作:
在区块链中确定第三方代码文件对应的编译链接节点,并获取编译链接节点的节点标识;
根据编译链接节点的节点标识、以及第三方代码文件的摘要数据,生成针对第三方代码文件的代码验证请求;
将代码验证请求发送至区块链中的编译链接节点,代码验证请求用于触发编译链接节点对第三方代码文件进行验证。
在一种可能的实现方式中,根据编译链接节点的节点标识、以及第三方代码文件的摘要数据,生成针对第三方代码文件的代码验证请求之后,处理单元还用于执行以下操作:
采用代码编译器的私钥对代码验证请求进行签名处理;
将签名后的代码验证请求发送至区块链中的编译链接节点。
在一种可能的实现方式中,将第三方代码文件的摘要数据发送至区块链中的编译链接节点之后,处理单元还用于执行以下操作:
接收编译链接节点发送的反馈数据,反馈数据至少包括:验证结果指示字段、以及签名字段;
对反馈数据的验证结果指示字段进行解析处理,得到编译链接节点对第三方代码文件的验证结果;
若验证结果为验证通过,则从反馈数据的签名字段中获取编译链接节点的签名验证结果。
在一种可能的实现方式中,打包后的可执行文件按照多个字段进行分段存储,多个字段至少包括第一字段和第二字段;处理单元将签名验证结果打包至可执行文件中,得到打包后的可执行文件,用于执行以下操作:
将签名验证结果填充为第一字段的字段数据;以及,
将可执行文件作填充为第二字段的字段数据;
基于数据填充后的第一字段和第二字段,生成打包后的可执行文件。
在一种可能的实现方式中,发送单元将打包后的可执行文件发送至区块链中进行上链处理,用于执行以下操作:
基于打包后的可执行文件,生成文件上链请求;
对文件上链请求进行签名处理,得到签名后的文件上链请求;
将签名后的文件上链请求发送至区块链中的目标区块链节点,触发目标区块链节点对可执行文件进行验证处理并生成上链结果;
接收目标区块链节点返回的上链结果,上链结果包括上链成功或上链失败。
一方面,本申请实施例提供了一种基于区块链的文件编译装置,该装置包括:
接收单元,用于接收代码编译器发送的代码验证请求,代码验证请求中包括待验证的第三方代码文件的摘要数据,第三方代码文件是指代码编译器在编译可执行文件的过程中,需从第三方代码库中链接的代码文件;
处理单元,用于基于第三方代码文件的摘要数据,对第三方代码文件进行验证;
处理单元,还用于若验证通过,则对第三方代码文件进行签名处理,得到签名验证结果;
发送单元,用于将签名验证结果发送至代码编译器,以使代码编译器将签名验证结果打包至可执行文件中,并将打包后的可执行文件进行上链处理;其中,完成上链处理后的可执行文件允许被执行。
在一种可能的实现方式中,代码验证请求是由代码编译器对第三方代码文件的摘要数据进行签名后生成的;接收代码编译器发送的代码验证请求之后,处理单元还用于执行以下操作:
解析代码验证请求,得到代码编译器的签名数据;
基于签名数据,对代码编译器进行鉴权处理,鉴权处理包括:签名验证处理、权限验证处理中的任一种或多种;
若对代码编译器的鉴权通过,则触发执行基于第三方代码文件的摘要数据,对第三方代码文件进行验证的步骤。
在一种可能的实现方式中,处理单元基于第三方代码文件的摘要数据,对第三方代码文件进行验证,用于执行以下操作:
调用代码验证合约,获取第三方代码文件在区块链中记录的版本号;
对区块链中记录的版本号进行哈希运算,得到第三方代码文件的摘要哈希;
将摘要哈希与摘要数据进行比对,若摘要哈希与摘要数据相同,则确定第三方代码文件的验证结果为验证通过。
在一种可能的实现方式中,处理单元还用于执行以下操作:
若摘要哈希与摘要数据不相同,则在区块链中获取与第三方代码文件相关联的关联交易数据,关联交易数据包含至少一个交易;
对关联交易数据进行数据分析,并根据数据分析结果确定出异常交易;
按照异常交易在区块链中定位出异常节点,并对异常节点进行安全审计处理。
本申请实施例中,可获取第三方代码文件的摘要数据,第三方代码文件是指代码编译器在编译可执行文件的过程中,从第三方代码库中链接的代码文件;将第三方代码文件的摘要数据发送至区块链中的编译链接节点,以使编译链接节点在区块链上基于第三方代码文件的摘要数据对第三方代码文件进行验证;若验证通过,则获取编译链接节点针对第三方代码文件的签名验证结果,签名验证结果用于指示第三方代码文件为经区块链验证通过的可信文件;将签名验证结果打包至可执行文件中,得到打包后的可执行文件,并将打包后的可执行文件发送至区块链中进行上链处理;其中,完成上链处理后的可执行文件允许被执行。由此可见,在编译可执行文件的过程中,可以在区块链中对第三方代码文件进行验证,当确定对第三方代码文件的验证通过后,可将签名验证结果打包至可执行文件进行上链处理,以确保第三方代码文件是通过链上安全验证的可信文件,从而提高可执行文件的可靠性和安全性。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术对象来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本申请实施例提供的一种区块链系统的结构示意图;
图1b是本申请实施例提供的一种区块链的结构示意图;
图2是本申请实施例提供的一种基于区块链的文件编译系统的结构示意图;
图3是本申请实施例提供的一种基于区块链的文件编译方法的流程示意图;
图4是本申请实施例提供的一种可执行文件上链处理的场景示意图;
图5是本申请实施例提供的另一种基于区块链的文件编译方法的流程示意图;
图6是本申请实施例提供的一种基于区块链的文件编译方法的交互流程图;
图7是本申请实施例提供的一种执行智能合约的流程示意图;
图8是本申请实施例提供的一种基于区块链的文件编译装置的结构示意图;
图9是本申请实施例提供的另一种基于区块链的文件编译装置的结构示意图;
图10是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
本申请提供了一种基于区块链的文件编译方案,适用于文件编译场景,能够安全、可靠性编译任意类型的代码文件,例如合约类型的代码文件(合约文件)、又如业务类型的代码文件(业务文件)。具体来说,在编译可执行文件过程中,若需要链接第三方代码库中的代码文件时,则可以在获取到第三方代码文件的摘要数据后,将摘要数据发送至区链上进行一致性验证,在区块链上确定对第三方代码文件的一致性验证通过后,可将第三方代码文件的签名验证结果打包至可执行文件中进行上链处理,以此来保证第三方代码文件的可信度。具体来说,本申请提供的文件编译方案的原理大致如下:
1)在采用代码编译器编译可执行文件的过程中,若需链接第三方代码库中的第三方代码文件时,可以获取该第三方代码文件的checksum(例如摘要数据)。可选的,代码编译器中可以配置有代码库完整性校验模块,可以调用该代码库完整性校验模块来获取第三方代码文件的摘要数据,获取摘要数据的过程可以包括:首先获取该第三方代码文件的版本号(例如1.0版本、2.0版本),然后对该版本号进行哈希运算,最后将哈希运算的结果作为第三方代码文件的摘要数据。
2)将第三方代码文件的摘要数据发送至区块链中的编译链接节点,以使编译链接节点在区块链上基于第三方代码文件的摘要数据对第三方代码文件进行验证;此处的验证可以包括:完整性验证、合法性验证、安全性验证中的任一种或多种。其中,若验证通过,则编译链接节点可以生成针对第三方代码文件的签名验证结果,该签名验证结果用于指示第三方代码文件为经过区块链验证通过的可信文件。
3)接收编译链接节点返回的签名验证结果。
4)将签名验证结果打包至已编译好的可执行文件中,得到打包后的可执行文件,并将打包后的可执行文件发送至区块链中进行上链处理;其中,完成上链处理后的可执行文件允许被安全执行。
由此可见,本申请在编译可执行文件的过程中,可以在区块链中对第三方代码文件进行验证,当确定对第三方代码文件的验证通过后,可将签名验证结果打包至可执行文件进行上链处理,以确保第三方代码文件是通过链上安全验证的可信文件,从而提高可执行文件的可靠性和安全性。
下面对本申请提供的基于区块链的文件编译方案所涉及到的相关技术术语进行详细介绍。
一、第三方代码库、第三方代码文件:
第三方代码库是指在文件编译的过程中,独立于当前系统中数据库的第三方数据库,此处的第三方数据库主要是指一些开源的代码数据库,这些开源的代码库允许其它编译软件器(或称为代码编译器)接入,从而使得编译软件可以直接使用第三方代码库中所开发的代码功能而无需重新开发或编译相关代码功能。
第三方代码库中可以包括多个代码文件,这些代码文件又可称为第三方代码文件,第三方代码文件的数据类型不限,例如第三方代码文件可以包括:.a文件和.so文件。其中,①.a文件:是Linux系统中的静态链接库文件,所谓静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分;②.so文件:.so文件又可称为.elf文件,是Linux系统下的程序函数库,即编译好的可以供其他程序使用的代码和数据。
二、可执行文件:
可执行文件可以为代码编译器所编译的各种类型的文件,该文件可用于在区块链上实现业务功能。例如可执行文件为合约文件,则该合约文件可用于在区块链上实现合约功能,即该合约文件可作为区块链上部署的一个智能合约实现相应的业务功能,例如业务功能可以包括:资源转移功能、游戏功能、人工智能(Artificial Intelligence,AI)服务功能,所谓人工智能是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
三、摘要数据:
摘要数据用于唯一标识一个第三方代码文件,即一个第三方代码文件对应一个唯一的摘要数据。由于摘要数据可作为第三方代码文件的唯一标识,那么可以基于第三方代码文件的摘要数据,能够对第三方代码文件进行一致性校验,即可以校验当前第三方代码文件是否完整、正确或者数据是否被篡改等情况。
摘要数据可俗称checksum(校验和),计算第三方代码文件的checksum的过程大致可以包括:获取第三方代码文件的版本号,对第三方代码文件的版本号进行哈希运算得到的摘要哈希,将摘要哈希作为checksum。
四、签名验证结果:
签名验证结果可以包括由区块链中的编译链接节点对第三方代码文件进行验证后的签名数据,若编译链接节点对第三方代码文件的验证通过,则编译链接节点可以采用私钥对第三方代码文件进行签名处理,得到签名验证结果。因此,某个第三方代码文件的签名验证结果可以用于指示该第三方代码文件为经区块链验证通过的可信文件,所谓可信文件是指:当前文件的代码数据完整正确、且未被篡改。
五、区块链技术:
区块链(Block chain)本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了相关的信息,用于验证其信息的有效性(防伪)和生成下一个区块。具体地,本申请将分别对区块链系统、以及区块链的结构等相关术语进行详细介绍。
(1)区块链系统:
请参见图1a,图1a是本申请实施例提供的一种区块链系统的结构示意图。如图1a所示,区块链系统可以为数据共享系统,所谓数据共享系统是指用于进行节点设备与节点设备之间数据共享的系统,该数据共享系统100中可以包括多个节点设备101,多个节点设备101可以是指数据共享系统中各个计算机设备,计算机设备例如可以为终端设备或服务器。其中,不同的节点设备101的设备类型可以相同,也可以不相同,例如某一节点设备101可以为终端设备,另一节点设备101可以为服务器。
在图1a所示的区块链系统中,每个节点设备101在进行正常工作时可以接收到输入信息,并基于接收到的输入信息维护该数据共享系统内的共享数据。例如,当区块链系统中的任一节点设备101接收到一笔文件上链请求时,该节点设备101可以解析该文件上链请求,得到待上链的数据(例如可执行文件),然后将可执行文件发送至区块链中的其它各个区块链节点,使得各个区块链节点对当前可执行文件进行区块链共识,若共识通过,则可以将可执行文件写入至区块链中,从而完成可执行文件的上链处理,以使区块链上的各个区块链节点在区块链中共同维护可执行文件(即共享数据)。
(2)区块链节点:
①节点功能:
a、应用功能,用于部署在区块链中,根据实际业务需求而实现特定业务,记录实现业务功能相关的数据形成记录数据(例如可执行文件),该可执行文件在区块链上所实现的业务功能例如可以包括:资源转移功能、游戏业务功能等。在一种实现方式中,可在可执行文件的文件上链请求中携带数字签名(例如采用上链对象的私钥对可执行文件进行签名处理生成的数字签名)以表示该可执行文件的来源,并可将可执行文件发送到区块链系统中的其他节点,供其他节点在验证可执行文件的来源以及完整性成功时,将可执行文件添加到临时区块中,即可完成对可执行文件的上链处理。
b、合约功能,区块链系统中任一区块链节点具备调用并执行相应的智能合约的功能,所谓智能合约(可简称合约):智能合约具备承诺、协议、数字形式三大要素,因此能够将区块链的应用范围扩展至金融行业交易、支付、结算和清算的各个环节。智能合约是指当一个预先编译好的条件被触发时,智能合约会立即执行相应的合同条款,其工作原理类似于计算机程序的if-then语句。其中,区块链节点中运行有智能合约虚拟机(是一种能够执行智能合约的虚拟机),智能合约虚拟机可以理解并执行这些代码,以实现智能合约的功能。本申请中,可基于合约功能在区块链节点中部署各个类型的智能合约,以在区块链中能够调用相应的智能合约执行相应的合约交易。
②节点标识:
对于区块链系统中的每个节点,均具有与其对应的节点标识,而且区块链系统中的每个节点均可以存储有区块链系统中其他节点的节点标识,以便后续根据其他节点的节点标识,将生成的区块广播至区块链系统中的其他节点。每个节点中可维护一个如下表所示的节点标识列表,将节点名称和节点标识对应存储至该节点标识列表中。
其中,节点标识可为IP(Internet Protocol,网络之间互联的协议)地址以及其他任一种能够用于标识该节点的信息,表1中仅以IP地址为例进行说明:
表1.节点标识列表
本申请实施例中,例如,在将第三方代码文件的摘要数据发送至编译链接节点的过程中,可以获取编译链接节点的节点标识,从而将摘要数据发送至节点标识所指示的编译链接节点中。又如,在对可执行文件进行上链处理的过程中,各个区块链节点可以对可执行文件进行区块链共识,区块链共识过程中涉及到区块链节点之间的数据交互,因此在上述数据交互过程中,任一区块链节点可以携带有各自的节点标识,使得其他节点在进行共识处理之前可以基于对应的节点标识进行节点验证处理,从而提高区块链共识过程的安全性。
(3)区块的结构:
参见图1b,图1b是本申请实施例提供的一种区块链的结构示意图。如图1b所示,区块链由多个区块组成,且每个区块链均包含一个创始块,顾名思义,所谓创始块即第一个区块、初始区块。创始块中包括区块头和区块体,区块头中存储有输入信息特征值、版本号、时间戳和难度值,区块体中存储有输入信息;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块体,区块头中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本号、时间戳和难度值,并以此类推,使得区块链中每个区块中存储的交易数据均与父区块中存储的交易数据存在关联,保证了区块中交易数据的安全性。
本申请实施例中,在对可执行文件完成上链处理后,可以将可执行文件添加至区块链中当前区块的区块体中,按照区块的结构,可以保证可执行文件在链上存储的安全性和可靠性,可避免文件数据被篡改的风险。
六、云技术:
本申请提出的基于区块链的文件编译方案中,区块链中涉及较多的数据计算服务以及数据存储服务,因此需要花费大量的计算机运营成本。那么,本申请提供的文件编辑方案涉及云技术,采用云技术具体可以提供数据计算服务和数据存储服务,具体地,可以基于数据存储服务将可执行文件或第三方代码库中的各个第三方代码文件进行数据存储;以及,可以基于数据计算服务在区块链上计算第三方代码文件的摘要哈希,并基于摘要哈希与摘要数据对第三方代码文件进行链上验证。其中,所谓云技术(Cloud technology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。其中,云技术可以包括云存储技术,所谓云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统(以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。
需要特别说明的是,在本申请中涉及到的文件编译过程中的相关数据,例如:摘要数据、签名验证结果、可执行文件、以及第三方代码文件等等。在本申请以上实施例运用到具体产品或技术中时,需获得用户许可或同意,且相关数据收集、使用和处理过程需遵守国家和地区的相关法律法规和标准,符合合法、正当、必要的原则,不涉及获取法律法规禁止或限制的数据类型。在一些可选的实施例中,本申请实施例中所涉及的相关数据是经过对象单独授权后获取的,另外,在获取对象单独授权时,需向对象表明所涉及的相关数据的用途。
下面对本申请提供的基于区块链的文件编译系统的架构图进行具体介绍。
请参见图2,图2是本申请实施例提供的一种基于区块链的文件编译系统的架构示意图。如图2所示,该文件编译系统的架构图中至少可以包括:代码编译器201、编译链接节点202以及至少一个区块链节点203。其中,编译链接节点202和区块链节点203均处于区块链网络中,应当说明,该区块链网络中的节点数量仅用于示例,并不对本申请中的节点数量进行具体限定。其中,区块链网络中的任一节点(编译链接节点202或区块链节点203)均可以通过有线或无线通信方式与代码编译器201之间进行直接或间接地连接。
在一个可行的实施例中,文件编译系统中的任一计算机设备(代码编译器201、编译链接节点202、或者区块链节点203)可以是手机、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(MID,mobile internet device)、车辆、车载设备、路边设备、飞行器、可穿戴设备,诸如智能手表、智能手环、计步器等的智能设备,虚拟现实设备....等等。在另一个可行的实施例中,文件编译系统中的任一计算机设备(代码编译器201、编译链接节点202、或者区块链节点203)也可以是服务器。具体地,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(ContentDelivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。
可以理解的是,文件编译系统中的各个计算机设备的类型可以相同或不同,例如,代码编译器201、编译链接节点202均可以是服务器,区块链节点203可以是手机;再如,代码编译器201可以是服务器,编译链接节点202也可以是服务器,区块链节点203还可以是服务器。本申请并不对文件编译系统中的各个计算机设备的数量及类型进行限定。
(1)首先,对文件编译系统中的各个计算机设备:代码编译器201、编译链接节点202以及区块链节点203的主要功能进行简要说明。
①代码编译器201:负责提供代码编译功能,基于代码编译功能能够编译出任意类型的可执行文件,例如可执行文件可以包括:合约文件、业务文件等等。其中,代码编译器201中可以部署有代码库完整性校验模块,该模块用于在编译可执行文件的过程中,若需要链接第三方代码库中的第三方代码文件(例如.a文件或.so文件等)时,可以获取第三方代码文件的checksum(即摘要数据),并将第三方代码文件的checksum发送至区块链上的编译链接节点202进行第三方代码文件的可信性和完整性校验。
②编译链接节点202:负责接收、验证和记录第三方代码文件的完整性和可信性信息,主要负责对第三方代码文件进行完整性验证、以及安全性验证。例如,该编译链接节点202可以是信任的实体,例如软件开发公司、第三方机构或独立的验证节点。
③区块链节点203:区块链中负责区块链共识、接收链下请求的普通节点。可用于接收打包后的可执行文件,并对可执行文件进行链上验证(例如共识),若确定对可执行文件的链上验证通过,则该可执行文件允许被正常允许。
(2)然后,对文件编译系统中的代码编译器201、编译链接节点202以及区块链节点203之间的数据交互过程进行详细介绍:
①在需要开发或编译可执行文件时,可以通过代码编译器201进行可执行文件的编译处理,若编译可执行文件的过程中,需链接第三方数据库中的第三方代码文件,则可以调用代码库完整性校验模块获取第三方代码文件的摘要数据。
②代码编译器201将第三方代码文件的摘要数据发送至编译链接节点202。
③编译链接节点202基于第三方代码文件的摘要数据对第三方代码文件进行验证,此处的验证可以包括:完整性验证、代码漏洞检测、安全性验证、合法性验证中的任一种或多种。
④若编译链接节点202对第三方代码文件的验证通过,则可以生成针对第三方代码文件的签名验证结果,并将该签名验证结果发送至代码编译器201。
⑤代码编译器201可以将签名验证结果打包至编译好的可执行文件中,得到打包后的可执行文件,并将打包后的可执行文件发送至区块链节点203。
⑥区块链节点203接收到打包后的可执行文件后,可以在区块链中对可执行文件进行上链处理,其中,完成上链处理后的可执行文件允许被执行。
本申请提供的文件编译系统,可获取第三方代码文件的摘要数据,第三方代码文件是指代码编译器在编译可执行文件的过程中,从第三方代码库中链接的代码文件;将第三方代码文件的摘要数据发送至区块链中的编译链接节点,以使编译链接节点在区块链上基于第三方代码文件的摘要数据对第三方代码文件进行验证;若验证通过,则获取编译链接节点针对第三方代码文件的签名验证结果,签名验证结果用于指示第三方代码文件为经区块链验证通过的可信文件;将签名验证结果打包至可执行文件中,得到打包后的可执行文件,并将打包后的可执行文件发送至区块链中进行上链处理;其中,完成上链处理后的可执行文件允许被执行。由此可见,在编译可执行文件的过程中,可以在区块链中对第三方代码文件进行验证,当确定对第三方代码文件的验证通过后,可将签名验证结果打包至可执行文件进行上链处理,以确保第三方代码文件是通过链上安全验证的可信文件,从而提高可执行文件的可靠性和安全性。
可以理解的是,本申请实施例描述的文件编译系统是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术对象可知,随着系统架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
下面结合附图对基于区块链的文件编译方案涉及的具体实施例进行描述。
请参见图3,图3是本申请实施例所提供的一种基于区块链的文件编译方法的流程示意图。该文件编译方法可以由图2所示的基于区块链的文件编译系统中的代码编译器执行。如图3所示,该基于区块链的文件编译方法主要包括但不限于如下步骤S301-S305:
S301:获取第三方代码文件的摘要数据,第三方代码文件是指代码编译器在编译可执行文件的过程中,从第三方代码库中链接的代码文件。
其中,第三方代码库中存储有至少一个代码文件,本申请中的第三方代码文件可以为第三方代码库中的任一个代码文件,第三方代码文件例如可以为:.a文件、.so文件等任一种。
在一种可能的实现方式中,代码编译器中配置有代码库完整性校验模块;代码编译器获取第三方代码文件的摘要数据,主要包括:调用代码库完整性校验模块获取第三方代码文件的版本号,具体地,第三方代码库中存储有各个第三方代码文件的版本号,可以调用代码库完整性校验模块从第三方代码库中获取当前所使用的第三方代码文件的版本号,例如版本号为1.0版本、或者2.0版本;采用哈希算法对第三方代码文件的版本号进行哈希运算,得到第三方代码文件的哈希值;将第三方代码文件的哈希值,作为第三方代码文件的摘要数据。其中,哈希算法可以包括但不限于:SHA512算法、SHA224算法、SHA384算法等,本申请对此不做具体限定。
S302:将第三方代码文件的摘要数据发送至区块链中的编译链接节点,以使编译链接节点在区块链上基于第三方代码文件的摘要数据对第三方代码文件进行验证。
在一种可能的实现方式中,代码编译器将第三方代码文件的摘要数据发送至区块链中的编译链接节点的具体流程,可以如下:首先可以将第三方代码文件的摘要数据发送至区块链中的任一区块链节点,然后由该区块链节点将第三方代码文件的摘要数据转发至编译链接节点进行验证。
在另一种可能的实现方式中,代码编译器将第三方代码文件的摘要数据发送至区块链中的编译链接节点的具体流程,还可以如下:①可以在区块链中确定第三方代码文件对应的编译链接节点,并获取编译链接节点的节点标识,其中编译链接节点可以为编译第三方代码文件或者编译第三方代码库的节点,该编译链接节点通常可以为信任的实体,例如软件开发公司、第三方机构或独立的验证节点。②根据编译链接节点的节点标识、以及第三方代码文件的摘要数据,生成针对第三方代码文件的代码验证请求,例如可以将节点标识和摘要数据打包成代码验证请求。③将代码验证请求发送至区块链中的编译链接节点,代码验证请求用于触发编译链接节点对第三方代码文件进行验证。
可选的,在生成代码验证请求后,还可以基于代码编译器的私钥对代码验证请求进行签名处理,得到签名后的代码验证请求,以此来标识代码验证请求的来源;然后可将签名后的代码验证请求发送至区块链中的编译链接节点。后续,编译链接节点即可在区块链上基于第三方代码文件的摘要数据对第三方代码文件进行验证,并得到验证结果。其中,验证结果可以包括验证通过与验证不通过。
S303:若验证通过,则获取编译链接节点针对第三方代码文件的签名验证结果,签名验证结果用于指示第三方代码文件为经区块链验证通过的可信文件。
在一种可能的实现方式中,可以接收编译链接节点发送的反馈数据,该反馈数据至少包括:验证结果指示字段、以及签名字段;对反馈数据的验证结果指示字段进行解析处理,得到编译链接节点对第三方代码文件的验证结果;若验证结果为验证通过,则从反馈数据的签名字段中获取编译链接节点的签名验证结果;若验证结果为验证不通过,则该反馈数据的签名字段中为空,即无法获取到针对第三方代码文件的签名验证结果。举例来说,反馈数据的数据格式可以如下表2所示:
表2.反馈数据的数据格式
如上表2所示,编译链接节点返回的反馈数据可以包括多个字段,例如result字段(验证结果指示字段)、sign字段(签名字段)、以及data字段(数据字段)。其中,1)验证结果指示字段的字段数据可以为0或1,若为0,则表示编译链接节点对第三方代码文件的验证结果为验证不通过;若为1,则表示编译链接节点对第三方代码文件的验证结果为验证通过;2)签名字段的字段数据中用于存储编译链接节点的签名数据,若验证结果为验证通过,则该签名数据可以为编译链接节点对第三方代码文件的摘要数据进行签名后生成的;若验证结果为验证通过,则该签名数据为空;3)数据字段可用于存储额外的数据,例如:验证的时间、验证所调用的智能合约,等等。
在此步骤中,若编译链接节点对第三方代码文件验证通过,则可以由编译链接节点生成针对第三方代码文件的签名验证结果。该签名验证结果可用于指示第三方代码文件是正确可靠性、且未被篡改的,从而可以保证第三方代码文件的可信度,提高文件编译的安全性和可靠性。
S304:将签名验证结果打包至可执行文件中,得到打包后的可执行文件。
在一种可能的实现方式中,代码编译器可以直接将签名验证结果添加至可执行文件中,然后将添加有签名验证结果的可执行文件进行压缩处理,并将压缩后的文件作为打包好的可执行文件。在此实现方式中,采用文件压缩方式进行文件压缩处理,可以减少数据传输过程中的带宽,提高数据传输效率。
在另一种可能的实现方式中,打包后的可执行文件按照多个字段进行分段存储,多个字段至少包括第一字段和第二字段;代码编译器将签名验证结果打包至可执行文件中,得到打包后的可执行文件,包括如下流程:将签名验证结果填充为所述第一字段的字段数据;以及,将可执行文件作填充为第二字段的字段数据;基于数据填充后的第一字段和第二字段,生成打包后的可执行文件。举例来说,打包后的可执行文件的数据格式可以如下表3所示:
表3.可执行文件的数据格式
由上表3可见,在打包可执行文件的过程中,将签名验证结果以及可执行文件按照多字段进行分别存储,这种数据打包方式更加规范,从而有利于后续的数据解析和数据处理。
S305:将打包后的可执行文件发送至区块链中进行上链处理;其中,完成上链处理后的可执行文件允许被执行。
在一种可能的实现方式中,将打包后的可执行文件发送至区块链中进行上链处理,可以包括如下流程:基于打包后的可执行文件,生成文件上链请求;对文件上链请求进行签名处理,得到签名后的文件上链请求;将签名后的文件上链请求发送至区块链中的目标区块链节点,触发目标区块链节点对可执行文件进行验证处理并生成上链结果;接收目标区块链节点返回的上链结果,上链结果包括上链成功或上链失败。其中,目标区块链节点可以为区块链中的任一个区块链节点或指定的区块链节点。
具体实现时,若可执行文件为合约文件,则将打包后的可执行文件发送至区块链中进行上链处理后,可以在区块链中存储并允许该可执行文件。具体地,该合约文件例如可以为资产处理合约文件,则对该资产处理合约文件完成上链处理后,方可在区块链中部署该资产处理合约文件对应的资产处理合约,后续,当接收到链下用户发起的资产交易请求后,可以调用区块链中的资产处理合约执行相应的资产交易。下面对可执行文件上链处理的场景进行相应说明。
请参见图4,图4是本申请实施例提供的一种可执行文件上链处理的场景示意图。如图4所示,该可执行文件上链处理场景中主要涉及:代码编译器、区块链节点、以及终端设备。具体来说,①管理对象可利用代码编译器编译可执行文件,该可执行文件可以为待上链的智能合约的合约文件,例如可执行文件为资产处理合约的合约文件,那么可以采用本申请提供的文件编译方案将可执行文件进行上链处理,从而完成上链处理后的可执行文件可以在区块链中部署为相应的资产处理合约。②当目标对象发起一笔待上链的资产交易时,可以使用终端设备生成一笔资产交易请求,可选的,可以基于目标对象的私钥对该资产交易请求进行签名处理,然后将签名后的资产交易请求发送至区块链中。③区块链节点接收资产交易请求后,可以调用资产处理合约执行资产交易,得到交易执行结果,后续即可将交易执行结果写入至账本数据中,至此在区块链上完成一笔资产交易。
可选的,区块链节点在接收到目标对象上传的资产交易请求之后,还可以对目标对象进行鉴权处理。其中,在对目标对象进行鉴权处理过程中,区块链节点还可以请求获取目标对象的身份信息,并基于目标对象的身份信息对目标对象进行身份验证处理。其中,在获取目标对象的身份信息时,需请求目标对象的授权。具体地,区块链节点在获取目标对象的身份信息之前,需要向该目标对象发送授权请求,该授权请求用于请求目标对象的授权,当目标对象同意授权后,方可获取到目标对象的身份信息。举例来说,目标对象所使用的终端设备在获取到区块链节点发送的授权请求后,可以在终端设备中显示界面,该界面中显示有提示信息,该提示信息用于提示目标对象是否进行身份信息的授权,并且设有确认控件和拒绝控件,若目标对象点击确认控件,则代表目标对象同意授权,若目标对象点击拒绝控件,则代表目标对象拒绝授权。通过这种方式,可以在获取目标对象的身份信息时,请求目标对象的授权,从而提高目标对象的身份信息的安全性,避免数据泄露。
本申请实施例中,可获取第三方代码文件的摘要数据,第三方代码文件是指代码编译器在编译可执行文件的过程中,从第三方代码库中链接的代码文件;将第三方代码文件的摘要数据发送至区块链中的编译链接节点,以使编译链接节点在区块链上基于第三方代码文件的摘要数据对第三方代码文件进行验证;若验证通过,则获取编译链接节点针对第三方代码文件的签名验证结果,签名验证结果用于指示第三方代码文件为经区块链验证通过的可信文件;将签名验证结果打包至可执行文件中,得到打包后的可执行文件,并将打包后的可执行文件发送至区块链中进行上链处理;其中,完成上链处理后的可执行文件允许被执行。由此可见,在编译可执行文件的过程中,可以在区块链中对第三方代码文件进行验证,当确定对第三方代码文件的验证通过后,可将签名验证结果打包至可执行文件进行上链处理,以确保第三方代码文件是通过链上安全验证的可信文件,从而提高可执行文件的可靠性和安全性。
请参见图5,图5是本申请实施例提供的另一种基于区块链的文件编译方法的流程示意图。该文件编译方法可以由图2所示的基于区块链的文件编译系统中的编译链接节点执行。如图5所示,该基于区块链的文件编译方法主要包括但不限于如下步骤S501-S504:
S501:接收代码编译器发送的代码验证请求,代码验证请求中包括待验证的第三方代码文件的摘要数据,第三方代码文件是指代码编译器在编译可执行文件的过程中,从第三方代码库中链接的代码文件。
在一种可能的实现方式中,代码验证请求是由代码编译器对第三方代码文件的摘要数据进行签名后生成的;编译链接节点接收代码编译器发送的代码验证请求之后,还可以执行如下流程:首先解析代码验证请求,得到代码编译器的签名数据;然后基于签名数据,对代码编译器进行鉴权处理,鉴权处理包括:签名验证处理、权限验证处理中的任一种或多种。举例来说,编译链接节点中预先指定有具备发起代码验证请求权限的至少一个客户端的标识,若编译链接节点中指定的各个标识中包括当前代码编译器的标识,则表明对当前代码编译器的权限验证通过。
进一步地,若对代码编译器的鉴权通过,则可以解析代码验证请求得到第三方代码文件的摘要数据,并触发执行后续不再S502;若对代码编译器的鉴权不通过,则可以删除该代码验证请求。采用上述方式,能够对发送代码验证请求的代码编译器进行鉴权,从而提高数据交互过程中的可靠性和安全性,以保障设备之间的正常通信。
S502:基于第三方代码文件的摘要数据,对第三方代码文件进行验证。
在一种可能的实现方式中,可以调用代码验证合约,获取第三方代码文件在区块链中记录的版本号;对区块链中记录的版本号进行哈希运算,得到第三方代码文件的摘要哈希;将摘要哈希与摘要数据进行比对,若摘要哈希与摘要数据相同,则确定第三方代码文件的验证结果为验证通过。可以理解的是,由于摘要数据可以作为第三方代码文件的唯一标识,若当前代码编译器发送的摘要数据与链上记录的摘要哈希一致,由于链上记录的摘要哈希是基于上传至区块链的第三方代码文件计算得到的,那么可以表示该第三方代码文件是完整可靠的,第三方代码文件没有被篡改,即当前第三方代码文件是一个可信文件;同理,若当前代码编译器发送的摘要数据与链上记录的摘要哈希不一致,则可以说明当前需链接的第三方代码文件可能已经被篡改,这个第三方代码文件不是一个可信文件,可能具备一定的风险,从而可以提高文件编译过程中的安全性。
S503:若验证通过,则对第三方代码文件进行签名处理,得到签名验证结果。
在一种可能的实现方式中,若编译链接节点对第三方代码文件的验证结果为验证通过,则可以采用编译链接节点的私钥对第三方代码文件的验证结果进行签名处理,得到签名验证结果。
在另一种可能的实现方式中,若编译链接节点对第三方代码文件的验证结果为验证不通过,则可以生成验证不通过的通知消息,并将该通过消息返回至代码编译器。
S504:将签名验证结果发送至代码编译器,以使代码编译器将签名验证结果打包至可执行文件中,并将打包后的可执行文件进行上链处理;其中,完成上链处理后的可执行文件允许被执行。
在一种可能的实现方式中,编译链接节点可以基于签名验证结果生成反馈数据,具体地,可以生成签名字段,并将签名验证结果填充为签名字段中的字段数据;还可以生成验证结果指示字段,并将验证结果填充为验证结果指示字段中的字段数据,例如验证结果为验证通过,则可以将验证结果指示字段的字段数据填充为1;又如验证结果为验证不通过,则可以将验证结果指示字段的字段数据填充为0。后续,即可将反馈数据发送至代码编译器。
本申请实施例中,编译链接节点能够接收代码编译器发送的第三方代码文件的摘要数据,并可基于第三方代码文件的摘要数据在区块链中对第三方代码文件进行可信验证,即可以在区块链上验证第三方代码文件的正确性、完整性、以及安全性,从而可以保证代码编译器从第三方代码库中所链接的第三方代码文件的可信度,并在对第三方代码文件的验证通过后生成针对第三方代码文件的签名验证结果,后续代码编译器可将第三方代码文件的签名验证结果打包至可执行文件中进行上链处理,从而保证了第三方代码文件的可信度,从而提高了第三方代码文件的安全性及可靠性。
请参见图6,图6是本申请实施例提供的一种基于区块链的文件编译方法的交互流程图。如图6所示,该文件编译方法的交互流程主要由:代码编译器、编译链接节点、以及区块链节点共同执行。其中,上述交互流程主要包括如下步骤S601-S609:
S601:代码编译器获取第三方代码文件的摘要数据。
具体实现时,代码编译器在编译可执行文件的过程中,首先需确定待链接的第三方代码库,然后从第三方代码库中确定待链接的第三方代码文件。接下来,从第三方代码库中获取第三方代码文件的版本号,例如版本号为1.0版本、或者2.0版本;然后对第三方代码文件的版本号进行哈希运算,得到第三方代码文件的哈希值,最后可将第三方代码文件的哈希值作为第三方代码文件的摘要数据。
S602:代码编译器将第三方代码文件的摘要数据发送至区块链中的编译链接节点。
在一种可能的实现方式中,代码编译器将第三方代码文件的摘要数据发送至区块链中的编译链接节点,可以包括如下流程:首先可以将第三方代码文件的摘要数据发送至区块链中的任一区块链节点,然后由该区块链节点将第三方代码文件的摘要数据转发至编译链接节点进行验证。
在另一种可能的实现方式中,代码编译器将第三方代码文件的摘要数据发送至区块链中的编译链接节点,还可以包括如下流程:首先在区块链中确定第三方代码文件对应的编译链接节点,并获取编译链接节点的节点标识;然后根据编译链接节点的节点标识、以及第三方代码文件的摘要数据,生成针对第三方代码文件的代码验证请求;最后将代码验证请求发送至区块链中的编译链接节点,代码验证请求用于触发编译链接节点对第三方代码文件进行验证。
S603:编译链接节点基于第三方代码文件的摘要数据对第三方代码文件进行验证。
其中,编译链接节点可以接收代码编译器发送的代码验证请求,该代码验证请求中包括待验证的第三方代码文件的摘要数据。在一种可能的实现方式中,代码验证请求是由代码编译器对第三方代码文件的摘要数据进行签名后生成的;编译链接节点接收代码编译器发送的代码验证请求之后,还可以执行如下流程:首先解析代码验证请求,得到代码编译器的签名数据;然后基于签名数据,对代码编译器进行鉴权处理,鉴权处理包括:签名验证处理、权限验证处理中的任一种或多种。举例来说,编译链接节点中预先指定有具备发起代码验证请求权限的至少一个客户端的标识,若编译链接节点中指定的各个标识中包括当前代码编译器的标识,则表明对当前代码编译器的权限验证通过。
在一种可能的实现方式中,编译链接节点可以调用代码验证合约,获取第三方代码文件在区块链中记录的版本号;然后对区块链中记录的版本号进行哈希运算,得到第三方代码文件的摘要哈希;最后将第三方代码文件的摘要哈希与第三方代码文件的摘要数据进行比对,若摘要哈希与摘要数据相同,则确定第三方代码文件的验证结果为验证通过。
在另一种可能的实现方式中,若摘要哈希与摘要数据不相同,则可以基于区块链对代码编译过程进行溯源分析及安全审计处理。下面对安全审计的具体流程进行详细说明:
1)首先,在区块链中获取与第三方代码文件相关联的关联交易数据,关联交易数据包含至少一个交易。其中,与第三方代码文件相关联的关联交易数据可以包括:用于调用第三方代码文件的交易数据、用于执行第三方代码文件的交易数据、用于查询第三方代码文件的交易数据、用于编译第三方代码文件的交易数据,等等。
2)然后,对关联交易数据进行数据分析,并根据数据分析结果确定出异常交易。具体地,可对上述关联交易数据进行数据分析,例如解析任一个关联交易数据中的交易发起者、交易接收者、交易类型、交易的具体内容等数据;然后可从上述交易中定位出异常交易,此处的异常交易可以包括:交易时间不合法的交易、交易次数不合规的交易,等等。
3)最后,按照异常交易在区块链中定位出异常节点,并对异常节点进行安全审计处理。具体地,可以将异常交易对应的区块链节点作为异常节点,此处的异常节点可以包括:执行异常交易的区块链节点、验证异常交易的区块链节点,等等。最后,可对异常节点进行安全审计,所谓安全审计处理可以包括:对异常节点进行权限管理(例如删除异常节点所持有的部分或全部权限)、将异常节点从区块链中剔除。采用这种方式,能够基于区块链数据可追溯的特征,定位异常交易,从而对异常交易对应的异常节点进行安全审计处理,可提高区块链网络中交易执行过程的可靠性。
S604:若验证通过,则编译链接节点生成针对第三方代码文件的签名验证结果。
具体实现时,若编译链接节点对第三方代码文件的验证结果为验证通过,则可以采用编译链接节点的私钥对第三方代码文件的验证结果进行签名处理,得到签名验证结果;若编译链接节点对第三方代码文件的验证结果为验证不通过,则可以生成验证不通过的通知消息,并将该通过消息返回至代码编译器。
S605:编译链接节点将签名验证结果发送至代码编译器。
具体实现时,编译链接节点可以将签名验证结果直接发送至代码编译器;或者,编译链接节点可以将签名验证结果进行加密处理得到加密验证结果,然后将加密验证结果发送至代码编译器。采用这种方式,能够在数据交互过程中进行数据加密处理,从而能够提高数据交互的安全性。
在一种可能的实现方式中,编译链接节点可以基于签名验证结果生成反馈数据,具体地,可以生成签名字段,并将签名验证结果填充为签名字段中的字段数据;还可以生成验证结果指示字段,并将验证结果填充为验证结果指示字段中的字段数据,例如验证结果为验证通过,则可以将验证结果指示字段的字段数据填充为1;又如验证结果为验证不通过,则可以将验证结果指示字段的字段数据填充为0。后续,即可将反馈数据发送至代码编译器。
S606:代码编译器将签名验证结果打包至可执行文件中。
具体实现时,打包签名验证结果至可执行文件中可以包括如下两种方式:
方式一、代码编译器可以直接将签名验证结果添加至可执行文件中,然后将添加有签名验证结果的可执行文件进行压缩处理,并将压缩后的文件作为打包好的可执行文件。在此实现方式中,采用文件压缩方式进行文件压缩处理,可以减少数据传输过程中的带宽,提高数据传输效率。
方式二、打包后的可执行文件按照多个字段进行分段存储,多个字段至少包括第一字段和第二字段;代码编译器将签名验证结果打包至可执行文件中,得到打包后的可执行文件,包括如下流程:将签名验证结果填充为所述第一字段的字段数据;以及,将可执行文件作填充为第二字段的字段数据;基于数据填充后的第一字段和第二字段,生成打包后的可执行文件。
S607:代码编译器将打包后的可执行文件发送至区块链节点进行上链处理。
在一种可能的实现方式中,将打包后的可执行文件发送至区块链中进行上链处理,可以包括如下流程:基于打包后的可执行文件,生成文件上链请求;对文件上链请求进行签名处理,得到签名后的文件上链请求;将签名后的文件上链请求发送至区块链节点。
S608:区块链节点对可执行文件进行上链处理。
在一种可能的实现方式中,区块链节点在接收到签名后的文件上链请求后,可以获取代码编译器的公钥,并采用代码编译器的公钥对签名后的文件上链请求进行验签处理,若验签通过,则可以解析文件上链请求中的可执行文件,并对可执行文件进行上链处理。可选的,区块链节点还可以对代码编译器进行权限验证,具体地,区块链节点中配置有白名单列表,白名单列表中用于记录具备文件上链权限的至少一个设备的设备标识,若这些设备标识中包括代码编译器的标识,则可以确定对代码编译器的权限验证通过,即可触发执行对可执行文件的上链处理步骤;否则,对代码编译器的权限验证不通过,区块链节点可以删除该文件链上请求。
下面对可执行文件的上链处理过程进行详细说明:
1)将可执行文件进行区块链共识处理,具体地,可将可执行文件发送至区块链中其它各个区块链节点对该可执行文件共同执行区块链共识处理,并得到针对可执行文件的共识结果,共识结果可以包括共识通过或共识不通过。
2)其它区块链节点在接收到可执行文件后,会在区块链上验证可执行文件的完整性和可信性,并验证第三方代码文件的签名验证结果是否合法。其中,区块链节点验证第三方代码文件的签名验证结果是否合法包括:对编译链接节点本身的合法性进行验证、以及对编译链接节点所签名的验证结果是否合法进行验证。采用这种方式,可以在区块链上对签名验证结果进行验证,防止编译链接节点作弊,可进一步提高文件验证过程的可靠性。
3)当上述验证均通过,则可以确定对可执行文件的链上验证通过,完成对可执行文件的上链处理,并可将可执行文件写入至区块链中,作为区块链系统的共享数据进行存储。
S609:区块链节点向代码编译器返回可执行文件的上链结果。
其中,可执行文件的上链结果可以包括上链成功或上链失败。若上链结果为上链成功,则允许可执行文件在区块链上或者区块链下被执行;若上链结果为上链失败,则可执行文件不允许正常运行。举例来说,若可执行文件为合约文件,则在完成该合约文件的上链处理后,可以将合约文件对应的智能合约部署在区块链中;若可执行文件为业务文件,则在完成该业务文件的上链处理后,能够在区块链上或者区块链下均可运行该业务文件,可保证文件的安全性。
在一种可能的实现方式中,若可执行文件为合约文件,则在完成该合约文件的上链处理后,可以将合约文件对应的智能合约部署在区块链中,后续可在区块链中调用部署好的智能合约执行合约交易。请参见图7,图7是本申请实施例提供的一种执行智能合约的流程示意图。如图7所示,调用智能合约执行任一合约交易的过程可以包括如下步骤S1-S6:
S1、触发合约。
具体实现时,区块链节点可以接收客户端发送的交易请求,然后调用该交易请求需执行的目标交易相匹配的智能合约,例如目标交易为资产交易,则智能合约可以为资产处理合约。
S2、分析交易。
具体实现时,区块链节点可以解析目标交易的交易数据,得到合约调用地址以及合约名称,获取用于执行目标交易的智能合约(例如包括合约名、合约方法、以及合约输入等信息)。
S3、载入合约的存储信息和合约的字节码。
具体实现时,区块链节点从目标交易和状态数据库中获取相应的合约字节码和合约输入。
S4、执行合约。
具体实现时,智能合约的合约文件(即可执行文件)在区块链节点中执行,完成目标交易的业务逻辑,例如目标交易为资产交易,则调用的资产处理合约可完成相应的资产处理逻辑,并可得到交易执行结果。
S5、返回结果更新状态数据库。
具体实现时,区块链节点可将交易执行结果写回到状态数据库中,完成业务状态的更新。
S6、制作默克尔树树根,存储在区块中。
具体实现时,当待共识区块中的所有的交易数据都已执行时,系统会将状态数据库的当前状态的哈希摘要作为认证记录存储在区块链中。
通过上述方式,针对代码编译器所编译处理的可执行文件,可将可执行文件部署为链上的智能合约。然后当获取到链下交易请求时,可调用智能合约执行相应的合约交易,由于该智能合约的合约文件(即可执行文件)是通过完整性及安全性等可信验证的,因此可提高交易执行过程中的可靠性。
本申请实施例中,一方面,代码编译器在编译可执行文件的过程中,可执行文件需链接的第三方代码文件可以在链上进行完整性验证,以保证第三方代码文件的可信性和安全性;另一方面,若编译好的可执行文件为合约文件,则可以在链上部署该合约文件对应的智能合约,从而可调用智能合约来执行相应的合约交易;再一方面,基于区块链可追溯记录的特征,可在区块链中定位出异常交易及异常节点,以便于后续对异常节点进行安全审计,从而提高区块链交易的安全性和可靠性。
下面提供了本申请实施例的装置,接下来结合上述本申请实施例提供的基于区块链的文件编译方案,对本申请实施例的相关装置进行相应介绍。
请参见图8,图8是本申请实施例提供的一种基于区块链的文件编译装置的结构示意图。如图8所示,该基于区块链的文件编译装置800可应用于前述实施例中所提及的代码编译器。具体来说,基于区块链的文件编译装置800可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该文件编译装置800为一个应用软件;该文件编译装置800可以用于执行本申请实施例提供的基于区块链的文件编译方法中的相应步骤。具体实现时,该基于区块链的文件编译装置800具体可以包括:
获取单元801,用于获取第三方代码文件的摘要数据,第三方代码文件是指代码编译器在编译可执行文件的过程中,从第三方代码库中链接的代码文件;
发送单元802,用于将第三方代码文件的摘要数据发送至区块链中的编译链接节点,以使编译链接节点在区块链上基于第三方代码文件的摘要数据对第三方代码文件进行验证;
获取单元801,还用于若验证通过,则获取编译链接节点针对第三方代码文件的签名验证结果,签名验证结果用于指示第三方代码文件为经区块链验证通过的可信文件;
处理单元803,用于将签名验证结果打包至可执行文件中,得到打包后的可执行文件;
处理单元803,还用于将打包后的可执行文件发送至区块链中进行上链处理;其中,完成上链处理后的可执行文件允许被执行。
在一种可能的实现方式中,代码编译器中配置有代码库完整性校验模块;获取单元801获取第三方代码文件的摘要数据,用于执行以下操作:
调用代码库完整性校验模块,获取第三方代码文件的版本号;
采用哈希算法对第三方代码文件的版本号进行哈希运算,得到第三方代码文件的哈希值;
将第三方代码文件的哈希值,作为第三方代码文件的摘要数据。
在一种可能的实现方式中,发送单元802将第三方代码文件的摘要数据发送至区块链中的编译链接节点,用于执行以下操作:
在区块链中确定第三方代码文件对应的编译链接节点,并获取编译链接节点的节点标识;
根据编译链接节点的节点标识、以及第三方代码文件的摘要数据,生成针对第三方代码文件的代码验证请求;
将代码验证请求发送至区块链中的编译链接节点,代码验证请求用于触发编译链接节点对第三方代码文件进行验证。
在一种可能的实现方式中,根据编译链接节点的节点标识、以及第三方代码文件的摘要数据,生成针对第三方代码文件的代码验证请求之后,处理单元803还用于执行以下操作:
采用代码编译器的私钥对代码验证请求进行签名处理;
将签名后的代码验证请求发送至区块链中的编译链接节点。
在一种可能的实现方式中,将第三方代码文件的摘要数据发送至区块链中的编译链接节点之后,处理单元803还用于执行以下操作:
接收编译链接节点发送的反馈数据,反馈数据至少包括:验证结果指示字段、以及签名字段;
对反馈数据的验证结果指示字段进行解析处理,得到编译链接节点对第三方代码文件的验证结果;
若验证结果为验证通过,则从反馈数据的签名字段中获取编译链接节点的签名验证结果。
在一种可能的实现方式中,打包后的可执行文件按照多个字段进行分段存储,多个字段至少包括第一字段和第二字段;处理单元803将签名验证结果打包至可执行文件中,得到打包后的可执行文件,用于执行以下操作:
将签名验证结果填充为第一字段的字段数据;以及,
将可执行文件作填充为第二字段的字段数据;
基于数据填充后的第一字段和第二字段,生成打包后的可执行文件。
在一种可能的实现方式中,发送单元802将打包后的可执行文件发送至区块链中进行上链处理,用于执行以下操作:
基于打包后的可执行文件,生成文件上链请求;
对文件上链请求进行签名处理,得到签名后的文件上链请求;
将签名后的文件上链请求发送至区块链中的目标区块链节点,触发目标区块链节点对可执行文件进行验证处理并生成上链结果;
接收目标区块链节点返回的上链结果,上链结果包括上链成功或上链失败。
本申请实施例中,可获取第三方代码文件的摘要数据,第三方代码文件是指代码编译器在编译可执行文件的过程中,从第三方代码库中链接的代码文件;将第三方代码文件的摘要数据发送至区块链中的编译链接节点,以使编译链接节点在区块链上基于第三方代码文件的摘要数据对第三方代码文件进行验证;若验证通过,则获取编译链接节点针对第三方代码文件的签名验证结果,签名验证结果用于指示第三方代码文件为经区块链验证通过的可信文件;将签名验证结果打包至可执行文件中,得到打包后的可执行文件,并将打包后的可执行文件发送至区块链中进行上链处理;其中,完成上链处理后的可执行文件允许被执行。由此可见,在编译可执行文件的过程中,可以在区块链中对第三方代码文件进行验证,当确定对第三方代码文件的验证通过后,可将签名验证结果打包至可执行文件进行上链处理,以确保第三方代码文件是通过链上安全验证的可信文件,从而提高可执行文件的可靠性和安全性。
请参见图9,图9是本申请实施例提供的另一种基于区块链的文件编译装置的结构示意图。如图9所示,该基于区块链的文件编译装置900可应用于前述实施例中所提及的编译链接节点。具体来说,基于区块链的文件编译装置900可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该文件编译装置900为一个应用软件;该文件编译装置900可以用于执行本申请实施例提供的基于区块链的文件编译方法中的相应步骤。具体实现时,该基于区块链的文件编译装置900具体可以包括:
接收单元901,用于接收代码编译器发送的代码验证请求,代码验证请求中包括待验证的第三方代码文件的摘要数据,第三方代码文件是指代码编译器在编译可执行文件的过程中,需从第三方代码库中链接的代码文件;
处理单元902,用于基于第三方代码文件的摘要数据,对第三方代码文件进行验证;
处理单元902,还用于若验证通过,则对第三方代码文件进行签名处理,得到签名验证结果;
发送单元903,用于将签名验证结果发送至代码编译器,以使代码编译器将签名验证结果打包至可执行文件中,并将打包后的可执行文件进行上链处理;其中,完成上链处理后的可执行文件允许被执行。
在一种可能的实现方式中,代码验证请求是由代码编译器对第三方代码文件的摘要数据进行签名后生成的;接收代码编译器发送的代码验证请求之后,处理单元902还用于执行以下操作:
解析代码验证请求,得到代码编译器的签名数据;
基于签名数据,对代码编译器进行鉴权处理,鉴权处理包括:签名验证处理、权限验证处理中的任一种或多种;
若对代码编译器的鉴权通过,则触发执行基于第三方代码文件的摘要数据,对第三方代码文件进行验证的步骤。
在一种可能的实现方式中,处理单元902基于第三方代码文件的摘要数据,对第三方代码文件进行验证,用于执行以下操作:
调用代码验证合约,获取第三方代码文件在区块链中记录的版本号;
对区块链中记录的版本号进行哈希运算,得到第三方代码文件的摘要哈希;
将摘要哈希与摘要数据进行比对,若摘要哈希与摘要数据相同,则确定第三方代码文件的验证结果为验证通过。
在一种可能的实现方式中,处理单元902还用于执行以下操作:
若摘要哈希与摘要数据不相同,则在区块链中获取与第三方代码文件相关联的关联交易数据,关联交易数据包含至少一个交易;
对关联交易数据进行数据分析,并根据数据分析结果确定出异常交易;
按照异常交易在区块链中定位出异常节点,并对异常节点进行安全审计处理。
本申请实施例中,编译链接节点能够接收代码编译器发送的第三方代码文件的摘要数据,并可基于第三方代码文件的摘要数据在区块链中对第三方代码文件进行可信验证,即可以在区块链上验证第三方代码文件的正确性、完整性、以及安全性,从而可以保证代码编译器从第三方代码库中所链接的第三方代码文件的可信度,并在对第三方代码文件的验证通过后生成针对第三方代码文件的签名验证结果,后续代码编译器可将第三方代码文件的签名验证结果打包至可执行文件中进行上链处理,从而保证了第三方代码文件的可信度,从而提高了第三方代码文件的安全性及可靠性。
请参见图10,图10是本申请实施例提供的一种计算机设备的结构示意图。该计算机设备1000用于执行前述方法实施例中代码编译器或编译链接节点所执行的步骤,该计算机设备1000包括:一个或多个处理器1001;一个或多个输入设备1002,一个或多个输出设备1003和存储器1004。上述处理器1001、输入设备1002、输出设备1003和存储器1004通过总线1005连接。其中,处理器1001(或称CPU(Central Processing Unit,中央处理器))是计算机设备的处理核心,该处理器1001适于实现一条或多条程序指令,具体适于加载并执行一条或多条程序指令从而实现上述的基于区块链的文件编译方法的流程。另外,存储器1004可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器;可选的还可以是至少一个位于远离前述处理器的存储器。存储器1004提供存储空间,该存储空间用于存储计算机设备的操作系统。并且,在该存储空间中还用于存储计算机程序,该计算机程序包括程序指令,且该程序指令适于被处理器调用1001并执行,以用来执行本申请中基于区块链的文件编译方法的各步骤。
在一个可行的实施例中,当计算机设备1000为代码编译器时,处理器1001用于调用存储器1004存储的程序指令,用于执行以下操作:
获取第三方代码文件的摘要数据,第三方代码文件是指代码编译器在编译可执行文件的过程中,从第三方代码库中链接的代码文件;
将第三方代码文件的摘要数据发送至区块链中的编译链接节点,以使编译链接节点在区块链上基于第三方代码文件的摘要数据对第三方代码文件进行验证;
若验证通过,则获取编译链接节点针对第三方代码文件的签名验证结果,签名验证结果用于指示第三方代码文件为经区块链验证通过的可信文件;
将签名验证结果打包至可执行文件中,得到打包后的可执行文件;
将打包后的可执行文件发送至区块链中进行上链处理;其中,完成上链处理后的可执行文件允许被执行。
在一种可能的实现方式中,代码编译器中配置有代码库完整性校验模块;处理器1001获取第三方代码文件的摘要数据,用于执行以下操作:
调用代码库完整性校验模块,获取第三方代码文件的版本号;
采用哈希算法对第三方代码文件的版本号进行哈希运算,得到第三方代码文件的哈希值;
将第三方代码文件的哈希值,作为第三方代码文件的摘要数据。
在一种可能的实现方式中,处理器1001将第三方代码文件的摘要数据发送至区块链中的编译链接节点,用于执行以下操作:
在区块链中确定第三方代码文件对应的编译链接节点,并获取编译链接节点的节点标识;
根据编译链接节点的节点标识、以及第三方代码文件的摘要数据,生成针对第三方代码文件的代码验证请求;
将代码验证请求发送至区块链中的编译链接节点,代码验证请求用于触发编译链接节点对第三方代码文件进行验证。
在一种可能的实现方式中,根据编译链接节点的节点标识、以及第三方代码文件的摘要数据,生成针对第三方代码文件的代码验证请求之后,处理器1001还用于执行以下操作:
采用代码编译器的私钥对代码验证请求进行签名处理;
将签名后的代码验证请求发送至区块链中的编译链接节点。
在一种可能的实现方式中,将第三方代码文件的摘要数据发送至区块链中的编译链接节点之后,处理器1001还用于执行以下操作:
接收编译链接节点发送的反馈数据,反馈数据至少包括:验证结果指示字段、以及签名字段;
对反馈数据的验证结果指示字段进行解析处理,得到编译链接节点对第三方代码文件的验证结果;
若验证结果为验证通过,则从反馈数据的签名字段中获取编译链接节点的签名验证结果。
在一种可能的实现方式中,打包后的可执行文件按照多个字段进行分段存储,多个字段至少包括第一字段和第二字段;处理器1001将签名验证结果打包至可执行文件中,得到打包后的可执行文件,用于执行以下操作:
将签名验证结果填充为第一字段的字段数据;以及,
将可执行文件作填充为第二字段的字段数据;
基于数据填充后的第一字段和第二字段,生成打包后的可执行文件。
在一种可能的实现方式中,处理器1001将打包后的可执行文件发送至区块链中进行上链处理,用于执行以下操作:
基于打包后的可执行文件,生成文件上链请求;
对文件上链请求进行签名处理,得到签名后的文件上链请求;
将签名后的文件上链请求发送至区块链中的目标区块链节点,触发目标区块链节点对可执行文件进行验证处理并生成上链结果;
接收目标区块链节点返回的上链结果,上链结果包括上链成功或上链失败。
在该实施例中,代码编译器可获取第三方代码文件的摘要数据,第三方代码文件是指代码编译器在编译可执行文件的过程中,从第三方代码库中链接的代码文件;将第三方代码文件的摘要数据发送至区块链中的编译链接节点,以使编译链接节点在区块链上基于第三方代码文件的摘要数据对第三方代码文件进行验证;若验证通过,则获取编译链接节点针对第三方代码文件的签名验证结果,签名验证结果用于指示第三方代码文件为经区块链验证通过的可信文件;将签名验证结果打包至可执行文件中,得到打包后的可执行文件,并将打包后的可执行文件发送至区块链中进行上链处理;其中,完成上链处理后的可执行文件允许被执行。由此可见,在编译可执行文件的过程中,可以在区块链中对第三方代码文件进行验证,当确定对第三方代码文件的验证通过后,可将签名验证结果打包至可执行文件进行上链处理,以确保第三方代码文件是通过链上安全验证的可信文件,从而提高可执行文件的可靠性和安全性。
在另一个可行的实施例中,当计算机设备1000为编译链接节点时,处理器1001用于调用存储器1004存储的程序指令,用于执行以下操作:
接收代码编译器发送的代码验证请求,代码验证请求中包括待验证的第三方代码文件的摘要数据,第三方代码文件是指代码编译器在编译可执行文件的过程中,需从第三方代码库中链接的代码文件;
基于第三方代码文件的摘要数据,对第三方代码文件进行验证;
若验证通过,则对第三方代码文件进行签名处理,得到签名验证结果;
将签名验证结果发送至代码编译器,以使代码编译器将签名验证结果打包至可执行文件中,并将打包后的可执行文件进行上链处理;其中,完成上链处理后的可执行文件允许被执行。
在一种可能的实现方式中,代码验证请求是由代码编译器对第三方代码文件的摘要数据进行签名后生成的;接收代码编译器发送的代码验证请求之后,处理器1001还用于执行以下操作:
解析代码验证请求,得到代码编译器的签名数据;
基于签名数据,对代码编译器进行鉴权处理,鉴权处理包括:签名验证处理、权限验证处理中的任一种或多种;
若对代码编译器的鉴权通过,则触发执行基于第三方代码文件的摘要数据,对第三方代码文件进行验证的步骤。
在一种可能的实现方式中,处理器1001基于第三方代码文件的摘要数据,对第三方代码文件进行验证,用于执行以下操作:
调用代码验证合约,获取第三方代码文件在区块链中记录的版本号;
对区块链中记录的版本号进行哈希运算,得到第三方代码文件的摘要哈希;
将摘要哈希与摘要数据进行比对,若摘要哈希与摘要数据相同,则确定第三方代码文件的验证结果为验证通过。
在一种可能的实现方式中,处理器1001还用于执行以下操作:
若摘要哈希与摘要数据不相同,则在区块链中获取与第三方代码文件相关联的关联交易数据,关联交易数据包含至少一个交易;
对关联交易数据进行数据分析,并根据数据分析结果确定出异常交易;
按照异常交易在区块链中定位出异常节点,并对异常节点进行安全审计处理。
在该实施例中,编译链接节点能够接收代码编译器发送的第三方代码文件的摘要数据,并可基于第三方代码文件的摘要数据在区块链中对第三方代码文件进行可信验证,即可以在区块链上验证第三方代码文件的正确性、完整性、以及安全性,从而可以保证代码编译器从第三方代码库中所链接的第三方代码文件的可信度,并在对第三方代码文件的验证通过后生成针对第三方代码文件的签名验证结果,后续代码编译器可将第三方代码文件的签名验证结果打包至可执行文件中进行上链处理,从而保证了第三方代码文件的可信度,从而提高了第三方代码文件的安全性及可靠性。
此外,这里需要指出的是:本申请实施例还提供了一种计算机存储介质,且计算机存储介质中存储有计算机程序,且该计算机程序包括程序指令,当处理器执行上述程序指令时,能够执行前文所对应实施例中的方法,因此,这里将不再进行赘述。对于本申请所涉及的计算机存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。作为示例,程序指令可以被部署在一个计算机设备上,或者在位于一个地点的多个计算机设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行。
根据本申请的一个方面,本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备可以执行前文所对应实施例中的方法,因此,这里将不再进行赘述。
本领域普通技术对象可以意识到,结合本申请中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术对象可以对每个特定的应用,使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程设备。计算机指令可以存储在计算机可读存储介质中,或者通过计算机可读存储介质进行传输。计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如,同轴电缆、光纤、数字线(DSL))或无线(例如,红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据处理设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如,固态硬盘(Solid State Disk,SSD))等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (16)
1.一种基于区块链的文件编译方法,其特征在于,包括:
获取第三方代码文件的摘要数据,所述第三方代码文件是指代码编译器在编译可执行文件的过程中,从第三方代码库中链接的代码文件;
将所述第三方代码文件的摘要数据发送至区块链中的编译链接节点,以使所述编译链接节点在所述区块链上基于所述第三方代码文件的摘要数据对所述第三方代码文件进行验证;
若验证通过,则获取所述编译链接节点针对所述第三方代码文件的签名验证结果,所述签名验证结果用于指示所述第三方代码文件为经所述区块链验证通过的可信文件;
将所述签名验证结果打包至所述可执行文件中,得到打包后的可执行文件;
将所述打包后的可执行文件发送至所述区块链中进行上链处理;其中,完成上链处理后的所述可执行文件允许被执行。
2.如权利要求1所述的方法,其特征在于,所述代码编译器中配置有代码库完整性校验模块;所述获取第三方代码文件的摘要数据,包括:
调用所述代码库完整性校验模块,获取所述第三方代码文件的版本号;
采用哈希算法对所述第三方代码文件的版本号进行哈希运算,得到所述第三方代码文件的哈希值;
将所述第三方代码文件的哈希值,作为所述第三方代码文件的摘要数据。
3.如权利要求1所述的方法,其特征在于,所述将所述第三方代码文件的摘要数据发送至区块链中的编译链接节点,包括:
在所述区块链中确定所述第三方代码文件对应的编译链接节点,并获取所述编译链接节点的节点标识;
根据所述编译链接节点的节点标识、以及所述第三方代码文件的摘要数据,生成针对所述第三方代码文件的代码验证请求;
将所述代码验证请求发送至区块链中的编译链接节点,所述代码验证请求用于触发所述编译链接节点对所述第三方代码文件进行验证。
4.如权利要求3所述的方法,其特征在于,所述根据所述编译链接节点的节点标识、以及所述第三方代码文件的摘要数据,生成针对所述第三方代码文件的代码验证请求之后,还包括:
采用代码编译器的私钥对所述代码验证请求进行签名处理;
将签名后的所述代码验证请求发送至区块链中的编译链接节点。
5.如权利要求1所述的方法,其特征在于,所述将所述第三方代码文件的摘要数据发送至区块链中的编译链接节点之后,还包括:
接收所述编译链接节点发送的反馈数据,所述反馈数据至少包括:验证结果指示字段、以及签名字段;
对所述反馈数据的验证结果指示字段进行解析处理,得到所述编译链接节点对所述第三方代码文件的验证结果;
若所述验证结果为验证通过,则从所述反馈数据的签名字段中获取所述编译链接节点的签名验证结果。
6.如权利要求5所述的方法,其特征在于,所述打包后的可执行文件按照多个字段进行分段存储,所述多个字段至少包括第一字段和第二字段;所述将所述签名验证结果打包至所述可执行文件中,得到打包后的可执行文件,包括:
将所述签名验证结果填充为所述第一字段的字段数据;以及,
将所述可执行文件作填充为所述第二字段的字段数据;
基于数据填充后的所述第一字段和第二字段,生成打包后的可执行文件。
7.如权利要求1所述的方法,其特征在于,所述将所述打包后的可执行文件发送至所述区块链中进行上链处理,包括:
基于所述打包后的可执行文件,生成文件上链请求;
对所述文件上链请求进行签名处理,得到签名后的文件上链请求;
将所述签名后的文件上链请求发送至区块链中的目标区块链节点,触发所述目标区块链节点对所述可执行文件进行验证处理并生成上链结果;
接收所述目标区块链节点返回的上链结果,所述上链结果包括上链成功或上链失败。
8.一种基于区块链的文件编译方法,其特征在于,包括:
接收代码编译器发送的代码验证请求,所述代码验证请求中包括待验证的第三方代码文件的摘要数据,所述第三方代码文件是指所述代码编译器在编译可执行文件的过程中,需从第三方代码库中链接的代码文件;
基于所述第三方代码文件的摘要数据,对所述第三方代码文件进行验证;
若验证通过,则对所述第三方代码文件进行签名处理,得到签名验证结果;
将所述签名验证结果发送至所述代码编译器,以使所述代码编译器将所述签名验证结果打包至可执行文件中,并将打包后的可执行文件进行上链处理;其中,完成上链处理后的所述可执行文件允许被执行。
9.如权利要求8所述的方法,其特征在于,所述代码验证请求是由所述代码编译器对所述第三方代码文件的摘要数据进行签名后生成的;所述接收代码编译器发送的代码验证请求之后,还包括:
解析所述代码验证请求,得到所述代码编译器的签名数据;
基于所述签名数据,对所述代码编译器进行鉴权处理,所述鉴权处理包括:签名验证处理、权限验证处理中的任一种或多种;
若对所述代码编译器的鉴权通过,则触发执行所述基于所述第三方代码文件的摘要数据,对所述第三方代码文件进行验证的步骤。
10.如权利要求9所述的方法,其特征在于,所述基于所述第三方代码文件的摘要数据,对所述第三方代码文件进行验证,包括:
调用代码验证合约,获取所述第三方代码文件在区块链中记录的版本号;
对所述区块链中记录的版本号进行哈希运算,得到所述第三方代码文件的摘要哈希;
将所述摘要哈希与所述摘要数据进行比对,若所述摘要哈希与所述摘要数据相同,则确定所述第三方代码文件的验证结果为验证通过。
11.如权利要求10所述的方法,其特征在于,所述方法还包括:
若所述摘要哈希与所述摘要数据不相同,则在区块链中获取与所述第三方代码文件相关联的关联交易数据,所述关联交易数据包含至少一个交易;
对所述关联交易数据进行数据分析,并根据数据分析结果确定出异常交易;
按照所述异常交易在区块链中定位出异常节点,并对所述异常节点进行安全审计处理。
12.一种基于区块链的文件编译装置,其特征在于,包括:
获取单元,用于获取第三方代码文件的摘要数据,所述第三方代码文件是指代码编译器在编译可执行文件的过程中,从第三方代码库中链接的代码文件;
发送单元,用于将所述第三方代码文件的摘要数据发送至区块链中的编译链接节点,以使所述编译链接节点在所述区块链上基于所述第三方代码文件的摘要数据对所述第三方代码文件进行验证;
获取单元,还用于若验证通过,则获取所述编译链接节点针对第三方代码文件的签名验证结果,所述签名验证结果用于指示所述第三方代码文件为经所述区块链验证通过的可信文件;
处理单元,用于将所述签名验证结果打包至所述可执行文件中,得到打包后的可执行文件,并将所述打包后的可执行文件发送至所述区块链中进行上链处理;其中,完成上链处理后的所述可执行文件允许被执行。
13.一种基于区块链的文件编译装置,其特征在于,包括:
接收单元,用于接收代码编译器发送的代码验证请求,所述代码验证请求中包括待验证的第三方代码文件的摘要数据,所述第三方代码文件是指所述代码编译器在编译可执行文件的过程中,需从第三方代码库中链接的代码文件;
处理单元,用于基于所述第三方代码文件的摘要数据,对所述第三方代码文件进行验证;
所述处理单元,还用于若验证通过,则对所述第三方代码文件进行签名处理,得到签名验证结果;
发送单元,用于将所述签名验证结果发送至所述代码编译器,以使所述代码编译器将所述签名验证结果打包至可执行文件中,并将打包后的可执行文件进行上链处理;其中,完成上链处理后的所述可执行文件允许被执行。
14.一种计算机设备,其特征在于,包括:存储装置和处理器;
存储器,所述存储器中存储一条或多条计算机程序;
处理器,用于加载所述一条或多条计算机程序实现如权利要求1-7中任一项所述的基于区块链的文件编译方法,或实现如权利要求8-11中任一项所述的基于区块链的文件编译方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于被处理器加载并执行如权利要求1-7中任一项所述的基于区块链的文件编译方法,或执行如权利要求8-11中任一项所述的基于区块链的文件编译方法。
16.一种计算机程序产品,其特征在于,所述计算程序产品包括计算机程序,所述计算机程序适于被处理器加载并执行如权利要求1-7中任一项所述的基于区块链的文件编译方法,或执行如权利要求8-11中任一项所述的基于区块链的文件编译方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311304572.4A CN117032727B (zh) | 2023-10-10 | 2023-10-10 | 基于区块链的文件编译方法、装置、设备、介质及产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311304572.4A CN117032727B (zh) | 2023-10-10 | 2023-10-10 | 基于区块链的文件编译方法、装置、设备、介质及产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117032727A true CN117032727A (zh) | 2023-11-10 |
CN117032727B CN117032727B (zh) | 2024-02-09 |
Family
ID=88626739
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311304572.4A Active CN117032727B (zh) | 2023-10-10 | 2023-10-10 | 基于区块链的文件编译方法、装置、设备、介质及产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117032727B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101137963A (zh) * | 2005-04-07 | 2008-03-05 | 微软公司 | 用于验证可执行文件可信度的系统和方法 |
CN109213501A (zh) * | 2018-09-27 | 2019-01-15 | 上海点融信息科技有限责任公司 | 在区块链网络中安装智能合约的方法、装置及存储介质 |
US20200076613A1 (en) * | 2018-09-04 | 2020-03-05 | Red Hat, Inc. | Signature verification using blockchain |
CN115048630A (zh) * | 2022-06-22 | 2022-09-13 | 中银金融科技有限公司 | 应用程序的完整性校验方法及装置、存储介质及电子设备 |
CN115374474A (zh) * | 2022-08-22 | 2022-11-22 | 杭州无上科技有限公司 | 一种基于区块链技术的文件编号系统 |
-
2023
- 2023-10-10 CN CN202311304572.4A patent/CN117032727B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101137963A (zh) * | 2005-04-07 | 2008-03-05 | 微软公司 | 用于验证可执行文件可信度的系统和方法 |
US20200076613A1 (en) * | 2018-09-04 | 2020-03-05 | Red Hat, Inc. | Signature verification using blockchain |
CN109213501A (zh) * | 2018-09-27 | 2019-01-15 | 上海点融信息科技有限责任公司 | 在区块链网络中安装智能合约的方法、装置及存储介质 |
CN115048630A (zh) * | 2022-06-22 | 2022-09-13 | 中银金融科技有限公司 | 应用程序的完整性校验方法及装置、存储介质及电子设备 |
CN115374474A (zh) * | 2022-08-22 | 2022-11-22 | 杭州无上科技有限公司 | 一种基于区块链技术的文件编号系统 |
Also Published As
Publication number | Publication date |
---|---|
CN117032727B (zh) | 2024-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110493007B (zh) | 一种基于区块链的信息验证方法、装置、设备及存储介质 | |
US20230318836A1 (en) | Computer-implemented systems and methods for linking a blockchain to a digital twin | |
CN113691597B (zh) | 区块链合约部署方法、装置、设备以及存储介质 | |
CN112686671B (zh) | 基于区块链的智能合约部署方法、装置、设备以及介质 | |
CN108683502B (zh) | 一种数字签名验证方法、介质及设备 | |
CN113221166A (zh) | 一种获取区块链数据的方法、装置、电子设备及存储介质 | |
CN112700246B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
EP3790221A1 (en) | Automated hash validation | |
US20210304191A1 (en) | System and method for integration and validation | |
CN110674531A (zh) | 基于区块链的居住信息管理方法、装置、服务器及介质 | |
CN111817859A (zh) | 基于零知识证明的数据共享方法、装置、设备及存储介质 | |
CN111045722A (zh) | 智能合约打包方法、装置、系统、计算机设备及存储介质 | |
CN110968899B (zh) | 一种基于区块链的数据分块确认方法、装置、设备和介质 | |
CN106888094B (zh) | 一种签名方法及服务器 | |
CN117032727B (zh) | 基于区块链的文件编译方法、装置、设备、介质及产品 | |
CN108052842B (zh) | 签名数据的存储、验证方法及装置 | |
US11349670B1 (en) | Automated hash validation | |
CN116975901A (zh) | 基于区块链的身份验证方法、装置、设备、介质及产品 | |
CN112613063B (zh) | 一种数据核验系统构建方法及装置 | |
WO2020228564A1 (zh) | 一种应用服务方法与装置 | |
CN117040930B (zh) | 区块链网络的资源处理方法、装置、产品、设备和介质 | |
CN117335976A (zh) | 基于区块链的密钥处理方法、装置、设备、介质及产品 | |
CN117574320B (zh) | 数据处理方法、装置、计算机可读介质及电子设备 | |
CN101084487A (zh) | 用于保证对不安全数据存储设备的查询的结果的新鲜度的方法 | |
US20240126927A1 (en) | Ui/ux development system applied with blockchain for preventing forgery/falsification and forgery/falsification verification method using the same |
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 |