CN112419057A - 智能合约的日志生成及保存方法、装置、设备和存储介质 - Google Patents
智能合约的日志生成及保存方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN112419057A CN112419057A CN202011280585.9A CN202011280585A CN112419057A CN 112419057 A CN112419057 A CN 112419057A CN 202011280585 A CN202011280585 A CN 202011280585A CN 112419057 A CN112419057 A CN 112419057A
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- log
- public key
- compiling
- key
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/602—Providing cryptographic facilities or services
-
- 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
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/389—Keeping log of transactions for guaranteeing non-repudiation of a transaction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- Finance (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Technology Law (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种智能合约的日志生成及保存方法、装置、设备和存储介质,所述方法包括:生成智能合约的日志文档;产生第一私有秘钥及与第一私有秘钥相匹配的第一公开秘钥;将第一公开秘钥写入智能合约的日志文档;生成一对第二公开秘钥和第二私有秘钥;根据第一加密算法、所述第一私有秘钥以及所述第二公开秘钥生成第一共享秘钥;根据所述第一共享秘钥和第二加密算法,对原始日志内容进行加密得到加密日志内容;将加密日志内容写入智能合约的日志文档;将智能合约日志文档保存。上述方法提高了智能合约日志生成的及时性、准确性,生成的用于给原始日志内容加密的第一共享秘钥是不同的,大大增加了非法用户破解的难度,从而提高了安全性。
Description
技术领域
本发明涉及区块链领域,特别是涉及智能合约的日志生成及保存方法、装置、设备和存储介质。
背景技术
智能合约(smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约的测试或部署过程中产生的日志,对于开发人员来说是至关重要的。开发人员通常需要利用这些日志来检查智能合约开发过程中存在的一些问题。因此,生成智能合约的日志以及对日志进行保存确保日志安全性也是至关重要的步骤。
现有的智能合约的测试或部署等过程中生成的日志需要通过测试人员在测试完成后转交给开发人员,不仅存在获取不方便、容易造成信息滞后性等问题,而且在同时进行多个类似开发项目时往往容易出现混淆等人为失误。另外,日志安全性不佳,极容易为非法人员获取。
发明内容
基于此,有必要针对在进行智能合约的日志生成过程时,日志获取不方便、容易造成信息滞后,并且日志安全性不佳,容易被非法人员获取的问题,提供一种智能合约的日志生成及保存方法、装置、计算机设备和存储介质。
一种智能合约的日志生成及保存方法,包括:
生成智能合约的日志文档;
产生第一私有秘钥及与第一私有秘钥相匹配的第一公开秘钥;
将第一公开秘钥写入智能合约的日志文档;
生成一对第二公开秘钥和第二私有秘钥;
根据第一加密算法、第一私有秘钥以及第二公开秘钥生成第一共享秘钥;
根据第一共享秘钥和第二加密算法,对原始日志内容进行加密得到加密日志内容;
将加密日志内容写入智能合约的日志文档;
将包括第一公开秘钥和写入了加密日志内容的智能合约日志文档保存。
在其中一个实施例中,所述第一加密算法为RSA公开密钥加密算法;所述根据第一加密算法、第一私有秘钥以及第二公开秘钥生成第一共享秘钥包括:
创建RSA第一加密算法的接口;
将第二公开秘钥作为RSA第一加密算法接口的第一参数,将第一私有秘钥作为RSA第一加密算法接口的第二参数;
调用RSA第一加密算法接口,生成秘钥,该秘钥作为第一共享秘钥。
在其中一个实施例中,所述生成智能合约的日志文档的方法,包括:
执行智能合约扫描操作,获取智能合约扫描日志;
执行智能合约编译操作,获取智能合约编译日志;
执行智能合约部署操作,获取智能合约部署日志;
执行智能合约测试操作,获取智能合约测试日志;
将所述智能合约扫描日志、所述智能合约编译日志、所述智能合约部署日志和所述智能合约测试日志合并生成所述智能合约的日志文档。
在其中一个实施例中,所述执行智能合约扫描操作,获取智能合约扫描日志,包括:
根据接收到的智能合约扫描请求,从智能合约代码管理库下载对应版本智能合约,记录下载日志;
执行扫描任务,记录扫描过程日志;
利用所述下载日志和所述扫描过程日志,构成智能合约扫描日志。
在其中一个实施例中,所述执行智能合约编译操作,获取智能合约编译日志,包括:
根据接收到的智能合约编译请求,从智能合约代码管理库下载对应版本智能合约,并记录下载日志;
分析智能合约代码,构建相应的编译环境,执行编译操作,记录编译过程日志以及编译结果;
利用所述下载日志、所述编译过程日志和所述编译结果,构成智能合约编译日志。
在其中一个实施例中,所述执行智能合约部署操作,获取智能合约部署日志,包括:
根据接收到的智能合约部署请求,获取执行智能合约编译操作所得到的智能合约可执行文件,并记录获取过程日志;
向智能合约测试网络各节点发送所述智能合约部署请求,记录发送日志以及返回的部署结果,并通过测试网络节点提供的接口获取相应的部署过程日志;
利用获取过程日志、发送日志、部署结果和部署过程日志,构成智能合约部署日志;
所述执行智能合约测试操作,获取智能合约测试日志,包括:
根据测试集,依次向智能合约测试网络各节点发送智能合约测试请求,记录发送日志以及返回的测试结果,并通过测试网络节点提供的接口获取相应的测试过程日志;
利用所述发送日志、所述测试结果和所述测试过程日志,构成智能合约测试日志。
在其中一个实施例中,所述执行智能合约扫描操作,包括:读取智能合约,对智能合约及其执行状态和执行结果进行存储,以预设扫描频率和预设扫描时间对存储的智能合约进行扫描;
所述执行智能合约编译操作,包括:
将智能合约代码解析成抽象语法树;
检查所述抽象语法树是否构成合法的语义;
若是,则检查通过;若否,则检查不通过,触发语义错误。
一种智能合约的日志生成及保存装置,包括:
日志文档生成模块,用于生成智能合约的日志文档;
第一生成子模块,用于产生第一私有秘钥及与第一私有秘钥相匹配的第一公开秘钥;
第一写入子模块,用于将第一公开秘钥写入智能合约的日志文档;
第二生成子模块,用于生成一对第二公开秘钥和第二私有秘钥;
第三生成子模块,用于根据第一加密算法、第一私有秘钥以及第二公开秘钥生成第一共享秘钥;
加密子模块,用于根据第一共享秘钥和第二加密算法,对原始日志内容进行加密得到加密日志内容;
第二写入子模块,用于将加密日志内容写入智能合约的日志文档;
保存子模块,用于将包括第一公开秘钥和写入了加密日志内容的智能合约日志文档保存。
一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行上述所述智能合约的日志生成及保存方法的步骤。
一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述所述智能合约的日志生成及保存方法的步骤。
上述智能合约的日志生成及保存方法、装置、计算机设备和存储介质,提高了智能合约日志生成的及时性、准确性,为开发人员及时且准确地得到智能合约日志提供了有效解决方案,智能化程度更高,不再受人员的主观和失误等因素影响日志生成及获取结果;并且,由于根据随机函数生成第一私有秘钥,所以生成的用于给原始日志内容加密的第一共享秘钥是不同的,大大增加了非法用户破解的难度,从而可以提高对智能合约的日志的保护力度,故而提高了安全性,解决了现有技术中采用相同的秘钥进行加密和解密,存在安全性较低的技术问题。
附图说明
图1为一个实施例中提供的智能合约的日志生成及保存方法的流程图;
图2为一个实施方式中提供的智能合约流水线的流程图;
图3为另一实施方式中提供的智能合约流水线的详细流程图;
图4为图1所对应实施例中步骤S10的流程图;
图5为图1所对应实施例中步骤S20的流程图;
图6为一个实施例中智能合约的日志生成及保存装置的结构框图;
图7为一个实施例中计算机设备的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。
智能合约共享创建平台,包括智能合约开发平台、智能合约代码管理库和智能合约流水线平台和智能合约测试网络。
智能合约开发平台包括用户权限管理,智能合约项目管理,智能合约开发,审核,批准等。其中用户权限管理包括用户对于智能合约开发平台的访问控制,对于智能合约项目的访问控制,以及对于具体智能合约的开发权限,审核权限以及批准权限的控制。
智能合约代码管理库包括智能合约代码管理。
智能合约流水线平台包括一系列对于智能合约进行扫描、编译、部署、测试等自动化操作,以及对于这些操作的相关信息(比如,状态,结果,日志等) 进行收集,存储,处理。
智能合约测试网络是用于测试智能合约,模拟真实区块链网络。
每次智能合约代码更新,webhook被触发,就会向智能合约流水线平台发起流水线执行请求。智能合约流水线平台会为该智能合约生成一个新的流水线执行ID,并基于流水线执行ID维护一个流水线执行历史,包括每次流水线执行的状态,结果和日志。智能合约流水线平台提供如下功能,根据智能合约ID查询该智能合约的流水线执行历史;根据智能合约ID以及其流水线执行ID,查询该流水线执行状态以及结果;根据智能合约ID以及其流水线执行ID,查询该流水线不同阶段的执行结果,日志。
智能合约流水线平台包括智能合约扫描模块、智能合约编译模块、智能合约部署模块和智能合约测试模块。
智能合约扫描模块用于执行智能合约扫描操作,获取智能合约扫描日志。
智能合约编译模块用于执行智能合约编译操作,获取智能合约编译日志。
智能合约部署模块用于执行智能合约部署操作,获取智能合约部署日志。
智能合约测试模块用于执行智能合约测试操作,获取智能合约测试日志。
本申请一个实施例的智能合约的日志生成及保存方法,如图1所示,包括以下步骤:
S10、生成智能合约的日志文档。
具体地,智能合约流水线开始运行后,会对智能合约执行扫描、编译、部署、测试等自动化操作,将智能合约扫描日志、智能合约编译日志、智能合约部署日志和智能合约测试日志合并在一起,构成智能合约的日志。
下面根据智能合约流水线的不同阶段,如图2至图4所示,描述日志的生成过程。步骤S10包括:
S101、执行智能合约扫描操作,获取智能合约扫描日志。
具体地,步骤S101包括:
i.智能合约扫描模块接收到智能合约扫描请求后,记录扫描请求日志。
ii.从智能合约代码管理库下载对应版本智能合约,并记录下载日志。
iii.智能合约扫描模块执行扫描任务,记录扫描过程日志,并生成扫描结果报告。
执行扫描任务包括:读取智能合约,对智能合约及其执行状态和执行结果进行持久化存储,并且以预设扫描频率和预设扫描时间对持久化存储的智能合约进行扫描。预设扫描频率和预设扫描时间可以根据实际需要进行设置。
iv.智能合约扫描模块完成记录此次扫描相关的日志,利用所述扫描请求日志、所述下载日志和所述扫描过程日志,构成智能合约扫描日志。
S102、执行智能合约编译操作,获取智能合约编译日志。
具体地,步骤S102包括:
i.智能合约编译模块接收到智能合约编译请求后,开始记录此次编译请求相关日志;
ii.从智能合约代码管理库下载对应版本智能合约,并记录下载日志;
iii.智能合约编译模块分析智能合约代码,构建相应的编译环境,执行编译操作,记录编译日志以及编译结果;
在某些实施方式中,执行编译操作的步骤包括:
(1)词法分析和语法分析:将智能合约代码解析成抽象语法树,使用Crystal 宏机制实现,代码可以作为宏直接嵌入Crystal代码中,也可以直接输入抽象语法树,不通过宏式的语言描述,而是直接以方法调用的形式将对象传入。Crystal 是一个编译型的编程语言,其特性包括:
语法类似Ruby、无需指定变量类型和方法参数类型、可调用C代码、编译时代码模拟和生成、编译成高效的原生代码。
(2)语义分析:检查抽象语法树是否构成合法的语义(例如智能合约API参数类型是否合规),任何错误的词法和语法将报出语法错误,并非所有的抽象语法树都是合法的,语义分析将检查,若检查不通过,则触发语义错误。
在某些实施方式中,编译环境可以为前端浏览器环境;执行编译操作,包括:
将C++版本的编译器通过Emscripten或者其他LLVM工具编译成支持前端浏览器环境以及Node.js环境的asm.js版本文件,并在国内服务器或者CDN节点上部署当前所有Solidity编译器,同时跟国外以太坊官方编译器仓库定期对比版本列表,及时更新最新编译器;
向编译环境中输入源文件,此处以Solidity源文件为例,在浏览器脚本中内置最新且稳定的Solidity编译器的WASM格式文件;具体为:将C++版本编译器通过Emscripten或者其他LLVM工具编译成浏览器支持的二进制字节码格式的WASM文件,然后通过Webpack等前端打
包工具将该WASM文件打包到前端脚本代码中,WASM格式文件可直接在浏览器中运行,无需通过浏览器脚本引擎的解释编译。通过浏览器中Solidity文件声明的版本号来判断是否使用该内置WASM文件编译器。在版本匹配正确或者Solidity文件没有声明版本号的情况下使用该编译器。直接用内置WASM版本的Solidity编译器编译智能合约文件,在Javascript主线程中返回编译结果;或者通过Javascript代码动态新增一个script标签的方式指定src属性为国内服务器或者CDN节点的路径,从而拉取需要的Solidity编译器,同时在Javascript 子线程执行智能合约文件的编译操作,将编译结果返回主线程;在浏览器端中的Solidity文件匹配WASM编译器文件失败的时候,浏览器动态创建一个脚本,在国内服务器或CDN节点中加载当前Solidity文件对应的编译器版本,同时创建一个WebWorker子线程去编译Solidity文件,并将编译结果返回JavaScript主线程,有效防止JavaScript主线程阻塞。
若在编译智能合约文件时,需要拉取的编译器还未下载完毕,或者拉取失败,则通过客户端服务器请求的方式将源代码发送到Node.js后端服务中,通过后端服务将Solidity源代码编译,然后将编译结果返回给前端浏览器中;具体为:在后端Node.js中同步国内服务器或者CDN节点中的所有Solidity编译器,同时通过比对编译器版本列表的方式定期去拉取在服务器中的最新Solidity编译器。在浏览器中动态创建脚本去拉取编译器还未下载完成或失败的情况下,会临时发送一个客户端服务器请求将Solidity源文件代码发送到Node.js服务中,在 Node.js服务中执行编译操作,将编译后的结果返回给浏览器端,在浏览器端的编译器加载完成后则使用加载之后的编译器执行编译操作。
iv.智能合约编译模块按请求ID储存生成的智能合约可执行文件,并记录相关日志;
v.智能合约编译模块完成记录此次智能合约编译请求的日志。
S103、执行智能合约部署操作,获取智能合约部署日志。
具体地,步骤S103包括:
i.智能合约部署模块接收到智能合约部署请求后,开始记录此次部署请求相关日志。
ii.根据请求ID(identity document),从智能合约编译模块获取对应智能合约可执行文件,并记录相关日志。
iii.智能合约部署模块向智能合约测试网络各节点发送智能合约部署请求,记录相关日志,以及返回的部署结果,并通过测试网络节点提供的接口获取相应的部署日志。
iv.智能合约部署模块完成记录此次部署请求相关的日志。
S104、执行智能合约测试操作,获取智能合约测试日志。
具体地,步骤S104包括:
i.智能合约测试模块接收到智能合约测试请求后,开始记录此次测试请求相关日志;
ii.智能合约测试模块根据测试集(涉及一系列智能合约执行操作和智能合约查询操作),依次向智能合约测试网络各节点发送智能合约测试请求,记录相关日志以及返回的测试结果,并通过测试网络节点提供的接口获取相应的测试日志。
在某些实施方式中,智能合约测试网络各节点对智能合约进行测试的方法包括:
(1)根据待测试的智能合约,生成对应于所述智能合约的调用接口。
通常智能合约编写完成后,该智能合约支持内部调用,而无法外部调用。如果想要对智能合约进行测试,需要通过外部的调用接口,对该智能合约进行调用执行。在本申请实施例中,智能合约测试模块可以根据获取到的智能合约,自动生成对应的调用接口,而非相关技术中获取开发人员预先编写好的调用接口。这样对于任一待测试的智能合约,均能自动生成调用接口,实现调用和测试的自动化处理。
(2)通过所述调用接口,查询所述智能合约中的至少一个账户。
调用到账户信息后,可以从账户信息中查询测试所需的至少一个账户。该至少一个账户的数量可以为一个,也可以为多个。当该至少一个账户的数量为多个时,多个账户可以包括用户账户和平台账户。
(3)根据所述至少一个账户,生成所述智能合约的测试用例。
获取到至少一个账户后,可以生成测试用例,来触发该智能合约,执行实现相应功能,以此来判断该智能合约是否能够正确运行,该智能合约的业务逻辑是否正确。该测试用例可以用于指示在账户之间进行资产转移。
在某些实施方式中,该测试用例的生成过程也可以通过目标编程语言实现,智能合约测试模块可生成目标编程语言的测试用例,进而触发智能合约,执行后续的测试步骤。例如,该目标编程语言可以为全球广域网3.java脚本(World Wide Web 3.javascript,Web3.js)。
(4)根据所述测试用例,对所述智能合约进行测试。
生成测试用例后,即可触发智能合约,实现对智能合约的测试。智能合约测试模块可以响应于该对任一测试用例的测试结果与该测试用例包括的期望结果不相同,确定该测试结果异常。相应的,智能合约测试模块可以响应于该对任一测试用例的测试结果与该测试用例包括的期望结果相同,确定该测试结果正常。
在某些实施方式中,智能合约测试模块还可以根据对该智能合约进行测试的测试结果,生成测试报告,后续相关技术人员可以根据测试报告来获知该智能合约的情况。
iii.智能合约部署模块完成记录此次测试请求相关的日志。
生成的日志可用于展示,以便开发人员获取流水线各阶段信息。展示过程如下:
a)当开发人员查看某一个智能合约的流水线执行信息时,智能合约开发平台通过智能合约流水线平台提供的接口,可查询该智能合约的流水线执行历史 (包括流水线ID,流水线执行时间,流水线执行状态,流水线执行结果等信息),该执行历史列表可以在智能合约开发平台展示出来。
b)当开发人员查看某一次流水线执行详情时,智能合约开发平台通过智能合约流水线平台提供的接口,可查询到不同流水线阶段(扫描、编译、部署、测试)的执行信息(包括各阶段执行时间,执行状态和执行结果)。
c)当开发人员进一步查看某一个流水线阶段的详情时,智能合约开发平台通过智能合约流水线平台提供的接口,可查询到该流水线阶段的执行日志,相关报告(比如扫描报告,测试报告),更多链上日志(比如测试网络节点上的智能合约部署日志,智能合约执行日志,智能合约查询日志等)。
S105、将所述智能合约扫描日志、所述智能合约编译日志、所述智能合约部署日志和所述智能合约测试日志合并生成所述智能合约的日志文档。
S20、对通过步骤S10所得到的智能合约的日志文档进行加密保存。
在某些实施方式中,如图5所示,步骤S20包括:
S201、产生第一私有秘钥。
利用随机函数产生第一私有秘钥。例如,可以采用rand、srand()等随机函数,具体可以根据实际需要来设置,如求整、取余、逻辑运算等。
S202、生成与第一私有秘钥相匹配的第一公开秘钥。
利用第一加密算法(例如RSA、DSA、ECC、DH)生成第一公开秘钥。第一加密算法需要两个秘钥:公开秘钥和私有秘钥。公开秘钥与私有秘钥是一对,如果用公开秘钥对数据进行加密,只有用对应的私有秘钥才能解密,例如用私有秘钥对数据进行加密,那么只有用对应的公开秘钥才能解密。
S203、将第一公开秘钥写入智能合约的日志文档。
在生成第一公开秘钥和第一私有秘钥后,将生成的第一公开秘钥写入智能合约的日志文档中,以便于根据智能合约的日志文档获取第一公开秘钥。
为了更好地标记第一公开秘钥的地址,可以依照预设标记格式来保存第一公开秘钥,从而便于根据智能合约的日志文档获取第一公开秘钥的地址。
预设标记格式可以是特殊标记或者数字等,例如可以采用“*&!@&#”,当读取到上述标记时,则可以获取第一公开秘钥。
S204、调用上述的第一加密算法生成一对第二公开秘钥和第二私有秘钥。
为了提高安全性,可用根据用户设备ID和设备类型来生成第二私有秘钥。
S205、根据第一加密算法、第一私有秘钥以及第二公开秘钥生成第一共享秘钥。
根据第一私有秘钥、第二公开秘钥,采用第一加密算法生成第一共享秘钥。以RSA第一加密算法为例,根据第一加密算法、第一私有秘钥以及第二公开秘钥生成第一共享秘钥包括:
创建RSA第一加密算法的接口;将第二公开秘钥作为RSA第一加密算法接口的第一参数,将第一私有秘钥作为RSA第一加密算法接口的第二参数;调用RSA第一加密算法接口,生成秘钥,该秘钥作为第一共享秘钥。
S206、根据第一共享秘钥和第二加密算法,对原始日志内容进行加密得到加密日志内容。
在生成第一共享秘钥后,可以根据第一共享秘钥和第二加密算法对原始日志内容加密,生成加密日志内容。第二加密算法为预先设定的加密算法。
具体来说,该第一共享秘钥即为最终用于对原始日志内容进行加密的键值 KEY。
S207、将加密日志内容写入智能合约的日志文档。
具体地,在生成日志内容时,为了方便对日志内容进行存储和分析,可以将日志内容写入智能合约的日志文档中,智能合约的日志文档可以根据实际情况进行设置,例如数据文件、文本文件等。
S208、将包括第一公开秘钥和写入了加密日志内容的智能合约日志文档保存。
根据第一加密算法、第二私有秘钥以及第一公开秘钥生成第二共享秘钥,其中,第二共享秘钥与第一共享秘钥相匹配。
根据随机函数生成第一私有秘钥、根据第一加密算法生成与第一私有秘钥配对的第一公开秘钥,然后根据第一加密算法、第一私有秘钥以及第二公开秘钥生成第一共享秘钥,再根据第一共享秘钥和第二加密算法对原始日志内容加密。由于根据随机函数生成第一私有秘钥,所以生成的用于给原始日志内容加密的第一共享秘钥是不同的,大大增加了非法用户破解的难度,从而可以提高对智能合约的日志的保护力度,故而提高了安全性,解决了现有技术中采用相同的秘钥进行加密和解密,存在安全性较低的技术问题。
在另一个实施例中,提供了一种智能合约的日志生成及保存装置,如图6 所示,包括:
日志文档生成模块10,用于生成智能合约的日志文档;
加密保存子模块20,用于对通过日志文档生成模块所得到的智能合约的日志进行加密保存。
加密保存子模块20包括:
第一生成子模块,用于产生第一私有秘钥及与第一私有秘钥相匹配的第一公开秘钥;
第一写入子模块,用于将第一公开秘钥写入智能合约的日志文档;
第二生成子模块,用于生成一对第二公开秘钥和第二私有秘钥;
第三生成子模块,用于根据第一加密算法、第一私有秘钥以及第二公开秘钥生成第一共享秘钥;
加密子模块,用于根据第一共享秘钥和第二加密算法,对原始日志内容进行加密得到加密日志内容;
第二写入子模块,用于将加密日志内容写入智能合约的日志文档;
保存子模块,用于将包括第一公开秘钥和写入了加密日志内容的智能合约日志文档保存。
在某些实施方式中,所述第三生成子模块包括:
创建单元,用于创建RSA第一加密算法的接口;
定参单元,将第二公开秘钥作为RSA第一加密算法接口的第一参数,将第一私有秘钥作为RSA第一加密算法接口的第二参数;
秘钥生成单元,用于调用RSA第一加密算法接口,生成秘钥,该秘钥作为第一共享秘钥。
日志文档生成模块10包括获取子模块和合并子模块。获取子模块用于获取智能合约扫描日志、智能合约编译日志、智能合约部署日志和智能合约测试日志;合并子模块用于将获取子模块所获取的智能合约扫描日志、智能合约编译日志、智能合约部署日志和智能合约测试日志合并构成所述智能合约的日志文档。
获取子模块包括:
扫描单元,用于执行智能合约扫描操作,获取智能合约扫描日志;
编译单元,用于执行智能合约编译操作,获取智能合约编译日志;
部署单元,用于执行智能合约部署操作,获取智能合约部署日志;
测试单元,用于执行智能合约测试操作,获取智能合约测试日志;
所述扫描单元,包括:
下载记录子单元,用于根据接收到的智能合约扫描请求,从智能合约代码管理库下载对应版本智能合约,记录下载日志;
扫描记录子单元,用于执行扫描任务,记录扫描过程日志;
扫描构建子单元,用于利用所述下载日志和所述扫描过程日志,构成智能合约扫描日志。
编译单元,包括:
编译下载子单元,用于根据接收到的智能合约编译请求,从智能合约代码管理库下载对应版本智能合约,并记录下载日志;
编译分析子单元,分析智能合约代码,构建相应的编译环境,执行编译操作,记录编译过程日志以及编译结果;
编译构建子单元,用于利用所述下载日志、所述编译过程日志和所述编译结果,构成智能合约编译日志。
部署单元,包括:
部署获取子单元,用于根据接收到的智能合约部署请求,获取执行智能合约编译操作所得到的智能合约可执行文件,并记录获取过程日志;
发送获取子单元,用于向智能合约测试网络各节点发送所述智能合约部署请求,记录发送日志以及返回的部署结果,并通过测试网络节点提供的接口获取相应的部署过程日志;
部署构建子单元,用于利用获取过程日志、发送日志、部署结果和部署过程日志,构成智能合约部署日志。
测试单元,包括:
测试发送获取子单元,用于根据测试集,依次向智能合约测试网络各节点发送智能合约测试请求,记录发送日志以及返回的测试结果,并通过测试网络节点提供的接口获取相应的测试过程日志;
测试构建子单元,用于利用所述发送日志、所述测试结果和所述测试过程日志,构成智能合约测试日志。
在某些实施方式中,所述扫描单元包括用于执行智能合约扫描操作的子单元,该子单元具体用于读取智能合约,对智能合约及其执行状态和执行结果进行存储,以预设扫描频率和预设扫描时间对存储的智能合约进行扫描。
在某些实施方式中,所述编译单元包括用于执行智能合约编译操作的子单元,该子单元具体用于:
将智能合约代码解析成抽象语法树;
检查所述抽象语法树是否构成合法的语义;
若是,则检查通过;若否,则检查不通过,触发语义错误。
在一个实施例中,提出了一种计算机设备,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述各实施方式中的智能合约的日志生成及保存方法的步骤。
在一个实施例中,提出了一种存储有计算机可读指令的存储介质,该计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器实现上述各实施方式中的智能合约的日志生成及保存方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM) 等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种智能合约的日志生成及保存方法,其特征在于,包括:
生成智能合约的日志文档;
产生第一私有秘钥及与第一私有秘钥相匹配的第一公开秘钥;
将所述第一公开秘钥写入所述智能合约的日志文档;
生成一对第二公开秘钥和第二私有秘钥;
根据第一加密算法、所述第一私有秘钥以及所述第二公开秘钥生成第一共享秘钥;
根据所述第一共享秘钥和第二加密算法,对原始日志内容进行加密得到加密日志内容;
将加密日志内容写入所述智能合约的日志文档;
将包括第一公开秘钥和写入了加密日志内容的智能合约日志文档保存。
2.根据权利要求1所述的方法,其特征在于,所述第一加密算法为RSA公开密钥加密算法;所述根据第一加密算法、第一私有秘钥以及第二公开秘钥生成第一共享秘钥包括:
创建所述RSA公开密钥加密算法的接口;
将所述第二公开秘钥作为RSA公开密钥加密算法接口的第一参数,将第一私有秘钥作为RSA公开密钥加密算法接口的第二参数;
调用RSA公开密钥加密算法接口,生成秘钥,该秘钥作为第一共享秘钥。
3.根据权利要求1所述的方法,其特征在于,所述生成智能合约的日志文档的方法包括:
执行智能合约扫描操作,获取智能合约扫描日志;
执行智能合约编译操作,获取智能合约编译日志;
执行智能合约部署操作,获取智能合约部署日志;
执行智能合约测试操作,获取智能合约测试日志;
将所述智能合约扫描日志、所述智能合约编译日志、所述智能合约部署日志和所述智能合约测试日志合并生成所述智能合约的日志文档。
4.根据权利要求3所述的方法,其特征在于,所述执行智能合约扫描操作,获取智能合约扫描日志,包括:
根据接收到的智能合约扫描请求,从智能合约代码管理库下载对应版本智能合约,记录下载日志;
执行扫描任务,记录扫描过程日志;
利用所述下载日志和所述扫描过程日志,构成智能合约扫描日志。
5.根据权利要求3所述的方法,其特征在于,所述执行智能合约编译操作,获取智能合约编译日志,包括:
根据接收到的智能合约编译请求,从智能合约代码管理库下载对应版本智能合约,并记录下载日志;
分析智能合约代码,构建相应的编译环境,执行编译操作,记录编译过程日志以及编译结果;
利用所述下载日志、所述编译过程日志和所述编译结果,构成智能合约编译日志。
6.根据权利要求3所述的方法,其特征在于,所述执行智能合约部署操作,获取智能合约部署日志,包括:
根据接收到的智能合约部署请求,获取执行智能合约编译操作所得到的智能合约可执行文件,并记录获取过程日志;
向智能合约测试网络各节点发送所述智能合约部署请求,记录发送日志以及返回的部署结果,并通过测试网络节点提供的接口获取相应的部署过程日志;
利用获取过程日志、发送日志、部署结果和部署过程日志,构成智能合约部署日志;
所述执行智能合约测试操作,获取智能合约测试日志,包括:
根据测试集,依次向智能合约测试网络各节点发送智能合约测试请求,记录发送日志以及返回的测试结果,并通过测试网络节点提供的接口获取相应的测试过程日志;
利用所述发送日志、所述测试结果和所述测试过程日志,构成智能合约测试日志。
7.根据权利要求1所述的方法,其特征在于,所述执行智能合约扫描操作,包括:读取智能合约,对智能合约及其执行状态和执行结果进行存储,以预设扫描频率和预设扫描时间对存储的智能合约进行扫描;
所述执行智能合约编译操作,包括:
将智能合约代码解析成抽象语法树;
检查所述抽象语法树是否构成合法的语义;
若是,则检查通过;若否,则检查不通过,触发语义错误。
8.一种智能合约的日志生成及保存装置,其特征在于,包括:
日志文档生成模块,用于生成智能合约的日志文档;
第一生成子模块,用于产生第一私有秘钥及与第一私有秘钥相匹配的第一公开秘钥;
第一写入子模块,用于将所述第一公开秘钥写入所述智能合约的日志文档;
第二生成子模块,用于生成一对第二公开秘钥和第二私有秘钥;
第三生成子模块,用于根据第一加密算法、所述第一私有秘钥以及所述第二公开秘钥生成第一共享秘钥;
加密子模块,用于根据所述第一共享秘钥和第二加密算法,对原始日志内容进行加密得到加密日志内容;
第二写入子模块,用于将加密日志内容写入所述智能合约的日志文档;
保存子模块,用于将包括第一公开秘钥和写入了加密日志内容的智能合约日志文档保存。
9.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行如权利要求1至7中任一项权利要求所述智能合约的日志生成及保存方法的步骤。
10.一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1至7中任一项权利要求所述智能合约的日志生成及保存方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011280585.9A CN112419057A (zh) | 2020-11-16 | 2020-11-16 | 智能合约的日志生成及保存方法、装置、设备和存储介质 |
PCT/CN2021/096859 WO2022100063A1 (zh) | 2020-11-16 | 2021-05-28 | 智能合约的日志生成及保存方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011280585.9A CN112419057A (zh) | 2020-11-16 | 2020-11-16 | 智能合约的日志生成及保存方法、装置、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112419057A true CN112419057A (zh) | 2021-02-26 |
Family
ID=74831405
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011280585.9A Pending CN112419057A (zh) | 2020-11-16 | 2020-11-16 | 智能合约的日志生成及保存方法、装置、设备和存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112419057A (zh) |
WO (1) | WO2022100063A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113254964A (zh) * | 2021-06-02 | 2021-08-13 | 杭州趣链科技有限公司 | 日志安全存证方法、装置、电子设备及存储介质 |
CN113961518A (zh) * | 2021-09-08 | 2022-01-21 | 北京百度网讯科技有限公司 | 日志的可视化展示方法、装置、电子设备及存储介质 |
WO2022100063A1 (zh) * | 2020-11-16 | 2022-05-19 | 平安科技(深圳)有限公司 | 智能合约的日志生成及保存方法、装置、设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107948212A (zh) * | 2018-01-10 | 2018-04-20 | 武汉斗鱼网络科技有限公司 | 一种日志的处理方法及装置 |
CN110413316A (zh) * | 2019-07-31 | 2019-11-05 | 中国工商银行股份有限公司 | 面向区块链智能合约的非侵入式测试系统及方法 |
CN110633200A (zh) * | 2018-06-25 | 2019-12-31 | 富士通株式会社 | 用于测试智能合约的方法和设备 |
CN110661748A (zh) * | 2018-06-28 | 2020-01-07 | 武汉斗鱼网络科技有限公司 | 一种日志的加密方法、解密方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108733783A (zh) * | 2018-05-09 | 2018-11-02 | 深圳明创自控技术有限公司 | 一种基于私有区块链的学籍信息管理系统 |
CN110717825B (zh) * | 2018-06-27 | 2023-04-07 | 复旦大学 | 一种基于区块链的分布式数据交易记账系统 |
US11010728B2 (en) * | 2018-07-12 | 2021-05-18 | International Business Machines Corporation | Timestamping changes to smart-contract state |
CN110808999B (zh) * | 2019-11-12 | 2022-02-15 | 中钞信用卡产业发展有限公司杭州区块链技术研究院 | 一种业务交互方法、装置、设备及存储介质 |
CN112419057A (zh) * | 2020-11-16 | 2021-02-26 | 平安科技(深圳)有限公司 | 智能合约的日志生成及保存方法、装置、设备和存储介质 |
-
2020
- 2020-11-16 CN CN202011280585.9A patent/CN112419057A/zh active Pending
-
2021
- 2021-05-28 WO PCT/CN2021/096859 patent/WO2022100063A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107948212A (zh) * | 2018-01-10 | 2018-04-20 | 武汉斗鱼网络科技有限公司 | 一种日志的处理方法及装置 |
CN110633200A (zh) * | 2018-06-25 | 2019-12-31 | 富士通株式会社 | 用于测试智能合约的方法和设备 |
CN110661748A (zh) * | 2018-06-28 | 2020-01-07 | 武汉斗鱼网络科技有限公司 | 一种日志的加密方法、解密方法及装置 |
CN110413316A (zh) * | 2019-07-31 | 2019-11-05 | 中国工商银行股份有限公司 | 面向区块链智能合约的非侵入式测试系统及方法 |
Non-Patent Citations (1)
Title |
---|
孟博;刘加兵;刘琴;王潇潇;郑旭睿;王德军;: "智能合约安全综述", 网络与信息安全学报 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022100063A1 (zh) * | 2020-11-16 | 2022-05-19 | 平安科技(深圳)有限公司 | 智能合约的日志生成及保存方法、装置、设备和存储介质 |
CN113254964A (zh) * | 2021-06-02 | 2021-08-13 | 杭州趣链科技有限公司 | 日志安全存证方法、装置、电子设备及存储介质 |
CN113961518A (zh) * | 2021-09-08 | 2022-01-21 | 北京百度网讯科技有限公司 | 日志的可视化展示方法、装置、电子设备及存储介质 |
CN113961518B (zh) * | 2021-09-08 | 2022-09-23 | 北京百度网讯科技有限公司 | 日志的可视化展示方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2022100063A1 (zh) | 2022-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Sen et al. | Jalangi: A selective record-replay and dynamic analysis framework for JavaScript | |
Plate et al. | Impact assessment for vulnerabilities in open-source software libraries | |
US8782609B2 (en) | Test failure bucketing | |
CN112419057A (zh) | 智能合约的日志生成及保存方法、装置、设备和存储介质 | |
KR20200021993A (ko) | 블록체인 컴파일러 | |
Huang et al. | Detecting sensitive data disclosure via bi-directional text correlation analysis | |
US10084819B1 (en) | System for detecting source code security flaws through analysis of code history | |
CN110673837B (zh) | 代码修复方法及装置、电子设备、计算机可读存储介质 | |
Wu et al. | Mutation testing for ethereum smart contract | |
Derakhshanfar et al. | Search‐based crash reproduction using behavioural model seeding | |
CN113568839A (zh) | 软件测试和统计测试覆盖率的方法、装置、设备及介质 | |
Delgado‐Pérez et al. | Performance mutation testing | |
CN103186463B (zh) | 确定软件的测试范围的方法和系统 | |
Christophe et al. | Linvail: A general-purpose platform for shadow execution of JavaScript | |
Ognawala et al. | Compositional fuzzing aided by targeted symbolic execution | |
CN108897588B (zh) | 一种用于模块间通信的路由方法和路由装置 | |
Corradini et al. | Automated black-box testing of mass assignment vulnerabilities in RESTful APIs | |
Liu et al. | Automatically Detecting Incompatible Android APIs | |
CN112445706A (zh) | 程序异常代码获取方法、装置、电子设备以及存储介质 | |
Schüette et al. | Practical application-level dynamic taint analysis of Android apps | |
KR102165037B1 (ko) | 코드 커버리지 측정 장치, 코드 커버리지 측정 장치의 코드 커버리지 측정 방법, 및 코드 커버리지 측정 시스템 | |
US8819645B2 (en) | Application analysis device | |
Di Ruscio et al. | Simulating upgrades of complex systems: The case of Free and Open Source Software | |
Di Ruscio et al. | A model‐driven approach to detect faults in FOSS systems | |
Chen et al. | Tracking down dynamic feature code changes against Python software evolution |
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 |