CN112363700A - 智能合约的协同创建方法、装置、计算机设备和存储介质 - Google Patents
智能合约的协同创建方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN112363700A CN112363700A CN202011280598.6A CN202011280598A CN112363700A CN 112363700 A CN112363700 A CN 112363700A CN 202011280598 A CN202011280598 A CN 202011280598A CN 112363700 A CN112363700 A CN 112363700A
- Authority
- CN
- China
- Prior art keywords
- intelligent contract
- contract
- project
- data
- intelligent
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
-
- 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
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Databases & Information Systems (AREA)
- General Business, Economics & Management (AREA)
- Technology Law (AREA)
- Strategic Management (AREA)
- Computing Systems (AREA)
- Marketing (AREA)
- Data Mining & Analysis (AREA)
- Economics (AREA)
- Development Economics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及一种智能合约的协同创建方法、装置、计算机设备和存储介质,所述方法包括:获取业务需求数据,并根据所述业务需求数据,创建智能合约项目,确定所述智能合约项目的项目类型、项目名称和项目内容;响应所述智能合约项目的合约变化信息,基于所述项目内容在预设数据列表中查询,得到所述智能合约的数据地址和合约地址;根据所述项目类型、所述项目名称、所述数据地址和所述合约地址创建嵌套结构的智能合约。本申请的智能合约的协同创建方法可以实现智能合约的持续集成、持续部署,有利于智能合约的快速开发上线,不仅开发效率高,而且能够避免部署和测试过程中的人为主观的错误,降低了智能合约的开发成本。
Description
技术领域
本发明涉及区块链领域,特别是涉及智能合约的协同创建方法、装置、计算机设备和存储介质。
背景技术
智能合约(英语:Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。
智能合约开发过程中,在IDE开发环境进行开发后本地进行测试,然后找一个测试网络进行测试,上述步骤反复地进行。这个过程比较繁琐、出了问题解决起来不方便,开发速度慢,无法持续集成、无法持续部署。即传统智能合约的开发测试流程是,开发人员在IDE开发完智能合约,在本地进行测试;开发完成后,由测试人员把合约部署在测试网络进行智能合约测试,发现问题后,将智能合约返回到开发人员进行修改。整个开发测试流程长,做不到持续集成、持续部署,不利于智能合约的快速开发上线。
发明内容
基于此,有必要针对在进行智能合约创建时,开发测试流程长,不能持续集成、持续部署,不利于智能合约的快速开发上线的问题,提供一种智能合约的协同创建方法、装置、计算机设备和存储介质。
一种智能合约的协同创建方法,其特征在于,包括:
获取业务需求数据,并根据所述业务需求数据,创建智能合约项目,确定所述智能合约项目的项目类型、项目名称和项目内容;
响应所述智能合约项目的合约变化信息,基于所述项目内容在预设数据列表中查询,得到所述智能合约的数据地址和合约地址;
根据所述项目类型、所述项目名称、所述数据地址和所述合约地址创建嵌套结构的智能合约。
在其中一个实施例中,所述方法还包括:
通过预先配置的流水线对创建的智能合约进行检测,得到检测数据;
利用智能合约测试网络测试所述智能合约,得到测试结果;
保存所述检测数据与所述测试结果。
在其中一个实施例中,在所述通过预先配置的流水线对创建的智能合约进行检测之前,所述方法还包括为所述智能合约项目配置流水线;所述为所述智能合约项目配置流水线包括:
定义项目对应流水线,流水线包括智能合约扫描、智能合约编译、智能合约部署和智能合约测试。
在其中一个实施例中,所述通过预先配置的流水线对创建的智能合约进行检测,得到检测数据,包括:
执行智能合约扫描,利用智能合约代码扫描工具对智能合约进行扫描分析,得到扫描分析文件;
执行智能合约编译,生成智能合约可执行文件;
将所述扫描分析文件与所述智能合约可执行文件合并为检测数据。
在其中一个实施例中,所述智能合约项目的合约变化信息,包括:
在所述智能合约项目中加入某些数据所产生的信息,以及所述智能合约项目中某些数据变更所产生的信息。
在其中一个实施例中,所述利用智能合约测试网络测试所述智能合约,得到测试结果,包括:
将智能合约部署到智能合约测试网络;
在智能合约测试网络上,针对智能合约依次运行智能合约测试网络中的测试集,得到测试结果。
一种智能合约的协同创建装置,包括:
项目创建模块,用于获取业务需求数据,并根据所述业务需求数据,创建智能合约项目,确定所述智能合约项目的项目类型、项目名称和项目内容;
获取模块,用于响应所述智能合约项目的合约变化信息,基于所述项目内容在预设数据列表中查询,得到所述智能合约的数据地址和合约地址;
合约创建模块,用于根据所述项目类型、所述项目名称、所述数据地址和所述合约地址创建嵌套结构的智能合约。
在其中一个实施例中,所述装置还包括:
检测模块,用于通过预先配置的流水线对创建的智能合约进行检测,得到检测数据;
测试模块,用于利用智能合约测试网络测试所述智能合约,得到测试结果;
保存模块,用于保存所述检测数据与所述测试结果。
一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行上述所述智能合约的协同创建方法的步骤。
一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述所述智能合约的协同创建方法的步骤。
上述智能合约的协同创建方法、装置、计算机设备和存储介质,基于业务需求,创建智能合约项目;为所述智能合约项目配置流水线;基于所述智能合约项目生成智能合约;利用所述流水线检测所述智能合约,得到检测数据;利用智能合约测试网络测试所述智能合约,得到测试结果;保存所述检测数据与所述测试结果,可以实现智能合约的持续集成、持续部署,有利于智能合约的快速开发上线,不仅开发效率高,而且能够避免部署和测试过程中的人为主观的错误,降低了智能合约的开发成本。
附图说明
图1为一个实施方式中提供的智能合约的协同创建方法的流程图;
图2为另一实施方式中提供的智能合约的协同创建方法的流程图;
图3为另一实施方式中提供的智能合约的协同创建方法的流程图;
图4为一个实施方式中提供的通过预先配置的流水线对创建的智能合约进行检测,得到检测数据的流程图;
图5为一个实施方式中提供的利用智能合约测试网络测试所述智能合约,得到测试结果的流程图;
图6为一个实施方式中提供的智能合约的协同创建装置的结构框图;
图7为另一实施方式中提供的智能合约的协同创建装置的结构框图;
图8为另一实施方式中提供的智能合约的协同创建装置的结构框图;
图9为一个实施例中提供的计算机设备的内部结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。
本申请第一个实施例所提供的一种智能合约的协同创建方法,如图1所示,包括:
步骤S10:获取业务需求数据,并根据该业务需求数据,创建智能合约项目,确定该智能合约项目的项目类型、项目名称和项目内容。
其中,本方法的实施主体可以是智能合约开发平台,智能合约开发平台用于实现用户权限管理,智能合约项目管理,智能合约开发,审核,批准等功能。其中用户权限管理包括用户对于智能合约开发平台的访问控制,对于智能合约项目的访问控制,以及对于具体智能合约的开发权限,审核权限以及批准权限的控制。
创建智能合约项目也称为部署智能合约项目,创建智能合约项目的过程包括根据业务需要初始化业务数据。
创建智能合约项目的同时会生成智能合约项目的项目名称。具体来说,项目名称也是根据具体的业务需要来设置的。由于项目名称是根据具体的业务需要来设置的,所以项目名称中包含有对该智能合约项目的业务用途的描述。在描述项目名称的业务用途时,尽可能采用统一格式,以便对智能合约项目中的内容进行解析。因此,若项目名称相同,则合约可用的字段信息、数据解析方式也相同,可以基于项目名称判断该合约中存在哪些字段,也可以基于项目名称确定如何进行解析。
具体地,在实际操作中,创建新的智能合约项目往往需要初始化大量数据,其中,这些数据的大小是不固定的,可以按照一定的次序将初始化各数据。但由于数据字段是动态不固定的,若直接调用智能合约的赋值方法初始化数据,那么一笔交易只能初始化一个数据字段,要完成所有字段的初始化过程需要发送多笔交易,这样会损毁交易的原子性。原子性表示组成一个事务的多个数据库操作是一个不可分割的原子单元,只有所有的操作执行成功,整个事务才提交。事务中的任何一个数据库操作失败,已经执行的任何操作都必须被撤销,让数据库返回初始状态。所以,可以使用代理合约来创建智能合约项目以避免多笔交易导致的原子性被损毁的问题。可基于具体的业务需要生成代理合约,将待初始化的数据发送给代理合约,由代理合约来统一创建或部署智能合约项目。可以理解的是,将待初始化的数据发送给代理合约的过程可以是一次性全部发送给代理合约,也可以是只要有待初始化的数据就将其发送给代理合约,代理合约按预定时间创建或部署智能合约项目,此过程中只要是将待初始化的数据发送给代理合约即可,并不限定于具体的发送方法。
在智能合约项目中的字段设置是相对自由的,在创建时可以根据具体的业务需要初始化业务数据,也可以先创建不包含业务数据的合约框架以备后续使用。同样与该智能合约项目相关联的合约也可以在一开始的时候初始化到合约中,或者在创建之后基于业务需求进行修改,对此不做具体限定。
步骤S20:响应智能合约项目的合约变化信息,基于项目内容在预设数据列表中查询,得到所述智能合约的数据地址和合约地址。
步骤S10中的智能合约项目并不是所有字段都已更新好的智能合约,当智能合约项目内部的某些信息发生变化(例如代码更新)时,智能合约项目内部存储的所述智能合约的数据地址和合约地址会产生相应的变化,产生变化的这些信息都属于智能合约项目的合约变化信息。
具体地,如果所述智能合约项目的合约信息产生变化,则基于智能合约项目的内容,通过数据管控接口查询数据列表,得到所述智能合约的数据地址和合约地址。
其中,步骤S20中的智能合约项目的合约变化信息,包括:在智能合约项目中加入某些数据所产生的信息,以及智能合约项目中某些数据变更产生的信息。本实施方式只是列举了两种情况以便说明查询数据列表的条件,并不因此限定合约信息发生变化的具体情况。
数据列表中保存有与智能合约项目的内容相关的信息,可一一比对智能合约项目的内容与数据列表中的内容,以获取所述智能合约的数据地址和合约地址。要实现对智能合约项目的内容与数据列表中的内容进行一一比对的一个条件是智能合约语言具备支持遍历映射能力。一般来说,以太坊虚拟机(EVM)是本技术领域中较常用的智能合约运行环境,在这种运行环境下,可以使用多种以太坊虚拟机语言来编写智能合约,例如Solidity、LLL、Serpent语言等,但是因为这些以太坊虚拟机语言并不具备支持遍历映射的能力,所以利用以太坊虚拟机语言编写智能合约时还需要利用另一个名称列表来查询所述智能合约的数据地址和合约地址。如果使用的是一种支持遍历映射的以太坊虚拟机编写语言,则只需要获取所述智能合约的数据地址和合约地址即可。如果使用以太坊虚拟机语言编写智能合约,那么获取的数据名称和关联项目名称仅仅是为了查询所述智能合约的数据地址和合约地址。
在步骤S20中系统是通过数据管控接口来实现查询数据列表的,此处所述的“数据管控接口”并不是某种装置的接口,而是指某些函数的表现形式。数据管控接口是管理数据的各种接口的统称,包括:数据增添接口,指定数据修改接口,指定数据获取接口,所有数据名称列表获取接口,新关联合约添加接口,指定关联合约修改接口,指定合约地址获取接口,所有关联合约获取接口等。
在步骤S20中,通过数据管控接口查询数据列表并不仅限于利用上述接口中的某一种,而是基于具体情况选取其中一个或多个接口来协助查询所述智能合约的数据地址和合约地址。数据管控接口作为一种函数的表现形式,其名称是基于其具体功能命名的,多个接口协同工作时可以根据这几个接口协同实现的功能来重新命名。
步骤S20的目的是获取所述智能合约的数据地址和合约地址,也可以包括获取其他信息的情况,但是获取其他信息的最终目的都是为了获取所述智能合约的数据地址和合约地址。
步骤S30:根据所述项目类型、所述项目名称、所述数据地址、所述合约地址、所述数据名称和所述关联项目名称创建嵌套结构的智能合约。
其中,所述嵌套结构是指每个智能合约中都可以包含相同的结构,例如,某大学生的成绩单包括各学科的成绩单,而每一学科的成绩单都可以作为一个智能合约保存,这样所有的智能合约中都包含相同的结构,例如包括期中考试成绩、期末考试成绩和平时成绩。
根据所述项目类型、项目名称、所述数据地址和所述合约地址生成所述智能合约。
其中,本步骤的目的是生成具有统一格式的智能合约,利用在步骤S10和步骤S20中获得的项目类型、项目名称、数据地址、合约地址编写智能合约。在某些实施方式中,上述智能合约中的项目名称、数据地址、合约地址三个字段是必须存在的,若编写智能合约的语言(如以太坊虚拟机语言)不能支持遍历映射智能合约中除了项目名称、数据地址、合约地址这三个必须存在的字段还应有数据名称和关联项目名称这两个字段。
例如,开发人员打开智能合约项目,通过智能合约编辑器编写智能合约,编写完成后,提交至代码管理工具;代码管理工具更新代码库中的智能合约代码。在代码管理工具(比如Git)中创建对应代码项目,配置对应智能合约项目的Webhook,指定有代码更新时要触发的操作所对应的后台服务链接。webhooks是一个api概念,是微服务api的使用范式之一,也被成为反向api,即:前端不主动发送请求,完全由后端推送。简单来说,WebHook就是一个接收HTTP POST(或GET,PUT,DELETE)的URL。一个实现了WebHook的API提供商就是在当事件发生的时候会向这个配置好的URL发送一条信息。与请求-响应式不同,使用WebHooks可以实时接收到变化。这又是一种对客户机-服务器模式的逆转,在传统方法中,客户端从服务器请求数据,然后服务器提供给客户端数据(客户端是在拉数据)。在Webhook范式下,服务器更新所需提供的资源,然后自动将其作为更新发送到客户端(服务器是在推数据),客户端不是请求者,而是被动接收方。这种控制关系的反转可以用来促进许多原本需要在远程服务器上进行更复杂的请求和不断的轮询的通信请求。通过简单地接收资源而不是直接发送请求,可以更新远程代码库,轻松地分配资源,甚至将其集成到现有系统中来根据API的需要来更新端点和相关数据。打开智能合约项目,可以通过智能合约编辑器书写智能合约,完成后,提交至代码管理工具进行代码管理。
在某些实施方式中,本实施例的方法还包括:S50、通过预先配置的流水线对创建的智能合约进行检测,得到检测数据。
具体地,步骤S50包括:
S501、执行智能合约扫描,利用智能合约代码扫描工具对智能合约进行扫描分析,得到扫描分析文件。
S502、执行智能合约编译,生成智能合约可执行文件。
S503、将所述扫描分析文件与所述智能合约可执行文件合并为检测数据。
代码更新时会触发Webhook,然后自动执行预先设置的流水线操作(例如智能合约查询)。
在某些实施方式中,在步骤S50之前,本实施例的方法还包括:S40、为所述智能合约项目配置流水线;为所述智能合约项目配置流水线的步骤包括:定义项目对应流水线,流水线包括智能合约扫描、智能合约编译、智能合约部署和智能合约测试。具体地,定义项目对应流水线所包含的操作,例如智能合约扫描,智能合约编译,智能合约部署、智能合约测试等。对于智能合约测试,可以定义对应的智能合约测试集,选择智能合约的测试网络。一个智能合约测试集包括但不限于智能合约操作类型(调用或者查询),智能合约操作参数及参数值,期望结果参数及参数值。
具体地,根据智能合约流水线配置,自动更新在代码管理工具中的对应智能合约代码项目的Webhook,指定当有代码更新时要触发的智能合约流水线操作及对应配置信息。
通过上述方法生成的智能合约可以适用于各种不同的业务场景。同时,由于有了固定的数据结构,极大的简化了数据的同步和修改操作。对于区块链应用来说,减少底层智能合约的开发成本,为区块链和业务层的中间件开发提供了很大的便捷,并且简化了业务层的操作,整个项目的耗时耗资都有了大幅度的减少,方便后续的维护和管理。
在某些实施方式中,通过智能合约共享创建平台实现智能合约的协同创建方法;其中,智能合约共享创建平台,包括智能合约开发平台、智能合约代码管理库、智能合约流水线平台和智能合约测试网络。
智能合约开发平台包括用户权限管理,智能合约项目管理,智能合约开发,审核,批准等。其中用户权限管理包括用户对于智能合约开发平台的访问控制,对于智能合约项目的访问控制,以及对于具体智能合约的开发权限,审核权限以及批准权限的控制。
智能合约代码管理库包括智能合约代码管理;每次智能合约代码更新,webhook被触发,智能合约流水线平台执行智能合约流水线。
智能合约流水线平台包括一系列对于智能合约进行扫描、编译、部署、测试等自动化操作,以及对于这些操作的相关信息(比如,状态,结果,日志等)进行收集,存储,处理。
智能合约测试网络是用于测试智能合约,模拟真实区块链网络。在某些实施方式中,智能合约的协同创建方法,还包括:
S60、利用智能合约测试网络测试所述智能合约,得到测试结果。
具体地,步骤S60包括:
S601、将智能合约部署到智能合约测试网络。
S602、在智能合约测试网络上,针对智能合约依次运行智能合约测试网络中的测试集,得到测试结果。
S70、保存所述检测数据与所述测试结果。
上述实施例的方法可以实现智能合约的持续集成、持续部署,有利于智能合约的快速开发上线,不仅开发效率高,而且能够避免部署和测试过程中的人为主观的错误,降低了智能合约的开发成本。
本申请的另一实施例提供了一种智能合约的协同创建方法,如图1所示,本实施例的智能合约的协同创建方法包括以下步骤:
1.开发人员登录智能合约开发平台;
2.在智能合约开发平台上创建智能合约项目。根据智能合约的编程语言选择不同智能合约类型;系统自动在代码管理工具(比如Git)创建对应的智能合约代码项目;
3.配置智能合约项目;
具体地,该步骤包括:
i.定义项目对应流水线,流水线包括智能合约扫描,智能合约编译,智能合约部署和/或智能合约测试。对于智能合约测试,可以定义对应的智能合约测试集,选择智能合约的测试网络。一个智能合约测试集包括但不限于智能合约操作类型(调用或者查询),智能合约操作参数及参数值,期望结果参数及参数值。
ii.根据智能合约流水线配置,系统自动更新在代码管理工具中的对应智能合约代码项目的Webhook,指定当有代码更新时要触发的智能合约流水线操作及对应配置信息。
4.开发智能合约。开发人员打开智能合约项目,通过智能合约编辑器编写智能合约,编写完成后,提交至代码管理工具;
5.代码管理工具更新代码库中的智能合约代码;
6.代码更新Webhook被触发,调用智能合约流水线平台接口执行操作
7.根据流水线配置,(如有)执行智能合约扫描,利用智能合约代码扫描工具对智能合约进行扫描分析;
8.根据流水线配置,(如有)执行智能合约编译,生成智能合约可执行文件;
9.根据选择的智能合约测试网络,将智能合约部署到智能合约测试网络;
10.根据配置的智能合约测试集,依次运行对应的测试集
11.在智能合约开发平台,开发人员可以通过智能合约流水线平台提供接口获取流水线执行状态、结果和日志。
12.重复步骤3至步骤11,可以实现对智能合约项目的迭代开发、测试。
在本申请提供的另一个实施例中,开发人员完成开发部分工作,后台机器流水线自动完成另一部分,二者协同工作实现智能合约创建。一种流水线的概念:给使用者一个平台,在上面创建智能合约项目,获得项目名称,完整的智能合约代码在被开发完成后上传;提交上去后,部署、运行方式在事先已经配置好,可对提交的代码进行自动部署、运行、执行、测试、查询等。本申请实施例通过建立智能合约DevOps流水线,使得智能合约的开发、部署、执行、测试可以以流水线的方式进行。
DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。
DevOps流水线平台流程如下:
1.创建智能合约项目,定义项目名称(对应于智能合约编程语言),选择对应于该智能合约项目的流水线(流水线可以包括例如智能合约部署、智能合约调用、智能合约查询或者这些操作的组合)以及该智能合约项目运行的区块链测试网络;
2.在代码管理工具(比如Git)中创建对应代码项目,配置对应智能合约项目的Webhook,指定有代码更新时要触发的操作所对应的后台服务链接。
webhooks是一个api概念,是微服务api的使用范式之一,也被成为反向api,即:前端不主动发送请求,完全由后端推送。简单来说,WebHook就是一个接收HTTP POST(或GET、PUT、DELETE等)的URL。一个实现了WebHook的API提供商就是在当事件发生的时候会向这个配置好的URL发送一条信息。与请求-响应式不同,使用WebHooks可以实时接收到变化。这又是一种对客户机-服务器模式的逆转,在传统方法中,客户端从服务器请求数据,然后服务器提供给客户端数据(客户端是在拉数据)。在Webhook范式下,服务器更新所需提供的资源,然后自动将其作为更新发送到客户端(服务器是在推数据),客户端不是请求者,而是被动接收方。这种控制关系的反转可以用来促进许多原本需要在远程服务器上进行更复杂的请求和不断的轮询的通信请求。通过简单地接收资源而不是直接发送请求,可以更新远程代码库,轻松地分配资源,甚至将其集成到现有系统中来根据API的需要来更新端点和相关数据。
3.打开智能合约项目,可以通过智能合约编辑器书写智能合约,完成后,提交至代码管理工具。
4.代码更新Webhook被触发,流水线对应操作被自动执行。
5.平台从后台获取流水线执行状态、结果和日志。
6.用户通过平台查看流水线执行状态、结果和日志。
通过智能合约DevOps流水线平台,可以支持智能合约持续集成、持续部署,有利于智能合约的快速开发上线,不仅开发效率高,而且能够避免部署和测试过程中的人为主观的错误,降低了智能合约的开发成本。
本申请的另一个实施例提供了一种智能合约的协同创建装置,包括:
项目创建模块10,用于获取业务需求数据,并根据所述业务需求数据,创建智能合约项目,确定所述智能合约项目的项目类型、项目名称和项目内容;
获取模块20,用于响应所述智能合约项目的合约变化信息,基于所述项目内容在预设数据列表中查询,获取所述智能合约的数据地址和合约地址;
合约创建模块30,用于根据所述项目类型、所述项目名称、所述数据地址和所述合约地址创建嵌套结构的智能合约。
在某些实施方式中,所述装置还包括:
检测模块50,用于通过预先配置的流水线对创建的智能合约进行检测,得到检测数据;
测试模块60,用于利用智能合约测试网络测试所述智能合约,得到测试结果;
保存模块70,用于保存所述检测数据与所述测试结果。
在某些实施方式中,所述装置还包括配置模块40,用于在所述检测模块50通过预先配置的流水线对创建的智能合约进行检测之前,为所述智能合约项目配置流水线;所述配置模块40具体用于定义项目对应流水线,流水线包括智能合约扫描、智能合约编译、智能合约部署和智能合约测试。
在某些实施方式中,所述检测模块,包括:
扫描单元,用于执行智能合约扫描,利用智能合约代码扫描工具对智能合约进行扫描分析,得到扫描分析文件;
编译单元,用于执行智能合约编译,生成智能合约可执行文件;
合并单元,用于将所述扫描分析文件与所述智能合约可执行文件合并为检测数据。
在某些实施方式中,所述测试模块,包括:
部署单元,用于将智能合约部署到智能合约测试网络;
运行单元,用于在智能合约测试网络上,针对智能合约依次运行智能合约测试网络中的测试集,得到测试结果。
在一个实施例中,提出了一种计算机设备,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取业务需求数据,并根据所述业务需求数据,创建智能合约项目,确定所述智能合约项目的项目类型、项目名称和项目内容;
响应所述智能合约项目的合约变化信息,基于所述项目内容在预设数据列表中查询,得到所述智能合约的数据地址和合约地址;
根据所述项目类型、所述项目名称、所述数据地址和所述合约地址创建嵌套结构的智能合约。
在一个实施例中,处理器执行计算机可读指令时还执行以下步骤:
通过预先配置的流水线对创建的智能合约进行检测,得到检测数据;
利用智能合约测试网络测试所述智能合约,得到测试结果;
保存所述检测数据与所述测试结果。
在一个实施例中,处理器执行计算机可读指令时还执行以下步骤:
在所述通过预先配置的流水线对创建的智能合约进行检测之前,为所述智能合约项目配置流水线;所述为所述智能合约项目配置流水线包括:
定义项目对应流水线,流水线包括智能合约扫描、智能合约编译、智能合约部署和智能合约测试。
在一个实施例中,处理器执行计算机可读指令时所执行的通过预先配置的流水线对创建的智能合约进行检测,得到检测数据,包括:
执行智能合约扫描,利用智能合约代码扫描工具对智能合约进行扫描分析,得到扫描分析文件;
执行智能合约编译,生成智能合约可执行文件;
将所述扫描分析文件与所述智能合约可执行文件合并为检测数据。
在一个实施例中,所述处理器执行计算机可读指令时所执行的利用智能合约测试网络测试所述智能合约,得到测试结果,包括:
将智能合约部署到智能合约测试网络;
在智能合约测试网络上,针对智能合约依次运行智能合约测试网络中的测试集,得到测试结果。
在一个实施例中,提出了一种存储有计算机可读指令的存储介质,该计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行以下步骤:
获取业务需求数据,并根据所述业务需求数据,创建智能合约项目,确定所述智能合约项目的项目类型、项目名称和项目内容;
响应所述智能合约项目的合约变化信息,基于所述项目内容在预设数据列表中查询,得到所述智能合约的数据地址和合约地址;
根据所述项目类型、所述项目名称、所述数据地址和所述合约地址创建嵌套结构的智能合约。
在一个实施例中,一个或多个处理器还执行以下步骤:
通过预先配置的流水线对创建的智能合约进行检测,得到检测数据;
利用智能合约测试网络测试所述智能合约,得到测试结果;
保存所述检测数据与所述测试结果。
在一个实施例中,一个或多个处理器还执行以下步骤:
在所述通过预先配置的流水线对创建的智能合约进行检测之前,为所述智能合约项目配置流水线;所述为所述智能合约项目配置流水线包括:
定义项目对应流水线,流水线包括智能合约扫描、智能合约编译、智能合约部署和智能合约测试。
在一个实施例中,一个或多个处理器所执行的通过预先配置的流水线对创建的智能合约进行检测,得到检测数据,包括:
执行智能合约扫描,利用智能合约代码扫描工具对智能合约进行扫描分析,得到扫描分析文件;
执行智能合约编译,生成智能合约可执行文件;
将所述扫描分析文件与所述智能合约可执行文件合并为检测数据。
在一个实施例中,一个或多个处理器所执行的利用智能合约测试网络测试所述智能合约,得到测试结果,包括:
将智能合约部署到智能合约测试网络;
在智能合约测试网络上,针对智能合约依次运行智能合约测试网络中的测试集,得到测试结果。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种智能合约的协同创建方法,其特征在于,包括:
获取业务需求数据,并根据所述业务需求数据,创建智能合约项目,确定所述智能合约项目的项目类型、项目名称和项目内容;
响应所述智能合约项目的合约变化信息,基于所述项目内容在预设数据列表中查询,得到所述智能合约的数据地址和合约地址;
根据所述项目类型、所述项目名称、所述数据地址和所述合约地址创建嵌套结构的智能合约。
2.根据权利要求1所述方法,其特征在于,所述方法还包括:
通过预先配置的流水线对创建的所述智能合约进行检测,得到检测数据;
利用智能合约测试网络测试所述智能合约,得到测试结果;
保存所述检测数据与所述测试结果。
3.根据权利要求2所述方法,其特征在于,在所述通过预先配置的流水线对创建的智能合约进行检测之前,所述方法还包括为所述智能合约项目配置流水线;所述为所述智能合约项目配置流水线包括:
定义项目对应流水线,流水线包括智能合约扫描、智能合约编译、智能合约部署和智能合约测试。
4.根据权利要求3所述方法,其特征在于,所述通过预先配置的流水线对创建的智能合约进行检测,得到检测数据,包括:
利用智能合约代码扫描工具对智能合约进行扫描分析,得到扫描分析文件;
执行智能合约编译,生成智能合约可执行文件;
将所述扫描分析文件与所述智能合约可执行文件合并为检测数据。
5.根据权利要求2所述方法,其特征在于,所述智能合约项目的合约变化信息,包括:
在所述智能合约项目中加入某些数据所产生的信息,以及所述智能合约项目中某些数据变更所产生的信息。
6.根据权利要求1所述方法,其特征在于,所述利用智能合约测试网络测试所述智能合约,得到测试结果,包括:
将所述智能合约部署到智能合约测试网络;
在所述智能合约测试网络上,针对所述智能合约依次运行智能合约测试网络中的测试集,得到测试结果。
7.一种智能合约的协同创建装置,其特征在于,包括:
项目创建模块,用于获取业务需求数据,并根据所述业务需求数据,创建智能合约项目,确定所述智能合约项目的项目类型、项目名称和项目内容;
获取模块,用于响应所述智能合约项目的合约变化信息,基于所述项目内容在预设数据列表中查询,得到所述智能合约的数据地址和合约地址;
合约创建模块,用于根据所述项目类型、所述项目名称、所述数据地址和所述合约地址创建嵌套结构的智能合约。
8.根据权利要求7所述装置,其特征在于,所述装置还包括:
检测模块,用于通过预先配置的流水线对创建的智能合约进行检测,得到检测数据;
测试模块,用于利用智能合约测试网络测试所述智能合约,得到测试结果;
保存模块,用于保存所述检测数据与所述测试结果。
9.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行如权利要求1至6中任一项权利要求所述智能合约的协同创建方法的步骤。
10.一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1至6中任一项权利要求所述智能合约的协同创建方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011280598.6A CN112363700A (zh) | 2020-11-16 | 2020-11-16 | 智能合约的协同创建方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011280598.6A CN112363700A (zh) | 2020-11-16 | 2020-11-16 | 智能合约的协同创建方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112363700A true CN112363700A (zh) | 2021-02-12 |
Family
ID=74516229
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011280598.6A Pending CN112363700A (zh) | 2020-11-16 | 2020-11-16 | 智能合约的协同创建方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112363700A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113312035A (zh) * | 2021-05-17 | 2021-08-27 | 南京大学 | 一种面向Hyperledger Fabric的智能合约开发插件 |
-
2020
- 2020-11-16 CN CN202011280598.6A patent/CN112363700A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113312035A (zh) * | 2021-05-17 | 2021-08-27 | 南京大学 | 一种面向Hyperledger Fabric的智能合约开发插件 |
CN113312035B (zh) * | 2021-05-17 | 2023-06-06 | 南京大学 | 一种面向Hyperledger Fabric的智能合约开发插件的实现方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107766126B (zh) | 容器镜像的构建方法、系统、装置及存储介质 | |
US10162612B2 (en) | Method and apparatus for inventory analysis | |
US8074204B2 (en) | Test automation for business applications | |
US8490050B2 (en) | Automatic generation of user interfaces | |
US7526759B2 (en) | Debugging prototyped system solutions in solution builder wizard environment | |
US8839107B2 (en) | Context based script generation | |
US20080276221A1 (en) | Method and apparatus for relations planning and validation | |
US10585655B2 (en) | Systems and methods for automated retrofitting of customized code objects | |
CN111427561A (zh) | 业务代码的生成方法、装置、计算机设备和存储介质 | |
JP2004272908A (ja) | システムの設計、展開、管理のフェーズを統合する方法 | |
CN111104103B (zh) | 一种软件编辑微服务的可视化方法及系统 | |
US20120174068A1 (en) | Testing Software Code | |
US20120266131A1 (en) | Automatic program generation device, method, and computer program | |
CN112860260B (zh) | 一种在高校场景下基于web的跨平台应用构建工具及方法 | |
Naily et al. | A framework for modelling variable microservices as software product lines | |
CN110825395B (zh) | 多插件分层部署系统、设备及介质 | |
CN117112060A (zh) | 组件库构建方法、装置、电子设备及存储介质 | |
US9244706B2 (en) | Command line shell command generation based on schema | |
CN112363700A (zh) | 智能合约的协同创建方法、装置、计算机设备和存储介质 | |
KR100994070B1 (ko) | 예약된 컴포넌트 컨테이너 기반 소프트웨어 개발 방법 및장치 | |
US20210224062A1 (en) | Systems and Methods for Software Documentation and Code Generation Management | |
WO2005010749A2 (en) | Designing computer programs | |
EP1710698A2 (en) | Generic software requirements analyser | |
CN114936152A (zh) | 应用测试方法及设备 | |
CN113806327A (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 |