The invention discloses a protection method of an algorithm in an intelligent contract, belonging to the technical field of block chain. The method includes the following steps: compiling the source files of the algorithm library in go language, compiling and compiling the source files of the algorithm library to generate elf files; copying the repositioning table, read-only data area, data area and code area of the ELF file to form a series of binary data, and configuring the loader function for the binary data; and loading the binary data and the said loading. The loader function is written into the source code of the intelligent contract, and the source code of the intelligent contract is uploaded to docker for deployment, so that when the loader function runs on the intelligent contract, the address of the external function and the external global variable contained in the binary data can be obtained. By utilizing the Compiling Characteristics of go language, the invention bypasses the link that the intelligent contract deployment must upload source code to compile, and separates the core code to protect the intellectual property rights of the core algorithm.
【技术实现步骤摘要】
智能合约中算法的保护方法、装置、设备及存储介质
本专利技术涉及区块链
,涉及一种智能合约中算法的保护方法、装置、设备及存储介质。
技术介绍
智能合约是一种数字形式的合约,也就是一段由计算机语言撰写并实现的可执行代码。随着区块链应用的普及,智能合约的使用范围变得越来越广泛,很多智能合约中,都会用到第三方的算法库来完成某种既定的、具体的、业界公认而无可争议的功能;而这些第三方的算法库,却常常因为第三方公司对于自身知识产权的保护而不便于对外公开其源码。以隐私保护方面被大量应用的零知识证明算法库为例,零知识证明算法库的功能是既定而确切的,即“我不需要亮出我的答案,但是我可以向外界证明我知道答案”。既便于对于这样业界非常确定的应用算法库,两家不同的公司实现的算法效率可能差距100倍以上甚至更大。现在,有些公司为了保护自身知识产权,不对外公开源码,通过利用go语言v1.8的一些特性完成对源码的隐藏,但是在实际商业环境中,并不是所有的客户都安装了最新的go语言版本,特别是对于某些对自身系统稳定性要求较高的客户,他们对于已经在运行的网络环境升级持有非常谨慎的态度,特别是对于涉及到整个网络环境运行基础的语言包的升级,更是慎之又慎。
技术实现思路
本专利技术要解决的技术问题是为了克服现有技术中无法在区块链中保护算法源码的问题,提出了一种智能合约中算法的保护方法、装置、设备及存储介质,利用go语言的编译特性,绕开了智能合约部署必须上传源码编译的环节,将核心代码独立出来,以实现核心算法知识产权的保护。本专利技术是通过下述技术方案来解决上述技术问题:一种智能合约中算法的保护方法, ...
【技术保护点】
1.一种智能合约中算法的保护方法,其特征在于,包括以下步骤:将采用go语言编写的算法库源文件通过编译和汇编后生成elf文件;复制出所述elf文件中的重定位表、只读数据区、数据区和代码区形成一串二进制数据,并为所述二进制数据配置加载器函数;将所述二进制数据和所述加载器函数写入智能合约的源码中;将所述智能合约的源码上传至docker中进行部署,使得所述加载器函数在所述智能合约运行时,可以获取所述二进制数据中包含的外部函数和外部全局变量的地址。
【技术特征摘要】
1.一种智能合约中算法的保护方法,其特征在于,包括以下步骤:将采用go语言编写的算法库源文件通过编译和汇编后生成elf文件;复制出所述elf文件中的重定位表、只读数据区、数据区和代码区形成一串二进制数据,并为所述二进制数据配置加载器函数;将所述二进制数据和所述加载器函数写入智能合约的源码中;将所述智能合约的源码上传至docker中进行部署,使得所述加载器函数在所述智能合约运行时,可以获取所述二进制数据中包含的外部函数和外部全局变量的地址。2.根据权利要求1所述的智能合约中算法的保护方法,其特征在于,所述算法库为零知识证明算法库。3.根据权利要求1所述的智能合约中算法的保护方法,其特征在于,所述elf文件的生成过程为:采用go语言编写得到*.go文件,将所述*.go文件经过编译得到*.s文件,再将所述*.s文件经过汇编得到*.o文件;所述*.go文件为算法库源文件,所述*.s文件为汇编源文件,所述*.o文件为elf文件。4.根据权利要求1所述的智能合约中算法的保护方法,其特征在于,所述部署包括:通过所述加载器函数将所述二进制数据中包含的外部函数和外部全局变量的地址回填到所述二进制数据中的相应位置中,实现对所述二进制数据的修改;通过所述加载器函数在内存中分配一段内存地址,并赋予这段内存地址可执行权限,然后将修改后的所述二进制数据复制到该段内存地址对应的内存区域中。5.根据权利要求4所述的智能合约中算法的保护方法,其特征在于,所述二进制数据的修改包括以下步骤:将所述智能合约的源码上传到docker中进行部署并初始化;通过所述加载器函数对所述二进制数据进行解析,找到所述二进制数据中的重定位表;根据所述重定位表,确定所要调用的外部函数和外部全局变量的地址,以及确定所述外部函数和外部全局变量的地址在所述二进制数据中的位置;将确定的所要调用的外部函数和外部全局变量的地址插入至所述二进制数据中的相应...
【专利技术属性】
技术研发人员:谢丹力,张松松,
申请(专利权)人:平安科技深圳有限公司,
类型:发明
国别省市:广东,44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。