CN109299587A - 基于go语言的算法保护方法、装置、设备及存储介质 - Google Patents
基于go语言的算法保护方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN109299587A CN109299587A CN201811055763.0A CN201811055763A CN109299587A CN 109299587 A CN109299587 A CN 109299587A CN 201811055763 A CN201811055763 A CN 201811055763A CN 109299587 A CN109299587 A CN 109299587A
- Authority
- CN
- China
- Prior art keywords
- algorithm
- intelligent contract
- file
- language
- dynamic
- 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.)
- Withdrawn
Links
- 238000004422 calculation algorithm Methods 0.000 title claims abstract description 202
- 238000000034 method Methods 0.000 title claims abstract description 35
- 230000006870 function Effects 0.000 claims abstract description 25
- 238000004590 computer program Methods 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 abstract description 5
- 238000012986 modification Methods 0.000 abstract description 4
- 230000004048 modification Effects 0.000 abstract description 4
- 238000012545 processing Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000007613 environmental effect Effects 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 238000012827 research and development Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000008092 positive effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
Classifications
-
- 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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于go语言的算法保护方法,属于信息安全领域。一种基于go语言的算法保护方法,用于保护智能合约中的算法,包括以下步骤:采用go语言编写算法库源文件;将算法库源文件进行编译,生成相应的算法动态库文件和该算法动态库文件的API函数原型;将智能合约和算法动态库文件一同上传至docker中,部署并初始化智能合约;智能合约采用go语言编写,智能合约中关于算法部分通过调用算法动态库文件的API接口实现;部署包括在智能合约中指定算法动态库文件在docker中的调用路径;初始化包括根据调用路径动态调用算法动态库的API接口以加载算法动态库。本发明无需对智能合约的原有部署流程做任何修改,易于实现。
Description
技术领域
本发明涉及信息安全领域,涉及一种基于go语言的算法保护方法、装置、设备及存储介质。
背景技术
智能合约是一种数字形式的合约,也就是一段由计算机语言撰写并实现的可执行代码。
随着区块链应用的普及,智能合约的使用范围变得越来越广泛,很多智能合约中,都会用到第三方的算法库来完成某种既定的、具体的、业界公认而无可争议的功能;而这些第三方的算法库,却常常因为第三方公司对于自身知识产权的保护而不便于对外公开其源码。
以隐私保护方面被大量应用的零知识证明算法库为例,零知识证明算法库的功能是既定而确切的,即“我不需要亮出我的答案,但是我可以向外界证明我知道答案”。既便于对于这样业界非常确定的应用算法库,两家不同的公司实现的算法效率可能差距100倍以上甚至更大。
综上描述,很多商业运作的公司对于智能合约上不公开自己核心算法源码的需求是迫切的。但是,目前区块链网络中,部署智能合约,必须将智能合约的源码直接上传到智能合约的运行环境中,进行安装和初始化,在这个过程中暴露智能合约的源码是必然的。
发明内容
本发明要解决的技术问题是为了克服现有技术中无法在区块链中保护算法源码的问题,提出了一种基于go语言的算法保护方法、装置、设备及存储介质,利用go语言v1.8以上的版本可引入并支持动态连接库的新特性,将需要知识产权保护的核心代码独立到动态连接库中,以隐藏算法源代码的目的。
本发明是通过下述技术方案来解决上述技术问题:
一种基于go语言的算法保护方法,用于保护智能合约中的算法,包括以下步骤:
采用go语言编写算法库源文件;
将所述算法库源文件进行编译,生成相应的算法动态库文件和该算法动态库文件的API函数原型;
将智能合约和算法动态库文件一同上传至docker中,部署并初始化所述智能合约;所述部署包括在智能合约中指定所述算法动态库文件在docker中的调用路径;所述初始化包括根据所述调用路径动态调用所述算法动态库的API接口以加载所述算法动态库;
所述智能合约采用go语言编写,所述智能合约中关于算法部分采用所述算法动态库文件的API接口调用代码撰写,当所述智能合约执行到所述调用代码时,所述智能合约通过所述API接口载入所述算法动态库文件,然后由所述算法动态库文件主动执行。
优选地,所述算法库为零知识证明算法库,所述go语言版本为v1.8以上版本。
优选地,生成的所述算法动态库文件为*.so的文件。
优选地,所述在智能合约中指定所述算法动态库文件在docker中的调用路径,是指在智能合约中指定所述*.so的文件在docker中的路径,以使得所述智能合约在加载和执行时可以查询到所述*.so的文件。
优选地,所述部署包括以下步骤:
通过开源区块链分布式账本自身提供的工具,将所述智能合约的源码加载到开源区块链分布式账本提供的工具环境中进行编译,以得到编译后的智能合约的可执行文件;
将所述编译后的智能合约的可执行文件加载到Docker中。
优选地,所述智能合约的执行包括以下步骤:
前端应用程序发起调用智能合约的请求至相应的背书节点;
所述背书节点通过gRPC连接所述智能合约的可执行文件,使得所述智能合约被执行;
当执行到所述智能合约中关于算法部分时,通过调用所述算法动态库文件的API接口完成功能运算;
所述智能合约的执行结果通过所述背书节点返回给所述前端应用程序。
本发明还公开了一种电子装置,所述电子装置上存储有基于go语言的算法保护系统,所述基于go语言的算法保护系统包括:
算法库源文件,所述算法库源文件采用go语言编码;
编译模块,用于将所述算法库源文件进行编译,生成相应的算法动态库文件和该算法动态库文件的API函数原型;
加载模块,用于将智能合约和算法动态库文件一同上传至docker中,部署并初始化所述智能合约;所述部署包括在智能合约中指定所述算法动态库文件在docker中的调用路径;所述初始化包括根据所述调用路径动态调用所述算法动态库的API接口以加载所述算法动态库;所述智能合约采用go语言编写,所述智能合约中关于算法部分采用所述算法动态库文件的API接口调用代码撰写,当所述智能合约执行到所述调用代码时,所述智能合约通过所述API接口载入所述算法动态库文件,然后由所述算法动态库文件主动执行。
优选地,所述加载模块进一步包括以下子模块:
上传子模块,用于将智能合约和算法动态库文件一同上传至docker中;
部署子模块,用于通过开源区块链分布式账本自身提供的工具,将所述智能合约的源码加载到开源区块链分布式账本提供的工具环境中进行编译,以得到编译后的智能合约的可执行文件,并将所述编译后的智能合约的可执行文件加载到Docker中;
初始化子模块,用于根据所述调用路径动态调用所述算法动态库的API接口以加载所述算法动态库。
本发明还公开了一种计算机设备,包括存储器和处理器,所述存储器上存储有可被所述处理器执行的基于go语言的算法保护系统,所述系统被所述处理器执行时实现前述中任一项所述的基于go语言的算法保护方法的步骤。
本发明还公开了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序指令,所述计算机程序指令可被至少一个处理器所执行,以使所述至少一个处理器执行前述中任一项所述的基于go语言的算法保护方法的步骤。
本发明的积极进步效果在于:
1)本发明将核心代码独立成算法库源文件,再通过API接口调用加载该算法库源文件,绕开了智能合约部署必须上传源码编译的环节,起到了保护核心算法知识产权的作用。
(2)本发明无需对智能合约的原有部署流程做任何修改,易于实现。
附图说明
图1示出了本发明基于go语言的算法保护方法实施例一的流程图;
图2示出了采用本发明基于go语言的算法保护方法后的智能合约的执行流程图;
图3示出了智能合约的传统执行流程图;
图4示出了本发明电子装置中基于go语言的算法保护系统第一实施例的程序模块示意图;
图5示出了本发明电子装置中基于go语言的算法保护系统第二实施例的程序模块示意图;
图6示出了本发明计算机设备一实施例的硬件架构示意图。
具体实施方式
下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。
首先,本发明提出一种基于go语言的算法保护方法,用于保护智能合约中的算法。
在实施例一中,如图1所示,所述的基于go语言的算法保护方法包括如下步骤:
步骤01:采用go语言编写算法库源文件。
这里所述go语言是由谷歌发布的第二款开源编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。
因为go语言v1.8以上版本的go语言插件系统才支持动态链接库的调用,因此本方法仅针对使用go语言v1.8以上版本编写的智能合约。
这里所述算法库主要是零知识证明算法库,所述零知识证明算法库在智能合约中的使用非常广泛,而通常这些算法库都是有第三方公司开发的。虽然零知识证明算法库的应用非常确定,但是通过不同的代码实现的零知识证明算法库在算法效率方面可能差距百倍甚至更大,因此对于零知识证明算法库源码的保护十分有必要。
由于这里所述智能合约采用go语言v1.8以上版本编写,因此所述算法库源文件也采用该版本的go语言编写。
步骤02:将所述算法库源文件进行编译,生成相应的算法动态库文件和该算法动态库文件的API函数原型。
所述编译就是把高级语言变成计算机可以识别的二进制语言,这里具体指将由go语言编写的源文件转换成二进制语言。
所述动态链接库英文为DLL,是Dynamic Link Library的缩写。DLL是一个包含可由多个程序同时使用的代码和数据的库。所述DLL是编译好的代码,与一般程序没什么大差别,只是它不能独立运行,需要程序调用。
所述动态链接库文件(简称动态库文件),是一种不可执行的二进制程序文件,它允许程序共享执行特殊任务所必需的代码和其他资源,程序可根据DLL文件中的指令打开、启用、查询、禁用和关闭驱动程序。
本步骤中产生的所述算法动态库文件就是动态链接库文件,具体为*.so的文件。
所述API函数原型是在编译的时候,通过设置编译选项而来的,即通过设置编译选项,设定要对外暴露哪些API,这些对外暴露的API才可以被外部程序调用,也就是这边所说的算法动态库文件的API函数原型。
步骤03:将智能合约和算法动态库文件一同上传至docker中,部署并初始化所述智能合约;所述部署包括在智能合约中指定所述算法动态库文件在docker中的调用路径;所述初始化包括根据所述调用路径动态调用所述算法动态库的API接口以加载所述算法动态库;
所述智能合约采用go语言编写,所述智能合约中关于算法部分采用所述算法动态库文件的API接口调用代码撰写,当所述智能合约执行到所述调用代码时,所述智能合约通过所述API接口载入所述算法动态库文件,然后由所述算法动态库文件主动执行。
API接口调用代码通常包括:定义个DLL句柄、自定义函数的指针和动态加载指令(包含有调用路径)等。
Docker是一个由GO语言写的程序运行的“容器”,是为开发者和系统管理员设计的,用来发布和运行分布式应用程序的一个开放性平台。
所述部署(特指软件部署)就是把开发的软件拿给用户去用,给用户配置环境(包括硬件、软件的安装、环境变量的设置等),让开发的软件能给用户正常使用的过程就是软件部署。
本步骤中所述在智能合约中指定所述算法动态库文件在docker中的调用路径,具体指在智能合约中指定所述*.so的文件在docker中的路径,以使得所述智能合约在加载和执行时可以找到所述*.so的文件。
在一实施例中,所述部署的具体步骤如下:
步骤031:通过开源区块链分布式账本自身提供的工具,将所述智能合约的源码加载到开源区块链分布式账本提供的工具环境中进行编译,以得到编译后的智能合约的可执行文件;
步骤032:将所述编译后的智能合约的可执行文件加载到Docker中。
在完成智能合约的初始化之后,相当于完成了算法动态库的加载,智能合约执行时可以直接执行算法动态库中的函数了。
下面以零知识证明的算法保护为例,对上述方法具体说明:
假设:公司X需要对自己研发的零知识证明算法进行保护,对外提供统一的API接口;公司Y和银行需要完成贷款的业务,公司Y需要在证明自己在区块链上的加密资产可以作为抵押(即抵押资产的价值应该大于等于贷款金额),同时,公司Y不希望同一个联盟中的公司Z知道自己的贷款金额以及自己的抵押资产的价值;此情况下,公司Y自身没有零知识证明算法库的开发能力,所以决定使用公司X提供的零知识算法;
1、公司X用go语言编写自己研发的零知识证明算法库,得到源文件A;
2、公司X对源文件A进行编译,得到动态库文件B及其API函数原型;
3、公司Y用go语言编写智能合约,对于需要计算资产范围的零知识证明处,直接调用公司X提供的动态库文件B的API接口;
4、公司Y将编写好的智能合约和动态库文件B一起上传至docker中,并对所述智能合约进行部署,通过部署在智能合约中指定动态库文件B在docker中的接口调用路径;
5、初始化所述智能合约,通过接口调用路径动态调用动态库文件B的API接口以加载动态库文件B。
在实施例二中,基于实施例一的基础上,如图2所示,所述智能合约经部署和初始化之后可以直接被执行,其执行具体包括以下步骤:
步骤A:前端应用程序发起调用智能合约的请求至相应的背书节点;
步骤B:所述背书节点通过gRPC连接所述智能合约的可执行文件,使得所述智能合约被执行;
步骤C:当执行到所述智能合约中关于算法部分时,通过调用所述算法动态库文件的API接口完成功能运算;
步骤D:所述智能合约的执行结果通过所述背书节点返回给所述前端应用程序。
所述智能合约中关于算法部分的源代码独立到动态连接库中后,该智能合约的调用相比传统的调用(如图3所示)多了库函数调用的步骤,但隐藏了算法源代码,起到保护该算法的目的。
其次,本发明提出了一种电子装置,所述电子装置上存储有基于go语言的算法保护系统20,所述系统20可以被分割为一个或者多个程序模块。
例如,图4示出了所述基于go语言的算法保护系统20第一实施例的程序模块示意图,该实施例中,所述系统20可以被分割为算法库源文件201、编译模块202和加载模块203。其中,本发明所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,比程序更适合于描述所述基于go语言的算法保护系统20在所述电子装置2中的执行过程。以下描述将具体介绍所述程序模块201-203的具体功能。
所述算法库源文件201采用go语言编码。
因为go语言v1.8以上版本的go语言插件系统才支持动态链接库的调用,因此本系统仅针对使用go语言v1.8以上版本编写的智能合约。
这里所述算法库主要是零知识证明算法库,所述零知识证明算法库在智能合约中的使用非常广泛,而通常这些算法库都是有第三方公司开发的。虽然零知识证明算法库的应用非常确定,但是通过不同的代码实现的零知识证明算法库在算法效率方面可能差距百倍甚至更大,因此对于零知识证明算法库源码的保护十分有必要。
由于这里所述智能合约采用go语言v1.8以上版本编写,因此所述算法库源文件也采用该版本的go语言编写。
所述编译模块202用于将所述算法库源文件进行编译,生成相应的算法动态库文件和该算法动态库文件的API函数原型。
所述编译就是把高级语言变成计算机可以识别的二进制语言,这里具体指将由go语言编写的源文件转换成二进制语言。
所述动态链接库文件,是一种不可执行的二进制程序文件,它允许程序共享执行特殊任务所必需的代码和其他资源,程序可根据DLL文件中的指令打开、启用、查询、禁用和关闭驱动程序。
本模块中产生的所述算法动态库文件就是动态链接库文件,具体为*.so的文件。
所述API函数原型是在编译的时候,通过设置编译选项而来的,即通过设置编译选项,设定要对外暴露哪些API,这些对外暴露的API才可以被外部程序调用,也就是这边所说的算法动态库文件的API函数原型。
所述加载模块203用于将智能合约和算法动态库文件一同上传至docker中,部署并初始化所述智能合约;所述部署包括在智能合约中指定所述算法动态库文件在docker中的调用路径;所述初始化包括根据所述调用路径动态调用所述算法动态库的API接口以加载所述算法动态库;所述智能合约采用go语言编写,所述智能合约中关于算法部分采用所述算法动态库文件的API接口调用代码撰写,当所述智能合约执行到所述调用代码时,所述智能合约通过所述API接口载入所述算法动态库文件,然后由所述算法动态库文件主动执行。所述部署(特指软件部署)就是把开发的软件拿给用户去用,给用户配置环境(包括硬件、软件的安装、环境变量的设置等),让开发的软件能给用户正常使用的过程就是软件部署。
本模块中所述在智能合约中指定所述算法动态库文件在docker中的调用路径,具体指在智能合约中指定所述*.so的文件在docker中的路径,以使得所述智能合约在加载和执行时可以找到所述*.so的文件。
在完成智能合约的初始化之后,相当于完成了算法动态库的加载,智能合约执行时可以直接执行算法动态库中的函数了。该智能合约的执行具体包括以下步骤:
1)前端应用程序发起调用智能合约的请求至相应的背书节点;
2)所述背书节点通过gRPC连接所述智能合约的可执行文件,使得所述智能合约被执行;
3)当执行到所述智能合约中关于算法部分时,通过调用所述算法动态库文件的API接口完成功能运算;
4)所述智能合约的执行结果通过所述背书节点返回给所述前端应用程序。
该智能合约的调用相比传统的调用多了库函数调用的步骤,但隐藏了算法源代码,起到保护该算法的目的。
又例如,图5示出了所述基于go语言的算法保护系统20第二实施例的程序模块示意图,该实施例中,所述基于go语言的算法保护系统20中的加载模块203被进一步分割为上传子模块2031、部署子模块2032和初始化子模块2033。
所述上传子模块2031用于将智能合约和算法动态库文件一同上传至docker中。
所述部署子模块2032用于通过开源区块链分布式账本自身提供的工具,将所述智能合约的源码加载到开源区块链分布式账本提供的工具环境中进行编译,以得到编译后的智能合约的可执行文件,并将所述编译后的智能合约的可执行文件加载到Docker中。
所述初始化子模块2033用于根据所述调用路径动态调用所述算法动态库的API接口以加载所述算法动态库。
再次,本发明还提出来一种计算机设备。
参阅图6所示,是本发明计算机设备一实施例的硬件架构示意图。本实施例中,所述计算机设备2是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。例如,可以是智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图所示,所述计算机设备2至少包括,但不限于,可通过系统总线相互通信连接存储器21、处理器22、网络接口23、以及基于go语言的算法保护系统20。其中:
所述存储器21至少包括一种类型的计算机可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器21可以是所述计算机设备2的内部存储单元,例如该计算机设备2的硬盘或内存。在另一些实施例中,所述存储器21也可以是所述计算机设备2的外部存储设备,例如该计算机设备2上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,所述存储器21还可以既包括所述计算机设备2的内部存储单元也包括其外部存储设备。本实施例中,所述存储器21通常用于存储安装于所述计算机设备2的操作系统和各类应用软件,例如所述基于go语言的算法保护系统20的程序代码等。此外,所述存储器21还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器22在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器22通常用于控制所述计算机设备2的总体操作,例如执行与所述计算机设备2进行数据交互或者通信相关的控制和处理等。本实施例中,所述处理器22用于运行所述存储器21中存储的程序代码或者处理数据,例如运行所述的基于go语言的算法保护系统20等。
所述网络接口23可包括无线网络接口或有线网络接口,该网络接口23通常用于在所述计算机设备2与其他计算机设备之间建立通信连接。例如,所述网络接口23用于通过网络将所述计算机设备2与外部终端相连,在所述计算机设备2与外部终端之间的建立数据传输通道和通信连接等。所述网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobile communication,GSM)、宽带码分多址(WidebandCode Division Multiple Access,WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
需要指出的是,图6仅示出了具有组件21-23的计算机设备2,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
在本实施例中,存储于存储器21中的所述基于go语言的算法保护系统20可以被一个或多个处理器(本实施例为处理器22)所执行,以完成上述基于go语言的算法保护方法的操作。
此外,本发明一种计算机可读存储介质,所述计算机可读存储介质为非易失性可读存储介质,其内存储有计算机程序指令,所述计算机程序指令可被至少一个处理器所执行,以实现上述基于go语言的算法保护方法或电子装置的操作。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。
Claims (10)
1.一种基于go语言的算法保护方法,用于保护智能合约中的算法,其特征在于,包括以下步骤:
采用go语言编写算法库源文件;
将所述算法库源文件进行编译,生成相应的算法动态库文件和该算法动态库文件的API函数原型;
将智能合约和算法动态库文件一同上传至docker中,部署并初始化所述智能合约;所述部署包括在智能合约中指定所述算法动态库文件在docker中的调用路径;所述初始化包括根据所述调用路径动态调用所述算法动态库的API接口以加载所述算法动态库;
所述智能合约采用go语言编写,所述智能合约中关于算法部分采用所述算法动态库文件的API接口调用代码撰写,当所述智能合约执行到所述调用代码时,所述智能合约通过所述API接口载入所述算法动态库文件,然后由所述算法动态库文件主动执行。
2.根据权利要求1所述的基于go语言的算法保护方法,其特征在于,所述算法库为零知识证明算法库,所述go语言版本为v1.8以上版本。
3.根据权利要求1所述的基于go语言的算法保护方法,其特征在于,生成的所述算法动态库文件为*.so的文件。
4.根据权利要求3所述的基于go语言的算法保护方法,其特征在于,所述在智能合约中指定所述算法动态库文件在docker中的调用路径,是指在智能合约中指定所述*.so的文件在docker中的路径,以使得所述智能合约在加载和执行时可以查询到所述*.so的文件。
5.根据权利要求1所述的基于go语言的算法保护方法,其特征在于,所述部署包括以下步骤:
通过开源区块链分布式账本自身提供的工具,将所述智能合约的源码加载到开源区块链分布式账本提供的工具环境中进行编译,以得到编译后的智能合约的可执行文件;
将所述编译后的智能合约的可执行文件加载到Docker中。
6.根据权利要求5所述的基于go语言的算法保护方法,其特征在于,所述智能合约的执行包括以下步骤:
前端应用程序发起调用智能合约的请求至相应的背书节点;
所述背书节点通过gRPC连接所述智能合约的可执行文件,使得所述智能合约被执行;
当执行到所述智能合约中关于算法部分时,通过调用所述算法动态库文件的API接口完成功能运算;
所述智能合约的执行结果通过所述背书节点返回给所述前端应用程序。
7.一种电子装置,其特征在于,所述电子装置上存储有基于go语言的算法保护系统,所述基于go语言的算法保护系统包括:
算法库源文件,所述算法库源文件采用go语言编码;
编译模块,用于将所述算法库源文件进行编译,生成相应的算法动态库文件和该算法动态库文件的API函数原型;
加载模块,用于将智能合约和算法动态库文件一同上传至docker中,部署并初始化所述智能合约;所述部署包括在智能合约中指定所述算法动态库文件在docker中的调用路径;所述初始化包括根据所述调用路径动态调用所述算法动态库的API接口以加载所述算法动态库;所述智能合约采用go语言编写,所述智能合约中关于算法部分采用所述算法动态库文件的API接口调用代码撰写,当所述智能合约执行到所述调用代码时,所述智能合约通过所述API接口载入所述算法动态库文件,然后由所述算法动态库文件主动执行。
8.根据权利要求7所述的电子装置,其特征在于,所述加载模块进一步包括以下子模块:
上传子模块,用于将智能合约和算法动态库文件一同上传至docker中;
部署子模块,用于通过开源区块链分布式账本自身提供的工具,将所述智能合约的源码加载到开源区块链分布式账本提供的工具环境中进行编译,以得到编译后的智能合约的可执行文件,并将所述编译后的智能合约的可执行文件加载到Docker中;
初始化子模块,用于根据所述调用路径动态调用所述算法动态库的API接口以加载所述算法动态库。
9.一种计算机设备,包括存储器和处理器,其特征在于,所述存储器上存储有可被所述处理器执行的基于go语言的算法保护系统,所述系统被所述处理器执行时实现如权利要求1-6中任一项所述的基于go语言的算法保护方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序指令,所述计算机程序指令可被至少一个处理器所执行,以使所述至少一个处理器执行如权利要求1-6中任一项所述的基于go语言的算法保护方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811055763.0A CN109299587A (zh) | 2018-09-11 | 2018-09-11 | 基于go语言的算法保护方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811055763.0A CN109299587A (zh) | 2018-09-11 | 2018-09-11 | 基于go语言的算法保护方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109299587A true CN109299587A (zh) | 2019-02-01 |
Family
ID=65166732
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811055763.0A Withdrawn CN109299587A (zh) | 2018-09-11 | 2018-09-11 | 基于go语言的算法保护方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109299587A (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110096338A (zh) * | 2019-05-10 | 2019-08-06 | 百度在线网络技术(北京)有限公司 | 智能合约执行方法、装置、设备及介质 |
CN110390213A (zh) * | 2019-07-31 | 2019-10-29 | 中国工商银行股份有限公司 | 区块链网络环境下智能合约的安全部署方法及系统 |
CN110502218A (zh) * | 2019-08-26 | 2019-11-26 | 深圳前海环融联易信息科技服务有限公司 | 智能合约开发方法、装置、计算机设备及存储介质 |
CN110688122A (zh) * | 2019-09-30 | 2020-01-14 | 支付宝(杭州)信息技术有限公司 | 编译和执行智能合约的方法及装置 |
CN110704063A (zh) * | 2019-09-30 | 2020-01-17 | 支付宝(杭州)信息技术有限公司 | 编译和执行智能合约的方法及装置 |
CN110750545A (zh) * | 2019-09-03 | 2020-02-04 | 北京字节跳动网络技术有限公司 | 动态库热更新方法、装置、介质和设备 |
CN111026461A (zh) * | 2019-12-06 | 2020-04-17 | 联想(北京)有限公司 | 用于区块链系统的数据处理方法、装置和电子设备 |
CN111095198A (zh) * | 2019-06-28 | 2020-05-01 | 阿里巴巴集团控股有限公司 | 用于数据处理的系统和方法 |
CN111258590A (zh) * | 2020-05-06 | 2020-06-09 | 华控清交信息科技(北京)有限公司 | 一种代码执行方法、装置和用于代码执行的装置 |
CN111258714A (zh) * | 2020-01-13 | 2020-06-09 | 电子科技大学 | 一种区块链智能合约执行方法 |
CN111651156A (zh) * | 2020-06-04 | 2020-09-11 | 广州鲁邦通物联网科技有限公司 | 一种适配多种开发语言的软件开发工具包和调用方法 |
CN112214250A (zh) * | 2019-06-24 | 2021-01-12 | 北京京东尚科信息技术有限公司 | 一种应用程序组件的加载方法和装置 |
CN112612482A (zh) * | 2020-12-28 | 2021-04-06 | 杭州趣链科技有限公司 | 执行智能合约的方法、装置、设备及存储介质 |
CN112965794A (zh) * | 2021-02-19 | 2021-06-15 | 西安智周深鉴信息科技集团有限公司 | 算法调用方法、电子设备及存储介质 |
CN113778564A (zh) * | 2021-09-03 | 2021-12-10 | 杭州复杂美科技有限公司 | 一种高效执行evm智能合约的方法、设备及储存介质 |
CN114035866A (zh) * | 2021-12-02 | 2022-02-11 | 杭州复杂美科技有限公司 | 合约动态库的配置及加载方法、计算机设备和存储介质 |
CN112214250B (zh) * | 2019-06-24 | 2024-05-17 | 北京京东尚科信息技术有限公司 | 一种应用程序组件的加载方法和装置 |
-
2018
- 2018-09-11 CN CN201811055763.0A patent/CN109299587A/zh not_active Withdrawn
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110096338A (zh) * | 2019-05-10 | 2019-08-06 | 百度在线网络技术(北京)有限公司 | 智能合约执行方法、装置、设备及介质 |
CN112214250B (zh) * | 2019-06-24 | 2024-05-17 | 北京京东尚科信息技术有限公司 | 一种应用程序组件的加载方法和装置 |
CN112214250A (zh) * | 2019-06-24 | 2021-01-12 | 北京京东尚科信息技术有限公司 | 一种应用程序组件的加载方法和装置 |
CN111095198B (zh) * | 2019-06-28 | 2023-06-30 | 创新先进技术有限公司 | 用于数据处理的系统和方法 |
CN111095198A (zh) * | 2019-06-28 | 2020-05-01 | 阿里巴巴集团控股有限公司 | 用于数据处理的系统和方法 |
CN110390213A (zh) * | 2019-07-31 | 2019-10-29 | 中国工商银行股份有限公司 | 区块链网络环境下智能合约的安全部署方法及系统 |
CN110502218A (zh) * | 2019-08-26 | 2019-11-26 | 深圳前海环融联易信息科技服务有限公司 | 智能合约开发方法、装置、计算机设备及存储介质 |
CN110502218B (zh) * | 2019-08-26 | 2023-05-19 | 深圳前海环融联易信息科技服务有限公司 | 智能合约开发方法、装置、计算机设备及存储介质 |
CN110750545A (zh) * | 2019-09-03 | 2020-02-04 | 北京字节跳动网络技术有限公司 | 动态库热更新方法、装置、介质和设备 |
CN110688122A (zh) * | 2019-09-30 | 2020-01-14 | 支付宝(杭州)信息技术有限公司 | 编译和执行智能合约的方法及装置 |
CN110704063A (zh) * | 2019-09-30 | 2020-01-17 | 支付宝(杭州)信息技术有限公司 | 编译和执行智能合约的方法及装置 |
CN111026461A (zh) * | 2019-12-06 | 2020-04-17 | 联想(北京)有限公司 | 用于区块链系统的数据处理方法、装置和电子设备 |
CN111258714A (zh) * | 2020-01-13 | 2020-06-09 | 电子科技大学 | 一种区块链智能合约执行方法 |
CN111258714B (zh) * | 2020-01-13 | 2023-03-10 | 电子科技大学 | 一种区块链智能合约执行方法 |
CN111258590B (zh) * | 2020-05-06 | 2020-08-18 | 华控清交信息科技(北京)有限公司 | 一种代码执行方法、装置和用于代码执行的装置 |
CN111258590A (zh) * | 2020-05-06 | 2020-06-09 | 华控清交信息科技(北京)有限公司 | 一种代码执行方法、装置和用于代码执行的装置 |
CN111651156A (zh) * | 2020-06-04 | 2020-09-11 | 广州鲁邦通物联网科技有限公司 | 一种适配多种开发语言的软件开发工具包和调用方法 |
CN112612482A (zh) * | 2020-12-28 | 2021-04-06 | 杭州趣链科技有限公司 | 执行智能合约的方法、装置、设备及存储介质 |
CN112965794A (zh) * | 2021-02-19 | 2021-06-15 | 西安智周深鉴信息科技集团有限公司 | 算法调用方法、电子设备及存储介质 |
CN112965794B (zh) * | 2021-02-19 | 2024-03-22 | 西安智周深鉴信息科技集团有限公司 | 算法调用方法、电子设备及存储介质 |
CN113778564A (zh) * | 2021-09-03 | 2021-12-10 | 杭州复杂美科技有限公司 | 一种高效执行evm智能合约的方法、设备及储存介质 |
CN113778564B (zh) * | 2021-09-03 | 2023-05-30 | 杭州复杂美科技有限公司 | 一种高效执行evm智能合约的方法、设备及储存介质 |
CN114035866A (zh) * | 2021-12-02 | 2022-02-11 | 杭州复杂美科技有限公司 | 合约动态库的配置及加载方法、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109299587A (zh) | 基于go语言的算法保护方法、装置、设备及存储介质 | |
RU2725690C1 (ru) | Способ и устройство обработки услуг | |
CN110032599B (zh) | 数据结构的读取及更新方法、装置、电子设备 | |
US10416979B2 (en) | Package installation on a host file system using a container | |
CN109658238A (zh) | 数据处理方法及装置 | |
CN102866884A (zh) | 将操作系统的本机应用编程接口投射到其他编程语言 | |
CN109446754A (zh) | 智能合约中算法的保护方法、装置、设备及存储介质 | |
CN109960597B (zh) | 一种应用层接口的动态注册方法及相关装置 | |
CN105117621A (zh) | 代码混淆的控制流平展化 | |
CN111782300A (zh) | 一种数据处理方法、装置、设备及系统 | |
CN110032568B (zh) | 数据结构的读取及更新方法、装置、电子设备 | |
US20230244530A1 (en) | Flexible optimized data handling in systems with multiple memories | |
CN104731622A (zh) | 一种应用程序的加载方法、装置和移动终端 | |
CN111090438A (zh) | 一种基于kubernetes的FPGA虚拟化训练的方法、设备及介质 | |
US20210149880A1 (en) | Systems and methods for extendable smart contracts in distributed ledger technology | |
CN115328458B (zh) | 一种业务应用开发方法及装置 | |
CN116107623A (zh) | 一种软件开发方法、装置及电子设备 | |
CN113177292B (zh) | 一种通用的bim二次开发实现方法和装置 | |
CN105074667A (zh) | 对象图部分不可变性以及隔离实施 | |
CN108399068A (zh) | 函数程序持久化的方法、电子设备及存储介质 | |
CN115203746A (zh) | 数据账户的访问授权方法及装置 | |
CN114327941A (zh) | 一种服务提供方法及装置 | |
CN110941433B (zh) | 一种边缘辅助部署第三方应用到微控制器方法及系统 | |
US20240004616A1 (en) | Runtime support for role types that extend underlying types | |
CN113835748B (zh) | 基于html5的应用程序的打包方法、系统和可读介质 |
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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20190201 |
|
WW01 | Invention patent application withdrawn after publication |